UNPKG

@jems/di

Version:

An implementation of IoC pattern based on dependency injection that allows you to granulate and decouple your libraries or applications. Wrote using SOLID principles and a variety OOP patterns implementations.

38 lines (37 loc) 1.76 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var deliveryError_1 = require("../errors/deliveryError"); /** * Represenst an strategy to deliver the same instance targets with an specific strategy. */ var SingletonDeliveryStrategy = /** @class */ (function () { function SingletonDeliveryStrategy() { } /** * Deliver the transformed reference in the provided dependency metadata. * @param resolutionContext Represents the context in which the request was made. * @param dependencyMetadata Represents the dependency metadata that will be delivered. * @return The transformed reference. */ SingletonDeliveryStrategy.prototype.deliver = function (resolutionContext, dependencyMetadata) { if (!resolutionContext) { throw new deliveryError_1.DeliveryError('Must provide a valid resolution context.'); } if (!dependencyMetadata) { throw new deliveryError_1.DeliveryError('Must provide the depencency metadata to deliver from.'); } if (!dependencyMetadata.activationReference) { throw new deliveryError_1.DeliveryError('The provided dependency metadata must have a valid reference.'); } if (!dependencyMetadata.servicingStrategy) { throw new deliveryError_1.DeliveryError('The provided dependency metadata must have a valid servicing strategy.'); } if (!this._isServed) { this._instance = dependencyMetadata.servicingStrategy.serve(resolutionContext, dependencyMetadata); this._isServed = true; } return this._instance; }; return SingletonDeliveryStrategy; }()); exports.SingletonDeliveryStrategy = SingletonDeliveryStrategy;