UNPKG

jw-ng-forward

Version:

Temporary package. The default solution for those that want to write Angular 2.x style code in Angular 1.x

97 lines (96 loc) 4.15 kB
"use strict"; var __read = (this && this.__read) || function (o, n) { var m = typeof Symbol === "function" && o[Symbol.iterator]; if (!m) return o; var i = m.call(o), r, ar = [], e; try { while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value); } catch (error) { e = { error: error }; } finally { try { if (r && !r.done && (m = i["return"])) m.call(i); } finally { if (e) throw e.error; } } return ar; }; var __spread = (this && this.__spread) || function () { for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read(arguments[i])); return ar; }; Object.defineProperty(exports, "__esModule", { value: true }); var writers_1 = require("../writers"); var module_1 = require("./module"); var inject_1 = require("../decorators/inject"); var get_injectable_name_1 = require("../util/get-injectable-name"); var providers_1 = require("../decorators/providers"); var injectable_1 = require("../decorators/injectable"); var TYPE = 'provider'; var Provider = (function () { function Provider(token, _a) { var useClass = _a.useClass, useValue = _a.useValue, useConstant = _a.useConstant, useFactory = _a.useFactory, deps = _a.deps; this.isProvider = true; this._dependencies = []; try { this.token = get_injectable_name_1.getInjectableNameWithJitCreation(token); } catch (e) { throw new Error("new Provider() Error: Invalid token " + token); } Object.assign(this, { useClass: useClass, useValue: useValue, useConstant: useConstant, useFactory: useFactory }); if (!useClass && !useValue && !useConstant && !useFactory) { throw new Error("new Provider(" + token + ") Error: No usage provided (i.e. useClass, useValue, useConstant, useFactory)"); } if (deps) { inject_1.Inject.apply(void 0, __spread(deps))(this.useFactory); providers_1.Providers.apply(void 0, __spread(deps.filter(function (d) { return typeof d !== 'string'; })))(this.useFactory, "while analyzing Provider '" + this.token + "' useFactory deps"); this._dependencies = writers_1.bundleStore.get('$inject', this.useFactory); } writers_1.providerStore.set('name', this.token, this); writers_1.providerStore.set('type', TYPE, this); } Object.defineProperty(Provider.prototype, "type", { get: function () { var _this = this; if (this._type) return this._type; this._type = Object.keys(this).find(function (k) { return k.startsWith('use') && _this[k] !== undefined; }); return this._type; }, enumerable: true, configurable: true }); Object.defineProperty(Provider.prototype, "dependencies", { get: function () { return this._dependencies; }, enumerable: true, configurable: true }); return Provider; }()); exports.Provider = Provider; module_1.Module.addProvider(TYPE, function (provider, name, injects, ngModule) { switch (provider.type) { case 'useValue': ngModule.value(provider.token, provider.useValue); break; case 'useConstant': ngModule.constant(provider.token, provider.useConstant); break; case 'useClass': injects = writers_1.bundleStore.get('$inject', provider.useClass) || []; module_1.Module.getParser(injectable_1.INJECTABLE)(provider.useClass, provider.token, injects, ngModule); break; case 'useFactory': ngModule.factory(provider.token, __spread(provider.dependencies, [provider.useFactory])); break; default: break; } }); exports.provide = function (token, _a) { var useClass = _a.useClass, useValue = _a.useValue, useConstant = _a.useConstant, useFactory = _a.useFactory, deps = _a.deps; return new Provider(token, { useClass: useClass, useValue: useValue, useConstant: useConstant, useFactory: useFactory, deps: deps }); };