Launch Week Day 5: Introducing Reachability for PHP.Learn More
Socket
Book a DemoSign in
Socket

@aurelia/kernel

Package Overview
Dependencies
Maintainers
1
Versions
1136
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@aurelia/kernel - npm Package Compare versions

Comparing version
0.2.0
to
0.3.0-dev.20181013
+679
src/di.ts
// tslint:disable:no-reserved-keywords
import { Constructable, IIndexable, Injectable, Primitive } from './interfaces';
import { PLATFORM } from './platform';
import { Reporter } from './reporter';
export type ResolveCallback<T = any> = (handler?: IContainer, requestor?: IContainer, resolver?: IResolver) => T;
export type Key<T> = InterfaceSymbol<T> | Primitive | IIndexable | Function;
export type InterfaceSymbol<T> = (target: Injectable, property: string, index: number) => any;
export interface IDefaultableInterfaceSymbol<T> extends InterfaceSymbol<T> {
withDefault(configure: (builder: IResolverBuilder<T>) => IResolver): InterfaceSymbol<T>;
noDefault(): InterfaceSymbol<T>;
}
export interface IResolver<T = any> {
resolve(handler: IContainer, requestor: IContainer): T;
getFactory?(container: IContainer): IFactory<T> | null;
}
export interface IRegistration<T = any> {
register(container: IContainer, key?: Key<T>): IResolver<T>;
}
export interface IFactory<T = any> {
readonly type: Function;
registerTransformer(transformer: (instance: T) => T): boolean;
construct(container: IContainer, dynamicDependencies?: any[]): T;
}
export interface IServiceLocator {
has(key: any, searchAncestors: boolean): boolean;
get<T>(key: Key<T>): T;
get<T extends Constructable>(key: T): InstanceType<T>;
getAll<T>(key: Key<T>): ReadonlyArray<T>;
getAll<T extends Constructable>(key: T): ReadonlyArray<InstanceType<T>>;
}
export interface IRegistry {
register(container: IContainer): void;
}
export interface IContainer extends IServiceLocator {
register(...params: (IRegistry | Record<string, Partial<IRegistry>>)[]): void;
register(registry: IRegistry | Record<string, Partial<IRegistry>>): void;
registerResolver<T>(key: Key<T>, resolver: IResolver<T>): IResolver<T>;
registerResolver<T extends Constructable>(key: T, resolver: IResolver<InstanceType<T>>): IResolver<InstanceType<T>>;
registerTransformer<T>(key: Key<T>, transformer: (instance: T) => T): boolean;
registerTransformer<T extends Constructable>(key: T, transformer: (instance: InstanceType<T>) => T): boolean;
getResolver<T>(key: Key<T>, autoRegister?: boolean): IResolver<T> | null;
getResolver<T extends Constructable>(key: T, autoRegister?: boolean): IResolver<InstanceType<T>> | null;
getFactory<T extends Constructable>(type: T): IFactory<InstanceType<T>>;
createChild(): IContainer;
}
export interface IResolverBuilder<T> {
instance(value: T & IIndexable): IResolver;
singleton(value: Constructable<T>): IResolver;
transient(value: Constructable<T>): IResolver;
callback(value: ResolveCallback<T>): IResolver;
aliasTo(destinationKey: Key<T>): IResolver;
}
if (!('getOwnMetadata' in Reflect)) {
(Reflect as any).getOwnMetadata = function(key: string, target: any): any {
return target[key];
};
(Reflect as any).metadata = function(key: string, value: any): (target: any) => void {
return function(target: any): void {
target[key] = value;
};
};
}
export const DI = {
createContainer(): IContainer {
return new Container();
},
getDesignParamTypes(target: any): any[] {
return (Reflect as any).getOwnMetadata('design:paramtypes', target) || PLATFORM.emptyArray;
},
getDependencies(type: Function & { inject?: any }): any[] {
let dependencies: any[];
if (type.inject === undefined) {
dependencies = DI.getDesignParamTypes(type);
} else {
dependencies = [];
let ctor = type;
while (typeof ctor === 'function') {
if (ctor.hasOwnProperty('inject')) {
dependencies.push(...ctor.inject);
}
ctor = Object.getPrototypeOf(ctor);
}
}
return dependencies;
},
createInterface<T = any>(friendlyName?: string): IDefaultableInterfaceSymbol<T> {
const Key: any = function(target: Injectable, property: string, index: number): any {
const inject = target.inject || (target.inject = []);
(Key as any).friendlyName = friendlyName || 'Interface';
inject[index] = Key;
return target;
};
Key.noDefault = function(): InterfaceSymbol<T> {
return Key;
};
Key.withDefault = function(configure: (builder: IResolverBuilder<T>) => IResolver): InterfaceSymbol<T> {
Key.withDefault = function(): void {
throw Reporter.error(17, Key);
};
Key.register = function(container: IContainer, key?: Key<T>): IResolver<T> {
const trueKey = key || Key;
return configure({
instance(value: T): IResolver {
return container.registerResolver(trueKey, new Resolver(trueKey, ResolverStrategy.instance, value));
},
singleton(value: Function): IResolver {
return container.registerResolver(trueKey, new Resolver(trueKey, ResolverStrategy.singleton, value));
},
transient(value: Function): IResolver {
return container.registerResolver(trueKey, new Resolver(trueKey, ResolverStrategy.transient, value));
},
callback(value: ResolveCallback): IResolver {
return container.registerResolver(trueKey, new Resolver(trueKey, ResolverStrategy.callback, value));
},
aliasTo(destinationKey: T): IResolver {
return container.registerResolver(trueKey, new Resolver(trueKey, ResolverStrategy.alias, destinationKey));
},
});
};
return Key;
};
return Key;
},
inject(...dependencies: any[]): (target: any, property?: string, descriptor?: PropertyDescriptor | number) => any {
return function(target: any, key?, descriptor?) {
if (typeof descriptor === 'number') { // It's a parameter decorator.
if (!target.hasOwnProperty('inject')) {
target.inject = DI.getDesignParamTypes(target).slice();
}
if (dependencies.length === 1) {
target.inject[descriptor] = dependencies[0];
}
} else if (key) { // It's a property decorator. Not supported by the container without plugins.
const actualTarget = target.constructor;
const inject = actualTarget.inject || (actualTarget.inject = {});
inject[key] = dependencies[0];
} else if (descriptor) { // It's a function decorator (not a Class constructor)
const fn = descriptor.value;
fn.inject = dependencies;
} else { // It's a class decorator.
if (!dependencies || dependencies.length === 0) {
target.inject = DI.getDesignParamTypes(target).slice();
} else {
target.inject = dependencies;
}
}
};
}
};
export const IContainer = DI.createInterface<IContainer>().noDefault();
export const IServiceLocator = IContainer as InterfaceSymbol<IServiceLocator>;
function createResolver(
getter: (key: any, handler: IContainer, requestor: IContainer) => any
): (key: any) => ReturnType<typeof DI.inject> {
return function(key: any): ReturnType<typeof DI.inject> {
const Key = function Key(target: Injectable, property?: string, descriptor?: PropertyDescriptor | number): void {
return DI.inject(Key)(target, property, descriptor);
};
(Key as any).resolve = function(handler: IContainer, requestor: IContainer): any {
return getter(key, handler, requestor);
};
return Key;
};
}
export const inject = DI.inject;
export const all = createResolver((key: any, handler: IContainer, requestor: IContainer) => requestor.getAll(key));
export const lazy = createResolver((key: any, handler: IContainer, requestor: IContainer) => {
let instance: any = null; // cache locally so that lazy always returns the same instance once resolved
return () => {
if (instance === null) {
instance = requestor.get(key);
}
return instance;
};
});
export const optional = createResolver((key: any, handler: IContainer, requestor: IContainer) => {
if (requestor.has(key, true)) {
return requestor.get(key);
} else {
return null;
}
});
/*@internal*/
export const enum ResolverStrategy {
instance = 0,
singleton = 1,
transient = 2,
callback = 3,
array = 4,
alias = 5
}
/*@internal*/
export class Resolver implements IResolver, IRegistration {
constructor(public key: any, public strategy: ResolverStrategy, public state: any) {}
public register(container: IContainer, key?: any): IResolver {
return container.registerResolver(key || this.key, this);
}
public resolve(handler: IContainer, requestor: IContainer): any {
switch (this.strategy) {
case ResolverStrategy.instance:
return this.state;
case ResolverStrategy.singleton:
this.strategy = ResolverStrategy.instance;
return this.state = handler.getFactory(this.state).construct(handler);
case ResolverStrategy.transient:
// Always create transients from the requesting container
return handler.getFactory(this.state).construct(requestor);
case ResolverStrategy.callback:
return (this.state as ResolveCallback)(handler, requestor, this);
case ResolverStrategy.array:
return this.state[0].resolve(handler, requestor);
case ResolverStrategy.alias:
return handler.get(this.state);
default:
throw Reporter.error(6, this.strategy);
}
}
public getFactory(container: IContainer): IFactory | null {
switch (this.strategy) {
case ResolverStrategy.singleton:
case ResolverStrategy.transient:
return container.getFactory(this.state);
default:
return null;
}
}
}
/*@internal*/
export interface IInvoker {
invoke(container: IContainer, fn: Function, dependencies: any[]): any;
invokeWithDynamicDependencies(
container: IContainer,
fn: Function,
staticDependencies: any[],
dynamicDependencies: any[]
): any;
}
/*@internal*/
export class Factory implements IFactory {
private transformers: ((instance: any) => any)[] | null = null;
constructor(public type: Function, private invoker: IInvoker, private dependencies: any[]) { }
public static create(type: Function): IFactory {
const dependencies = DI.getDependencies(type);
const invoker = classInvokers[dependencies.length] || fallbackInvoker;
return new Factory(type, invoker, dependencies);
}
public construct(container: IContainer, dynamicDependencies?: any[]): any {
const transformers = this.transformers;
let instance = dynamicDependencies !== undefined
? this.invoker.invokeWithDynamicDependencies(container, this.type, this.dependencies, dynamicDependencies)
: this.invoker.invoke(container, this.type, this.dependencies);
if (transformers === null) {
return instance;
}
for (let i = 0, ii = transformers.length; i < ii; ++i) {
instance = transformers[i](instance);
}
return instance;
}
public registerTransformer(transformer: (instance: any) => any): boolean {
if (this.transformers === null) {
this.transformers = [];
}
this.transformers.push(transformer);
return true;
}
}
/*@internal*/
export interface IContainerConfiguration {
factories?: Map<Function, IFactory>;
}
const containerResolver: IResolver = {
resolve(handler: IContainer, requestor: IContainer): IContainer {
return requestor;
}
};
function isRegistry(obj: IRegistry | Record<string, IRegistry>): obj is IRegistry {
return typeof obj.register === 'function';
}
/*@internal*/
export class Container implements IContainer {
private parent: Container | null = null;
private resolvers: Map<any, IResolver> = new Map<any, IResolver>();
private factories: Map<Function, IFactory>;
private configuration: IContainerConfiguration;
constructor(configuration: IContainerConfiguration = {}) {
this.configuration = configuration;
this.factories = configuration.factories || (configuration.factories = new Map());
this.resolvers.set(IContainer, containerResolver);
}
public register(registry: (IRegistry | Record<string, Partial<IRegistry>>)): void;
public register(...params: (IRegistry | Record<string, Partial<IRegistry>>)[]): void {
for (let i = 0, ii = params.length; i < ii; ++i) {
const current = params[i] as IRegistry | Record<string, IRegistry>;
if (isRegistry(current)) {
current.register(this);
} else {
const keys = Object.keys(current);
for (let j = 0, jj = keys.length; j < jj; ++j) {
const value = current[keys[j]];
// note: we could remove this if-branch and call this.register directly
// - the extra check is just a perf tweak to create fewer unnecessary arrays by the spread operator
if (isRegistry(value)) {
value.register(this);
} else {
this.register(value);
}
}
}
}
}
public registerResolver(key: any, resolver: IResolver): IResolver {
validateKey(key);
const resolvers = this.resolvers;
const result = resolvers.get(key);
if (result === undefined) {
resolvers.set(key, resolver);
} else if (result instanceof Resolver && (result as Resolver).strategy === ResolverStrategy.array) {
(result as Resolver).state.push(resolver);
} else {
resolvers.set(key, new Resolver(key, ResolverStrategy.array, [result, resolver]));
}
return resolver;
}
public registerTransformer(key: any, transformer: (instance: any) => any): boolean {
const resolver = this.getResolver(key);
if (resolver === null) {
return false;
}
if (resolver.getFactory) {
const handler = resolver.getFactory(this);
if (handler === null) {
return false;
}
return handler.registerTransformer(transformer);
}
return false;
}
public getResolver(key: any, autoRegister = true): IResolver | null {
validateKey(key);
if (key.resolve) {
return key;
}
let current: Container = this;
while (current !== null) {
const resolver = current.resolvers.get(key);
if (resolver === undefined) {
if (current.parent === null) {
return autoRegister ? this.jitRegister(key, current) : null;
}
current = current.parent;
} else {
return resolver;
}
}
return null;
}
public has(key: any, searchAncestors: boolean = false): boolean {
return this.resolvers.has(key)
? true
: searchAncestors && this.parent !== null
? this.parent.has(key, true)
: false;
}
public get(key: any): any {
validateKey(key);
if (key.resolve) {
return key.resolve(this, this);
}
let current: Container = this;
while (current !== null) {
const resolver = current.resolvers.get(key);
if (resolver === undefined) {
if (current.parent === null) {
return this.jitRegister(key, current).resolve(current, this);
}
current = current.parent;
} else {
return resolver.resolve(current, this);
}
}
}
public getAll(key: any): ReadonlyArray<any> {
validateKey(key);
let current: Container | null = this;
while (current !== null) {
const resolver = current.resolvers.get(key);
if (resolver === undefined) {
if (this.parent === null) {
return PLATFORM.emptyArray;
}
current = current.parent;
} else {
return buildAllResponse(resolver, current, this);
}
}
return PLATFORM.emptyArray;
}
public getFactory(type: Function): IFactory {
let factory = this.factories.get(type);
if (factory === undefined) {
factory = Factory.create(type);
this.factories.set(type, factory);
}
return factory;
}
public createChild(): IContainer {
const child = new Container(this.configuration);
child.parent = this;
return child;
}
private jitRegister(keyAsValue: any, handler: Container): IResolver {
if (keyAsValue.register) {
return keyAsValue.register(handler, keyAsValue) || null;
}
const resolver = new Resolver(keyAsValue, ResolverStrategy.singleton, keyAsValue);
handler.resolvers.set(keyAsValue, resolver);
return resolver;
}
}
export const Registration = {
instance(key: any, value: any): IRegistration {
return new Resolver(key, ResolverStrategy.instance, value);
},
singleton(key: any, value: Function): IRegistration {
return new Resolver(key, ResolverStrategy.singleton, value);
},
transient(key: any, value: Function): IRegistration {
return new Resolver(key, ResolverStrategy.transient, value);
},
callback(key: any, callback: ResolveCallback): IRegistration {
return new Resolver(key, ResolverStrategy.callback, callback);
},
alias(originalKey: any, aliasKey: any): IRegistration {
return new Resolver(aliasKey, ResolverStrategy.alias, originalKey);
},
interpret(interpreterKey: any, ...rest: any[]): IRegistry {
return {
register(container: IContainer): void {
const resolver = container.getResolver<IRegistry>(interpreterKey);
if (resolver !== null) {
let registry: IRegistry | null = null;
if (resolver.getFactory) {
const factory = resolver.getFactory(container);
if (factory !== null) {
registry = factory.construct(container, rest);
}
} else {
registry = resolver.resolve(container, container);
}
if (registry !== null) {
registry.register(container);
}
}
}
};
}
};
/*@internal*/
export function validateKey(key: any): void {
// note: design:paramTypes which will default to Object if the param types cannot be statically analyzed by tsc
// this check is intended to properly report on that problem - under no circumstance should Object be a valid key anyway
if (key === null || key === undefined || key === Object) {
throw Reporter.error(5);
}
}
function buildAllResponse(resolver: IResolver, handler: IContainer, requestor: IContainer): any[] {
if (resolver instanceof Resolver && resolver.strategy === ResolverStrategy.array) {
const state = resolver.state;
let i = state.length;
const results = new Array(i);
while (i--) {
results[i] = state[i].get(handler, requestor);
}
return results;
}
return [resolver.resolve(handler, requestor)];
}
/*@internal*/
export const classInvokers: IInvoker[] = [
{
invoke<T extends Constructable<K>, K>(container: IContainer, Type: T): K {
return new Type();
},
invokeWithDynamicDependencies
},
{
invoke<T extends Constructable<K>, K>(container: IContainer, Type: T, deps: any[]): K {
return new Type(container.get(deps[0]));
},
invokeWithDynamicDependencies
},
{
invoke<T extends Constructable<K>, K>(container: IContainer, Type: T, deps: any[]): K {
return new Type(container.get(deps[0]), container.get(deps[1]));
},
invokeWithDynamicDependencies
},
{
invoke<T extends Constructable<K>, K>(container: IContainer, Type: T, deps: any[]): K {
return new Type(container.get(deps[0]), container.get(deps[1]), container.get(deps[2]));
},
invokeWithDynamicDependencies
},
{
invoke<T extends Constructable<K>, K>(container: IContainer, Type: T, deps: any[]): K {
return new Type(
container.get(deps[0]),
container.get(deps[1]),
container.get(deps[2]),
container.get(deps[3])
);
},
invokeWithDynamicDependencies
},
{
invoke<T extends Constructable<K>, K>(container: IContainer, Type: T, deps: any[]): K {
return new Type(
container.get(deps[0]),
container.get(deps[1]),
container.get(deps[2]),
container.get(deps[3]),
container.get(deps[4])
);
},
invokeWithDynamicDependencies
}
];
/*@internal*/
export const fallbackInvoker: IInvoker = {
invoke: invokeWithDynamicDependencies as any,
invokeWithDynamicDependencies
};
/*@internal*/
export function invokeWithDynamicDependencies<T extends Constructable<K>, K>(
container: IContainer,
Type: T,
staticDependencies: any[],
dynamicDependencies: any[]
): K {
let i = staticDependencies.length;
let args = new Array(i);
let lookup;
while (i--) {
lookup = staticDependencies[i];
if (lookup === null || lookup === undefined) {
throw Reporter.error(7, `Index ${i}.`);
} else {
args[i] = container.get(lookup);
}
}
if (dynamicDependencies !== undefined) {
args = args.concat(dynamicDependencies);
}
return Reflect.construct(Type, args);
}
export * from './di';
export * from './interfaces';
export * from './platform';
export * from './reporter';
export interface ICallable {
call(...args: any[]): any;
}
export interface IDisposable {
dispose(): void;
}
export type Constructable<T = {}> = {
// tslint:disable-next-line:no-any
new(...args: any[]): T;
};
export type Decoratable<TOptional, TRequired> = Function & {
readonly prototype: Partial<TOptional> & Required<TRequired>;
// tslint:disable-next-line:no-any
new(...args: any[]): Partial<TOptional> & Required<TRequired>;
};
export type Decorated<TOptional, TRequired> = Function & {
readonly prototype: Required<TOptional> & Required<TRequired>;
// tslint:disable-next-line:no-any
new(...args: any[]): any;
};
export type Injectable<T = {}> = Constructable<T> & { inject?: any[] };
export type IIndexable<T extends object = object> = T & { [key: string]: any };
export type ImmutableObject<T> =
T extends [infer A] ? Immutable<[A]> :
T extends [infer A, infer B] ? Immutable<[A, B]> :
T extends [infer A, infer B, infer C] ? Immutable<[A, B, C]> :
T extends [infer A, infer B, infer C, infer D] ? Immutable<[A, B, C, D]> :
T extends [infer A, infer B, infer C, infer D, infer E] ? Immutable<[A, B, C, D, E]> :
T extends [infer A, infer B, infer C, infer D, infer E, infer F] ? Immutable<[A, B, C, D, E, F]> :
T extends [infer A, infer B, infer C, infer D, infer E, infer F, infer G] ? Immutable<[A, B, C, D, E, F, G]> :
T extends (infer A)[] ? ImmutableArray<A> :
T extends Function ? T : // can change to never to forbid functions
T extends Map<infer U, infer V> ? ReadonlyMap<Immutable<U>, Immutable<V>> :
T extends Set<infer U> ? ReadonlySet<Immutable<U>> :
T extends Record<string, infer V> ? Record<string, Immutable<V>> :
T extends object ? Immutable<T> :
T;
export interface ImmutableArray<T> extends ReadonlyArray<ImmutableObject<T>> {}
export type Immutable<T> = { readonly [P in keyof T]: ImmutableObject<T[P]> };
export type Writable<T> = {
-readonly [K in keyof T]: T[K]
};
export type Omit<T, K extends keyof T> = Pick<T, Exclude<keyof T, K>>;
export type Primitive = undefined | null | number | boolean | symbol | string;
export type Unwrap<T> =
T extends (infer U)[] ? U :
T extends (...args: any[]) => infer U ? U :
T extends Promise<infer U> ? U :
T;
const camelCaseLookup = {};
const kebabCaseLookup = {};
export const PLATFORM = {
// tslint:disable-next-line:no-any
global: (function(): any {
// Workers don’t have `window`, only `self`
// tslint:disable-next-line:no-typeof-undefined
if (typeof self !== 'undefined') {
return self;
}
// tslint:disable-next-line:no-typeof-undefined
if (typeof global !== 'undefined') {
return global;
}
// Not all environments allow eval and Function
// Use only as a last resort:
// tslint:disable-next-line:no-function-constructor-with-string-args
return new Function('return this')();
})(),
emptyArray: Object.freeze([]),
emptyObject: Object.freeze({}),
/* tslint:disable-next-line:no-empty */
noop(): void { },
now(): number {
return performance.now();
},
camelCase(input: string): string {
// benchmark: http://jsben.ch/qIz4Z
let value = camelCaseLookup[input];
if (value !== undefined) return value;
value = '';
let first = true;
let sep = false;
let char: string;
for (let i = 0, ii = input.length; i < ii; ++i) {
char = input.charAt(i);
if (char === '-' || char === '.' || char === '_') {
sep = true; // skip separators
} else {
value = value + (first ? char.toLowerCase() : (sep ? char.toUpperCase() : char));
sep = false;
}
first = false;
}
return camelCaseLookup[input] = value;
},
kebabCase(input: string): string {
// benchmark: http://jsben.ch/v7K9T
let value = kebabCaseLookup[input];
if (value !== undefined) return value;
value = '';
let first = true;
let char: string, lower: string;
for (let i = 0, ii = input.length; i < ii; ++i) {
char = input.charAt(i);
lower = char.toLowerCase();
value = value + (first ? lower : (char !== lower ? `-${lower}` : lower));
first = false;
}
return kebabCaseLookup[input] = value;
},
// tslint:disable-next-line:no-any
toArray<T = any>(input: ArrayLike<T>): T[] {
// benchmark: http://jsben.ch/xjsyF
const len = input.length;
const arr = Array(len);
for (let i = 0; i < len; ++i) {
arr[i] = input[i];
}
return arr;
},
requestAnimationFrame(callback: (time: number) => void): number {
return requestAnimationFrame(callback);
}
};
export const Reporter = {
/* tslint:disable-next-line:no-empty */
write(code: number, ...params: any[]): void { },
error(code: number, ...params: any[]): Error { return new Error(`Code ${code}`); }
};
+90
-5

