UNPKG

@tsclean/core

Version:

Plugin for API Rest Full development, based on Clean Architecture, IoC and Dependency Injection.

49 lines 8.68 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.AbstractInstanceResolver = void 0; const errors_1 = require("../../errors"); const contracts_1 = require("../../contracts"); class AbstractInstanceResolver { find(typeOrToken, options) { const instanceLinkOrArray = this.instanceLinksHost.get(typeOrToken, options); const pluckInstance = ({ wrapperRef }) => { if (wrapperRef.scope === contracts_1.Scope.REQUEST || wrapperRef.scope === contracts_1.Scope.TRANSIENT) { throw new errors_1.InvalidClassScopeException(typeOrToken); } return wrapperRef.instance; }; if (Array.isArray(instanceLinkOrArray)) { return instanceLinkOrArray.map(pluckInstance); } return pluckInstance(instanceLinkOrArray); } async resolvePerContext(typeOrToken, contextModule, contextId, options) { const instanceLinkOrArray = (options === null || options === void 0 ? void 0 : options.strict) ? this.instanceLinksHost.get(typeOrToken, { moduleId: contextModule.id, each: options.each }) : this.instanceLinksHost.get(typeOrToken, { each: options.each }); const pluckInstance = async (instanceLink) => { const { wrapperRef, collection } = instanceLink; if (wrapperRef.isDependencyTreeStatic() && !wrapperRef.isTransient) { return this.get(typeOrToken, { strict: options.strict }); } const ctorHost = wrapperRef.instance || { constructor: typeOrToken }; const instance = await this.injector.loadPerContext(ctorHost, wrapperRef.host, collection, contextId, wrapperRef); if (!instance) { throw new errors_1.UnknownElementException(); } return instance; }; if (Array.isArray(instanceLinkOrArray)) { return Promise.all(instanceLinkOrArray.map(instanceLink => pluckInstance(instanceLink))); } return pluckInstance(instanceLinkOrArray); } } exports.AbstractInstanceResolver = AbstractInstanceResolver; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWJzdHJhY3QtaW5zdGFuY2UtcmVzb2x2ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29yZS9pbmplY3Rvci9hYnN0cmFjdC1pbnN0YW5jZS1yZXNvbHZlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSx5Q0FHcUI7QUFNckIsK0NBQStFO0FBRS9FLE1BQXNCLHdCQUF3QjtJQVNsQyxJQUFJLENBQ1osV0FBNkQsRUFDN0QsT0FBOEM7UUFFOUMsTUFBTSxtQkFBbUIsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsR0FBRyxDQUNwRCxXQUFXLEVBQ1gsT0FBTyxDQUNSLENBQUE7UUFDRCxNQUFNLGFBQWEsR0FBRyxDQUFDLEVBQUUsVUFBVSxFQUFnQixFQUFFLEVBQUU7WUFDckQsSUFDRSxVQUFVLENBQUMsS0FBSyxLQUFLLGlCQUFLLENBQUMsT0FBTztnQkFDbEMsVUFBVSxDQUFDLEtBQUssS0FBSyxpQkFBSyxDQUFDLFNBQVMsRUFDcEMsQ0FBQztnQkFDRCxNQUFNLElBQUksbUNBQTBCLENBQUMsV0FBVyxDQUFDLENBQUE7WUFDbkQsQ0FBQztZQUNELE9BQU8sVUFBVSxDQUFDLFFBQVEsQ0FBQTtRQUM1QixDQUFDLENBQUE7UUFDRCxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsbUJBQW1CLENBQUMsRUFBRSxDQUFDO1lBQ3ZDLE9BQU8sbUJBQW1CLENBQUMsR0FBRyxDQUFDLGFBQWEsQ0FBQyxDQUFBO1FBQy9DLENBQUM7UUFDRCxPQUFPLGFBQWEsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFBO0lBQzNDLENBQUM7SUFFUyxLQUFLLENBQUMsaUJBQWlCLENBQy9CLFdBQXVFLEVBQ3ZFLGFBQXFCLEVBQ3JCLFNBQW9CLEVBQ3BCLE9BQTZCO1FBRTdCLE1BQU0sbUJBQW1CLEdBQUcsQ0FBQSxPQUFPLGFBQVAsT0FBTyx1QkFBUCxPQUFPLENBQUUsTUFBTTtZQUN6QyxDQUFDLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEdBQUcsQ0FBQyxXQUFXLEVBQUU7Z0JBQ3RDLFFBQVEsRUFBRSxhQUFhLENBQUMsRUFBRTtnQkFDMUIsSUFBSSxFQUFFLE9BQU8sQ0FBQyxJQUFJO2FBQ25CLENBQUM7WUFDSixDQUFDLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEdBQUcsQ0FBQyxXQUFXLEVBQUU7Z0JBQ3RDLElBQUksRUFBRSxPQUFPLENBQUMsSUFBSTthQUNuQixDQUFDLENBQUE7UUFFTixNQUFNLGFBQWEsR0FBRyxLQUFLLEVBQUUsWUFBMEIsRUFBRSxFQUFFO1lBQ3pELE1BQU0sRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLEdBQUcsWUFBWSxDQUFBO1lBQy9DLElBQUksVUFBVSxDQUFDLHNCQUFzQixFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsV0FBVyxFQUFFLENBQUM7Z0JBQ25FLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxXQUFXLEVBQUUsRUFBRSxNQUFNLEVBQUUsT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUE7WUFDMUQsQ0FBQztZQUVELE1BQU0sUUFBUSxHQUFHLFVBQVUsQ0FBQyxRQUFRLElBQUksRUFBRSxXQUFXLEVBQUUsV0FBVyxFQUFFLENBQUE7WUFDcEUsTUFBTSxRQUFRLEdBQUcsTUFBTSxJQUFJLENBQUMsUUFBUSxDQUFDLGNBQWMsQ0FDakQsUUFBUSxFQUNSLFVBQVUsQ0FBQyxJQUFJLEVBQ2YsVUFBVSxFQUNWLFNBQVMsRUFDVCxVQUFVLENBQ1gsQ0FBQTtZQUNELElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztnQkFDZCxNQUFNLElBQUksZ0NBQXVCLEVBQUUsQ0FBQTtZQUNyQyxDQUFDO1lBQ0QsT0FBTyxRQUFRLENBQUE7UUFDakIsQ0FBQyxDQUFBO1FBRUQsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLG1CQUFtQixDQUFDLEVBQUUsQ0FBQztZQUN2QyxPQUFPLE9BQU8sQ0FBQyxHQUFHLENBQ2hCLG1CQUFtQixDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUNyRSxDQUFBO1FBQ0gsQ0FBQztRQUNELE9BQU8sYUFBYSxDQUFDLG1CQUFtQixDQUFDLENBQUE7SUFDM0MsQ0FBQztDQUNGO0FBMUVELDREQTBFQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEludmFsaWRDbGFzc1Njb3BlRXhjZXB0aW9uLFxuICBVbmtub3duRWxlbWVudEV4Y2VwdGlvblxufSBmcm9tICcuLi8uLi9lcnJvcnMnXG5pbXBvcnQgeyBUeXBlIH0gZnJvbSAnLi4vLi4vY29udHJhY3RzL3R5cGUnXG5pbXBvcnQgeyBJbmplY3RvciB9IGZyb20gJy4vaW5qZWN0b3InXG5pbXBvcnQgeyBJbnN0YW5jZUxpbmssIEluc3RhbmNlTGlua3NIb3N0IH0gZnJvbSAnLi9pbnN0YW5jZS1saW5rcy1ob3N0J1xuaW1wb3J0IHsgTW9kdWxlIH0gZnJvbSAnLi9tb2R1bGUnXG5pbXBvcnQgeyBDb250ZXh0SWQgfSBmcm9tICcuL2luc3RhbmNlLXdyYXBwZXInXG5pbXBvcnQgeyBBYnN0cmFjdEludGVyZmFjZSwgR2V0T3JSZXNvbHZlT3B0aW9ucywgU2NvcGUgfSBmcm9tICcuLi8uLi9jb250cmFjdHMnXG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBBYnN0cmFjdEluc3RhbmNlUmVzb2x2ZXIge1xuICBwcm90ZWN0ZWQgYWJzdHJhY3QgaW5zdGFuY2VMaW5rc0hvc3Q6IEluc3RhbmNlTGlua3NIb3N0XG4gIHByb3RlY3RlZCBhYnN0cmFjdCBpbmplY3RvcjogSW5qZWN0b3JcblxuICBwcm90ZWN0ZWQgYWJzdHJhY3QgZ2V0PFQgPSBhbnksIFIgPSBUPihcbiAgICB0eXBlT3JUb2tlbjogVHlwZTxUPiB8IEZ1bmN0aW9uIHwgc3RyaW5nIHwgc3ltYm9sLFxuICAgIG9wdGlvbnM/OiBHZXRPclJlc29sdmVPcHRpb25zXG4gICk6IFIgfCBBcnJheTxSPlxuXG4gIHByb3RlY3RlZCBmaW5kPFQgPSBhbnksIFIgPSBUPiAoXG4gICAgdHlwZU9yVG9rZW46IFR5cGU8VD4gfCBBYnN0cmFjdEludGVyZmFjZTxUPiB8IHN0cmluZyB8IHN5bWJvbCxcbiAgICBvcHRpb25zOiB7IG1vZHVsZUlkPzogc3RyaW5nOyBlYWNoPzogYm9vbGVhbiB9XG4gICk6IFIgfCBBcnJheTxSPiB7XG4gICAgY29uc3QgaW5zdGFuY2VMaW5rT3JBcnJheSA9IHRoaXMuaW5zdGFuY2VMaW5rc0hvc3QuZ2V0PFI+KFxuICAgICAgdHlwZU9yVG9rZW4sXG4gICAgICBvcHRpb25zXG4gICAgKVxuICAgIGNvbnN0IHBsdWNrSW5zdGFuY2UgPSAoeyB3cmFwcGVyUmVmIH06IEluc3RhbmNlTGluaykgPT4ge1xuICAgICAgaWYgKFxuICAgICAgICB3cmFwcGVyUmVmLnNjb3BlID09PSBTY29wZS5SRVFVRVNUIHx8XG4gICAgICAgIHdyYXBwZXJSZWYuc2NvcGUgPT09IFNjb3BlLlRSQU5TSUVOVFxuICAgICAgKSB7XG4gICAgICAgIHRocm93IG5ldyBJbnZhbGlkQ2xhc3NTY29wZUV4Y2VwdGlvbih0eXBlT3JUb2tlbilcbiAgICAgIH1cbiAgICAgIHJldHVybiB3cmFwcGVyUmVmLmluc3RhbmNlXG4gICAgfVxuICAgIGlmIChBcnJheS5pc0FycmF5KGluc3RhbmNlTGlua09yQXJyYXkpKSB7XG4gICAgICByZXR1cm4gaW5zdGFuY2VMaW5rT3JBcnJheS5tYXAocGx1Y2tJbnN0YW5jZSlcbiAgICB9XG4gICAgcmV0dXJuIHBsdWNrSW5zdGFuY2UoaW5zdGFuY2VMaW5rT3JBcnJheSlcbiAgfVxuXG4gIHByb3RlY3RlZCBhc3luYyByZXNvbHZlUGVyQ29udGV4dDxUSW5wdXQgPSBhbnksIFRSZXN1bHQgPSBUSW5wdXQ+IChcbiAgICB0eXBlT3JUb2tlbjogVHlwZTxUSW5wdXQ+IHwgQWJzdHJhY3RJbnRlcmZhY2U8VElucHV0PiB8IHN0cmluZyB8IHN5bWJvbCxcbiAgICBjb250ZXh0TW9kdWxlOiBNb2R1bGUsXG4gICAgY29udGV4dElkOiBDb250ZXh0SWQsXG4gICAgb3B0aW9ucz86IEdldE9yUmVzb2x2ZU9wdGlvbnNcbiAgKTogUHJvbWlzZTxUUmVzdWx0IHwgQXJyYXk8VFJlc3VsdD4+IHtcbiAgICBjb25zdCBpbnN0YW5jZUxpbmtPckFycmF5ID0gb3B0aW9ucz8uc3RyaWN0XG4gICAgICA/IHRoaXMuaW5zdGFuY2VMaW5rc0hvc3QuZ2V0KHR5cGVPclRva2VuLCB7XG4gICAgICAgICAgbW9kdWxlSWQ6IGNvbnRleHRNb2R1bGUuaWQsXG4gICAgICAgICAgZWFjaDogb3B0aW9ucy5lYWNoXG4gICAgICAgIH0pXG4gICAgICA6IHRoaXMuaW5zdGFuY2VMaW5rc0hvc3QuZ2V0KHR5cGVPclRva2VuLCB7XG4gICAgICAgICAgZWFjaDogb3B0aW9ucy5lYWNoXG4gICAgICAgIH0pXG5cbiAgICBjb25zdCBwbHVja0luc3RhbmNlID0gYXN5bmMgKGluc3RhbmNlTGluazogSW5zdGFuY2VMaW5rKSA9PiB7XG4gICAgICBjb25zdCB7IHdyYXBwZXJSZWYsIGNvbGxlY3Rpb24gfSA9IGluc3RhbmNlTGlua1xuICAgICAgaWYgKHdyYXBwZXJSZWYuaXNEZXBlbmRlbmN5VHJlZVN0YXRpYygpICYmICF3cmFwcGVyUmVmLmlzVHJhbnNpZW50KSB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldCh0eXBlT3JUb2tlbiwgeyBzdHJpY3Q6IG9wdGlvbnMuc3RyaWN0IH0pXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGN0b3JIb3N0ID0gd3JhcHBlclJlZi5pbnN0YW5jZSB8fCB7IGNvbnN0cnVjdG9yOiB0eXBlT3JUb2tlbiB9XG4gICAgICBjb25zdCBpbnN0YW5jZSA9IGF3YWl0IHRoaXMuaW5qZWN0b3IubG9hZFBlckNvbnRleHQoXG4gICAgICAgIGN0b3JIb3N0LFxuICAgICAgICB3cmFwcGVyUmVmLmhvc3QsXG4gICAgICAgIGNvbGxlY3Rpb24sXG4gICAgICAgIGNvbnRleHRJZCxcbiAgICAgICAgd3JhcHBlclJlZlxuICAgICAgKVxuICAgICAgaWYgKCFpbnN0YW5jZSkge1xuICAgICAgICB0aHJvdyBuZXcgVW5rbm93bkVsZW1lbnRFeGNlcHRpb24oKVxuICAgICAgfVxuICAgICAgcmV0dXJuIGluc3RhbmNlXG4gICAgfVxuXG4gICAgaWYgKEFycmF5LmlzQXJyYXkoaW5zdGFuY2VMaW5rT3JBcnJheSkpIHtcbiAgICAgIHJldHVybiBQcm9taXNlLmFsbChcbiAgICAgICAgaW5zdGFuY2VMaW5rT3JBcnJheS5tYXAoaW5zdGFuY2VMaW5rID0+IHBsdWNrSW5zdGFuY2UoaW5zdGFuY2VMaW5rKSlcbiAgICAgIClcbiAgICB9XG4gICAgcmV0dXJuIHBsdWNrSW5zdGFuY2UoaW5zdGFuY2VMaW5rT3JBcnJheSlcbiAgfVxufVxuIl19