diff --git a/ember/ember-1.11.3.d.ts b/ember/ember-1.11.3.d.ts
index d19327ddb2..eef72fd87c 100644
--- a/ember/ember-1.11.3.d.ts
+++ b/ember/ember-1.11.3.d.ts
@@ -6,6 +6,8 @@
///
///
+/* this is an older file, do not lint */
+/* tslint:disable */
declare var Handlebars: HandlebarsStatic;
declare namespace EmberStates {
diff --git a/ember/ember-tests.ts b/ember/ember-tests.ts
index 30156975b1..dda0e157c4 100644
--- a/ember/ember-tests.ts
+++ b/ember/ember-tests.ts
@@ -146,7 +146,7 @@ people2.everyProperty('isHappy', true);
people2.someProperty('isHappy', true);
// Examples taken from http://emberjs.com/api/classes/Em.RSVP.Promise.html
-var promise = new Em.RSVP.Promise(function(resolve: Function, reject: Function) {
+var promise = new Em.RSVP.Promise(function(resolve: Function, reject: Function) {
// on success
resolve('ok!');
@@ -159,3 +159,16 @@ promise.then(function(value: any) {
}, function(reason: any) {
// on rejection
});
+
+var mix1 = Ember.Mixin.create({
+ foo: 1
+});
+
+var mix2 = Ember.Mixin.create({
+ bar: 2
+});
+
+var component1 = Ember.Component.extend( mix1, mix2, {
+ lyft: Ember.inject.service(),
+ cars: Ember.computed.readOnly('lyft.cars')
+});
diff --git a/ember/index.d.ts b/ember/index.d.ts
index dad59a2fb1..708adc160c 100644
--- a/ember/index.d.ts
+++ b/ember/index.d.ts
@@ -32,7 +32,7 @@ declare namespace EmberStates {
Transition object can be externally `abort`ed, while the promise
cannot.
*/
- promise: Ember.RSVP.Promise;
+ promise: Ember.RSVP.Promise;
/**
Custom state can be stored on a Transition's `data` object.
@@ -56,7 +56,7 @@ declare namespace EmberStates {
@arg {String} label optional string for labeling the promise. Useful for tooling.
@return {Promise}
*/
- then(onFulfilled: Function, onRejected?: Function, label?: string): Ember.RSVP.Promise;
+ then(onFulfilled: Function, onRejected?: Function, label?: string): Ember.RSVP.Promise;
/**
Forwards to the internal `promise` property which you can
@@ -69,7 +69,7 @@ declare namespace EmberStates {
Useful for tooling.
@return {Promise}
*/
- catch(onRejection: Function, label?: string): Ember.RSVP.Promise;
+ catch(onRejection: Function, label?: string): Ember.RSVP.Promise;
/**
Forwards to the internal `promise` property which you can
@@ -82,7 +82,7 @@ declare namespace EmberStates {
Useful for tooling.
@return {Promise}
*/
- finally(callback: Function, label?: string): Ember.RSVP.Promise;
+ finally(callback: Function, label?: string): Ember.RSVP.Promise;
/**
Aborts the Transition. Note you can also implicitly abort a transition
@@ -127,7 +127,7 @@ declare namespace EmberStates {
@arg {Boolean} [ignoreFailure=false] a boolean specifying whether unhandled events throw an error
@arg {String} name the name of the event to fire
*/
- trigger(ignoreFailure:boolean, eventName: string): void;
+ trigger(ignoreFailure: boolean, eventName: string): void;
/**
Fires an event on the current list of resolved/resolving
handlers within this transition. Useful for firing events
@@ -149,11 +149,14 @@ declare namespace EmberStates {
@return {Promise} a promise that fulfills with the same
value that the final redirecting transition fulfills with
*/
- followRedirects(): Ember.RSVP.Promise;
+ followRedirects(): Ember.RSVP.Promise;
}
}
+// Get an alias to the global Array type to use in inner scope below.
+type GlobalArray = T[];
+
declare namespace EmberTesting {
namespace Test {
@@ -203,18 +206,9 @@ interface Array {
clear(): any[];
compact(): any[];
contains(obj: any): boolean;
- enumerableContentDidChange(start: number, removing: number, adding: number): any;
- enumerableContentDidChange(start: number, removing: Ember.Enumerable, adding: number): any;
- enumerableContentDidChange(start: number, removing: number, adding: Ember.Enumerable): any;
- enumerableContentDidChange(start: number, removing: Ember.Enumerable, adding: Ember.Enumerable): any;
- enumerableContentDidChange(removing: number, adding: number): any;
- enumerableContentDidChange(removing: Ember.Enumerable, adding: number): any;
- enumerableContentDidChange(removing: number, adding: Ember.Enumerable): any;
- enumerableContentDidChange(removing: Ember.Enumerable, adding: Ember.Enumerable): any;
- enumerableContentWillChange(removing: number, adding: number): any[];
- enumerableContentWillChange(removing: Ember.Enumerable, adding: number): any[];
- enumerableContentWillChange(removing: number, adding: Ember.Enumerable): any[];
- enumerableContentWillChange(removing: Ember.Enumerable, adding: Ember.Enumerable): any[];
+ enumerableContentDidChange(start: number, removing: Ember.Enumerable | number, adding: Ember.Enumerable | number): any;
+ enumerableContentDidChange(removing: Ember.Enumerable | number, adding: Ember.Enumerable | number): any;
+ enumerableContentWillChange(removing: Ember.Enumerable | number, adding: Ember.Enumerable | number): Ember.Enumerable;
every(callback: Function, target?: any): boolean;
everyBy(key: string, value?: string): boolean;
everyProperty(key: string, value?: any): boolean;
@@ -301,8 +295,7 @@ interface Array {
notifyPropertyChange(keyName: string): any[];
propertyDidChange(keyName: string): any[];
propertyWillChange(keyName: string): any[];
- removeObserver(key: string, target: any, method: string): Ember.Observable;
- removeObserver(key: string, target: any, method: Function): Ember.Observable;
+ removeObserver(key: string, target: any, method: Function | string): Ember.Observable;
set(keyName: string, value: any): any[];
setProperties(hash: {}): any[];
toggleProperty(keyName: string): any;
@@ -326,15 +319,13 @@ interface ApplicationCreateArguments {
LOG_TRANSITIONS_INTERNAL?: boolean;
}
+type ApplicationInitializerFunction = (container: Ember.Container, application: Ember.Application) => void;
+
interface ApplicationInitializerArguments {
name?: string;
initialize?: ApplicationInitializerFunction;
}
-interface ApplicationInitializerFunction {
- (container: Ember.Container, application: Ember.Application): void;
-}
-
interface CoreObjectArguments {
/**
An overridable method called when objects are instantiated. By default, does nothing unless it is
@@ -356,17 +347,14 @@ interface EnumerableConfigurationOptions {
didChange?: boolean ;
}
-interface ItemIndexEnumerableCallbackTarget {
- (callback: ItemIndexEnumerableCallback, target?: any): any[];
-}
+type ItemIndexEnumerableCallbackTarget = (callback: ItemIndexEnumerableCallback, target?: any) => any[];
-interface ItemIndexEnumerableCallback {
- (item: any, index: number, enumerable: Ember.Enumerable): void;
-}
-interface ReduceCallback {
- (previousValue: any, item: any, index: number, enumerable: Ember.Enumerable): void;
-}
+type ItemIndexEnumerableCallback = (item: any, index: number, enumerable: Ember.Enumerable) => void;
+
+
+type ReduceCallback = (previousValue: any, item: any, index: number, enumerable: Ember.Enumerable) => void;
+
interface TransitionsHash {
contexts: any[];
@@ -393,12 +381,7 @@ interface RenderOptions {
view?: string;
}
-interface ModifyObserver {
- (obj: any, path: string, target: any, method?: Function): void;
- (obj: any, path: string, target: any, method?: string): void;
- (obj: any, path: string, func: Function, method?: Function): void;
- (obj: any, path: string, func: Function, method?: string): void;
-}
+type ModifyObserver = (obj: any, path: string | null, target: Function | any, method?: Function | string) => void;
declare namespace Ember {
/**
@@ -543,18 +526,9 @@ declare namespace Ember {
someProperty(key: string, value?: string): boolean;
compact(): any[];
contains(obj: any): boolean;
- enumerableContentDidChange(start: number, removing: number, adding: number): any;
- enumerableContentDidChange(start: number, removing: Enumerable, adding: number): any;
- enumerableContentDidChange(start: number, removing: number, adding: Enumerable): any;
- enumerableContentDidChange(start: number, removing: Enumerable, adding: Enumerable): any;
- enumerableContentDidChange(removing: number, adding: number): any;
- enumerableContentDidChange(removing: Enumerable, adding: number): any;
- enumerableContentDidChange(removing: number, adding: Enumerable): any;
- enumerableContentDidChange(removing: Enumerable, adding: Enumerable): any;
- enumerableContentWillChange(removing: number, adding: number): Enumerable;
- enumerableContentWillChange(removing: Enumerable, adding: number): Enumerable;
- enumerableContentWillChange(removing: number, adding: Enumerable): Enumerable;
- enumerableContentWillChange(removing: Enumerable, adding: Enumerable): Enumerable;
+ enumerableContentDidChange(start: number, removing: Enumerable | number, adding: Enumerable | number): any;
+ enumerableContentDidChange(removing: Enumerable | number, adding: Enumerable | number): any;
+ enumerableContentWillChange(removing: Enumerable | number, adding: Enumerable | number): Enumerable;
every(callback: Function, target?: any): boolean;
everyBy(key: string, value?: string): boolean;
everyProperty(key: string, value?: string): boolean;
@@ -621,18 +595,9 @@ declare namespace Ember {
clear(): any[];
compact(): any[];
contains(obj: any): boolean;
- enumerableContentDidChange(start: number, removing: number, adding: number): any;
- enumerableContentDidChange(start: number, removing: Enumerable, adding: number): any;
- enumerableContentDidChange(start: number, removing: number, adding: Enumerable): any;
- enumerableContentDidChange(start: number, removing: Enumerable, adding: Enumerable): any;
- enumerableContentDidChange(removing: number, adding: number): any;
- enumerableContentDidChange(removing: Enumerable, adding: number): any;
- enumerableContentDidChange(removing: number, adding: Enumerable): any;
- enumerableContentDidChange(removing: Enumerable, adding: Enumerable): any;
- enumerableContentWillChange(removing: number, adding: number): Enumerable;
- enumerableContentWillChange(removing: Enumerable, adding: number): Enumerable;
- enumerableContentWillChange(removing: number, adding: Enumerable): Enumerable;
- enumerableContentWillChange(removing: Enumerable, adding: Enumerable): Enumerable;
+ enumerableContentDidChange(start: number, removing: Enumerable | number, adding: Enumerable | number): any;
+ enumerableContentDidChange(removing: Enumerable | number, adding: Enumerable | number): any;
+ enumerableContentWillChange(removing: Enumerable | number, adding: Enumerable | number): Enumerable;
every(callback: Function, target?: any): boolean;
everyBy(key: string, value?: string): boolean;
everyProperty(key: string, value?: string): boolean;
@@ -697,8 +662,7 @@ declare namespace Ember {
copy(): Binding;
disconnect(): Binding;
from(path: string): Binding;
- to(path: string): Binding;
- to(pathTuple: any[]): Binding;
+ to(path: string | any[]): Binding;
toString(): string;
}
class Button extends Component implements TargetActionSupport {
@@ -750,7 +714,7 @@ declare namespace Ember {
and actions are targeted at the view object. There is no access to the surrounding context or
outer controller; all contextual information is passed in.
**/
- class Component {
+ class Component extends Object {
static detect(obj: any): boolean;
static detectInstance(obj: any): boolean;
/**
@@ -827,7 +791,7 @@ declare namespace Ember {
replaceRoute(name: string, ...args: any[]): void;
transitionToRoute(name: string, ...args: any[]): void;
controllers: {};
- model : any;
+ model: any;
needs: string[];
queryParams: any;
target: any;
@@ -902,13 +866,6 @@ declare namespace Ember {
static isClass: boolean;
static isMethod: boolean;
- /**
- Creates a new subclass.
- @method extend
- @static
- @param {Object} [args] - Object containing values to use within the new class
- **/
- static extend(args?: CoreObjectArguments): T;
/**
Creates a new subclass.
@method extend
@@ -916,15 +873,10 @@ declare namespace Ember {
@param {Mixin} [mixins] - One or more Mixin classes
@param {Object} [args] - Object containing values to use within the new class
**/
- static extend(mixins?: Mixin, args?: CoreObjectArguments): T;
+ static extend(args?: CoreObjectArguments): T;
+ static extend(mixin1: Mixin, args?: CoreObjectArguments): T;
+ static extend(mixin1: Mixin, mixin2: Mixin, args?: CoreObjectArguments): T;
- /**
- Creates a new subclass.
- @method extend
- @param {Object} [args] - Object containing values to use within the new class
- Non-static method because Ember classes aren't currently 'real' TypeScript classes.
- **/
- extend(args ?: CoreObjectArguments): T;
/**
Creates a new subclass.
@method extend
@@ -932,7 +884,7 @@ declare namespace Ember {
@param {Object} [args] - Object containing values to use within the new class
Non-static method because Ember classes aren't currently 'real' TypeScript classes.
**/
- extend(mixins ? : Mixin, args ?: CoreObjectArguments): T;
+ extend(mixin1 ?: Mixin, mixin2 ?: Mixin, args ?: CoreObjectArguments): T;
/**
Equivalent to doing extend(arguments).create(). If possible use the normal create method instead.
@@ -1062,18 +1014,9 @@ declare namespace Ember {
someProperty(key: string, value?: string): boolean;
compact(): any[];
contains(obj: any): boolean;
- enumerableContentDidChange(start: number, removing: number, adding: number): any;
- enumerableContentDidChange(start: number, removing: Enumerable, adding: number): any;
- enumerableContentDidChange(start: number, removing: number, adding: Enumerable): any;
- enumerableContentDidChange(start: number, removing: Enumerable, adding: Enumerable): any;
- enumerableContentDidChange(removing: number, adding: number): any;
- enumerableContentDidChange(removing: Enumerable, adding: number): any;
- enumerableContentDidChange(removing: number, adding: Enumerable): any;
- enumerableContentDidChange(removing: Enumerable, adding: Enumerable): any;
- enumerableContentWillChange(removing: number, adding: number): Enumerable;
- enumerableContentWillChange(removing: Enumerable, adding: number): Enumerable;
- enumerableContentWillChange(removing: number, adding: Enumerable): Enumerable;
- enumerableContentWillChange(removing: Enumerable, adding: Enumerable): Enumerable;
+ enumerableContentDidChange(start: number, removing: Enumerable | number, adding: Enumerable | number): any;
+ enumerableContentDidChange(removing: Enumerable | number, adding: Enumerable | number): any;
+ enumerableContentWillChange(removing: Enumerable | number, adding: Enumerable | number): Enumerable;
every(callback: Function, target?: any): boolean;
everyBy(key: string, value?: string): boolean;
everyProperty(key: string, value?: string): boolean;
@@ -1198,6 +1141,15 @@ declare namespace Ember {
rootURL: string;
}
var IS_BINDING: RegExp;
+ var inject: {
+ controller(name?: string): Controller;
+ service(name?: string): Service;
+ };
+ class Helper extends Object {
+ static helper( h: (a: any) => any): Helper;
+ compute(params: any[], hash: any): any;
+ recompute(params: any[], hash: any): any;
+ }
class Instrumentation {
getProperties(obj: any, list: any[]): {};
getProperties(obj: any, ...args: string[]): {};
@@ -1258,18 +1210,9 @@ declare namespace Ember {
clear(): any[];
compact(): any[];
contains(obj: any): boolean;
- enumerableContentDidChange(start: number, removing: number, adding: number): any;
- enumerableContentDidChange(start: number, removing: Enumerable, adding: number): any;
- enumerableContentDidChange(start: number, removing: number, adding: Enumerable): any;
- enumerableContentDidChange(start: number, removing: Enumerable, adding: Enumerable): any;
- enumerableContentDidChange(removing: number, adding: number): any;
- enumerableContentDidChange(removing: Enumerable, adding: number): any;
- enumerableContentDidChange(removing: number, adding: Enumerable): any;
- enumerableContentDidChange(removing: Enumerable, adding: Enumerable): any;
- enumerableContentWillChange(removing: number, adding: number): Enumerable;
- enumerableContentWillChange(removing: Enumerable, adding: number): Enumerable;
- enumerableContentWillChange(removing: number, adding: Enumerable): Enumerable;
- enumerableContentWillChange(removing: Enumerable, adding: Enumerable): Enumerable;
+ enumerableContentDidChange(start: number, removing: Enumerable | number, adding: Enumerable | number): any;
+ enumerableContentDidChange(removing: Enumerable | number, adding: Enumerable | number): any;
+ enumerableContentWillChange(removing: Enumerable | number, adding: Enumerable | number): Enumerable;
every(callback: Function, target?: any): boolean;
everyBy(key: string, value?: string): boolean;
everyProperty(key: string, value?: string): boolean;
@@ -1330,18 +1273,9 @@ declare namespace Ember {
someProperty(key: string, value?: string): boolean;
compact(): any[];
contains(obj: any): boolean;
- enumerableContentDidChange(start: number, removing: number, adding: number): any;
- enumerableContentDidChange(start: number, removing: Enumerable, adding: number): any;
- enumerableContentDidChange(start: number, removing: number, adding: Enumerable): any;
- enumerableContentDidChange(start: number, removing: Enumerable, adding: Enumerable): any;
- enumerableContentDidChange(removing: number, adding: number): any;
- enumerableContentDidChange(removing: Enumerable, adding: number): any;
- enumerableContentDidChange(removing: number, adding: Enumerable): any;
- enumerableContentDidChange(removing: Enumerable, adding: Enumerable): any;
- enumerableContentWillChange(removing: number, adding: number): Enumerable;
- enumerableContentWillChange(removing: Enumerable, adding: number): Enumerable;
- enumerableContentWillChange(removing: number, adding: Enumerable): Enumerable;
- enumerableContentWillChange(removing: Enumerable, adding: Enumerable): Enumerable;
+ enumerableContentDidChange(start: number, removing: Enumerable | number, adding: Enumerable | number): any;
+ enumerableContentDidChange(removing: Enumerable | number, adding: Enumerable | number): any;
+ enumerableContentWillChange(removing: Enumerable | number, adding: Enumerable | number): Enumerable;
every(callback: Function, target?: any): boolean;
everyBy(key: string, value?: string): boolean;
everyProperty(key: string, value?: string): boolean;
@@ -1401,18 +1335,9 @@ declare namespace Ember {
clear(): any[];
compact(): any[];
contains(obj: any): boolean;
- enumerableContentDidChange(start: number, removing: number, adding: number): any;
- enumerableContentDidChange(start: number, removing: Enumerable, adding: number): any;
- enumerableContentDidChange(start: number, removing: number, adding: Enumerable): any;
- enumerableContentDidChange(start: number, removing: Enumerable, adding: Enumerable): any;
- enumerableContentDidChange(removing: number, adding: number): any;
- enumerableContentDidChange(removing: Enumerable, adding: number): any;
- enumerableContentDidChange(removing: number, adding: Enumerable): any;
- enumerableContentDidChange(removing: Enumerable, adding: Enumerable): any;
- enumerableContentWillChange(removing: number, adding: number): Enumerable;
- enumerableContentWillChange(removing: Enumerable, adding: number): Enumerable;
- enumerableContentWillChange(removing: number, adding: Enumerable): Enumerable;
- enumerableContentWillChange(removing: Enumerable, adding: Enumerable): Enumerable;
+ enumerableContentDidChange(start: number, removing: Enumerable | number, adding: Enumerable | number): any;
+ enumerableContentDidChange(removing: Enumerable | number, adding: Enumerable | number): any;
+ enumerableContentWillChange(removing: Enumerable | number, adding: Enumerable | number): Enumerable;
every(callback: Function, target?: any): boolean;
everyBy(key: string, value?: string): boolean;
everyProperty(key: string, value?: any): boolean;
@@ -1477,8 +1402,7 @@ declare namespace Ember {
notifyPropertyChange(keyName: string): Observable;
propertyDidChange(keyName: string): Observable;
propertyWillChange(keyName: string): Observable;
- removeObserver(key: string, target: any, method: string): void;
- removeObserver(key: string, target: any, method: Function): void;
+ removeObserver(key: string, target: any, method: Function | string): void;
set(keyName: string, value: any): Observable;
setProperties(hash: {}): Observable;
toggleProperty(keyName: string): any;
@@ -1531,8 +1455,7 @@ declare namespace Ember {
notifyPropertyChange(keyName: string): Observable;
propertyDidChange(keyName: string): Observable;
propertyWillChange(keyName: string): Observable;
- removeObserver(key: string, target: any, method: string): Observable;
- removeObserver(key: string, target: any, method: Function): Observable;
+ removeObserver(key: string, target: any, method: Function | string): Observable;
set(keyName: string, value: any): Observable;
setProperties(hash: {}): Observable;
toggleProperty(keyName: string): any;
@@ -1572,8 +1495,7 @@ declare namespace Ember {
notifyPropertyChange(keyName: string): Observable;
propertyDidChange(keyName: string): Observable;
propertyWillChange(keyName: string): Observable;
- removeObserver(key: string, target: {}, method: string): void;
- removeObserver(key: string, target: {}, method: Function): void;
+ removeObserver(key: string, target: {}, method: Function | string): void;
set(keyName: string, value: any): Observable;
setProperties(hash: {}): Observable;
/**
@@ -1598,17 +1520,16 @@ declare namespace Ember {
// FYI - RSVP source comes from https://github.com/tildeio/rsvp.js/blob/master/lib/rsvp/promise.js
namespace RSVP {
- interface PromiseResolve {
- (value?: any): void;
- }
- interface PromiseReject {
- (reason?: any): void;
- }
- interface PromiseResolverFunction {
- (resolve: PromiseResolve, reject: PromiseReject): void;
+ type PromiseResolve = (value?: T) => void;
+ type PromiseReject = (reason?: U) => void;
+ type PromiseResolverFunction = (resolve: PromiseResolve, reject: PromiseReject) => void;
+
+ interface Thenable {
+ then(onFulfilled?: (value: T) => V | Thenable, onRejected?: (error: any) => X | Thenable): Thenable;
+ then(onFulfilled?: (value: T) => V | Thenable, onRejected?: (error: any) => void): Thenable;
}
- class Promise {
+ class Promise implements Thenable {
/**
Promise objects represent the eventual result of an asynchronous operation. The
@@ -1621,7 +1542,7 @@ declare namespace Ember {
Useful for tooling.
@constructor
*/
- constructor(resolver: PromiseResolverFunction, label?: string);
+ constructor(resolver: PromiseResolverFunction, label?: string);
/**
The primary way of interacting with a promise is through its `then` method,
@@ -1634,8 +1555,9 @@ declare namespace Ember {
Useful for tooling.
@return {Promise}
*/
- then(onFulfilled?: Function, onRejected?: Function): Promise;
-
+ then(onFulfilled?: (value: T) => V | Thenable, onRejected?: (error: any) => X | Thenable): Promise;
+ // tslint:disable-next-line
+ then(onFulfilled?: (value: T) => V | Thenable, onRejected?: (error: any) => void): Promise;
/**
`catch` is simply sugar for `then(undefined, onRejection)` which makes it the same
as the catch block of a try/catch statement.
@@ -1646,7 +1568,7 @@ declare namespace Ember {
Useful for tooling.
@return {Promise}
*/
- catch(onRejection: Function, label?: string): Promise;
+ catch(onRejection: (a: any) => U, label?: string): Promise;
/**
`finally` will be invoked regardless of the promise's fate just as native
@@ -1658,8 +1580,10 @@ declare namespace Ember {
Useful for tooling.
@return {Promise}
*/
- finally(callback: Function, label?: string): Promise;
+ finally(callback: (a: T) => V, label?: string): Promise;
}
+
+ function all(promises: GlobalArray>): Promise;
}
/**
@@ -1698,7 +1622,7 @@ declare namespace Ember {
resolves. Otherwise, non-promise return values are not
utilized in any way.
*/
- afterModel(resolvedModel: any, transition: EmberStates.Transition): RSVP.Promise;
+ afterModel(resolvedModel: any, transition: EmberStates.Transition): RSVP.Promise;
/**
This hook is the first of the route entry validation hooks
@@ -1727,7 +1651,7 @@ declare namespace Ember {
resolves. Otherwise, non-promise return values are not
utilized in any way.
*/
- beforeModel(transition: EmberStates.Transition): RSVP.Promise;
+ beforeModel(transition: EmberStates.Transition): RSVP.Promise;
/**
The controller associated with this route.
@@ -1840,7 +1764,7 @@ declare namespace Ember {
the promise resolves, and the resolved value of the promise
will be used as the model for this route.
*/
- model(params: {}, transition: EmberStates.Transition): any|RSVP.Promise;
+ model(params: {}, transition: EmberStates.Transition): any|RSVP.Promise;
/**
Returns the model of a parent (or any ancestor) route
@@ -1863,7 +1787,7 @@ declare namespace Ember {
@method paramsFor
@param {String} name
*/
- paramsFor(name: string) : any;
+ paramsFor(name: string): any;
/**
Configuration hash for this route's queryParams.
@@ -2174,7 +2098,7 @@ declare namespace Ember {
@param {Function} method The function of the subscription
@return this
*/
- off(name: string, target:any , method: Function): Evented;
+ off(name: string, target: any, method: Function): Evented;
/**
Checks to see if object has any subscriptions for named event.
@@ -2211,6 +2135,28 @@ declare namespace Ember {
router: Router;
options: any;
}
+ class Service extends CoreObject implements Observable {
+ /* Observable */
+ addObserver: ModifyObserver;
+ beginPropertyChanges(): Observable;
+ cacheFor(keyName: string): any;
+ decrementProperty(keyName: string, decrement?: number): number;
+ endPropertyChanges(): Observable;
+ get(keyName: string): any;
+ getProperties(...args: string[]): {};
+ getProperties(keys: string[]): {};
+ getWithDefault(keyName: string, defaultValue: any): any;
+ hasObserverFor(key: string): boolean;
+ incrementProperty(keyName: string, increment?: number): number;
+ notifyPropertyChange(keyName: string): Observable;
+ propertyDidChange(keyName: string): Observable;
+ propertyWillChange(keyName: string): Observable;
+ removeObserver(key: string, target: {}, method: Function | string): void;
+ set(keyName: string, value: any): Observable;
+ setProperties(hash: {}): Observable;
+ toggleProperty(keyName: string): boolean;
+ /* /Observable */
+ }
var STRINGS: boolean;
class State extends Object implements Evented {
static detect(obj: any): boolean;
@@ -2298,11 +2244,11 @@ declare namespace Ember {
class Adapter extends Ember.Object {
constructor ();
}
- class Promise extends Ember.RSVP.Promise {
+ class Promise extends Ember.RSVP.Promise {
constructor ();
}
function oninjectHelpers(callback: Function): void;
- function promise(resolver: Function, label: string): Ember.Test.Promise;
+ function promise(resolver: (a: T) => any, label: string): Ember.Test.Promise;
function unregisterHelper(name: string): void;
function registerHelper(name: string, helperMethod: Function): void;
function registerAsyncHelper(name: string, helperMethod: Function): void;
@@ -2315,7 +2261,7 @@ declare namespace Ember {
function unregisterWaiter(callback: Function): void;
function unregisterWaiter(context: any, callback: Function): void;
- function resolve(result: any): Ember.Test.Promise;
+ function resolve(result: T): Ember.Test.Promise;
}
class TextArea extends Component implements TextSupport {
static detect(obj: any): boolean;
@@ -2385,10 +2331,7 @@ declare namespace Ember {
actionContext: any;
}
var ViewUtils: {}; // TODO: define interface
- function addListener(obj: any, eventName: string, target: any, method: Function, once?: boolean): void;
- function addListener(obj: any, eventName: string, target: any, method: string, once?: boolean): void;
- function addListener(obj: any, eventName: string, func: Function, method: Function, once?: boolean): void;
- function addListener(obj: any, eventName: string, func: Function, method: string, once?: boolean): void;
+ function addListener(obj: any, eventName: string, target: Function | any, method: Function | string, once?: boolean): void;
var addObserver: ModifyObserver;
/**
Ember.alias is deprecated. Please use Ember.aliasMethod or Ember.computed.alias instead.
@@ -2423,6 +2366,7 @@ declare namespace Ember {
notEmpty(dependentKey: string): ComputedProperty;
oneWay(dependentKey: string): ComputedProperty;
or(...args: string[]): ComputedProperty;
+ readOnly(dependentString: string): ComputedProperty;
};
// ReSharper restore DuplicatingLocalDeclaration
function controllerFor(container: Container, controllerName: string, lookupOptions?: {}): Controller;
@@ -2495,35 +2439,25 @@ declare namespace Ember {
function propertyIsEnumerable(prop: string): boolean;
function propertyWillChange(obj: any, keyName: string): void;
function removeChainWatcher(obj: any, keyName: string, node: any): void;
- function removeListener(obj: any, eventName: string, target: any, method: Function): void;
- function removeListener(obj: any, eventName: string, target: any, method: string): void;
- function removeListener(obj: any, eventName: string, func: Function, method: Function): void;
- function removeListener(obj: any, eventName: string, func: Function, method: string): void;
+ function removeListener(obj: any, eventName: string, target: Function | any, method: Function | string): void;
function removeObserver(obj: any, path: string, target: any, method: Function): any;
function required(): Descriptor;
function rewatch(obj: any): void;
var run: {
+ (method: Function): void;
(target: any, method: Function): void;
begin(): void;
cancel(timer: any): void;
- debounce(target: any, method: Function, ...args: any[]): void;
- debounce(target: any, method: string, ...args: any[]): void;
+ debounce(target: any, method: Function | string, ...args: any[]): void;
end(): void;
- join(target: any, method: Function, ...args: any[]): any;
- join(target: any, method: string, ...args: any[]): any;
- later(target: any, method: Function, ...args: any[]): string;
- later(target: any, method: string, ...args: any[]): string;
- next(target: any, method: Function, ...args: any[]): number;
- next(target: any, method: string, ...args: any[]): number;
- once(target: any, method: Function, ...args: any[]): number;
- once(target: any, method: string, ...args: any[]): number;
- schedule(queue: string, target: any, method: Function, ...args: any[]): void;
- schedule(queue: string, target: any, method: string, ...args: any[]): void;
- scheduleOnce(queue: string, target: any, method: Function, ...args: any[]): void;
- scheduleOnce(queue: string, target: any, method: string, ...args: any[]): void;
+ join(target: any, method: Function | string, ...args: any[]): any;
+ later(target: any, method: Function | string, ...args: any[]): string;
+ next(target: any, method: Function | string, ...args: any[]): number;
+ once(target: any, method: Function | string, ...args: any[]): number;
+ schedule(queue: string, target: any, method: Function | string, ...args: any[]): void;
+ scheduleOnce(queue: string, target: any, method: Function | string, ...args: any[]): void;
sync(): void;
- throttle(target: any, method: Function, ...args: any[]): void;
- throttle(target: any, method: string, ...args: any[]): void;
+ throttle(target: any, method: Function | string, ...args: any[]): void;
queues: any[];
};
function runLoadHooks(name: string, object: any): void;
@@ -2557,230 +2491,22 @@ declare namespace Ember {
function watchPath(obj: any, keyPath: string): void;
function watchedEvents(obj: {}): any[];
function wrap(func: Function, superFunc: Function): Function;
- var _ContainerProxyMixin : Mixin;
+ var _ContainerProxyMixin: Mixin;
var _RegistryProxyMixin: Mixin;
function getOwner(object: any): any;
function setOwner(object: any, owner: any): void;
- var testing : boolean;
- var MODEL_FACTORY_INJECTIONS : boolean;
+ var testing: boolean;
+ var MODEL_FACTORY_INJECTIONS: boolean;
function assign(original: any, ...sources: any[]): any;
}
-declare namespace Em {
- var $: typeof Ember.$;
- var A: typeof Ember.A;
- class ActionHandlerMixin extends Ember.ActionHandlerMixin { }
- class Application extends Ember.Application { }
- class Array extends Ember.Array { }
- class ArrayProxy extends Ember.ArrayProxy { }
- var BOOTED: typeof Ember.BOOTED;
- class Binding extends Ember.Binding { }
- class Button extends Ember.Button { }
- class Checkbox extends Ember.Checkbox { }
- class Comparable extends Ember.Comparable { }
- class Component extends Ember.Component { }
- class ComputedProperty extends Ember.ComputedProperty { }
- class Container extends Ember.Container { }
- class Controller extends Ember.Controller { }
- class ControllerMixin extends Ember.ControllerMixin { }
- class Copyable extends Ember.Copyable {}
- class CoreObject extends Ember.CoreObject { }
- class DAG extends Ember.DAG {}
- var DEFAULT_GETTER_FUNCTION : typeof Ember.DEFAULT_GETTER_FUNCTION;
- class DefaultResolver extends Ember.DefaultResolver { }
- class Descriptor extends Ember.Descriptor { }
- var ENV: typeof Ember.ENV;
- var EXTEND_PROTOTYPES: typeof Ember.EXTEND_PROTOTYPES;
- class EachProxy extends Ember.EachProxy { }
- class Enumerable extends Ember.Enumerable { }
- var Error: typeof Ember.Error;
- class EventDispatcher extends Ember.EventDispatcher { }
- class Evented extends Ember.Evented { }
- var FROZEN_ERROR: typeof Ember.FROZEN_ERROR;
- class Freezable extends Ember.Freezable { }
- var GUID_KEY: typeof Ember.GUID_KEY;
- namespace Handlebars {
- var compile: typeof Ember.Handlebars.compile;
- var precompile: typeof Ember.Handlebars.precompile;
- class Compiler extends Ember.Handlebars.Compiler { }
- class JavaScriptCompiler extends Ember.Handlebars.JavaScriptCompiler{ }
- var registerPartial: typeof Ember.Handlebars.registerPartial;
- var K: typeof Ember.Handlebars.K;
- var createFrame: typeof Ember.Handlebars.createFrame;
- var Exception: typeof Ember.Handlebars.Exception;
- class SafeString extends Ember.Handlebars.SafeString { }
- var parse: typeof Ember.Handlebars.parse;
- var print: typeof Ember.Handlebars.print;
- var logger: typeof Ember.Handlebars.logger;
- var log: typeof Ember.Handlebars.log;
- }
- class HashLocation extends Ember.HashLocation { }
- class HistoryLocation extends Ember.HistoryLocation { }
- var IS_BINDING: typeof Ember.IS_BINDING;
- class Instrumentation extends Ember.Instrumentation { }
- var K: typeof Ember.K;
- var LOG_BINDINGS: typeof Ember.LOG_BINDINGS;
- var LOG_STACKTRACE_ON_DEPRECATION: typeof Ember.LOG_STACKTRACE_ON_DEPRECATION;
- var LOG_VERSION: typeof Ember.LOG_VERSION;
- class Location extends Ember.Location {}
- var Logger: typeof Ember.Logger;
- var MANDATORY_SETTER_FUNCTION: typeof Ember.MANDATORY_SETTER_FUNCTION;
- var META_KEY: typeof Ember.META_KEY;
- class Map extends Ember.Map { }
- class MapWithDefault extends Ember.MapWithDefault { }
- class Mixin extends Ember.Mixin { }
- class MutableArray extends Ember.MutableArray { }
- class MutableEnumberable extends Ember.MutableEnumberable { }
- var NAME_KEY: typeof Ember.NAME_KEY;
- class Namespace extends Ember.Namespace { }
- class NativeArray extends Ember.NativeArray { }
- class NoneLocation extends Ember.NoneLocation { }
- var ORDER_DEFINITION: typeof Ember.ORDER_DEFINITION;
- class Object extends Ember.Object { }
- class ObjectProxy extends Ember.ObjectProxy { }
- class Observable extends Ember.Observable { }
- class OrderedSet extends Ember.OrderedSet { }
- class Registry extends Ember.Registry { }
- namespace RSVP {
- interface PromiseResolve extends Ember.RSVP.PromiseResolve { }
- interface PromiseReject extends Ember.RSVP.PromiseReject { }
- interface PromiseResolverFunction extends Ember.RSVP.PromiseResolverFunction { }
- class Promise extends Ember.RSVP.Promise { }
- }
- class Route extends Ember.Route {}
- class Router extends Ember.Router { }
- class RouterDSL extends Ember.RouterDSL { }
- var STRINGS: typeof Ember.STRINGS;
- class State extends Ember.State { }
- class StateManager extends Ember.StateManager { }
- var String : typeof Ember.String;
- var TEMPLATES: typeof Ember.TEMPLATES;
- class TargetActionSupport extends Ember.TargetActionSupport {}
- namespace Test {
- class Adapter extends Ember.Test.Adapter { }
- class Promise extends Ember.Test.Promise { }
- var oninjectHelpers: typeof Ember.Test.oninjectHelpers;
- var promise: typeof Ember.Test.promise;
- var unregisterHelper: typeof Ember.Test.unregisterHelper;
- var registerHelper: typeof Ember.Test.registerHelper;
- var registerAsyncHelper: typeof Ember.Test.registerAsyncHelper;
- var adapter: typeof Ember.Test.adapter;
- var QUnitAdapter: typeof Ember.Test.QUnitAdapter;
- var registerWaiter: typeof Ember.Test.registerWaiter;
- var unregisterWaiter: typeof Ember.Test.unregisterWaiter
- var resolve: typeof Ember.Test.resolve;
- }
- class TextArea extends Ember.TextArea { }
- class TextField extends Ember.TextField { }
- class TextSupport extends Ember.TextSupport { }
- var VERSION: typeof Ember.VERSION;
- class ViewTargetActionSupport extends Ember.ViewTargetActionSupport { }
- var ViewUtils: typeof Ember.ViewUtils;
- var addListener: typeof Ember.addListener;
- var addObserver: typeof Ember.addObserver;
- var alias: typeof Ember.alias;
- var aliasMethod: typeof Ember.aliasMethod;
- var assert: typeof Ember.assert;
- var beginPropertyChanges: typeof Ember.beginPropertyChanges;
- var bind: typeof Ember.bind;
- var cacheFor: typeof Ember.cacheFor;
- var canInvoke: typeof Ember.canInvoke;
- var changeProperties: typeof Ember.changeProperties;
- var compare: typeof Ember.compare;
- var computed: typeof Ember.computed;
- var controllerFor: typeof Ember.controllerFor;
- var copy: typeof Ember.copy;
- var create: typeof Ember.create;
- var debug: typeof Ember.debug;
- var defineProperty: typeof Ember.defineProperty;
- var deprecate: typeof Ember.deprecate;
- var deprecateFunc: typeof Ember.deprecateFunc
- var destroy: typeof Ember.destroy;
- var empty: typeof Ember.empty;
- var endPropertyChanges: typeof Ember.endPropertyChanges;
- var finishChains: typeof Ember.finishChains;
- var generateController: typeof Ember.generateController;
- var generateGuid: typeof Ember.generateGuid;
- var get: typeof Ember.get;
- var getPath: typeof Ember.getPath;
- var getWithDefault: typeof Ember.getWithDefault;
- var guidFor: typeof Ember.guidFor;
- var handleErrors: typeof Ember.handleErrors;
- var hasListeners: typeof Ember.hasListeners;
- var hasOwnProperty: typeof Ember.hasOwnProperty;
- var immediateObserver: typeof Ember.immediateObserver;
- var inspect: typeof Ember.inspect;
- var instrument: typeof Ember.instrument;
- var isArray: typeof Ember.isArray;
- var isEmpty: typeof Ember.isEmpty;
- var isEqual: typeof Ember.isEqual;
- var isGlobalPath: typeof Ember.isGlobalPath;
- var isNamespace: typeof Ember.isNamespace;
- var isNone: typeof Ember.isNone;
- var isPrototypeOf: typeof Ember.isPrototypeOf;
- var isWatching: typeof Ember.isWatching;
- var keys: typeof Ember.keys;
- var listenersDiff: typeof Ember.listenersDiff;
- var listenersFor: typeof Ember.listenersFor;
- var listenersUnion: typeof Ember.listenersUnion;
- var lookup: typeof Ember.lookup;
- var makeArray: typeof Ember.makeArray;
- var merge: typeof Ember.merge;
- var meta: typeof Ember.meta;
- var mixin: typeof Ember.mixin;
- var none: typeof Ember.none;
- var observer: typeof Ember.observer;
- var observersFor: typeof Ember.observersFor;
- var onLoad: typeof Ember.onLoad;
- var onError: typeof Ember.onError;
- var overrideChains: typeof Ember.overrideChains;
- var platform: typeof Ember.platform;
- var propertyDidChange: typeof Ember.propertyDidChange;
- var propertyIsEnumerable: typeof Ember.propertyIsEnumerable;
- var propertyWillChange: typeof Ember.propertyWillChange;
- var removeChainWatcher: typeof Ember.removeChainWatcher;
- var removeListener: typeof Ember.removeListener;
- var removeObserver: typeof Ember.removeObserver;
- var required: typeof Ember.required;
- var rewatch: typeof Ember.rewatch;
- var run: typeof Ember.run;
- var runLoadHooks: typeof Ember.runLoadHooks;
- var sendEvent: typeof Ember.sendEvent;
- var set: typeof Ember.set;
- var setPath: typeof Ember.setPath;
- var setProperties: typeof Ember.setProperties;
- var subscribe: typeof Ember.subscribe;
- var toLocaleString: typeof Ember.toLocaleString;
- var toString: typeof Ember.toString;
- var tryCatchFinally: typeof Ember.tryCatchFinally;
- var tryInvoke: typeof Ember.tryInvoke;
- var trySet: typeof Ember.trySet;
- var trySetPath: typeof Ember.trySetPath;
- var typeOf: typeof Ember.typeOf;
- var unwatch: typeof Ember.unwatch;
- var unwatchKey: typeof Ember.unwatchKey;
- var unwatchPath: typeof Ember.unwatchPath;
- var uuid: typeof Ember.uuid;
- var valueOf: typeof Ember.valueOf;
- var warn: typeof Ember.warn;
- var watch: typeof Ember.watch;
- var watchKey: typeof Ember.watchKey;
- var watchPath: typeof Ember.watchPath;
- var watchedEvents: typeof Ember.watchedEvents;
- var wrap: typeof Ember.wrap;
- var _ContainerProxyMixin : typeof Ember._ContainerProxyMixin;
- var _RegistryProxyMixin: typeof Ember._RegistryProxyMixin;
- var getOwner: typeof Ember.getOwner;
- var setOwner: typeof Ember.setOwner;
- var testing: typeof Ember.testing;
- var MODEL_FACTORY_INJECTIONS: typeof Ember.MODEL_FACTORY_INJECTIONS;
- var assign: typeof Ember.assign;
-}
+import Em = Ember;
+
/**
- * External ambient module - to allow "import Ember = require('Ember');" to work correctly
+ * External ambient module - to allow "import Ember from 'ember';" to work correctly
*/
-declare module "Ember" {
- export = Ember;
+declare module "ember" {
+ export default Ember;
}
diff --git a/ember/tsconfig.json b/ember/tsconfig.json
index 0bfee35a23..5f0384fae4 100644
--- a/ember/tsconfig.json
+++ b/ember/tsconfig.json
@@ -3,7 +3,7 @@
"module": "commonjs",
"target": "es6",
"noImplicitAny": true,
- "strictNullChecks": false,
+ "strictNullChecks": true,
"baseUrl": "../",
"typeRoots": [
"../"
@@ -16,4 +16,4 @@
"index.d.ts",
"ember-tests.ts"
]
-}
\ No newline at end of file
+}
diff --git a/ember/tslint.json b/ember/tslint.json
new file mode 100644
index 0000000000..e2cf959984
--- /dev/null
+++ b/ember/tslint.json
@@ -0,0 +1,9 @@
+{
+ "extends": "../tslint.json",
+ "rules": {
+ // Heavy use of Function type in this older package.
+ "forbidden-types": false,
+ // not sure what this means
+ "no-single-declare-module": false
+ }
+}