@tsclean/core
Version:
Plugin for API Rest Full development, based on Clean Architecture, IoC and Dependency Injection.
19 lines • 3.82 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.AccessResource = AccessResource;
const helpers_1 = require("../helpers");
const utils_1 = require("../utils");
function AccessResource(...resources) {
return (target, key, descriptor) => {
const isAccessResourceValid = (resource) => resource && ((0, utils_1.isFunction)(resource) || (0, utils_1.isFunction)(resource.accessResource));
if (descriptor) {
(0, utils_1.validateEach)(target.constructor, resources, isAccessResourceValid, '@AccessResource', 'resource');
(0, utils_1.extendArrayMetadata)(helpers_1.RESOURCES_METADATA, resources, descriptor.value);
return descriptor;
}
(0, utils_1.validateEach)(target, resources, isAccessResourceValid, '@AccessResource', 'resource');
(0, utils_1.extendArrayMetadata)(helpers_1.RESOURCES_METADATA, resources, target);
return target;
};
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNjZXNzLXJlc291cmNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2RlY29yYXRvcnMvYWNjZXNzLXJlc291cmNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBSUEsd0NBOEJDO0FBbENELHdDQUE4QztBQUU5QyxvQ0FBdUU7QUFFdkUsU0FBZ0IsY0FBYyxDQUMxQixHQUFHLFNBQ3NDO0lBR3pDLE9BQU8sQ0FBQyxNQUFXLEVBQUUsR0FBcUIsRUFBRSxVQUF5QyxFQUFFLEVBQUU7UUFDckYsTUFBTSxxQkFBcUIsR0FBRyxDQUEyQyxRQUFXLEVBQUUsRUFBRSxDQUNwRixRQUFRLElBQUksQ0FBQyxJQUFBLGtCQUFVLEVBQUMsUUFBUSxDQUFDLElBQUksSUFBQSxrQkFBVSxFQUFFLFFBQWdDLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQztRQUV2RyxJQUFJLFVBQVUsRUFBRSxDQUFDO1lBQ2IsSUFBQSxvQkFBWSxFQUNSLE1BQU0sQ0FBQyxXQUFXLEVBQ2xCLFNBQVMsRUFDVCxxQkFBcUIsRUFDckIsaUJBQWlCLEVBQ2pCLFVBQVUsQ0FDYixDQUFDO1lBQ0YsSUFBQSwyQkFBbUIsRUFBQyw0QkFBa0IsRUFBRSxTQUFTLEVBQUUsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ3JFLE9BQU8sVUFBVSxDQUFDO1FBQ3RCLENBQUM7UUFDRCxJQUFBLG9CQUFZLEVBQ1IsTUFBTSxFQUNOLFNBQVMsRUFDVCxxQkFBcUIsRUFDckIsaUJBQWlCLEVBQ2pCLFVBQVUsQ0FDYixDQUFDO1FBQ0YsSUFBQSwyQkFBbUIsRUFBQyw0QkFBa0IsRUFBRSxTQUFTLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDM0QsT0FBTyxNQUFNLENBQUM7SUFDbEIsQ0FBQyxDQUFDO0FBQ04sQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7UkVTT1VSQ0VTX01FVEFEQVRBfSBmcm9tICcuLi9oZWxwZXJzJztcbmltcG9ydCB7QWNjZXNzUmVzb3VyY2VJbnRlcmZhY2V9IGZyb20gJy4uL2NvbnRyYWN0cyc7XG5pbXBvcnQge2V4dGVuZEFycmF5TWV0YWRhdGEsIGlzRnVuY3Rpb24sIHZhbGlkYXRlRWFjaH0gZnJvbSAnLi4vdXRpbHMnO1xuXG5leHBvcnQgZnVuY3Rpb24gQWNjZXNzUmVzb3VyY2UoXG4gICAgLi4ucmVzb3VyY2VzOiAoXG4gICAgICAgIEFjY2Vzc1Jlc291cmNlSW50ZXJmYWNlIHwgRnVuY3Rpb24pW11cbik6IE1ldGhvZERlY29yYXRvciAmIENsYXNzRGVjb3JhdG9yIHtcblxuICAgIHJldHVybiAodGFyZ2V0OiBhbnksIGtleT86IHN0cmluZyB8IHN5bWJvbCwgZGVzY3JpcHRvcj86IFR5cGVkUHJvcGVydHlEZXNjcmlwdG9yPGFueT4pID0+IHtcbiAgICAgICAgY29uc3QgaXNBY2Nlc3NSZXNvdXJjZVZhbGlkID0gPFQgZXh0ZW5kcyBGdW5jdGlvbiB8IFJlY29yZDxzdHJpbmcsIGFueT4+KHJlc291cmNlOiBUKSA9PlxuICAgICAgICAgICAgcmVzb3VyY2UgJiYgKGlzRnVuY3Rpb24ocmVzb3VyY2UpIHx8IGlzRnVuY3Rpb24oKHJlc291cmNlIGFzIFJlY29yZDxzdHJpbmcsIGFueT4pLmFjY2Vzc1Jlc291cmNlKSk7XG5cbiAgICAgICAgaWYgKGRlc2NyaXB0b3IpIHtcbiAgICAgICAgICAgIHZhbGlkYXRlRWFjaChcbiAgICAgICAgICAgICAgICB0YXJnZXQuY29uc3RydWN0b3IsXG4gICAgICAgICAgICAgICAgcmVzb3VyY2VzLFxuICAgICAgICAgICAgICAgIGlzQWNjZXNzUmVzb3VyY2VWYWxpZCxcbiAgICAgICAgICAgICAgICAnQEFjY2Vzc1Jlc291cmNlJyxcbiAgICAgICAgICAgICAgICAncmVzb3VyY2UnXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgZXh0ZW5kQXJyYXlNZXRhZGF0YShSRVNPVVJDRVNfTUVUQURBVEEsIHJlc291cmNlcywgZGVzY3JpcHRvci52YWx1ZSk7XG4gICAgICAgICAgICByZXR1cm4gZGVzY3JpcHRvcjtcbiAgICAgICAgfVxuICAgICAgICB2YWxpZGF0ZUVhY2goXG4gICAgICAgICAgICB0YXJnZXQsXG4gICAgICAgICAgICByZXNvdXJjZXMsXG4gICAgICAgICAgICBpc0FjY2Vzc1Jlc291cmNlVmFsaWQsXG4gICAgICAgICAgICAnQEFjY2Vzc1Jlc291cmNlJyxcbiAgICAgICAgICAgICdyZXNvdXJjZSdcbiAgICAgICAgKTtcbiAgICAgICAgZXh0ZW5kQXJyYXlNZXRhZGF0YShSRVNPVVJDRVNfTUVUQURBVEEsIHJlc291cmNlcywgdGFyZ2V0KTtcbiAgICAgICAgcmV0dXJuIHRhcmdldDtcbiAgICB9O1xufVxuIl19