From cef2a732c181a7cc219b24a32b5d7ce06d743075 Mon Sep 17 00:00:00 2001 From: Chris Thielen Date: Sat, 18 Feb 2017 08:51:47 -0800 Subject: [PATCH] refactor(decorators): Rename decorators --- src/decorators/index.ts | 2 +- src/decorators/resolve.ts | 56 +++++++++++----------------------- src/decorators/resolveData.ts | 57 ++++++++++++++++++++++++----------- 3 files changed, 58 insertions(+), 57 deletions(-) diff --git a/src/decorators/index.ts b/src/decorators/index.ts index 5a093ac1..5e722737 100644 --- a/src/decorators/index.ts +++ b/src/decorators/index.ts @@ -1,3 +1,3 @@ -export * from "./resolveData"; export * from "./resolve"; +export * from "./resolveData"; export * from "./state"; diff --git a/src/decorators/resolve.ts b/src/decorators/resolve.ts index a3c991fe..da2c60cd 100644 --- a/src/decorators/resolve.ts +++ b/src/decorators/resolve.ts @@ -1,40 +1,18 @@ -/** - * An ES7 decorator which maps resolve data to a component. - * - * Add this decorator to a property of your component. - * The decorator marks the component's property to receive resolve data. - * - * When resolve data of the same name (token) is found, - * the resolve data will be assigned to the component's property. - * - * #### Example: - * - * The component's properties receive resolve data from the state definition. - * ```js - * @Component({ selector: 'foo' }) - * export class FooComponent { - * @Resolve() resolveToken1; - * @Resolve('resolveToken2') prop2; - * @Input() @Resolve() resolveToken3; - * } - * - * const fooState = { - * name: 'foo', - * component: FooComponent, - * resolve: [ - * { token: 'resolveToken1', deps: [], resolveFn: resolve1Fn }, - * { token: 'resolveToken2', deps: [], resolveFn: resolve2Fn }, - * { token: 'resolveToken3', deps: [], resolveFn: resolve3Fn }, - * ] - * } - * ``` - * - * @param token The resolve token to bind to this property - * (if omitted, the property name is used as the token) - */ -export function Resolve(token?: string): PropertyDecorator { - return function(target, property) { - const inputs = target['$inputs'] = target['$inputs'] || {}; - inputs[token] = property; +import { StateDeclaration } from '../state/interface'; +import { isArray } from '../common/predicates'; + +export function Resolve(resolveConfig: { token?: string, deps?: any[] }): PropertyDecorator { + resolveConfig = resolveConfig || {}; + + return function(target: StateDeclaration, property) { + const resolve = target.resolve = target.resolve || []; + const token = resolveConfig.token || property; + const deps = resolveConfig.deps || []; + + if (!isArray(resolve)) { + throw new Error(`@ResolveData() only supports array style resolve: state: '${target.name}', resolve: ${property}, token: ${token}.`) + } + + resolve.push({ token, deps, resolveFn: target[property] }); }; -} \ No newline at end of file +} diff --git a/src/decorators/resolveData.ts b/src/decorators/resolveData.ts index 1e2d2727..b638e975 100644 --- a/src/decorators/resolveData.ts +++ b/src/decorators/resolveData.ts @@ -1,18 +1,41 @@ -import { StateDeclaration } from '../state/interface'; -import { isArray } from '../common/predicates'; - -export function ResolveData(resolveConfig: { token?: string, deps?: any[] }): PropertyDecorator { - resolveConfig = resolveConfig || {}; - - return function(target: StateDeclaration, property) { - const resolve = target.resolve = target.resolve || []; - const token = resolveConfig.token || property; - const deps = resolveConfig.deps || []; - - if (!isArray(resolve)) { - throw new Error(`@ResolveData() only supports array style resolve: state: '${target.name}', resolve: ${property}, token: ${token}.`) - } - - resolve.push({ token, deps, resolveFn: target[property] }); +/** + * An ES7 decorator which maps resolve data to a component. + * + * Add this decorator to a property of your component. + * The decorator marks the component's property to receive resolve data. + * + * When resolve data of the same name (token) is found, + * the resolve data will be assigned to the component's property. + * + * #### Example: + * + * The component's properties receive resolve data from the state definition. + * ```js + * @Component({ selector: 'foo' }) + * export class FooComponent { + * @Resolve() resolveToken1; + * @Resolve('resolveToken2') prop2; + * @Input() @Resolve() resolveToken3; + * } + * + * const fooState = { + * name: 'foo', + * component: FooComponent, + * resolve: [ + * { token: 'resolveToken1', deps: [], resolveFn: resolve1Fn }, + * { token: 'resolveToken2', deps: [], resolveFn: resolve2Fn }, + * { token: 'resolveToken3', deps: [], resolveFn: resolve3Fn }, + * ] + * } + * ``` + * + * @param token The resolve token to bind to this property + * (if omitted, the property name is used as the token) + */ +export function ResolveData(token?: string): PropertyDecorator { + return function(target, property: string) { + const inputs = target['__inputs'] = target['__inputs'] || {}; + token = token || property; + inputs[token] = property; }; -} +} \ No newline at end of file