@solidgrounds/core
Version:
Dependency injection container
33 lines • 1.31 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.createPendingServiceFactoryReference = void 0;
/**
* Context for creating new service factories.
*/
const Value_1 = require("./Value");
const Util_1 = require("./Util");
const Error_1 = require("./Error");
const createPendingServiceFactoryReference = (name) => {
let pending = null;
const assertReference = () => {
if (pending === null) {
throw new Error_1.ContainerError(`Cannot invoke pending service reference "${name}" `);
}
return pending;
};
const sfr = Util_1.createNamedFunction(name, () => assertReference()());
sfr.serviceName = name;
sfr.resolve = (resolved) => {
if (pending !== null) {
throw new Error_1.ContainerError('PendingServiceFactoryReference already resolved');
}
pending = resolved;
sfr.info.getDependencies().forEach((d) => resolved.info.addDependency(d));
sfr.info.getOverrides().forEach((d) => resolved.info.addOverride(d));
sfr.info = resolved.info;
};
sfr.info = new Value_1.ServiceFactoryInfo(sfr);
return sfr;
};
exports.createPendingServiceFactoryReference = createPendingServiceFactoryReference;
//# sourceMappingURL=createPendingServiceFactoryReference.js.map