[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
This commit is contained in:
Mike North
2018-09-14 09:32:21 -07:00
committed by Ryan Cavanaugh
parent 6e1f5ed8f7
commit 211edbdab6
16 changed files with 168 additions and 12 deletions

View File

@@ -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
});

View File

@@ -5,11 +5,9 @@
// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped
// TypeScript Version: 2.8
/// <reference types="ember" />
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 {}

View File

@@ -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
});

View File

@@ -5,11 +5,9 @@
// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped
// TypeScript Version: 2.4
/// <reference types="ember" />
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 {}

View File

@@ -0,0 +1,4 @@
import Ember from 'ember';
export const deprecate: typeof Ember.deprecate;
export const deprecateFunc: typeof Ember.deprecateFunc;

View File

@@ -0,0 +1,3 @@
import Ember from 'ember';
export default class GlobalsResolver extends Ember.DefaultResolver { }

13
types/ember__application/index.d.ts vendored Normal file
View File

@@ -0,0 +1,13 @@
// Type definitions for @ember/application 3.0
// Project: http://emberjs.com/
// Definitions by: Mike North <https://github.com/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;

View File

@@ -0,0 +1,3 @@
import Ember from 'ember';
export default class ApplicationInstance extends Ember.ApplicationInstance { }

View File

@@ -0,0 +1,3 @@
import Ember from 'ember';
export default class Resolver extends Ember.Resolver { }

View File

@@ -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`<h1>Hello World</h1>`);
appInstance.register('some:injection', class Foo {}, {
singleton: false,
instantiate: true,
});
appInstance.factoryFor('router:main');
appInstance.lookup('route:basic');
appInstance.boot();
(async () => {
await appInstance.boot();
})();

View File

@@ -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

View File

@@ -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' },
() => {}
);

View File

@@ -0,0 +1,6 @@
import GlobalsResolver from "@ember/application/globals-resolver";
const gr = GlobalsResolver.create();
gr.resolve('App.IndexController');
gr.resolve(); // $ExpectError

View File

@@ -0,0 +1,3 @@
import Resolver from "@ember/application/resolver";
const res = Resolver.create();

View File

@@ -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"
]
}

View File

@@ -0,0 +1,4 @@
{
"extends": "dtslint/dt.json",
"rules": {}
}