UNPKG

@pebula/metap

Version:
67 lines 5.23 kB
/** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ /** * Same as angular's `forwardRef`, different name to prevent confusion / collusion. */ /** * @license * Copyright Google Inc. All Rights Reserved. * * Use of this source code is governed by an MIT-style license that can be * found in the LICENSE file at https://angular.io/license */ import { isFunction, stringify } from '@pebula/utils'; /** @type {?} */ var lazyRefKey = Symbol('lazyRef'); /** @type {?} */ var toString = (/** * @return {?} */ function () { return stringify(this()); }); var ɵ0 = toString; /** * Allows to refer to references which are not yet defined. * * For instance, `lazyRef` is used when the `token` which we need to refer to for the purposes of * DI is declared, * but not yet defined. It is also used when the `token` which we use when creating a query is not * yet defined. * * ### Example * {\@example core/di/ts/forward_ref/forward_ref_spec.ts region='forward_ref'} * \@experimental * @template T * @param {?} lazyRefFn * @return {?} */ export function lazyRef(lazyRefFn) { lazyRefFn[lazyRefKey] = lazyRef; lazyRefFn.toString = toString; return (/** @type {?} */ (lazyRefFn)); } (function (lazyRef) { /** * Lazily retrieves the reference value from a lazyRef. * * Acts as the identity function when given a non-forward-ref value. * * ### Example ([live demo](http://plnkr.co/edit/GU72mJrk1fiodChcmiDR?p=preview)) * * {\@example core/di/ts/forward_ref/forward_ref_spec.ts region='resolve_forward_ref'} * * See: {\@link lazyRef} * \@experimental * @param {?} type * @return {?} */ function resolve(type) { return isFunction(type) && type[lazyRefKey] === lazyRef ? type() : type; } lazyRef.resolve = resolve; })(lazyRef || (lazyRef = {})); export { ɵ0 }; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGF6eS1yZWYuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AcGVidWxhL21ldGFwL2ludGVybmFsLyIsInNvdXJjZXMiOlsibGliL2Z3L2xhenktcmVmLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7O0FBWUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQWUsTUFBTSxlQUFlLENBQUM7O0lBRTdELFVBQVUsR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFDOztJQUM5QixRQUFROzs7QUFBRztJQUNmLE9BQU8sU0FBUyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7QUFDM0IsQ0FBQyxDQUFBOzs7Ozs7Ozs7Ozs7Ozs7OztBQWNELE1BQU0sVUFBVSxPQUFPLENBQTZCLFNBQWtCO0lBQ3BFLFNBQVMsQ0FBQyxVQUFVLENBQUMsR0FBRyxPQUFPLENBQUM7SUFDaEMsU0FBUyxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUM7SUFDOUIsT0FBTyxtQkFBQSxTQUFTLEVBQU8sQ0FBQztBQUMxQixDQUFDO0FBRUQsV0FBaUIsT0FBTzs7Ozs7Ozs7Ozs7Ozs7O0lBYXRCLFNBQWdCLE9BQU8sQ0FBQyxJQUFTO1FBQy9CLE9BQU8sVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7SUFDMUUsQ0FBQztJQUZlLGVBQU8sVUFFdEIsQ0FBQTtBQUNILENBQUMsRUFoQmdCLE9BQU8sS0FBUCxPQUFPLFFBZ0J2QiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogU2FtZSBhcyBhbmd1bGFyJ3MgYGZvcndhcmRSZWZgLCBkaWZmZXJlbnQgbmFtZSB0byBwcmV2ZW50IGNvbmZ1c2lvbiAvIGNvbGx1c2lvbi5cbiAqL1xuXG4vKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5cbmltcG9ydCB7IGlzRnVuY3Rpb24sIHN0cmluZ2lmeSwgQ29uc3RydWN0b3IgfSBmcm9tICdAcGVidWxhL3V0aWxzJztcblxuY29uc3QgbGF6eVJlZktleSA9IFN5bWJvbCgnbGF6eVJlZicpO1xuY29uc3QgdG9TdHJpbmcgPSBmdW5jdGlvbigpIHtcbiAgcmV0dXJuIHN0cmluZ2lmeSh0aGlzKCkpO1xufTtcblxuLyoqXG4gKiBBbGxvd3MgdG8gcmVmZXIgdG8gcmVmZXJlbmNlcyB3aGljaCBhcmUgbm90IHlldCBkZWZpbmVkLlxuICpcbiAqIEZvciBpbnN0YW5jZSwgYGxhenlSZWZgIGlzIHVzZWQgd2hlbiB0aGUgYHRva2VuYCB3aGljaCB3ZSBuZWVkIHRvIHJlZmVyIHRvIGZvciB0aGUgcHVycG9zZXMgb2ZcbiAqIERJIGlzIGRlY2xhcmVkLFxuICogYnV0IG5vdCB5ZXQgZGVmaW5lZC4gSXQgaXMgYWxzbyB1c2VkIHdoZW4gdGhlIGB0b2tlbmAgd2hpY2ggd2UgdXNlIHdoZW4gY3JlYXRpbmcgYSBxdWVyeSBpcyBub3RcbiAqIHlldCBkZWZpbmVkLlxuICpcbiAqICMjIyBFeGFtcGxlXG4gKiB7QGV4YW1wbGUgY29yZS9kaS90cy9mb3J3YXJkX3JlZi9mb3J3YXJkX3JlZl9zcGVjLnRzIHJlZ2lvbj0nZm9yd2FyZF9yZWYnfVxuICogQGV4cGVyaW1lbnRhbFxuICovXG5leHBvcnQgZnVuY3Rpb24gbGF6eVJlZjxUIGV4dGVuZHMgQ29uc3RydWN0b3I8YW55Pj4obGF6eVJlZkZuOiAoKSA9PiBUKTogVCB7XG4gIGxhenlSZWZGbltsYXp5UmVmS2V5XSA9IGxhenlSZWY7XG4gIGxhenlSZWZGbi50b1N0cmluZyA9IHRvU3RyaW5nO1xuICByZXR1cm4gbGF6eVJlZkZuIGFzIGFueTtcbn1cblxuZXhwb3J0IG5hbWVzcGFjZSBsYXp5UmVmIHtcbiAgLyoqXG4gICAqIExhemlseSByZXRyaWV2ZXMgdGhlIHJlZmVyZW5jZSB2YWx1ZSBmcm9tIGEgbGF6eVJlZi5cbiAgICpcbiAgICogQWN0cyBhcyB0aGUgaWRlbnRpdHkgZnVuY3Rpb24gd2hlbiBnaXZlbiBhIG5vbi1mb3J3YXJkLXJlZiB2YWx1ZS5cbiAgICpcbiAgICogIyMjIEV4YW1wbGUgKFtsaXZlIGRlbW9dKGh0dHA6Ly9wbG5rci5jby9lZGl0L0dVNzJtSnJrMWZpb2RDaGNtaURSP3A9cHJldmlldykpXG4gICAqXG4gICAqIHtAZXhhbXBsZSBjb3JlL2RpL3RzL2ZvcndhcmRfcmVmL2ZvcndhcmRfcmVmX3NwZWMudHMgcmVnaW9uPSdyZXNvbHZlX2ZvcndhcmRfcmVmJ31cbiAgICpcbiAgICogU2VlOiB7QGxpbmsgbGF6eVJlZn1cbiAgICogQGV4cGVyaW1lbnRhbFxuICAgKi9cbiAgZXhwb3J0IGZ1bmN0aW9uIHJlc29sdmUodHlwZTogYW55KTogQ29uc3RydWN0b3I8YW55PiB7XG4gICAgcmV0dXJuIGlzRnVuY3Rpb24odHlwZSkgJiYgdHlwZVtsYXp5UmVmS2V5XSA9PT0gbGF6eVJlZiA/IHR5cGUoKSA6IHR5cGU7XG4gIH1cbn1cbiJdfQ==