@@ -6,14 +6,99 @@ # Change Log

<a name="0.3.0"></a>
# 0.3.0 (2018-10-12)
### Features:
* **kernel:** add decoratable interface to support strongly typed decorators ([f67a414](https://github.com/aurelia/aurelia/commit/f67a414))
* **binding:** add @connectable decorator back in (strongly typed) ([f67a414](https://github.com/aurelia/aurelia/commit/f67a414))
* **all:** implement InterpolationBinding ([f67a414](https://github.com/aurelia/aurelia/commit/f67a414))
* **unparser:** implement interpolation unparsing ([f67a414](https://github.com/aurelia/aurelia/commit/f67a414))
* **kernel:** add unwrap interface ([197235c](https://github.com/aurelia/aurelia/commit/197235c))
* **ast:** add visitor interface and implement accept methods on AST ([197235c](https://github.com/aurelia/aurelia/commit/197235c))
* **expression-parser:** allow member expressions on numeric literals ([197235c](https://github.com/aurelia/aurelia/commit/197235c))
* **expression-parser:** map empty attribute value to empty string for bound properties ([7a92cd8](https://github.com/aurelia/aurelia/commit/7a92cd8))
### Bug Fixes:
* **kernel:** fix decorated interface ([f67a414](https://github.com/aurelia/aurelia/commit/f67a414))
* **binding:** wrap updatetarget/updatesource so vCurrent BBs work again ([f67a414](https://github.com/aurelia/aurelia/commit/f67a414))
* **expression-parser:** fix differentation for caching of expressions/interpolations ([f67a414](https://github.com/aurelia/aurelia/commit/f67a414))
* **iterator-binding:** correctly compile and render ForOfStatement ([f67a414](https://github.com/aurelia/aurelia/commit/f67a414))
* **debug:** correct / update unparser and debug mode ([197235c](https://github.com/aurelia/aurelia/commit/197235c))
* **expression-parser:** fix parsing error with trailing elision ([197235c](https://github.com/aurelia/aurelia/commit/197235c))
* **expression-parser:** allow AccessThis as the last element of an array ([197235c](https://github.com/aurelia/aurelia/commit/197235c))
* **expression-parser:** allow AccessThis as the condition in a conditional ([197235c](https://github.com/aurelia/aurelia/commit/197235c))
* **expression-parser:** allow AccessThis as left-hand side of binary expressions ([197235c](https://github.com/aurelia/aurelia/commit/197235c))
* **expression-parser:** reset access after parsing non-identifiers ([197235c](https://github.com/aurelia/aurelia/commit/197235c))
* **unparser:** explicitly reconstruct precedence ([197235c](https://github.com/aurelia/aurelia/commit/197235c))
* **DI:** alias registration param order and tests (#202) ([1683135](https://github.com/aurelia/aurelia/commit/1683135))
* **resources:** ensure null is returned for non-existing resources ([7a92cd8](https://github.com/aurelia/aurelia/commit/7a92cd8))
* **template-compiler:** correct a few edge cases in target and bindingMode resolution ([7a92cd8](https://github.com/aurelia/aurelia/commit/7a92cd8))
* **template-compiler:** correct handling of kebab-cased custom attributes ([7a92cd8](https://github.com/aurelia/aurelia/commit/7a92cd8))
* **repeat.for:** add missing instruction properties ([7a92cd8](https://github.com/aurelia/aurelia/commit/7a92cd8))
### Performance Improvements:
* **expression-parser:** remove unreachable branch ([f67a414](https://github.com/aurelia/aurelia/commit/f67a414))
* **expression-parser:** use explicit numeric comparisons for bitwise operators ([197235c](https://github.com/aurelia/aurelia/commit/197235c))
* **template-compiler:** index the inspect/resolve buffers directly instead of destructuring ([7a92cd8](https://github.com/aurelia/aurelia/commit/7a92cd8))
### Refactorings:
* **binding:** cleanup/shuffle some interfaces accordingly ([f67a414](https://github.com/aurelia/aurelia/commit/f67a414))
* **template-compiler:** cleanup/inline instruction classes ([f67a414](https://github.com/aurelia/aurelia/commit/f67a414))
* **binding-command:** reuse specific binding command prototype methods on the default binding command ([7a92cd8](https://github.com/aurelia/aurelia/commit/7a92cd8))
* **template-compiler:** destructure with reused object ([7a92cd8](https://github.com/aurelia/aurelia/commit/7a92cd8))
<a name="0.2.0"></a>
# 0.2.0 (2018-09-18)
### Features:
### Bug Fixes
* **di:** recurse through static registrations to find register methods in more edge cases ([6bc2d4d](https://github.com/aurelia/aurelia/commit/6bc2d4d))
* **kernel:** add fast camelCase and kebabCase functions with caching ([8debe4f](https://github.com/aurelia/aurelia/commit/8debe4f))
* **observers:** auto-enable collection observers and make the toggles idempotent ([d6a10b5](https://github.com/aurelia/aurelia/commit/d6a10b5))
* **runtime:** convert with attribute to use render location (#64) ([5830a36](https://github.com/aurelia/aurelia/commit/5830a36))
* **runtime:** convert with attribute to use render location ([5830a36](https://github.com/aurelia/aurelia/commit/5830a36))
* **runtime:** improvements to attribute and element bindable control and common interfaces ([5830a36](https://github.com/aurelia/aurelia/commit/5830a36))
* **binding:** implement ChangeSet (#58) ([144b1c6](https://github.com/aurelia/aurelia/commit/144b1c6))
* **binding:** implement ChangeSet ([144b1c6](https://github.com/aurelia/aurelia/commit/144b1c6))
* **di:** convert invokers to an array ([#106](https://github.com/aurelia/aurelia/issues/106)) ([9236dec](https://github.com/aurelia/aurelia/commit/9236dec))
### Bug Fixes:
### Features
* **di:** invoke correct method on array strategy resolver ([6bc2d4d](https://github.com/aurelia/aurelia/commit/6bc2d4d))
* **di:** invalidate Object keys to help diagnose invalid design:paramTypes ([6bc2d4d](https://github.com/aurelia/aurelia/commit/6bc2d4d))
* **di:** add a non-any type alternative to the InterfaceSymbol<T> so that container.get() returns correctly typed instances ([6bc2d4d](https://github.com/aurelia/aurelia/commit/6bc2d4d))
* **examples:** correct versions ([1b7c764](https://github.com/aurelia/aurelia/commit/1b7c764))
* **tsconfig:** correct extends path ([797674f](https://github.com/aurelia/aurelia/commit/797674f))
* **di:** convert invokers to an array (#106) ([9236dec](https://github.com/aurelia/aurelia/commit/9236dec))
* **jit-parcel:** remove else for now, fix instructions ([d6a10b5](https://github.com/aurelia/aurelia/commit/d6a10b5))
* **template-compiler:** wrap the nodes in a fragment ([d6a10b5](https://github.com/aurelia/aurelia/commit/d6a10b5))
* **jit-parcel:** remove path mappings from tsconfig ([d6a10b5](https://github.com/aurelia/aurelia/commit/d6a10b5))
* **template-compiler:** use firstElementChild instead of wrapper ([d6a10b5](https://github.com/aurelia/aurelia/commit/d6a10b5))
* **template-compiler:** various small tweaks and fixes, make example work ([d6a10b5](https://github.com/aurelia/aurelia/commit/d6a10b5))
* **jit-parcel:** make the example work with something simple ([d6a10b5](https://github.com/aurelia/aurelia/commit/d6a10b5))
* **aurelia:** set isStarted=true after tasks have finished ([d6a10b5](https://github.com/aurelia/aurelia/commit/d6a10b5))
* **e2e:** move publish into e2e job ([d6a10b5](https://github.com/aurelia/aurelia/commit/d6a10b5))
* **ci:** fix typo ([d6a10b5](https://github.com/aurelia/aurelia/commit/d6a10b5))
* **ci:** set the correct path before each cmd ([d6a10b5](https://github.com/aurelia/aurelia/commit/d6a10b5))
* **ci:** try a different approach for the workspaces ([d6a10b5](https://github.com/aurelia/aurelia/commit/d6a10b5))
* **runtime:** correct observer current value update and callback ordering ([5830a36](https://github.com/aurelia/aurelia/commit/5830a36))
* **runtime:** ensure all bindable callback slots are initialized ([5830a36](https://github.com/aurelia/aurelia/commit/5830a36))
* **runtime-behavior:** remove use of Toggle in favor of simple boolean ([5830a36](https://github.com/aurelia/aurelia/commit/5830a36))
* **observation:** fix subscriber typing ([144b1c6](https://github.com/aurelia/aurelia/commit/144b1c6))
* **kernel:** scripts working ([9302580](https://github.com/aurelia/aurelia/commit/9302580))
* **all:** lots of path fixes and a few typing fixes, make sure everything builds correctly ([9302580](https://github.com/aurelia/aurelia/commit/9302580))
* **test:** make all the tests run via lerna ([9302580](https://github.com/aurelia/aurelia/commit/9302580))
* **binding:** implement ChangeSet ([#58](https://github.com/aurelia/aurelia/issues/58)) ([144b1c6](https://github.com/aurelia/aurelia/commit/144b1c6))
* **runtime:** convert with attribute to use render location ([#64](https://github.com/aurelia/aurelia/issues/64)) ([5830a36](https://github.com/aurelia/aurelia/commit/5830a36))
### Refactorings:
* **di:** append new resolvers on existing keys to a single array strategy resolver instead of nesting them ([6bc2d4d](https://github.com/aurelia/aurelia/commit/6bc2d4d))
* **bindable:** use platform.kebabCase ([8debe4f](https://github.com/aurelia/aurelia/commit/8debe4f))
* **binding:** use ChangeSet instead of TaskQueue ([144b1c6](https://github.com/aurelia/aurelia/commit/144b1c6))
* **property-observer:** make reusable decorator for setter/observer ([144b1c6](https://github.com/aurelia/aurelia/commit/144b1c6))
+1
-1

@@ -1,1 +0,1 @@

{"version":3,"file":"di.d.ts","sourceRoot":"","sources":["../src/di.ts"],"names":[],"mappings":"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"}
{"version":3,"file":"di.d.ts","sourceRoot":"","sources":["../src/di.ts"],"names":[],"mappings":"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"}
const camelCaseLookup = {};
const kebabCaseLookup = {};
const PLATFORM = {
// tslint:disable-next-line:no-any
global: (function () {
// Workers don’t have `window`, only `self`
// tslint:disable-next-line:no-typeof-undefined
if (typeof self !== 'undefined') {
return self;
}
// tslint:disable-next-line:no-typeof-undefined
if (typeof global !== 'undefined') {

@@ -14,2 +17,3 @@ return global;

// Use only as a last resort:
// tslint:disable-next-line:no-function-constructor-with-string-args
return new Function('return this')();

@@ -62,2 +66,3 @@ })(),

},
// tslint:disable-next-line:no-any
toArray(input) {

@@ -74,34 +79,2 @@ // benchmark: http://jsben.ch/xjsyF

return requestAnimationFrame(callback);
},
createTaskFlushRequester(onFlush) {
return function requestFlush() {
// We dispatch a timeout with a specified delay of 0 for engines that
// can reliably accommodate that request. This will usually be snapped
// to a 4 millisecond delay, but once we're flushing, there's no delay
// between events.
const timeoutHandle = setTimeout(handleFlushTimer, 0);
// However, since this timer gets frequently dropped in Firefox
// workers, we enlist an interval handle that will try to fire
// an event 20 times per second until it succeeds.
const intervalHandle = setInterval(handleFlushTimer, 50);
function handleFlushTimer() {
// Whichever timer succeeds will cancel both timers and request the
// flush.
clearTimeout(timeoutHandle);
clearInterval(intervalHandle);
onFlush();
}
};
},
createMicroTaskFlushRequestor(onFlush) {
const observer = new MutationObserver(onFlush);
const node = document.createTextNode('');
const values = Object.create(null);
let val = 'a';
values.a = 'b';
values.b = 'a';
observer.observe(node, { characterData: true });
return function requestFlush() {
node.data = val = values[val];
};
}

@@ -165,17 +138,18 @@ };

Key.register = function (container, key) {
const trueKey = key || Key;
return configure({
instance(value) {
return container.registerResolver(Key, new Resolver(key || Key, 0 /* instance */, value));
return container.registerResolver(trueKey, new Resolver(trueKey, 0 /* instance */, value));
},
singleton(value) {
return container.registerResolver(Key, new Resolver(key || Key, 1 /* singleton */, value));
return container.registerResolver(trueKey, new Resolver(trueKey, 1 /* singleton */, value));
},
transient(value) {
return container.registerResolver(Key, new Resolver(key || Key, 2 /* transient */, value));
return container.registerResolver(trueKey, new Resolver(trueKey, 2 /* transient */, value));
},
callback(value) {
return container.registerResolver(Key, new Resolver(key || Key, 3 /* callback */, value));
return container.registerResolver(trueKey, new Resolver(trueKey, 3 /* callback */, value));
},
aliasTo(destinationKey) {
return container.registerResolver(destinationKey, new Resolver(key || Key, 5 /* alias */, Key));
return container.registerResolver(trueKey, new Resolver(trueKey, 5 /* alias */, destinationKey));
},

@@ -397,3 +371,2 @@ });

}
/* tslint:disable-next-line:no-this-assignment */
let current = this;

@@ -426,3 +399,2 @@ while (current !== null) {

}
/* tslint:disable-next-line:no-this-assignment */
let current = this;

@@ -444,3 +416,2 @@ while (current !== null) {

validateKey(key);
/* tslint:disable-next-line:no-this-assignment */
let current = this;

@@ -476,3 +447,3 @@ while (current !== null) {

if (keyAsValue.register) {
return keyAsValue.register(handler, keyAsValue);
return keyAsValue.register(handler, keyAsValue) || null;
}

@@ -479,0 +450,0 @@ const resolver = new Resolver(keyAsValue, 1 /* singleton */, keyAsValue);

@@ -1,1 +0,1 @@

{"version":3,"file":"index.es6.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
{"version":3,"file":"index.es6.js","sources":["../src/platform.ts","../src/reporter.ts","../src/di.ts"],"sourcesContent":["const camelCaseLookup = {};\nconst kebabCaseLookup = {};\n\nexport const PLATFORM = {\n // tslint:disable-next-line:no-any\n global: (function(): any {\n // Workers don’t have `window`, only `self`\n // tslint:disable-next-line:no-typeof-undefined\n if (typeof self !== 'undefined') {\n return self;\n }\n\n // tslint:disable-next-line:no-typeof-undefined\n if (typeof global !== 'undefined') {\n return global;\n }\n\n // Not all environments allow eval and Function\n // Use only as a last resort:\n // tslint:disable-next-line:no-function-constructor-with-string-args\n return new Function('return this')();\n })(),\n emptyArray: Object.freeze([]),\n emptyObject: Object.freeze({}),\n /* tslint:disable-next-line:no-empty */\n noop(): void { },\n now(): number {\n return performance.now();\n },\n\n camelCase(input: string): string {\n // benchmark: http://jsben.ch/qIz4Z\n let value = camelCaseLookup[input];\n if (value !== undefined) return value;\n value = '';\n let first = true;\n let sep = false;\n let char: string;\n for (let i = 0, ii = input.length; i < ii; ++i) {\n char = input.charAt(i);\n if (char === '-' || char === '.' || char === '_') {\n sep = true; // skip separators\n } else {\n value = value + (first ? char.toLowerCase() : (sep ? char.toUpperCase() : char));\n sep = false;\n }\n first = false;\n }\n return camelCaseLookup[input] = value;\n },\n\n kebabCase(input: string): string {\n // benchmark: http://jsben.ch/v7K9T\n let value = kebabCaseLookup[input];\n if (value !== undefined) return value;\n value = '';\n let first = true;\n let char: string, lower: string;\n for (let i = 0, ii = input.length; i < ii; ++i) {\n char = input.charAt(i);\n lower = char.toLowerCase();\n value = value + (first ? lower : (char !== lower ? `-${lower}` : lower));\n first = false;\n }\n return kebabCaseLookup[input] = value;\n },\n\n // tslint:disable-next-line:no-any\n toArray<T = any>(input: ArrayLike<T>): T[] {\n // benchmark: http://jsben.ch/xjsyF\n const len = input.length;\n const arr = Array(len);\n for (let i = 0; i < len; ++i) {\n arr[i] = input[i];\n }\n return arr;\n },\n\n requestAnimationFrame(callback: (time: number) => void): number {\n return requestAnimationFrame(callback);\n }\n};\n","export const Reporter = {\n /* tslint:disable-next-line:no-empty */\n write(code: number, ...params: any[]): void { },\n error(code: number, ...params: any[]): Error { return new Error(`Code ${code}`); }\n};\n","// tslint:disable:no-reserved-keywords\nimport { Constructable, IIndexable, Injectable, Primitive } from './interfaces';\nimport { PLATFORM } from './platform';\nimport { Reporter } from './reporter';\n\nexport type ResolveCallback<T = any> = (handler?: IContainer, requestor?: IContainer, resolver?: IResolver) => T;\n\nexport type Key<T> = InterfaceSymbol<T> | Primitive | IIndexable | Function;\n\nexport type InterfaceSymbol<T> = (target: Injectable, property: string, index: number) => any;\n\nexport interface IDefaultableInterfaceSymbol<T> extends InterfaceSymbol<T> {\n withDefault(configure: (builder: IResolverBuilder<T>) => IResolver): InterfaceSymbol<T>;\n noDefault(): InterfaceSymbol<T>;\n}\n\nexport interface IResolver<T = any> {\n resolve(handler: IContainer, requestor: IContainer): T;\n getFactory?(container: IContainer): IFactory<T> | null;\n}\n\nexport interface IRegistration<T = any> {\n register(container: IContainer, key?: Key<T>): IResolver<T>;\n}\n\nexport interface IFactory<T = any> {\n readonly type: Function;\n registerTransformer(transformer: (instance: T) => T): boolean;\n construct(container: IContainer, dynamicDependencies?: any[]): T;\n}\n\nexport interface IServiceLocator {\n has(key: any, searchAncestors: boolean): boolean;\n\n get<T>(key: Key<T>): T;\n get<T extends Constructable>(key: T): InstanceType<T>;\n\n getAll<T>(key: Key<T>): ReadonlyArray<T>;\n getAll<T extends Constructable>(key: T): ReadonlyArray<InstanceType<T>>;\n}\n\nexport interface IRegistry {\n register(container: IContainer): void;\n}\n\nexport interface IContainer extends IServiceLocator {\n register(...params: (IRegistry | Record<string, Partial<IRegistry>>)[]): void;\n register(registry: IRegistry | Record<string, Partial<IRegistry>>): void;\n\n registerResolver<T>(key: Key<T>, resolver: IResolver<T>): IResolver<T>;\n registerResolver<T extends Constructable>(key: T, resolver: IResolver<InstanceType<T>>): IResolver<InstanceType<T>>;\n\n registerTransformer<T>(key: Key<T>, transformer: (instance: T) => T): boolean;\n registerTransformer<T extends Constructable>(key: T, transformer: (instance: InstanceType<T>) => T): boolean;\n\n getResolver<T>(key: Key<T>, autoRegister?: boolean): IResolver<T> | null;\n getResolver<T extends Constructable>(key: T, autoRegister?: boolean): IResolver<InstanceType<T>> | null;\n\n getFactory<T extends Constructable>(type: T): IFactory<InstanceType<T>>;\n\n createChild(): IContainer;\n}\n\nexport interface IResolverBuilder<T> {\n instance(value: T & IIndexable): IResolver;\n singleton(value: Constructable<T>): IResolver;\n transient(value: Constructable<T>): IResolver;\n callback(value: ResolveCallback<T>): IResolver;\n aliasTo(destinationKey: Key<T>): IResolver;\n}\n\nif (!('getOwnMetadata' in Reflect)) {\n (Reflect as any).getOwnMetadata = function(key: string, target: any): any {\n return target[key];\n };\n\n (Reflect as any).metadata = function(key: string, value: any): (target: any) => void {\n return function(target: any): void {\n target[key] = value;\n };\n };\n}\n\nexport const DI = {\n createContainer(): IContainer {\n return new Container();\n },\n\n getDesignParamTypes(target: any): any[] {\n return (Reflect as any).getOwnMetadata('design:paramtypes', target) || PLATFORM.emptyArray;\n },\n\n getDependencies(type: Function & { inject?: any }): any[] {\n let dependencies: any[];\n\n if (type.inject === undefined) {\n dependencies = DI.getDesignParamTypes(type);\n } else {\n dependencies = [];\n let ctor = type;\n\n while (typeof ctor === 'function') {\n if (ctor.hasOwnProperty('inject')) {\n dependencies.push(...ctor.inject);\n }\n\n ctor = Object.getPrototypeOf(ctor);\n }\n }\n\n return dependencies;\n },\n\n createInterface<T = any>(friendlyName?: string): IDefaultableInterfaceSymbol<T> {\n const Key: any = function(target: Injectable, property: string, index: number): any {\n const inject = target.inject || (target.inject = []);\n (Key as any).friendlyName = friendlyName || 'Interface';\n inject[index] = Key;\n return target;\n };\n\n Key.noDefault = function(): InterfaceSymbol<T> {\n return Key;\n };\n\n Key.withDefault = function(configure: (builder: IResolverBuilder<T>) => IResolver): InterfaceSymbol<T> {\n Key.withDefault = function(): void {\n throw Reporter.error(17, Key);\n };\n\n Key.register = function(container: IContainer, key?: Key<T>): IResolver<T> {\n const trueKey = key || Key;\n return configure({\n instance(value: T): IResolver {\n return container.registerResolver(trueKey, new Resolver(trueKey, ResolverStrategy.instance, value));\n },\n singleton(value: Function): IResolver {\n return container.registerResolver(trueKey, new Resolver(trueKey, ResolverStrategy.singleton, value));\n },\n transient(value: Function): IResolver {\n return container.registerResolver(trueKey, new Resolver(trueKey, ResolverStrategy.transient, value));\n },\n callback(value: ResolveCallback): IResolver {\n return container.registerResolver(trueKey, new Resolver(trueKey, ResolverStrategy.callback, value));\n },\n aliasTo(destinationKey: T): IResolver {\n return container.registerResolver(trueKey, new Resolver(trueKey, ResolverStrategy.alias, destinationKey));\n },\n });\n };\n\n return Key;\n };\n\n return Key;\n },\n\n inject(...dependencies: any[]): (target: any, property?: string, descriptor?: PropertyDescriptor | number) => any {\n return function(target: any, key?, descriptor?) {\n if (typeof descriptor === 'number') { // It's a parameter decorator.\n if (!target.hasOwnProperty('inject')) {\n target.inject = DI.getDesignParamTypes(target).slice();\n }\n\n if (dependencies.length === 1) {\n target.inject[descriptor] = dependencies[0];\n }\n } else if (key) { // It's a property decorator. Not supported by the container without plugins.\n const actualTarget = target.constructor;\n const inject = actualTarget.inject || (actualTarget.inject = {});\n inject[key] = dependencies[0];\n } else if (descriptor) { // It's a function decorator (not a Class constructor)\n const fn = descriptor.value;\n fn.inject = dependencies;\n } else { // It's a class decorator.\n if (!dependencies || dependencies.length === 0) {\n target.inject = DI.getDesignParamTypes(target).slice();\n } else {\n target.inject = dependencies;\n }\n }\n };\n }\n};\n\nexport const IContainer = DI.createInterface<IContainer>().noDefault();\nexport const IServiceLocator = IContainer as InterfaceSymbol<IServiceLocator>;\n\nfunction createResolver(\n getter: (key: any, handler: IContainer, requestor: IContainer) => any\n): (key: any) => ReturnType<typeof DI.inject> {\n return function(key: any): ReturnType<typeof DI.inject> {\n const Key = function Key(target: Injectable, property?: string, descriptor?: PropertyDescriptor | number): void {\n return DI.inject(Key)(target, property, descriptor);\n };\n\n (Key as any).resolve = function(handler: IContainer, requestor: IContainer): any {\n return getter(key, handler, requestor);\n };\n\n return Key;\n };\n}\n\nexport const inject = DI.inject;\n\nexport const all = createResolver((key: any, handler: IContainer, requestor: IContainer) => requestor.getAll(key));\n\nexport const lazy = createResolver((key: any, handler: IContainer, requestor: IContainer) => {\n let instance: any = null; // cache locally so that lazy always returns the same instance once resolved\n return () => {\n if (instance === null) {\n instance = requestor.get(key);\n }\n\n return instance;\n };\n});\n\nexport const optional = createResolver((key: any, handler: IContainer, requestor: IContainer) => {\n if (requestor.has(key, true)) {\n return requestor.get(key);\n } else {\n return null;\n }\n});\n\n/*@internal*/\nexport const enum ResolverStrategy {\n instance = 0,\n singleton = 1,\n transient = 2,\n callback = 3,\n array = 4,\n alias = 5\n}\n\n/*@internal*/\nexport class Resolver implements IResolver, IRegistration {\n constructor(public key: any, public strategy: ResolverStrategy, public state: any) {}\n\n public register(container: IContainer, key?: any): IResolver {\n return container.registerResolver(key || this.key, this);\n }\n\n public resolve(handler: IContainer, requestor: IContainer): any {\n switch (this.strategy) {\n case ResolverStrategy.instance:\n return this.state;\n case ResolverStrategy.singleton:\n this.strategy = ResolverStrategy.instance;\n return this.state = handler.getFactory(this.state).construct(handler);\n case ResolverStrategy.transient:\n // Always create transients from the requesting container\n return handler.getFactory(this.state).construct(requestor);\n case ResolverStrategy.callback:\n return (this.state as ResolveCallback)(handler, requestor, this);\n case ResolverStrategy.array:\n return this.state[0].resolve(handler, requestor);\n case ResolverStrategy.alias:\n return handler.get(this.state);\n default:\n throw Reporter.error(6, this.strategy);\n }\n }\n\n public getFactory(container: IContainer): IFactory | null {\n switch (this.strategy) {\n case ResolverStrategy.singleton:\n case ResolverStrategy.transient:\n return container.getFactory(this.state);\n default:\n return null;\n }\n }\n}\n\n/*@internal*/\nexport interface IInvoker {\n invoke(container: IContainer, fn: Function, dependencies: any[]): any;\n invokeWithDynamicDependencies(\n container: IContainer,\n fn: Function,\n staticDependencies: any[],\n dynamicDependencies: any[]\n ): any;\n}\n\n/*@internal*/\nexport class Factory implements IFactory {\n private transformers: ((instance: any) => any)[] | null = null;\n\n constructor(public type: Function, private invoker: IInvoker, private dependencies: any[]) { }\n\n public static create(type: Function): IFactory {\n const dependencies = DI.getDependencies(type);\n const invoker = classInvokers[dependencies.length] || fallbackInvoker;\n return new Factory(type, invoker, dependencies);\n }\n\n public construct(container: IContainer, dynamicDependencies?: any[]): any {\n const transformers = this.transformers;\n let instance = dynamicDependencies !== undefined\n ? this.invoker.invokeWithDynamicDependencies(container, this.type, this.dependencies, dynamicDependencies)\n : this.invoker.invoke(container, this.type, this.dependencies);\n\n if (transformers === null) {\n return instance;\n }\n\n for (let i = 0, ii = transformers.length; i < ii; ++i) {\n instance = transformers[i](instance);\n }\n\n return instance;\n }\n\n public registerTransformer(transformer: (instance: any) => any): boolean {\n if (this.transformers === null) {\n this.transformers = [];\n }\n\n this.transformers.push(transformer);\n return true;\n }\n}\n\n/*@internal*/\nexport interface IContainerConfiguration {\n factories?: Map<Function, IFactory>;\n}\n\nconst containerResolver: IResolver = {\n resolve(handler: IContainer, requestor: IContainer): IContainer {\n return requestor;\n }\n};\n\nfunction isRegistry(obj: IRegistry | Record<string, IRegistry>): obj is IRegistry {\n return typeof obj.register === 'function';\n}\n\n/*@internal*/\nexport class Container implements IContainer {\n private parent: Container | null = null;\n private resolvers: Map<any, IResolver> = new Map<any, IResolver>();\n private factories: Map<Function, IFactory>;\n private configuration: IContainerConfiguration;\n\n constructor(configuration: IContainerConfiguration = {}) {\n this.configuration = configuration;\n this.factories = configuration.factories || (configuration.factories = new Map());\n this.resolvers.set(IContainer, containerResolver);\n }\n\n public register(registry: (IRegistry | Record<string, Partial<IRegistry>>)): void;\n public register(...params: (IRegistry | Record<string, Partial<IRegistry>>)[]): void {\n for (let i = 0, ii = params.length; i < ii; ++i) {\n const current = params[i] as IRegistry | Record<string, IRegistry>;\n if (isRegistry(current)) {\n current.register(this);\n } else {\n const keys = Object.keys(current);\n for (let j = 0, jj = keys.length; j < jj; ++j) {\n const value = current[keys[j]];\n // note: we could remove this if-branch and call this.register directly\n // - the extra check is just a perf tweak to create fewer unnecessary arrays by the spread operator\n if (isRegistry(value)) {\n value.register(this);\n } else {\n this.register(value);\n }\n }\n }\n }\n }\n\n public registerResolver(key: any, resolver: IResolver): IResolver {\n validateKey(key);\n\n const resolvers = this.resolvers;\n const result = resolvers.get(key);\n\n if (result === undefined) {\n resolvers.set(key, resolver);\n } else if (result instanceof Resolver && (result as Resolver).strategy === ResolverStrategy.array) {\n (result as Resolver).state.push(resolver);\n } else {\n resolvers.set(key, new Resolver(key, ResolverStrategy.array, [result, resolver]));\n }\n\n return resolver;\n }\n\n public registerTransformer(key: any, transformer: (instance: any) => any): boolean {\n const resolver = this.getResolver(key);\n\n if (resolver === null) {\n return false;\n }\n\n if (resolver.getFactory) {\n const handler = resolver.getFactory(this);\n\n if (handler === null) {\n return false;\n }\n\n return handler.registerTransformer(transformer);\n }\n\n return false;\n }\n\n public getResolver(key: any, autoRegister = true): IResolver | null {\n validateKey(key);\n\n if (key.resolve) {\n return key;\n }\n\n let current: Container = this;\n\n while (current !== null) {\n const resolver = current.resolvers.get(key);\n\n if (resolver === undefined) {\n if (current.parent === null) {\n return autoRegister ? this.jitRegister(key, current) : null;\n }\n\n current = current.parent;\n } else {\n return resolver;\n }\n }\n\n return null;\n }\n\n public has(key: any, searchAncestors: boolean = false): boolean {\n return this.resolvers.has(key)\n ? true\n : searchAncestors && this.parent !== null\n ? this.parent.has(key, true)\n : false;\n }\n\n public get(key: any): any {\n validateKey(key);\n\n if (key.resolve) {\n return key.resolve(this, this);\n }\n\n let current: Container = this;\n\n while (current !== null) {\n const resolver = current.resolvers.get(key);\n\n if (resolver === undefined) {\n if (current.parent === null) {\n return this.jitRegister(key, current).resolve(current, this);\n }\n\n current = current.parent;\n } else {\n return resolver.resolve(current, this);\n }\n }\n }\n\n public getAll(key: any): ReadonlyArray<any> {\n validateKey(key);\n\n let current: Container | null = this;\n\n while (current !== null) {\n const resolver = current.resolvers.get(key);\n\n if (resolver === undefined) {\n if (this.parent === null) {\n return PLATFORM.emptyArray;\n }\n\n current = current.parent;\n } else {\n return buildAllResponse(resolver, current, this);\n }\n }\n\n return PLATFORM.emptyArray;\n }\n\n public getFactory(type: Function): IFactory {\n let factory = this.factories.get(type);\n\n if (factory === undefined) {\n factory = Factory.create(type);\n this.factories.set(type, factory);\n }\n\n return factory;\n }\n\n public createChild(): IContainer {\n const child = new Container(this.configuration);\n child.parent = this;\n return child;\n }\n\n private jitRegister(keyAsValue: any, handler: Container): IResolver {\n if (keyAsValue.register) {\n return keyAsValue.register(handler, keyAsValue) || null;\n }\n\n const resolver = new Resolver(keyAsValue, ResolverStrategy.singleton, keyAsValue);\n handler.resolvers.set(keyAsValue, resolver);\n return resolver;\n }\n}\n\nexport const Registration = {\n instance(key: any, value: any): IRegistration {\n return new Resolver(key, ResolverStrategy.instance, value);\n },\n\n singleton(key: any, value: Function): IRegistration {\n return new Resolver(key, ResolverStrategy.singleton, value);\n },\n\n transient(key: any, value: Function): IRegistration {\n return new Resolver(key, ResolverStrategy.transient, value);\n },\n\n callback(key: any, callback: ResolveCallback): IRegistration {\n return new Resolver(key, ResolverStrategy.callback, callback);\n },\n\n alias(originalKey: any, aliasKey: any): IRegistration {\n return new Resolver(aliasKey, ResolverStrategy.alias, originalKey);\n },\n\n interpret(interpreterKey: any, ...rest: any[]): IRegistry {\n return {\n register(container: IContainer): void {\n const resolver = container.getResolver<IRegistry>(interpreterKey);\n\n if (resolver !== null) {\n let registry: IRegistry | null = null;\n\n if (resolver.getFactory) {\n const factory = resolver.getFactory(container);\n\n if (factory !== null) {\n registry = factory.construct(container, rest);\n }\n } else {\n registry = resolver.resolve(container, container);\n }\n\n if (registry !== null) {\n registry.register(container);\n }\n }\n }\n };\n }\n};\n\n/*@internal*/\nexport function validateKey(key: any): void {\n // note: design:paramTypes which will default to Object if the param types cannot be statically analyzed by tsc\n // this check is intended to properly report on that problem - under no circumstance should Object be a valid key anyway\n if (key === null || key === undefined || key === Object) {\n throw Reporter.error(5);\n }\n}\n\nfunction buildAllResponse(resolver: IResolver, handler: IContainer, requestor: IContainer): any[] {\n if (resolver instanceof Resolver && resolver.strategy === ResolverStrategy.array) {\n const state = resolver.state;\n let i = state.length;\n const results = new Array(i);\n\n while (i--) {\n results[i] = state[i].get(handler, requestor);\n }\n\n return results;\n }\n\n return [resolver.resolve(handler, requestor)];\n}\n\n/*@internal*/\nexport const classInvokers: IInvoker[] = [\n {\n invoke<T extends Constructable<K>, K>(container: IContainer, Type: T): K {\n return new Type();\n },\n invokeWithDynamicDependencies\n },\n {\n invoke<T extends Constructable<K>, K>(container: IContainer, Type: T, deps: any[]): K {\n return new Type(container.get(deps[0]));\n },\n invokeWithDynamicDependencies\n },\n {\n invoke<T extends Constructable<K>, K>(container: IContainer, Type: T, deps: any[]): K {\n return new Type(container.get(deps[0]), container.get(deps[1]));\n },\n invokeWithDynamicDependencies\n },\n {\n invoke<T extends Constructable<K>, K>(container: IContainer, Type: T, deps: any[]): K {\n return new Type(container.get(deps[0]), container.get(deps[1]), container.get(deps[2]));\n },\n invokeWithDynamicDependencies\n },\n {\n invoke<T extends Constructable<K>, K>(container: IContainer, Type: T, deps: any[]): K {\n return new Type(\n container.get(deps[0]),\n container.get(deps[1]),\n container.get(deps[2]),\n container.get(deps[3])\n );\n },\n invokeWithDynamicDependencies\n },\n {\n invoke<T extends Constructable<K>, K>(container: IContainer, Type: T, deps: any[]): K {\n return new Type(\n container.get(deps[0]),\n container.get(deps[1]),\n container.get(deps[2]),\n container.get(deps[3]),\n container.get(deps[4])\n );\n },\n invokeWithDynamicDependencies\n }\n];\n\n/*@internal*/\nexport const fallbackInvoker: IInvoker = {\n invoke: invokeWithDynamicDependencies as any,\n invokeWithDynamicDependencies\n};\n\n/*@internal*/\nexport function invokeWithDynamicDependencies<T extends Constructable<K>, K>(\n container: IContainer,\n Type: T,\n staticDependencies: any[],\n dynamicDependencies: any[]\n): K {\n let i = staticDependencies.length;\n let args = new Array(i);\n let lookup;\n\n while (i--) {\n lookup = staticDependencies[i];\n\n if (lookup === null || lookup === undefined) {\n throw Reporter.error(7, `Index ${i}.`);\n } else {\n args[i] = container.get(lookup);\n }\n }\n\n if (dynamicDependencies !== undefined) {\n args = args.concat(dynamicDependencies);\n }\n\n return Reflect.construct(Type, args);\n}\n"],"names":[],"mappings":"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"}

@@ -10,7 +10,10 @@ (function (global, factory) {

const PLATFORM = {
// tslint:disable-next-line:no-any
global: (function () {
// Workers don’t have `window`, only `self`
// tslint:disable-next-line:no-typeof-undefined
if (typeof self !== 'undefined') {
return self;
}
// tslint:disable-next-line:no-typeof-undefined
if (typeof global !== 'undefined') {

@@ -21,2 +24,3 @@ return global;

// Use only as a last resort:
// tslint:disable-next-line:no-function-constructor-with-string-args
return new Function('return this')();

@@ -69,2 +73,3 @@ })(),

},
// tslint:disable-next-line:no-any
toArray(input) {

@@ -81,34 +86,2 @@ // benchmark: http://jsben.ch/xjsyF

return requestAnimationFrame(callback);
},
createTaskFlushRequester(onFlush) {
return function requestFlush() {
// We dispatch a timeout with a specified delay of 0 for engines that
// can reliably accommodate that request. This will usually be snapped
// to a 4 millisecond delay, but once we're flushing, there's no delay
// between events.
const timeoutHandle = setTimeout(handleFlushTimer, 0);
// However, since this timer gets frequently dropped in Firefox
// workers, we enlist an interval handle that will try to fire
// an event 20 times per second until it succeeds.
const intervalHandle = setInterval(handleFlushTimer, 50);
function handleFlushTimer() {
// Whichever timer succeeds will cancel both timers and request the
// flush.
clearTimeout(timeoutHandle);
clearInterval(intervalHandle);
onFlush();
}
};
},
createMicroTaskFlushRequestor(onFlush) {
const observer = new MutationObserver(onFlush);
const node = document.createTextNode('');
const values = Object.create(null);
let val = 'a';
values.a = 'b';
values.b = 'a';
observer.observe(node, { characterData: true });
return function requestFlush() {
node.data = val = values[val];
};
}

@@ -172,17 +145,18 @@ };

Key.register = function (container, key) {
const trueKey = key || Key;
return configure({
instance(value) {
return container.registerResolver(Key, new Resolver(key || Key, 0 /* instance */, value));
return container.registerResolver(trueKey, new Resolver(trueKey, 0 /* instance */, value));
},
singleton(value) {
return container.registerResolver(Key, new Resolver(key || Key, 1 /* singleton */, value));
return container.registerResolver(trueKey, new Resolver(trueKey, 1 /* singleton */, value));
},
transient(value) {
return container.registerResolver(Key, new Resolver(key || Key, 2 /* transient */, value));
return container.registerResolver(trueKey, new Resolver(trueKey, 2 /* transient */, value));
},
callback(value) {
return container.registerResolver(Key, new Resolver(key || Key, 3 /* callback */, value));
return container.registerResolver(trueKey, new Resolver(trueKey, 3 /* callback */, value));
},
aliasTo(destinationKey) {
return container.registerResolver(destinationKey, new Resolver(key || Key, 5 /* alias */, Key));
return container.registerResolver(trueKey, new Resolver(trueKey, 5 /* alias */, destinationKey));
},

@@ -404,3 +378,2 @@ });

}
/* tslint:disable-next-line:no-this-assignment */
let current = this;

@@ -433,3 +406,2 @@ while (current !== null) {

}
/* tslint:disable-next-line:no-this-assignment */
let current = this;

@@ -451,3 +423,2 @@ while (current !== null) {

validateKey(key);
/* tslint:disable-next-line:no-this-assignment */
let current = this;

@@ -483,3 +454,3 @@ while (current !== null) {

if (keyAsValue.register) {
return keyAsValue.register(handler, keyAsValue);
return keyAsValue.register(handler, keyAsValue) || null;
}

@@ -486,0 +457,0 @@ const resolver = new Resolver(keyAsValue, 1 /* singleton */, keyAsValue);

@@ -1,1 +0,1 @@

{"version":3,"file":"index.umd.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
{"version":3,"file":"index.umd.js","sources":["../src/platform.ts","../src/reporter.ts","../src/di.ts"],"sourcesContent":["const camelCaseLookup = {};\nconst kebabCaseLookup = {};\n\nexport const PLATFORM = {\n // tslint:disable-next-line:no-any\n global: (function(): any {\n // Workers don’t have `window`, only `self`\n // tslint:disable-next-line:no-typeof-undefined\n if (typeof self !== 'undefined') {\n return self;\n }\n\n // tslint:disable-next-line:no-typeof-undefined\n if (typeof global !== 'undefined') {\n return global;\n }\n\n // Not all environments allow eval and Function\n // Use only as a last resort:\n // tslint:disable-next-line:no-function-constructor-with-string-args\n return new Function('return this')();\n })(),\n emptyArray: Object.freeze([]),\n emptyObject: Object.freeze({}),\n /* tslint:disable-next-line:no-empty */\n noop(): void { },\n now(): number {\n return performance.now();\n },\n\n camelCase(input: string): string {\n // benchmark: http://jsben.ch/qIz4Z\n let value = camelCaseLookup[input];\n if (value !== undefined) return value;\n value = '';\n let first = true;\n let sep = false;\n let char: string;\n for (let i = 0, ii = input.length; i < ii; ++i) {\n char = input.charAt(i);\n if (char === '-' || char === '.' || char === '_') {\n sep = true; // skip separators\n } else {\n value = value + (first ? char.toLowerCase() : (sep ? char.toUpperCase() : char));\n sep = false;\n }\n first = false;\n }\n return camelCaseLookup[input] = value;\n },\n\n kebabCase(input: string): string {\n // benchmark: http://jsben.ch/v7K9T\n let value = kebabCaseLookup[input];\n if (value !== undefined) return value;\n value = '';\n let first = true;\n let char: string, lower: string;\n for (let i = 0, ii = input.length; i < ii; ++i) {\n char = input.charAt(i);\n lower = char.toLowerCase();\n value = value + (first ? lower : (char !== lower ? `-${lower}` : lower));\n first = false;\n }\n return kebabCaseLookup[input] = value;\n },\n\n // tslint:disable-next-line:no-any\n toArray<T = any>(input: ArrayLike<T>): T[] {\n // benchmark: http://jsben.ch/xjsyF\n const len = input.length;\n const arr = Array(len);\n for (let i = 0; i < len; ++i) {\n arr[i] = input[i];\n }\n return arr;\n },\n\n requestAnimationFrame(callback: (time: number) => void): number {\n return requestAnimationFrame(callback);\n }\n};\n","export const Reporter = {\n /* tslint:disable-next-line:no-empty */\n write(code: number, ...params: any[]): void { },\n error(code: number, ...params: any[]): Error { return new Error(`Code ${code}`); }\n};\n","// tslint:disable:no-reserved-keywords\nimport { Constructable, IIndexable, Injectable, Primitive } from './interfaces';\nimport { PLATFORM } from './platform';\nimport { Reporter } from './reporter';\n\nexport type ResolveCallback<T = any> = (handler?: IContainer, requestor?: IContainer, resolver?: IResolver) => T;\n\nexport type Key<T> = InterfaceSymbol<T> | Primitive | IIndexable | Function;\n\nexport type InterfaceSymbol<T> = (target: Injectable, property: string, index: number) => any;\n\nexport interface IDefaultableInterfaceSymbol<T> extends InterfaceSymbol<T> {\n withDefault(configure: (builder: IResolverBuilder<T>) => IResolver): InterfaceSymbol<T>;\n noDefault(): InterfaceSymbol<T>;\n}\n\nexport interface IResolver<T = any> {\n resolve(handler: IContainer, requestor: IContainer): T;\n getFactory?(container: IContainer): IFactory<T> | null;\n}\n\nexport interface IRegistration<T = any> {\n register(container: IContainer, key?: Key<T>): IResolver<T>;\n}\n\nexport interface IFactory<T = any> {\n readonly type: Function;\n registerTransformer(transformer: (instance: T) => T): boolean;\n construct(container: IContainer, dynamicDependencies?: any[]): T;\n}\n\nexport interface IServiceLocator {\n has(key: any, searchAncestors: boolean): boolean;\n\n get<T>(key: Key<T>): T;\n get<T extends Constructable>(key: T): InstanceType<T>;\n\n getAll<T>(key: Key<T>): ReadonlyArray<T>;\n getAll<T extends Constructable>(key: T): ReadonlyArray<InstanceType<T>>;\n}\n\nexport interface IRegistry {\n register(container: IContainer): void;\n}\n\nexport interface IContainer extends IServiceLocator {\n register(...params: (IRegistry | Record<string, Partial<IRegistry>>)[]): void;\n register(registry: IRegistry | Record<string, Partial<IRegistry>>): void;\n\n registerResolver<T>(key: Key<T>, resolver: IResolver<T>): IResolver<T>;\n registerResolver<T extends Constructable>(key: T, resolver: IResolver<InstanceType<T>>): IResolver<InstanceType<T>>;\n\n registerTransformer<T>(key: Key<T>, transformer: (instance: T) => T): boolean;\n registerTransformer<T extends Constructable>(key: T, transformer: (instance: InstanceType<T>) => T): boolean;\n\n getResolver<T>(key: Key<T>, autoRegister?: boolean): IResolver<T> | null;\n getResolver<T extends Constructable>(key: T, autoRegister?: boolean): IResolver<InstanceType<T>> | null;\n\n getFactory<T extends Constructable>(type: T): IFactory<InstanceType<T>>;\n\n createChild(): IContainer;\n}\n\nexport interface IResolverBuilder<T> {\n instance(value: T & IIndexable): IResolver;\n singleton(value: Constructable<T>): IResolver;\n transient(value: Constructable<T>): IResolver;\n callback(value: ResolveCallback<T>): IResolver;\n aliasTo(destinationKey: Key<T>): IResolver;\n}\n\nif (!('getOwnMetadata' in Reflect)) {\n (Reflect as any).getOwnMetadata = function(key: string, target: any): any {\n return target[key];\n };\n\n (Reflect as any).metadata = function(key: string, value: any): (target: any) => void {\n return function(target: any): void {\n target[key] = value;\n };\n };\n}\n\nexport const DI = {\n createContainer(): IContainer {\n return new Container();\n },\n\n getDesignParamTypes(target: any): any[] {\n return (Reflect as any).getOwnMetadata('design:paramtypes', target) || PLATFORM.emptyArray;\n },\n\n getDependencies(type: Function & { inject?: any }): any[] {\n let dependencies: any[];\n\n if (type.inject === undefined) {\n dependencies = DI.getDesignParamTypes(type);\n } else {\n dependencies = [];\n let ctor = type;\n\n while (typeof ctor === 'function') {\n if (ctor.hasOwnProperty('inject')) {\n dependencies.push(...ctor.inject);\n }\n\n ctor = Object.getPrototypeOf(ctor);\n }\n }\n\n return dependencies;\n },\n\n createInterface<T = any>(friendlyName?: string): IDefaultableInterfaceSymbol<T> {\n const Key: any = function(target: Injectable, property: string, index: number): any {\n const inject = target.inject || (target.inject = []);\n (Key as any).friendlyName = friendlyName || 'Interface';\n inject[index] = Key;\n return target;\n };\n\n Key.noDefault = function(): InterfaceSymbol<T> {\n return Key;\n };\n\n Key.withDefault = function(configure: (builder: IResolverBuilder<T>) => IResolver): InterfaceSymbol<T> {\n Key.withDefault = function(): void {\n throw Reporter.error(17, Key);\n };\n\n Key.register = function(container: IContainer, key?: Key<T>): IResolver<T> {\n const trueKey = key || Key;\n return configure({\n instance(value: T): IResolver {\n return container.registerResolver(trueKey, new Resolver(trueKey, ResolverStrategy.instance, value));\n },\n singleton(value: Function): IResolver {\n return container.registerResolver(trueKey, new Resolver(trueKey, ResolverStrategy.singleton, value));\n },\n transient(value: Function): IResolver {\n return container.registerResolver(trueKey, new Resolver(trueKey, ResolverStrategy.transient, value));\n },\n callback(value: ResolveCallback): IResolver {\n return container.registerResolver(trueKey, new Resolver(trueKey, ResolverStrategy.callback, value));\n },\n aliasTo(destinationKey: T): IResolver {\n return container.registerResolver(trueKey, new Resolver(trueKey, ResolverStrategy.alias, destinationKey));\n },\n });\n };\n\n return Key;\n };\n\n return Key;\n },\n\n inject(...dependencies: any[]): (target: any, property?: string, descriptor?: PropertyDescriptor | number) => any {\n return function(target: any, key?, descriptor?) {\n if (typeof descriptor === 'number') { // It's a parameter decorator.\n if (!target.hasOwnProperty('inject')) {\n target.inject = DI.getDesignParamTypes(target).slice();\n }\n\n if (dependencies.length === 1) {\n target.inject[descriptor] = dependencies[0];\n }\n } else if (key) { // It's a property decorator. Not supported by the container without plugins.\n const actualTarget = target.constructor;\n const inject = actualTarget.inject || (actualTarget.inject = {});\n inject[key] = dependencies[0];\n } else if (descriptor) { // It's a function decorator (not a Class constructor)\n const fn = descriptor.value;\n fn.inject = dependencies;\n } else { // It's a class decorator.\n if (!dependencies || dependencies.length === 0) {\n target.inject = DI.getDesignParamTypes(target).slice();\n } else {\n target.inject = dependencies;\n }\n }\n };\n }\n};\n\nexport const IContainer = DI.createInterface<IContainer>().noDefault();\nexport const IServiceLocator = IContainer as InterfaceSymbol<IServiceLocator>;\n\nfunction createResolver(\n getter: (key: any, handler: IContainer, requestor: IContainer) => any\n): (key: any) => ReturnType<typeof DI.inject> {\n return function(key: any): ReturnType<typeof DI.inject> {\n const Key = function Key(target: Injectable, property?: string, descriptor?: PropertyDescriptor | number): void {\n return DI.inject(Key)(target, property, descriptor);\n };\n\n (Key as any).resolve = function(handler: IContainer, requestor: IContainer): any {\n return getter(key, handler, requestor);\n };\n\n return Key;\n };\n}\n\nexport const inject = DI.inject;\n\nexport const all = createResolver((key: any, handler: IContainer, requestor: IContainer) => requestor.getAll(key));\n\nexport const lazy = createResolver((key: any, handler: IContainer, requestor: IContainer) => {\n let instance: any = null; // cache locally so that lazy always returns the same instance once resolved\n return () => {\n if (instance === null) {\n instance = requestor.get(key);\n }\n\n return instance;\n };\n});\n\nexport const optional = createResolver((key: any, handler: IContainer, requestor: IContainer) => {\n if (requestor.has(key, true)) {\n return requestor.get(key);\n } else {\n return null;\n }\n});\n\n/*@internal*/\nexport const enum ResolverStrategy {\n instance = 0,\n singleton = 1,\n transient = 2,\n callback = 3,\n array = 4,\n alias = 5\n}\n\n/*@internal*/\nexport class Resolver implements IResolver, IRegistration {\n constructor(public key: any, public strategy: ResolverStrategy, public state: any) {}\n\n public register(container: IContainer, key?: any): IResolver {\n return container.registerResolver(key || this.key, this);\n }\n\n public resolve(handler: IContainer, requestor: IContainer): any {\n switch (this.strategy) {\n case ResolverStrategy.instance:\n return this.state;\n case ResolverStrategy.singleton:\n this.strategy = ResolverStrategy.instance;\n return this.state = handler.getFactory(this.state).construct(handler);\n case ResolverStrategy.transient:\n // Always create transients from the requesting container\n return handler.getFactory(this.state).construct(requestor);\n case ResolverStrategy.callback:\n return (this.state as ResolveCallback)(handler, requestor, this);\n case ResolverStrategy.array:\n return this.state[0].resolve(handler, requestor);\n case ResolverStrategy.alias:\n return handler.get(this.state);\n default:\n throw Reporter.error(6, this.strategy);\n }\n }\n\n public getFactory(container: IContainer): IFactory | null {\n switch (this.strategy) {\n case ResolverStrategy.singleton:\n case ResolverStrategy.transient:\n return container.getFactory(this.state);\n default:\n return null;\n }\n }\n}\n\n/*@internal*/\nexport interface IInvoker {\n invoke(container: IContainer, fn: Function, dependencies: any[]): any;\n invokeWithDynamicDependencies(\n container: IContainer,\n fn: Function,\n staticDependencies: any[],\n dynamicDependencies: any[]\n ): any;\n}\n\n/*@internal*/\nexport class Factory implements IFactory {\n private transformers: ((instance: any) => any)[] | null = null;\n\n constructor(public type: Function, private invoker: IInvoker, private dependencies: any[]) { }\n\n public static create(type: Function): IFactory {\n const dependencies = DI.getDependencies(type);\n const invoker = classInvokers[dependencies.length] || fallbackInvoker;\n return new Factory(type, invoker, dependencies);\n }\n\n public construct(container: IContainer, dynamicDependencies?: any[]): any {\n const transformers = this.transformers;\n let instance = dynamicDependencies !== undefined\n ? this.invoker.invokeWithDynamicDependencies(container, this.type, this.dependencies, dynamicDependencies)\n : this.invoker.invoke(container, this.type, this.dependencies);\n\n if (transformers === null) {\n return instance;\n }\n\n for (let i = 0, ii = transformers.length; i < ii; ++i) {\n instance = transformers[i](instance);\n }\n\n return instance;\n }\n\n public registerTransformer(transformer: (instance: any) => any): boolean {\n if (this.transformers === null) {\n this.transformers = [];\n }\n\n this.transformers.push(transformer);\n return true;\n }\n}\n\n/*@internal*/\nexport interface IContainerConfiguration {\n factories?: Map<Function, IFactory>;\n}\n\nconst containerResolver: IResolver = {\n resolve(handler: IContainer, requestor: IContainer): IContainer {\n return requestor;\n }\n};\n\nfunction isRegistry(obj: IRegistry | Record<string, IRegistry>): obj is IRegistry {\n return typeof obj.register === 'function';\n}\n\n/*@internal*/\nexport class Container implements IContainer {\n private parent: Container | null = null;\n private resolvers: Map<any, IResolver> = new Map<any, IResolver>();\n private factories: Map<Function, IFactory>;\n private configuration: IContainerConfiguration;\n\n constructor(configuration: IContainerConfiguration = {}) {\n this.configuration = configuration;\n this.factories = configuration.factories || (configuration.factories = new Map());\n this.resolvers.set(IContainer, containerResolver);\n }\n\n public register(registry: (IRegistry | Record<string, Partial<IRegistry>>)): void;\n public register(...params: (IRegistry | Record<string, Partial<IRegistry>>)[]): void {\n for (let i = 0, ii = params.length; i < ii; ++i) {\n const current = params[i] as IRegistry | Record<string, IRegistry>;\n if (isRegistry(current)) {\n current.register(this);\n } else {\n const keys = Object.keys(current);\n for (let j = 0, jj = keys.length; j < jj; ++j) {\n const value = current[keys[j]];\n // note: we could remove this if-branch and call this.register directly\n // - the extra check is just a perf tweak to create fewer unnecessary arrays by the spread operator\n if (isRegistry(value)) {\n value.register(this);\n } else {\n this.register(value);\n }\n }\n }\n }\n }\n\n public registerResolver(key: any, resolver: IResolver): IResolver {\n validateKey(key);\n\n const resolvers = this.resolvers;\n const result = resolvers.get(key);\n\n if (result === undefined) {\n resolvers.set(key, resolver);\n } else if (result instanceof Resolver && (result as Resolver).strategy === ResolverStrategy.array) {\n (result as Resolver).state.push(resolver);\n } else {\n resolvers.set(key, new Resolver(key, ResolverStrategy.array, [result, resolver]));\n }\n\n return resolver;\n }\n\n public registerTransformer(key: any, transformer: (instance: any) => any): boolean {\n const resolver = this.getResolver(key);\n\n if (resolver === null) {\n return false;\n }\n\n if (resolver.getFactory) {\n const handler = resolver.getFactory(this);\n\n if (handler === null) {\n return false;\n }\n\n return handler.registerTransformer(transformer);\n }\n\n return false;\n }\n\n public getResolver(key: any, autoRegister = true): IResolver | null {\n validateKey(key);\n\n if (key.resolve) {\n return key;\n }\n\n let current: Container = this;\n\n while (current !== null) {\n const resolver = current.resolvers.get(key);\n\n if (resolver === undefined) {\n if (current.parent === null) {\n return autoRegister ? this.jitRegister(key, current) : null;\n }\n\n current = current.parent;\n } else {\n return resolver;\n }\n }\n\n return null;\n }\n\n public has(key: any, searchAncestors: boolean = false): boolean {\n return this.resolvers.has(key)\n ? true\n : searchAncestors && this.parent !== null\n ? this.parent.has(key, true)\n : false;\n }\n\n public get(key: any): any {\n validateKey(key);\n\n if (key.resolve) {\n return key.resolve(this, this);\n }\n\n let current: Container = this;\n\n while (current !== null) {\n const resolver = current.resolvers.get(key);\n\n if (resolver === undefined) {\n if (current.parent === null) {\n return this.jitRegister(key, current).resolve(current, this);\n }\n\n current = current.parent;\n } else {\n return resolver.resolve(current, this);\n }\n }\n }\n\n public getAll(key: any): ReadonlyArray<any> {\n validateKey(key);\n\n let current: Container | null = this;\n\n while (current !== null) {\n const resolver = current.resolvers.get(key);\n\n if (resolver === undefined) {\n if (this.parent === null) {\n return PLATFORM.emptyArray;\n }\n\n current = current.parent;\n } else {\n return buildAllResponse(resolver, current, this);\n }\n }\n\n return PLATFORM.emptyArray;\n }\n\n public getFactory(type: Function): IFactory {\n let factory = this.factories.get(type);\n\n if (factory === undefined) {\n factory = Factory.create(type);\n this.factories.set(type, factory);\n }\n\n return factory;\n }\n\n public createChild(): IContainer {\n const child = new Container(this.configuration);\n child.parent = this;\n return child;\n }\n\n private jitRegister(keyAsValue: any, handler: Container): IResolver {\n if (keyAsValue.register) {\n return keyAsValue.register(handler, keyAsValue) || null;\n }\n\n const resolver = new Resolver(keyAsValue, ResolverStrategy.singleton, keyAsValue);\n handler.resolvers.set(keyAsValue, resolver);\n return resolver;\n }\n}\n\nexport const Registration = {\n instance(key: any, value: any): IRegistration {\n return new Resolver(key, ResolverStrategy.instance, value);\n },\n\n singleton(key: any, value: Function): IRegistration {\n return new Resolver(key, ResolverStrategy.singleton, value);\n },\n\n transient(key: any, value: Function): IRegistration {\n return new Resolver(key, ResolverStrategy.transient, value);\n },\n\n callback(key: any, callback: ResolveCallback): IRegistration {\n return new Resolver(key, ResolverStrategy.callback, callback);\n },\n\n alias(originalKey: any, aliasKey: any): IRegistration {\n return new Resolver(aliasKey, ResolverStrategy.alias, originalKey);\n },\n\n interpret(interpreterKey: any, ...rest: any[]): IRegistry {\n return {\n register(container: IContainer): void {\n const resolver = container.getResolver<IRegistry>(interpreterKey);\n\n if (resolver !== null) {\n let registry: IRegistry | null = null;\n\n if (resolver.getFactory) {\n const factory = resolver.getFactory(container);\n\n if (factory !== null) {\n registry = factory.construct(container, rest);\n }\n } else {\n registry = resolver.resolve(container, container);\n }\n\n if (registry !== null) {\n registry.register(container);\n }\n }\n }\n };\n }\n};\n\n/*@internal*/\nexport function validateKey(key: any): void {\n // note: design:paramTypes which will default to Object if the param types cannot be statically analyzed by tsc\n // this check is intended to properly report on that problem - under no circumstance should Object be a valid key anyway\n if (key === null || key === undefined || key === Object) {\n throw Reporter.error(5);\n }\n}\n\nfunction buildAllResponse(resolver: IResolver, handler: IContainer, requestor: IContainer): any[] {\n if (resolver instanceof Resolver && resolver.strategy === ResolverStrategy.array) {\n const state = resolver.state;\n let i = state.length;\n const results = new Array(i);\n\n while (i--) {\n results[i] = state[i].get(handler, requestor);\n }\n\n return results;\n }\n\n return [resolver.resolve(handler, requestor)];\n}\n\n/*@internal*/\nexport const classInvokers: IInvoker[] = [\n {\n invoke<T extends Constructable<K>, K>(container: IContainer, Type: T): K {\n return new Type();\n },\n invokeWithDynamicDependencies\n },\n {\n invoke<T extends Constructable<K>, K>(container: IContainer, Type: T, deps: any[]): K {\n return new Type(container.get(deps[0]));\n },\n invokeWithDynamicDependencies\n },\n {\n invoke<T extends Constructable<K>, K>(container: IContainer, Type: T, deps: any[]): K {\n return new Type(container.get(deps[0]), container.get(deps[1]));\n },\n invokeWithDynamicDependencies\n },\n {\n invoke<T extends Constructable<K>, K>(container: IContainer, Type: T, deps: any[]): K {\n return new Type(container.get(deps[0]), container.get(deps[1]), container.get(deps[2]));\n },\n invokeWithDynamicDependencies\n },\n {\n invoke<T extends Constructable<K>, K>(container: IContainer, Type: T, deps: any[]): K {\n return new Type(\n container.get(deps[0]),\n container.get(deps[1]),\n container.get(deps[2]),\n container.get(deps[3])\n );\n },\n invokeWithDynamicDependencies\n },\n {\n invoke<T extends Constructable<K>, K>(container: IContainer, Type: T, deps: any[]): K {\n return new Type(\n container.get(deps[0]),\n container.get(deps[1]),\n container.get(deps[2]),\n container.get(deps[3]),\n container.get(deps[4])\n );\n },\n invokeWithDynamicDependencies\n }\n];\n\n/*@internal*/\nexport const fallbackInvoker: IInvoker = {\n invoke: invokeWithDynamicDependencies as any,\n invokeWithDynamicDependencies\n};\n\n/*@internal*/\nexport function invokeWithDynamicDependencies<T extends Constructable<K>, K>(\n container: IContainer,\n Type: T,\n staticDependencies: any[],\n dynamicDependencies: any[]\n): K {\n let i = staticDependencies.length;\n let args = new Array(i);\n let lookup;\n\n while (i--) {\n lookup = staticDependencies[i];\n\n if (lookup === null || lookup === undefined) {\n throw Reporter.error(7, `Index ${i}.`);\n } else {\n args[i] = container.get(lookup);\n }\n }\n\n if (dynamicDependencies !== undefined) {\n args = args.concat(dynamicDependencies);\n }\n\n return Reflect.construct(Type, args);\n}\n"],"names":[],"mappings":"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"}

@@ -10,2 +10,10 @@ export interface ICallable {

};
export declare type Decoratable<TOptional, TRequired> = Function & {
readonly prototype: Partial<TOptional> & Required<TRequired>;
new (...args: any[]): Partial<TOptional> & Required<TRequired>;
};
export declare type Decorated<TOptional, TRequired> = Function & {
readonly prototype: Required<TOptional> & Required<TRequired>;
new (...args: any[]): any;
};
export declare type Injectable<T = {}> = Constructable<T> & {

@@ -28,2 +36,3 @@ inject?: any[];

export declare type Primitive = undefined | null | number | boolean | symbol | string;
export declare type Unwrap<T> = T extends (infer U)[] ? U : T extends (...args: any[]) => infer U ? U : T extends Promise<infer U> ? U : T;
//# sourceMappingURL=interfaces.d.ts.map

@@ -1,1 +0,1 @@

{"version":3,"file":"interfaces.d.ts","sourceRoot":"","sources":["../src/interfaces.ts"],"names":[],"mappings":"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"}
{"version":3,"file":"interfaces.d.ts","sourceRoot":"","sources":["../src/interfaces.ts"],"names":[],"mappings":"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"}

@@ -11,5 +11,3 @@ export declare const PLATFORM: {

requestAnimationFrame(callback: (time: number) => void): number;
createTaskFlushRequester(onFlush: () => void): () => void;
createMicroTaskFlushRequestor(onFlush: () => void): () => void;
};
//# sourceMappingURL=platform.d.ts.map

@@ -1,1 +0,1 @@

{"version":3,"file":"platform.d.ts","sourceRoot":"","sources":["../src/platform.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,QAAQ;;;;;;;;;;;;CA+GpB,CAAC"}
{"version":3,"file":"platform.d.ts","sourceRoot":"","sources":["../src/platform.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,QAAQ;;;;;;;;;;CA8EpB,CAAC"}
{
"name": "@aurelia/kernel",
"version": "0.2.0",
"version": "0.3.0-dev.20181013",
"main": "dist/index.umd.js",

@@ -25,2 +25,3 @@ "module": "dist/index.es6.js",

"dist",
"src",
"README.md",

@@ -84,3 +85,3 @@ "CHANGELOG.md",

},
"gitHead": "712101a020943279230b68b075305246f84d1037"
"gitHead": "6ba681c5c0255796f55855f2e64b3adcc4c494c3"
}