nestjs-advanced-rate-limiter 0.1.0 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/decorators/index.js +7 -0
- package/dist/cjs/decorators/skip-throttle.decorator.js +17 -0
- package/dist/cjs/decorators/throttle.decorator.js +17 -0
- package/dist/cjs/index.js +23 -0
- package/dist/cjs/package.json +1 -0
- package/dist/cjs/throttler.constants.js +6 -0
- package/dist/cjs/throttler.guard.js +120 -0
- package/dist/cjs/throttler.interfaces.js +2 -0
- package/dist/cjs/throttler.module.js +67 -0
- package/dist/cjs/trackers.js +86 -0
- package/dist/esm/decorators/index.d.ts.map +1 -0
- package/dist/esm/decorators/index.js.map +1 -0
- package/dist/esm/decorators/skip-throttle.decorator.d.ts.map +1 -0
- package/dist/esm/decorators/skip-throttle.decorator.js.map +1 -0
- package/dist/esm/decorators/throttle.decorator.d.ts.map +1 -0
- package/dist/esm/decorators/throttle.decorator.js.map +1 -0
- package/dist/esm/index.d.ts.map +1 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/throttler.constants.d.ts.map +1 -0
- package/dist/esm/throttler.constants.js.map +1 -0
- package/dist/esm/throttler.guard.d.ts.map +1 -0
- package/dist/esm/throttler.guard.js.map +1 -0
- package/dist/esm/throttler.interfaces.d.ts.map +1 -0
- package/dist/esm/throttler.interfaces.js.map +1 -0
- package/dist/esm/throttler.module.d.ts.map +1 -0
- package/dist/esm/throttler.module.js.map +1 -0
- package/dist/esm/trackers.d.ts.map +1 -0
- package/dist/esm/trackers.js.map +1 -0
- package/package.json +9 -6
- package/dist/decorators/index.d.ts.map +0 -1
- package/dist/decorators/index.js.map +0 -1
- package/dist/decorators/skip-throttle.decorator.d.ts.map +0 -1
- package/dist/decorators/skip-throttle.decorator.js.map +0 -1
- package/dist/decorators/throttle.decorator.d.ts.map +0 -1
- package/dist/decorators/throttle.decorator.js.map +0 -1
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/throttler.constants.d.ts.map +0 -1
- package/dist/throttler.constants.js.map +0 -1
- package/dist/throttler.guard.d.ts.map +0 -1
- package/dist/throttler.guard.js.map +0 -1
- package/dist/throttler.interfaces.d.ts.map +0 -1
- package/dist/throttler.interfaces.js.map +0 -1
- package/dist/throttler.module.d.ts.map +0 -1
- package/dist/throttler.module.js.map +0 -1
- package/dist/trackers.d.ts.map +0 -1
- package/dist/trackers.js.map +0 -1
- /package/dist/{decorators → esm/decorators}/index.d.ts +0 -0
- /package/dist/{decorators → esm/decorators}/index.js +0 -0
- /package/dist/{decorators → esm/decorators}/skip-throttle.decorator.d.ts +0 -0
- /package/dist/{decorators → esm/decorators}/skip-throttle.decorator.js +0 -0
- /package/dist/{decorators → esm/decorators}/throttle.decorator.d.ts +0 -0
- /package/dist/{decorators → esm/decorators}/throttle.decorator.js +0 -0
- /package/dist/{index.d.ts → esm/index.d.ts} +0 -0
- /package/dist/{index.js → esm/index.js} +0 -0
- /package/dist/{throttler.constants.d.ts → esm/throttler.constants.d.ts} +0 -0
- /package/dist/{throttler.constants.js → esm/throttler.constants.js} +0 -0
- /package/dist/{throttler.guard.d.ts → esm/throttler.guard.d.ts} +0 -0
- /package/dist/{throttler.guard.js → esm/throttler.guard.js} +0 -0
- /package/dist/{throttler.interfaces.d.ts → esm/throttler.interfaces.d.ts} +0 -0
- /package/dist/{throttler.interfaces.js → esm/throttler.interfaces.js} +0 -0
- /package/dist/{throttler.module.d.ts → esm/throttler.module.d.ts} +0 -0
- /package/dist/{throttler.module.js → esm/throttler.module.js} +0 -0
- /package/dist/{trackers.d.ts → esm/trackers.d.ts} +0 -0
- /package/dist/{trackers.js → esm/trackers.js} +0 -0
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Throttle = exports.SkipThrottle = void 0;
|
|
4
|
+
var skip_throttle_decorator_1 = require("./skip-throttle.decorator");
|
|
5
|
+
Object.defineProperty(exports, "SkipThrottle", { enumerable: true, get: function () { return skip_throttle_decorator_1.SkipThrottle; } });
|
|
6
|
+
var throttle_decorator_1 = require("./throttle.decorator");
|
|
7
|
+
Object.defineProperty(exports, "Throttle", { enumerable: true, get: function () { return throttle_decorator_1.Throttle; } });
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.SkipThrottle = void 0;
|
|
4
|
+
const common_1 = require("@nestjs/common");
|
|
5
|
+
const throttler_constants_1 = require("../throttler.constants");
|
|
6
|
+
/**
|
|
7
|
+
* Skip rate limiting for a specific controller or route.
|
|
8
|
+
*
|
|
9
|
+
* @example
|
|
10
|
+
* ```ts
|
|
11
|
+
* @SkipThrottle()
|
|
12
|
+
* @Get("health")
|
|
13
|
+
* health() { return "ok"; }
|
|
14
|
+
* ```
|
|
15
|
+
*/
|
|
16
|
+
const SkipThrottle = () => (0, common_1.SetMetadata)(throttler_constants_1.THROTTLER_SKIP, true);
|
|
17
|
+
exports.SkipThrottle = SkipThrottle;
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Throttle = void 0;
|
|
4
|
+
const common_1 = require("@nestjs/common");
|
|
5
|
+
const throttler_constants_1 = require("../throttler.constants");
|
|
6
|
+
/**
|
|
7
|
+
* Override the default rate limit algorithm for a specific controller or route.
|
|
8
|
+
*
|
|
9
|
+
* @example
|
|
10
|
+
* ```ts
|
|
11
|
+
* @Throttle({ algorithm: "fixed-window", limit: 5, windowMs: 60_000 })
|
|
12
|
+
* @Post("login")
|
|
13
|
+
* login() { ... }
|
|
14
|
+
* ```
|
|
15
|
+
*/
|
|
16
|
+
const Throttle = (config) => (0, common_1.SetMetadata)(throttler_constants_1.THROTTLER_ALGORITHM, config);
|
|
17
|
+
exports.Throttle = Throttle;
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ResilientStore = exports.RedisStore = exports.MemoryStore = exports.THROTTLER_OPTIONS = exports.userTracker = exports.ThrottlerModule = exports.ThrottlerGuard = exports.Throttle = exports.SkipThrottle = void 0;
|
|
4
|
+
// Decorators
|
|
5
|
+
var decorators_1 = require("./decorators");
|
|
6
|
+
Object.defineProperty(exports, "SkipThrottle", { enumerable: true, get: function () { return decorators_1.SkipThrottle; } });
|
|
7
|
+
Object.defineProperty(exports, "Throttle", { enumerable: true, get: function () { return decorators_1.Throttle; } });
|
|
8
|
+
// Guard
|
|
9
|
+
var throttler_guard_1 = require("./throttler.guard");
|
|
10
|
+
Object.defineProperty(exports, "ThrottlerGuard", { enumerable: true, get: function () { return throttler_guard_1.ThrottlerGuard; } });
|
|
11
|
+
// Module
|
|
12
|
+
var throttler_module_1 = require("./throttler.module");
|
|
13
|
+
Object.defineProperty(exports, "ThrottlerModule", { enumerable: true, get: function () { return throttler_module_1.ThrottlerModule; } });
|
|
14
|
+
// Trackers
|
|
15
|
+
var trackers_1 = require("./trackers");
|
|
16
|
+
Object.defineProperty(exports, "userTracker", { enumerable: true, get: function () { return trackers_1.userTracker; } });
|
|
17
|
+
// Constants
|
|
18
|
+
var throttler_constants_1 = require("./throttler.constants");
|
|
19
|
+
Object.defineProperty(exports, "THROTTLER_OPTIONS", { enumerable: true, get: function () { return throttler_constants_1.THROTTLER_OPTIONS; } });
|
|
20
|
+
var elysia_advanced_rate_limiter_1 = require("elysia-advanced-rate-limiter");
|
|
21
|
+
Object.defineProperty(exports, "MemoryStore", { enumerable: true, get: function () { return elysia_advanced_rate_limiter_1.MemoryStore; } });
|
|
22
|
+
Object.defineProperty(exports, "RedisStore", { enumerable: true, get: function () { return elysia_advanced_rate_limiter_1.RedisStore; } });
|
|
23
|
+
Object.defineProperty(exports, "ResilientStore", { enumerable: true, get: function () { return elysia_advanced_rate_limiter_1.ResilientStore; } });
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"type":"commonjs"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.THROTTLER_SKIP = exports.THROTTLER_ALGORITHM = exports.THROTTLER_OPTIONS = void 0;
|
|
4
|
+
exports.THROTTLER_OPTIONS = "THROTTLER_OPTIONS";
|
|
5
|
+
exports.THROTTLER_ALGORITHM = "THROTTLER:algorithm";
|
|
6
|
+
exports.THROTTLER_SKIP = "THROTTLER:skip";
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
+
};
|
|
11
|
+
var __param = (this && this.__param) || function (paramIndex, decorator) {
|
|
12
|
+
return function (target, key) { decorator(target, key, paramIndex); }
|
|
13
|
+
};
|
|
14
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
+
exports.ThrottlerGuard = void 0;
|
|
16
|
+
const common_1 = require("@nestjs/common");
|
|
17
|
+
const core_1 = require("@nestjs/core");
|
|
18
|
+
const elysia_advanced_rate_limiter_1 = require("elysia-advanced-rate-limiter");
|
|
19
|
+
const throttler_constants_1 = require("./throttler.constants");
|
|
20
|
+
const MAX_RETRY_MS = 2_147_483_647;
|
|
21
|
+
function sanitize(val) {
|
|
22
|
+
return Number.isFinite(val) ? val : MAX_RETRY_MS;
|
|
23
|
+
}
|
|
24
|
+
function computeTtlMs(config) {
|
|
25
|
+
switch (config.algorithm) {
|
|
26
|
+
case "token-bucket":
|
|
27
|
+
return Math.ceil((config.capacity / config.refillRate) * 1000) + 60_000;
|
|
28
|
+
case "sliding-window":
|
|
29
|
+
case "fixed-window":
|
|
30
|
+
return config.windowMs + 60_000;
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
let ThrottlerGuard = class ThrottlerGuard {
|
|
34
|
+
options;
|
|
35
|
+
reflector;
|
|
36
|
+
store;
|
|
37
|
+
defaultAlgorithm;
|
|
38
|
+
prefix;
|
|
39
|
+
skipIf;
|
|
40
|
+
getTracker;
|
|
41
|
+
ignoreUserAgents;
|
|
42
|
+
errorMessage;
|
|
43
|
+
constructor(options, reflector) {
|
|
44
|
+
this.options = options;
|
|
45
|
+
this.reflector = reflector;
|
|
46
|
+
this.defaultAlgorithm = options.algorithm ?? {
|
|
47
|
+
algorithm: "token-bucket",
|
|
48
|
+
capacity: 100,
|
|
49
|
+
refillRate: 10,
|
|
50
|
+
};
|
|
51
|
+
this.store = options.store ?? new elysia_advanced_rate_limiter_1.MemoryStore({ maxKeys: 100_000 });
|
|
52
|
+
this.prefix = options.prefix ?? "rl:";
|
|
53
|
+
this.skipIf = options.skipIf;
|
|
54
|
+
this.getTracker = options.getTracker ?? this.defaultGetTracker;
|
|
55
|
+
this.ignoreUserAgents = options.ignoreUserAgents ?? [];
|
|
56
|
+
this.errorMessage = options.errorMessage ?? "Too Many Requests";
|
|
57
|
+
}
|
|
58
|
+
async canActivate(context) {
|
|
59
|
+
const skipClass = this.reflector.get(throttler_constants_1.THROTTLER_SKIP, context.getClass());
|
|
60
|
+
if (skipClass)
|
|
61
|
+
return true;
|
|
62
|
+
const skipHandler = this.reflector.get(throttler_constants_1.THROTTLER_SKIP, context.getHandler());
|
|
63
|
+
if (skipHandler)
|
|
64
|
+
return true;
|
|
65
|
+
const req = context.switchToHttp().getRequest();
|
|
66
|
+
const res = context.switchToHttp().getResponse();
|
|
67
|
+
if (this.skipIf?.(req))
|
|
68
|
+
return true;
|
|
69
|
+
const userAgent = req.headers?.["user-agent"] ?? "";
|
|
70
|
+
if (this.ignoreUserAgents.some((regex) => regex.test(userAgent))) {
|
|
71
|
+
return true;
|
|
72
|
+
}
|
|
73
|
+
const algorithmConfig = this.reflector.getAllAndOverride(throttler_constants_1.THROTTLER_ALGORITHM, [
|
|
74
|
+
context.getHandler(),
|
|
75
|
+
context.getClass(),
|
|
76
|
+
]) ?? this.defaultAlgorithm;
|
|
77
|
+
const tracker = this.getTracker(req);
|
|
78
|
+
const storeKey = `${this.prefix}${tracker}`;
|
|
79
|
+
const ttlMs = computeTtlMs(algorithmConfig);
|
|
80
|
+
const nowMs = Date.now();
|
|
81
|
+
const result = await this.store.check(storeKey, algorithmConfig, nowMs, ttlMs);
|
|
82
|
+
const remaining = sanitize(result.remaining);
|
|
83
|
+
const resetMs = sanitize(result.resetMs);
|
|
84
|
+
const resetTimestamp = String(Math.ceil((nowMs + resetMs) / 1000));
|
|
85
|
+
res.header("X-RateLimit-Limit", String(result.limit));
|
|
86
|
+
res.header("X-RateLimit-Remaining", String(remaining));
|
|
87
|
+
res.header("X-RateLimit-Reset", resetTimestamp);
|
|
88
|
+
if (!result.allowed) {
|
|
89
|
+
const retryAfterMs = sanitize(result.retryAfterMs);
|
|
90
|
+
const retryAfter = String(Math.ceil(retryAfterMs / 1000));
|
|
91
|
+
res.header("Retry-After", retryAfter);
|
|
92
|
+
const body = typeof this.errorMessage === "function"
|
|
93
|
+
? this.errorMessage(result)
|
|
94
|
+
: { statusCode: 429, message: this.errorMessage };
|
|
95
|
+
throw new common_1.HttpException(body, common_1.HttpStatus.TOO_MANY_REQUESTS);
|
|
96
|
+
}
|
|
97
|
+
return true;
|
|
98
|
+
}
|
|
99
|
+
defaultGetTracker(req) {
|
|
100
|
+
const cfIp = req.headers?.["cf-connecting-ip"];
|
|
101
|
+
if (cfIp)
|
|
102
|
+
return cfIp;
|
|
103
|
+
const realIp = req.headers?.["x-real-ip"];
|
|
104
|
+
if (realIp)
|
|
105
|
+
return realIp;
|
|
106
|
+
const xff = req.headers?.["x-forwarded-for"];
|
|
107
|
+
if (xff) {
|
|
108
|
+
const first = typeof xff === "string" ? xff.split(",")[0]?.trim() : xff[0];
|
|
109
|
+
if (first)
|
|
110
|
+
return first;
|
|
111
|
+
}
|
|
112
|
+
return req.ip ?? req.socket?.remoteAddress ?? "anonymous";
|
|
113
|
+
}
|
|
114
|
+
};
|
|
115
|
+
exports.ThrottlerGuard = ThrottlerGuard;
|
|
116
|
+
exports.ThrottlerGuard = ThrottlerGuard = __decorate([
|
|
117
|
+
(0, common_1.Injectable)(),
|
|
118
|
+
__param(0, (0, common_1.Inject)(throttler_constants_1.THROTTLER_OPTIONS)),
|
|
119
|
+
__metadata("design:paramtypes", [Object, core_1.Reflector])
|
|
120
|
+
], ThrottlerGuard);
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
var ThrottlerModule_1;
|
|
9
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
10
|
+
exports.ThrottlerModule = void 0;
|
|
11
|
+
const common_1 = require("@nestjs/common");
|
|
12
|
+
const throttler_constants_1 = require("./throttler.constants");
|
|
13
|
+
const throttler_guard_1 = require("./throttler.guard");
|
|
14
|
+
let ThrottlerModule = ThrottlerModule_1 = class ThrottlerModule {
|
|
15
|
+
static forRoot(options = {}) {
|
|
16
|
+
return {
|
|
17
|
+
module: ThrottlerModule_1,
|
|
18
|
+
global: true,
|
|
19
|
+
providers: [
|
|
20
|
+
{ provide: throttler_constants_1.THROTTLER_OPTIONS, useValue: options },
|
|
21
|
+
throttler_guard_1.ThrottlerGuard,
|
|
22
|
+
],
|
|
23
|
+
exports: [throttler_constants_1.THROTTLER_OPTIONS, throttler_guard_1.ThrottlerGuard],
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
static forRootAsync(options) {
|
|
27
|
+
const providers = this.createAsyncProviders(options);
|
|
28
|
+
return {
|
|
29
|
+
module: ThrottlerModule_1,
|
|
30
|
+
global: true,
|
|
31
|
+
imports: options.imports ?? [],
|
|
32
|
+
providers: [...providers, throttler_guard_1.ThrottlerGuard],
|
|
33
|
+
exports: [throttler_constants_1.THROTTLER_OPTIONS, throttler_guard_1.ThrottlerGuard],
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
static createAsyncProviders(options) {
|
|
37
|
+
if (options.useExisting || options.useFactory) {
|
|
38
|
+
return [this.createAsyncOptionsProvider(options)];
|
|
39
|
+
}
|
|
40
|
+
if (options.useClass) {
|
|
41
|
+
return [
|
|
42
|
+
this.createAsyncOptionsProvider(options),
|
|
43
|
+
{ provide: options.useClass, useClass: options.useClass },
|
|
44
|
+
];
|
|
45
|
+
}
|
|
46
|
+
return [{ provide: throttler_constants_1.THROTTLER_OPTIONS, useValue: {} }];
|
|
47
|
+
}
|
|
48
|
+
static createAsyncOptionsProvider(options) {
|
|
49
|
+
if (options.useFactory) {
|
|
50
|
+
return {
|
|
51
|
+
provide: throttler_constants_1.THROTTLER_OPTIONS,
|
|
52
|
+
useFactory: options.useFactory,
|
|
53
|
+
inject: options.inject ?? [],
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
const inject = options.useExisting ?? options.useClass;
|
|
57
|
+
return {
|
|
58
|
+
provide: throttler_constants_1.THROTTLER_OPTIONS,
|
|
59
|
+
useFactory: (factory) => factory.createThrottlerOptions(),
|
|
60
|
+
inject: inject ? [inject] : [],
|
|
61
|
+
};
|
|
62
|
+
}
|
|
63
|
+
};
|
|
64
|
+
exports.ThrottlerModule = ThrottlerModule;
|
|
65
|
+
exports.ThrottlerModule = ThrottlerModule = ThrottlerModule_1 = __decorate([
|
|
66
|
+
(0, common_1.Module)({})
|
|
67
|
+
], ThrottlerModule);
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.userTracker = userTracker;
|
|
4
|
+
function defaultParseJwt(token) {
|
|
5
|
+
try {
|
|
6
|
+
const parts = token.split(".");
|
|
7
|
+
if (parts.length !== 3)
|
|
8
|
+
return null;
|
|
9
|
+
const payload = JSON.parse(atob(parts[1]));
|
|
10
|
+
return (payload.sub ?? payload.userId ?? payload.id);
|
|
11
|
+
}
|
|
12
|
+
catch {
|
|
13
|
+
return null;
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
function extractIp(req) {
|
|
17
|
+
const cfIp = req.headers?.["cf-connecting-ip"];
|
|
18
|
+
if (cfIp)
|
|
19
|
+
return cfIp;
|
|
20
|
+
const realIp = req.headers?.["x-real-ip"];
|
|
21
|
+
if (realIp)
|
|
22
|
+
return realIp;
|
|
23
|
+
const xff = req.headers?.["x-forwarded-for"];
|
|
24
|
+
if (xff) {
|
|
25
|
+
const first = typeof xff === "string" ? xff.split(",")[0]?.trim() : xff[0];
|
|
26
|
+
if (first)
|
|
27
|
+
return first;
|
|
28
|
+
}
|
|
29
|
+
return req.ip ?? req.socket?.remoteAddress ?? "anonymous";
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* NestJS-compatible tracker that identifies users from JWT/session,
|
|
33
|
+
* with optional IP fallback.
|
|
34
|
+
*
|
|
35
|
+
* Works with Express and Fastify request objects.
|
|
36
|
+
*
|
|
37
|
+
* @example
|
|
38
|
+
* ```ts
|
|
39
|
+
* ThrottlerModule.forRoot({
|
|
40
|
+
* getTracker: userTracker({ cookieName: "session", fallbackToIp: true }),
|
|
41
|
+
* })
|
|
42
|
+
* ```
|
|
43
|
+
*/
|
|
44
|
+
function userTracker(options = {}) {
|
|
45
|
+
const cookieName = options.cookieName ?? "better-auth.session_token";
|
|
46
|
+
const parseJwt = options.parseJwt ?? defaultParseJwt;
|
|
47
|
+
const fallbackToIp = options.fallbackToIp ?? true;
|
|
48
|
+
return (req) => {
|
|
49
|
+
// Try Authorization header
|
|
50
|
+
const auth = req.headers?.["authorization"];
|
|
51
|
+
if (auth?.startsWith("Bearer ")) {
|
|
52
|
+
const userId = parseJwt(auth.slice(7));
|
|
53
|
+
if (userId)
|
|
54
|
+
return `user:${userId}`;
|
|
55
|
+
}
|
|
56
|
+
// Try cookie
|
|
57
|
+
const cookieHeader = typeof req.cookies === "object"
|
|
58
|
+
? req.cookies?.[cookieName]
|
|
59
|
+
: req.headers?.["cookie"];
|
|
60
|
+
if (cookieHeader) {
|
|
61
|
+
let token;
|
|
62
|
+
if (typeof req.cookies === "object") {
|
|
63
|
+
// Express with cookie-parser / Fastify cookie
|
|
64
|
+
token = req.cookies[cookieName];
|
|
65
|
+
}
|
|
66
|
+
else {
|
|
67
|
+
// Raw cookie header
|
|
68
|
+
const match = cookieHeader
|
|
69
|
+
.split(";")
|
|
70
|
+
.map((c) => c.trim())
|
|
71
|
+
.find((c) => c.startsWith(`${cookieName}=`));
|
|
72
|
+
if (match) {
|
|
73
|
+
token = match.split("=").slice(1).join("=");
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
if (token) {
|
|
77
|
+
const userId = parseJwt(token);
|
|
78
|
+
if (userId)
|
|
79
|
+
return `user:${userId}`;
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
if (fallbackToIp)
|
|
83
|
+
return extractIp(req);
|
|
84
|
+
return "anonymous";
|
|
85
|
+
};
|
|
86
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/decorators/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/decorators/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"skip-throttle.decorator.d.ts","sourceRoot":"","sources":["../../../src/decorators/skip-throttle.decorator.ts"],"names":[],"mappings":"AAGA;;;;;;;;;GASG;AACH,eAAO,MAAM,YAAY,wDAA0C,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"skip-throttle.decorator.js","sourceRoot":"","sources":["../../../src/decorators/skip-throttle.decorator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAExD;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,GAAG,EAAE,CAAC,WAAW,CAAC,cAAc,EAAE,IAAI,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"throttle.decorator.d.ts","sourceRoot":"","sources":["../../../src/decorators/throttle.decorator.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAGpE;;;;;;;;;GASG;AACH,eAAO,MAAM,QAAQ,GAAI,QAAQ,eAAe,qDACN,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"throttle.decorator.js","sourceRoot":"","sources":["../../../src/decorators/throttle.decorator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAE7C,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAE7D;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,MAAuB,EAAE,EAAE,CAClD,WAAW,CAAC,mBAAmB,EAAE,MAAM,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAGtD,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAGnD,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAGrD,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACzC,YAAY,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAGrD,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAG1D,YAAY,EACV,qBAAqB,EACrB,sBAAsB,EACtB,uBAAuB,GACxB,MAAM,wBAAwB,CAAC;AAGhC,YAAY,EACV,eAAe,EACf,eAAe,EACf,cAAc,EACd,iBAAiB,EACjB,mBAAmB,EACnB,iBAAiB,GAClB,MAAM,8BAA8B,CAAC;AAEtC,OAAO,EACL,WAAW,EACX,UAAU,EACV,cAAc,GACf,MAAM,8BAA8B,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,aAAa;AACb,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAEtD,QAAQ;AACR,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAEnD,SAAS;AACT,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAErD,WAAW;AACX,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAGzC,YAAY;AACZ,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAmB1D,OAAO,EACL,WAAW,EACX,UAAU,EACV,cAAc,GACf,MAAM,8BAA8B,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"throttler.constants.d.ts","sourceRoot":"","sources":["../../src/throttler.constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,iBAAiB,sBAAsB,CAAC;AACrD,eAAO,MAAM,mBAAmB,wBAAwB,CAAC;AACzD,eAAO,MAAM,cAAc,mBAAmB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"throttler.constants.js","sourceRoot":"","sources":["../../src/throttler.constants.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,iBAAiB,GAAG,mBAAmB,CAAC;AACrD,MAAM,CAAC,MAAM,mBAAmB,GAAG,qBAAqB,CAAC;AACzD,MAAM,CAAC,MAAM,cAAc,GAAG,gBAAgB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"throttler.guard.d.ts","sourceRoot":"","sources":["../../src/throttler.guard.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,WAAW,EACX,gBAAgB,EAKjB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAQzC,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AAkBrE,qBACa,cAAe,YAAW,WAAW;IAYnB,OAAO,CAAC,QAAQ,CAAC,OAAO;IACnD,OAAO,CAAC,QAAQ,CAAC,SAAS;IAZ5B,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAiB;IACvC,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAkB;IACnD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAwB;IAChD,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAuB;IAClD,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAW;IAC5C,OAAO,CAAC,QAAQ,CAAC,YAAY,CAEsB;gBAGL,OAAO,EAAE,sBAAsB,EAC1D,SAAS,EAAE,SAAS;IAejC,WAAW,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,OAAO,CAAC;IAiE9D,OAAO,CAAC,iBAAiB;CAe1B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"throttler.guard.js","sourceRoot":"","sources":["../../src/throttler.guard.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"throttler.interfaces.d.ts","sourceRoot":"","sources":["../../src/throttler.interfaces.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC;AAC3D,OAAO,KAAK,EACV,eAAe,EACf,eAAe,EACf,cAAc,EACf,MAAM,8BAA8B,CAAC;AAEtC,MAAM,WAAW,sBAAsB;IACrC,SAAS,CAAC,EAAE,eAAe,CAAC;IAC5B,KAAK,CAAC,EAAE,cAAc,CAAC;IACvB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,YAAY,CAAC,EAAE,MAAM,GAAG,CAAC,CAAC,MAAM,EAAE,eAAe,KAAK,MAAM,GAAG,MAAM,CAAC,CAAC;IACvE,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,KAAK,OAAO,CAAC;IACnC,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,KAAK,MAAM,CAAC;IACtC,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;CAC7B;AAED,MAAM,WAAW,uBAAuB;IACtC,sBAAsB,IAClB,sBAAsB,GACtB,OAAO,CAAC,sBAAsB,CAAC,CAAC;CACrC;AAED,MAAM,WAAW,qBAAsB,SAAQ,IAAI,CAAC,cAAc,EAAE,SAAS,CAAC;IAC5E,WAAW,CAAC,EAAE,IAAI,CAAC,uBAAuB,CAAC,CAAC;IAC5C,QAAQ,CAAC,EAAE,IAAI,CAAC,uBAAuB,CAAC,CAAC;IACzC,UAAU,CAAC,EAAE,CACX,GAAG,IAAI,EAAE,GAAG,EAAE,KACX,sBAAsB,GAAG,OAAO,CAAC,sBAAsB,CAAC,CAAC;IAC9D,MAAM,CAAC,EAAE,GAAG,EAAE,CAAC;CAChB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"throttler.interfaces.js","sourceRoot":"","sources":["../../src/throttler.interfaces.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"throttler.module.d.ts","sourceRoot":"","sources":["../../src/throttler.module.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAoB,MAAM,gBAAgB,CAAC;AAGjE,OAAO,KAAK,EACV,qBAAqB,EACrB,sBAAsB,EAEvB,MAAM,wBAAwB,CAAC;AAEhC,qBACa,eAAe;IAC1B,MAAM,CAAC,OAAO,CAAC,OAAO,GAAE,sBAA2B,GAAG,aAAa;IAYnE,MAAM,CAAC,YAAY,CAAC,OAAO,EAAE,qBAAqB,GAAG,aAAa;IAWlE,OAAO,CAAC,MAAM,CAAC,oBAAoB;IAiBnC,OAAO,CAAC,MAAM,CAAC,0BAA0B;CAmB1C"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"throttler.module.js","sourceRoot":"","sources":["../../src/throttler.module.ts"],"names":[],"mappings":";;;;;;;AAAA,OAAO,EAAiB,MAAM,EAAY,MAAM,gBAAgB,CAAC;AACjE,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAQ5C,IAAM,eAAe,uBAArB,MAAM,eAAe;IAC1B,MAAM,CAAC,OAAO,CAAC,UAAkC,EAAE;QACjD,OAAO;YACL,MAAM,EAAE,iBAAe;YACvB,MAAM,EAAE,IAAI;YACZ,SAAS,EAAE;gBACT,EAAE,OAAO,EAAE,iBAAiB,EAAE,QAAQ,EAAE,OAAO,EAAE;gBACjD,cAAc;aACf;YACD,OAAO,EAAE,CAAC,iBAAiB,EAAE,cAAc,CAAC;SAC7C,CAAC;IACJ,CAAC;IAED,MAAM,CAAC,YAAY,CAAC,OAA8B;QAChD,MAAM,SAAS,GAAG,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAC;QACrD,OAAO;YACL,MAAM,EAAE,iBAAe;YACvB,MAAM,EAAE,IAAI;YACZ,OAAO,EAAE,OAAO,CAAC,OAAO,IAAI,EAAE;YAC9B,SAAS,EAAE,CAAC,GAAG,SAAS,EAAE,cAAc,CAAC;YACzC,OAAO,EAAE,CAAC,iBAAiB,EAAE,cAAc,CAAC;SAC7C,CAAC;IACJ,CAAC;IAEO,MAAM,CAAC,oBAAoB,CACjC,OAA8B;QAE9B,IAAI,OAAO,CAAC,WAAW,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;YAC9C,OAAO,CAAC,IAAI,CAAC,0BAA0B,CAAC,OAAO,CAAC,CAAC,CAAC;QACpD,CAAC;QAED,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;YACrB,OAAO;gBACL,IAAI,CAAC,0BAA0B,CAAC,OAAO,CAAC;gBACxC,EAAE,OAAO,EAAE,OAAO,CAAC,QAAQ,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE;aAC1D,CAAC;QACJ,CAAC;QAED,OAAO,CAAC,EAAE,OAAO,EAAE,iBAAiB,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC;IACxD,CAAC;IAEO,MAAM,CAAC,0BAA0B,CACvC,OAA8B;QAE9B,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;YACvB,OAAO;gBACL,OAAO,EAAE,iBAAiB;gBAC1B,UAAU,EAAE,OAAO,CAAC,UAAU;gBAC9B,MAAM,EAAE,OAAO,CAAC,MAAM,IAAI,EAAE;aAC7B,CAAC;QACJ,CAAC;QAED,MAAM,MAAM,GAAG,OAAO,CAAC,WAAW,IAAI,OAAO,CAAC,QAAQ,CAAC;QACvD,OAAO;YACL,OAAO,EAAE,iBAAiB;YAC1B,UAAU,EAAE,CAAC,OAAgC,EAAE,EAAE,CAC/C,OAAO,CAAC,sBAAsB,EAAE;YAClC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE;SAC/B,CAAC;IACJ,CAAC;CACF,CAAA;AA5DY,eAAe;IAD3B,MAAM,CAAC,EAAE,CAAC;GACE,eAAe,CA4D3B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"trackers.d.ts","sourceRoot":"","sources":["../../src/trackers.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,kBAAkB;IACjC;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB;;;OAGG;IACH,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,CAAC;IAE5C;;;OAGG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AA6BD;;;;;;;;;;;;GAYG;AACH,wBAAgB,WAAW,CAAC,OAAO,GAAE,kBAAuB,GAAG,CAAC,GAAG,EAAE,GAAG,KAAK,MAAM,CA6ClF"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"trackers.js","sourceRoot":"","sources":["../../src/trackers.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "nestjs-advanced-rate-limiter",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.2.0",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "Advanced rate limiter for NestJS. Token bucket (GCRA), sliding window, fixed window. In-memory or Redis. Drop-in replacement for @nestjs/throttler.",
|
|
6
6
|
"author": "mrtcmn",
|
|
@@ -27,12 +27,15 @@
|
|
|
27
27
|
"decorator",
|
|
28
28
|
"middleware"
|
|
29
29
|
],
|
|
30
|
-
"main": "dist/index.js",
|
|
31
|
-
"
|
|
30
|
+
"main": "dist/cjs/index.js",
|
|
31
|
+
"module": "dist/esm/index.js",
|
|
32
|
+
"types": "dist/esm/index.d.ts",
|
|
32
33
|
"exports": {
|
|
33
34
|
".": {
|
|
34
|
-
"types": "./dist/index.d.ts",
|
|
35
|
-
"import": "./dist/index.js"
|
|
35
|
+
"types": "./dist/esm/index.d.ts",
|
|
36
|
+
"import": "./dist/esm/index.js",
|
|
37
|
+
"require": "./dist/cjs/index.js",
|
|
38
|
+
"default": "./dist/cjs/index.js"
|
|
36
39
|
}
|
|
37
40
|
},
|
|
38
41
|
"files": [
|
|
@@ -41,7 +44,7 @@
|
|
|
41
44
|
"LICENSE"
|
|
42
45
|
],
|
|
43
46
|
"scripts": {
|
|
44
|
-
"build": "rm -rf dist && tsc --project tsconfig.
|
|
47
|
+
"build": "rm -rf dist && tsc --project tsconfig.esm.json && tsc --project tsconfig.cjs.json && echo '{\"type\":\"commonjs\"}' > dist/cjs/package.json",
|
|
45
48
|
"typecheck": "tsc --noEmit",
|
|
46
49
|
"test": "NODE_OPTIONS='--experimental-vm-modules' jest",
|
|
47
50
|
"test:watch": "jest --watch",
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/decorators/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/decorators/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"skip-throttle.decorator.d.ts","sourceRoot":"","sources":["../../src/decorators/skip-throttle.decorator.ts"],"names":[],"mappings":"AAGA;;;;;;;;;GASG;AACH,eAAO,MAAM,YAAY,wDAA0C,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"skip-throttle.decorator.js","sourceRoot":"","sources":["../../src/decorators/skip-throttle.decorator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAExD;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,GAAG,EAAE,CAAC,WAAW,CAAC,cAAc,EAAE,IAAI,CAAC,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"throttle.decorator.d.ts","sourceRoot":"","sources":["../../src/decorators/throttle.decorator.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAGpE;;;;;;;;;GASG;AACH,eAAO,MAAM,QAAQ,GAAI,QAAQ,eAAe,qDACN,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"throttle.decorator.js","sourceRoot":"","sources":["../../src/decorators/throttle.decorator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAE7C,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAE7D;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,MAAuB,EAAE,EAAE,CAClD,WAAW,CAAC,mBAAmB,EAAE,MAAM,CAAC,CAAC"}
|
package/dist/index.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAGtD,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAGnD,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAGrD,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACzC,YAAY,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAGrD,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAG1D,YAAY,EACV,qBAAqB,EACrB,sBAAsB,EACtB,uBAAuB,GACxB,MAAM,wBAAwB,CAAC;AAGhC,YAAY,EACV,eAAe,EACf,eAAe,EACf,cAAc,EACd,iBAAiB,EACjB,mBAAmB,EACnB,iBAAiB,GAClB,MAAM,8BAA8B,CAAC;AAEtC,OAAO,EACL,WAAW,EACX,UAAU,EACV,cAAc,GACf,MAAM,8BAA8B,CAAC"}
|
package/dist/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,aAAa;AACb,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAEtD,QAAQ;AACR,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAEnD,SAAS;AACT,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAErD,WAAW;AACX,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAGzC,YAAY;AACZ,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAmB1D,OAAO,EACL,WAAW,EACX,UAAU,EACV,cAAc,GACf,MAAM,8BAA8B,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"throttler.constants.d.ts","sourceRoot":"","sources":["../src/throttler.constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,iBAAiB,sBAAsB,CAAC;AACrD,eAAO,MAAM,mBAAmB,wBAAwB,CAAC;AACzD,eAAO,MAAM,cAAc,mBAAmB,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"throttler.constants.js","sourceRoot":"","sources":["../src/throttler.constants.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,iBAAiB,GAAG,mBAAmB,CAAC;AACrD,MAAM,CAAC,MAAM,mBAAmB,GAAG,qBAAqB,CAAC;AACzD,MAAM,CAAC,MAAM,cAAc,GAAG,gBAAgB,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"throttler.guard.d.ts","sourceRoot":"","sources":["../src/throttler.guard.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,WAAW,EACX,gBAAgB,EAKjB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAQzC,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AAkBrE,qBACa,cAAe,YAAW,WAAW;IAYnB,OAAO,CAAC,QAAQ,CAAC,OAAO;IACnD,OAAO,CAAC,QAAQ,CAAC,SAAS;IAZ5B,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAiB;IACvC,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAkB;IACnD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAwB;IAChD,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAuB;IAClD,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAW;IAC5C,OAAO,CAAC,QAAQ,CAAC,YAAY,CAEsB;gBAGL,OAAO,EAAE,sBAAsB,EAC1D,SAAS,EAAE,SAAS;IAejC,WAAW,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,OAAO,CAAC;IAiE9D,OAAO,CAAC,iBAAiB;CAe1B"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"throttler.guard.js","sourceRoot":"","sources":["../src/throttler.guard.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"throttler.interfaces.d.ts","sourceRoot":"","sources":["../src/throttler.interfaces.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC;AAC3D,OAAO,KAAK,EACV,eAAe,EACf,eAAe,EACf,cAAc,EACf,MAAM,8BAA8B,CAAC;AAEtC,MAAM,WAAW,sBAAsB;IACrC,SAAS,CAAC,EAAE,eAAe,CAAC;IAC5B,KAAK,CAAC,EAAE,cAAc,CAAC;IACvB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,YAAY,CAAC,EAAE,MAAM,GAAG,CAAC,CAAC,MAAM,EAAE,eAAe,KAAK,MAAM,GAAG,MAAM,CAAC,CAAC;IACvE,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,KAAK,OAAO,CAAC;IACnC,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,KAAK,MAAM,CAAC;IACtC,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;CAC7B;AAED,MAAM,WAAW,uBAAuB;IACtC,sBAAsB,IAClB,sBAAsB,GACtB,OAAO,CAAC,sBAAsB,CAAC,CAAC;CACrC;AAED,MAAM,WAAW,qBAAsB,SAAQ,IAAI,CAAC,cAAc,EAAE,SAAS,CAAC;IAC5E,WAAW,CAAC,EAAE,IAAI,CAAC,uBAAuB,CAAC,CAAC;IAC5C,QAAQ,CAAC,EAAE,IAAI,CAAC,uBAAuB,CAAC,CAAC;IACzC,UAAU,CAAC,EAAE,CACX,GAAG,IAAI,EAAE,GAAG,EAAE,KACX,sBAAsB,GAAG,OAAO,CAAC,sBAAsB,CAAC,CAAC;IAC9D,MAAM,CAAC,EAAE,GAAG,EAAE,CAAC;CAChB"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"throttler.interfaces.js","sourceRoot":"","sources":["../src/throttler.interfaces.ts"],"names":[],"mappings":""}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"throttler.module.d.ts","sourceRoot":"","sources":["../src/throttler.module.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAoB,MAAM,gBAAgB,CAAC;AAGjE,OAAO,KAAK,EACV,qBAAqB,EACrB,sBAAsB,EAEvB,MAAM,wBAAwB,CAAC;AAEhC,qBACa,eAAe;IAC1B,MAAM,CAAC,OAAO,CAAC,OAAO,GAAE,sBAA2B,GAAG,aAAa;IAYnE,MAAM,CAAC,YAAY,CAAC,OAAO,EAAE,qBAAqB,GAAG,aAAa;IAWlE,OAAO,CAAC,MAAM,CAAC,oBAAoB;IAiBnC,OAAO,CAAC,MAAM,CAAC,0BAA0B;CAmB1C"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"throttler.module.js","sourceRoot":"","sources":["../src/throttler.module.ts"],"names":[],"mappings":";;;;;;;AAAA,OAAO,EAAiB,MAAM,EAAY,MAAM,gBAAgB,CAAC;AACjE,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAQ5C,IAAM,eAAe,uBAArB,MAAM,eAAe;IAC1B,MAAM,CAAC,OAAO,CAAC,UAAkC,EAAE;QACjD,OAAO;YACL,MAAM,EAAE,iBAAe;YACvB,MAAM,EAAE,IAAI;YACZ,SAAS,EAAE;gBACT,EAAE,OAAO,EAAE,iBAAiB,EAAE,QAAQ,EAAE,OAAO,EAAE;gBACjD,cAAc;aACf;YACD,OAAO,EAAE,CAAC,iBAAiB,EAAE,cAAc,CAAC;SAC7C,CAAC;IACJ,CAAC;IAED,MAAM,CAAC,YAAY,CAAC,OAA8B;QAChD,MAAM,SAAS,GAAG,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAC;QACrD,OAAO;YACL,MAAM,EAAE,iBAAe;YACvB,MAAM,EAAE,IAAI;YACZ,OAAO,EAAE,OAAO,CAAC,OAAO,IAAI,EAAE;YAC9B,SAAS,EAAE,CAAC,GAAG,SAAS,EAAE,cAAc,CAAC;YACzC,OAAO,EAAE,CAAC,iBAAiB,EAAE,cAAc,CAAC;SAC7C,CAAC;IACJ,CAAC;IAEO,MAAM,CAAC,oBAAoB,CACjC,OAA8B;QAE9B,IAAI,OAAO,CAAC,WAAW,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;YAC9C,OAAO,CAAC,IAAI,CAAC,0BAA0B,CAAC,OAAO,CAAC,CAAC,CAAC;QACpD,CAAC;QAED,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;YACrB,OAAO;gBACL,IAAI,CAAC,0BAA0B,CAAC,OAAO,CAAC;gBACxC,EAAE,OAAO,EAAE,OAAO,CAAC,QAAQ,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE;aAC1D,CAAC;QACJ,CAAC;QAED,OAAO,CAAC,EAAE,OAAO,EAAE,iBAAiB,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC;IACxD,CAAC;IAEO,MAAM,CAAC,0BAA0B,CACvC,OAA8B;QAE9B,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;YACvB,OAAO;gBACL,OAAO,EAAE,iBAAiB;gBAC1B,UAAU,EAAE,OAAO,CAAC,UAAU;gBAC9B,MAAM,EAAE,OAAO,CAAC,MAAM,IAAI,EAAE;aAC7B,CAAC;QACJ,CAAC;QAED,MAAM,MAAM,GAAG,OAAO,CAAC,WAAW,IAAI,OAAO,CAAC,QAAQ,CAAC;QACvD,OAAO;YACL,OAAO,EAAE,iBAAiB;YAC1B,UAAU,EAAE,CAAC,OAAgC,EAAE,EAAE,CAC/C,OAAO,CAAC,sBAAsB,EAAE;YAClC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE;SAC/B,CAAC;IACJ,CAAC;CACF,CAAA;AA5DY,eAAe;IAD3B,MAAM,CAAC,EAAE,CAAC;GACE,eAAe,CA4D3B"}
|
package/dist/trackers.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"trackers.d.ts","sourceRoot":"","sources":["../src/trackers.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,kBAAkB;IACjC;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB;;;OAGG;IACH,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,CAAC;IAE5C;;;OAGG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AA6BD;;;;;;;;;;;;GAYG;AACH,wBAAgB,WAAW,CAAC,OAAO,GAAE,kBAAuB,GAAG,CAAC,GAAG,EAAE,GAAG,KAAK,MAAM,CA6ClF"}
|
package/dist/trackers.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"trackers.js","sourceRoot":"","sources":["../src/trackers.ts"],"names":[],"mappings":"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"}
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|