@tsclean/core
Version:
Plugin for API Rest Full development, based on Clean Architecture, IoC and Dependency Injection.
32 lines • 4.33 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.AccessResourceConsumer = void 0;
const utils_1 = require("../utils");
const helpers_1 = require("../helpers");
const rxjs_1 = require("rxjs");
class AccessResourceConsumer {
async tryAccess(resources, args, instance, callback, type) {
if (!resources || (0, utils_1.isEmpty)(resources))
return true;
const context = this.createContext(args, instance, callback);
context.setType(type);
for (const resource of resources) {
const result = resource.accessResource(context);
if (await this.pickResult(result))
continue;
return false;
}
return true;
}
createContext(args, instance, callback) {
return new helpers_1.ExecutionContextHost(args, instance.constructor, callback);
}
async pickResult(result) {
if (result instanceof rxjs_1.Observable) {
return (0, rxjs_1.lastValueFrom)(result);
}
return result;
}
}
exports.AccessResourceConsumer = AccessResourceConsumer;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNjZXNzLXJlc291cmNlLWNvbnN1bWVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2FjY2Vzcy9hY2Nlc3MtcmVzb3VyY2UtY29uc3VtZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsb0NBQWtDO0FBRWxDLHdDQUFpRDtBQUVqRCwrQkFBZ0Q7QUFFaEQsTUFBYSxzQkFBc0I7SUFDMUIsS0FBSyxDQUFDLFNBQVMsQ0FDcEIsU0FBb0MsRUFDcEMsSUFBZSxFQUNmLFFBQXdCLEVBQ3hCLFFBQXlDLEVBQ3pDLElBQVE7UUFFUixJQUFJLENBQUMsU0FBUyxJQUFJLElBQUEsZUFBTyxFQUFDLFNBQVMsQ0FBQztZQUFFLE9BQU8sSUFBSSxDQUFBO1FBRWpELE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxFQUFFLFFBQVEsRUFBRSxRQUFRLENBQUMsQ0FBQTtRQUM1RCxPQUFPLENBQUMsT0FBTyxDQUFJLElBQUksQ0FBQyxDQUFBO1FBRXhCLEtBQUssTUFBTSxRQUFRLElBQUksU0FBUyxFQUFFLENBQUM7WUFDakMsTUFBTSxNQUFNLEdBQUcsUUFBUSxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsQ0FBQTtZQUMvQyxJQUFJLE1BQU0sSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUM7Z0JBQUUsU0FBUTtZQUUzQyxPQUFPLEtBQUssQ0FBQTtRQUNkLENBQUM7UUFDRCxPQUFPLElBQUksQ0FBQTtJQUNiLENBQUM7SUFFTSxhQUFhLENBQ2xCLElBQWUsRUFDZixRQUF3QixFQUN4QixRQUF5QztRQUV6QyxPQUFPLElBQUksOEJBQW9CLENBQUMsSUFBSSxFQUFFLFFBQVEsQ0FBQyxXQUFrQixFQUFFLFFBQVEsQ0FBQyxDQUFBO0lBQzlFLENBQUM7SUFFTSxLQUFLLENBQUMsVUFBVSxDQUNyQixNQUF3RDtRQUV4RCxJQUFJLE1BQU0sWUFBWSxpQkFBVSxFQUFFLENBQUM7WUFDL0IsT0FBTyxJQUFBLG9CQUFhLEVBQUMsTUFBTSxDQUFDLENBQUE7UUFDaEMsQ0FBQztRQUNELE9BQU8sTUFBTSxDQUFBO0lBQ2YsQ0FBQztDQUNGO0FBdENELHdEQXNDQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGlzRW1wdHkgfSBmcm9tICcuLi91dGlscydcbmltcG9ydCB7IENvbnRleHRUeXBlLCBDb250cm9sbGVyVHlwZSB9IGZyb20gJy4uL3R5cGVzJ1xuaW1wb3J0IHsgRXhlY3V0aW9uQ29udGV4dEhvc3QgfSBmcm9tICcuLi9oZWxwZXJzJ1xuaW1wb3J0IHsgQWNjZXNzUmVzb3VyY2VJbnRlcmZhY2UgfSBmcm9tICcuLi9jb250cmFjdHMnXG5pbXBvcnQgeyBsYXN0VmFsdWVGcm9tLCBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcydcblxuZXhwb3J0IGNsYXNzIEFjY2Vzc1Jlc291cmNlQ29uc3VtZXIge1xuICBwdWJsaWMgYXN5bmMgdHJ5QWNjZXNzPFQgZXh0ZW5kcyBzdHJpbmcgPSBDb250ZXh0VHlwZT4gKFxuICAgIHJlc291cmNlczogQWNjZXNzUmVzb3VyY2VJbnRlcmZhY2VbXSxcbiAgICBhcmdzOiB1bmtub3duW10sXG4gICAgaW5zdGFuY2U6IENvbnRyb2xsZXJUeXBlLFxuICAgIGNhbGxiYWNrOiAoLi4uYXJnczogdW5rbm93bltdKSA9PiB1bmtub3duLFxuICAgIHR5cGU/OiBUXG4gICk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIGlmICghcmVzb3VyY2VzIHx8IGlzRW1wdHkocmVzb3VyY2VzKSkgcmV0dXJuIHRydWVcblxuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmNyZWF0ZUNvbnRleHQoYXJncywgaW5zdGFuY2UsIGNhbGxiYWNrKVxuICAgIGNvbnRleHQuc2V0VHlwZTxUPih0eXBlKVxuXG4gICAgZm9yIChjb25zdCByZXNvdXJjZSBvZiByZXNvdXJjZXMpIHtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IHJlc291cmNlLmFjY2Vzc1Jlc291cmNlKGNvbnRleHQpXG4gICAgICBpZiAoYXdhaXQgdGhpcy5waWNrUmVzdWx0KHJlc3VsdCkpIGNvbnRpbnVlXG5cbiAgICAgIHJldHVybiBmYWxzZVxuICAgIH1cbiAgICByZXR1cm4gdHJ1ZVxuICB9XG5cbiAgcHVibGljIGNyZWF0ZUNvbnRleHQgKFxuICAgIGFyZ3M6IHVua25vd25bXSxcbiAgICBpbnN0YW5jZTogQ29udHJvbGxlclR5cGUsXG4gICAgY2FsbGJhY2s6ICguLi5hcmdzOiB1bmtub3duW10pID0+IHVua25vd25cbiAgKTogRXhlY3V0aW9uQ29udGV4dEhvc3Qge1xuICAgIHJldHVybiBuZXcgRXhlY3V0aW9uQ29udGV4dEhvc3QoYXJncywgaW5zdGFuY2UuY29uc3RydWN0b3IgYXMgYW55LCBjYWxsYmFjaylcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBwaWNrUmVzdWx0IChcbiAgICByZXN1bHQ6IGJvb2xlYW4gfCBQcm9taXNlPGJvb2xlYW4+IHwgT2JzZXJ2YWJsZTxib29sZWFuPlxuICApOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICBpZiAocmVzdWx0IGluc3RhbmNlb2YgT2JzZXJ2YWJsZSkge1xuICAgICAgICByZXR1cm4gbGFzdFZhbHVlRnJvbShyZXN1bHQpXG4gICAgfVxuICAgIHJldHVybiByZXN1bHRcbiAgfVxufVxuIl19