jw-ng-forward
Version:
Temporary package. The default solution for those that want to write Angular 2.x style code in Angular 1.x
47 lines (46 loc) • 1.75 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
var writers_1 = require("../writers");
var randomInt = function () { return Math.floor(Math.random() * 100); };
function decoratorFactory(type, strategyType) {
if (strategyType === void 0) { strategyType = 'provider'; }
var names = new Set();
function createUniqueName(name) {
if (names.has(name)) {
return createUniqueName("" + name + randomInt());
}
else {
return name;
}
}
var NAME_TAKEN_ERROR = function (name) {
return new Error("A provider with type " + type + " and name " + name + " has already been registered");
};
return (function () {
var d = function (maybeT) {
var writeWithUniqueName = function (t) {
var name = createUniqueName(t.name);
writers_1.providerStore.set('type', type, t);
writers_1.providerStore.set('name', name, t);
names.add(name);
};
if (typeof maybeT === 'string') {
if (names.has(maybeT)) {
throw NAME_TAKEN_ERROR(maybeT);
}
return function (t) {
writers_1.providerStore.set('type', type, t);
writers_1.providerStore.set('name', maybeT, t);
names.add(maybeT);
};
}
else if (maybeT === undefined) {
return function (t) { return writeWithUniqueName(t); };
}
writeWithUniqueName(maybeT);
};
d.clearNameCache = function () { return names.clear(); };
return d;
})();
}
exports.decoratorFactory = decoratorFactory;