cds-rate-limit
Version:
enabled rate limit pattern for CAP NodeJS Runtime
28 lines • 1.65 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.keyExtractorCreatorBuilder = exports.builtInExtractors = void 0;
exports.builtInExtractors = [
{
targetKeyPart: "tenant",
extract: (evt) => { var _a; return (_a = evt === null || evt === void 0 ? void 0 : evt.tenant) !== null && _a !== void 0 ? _a : "unknown_tenant"; }
},
{
targetKeyPart: "user_id",
extract: (evt) => { var _a, _b; return (_b = (_a = evt === null || evt === void 0 ? void 0 : evt.user) === null || _a === void 0 ? void 0 : _a.id) !== null && _b !== void 0 ? _b : "unknown_user"; }
},
{
targetKeyPart: "remote_ip",
extract: (evt) => { var _a, _b, _c, _d, _e, _f; return (_f = (_c = (_b = (_a = evt === null || evt === void 0 ? void 0 : evt._) === null || _a === void 0 ? void 0 : _a.req) === null || _b === void 0 ? void 0 : _b.ip) !== null && _c !== void 0 ? _c : (_e = (_d = evt === null || evt === void 0 ? void 0 : evt._) === null || _d === void 0 ? void 0 : _d.req) === null || _e === void 0 ? void 0 : _e.socket.remoteAddress) !== null && _f !== void 0 ? _f : "unknown_ip"; }
},
];
const keyExtractorCreatorBuilder = (extensionExtractors = []) => (keyParts) => (evt) => {
const parts = [];
for (const extractor of [...exports.builtInExtractors, ...extensionExtractors]) {
if (extractor.targetKeyPart !== undefined && keyParts.includes(extractor.targetKeyPart)) {
parts.push(extractor.extract(evt));
}
}
return parts.join("/");
};
exports.keyExtractorCreatorBuilder = keyExtractorCreatorBuilder;
//# sourceMappingURL=key.js.map