@cashfarm/plow
Version:
Library for validating input data and parameters
55 lines • 2.03 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const IBD = require("inversify-binding-decorators");
let _provide;
let _fluentProvide;
const _oldOnActivation = null;
function fluentProvide(identifier) {
const provider = _fluentProvide(identifier);
provider.activationSteps = [];
if (!_oldOnActivation) {
const proto = Object.getPrototypeOf(provider);
proto._oldOnActivation = proto.onActivation;
// tslint:disable:no-invalid-this
proto.onActivation = function (callback) {
this.activationSteps = this.activationSteps || [];
this.activationSteps.push(callback);
};
proto._oldOnActivation.apply(provider, function (ctx, target) {
this.activationSteps.forEach((step) => step(ctx, target));
return target;
});
// tslint:disable-next-line:no-shadowed-variable
proto.bindOptionalProp = function (property, identifier) {
return this.onActivation((context, target) => {
if (context.kernel.isBound(identifier)) {
target[property] = context.kernel.get(identifier);
}
return target;
});
};
}
return provider;
}
function provide(identifier, callback) {
if (!callback)
return _provide(identifier);
const provider = fluentProvide(identifier);
callback(provider);
return provider.done();
}
function makeProvideDecorator(container) {
if (!_fluentProvide)
_fluentProvide = IBD.makeFluentProvideDecorator(container);
if (!_provide)
_provide = IBD.makeProvideDecorator(container);
return provide;
}
exports.makeProvideDecorator = makeProvideDecorator;
function makeFluentProvideDecorator(container) {
if (!_fluentProvide)
_fluentProvide = IBD.makeFluentProvideDecorator(container);
return fluentProvide;
}
exports.makeFluentProvideDecorator = makeFluentProvideDecorator;
//# sourceMappingURL=decorators.js.map