@tsclean/core
Version:
Plugin for API Rest Full development, based on Clean Architecture, IoC and Dependency Injection.
44 lines • 5.93 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.GatewayMetadataExplorer = void 0;
const helpers_1 = require("../helpers");
const shared_utils_1 = require("../utils/shared.utils");
class GatewayMetadataExplorer {
constructor(metadataScanner) {
this.metadataScanner = metadataScanner;
}
explore(instance) {
const instancePrototype = Object.getPrototypeOf(instance);
return this.metadataScanner
.getAllMethodNames(instancePrototype)
.map(method => this.exploreMethodMetadata(instancePrototype, method))
.filter(metadata => metadata);
}
exploreMethodMetadata(instancePrototype, methodName) {
const callback = instancePrototype[methodName];
const isMessageMapping = Reflect.getMetadata(helpers_1.MESSAGE_MAPPING_METADATA, callback);
if ((0, shared_utils_1.isUndefined)(isMessageMapping)) {
return null;
}
const message = Reflect.getMetadata(helpers_1.MESSAGE_METADATA, callback);
return {
callback,
message,
methodName
};
}
*scanForServerHooks(instance) {
for (const propertyKey in instance) {
if ((0, shared_utils_1.isFunction)(propertyKey)) {
continue;
}
const property = String(propertyKey);
const isServer = Reflect.getMetadata(helpers_1.GATEWAY_SERVER_METADATA, instance, property);
if (!(0, shared_utils_1.isUndefined)(isServer)) {
yield property;
}
}
}
}
exports.GatewayMetadataExplorer = GatewayMetadataExplorer;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2F0ZXdheS1tZXRhZGF0YS1leHBsb3Jlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy93ZWJzb2NrZXRzL2dhdGV3YXktbWV0YWRhdGEtZXhwbG9yZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBR0Esd0NBSW1CO0FBQ25CLHdEQUErRDtBQVEvRCxNQUFhLHVCQUF1QjtJQUNsQyxZQUE4QixlQUFnQztRQUFoQyxvQkFBZSxHQUFmLGVBQWUsQ0FBaUI7SUFBRyxDQUFDO0lBRTNELE9BQU8sQ0FBRSxRQUFzQjtRQUNwQyxNQUFNLGlCQUFpQixHQUFHLE1BQU0sQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDLENBQUE7UUFDekQsT0FBTyxJQUFJLENBQUMsZUFBZTthQUN4QixpQkFBaUIsQ0FBQyxpQkFBaUIsQ0FBQzthQUNwQyxHQUFHLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMscUJBQXFCLENBQUMsaUJBQWlCLEVBQUUsTUFBTSxDQUFDLENBQUM7YUFDcEUsTUFBTSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLENBQUE7SUFDakMsQ0FBQztJQUVNLHFCQUFxQixDQUMxQixpQkFBeUIsRUFDekIsVUFBa0I7UUFFbEIsTUFBTSxRQUFRLEdBQUcsaUJBQWlCLENBQUMsVUFBVSxDQUFDLENBQUE7UUFDOUMsTUFBTSxnQkFBZ0IsR0FBRyxPQUFPLENBQUMsV0FBVyxDQUMxQyxrQ0FBd0IsRUFDeEIsUUFBUSxDQUNULENBQUE7UUFDRCxJQUFJLElBQUEsMEJBQVcsRUFBQyxnQkFBZ0IsQ0FBQyxFQUFFLENBQUM7WUFDbEMsT0FBTyxJQUFJLENBQUE7UUFDYixDQUFDO1FBQ0QsTUFBTSxPQUFPLEdBQUcsT0FBTyxDQUFDLFdBQVcsQ0FBQywwQkFBZ0IsRUFBRSxRQUFRLENBQUMsQ0FBQTtRQUMvRCxPQUFPO1lBQ0wsUUFBUTtZQUNSLE9BQU87WUFDUCxVQUFVO1NBQ1gsQ0FBQTtJQUNILENBQUM7SUFFTSxDQUFDLGtCQUFrQixDQUFFLFFBQXNCO1FBQ2hELEtBQUssTUFBTSxXQUFXLElBQUksUUFBUSxFQUFFLENBQUM7WUFDbkMsSUFBSSxJQUFBLHlCQUFVLEVBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQztnQkFDNUIsU0FBUTtZQUNWLENBQUM7WUFDRCxNQUFNLFFBQVEsR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUE7WUFDcEMsTUFBTSxRQUFRLEdBQUcsT0FBTyxDQUFDLFdBQVcsQ0FDbEMsaUNBQXVCLEVBQ3ZCLFFBQVEsRUFDUixRQUFRLENBQ1QsQ0FBQTtZQUNELElBQUksQ0FBQyxJQUFBLDBCQUFXLEVBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQztnQkFDM0IsTUFBTSxRQUFRLENBQUE7WUFDaEIsQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDO0NBQ0Y7QUEvQ0QsMERBK0NDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnXG5pbXBvcnQgeyBNZXRhZGF0YVNjYW5uZXIgfSBmcm9tICcuLi9hcHAnXG5pbXBvcnQgeyBDbGVhbkdhdGV3YXkgfSBmcm9tICcuLi9jb250cmFjdHMnXG5pbXBvcnQge1xuICBHQVRFV0FZX1NFUlZFUl9NRVRBREFUQSxcbiAgTUVTU0FHRV9NQVBQSU5HX01FVEFEQVRBLFxuICBNRVNTQUdFX01FVEFEQVRBXG59IGZyb20gJy4uL2hlbHBlcnMnXG5pbXBvcnQgeyBpc0Z1bmN0aW9uLCBpc1VuZGVmaW5lZCB9IGZyb20gJy4uL3V0aWxzL3NoYXJlZC51dGlscydcblxuZXhwb3J0IGludGVyZmFjZSBNZXNzYWdlTWFwcGluZ1Byb3BlcnRpZXMge1xuICBtZXNzYWdlOiBhbnlcbiAgbWV0aG9kTmFtZTogc3RyaW5nXG4gIGNhbGxiYWNrOiAoLi4uYXJnczogYW55W10pID0+IE9ic2VydmFibGU8YW55PiB8IFByb21pc2U8YW55PiB8IGFueVxufVxuXG5leHBvcnQgY2xhc3MgR2F0ZXdheU1ldGFkYXRhRXhwbG9yZXIge1xuICBjb25zdHJ1Y3RvciAocHJpdmF0ZSByZWFkb25seSBtZXRhZGF0YVNjYW5uZXI6IE1ldGFkYXRhU2Nhbm5lcikge31cblxuICBwdWJsaWMgZXhwbG9yZSAoaW5zdGFuY2U6IENsZWFuR2F0ZXdheSk6IE1lc3NhZ2VNYXBwaW5nUHJvcGVydGllc1tdIHtcbiAgICBjb25zdCBpbnN0YW5jZVByb3RvdHlwZSA9IE9iamVjdC5nZXRQcm90b3R5cGVPZihpbnN0YW5jZSlcbiAgICByZXR1cm4gdGhpcy5tZXRhZGF0YVNjYW5uZXJcbiAgICAgIC5nZXRBbGxNZXRob2ROYW1lcyhpbnN0YW5jZVByb3RvdHlwZSlcbiAgICAgIC5tYXAobWV0aG9kID0+IHRoaXMuZXhwbG9yZU1ldGhvZE1ldGFkYXRhKGluc3RhbmNlUHJvdG90eXBlLCBtZXRob2QpKVxuICAgICAgLmZpbHRlcihtZXRhZGF0YSA9PiBtZXRhZGF0YSlcbiAgfVxuXG4gIHB1YmxpYyBleHBsb3JlTWV0aG9kTWV0YWRhdGEgKFxuICAgIGluc3RhbmNlUHJvdG90eXBlOiBvYmplY3QsXG4gICAgbWV0aG9kTmFtZTogc3RyaW5nXG4gICk6IE1lc3NhZ2VNYXBwaW5nUHJvcGVydGllcyB7XG4gICAgY29uc3QgY2FsbGJhY2sgPSBpbnN0YW5jZVByb3RvdHlwZVttZXRob2ROYW1lXVxuICAgIGNvbnN0IGlzTWVzc2FnZU1hcHBpbmcgPSBSZWZsZWN0LmdldE1ldGFkYXRhKFxuICAgICAgTUVTU0FHRV9NQVBQSU5HX01FVEFEQVRBLFxuICAgICAgY2FsbGJhY2tcbiAgICApXG4gICAgaWYgKGlzVW5kZWZpbmVkKGlzTWVzc2FnZU1hcHBpbmcpKSB7XG4gICAgICByZXR1cm4gbnVsbFxuICAgIH1cbiAgICBjb25zdCBtZXNzYWdlID0gUmVmbGVjdC5nZXRNZXRhZGF0YShNRVNTQUdFX01FVEFEQVRBLCBjYWxsYmFjaylcbiAgICByZXR1cm4ge1xuICAgICAgY2FsbGJhY2ssXG4gICAgICBtZXNzYWdlLFxuICAgICAgbWV0aG9kTmFtZVxuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyAqc2NhbkZvclNlcnZlckhvb2tzIChpbnN0YW5jZTogQ2xlYW5HYXRld2F5KTogSXRlcmFibGVJdGVyYXRvcjxzdHJpbmc+IHtcbiAgICBmb3IgKGNvbnN0IHByb3BlcnR5S2V5IGluIGluc3RhbmNlKSB7XG4gICAgICBpZiAoaXNGdW5jdGlvbihwcm9wZXJ0eUtleSkpIHtcbiAgICAgICAgY29udGludWVcbiAgICAgIH1cbiAgICAgIGNvbnN0IHByb3BlcnR5ID0gU3RyaW5nKHByb3BlcnR5S2V5KVxuICAgICAgY29uc3QgaXNTZXJ2ZXIgPSBSZWZsZWN0LmdldE1ldGFkYXRhKFxuICAgICAgICBHQVRFV0FZX1NFUlZFUl9NRVRBREFUQSxcbiAgICAgICAgaW5zdGFuY2UsXG4gICAgICAgIHByb3BlcnR5XG4gICAgICApXG4gICAgICBpZiAoIWlzVW5kZWZpbmVkKGlzU2VydmVyKSkge1xuICAgICAgICB5aWVsZCBwcm9wZXJ0eVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuIl19