lisk-framework
Version:
Lisk blockchain application platform
28 lines • 1.47 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.getEndpointPath = exports.mergeEndpointHandlers = exports.getEndpointHandlers = exports.isReservedEndpointFunction = void 0;
const reservedEndpointName = ['constructor', 'init', 'addDependencies'];
const isReservedEndpointFunction = (key) => key.startsWith('_') || reservedEndpointName.includes(key);
exports.isReservedEndpointFunction = isReservedEndpointFunction;
const getEndpointHandlers = (endpoint) => {
const endpointHandlers = new Map();
let isBaseEndpoint;
let localEndpoint = endpoint;
do {
for (const key of Object.getOwnPropertyNames(localEndpoint)) {
const val = localEndpoint[key];
if (!(0, exports.isReservedEndpointFunction)(key) && typeof val === 'function') {
endpointHandlers.set(key, val.bind(endpoint));
}
}
localEndpoint = Object.getPrototypeOf(localEndpoint);
isBaseEndpoint = localEndpoint.constructor.name === Object.name;
} while (!isBaseEndpoint);
return endpointHandlers;
};
exports.getEndpointHandlers = getEndpointHandlers;
const mergeEndpointHandlers = (...handlers) => handlers.reduce((prev, curr) => new Map([...prev, ...curr]), new Map());
exports.mergeEndpointHandlers = mergeEndpointHandlers;
const getEndpointPath = (namespace, method) => `${namespace}_${method}`;
exports.getEndpointPath = getEndpointPath;
//# sourceMappingURL=endpoint.js.map