@arkstack/driver-express 0.18.0 → 0.18.1

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.
@@ -41,14 +41,17 @@ declare class InertiaMiddleware {
41
41
  //#endregion
42
42
  //#region src/middlewares/limiter.d.ts
43
43
  /**
44
- * create a rate limiter middleware
44
+ * Create a rate limiter middleware
45
45
  *
46
- * @param requests number of requests allowed per windowMs
47
- * @param perMin number of minutes for the window
48
- * @param message custom message to be returned when rate limit is exceeded
46
+ * A limiter translates to [Allow N `(requests)` per N seconds `(windowSeconds)` per IP], or
47
+ * more explicitly `Allow 100 requests per 30 seconds per IP.`
48
+ *
49
+ * @param requests number of requests allowed per `windowSeconds`
50
+ * @param windowSeconds number of seconds for the window
51
+ * @param message custom message to be returned when rate limit is exceeded
49
52
  * @returns
50
53
  */
51
- declare const limiter: (requests?: number | ValueDeterminingMiddleware<number>, perSec?: number, message?: string | ValueDeterminingMiddleware<string>) => import("express-rate-limit").RateLimitRequestHandler;
54
+ declare const limiter: (requests?: number | ValueDeterminingMiddleware<number>, windowSeconds?: number, message?: string | ValueDeterminingMiddleware<string>) => import("express-rate-limit").RateLimitRequestHandler;
52
55
  //#endregion
53
56
  //#region src/middlewares/request-logger.d.ts
54
57
  /**
@@ -134,24 +134,31 @@ var RateLimitExceededException = class extends Exception {
134
134
  //#endregion
135
135
  //#region src/middlewares/limiter.ts
136
136
  /**
137
- * create a rate limiter middleware
137
+ * Create a rate limiter middleware
138
138
  *
139
- * @param requests number of requests allowed per windowMs
140
- * @param perMin number of minutes for the window
141
- * @param message custom message to be returned when rate limit is exceeded
139
+ * A limiter translates to [Allow N `(requests)` per N seconds `(windowSeconds)` per IP], or
140
+ * more explicitly `Allow 100 requests per 30 seconds per IP.`
141
+ *
142
+ * @param requests number of requests allowed per `windowSeconds`
143
+ * @param windowSeconds number of seconds for the window
144
+ * @param message custom message to be returned when rate limit is exceeded
142
145
  * @returns
143
146
  */
144
- const limiter = (requests = 100, perSec = 900, message) => rateLimit({
145
- message,
146
- limit: requests,
147
- windowMs: (env("NODE_ENV") === "production" ? perSec : 30) * 1e3,
148
- standardHeaders: true,
149
- legacyHeaders: false,
150
- ipv6Subnet: 56,
151
- handler: (_, __, ___, options) => {
152
- throw new RateLimitExceededException(options);
153
- }
154
- });
147
+ const limiter = (requests = 100, windowSeconds = 900, message) => {
148
+ /** 15 minutes default in production */
149
+ const windowMs = (env("NODE_ENV") === "production" ? windowSeconds : 30) * 1e3;
150
+ return rateLimit({
151
+ message,
152
+ limit: requests,
153
+ windowMs,
154
+ standardHeaders: true,
155
+ legacyHeaders: false,
156
+ ipv6Subnet: 56,
157
+ handler: (_, __, ___, options) => {
158
+ throw new RateLimitExceededException(options);
159
+ }
160
+ });
161
+ };
155
162
  //#endregion
156
163
  //#region src/middlewares/request-logger.ts
157
164
  const colors = {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@arkstack/driver-express",
3
- "version": "0.18.0",
3
+ "version": "0.18.1",
4
4
  "type": "module",
5
5
  "description": "Express driver for Arkstack, providing Express-based runtime integration for the framework.",
6
6
  "homepage": "https://arkstack.toneflix.net",
@@ -43,15 +43,15 @@
43
43
  "express-rate-limit": "^8.4.1",
44
44
  "multer": "^2.1.1",
45
45
  "resora": "^1.3.34",
46
- "@arkstack/contract": "^0.18.0",
47
- "@arkstack/http": "^0.18.0"
46
+ "@arkstack/contract": "^0.18.1",
47
+ "@arkstack/http": "^0.18.1"
48
48
  },
49
49
  "peerDependencies": {
50
50
  "express": "^5.2.1",
51
- "@arkstack/auth": "^0.18.0",
52
- "@arkstack/common": "^0.18.0",
53
- "@arkstack/foundry": "^0.18.0",
54
- "@arkstack/inertia": "^0.18.0"
51
+ "@arkstack/auth": "^0.18.1",
52
+ "@arkstack/foundry": "^0.18.1",
53
+ "@arkstack/common": "^0.18.1",
54
+ "@arkstack/inertia": "^0.18.1"
55
55
  },
56
56
  "peerDependenciesMeta": {
57
57
  "@arkstack/auth": {