jw-ng-forward
Version:
Temporary package. The default solution for those that want to write Angular 2.x style code in Angular 1.x
98 lines (97 loc) • 3.69 kB
JavaScript
;
var __importStar = (this && this.__importStar) || function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];
result["default"] = mod;
return result;
};
Object.defineProperty(exports, "__esModule", { value: true });
var angular = __importStar(require("angular"));
var writers_1 = require("../writers");
var _parsers = {};
var DecoratedModule = (function () {
function DecoratedModule(name, modules) {
if (modules === void 0) { modules = false; }
this.name = name;
if (modules) {
this.moduleList(modules);
this._module = angular.module(name, this._dependencies);
}
else {
this._module = angular.module(name);
}
}
DecoratedModule.prototype.add = function () {
var _this = this;
var providers = [];
for (var _i = 0; _i < arguments.length; _i++) {
providers[_i] = arguments[_i];
}
var providersInferred = providers.filter(function (p) { return !p.isProvider; });
var providersProper = providers.filter(function (p) { return p.isProvider; });
var handleProvider = function (provider) {
if (!writers_1.providerStore.has('type', provider)) {
throw new Error("Cannot read provider metadata. Are you adding a class that hasn't been decorated yet?");
}
var type = writers_1.providerStore.get('type', provider);
var name = writers_1.providerStore.get('name', provider);
var inject = writers_1.bundleStore.get('$inject', provider) || [];
if (_parsers[type]) {
_parsers[type](provider, name, inject, _this._module);
}
else {
throw new Error("No parser registered for type '" + type + "'");
}
};
providersInferred.forEach(handleProvider);
providersProper.forEach(handleProvider);
return this;
};
DecoratedModule.prototype.publish = function () {
return this._module;
};
DecoratedModule.prototype.moduleList = function (modules) {
this._dependencies = [];
if (modules && modules.length !== 0) {
for (var i = 0; i < modules.length; i++) {
if (typeof modules[i] === 'string') {
this._dependencies.push(modules[i]);
}
else if (modules[i] && modules[i].name) {
this._dependencies.push(modules[i].name);
}
else {
throw new Error("Cannot read module: Unknown module in " + this.name);
}
}
}
};
DecoratedModule.prototype.config = function (configFunc) {
this._module.config(configFunc);
return this;
};
DecoratedModule.prototype.run = function (runFunc) {
this._module.run(runFunc);
return this;
};
DecoratedModule.prototype.value = function (name, value) {
this._module.value(name, value);
return this;
};
DecoratedModule.prototype.constant = function (name, value) {
this._module.constant(name, value);
return this;
};
return DecoratedModule;
}());
exports.DecoratedModule = DecoratedModule;
exports.Module = function (name, modules) {
return new DecoratedModule(name, modules);
};
exports.Module.addProvider = function (providerType, parser) {
_parsers[providerType] = parser;
};
exports.Module.getParser = function (providerType) {
return _parsers[providerType];
};