From 211edbdab64e6f75126396e0dc7a6fa6cbbc3e76 Mon Sep 17 00:00:00 2001 From: Mike North Date: Fri, 14 Sep 2018 09:32:21 -0700 Subject: [PATCH] [ember] refactor @ember/application types into their own package (#28846) * [ember] failing test - relax ObserverMethod property name arg * [ember] relax ObserverMethod property name arg * [ember] @ember/application types refactored into their own package --- types/ember-resolver/ember-resolver-tests.ts | 4 +- types/ember-resolver/index.d.ts | 6 +-- .../ember-resolver/v4/ember-resolver-tests.ts | 4 +- types/ember-resolver/v4/index.d.ts | 6 +-- types/ember__application/deprecations.d.ts | 4 ++ .../ember__application/globals-resolver.d.ts | 3 ++ types/ember__application/index.d.ts | 13 ++++++ types/ember__application/instance.d.ts | 3 ++ types/ember__application/resolver.d.ts | 3 ++ .../test/application-instance.ts | 29 +++++++++++++ types/ember__application/test/application.ts | 41 +++++++++++++++++++ types/ember__application/test/deprecations.ts | 14 +++++++ .../test/globals-resolver.ts | 6 +++ types/ember__application/test/resolver.ts | 3 ++ types/ember__application/tsconfig.json | 37 +++++++++++++++++ types/ember__application/tslint.json | 4 ++ 16 files changed, 168 insertions(+), 12 deletions(-) create mode 100644 types/ember__application/deprecations.d.ts create mode 100644 types/ember__application/globals-resolver.d.ts create mode 100644 types/ember__application/index.d.ts create mode 100644 types/ember__application/instance.d.ts create mode 100644 types/ember__application/resolver.d.ts create mode 100644 types/ember__application/test/application-instance.ts create mode 100755 types/ember__application/test/application.ts create mode 100644 types/ember__application/test/deprecations.ts create mode 100644 types/ember__application/test/globals-resolver.ts create mode 100644 types/ember__application/test/resolver.ts create mode 100644 types/ember__application/tsconfig.json create mode 100644 types/ember__application/tslint.json diff --git a/types/ember-resolver/ember-resolver-tests.ts b/types/ember-resolver/ember-resolver-tests.ts index d22a0d31be..6973daeda0 100644 --- a/types/ember-resolver/ember-resolver-tests.ts +++ b/types/ember-resolver/ember-resolver-tests.ts @@ -1,5 +1,5 @@ -import Application from '@ember/application'; import EmberResolver from 'ember-resolver'; +import { Ember } from 'ember'; const MyResolver = EmberResolver.extend({ pluralizedTypes: { @@ -7,6 +7,6 @@ const MyResolver = EmberResolver.extend({ } }); -const App = Application.extend({ +const App = Ember.Application.extend({ Resolver: MyResolver }); diff --git a/types/ember-resolver/index.d.ts b/types/ember-resolver/index.d.ts index 4fe466ae13..f2ede7fe32 100644 --- a/types/ember-resolver/index.d.ts +++ b/types/ember-resolver/index.d.ts @@ -5,11 +5,9 @@ // Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped // TypeScript Version: 2.8 -/// - -import Resolver from '@ember/application/resolver'; +import Ember from 'ember'; /** * An Ember `Resolver` implementation used by ember-cli. */ -export default class EmberResolver extends Resolver {} +export default class EmberResolver extends Ember.Resolver {} diff --git a/types/ember-resolver/v4/ember-resolver-tests.ts b/types/ember-resolver/v4/ember-resolver-tests.ts index d22a0d31be..db834b1985 100644 --- a/types/ember-resolver/v4/ember-resolver-tests.ts +++ b/types/ember-resolver/v4/ember-resolver-tests.ts @@ -1,4 +1,4 @@ -import Application from '@ember/application'; +import Ember from 'ember'; import EmberResolver from 'ember-resolver'; const MyResolver = EmberResolver.extend({ @@ -7,6 +7,6 @@ const MyResolver = EmberResolver.extend({ } }); -const App = Application.extend({ +const App = Ember.Application.extend({ Resolver: MyResolver }); diff --git a/types/ember-resolver/v4/index.d.ts b/types/ember-resolver/v4/index.d.ts index 8047dc1bc2..fd5359cff4 100644 --- a/types/ember-resolver/v4/index.d.ts +++ b/types/ember-resolver/v4/index.d.ts @@ -5,11 +5,9 @@ // Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped // TypeScript Version: 2.4 -/// - -import Resolver from '@ember/application/resolver'; +import Ember from 'ember'; /** * An Ember `Resolver` implementation used by ember-cli. */ -export default class EmberResolver extends Resolver {} +export default class EmberResolver extends Ember.Resolver {} diff --git a/types/ember__application/deprecations.d.ts b/types/ember__application/deprecations.d.ts new file mode 100644 index 0000000000..608ba5c7f7 --- /dev/null +++ b/types/ember__application/deprecations.d.ts @@ -0,0 +1,4 @@ +import Ember from 'ember'; + +export const deprecate: typeof Ember.deprecate; +export const deprecateFunc: typeof Ember.deprecateFunc; diff --git a/types/ember__application/globals-resolver.d.ts b/types/ember__application/globals-resolver.d.ts new file mode 100644 index 0000000000..e51f4681ed --- /dev/null +++ b/types/ember__application/globals-resolver.d.ts @@ -0,0 +1,3 @@ +import Ember from 'ember'; + +export default class GlobalsResolver extends Ember.DefaultResolver { } diff --git a/types/ember__application/index.d.ts b/types/ember__application/index.d.ts new file mode 100644 index 0000000000..cdef372444 --- /dev/null +++ b/types/ember__application/index.d.ts @@ -0,0 +1,13 @@ +// Type definitions for @ember/application 3.0 +// Project: http://emberjs.com/ +// Definitions by: Mike North +// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped +// TypeScript Version: 2.8 + +import Ember from 'ember'; + +export default class Application extends Ember.Application { } +export const getOwner: typeof Ember.getOwner; +export const onLoad: typeof Ember.onLoad; +export const runLoadHooks: typeof Ember.runLoadHooks; +export const setOwner: typeof Ember.setOwner; diff --git a/types/ember__application/instance.d.ts b/types/ember__application/instance.d.ts new file mode 100644 index 0000000000..0d01298d52 --- /dev/null +++ b/types/ember__application/instance.d.ts @@ -0,0 +1,3 @@ +import Ember from 'ember'; + +export default class ApplicationInstance extends Ember.ApplicationInstance { } diff --git a/types/ember__application/resolver.d.ts b/types/ember__application/resolver.d.ts new file mode 100644 index 0000000000..a218fcd3e7 --- /dev/null +++ b/types/ember__application/resolver.d.ts @@ -0,0 +1,3 @@ +import Ember from 'ember'; + +export default class Resolver extends Ember.Resolver { } diff --git a/types/ember__application/test/application-instance.ts b/types/ember__application/test/application-instance.ts new file mode 100644 index 0000000000..4ee5cb2027 --- /dev/null +++ b/types/ember__application/test/application-instance.ts @@ -0,0 +1,29 @@ +import ApplicationInstance from '@ember/application/instance'; +import hbs from 'htmlbars-inline-precompile'; + +const appInstance = ApplicationInstance.create(); +appInstance.register('some:injection', class Foo {}); + +appInstance.register('some:injection', class Foo {}, { + singleton: true, +}); + +appInstance.register('some:injection', class Foo {}, { + instantiate: false, +}); + +appInstance.register('templates:foo/bar', hbs`

Hello World

`); + +appInstance.register('some:injection', class Foo {}, { + singleton: false, + instantiate: true, +}); + +appInstance.factoryFor('router:main'); +appInstance.lookup('route:basic'); + +appInstance.boot(); + +(async () => { + await appInstance.boot(); +})(); diff --git a/types/ember__application/test/application.ts b/types/ember__application/test/application.ts new file mode 100755 index 0000000000..21d0237b71 --- /dev/null +++ b/types/ember__application/test/application.ts @@ -0,0 +1,41 @@ +import Application from "@ember/application"; +import EmberObject from "@ember/object"; + +const BaseApp = Application.extend({ + modulePrefix: 'my-app' +}); + +BaseApp.initializer({ + name: 'my-initializer', + initialize(app) { + app.register('foo:bar', EmberObject.extend({ foo: 'bar' })); + } +}); + +BaseApp.instanceInitializer({ + name: 'my-instance-initializer', + initialize(app) { + app.lookup('foo:bar').get('foo'); + } +}); + +const App1 = BaseApp.create({ + rootElement: '#app-one', + customEvents: { + paste: 'paste' + } +}); + +const App2 = BaseApp.create({ + rootElement: '#app-two', + customEvents: { + mouseenter: null, + mouseleave: null + } +}); + +const App3 = BaseApp.create(); + +const App3Instance1 = App3.buildInstance(); // $ExpectType ApplicationInstance + +const App3Instance2 = App3.buildInstance({ foo: 'bar' }); // $ExpectType ApplicationInstance diff --git a/types/ember__application/test/deprecations.ts b/types/ember__application/test/deprecations.ts new file mode 100644 index 0000000000..12639ad0b5 --- /dev/null +++ b/types/ember__application/test/deprecations.ts @@ -0,0 +1,14 @@ +import { deprecate, deprecateFunc } from '@ember/application/deprecations'; + +deprecate('this is no longer advised', false, { + id: 'no-longer-advised', + until: 'v4.0' +}); +deprecate('this is no longer advised', false); + +deprecateFunc('this is no longer advised', () => {}); +deprecateFunc( + 'this is no longer advised', + { id: 'no-longer-do-this', until: 'v4.0' }, + () => {} +); diff --git a/types/ember__application/test/globals-resolver.ts b/types/ember__application/test/globals-resolver.ts new file mode 100644 index 0000000000..c0efb5579b --- /dev/null +++ b/types/ember__application/test/globals-resolver.ts @@ -0,0 +1,6 @@ +import GlobalsResolver from "@ember/application/globals-resolver"; + +const gr = GlobalsResolver.create(); + +gr.resolve('App.IndexController'); +gr.resolve(); // $ExpectError diff --git a/types/ember__application/test/resolver.ts b/types/ember__application/test/resolver.ts new file mode 100644 index 0000000000..20413aa5a4 --- /dev/null +++ b/types/ember__application/test/resolver.ts @@ -0,0 +1,3 @@ +import Resolver from "@ember/application/resolver"; + +const res = Resolver.create(); diff --git a/types/ember__application/tsconfig.json b/types/ember__application/tsconfig.json new file mode 100644 index 0000000000..833859d183 --- /dev/null +++ b/types/ember__application/tsconfig.json @@ -0,0 +1,37 @@ +{ + "compilerOptions": { + "module": "commonjs", + "target": "es5", + "lib": [ + "es6", + "dom" + ], + "noImplicitAny": true, + "noImplicitThis": true, + "strictNullChecks": true, + "strictFunctionTypes": true, + "baseUrl": "../", + "typeRoots": [ + "../" + ], + "paths": { + "@ember/application": ["ember__application"], + "@ember/application/*": ["ember__application/*"] + }, + "types": [], + "noEmit": true, + "forceConsistentCasingInFileNames": true + }, + "files": [ + "deprecations.d.ts", + "globals-resolver.d.ts", + "index.d.ts", + "instance.d.ts", + "resolver.d.ts", + "test/application.ts", + "test/deprecations.ts", + "test/resolver.ts", + "test/globals-resolver.ts", + "test/application-instance.ts" + ] +} diff --git a/types/ember__application/tslint.json b/types/ember__application/tslint.json new file mode 100644 index 0000000000..10d875b8db --- /dev/null +++ b/types/ember__application/tslint.json @@ -0,0 +1,4 @@ +{ + "extends": "dtslint/dt.json", + "rules": {} +}