UNPKG

@cashfarm/plow

Version:

Library for validating input data and parameters

55 lines 2.03 kB
"use strict"; 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