@rapidrest/service-core 1.8.0 → 2.1.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/lib/ApiErrors.js +10 -0
- package/dist/lib/ApiErrors.js.map +1 -1
- package/dist/lib/BackgroundServiceManager.js +51 -9
- package/dist/lib/BackgroundServiceManager.js.map +1 -1
- package/dist/lib/EventListenerManager.js +35 -2
- package/dist/lib/EventListenerManager.js.map +1 -1
- package/dist/lib/NetUtils.js +215 -21
- package/dist/lib/NetUtils.js.map +1 -1
- package/dist/lib/ObjectFactory.js +7 -2
- package/dist/lib/ObjectFactory.js.map +1 -1
- package/dist/lib/RateLimiter.js.map +1 -1
- package/dist/lib/Server.js +121 -80
- package/dist/lib/Server.js.map +1 -1
- package/dist/lib/auth/AuthMiddleware.js +160 -100
- package/dist/lib/auth/AuthMiddleware.js.map +1 -1
- package/dist/lib/auth/JWTStrategy.js +6 -2
- package/dist/lib/auth/JWTStrategy.js.map +1 -1
- package/dist/lib/database/ConnectionManager.js +47 -1
- package/dist/lib/database/ConnectionManager.js.map +1 -1
- package/dist/lib/database/DatabaseErrors.js +88 -0
- package/dist/lib/database/DatabaseErrors.js.map +1 -0
- package/dist/lib/database/MongoRepository.js +31 -3
- package/dist/lib/database/MongoRepository.js.map +1 -1
- package/dist/lib/database/MongoSchemaSync.js +7 -1
- package/dist/lib/database/MongoSchemaSync.js.map +1 -1
- package/dist/lib/database/TypeOrmSupport.js +56 -6
- package/dist/lib/database/TypeOrmSupport.js.map +1 -1
- package/dist/lib/database/index.js +1 -0
- package/dist/lib/database/index.js.map +1 -1
- package/dist/lib/decorators/PersistenceDecorators.js +23 -0
- package/dist/lib/decorators/PersistenceDecorators.js.map +1 -1
- package/dist/lib/decorators/RouteDecorators.js +4 -2
- package/dist/lib/decorators/RouteDecorators.js.map +1 -1
- package/dist/lib/http/bun/BunRouter.js +119 -9
- package/dist/lib/http/bun/BunRouter.js.map +1 -1
- package/dist/lib/http/index.js +1 -0
- package/dist/lib/http/index.js.map +1 -1
- package/dist/lib/http/session/sessionMiddleware.js +62 -14
- package/dist/lib/http/session/sessionMiddleware.js.map +1 -1
- package/dist/lib/http/types.js +10 -1
- package/dist/lib/http/types.js.map +1 -1
- package/dist/lib/http/uWS/Adapters.js +31 -13
- package/dist/lib/http/uWS/Adapters.js.map +1 -1
- package/dist/lib/http/uWS/Router.js +80 -16
- package/dist/lib/http/uWS/Router.js.map +1 -1
- package/dist/lib/http/uWS/WebSocket.js +4 -2
- package/dist/lib/http/uWS/WebSocket.js.map +1 -1
- package/dist/lib/models/ModelUtils.js +910 -227
- package/dist/lib/models/ModelUtils.js.map +1 -1
- package/dist/lib/models/RepoUtils.js +863 -266
- package/dist/lib/models/RepoUtils.js.map +1 -1
- package/dist/lib/routes/BaseAdminRoute.js +5 -4
- package/dist/lib/routes/BaseAdminRoute.js.map +1 -1
- package/dist/lib/routes/BasePushRoute.js +104 -40
- package/dist/lib/routes/BasePushRoute.js.map +1 -1
- package/dist/lib/routes/CRUDRoute.js +31 -17
- package/dist/lib/routes/CRUDRoute.js.map +1 -1
- package/dist/lib/routes/RouteUtils.js +120 -29
- package/dist/lib/routes/RouteUtils.js.map +1 -1
- package/dist/lib/security/ACLUtils.js +170 -34
- package/dist/lib/security/ACLUtils.js.map +1 -1
- package/dist/types/ApiErrors.d.ts +10 -0
- package/dist/types/BackgroundServiceManager.d.ts +6 -0
- package/dist/types/EventListenerManager.d.ts +4 -0
- package/dist/types/NetUtils.d.ts +65 -6
- package/dist/types/RateLimiter.d.ts +4 -3
- package/dist/types/Server.d.ts +33 -2
- package/dist/types/auth/AuthMiddleware.d.ts +35 -4
- package/dist/types/database/ConnectionManager.d.ts +18 -0
- package/dist/types/database/DatabaseErrors.d.ts +26 -0
- package/dist/types/database/MongoRepository.d.ts +21 -2
- package/dist/types/database/index.d.ts +1 -0
- package/dist/types/decorators/PersistenceDecorators.d.ts +31 -0
- package/dist/types/decorators/RouteDecorators.d.ts +4 -2
- package/dist/types/http/bun/BunRouter.d.ts +23 -2
- package/dist/types/http/index.d.ts +2 -1
- package/dist/types/http/session/sessionMiddleware.d.ts +14 -4
- package/dist/types/http/types.d.ts +40 -0
- package/dist/types/http/uWS/Adapters.d.ts +10 -1
- package/dist/types/http/uWS/Router.d.ts +15 -2
- package/dist/types/models/ModelUtils.d.ts +301 -47
- package/dist/types/models/RepoUtils.d.ts +240 -4
- package/dist/types/routes/BasePushRoute.d.ts +5 -0
- package/dist/types/routes/CRUDRoute.d.ts +10 -0
- package/dist/types/routes/RouteUtils.d.ts +37 -1
- package/dist/types/security/ACLUtils.d.ts +68 -7
- package/package.json +1 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DatabaseErrors.js","sourceRoot":"","sources":["../../../src/database/DatabaseErrors.ts"],"names":[],"mappings":"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"}
|
|
@@ -115,12 +115,18 @@ export class MongoRepository {
|
|
|
115
115
|
* a plain object) without preserving `_id`, where the default `_id`-only behavior would insert a *second*,
|
|
116
116
|
* duplicate document instead of updating the existing one (see `ACLUtils.saveACL()`).
|
|
117
117
|
*
|
|
118
|
+
* Pass `insertOnly: true` to always insert, even when `doc` carries an `_id`: the document is inserted with
|
|
119
|
+
* that `_id`, and the driver's duplicate-key error (code `11000`) is thrown if a document with it already
|
|
120
|
+
* exists. Use it for any create-style write whose `_id` may have come from untrusted input, where the default
|
|
121
|
+
* `_id`-present behavior would silently replace whichever existing document owns that `_id` (see
|
|
122
|
+
* `RepoUtils.create()`). Takes precedence over `mergeByUid`.
|
|
123
|
+
*
|
|
118
124
|
* @param doc The document to save.
|
|
119
|
-
* @param options Driver options, plus optionally `mergeByUid` (see above).
|
|
125
|
+
* @param options Driver options, plus optionally `mergeByUid` or `insertOnly` (see above).
|
|
120
126
|
* @returns The saved document.
|
|
121
127
|
*/
|
|
122
128
|
async save(doc, options) {
|
|
123
|
-
const { mergeByUid, ...driverOptions } = options ?? {};
|
|
129
|
+
const { mergeByUid, insertOnly, ...driverOptions } = options ?? {};
|
|
124
130
|
const copy = { ...doc };
|
|
125
131
|
// Strip any undefined properties so they are omitted from the stored document
|
|
126
132
|
for (const key of Object.keys(copy)) {
|
|
@@ -128,7 +134,11 @@ export class MongoRepository {
|
|
|
128
134
|
delete copy[key];
|
|
129
135
|
}
|
|
130
136
|
}
|
|
131
|
-
if (
|
|
137
|
+
if (insertOnly) {
|
|
138
|
+
const result = await this.collection.insertOne(copy, driverOptions);
|
|
139
|
+
doc._id = result.insertedId;
|
|
140
|
+
}
|
|
141
|
+
else if (mergeByUid && doc.uid !== undefined && doc.uid !== null) {
|
|
132
142
|
// MongoDB rejects a replacement document that tries to change an existing document's immutable
|
|
133
143
|
// `_id` — when matching by `uid` instead, drop whatever `_id` `doc` happened to carry and let the
|
|
134
144
|
// matched document keep its own (or let Mongo assign a fresh one on insert, captured below).
|
|
@@ -156,6 +166,24 @@ export class MongoRepository {
|
|
|
156
166
|
}
|
|
157
167
|
return doc;
|
|
158
168
|
}
|
|
169
|
+
/**
|
|
170
|
+
* Atomically finds the first document matching the given filter, applies the given update operations to it and
|
|
171
|
+
* returns the resulting document (or `null` if none matched). By default the document is returned as it was
|
|
172
|
+
* *after* the update; pass `returnDocument: "before"` to get the original. A single round trip, so a caller that
|
|
173
|
+
* needs the exact document its own update produced isn't racing a separate follow-up read against a concurrent
|
|
174
|
+
* write to the same document (see `RepoUtils.update()`).
|
|
175
|
+
*
|
|
176
|
+
* @param filter The query filter to match documents against.
|
|
177
|
+
* @param update The update operations (e.g. `$set`) to apply.
|
|
178
|
+
* @param options - Optional settings for the command
|
|
179
|
+
*/
|
|
180
|
+
async findOneAndUpdate(filter, update, options) {
|
|
181
|
+
return (await this.collection.findOneAndUpdate(filter, update, {
|
|
182
|
+
returnDocument: "after",
|
|
183
|
+
...options,
|
|
184
|
+
includeResultMetadata: false,
|
|
185
|
+
}));
|
|
186
|
+
}
|
|
159
187
|
/**
|
|
160
188
|
* Updates all documents matching the given filter with the provided update operations.
|
|
161
189
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MongoRepository.js","sourceRoot":"","sources":["../../../src/database/MongoRepository.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"MongoRepository.js","sourceRoot":"","sources":["../../../src/database/MongoRepository.ts"],"names":[],"mappings":"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"}
|
|
@@ -69,7 +69,13 @@ export class MongoSchemaSync {
|
|
|
69
69
|
// collection (e.g. @ChildEntity subclasses) contribute their indexes to a single specification.
|
|
70
70
|
const collections = new Map();
|
|
71
71
|
for (const clazz of entities) {
|
|
72
|
-
const
|
|
72
|
+
const resolved = this.resolveCollectionInfo(clazz);
|
|
73
|
+
// Merge into any info already built for this collection by an earlier class. Replacing it would drop the
|
|
74
|
+
// earlier classes, so only the last class's indexes would be created.
|
|
75
|
+
const info = collections.get(resolved.name) ?? resolved;
|
|
76
|
+
if (!info.options && resolved.options) {
|
|
77
|
+
info.options = resolved.options;
|
|
78
|
+
}
|
|
73
79
|
info.classes.push(clazz);
|
|
74
80
|
collections.set(info.name, info);
|
|
75
81
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MongoSchemaSync.js","sourceRoot":"","sources":["../../../src/database/MongoSchemaSync.ts"],"names":[],"mappings":"AAKA,OAAO,EACH,gBAAgB,GAInB,MAAM,wCAAwC,CAAC;AAChD,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAqB7C;;;;;;;;;;;;GAYG;AACH,MAAM,OAAO,eAAe;IAIxB,YAAY,EAAM,EAAE,MAAY;QAC5B,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;QACb,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACzB,CAAC;IAED;;;;;;;;;;;;OAYG;IACI,qBAAqB,CAAC,KAAU;QACnC,0CAA0C;QAC1C,KAAK,IAAI,CAAC,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,QAAQ,CAAC,SAAS,EAAE,CAAC,GAAG,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,CAAC;YAC9E,MAAM,aAAa,GAA8B,OAAO,CAAC,cAAc,CAAC,oBAAoB,EAAE,CAAC,CAAC,CAAC;YACjG,IAAI,aAAa,EAAE,CAAC;gBAChB,MAAM,IAAI,GAAmB;oBACzB,IAAI,EAAE,aAAa,CAAC,IAAK;oBACzB,OAAO,EAAE,EAAE;iBACd,CAAC;gBACF,IAAI,aAAa,CAAC,SAAS,EAAE,CAAC;oBAC1B,IAAI,CAAC,OAAO,GAAG,EAAE,SAAS,EAAE,aAAa,CAAC,SAAS,EAAE,CAAC;gBAC1D,CAAC;gBACD,OAAO,IAAI,CAAC;YAChB,CAAC;QACL,CAAC;QAED,2DAA2D;QAC3D,IAAI,KAAK,GAAQ,SAAS,CAAC;QAC3B,KAAK,IAAI,CAAC,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,QAAQ,CAAC,SAAS,EAAE,CAAC,GAAG,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,CAAC;YAC9E,IAAI,OAAO,CAAC,cAAc,CAAC,iBAAiB,EAAE,CAAC,CAAC,EAAE,CAAC;gBAC/C,KAAK,GAAG,CAAC,CAAC;YACd,CAAC;QACL,CAAC;QAED,wCAAwC;QACxC,OAAO;YACH,IAAI,EAAE,SAAS,CAAC,CAAC,KAAK,IAAI,KAAK,CAAC,CAAC,IAAI,CAAC;YACtC,OAAO,EAAE,EAAE;SACd,CAAC;IACN,CAAC;IAED;;;;OAIG;IACI,KAAK,CAAC,WAAW,CAAC,QAAuB;QAC5C,mGAAmG;QACnG,gGAAgG;QAChG,MAAM,WAAW,GAAgC,IAAI,GAAG,EAAE,CAAC;QAC3D,KAAK,MAAM,KAAK,IAAI,QAAQ,EAAE,CAAC;YAC3B,MAAM,
|
|
1
|
+
{"version":3,"file":"MongoSchemaSync.js","sourceRoot":"","sources":["../../../src/database/MongoSchemaSync.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,6 +6,7 @@
|
|
|
6
6
|
// runtime. It is loaded dynamically by `ConnectionManager` if (and only if) a SQL datasource is configured.
|
|
7
7
|
import * as typeorm from "typeorm";
|
|
8
8
|
import { pendingTypeOrmColumns } from "../decorators/ModelDecorators.js";
|
|
9
|
+
import { FORWARDED_SQL_COLUMN_OPTIONS } from "../decorators/PersistenceDecorators.js";
|
|
9
10
|
import { ModelUtils } from "../models/ModelUtils.js";
|
|
10
11
|
/**
|
|
11
12
|
* Bridges framework persistence metadata (declared via the decorators in `PersistenceDecorators`) into TypeORM's
|
|
@@ -82,16 +83,20 @@ export function registerFrameworkMetadata(entities) {
|
|
|
82
83
|
if (exists || !resolvedType) {
|
|
83
84
|
continue;
|
|
84
85
|
}
|
|
86
|
+
const options = { type: resolvedType };
|
|
87
|
+
for (const key of FORWARDED_SQL_COLUMN_OPTIONS) {
|
|
88
|
+
if (column.options[key] !== undefined) {
|
|
89
|
+
options[key] = column.options[key];
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
if (column.options.primary) {
|
|
93
|
+
options.primary = true;
|
|
94
|
+
}
|
|
85
95
|
storage.columns.push({
|
|
86
96
|
target,
|
|
87
97
|
propertyName: column.propertyName,
|
|
88
98
|
mode: "regular",
|
|
89
|
-
options
|
|
90
|
-
type: resolvedType,
|
|
91
|
-
...(column.options.name !== undefined ? { name: column.options.name } : {}),
|
|
92
|
-
...(column.options.nullable !== undefined ? { nullable: column.options.nullable } : {}),
|
|
93
|
-
...(column.options.primary ? { primary: true } : {}),
|
|
94
|
-
},
|
|
99
|
+
options,
|
|
95
100
|
});
|
|
96
101
|
}
|
|
97
102
|
const indexes = Reflect.getOwnMetadata("rrst:indexes", proto) ?? [];
|
|
@@ -181,6 +186,51 @@ export async function connect(name, datasource, entities, url) {
|
|
|
181
186
|
await connection.runMigrations();
|
|
182
187
|
}
|
|
183
188
|
}
|
|
189
|
+
registerRegexpFunction(connection);
|
|
184
190
|
return connection;
|
|
185
191
|
}
|
|
192
|
+
/**
|
|
193
|
+
* Registers a `REGEXP` custom SQL function on a `better-sqlite3` connection, so `ModelUtils`'s `regex()` search
|
|
194
|
+
* operator (compiled to `<column> REGEXP :pattern` for this driver) works the same way it does on PostgreSQL
|
|
195
|
+
* (`~*`) and MySQL/MariaDB (`REGEXP`), both of which support regex matching natively. No-op for any other
|
|
196
|
+
* driver type, or if the underlying driver connection doesn't expose the synchronous `.function()` registration
|
|
197
|
+
* API `better-sqlite3` provides (guarded rather than assumed, since TypeORM's `databaseConnection` is typed
|
|
198
|
+
* `any` and driver internals aren't a stable contract).
|
|
199
|
+
*
|
|
200
|
+
* The registered function fails closed (returns 0/no-match) for a pattern `ModelUtils.isUnsafeRegexPattern`
|
|
201
|
+
* flags as ReDoS-shaped, or that otherwise fails to compile as a `RegExp` - a query built through
|
|
202
|
+
* `ModelUtils.buildSearchQuerySQL`/`buildQueryFromNode` already rejects such a pattern before it reaches here,
|
|
203
|
+
* but this function may also be reached by a raw `Raw()`/QueryBuilder expression elsewhere that didn't go
|
|
204
|
+
* through those guards.
|
|
205
|
+
*/
|
|
206
|
+
function registerRegexpFunction(connection) {
|
|
207
|
+
const driver = connection.driver;
|
|
208
|
+
if (driver?.options?.type !== "better-sqlite3") {
|
|
209
|
+
return;
|
|
210
|
+
}
|
|
211
|
+
const db = driver.databaseConnection;
|
|
212
|
+
if (typeof db?.function !== "function") {
|
|
213
|
+
return;
|
|
214
|
+
}
|
|
215
|
+
try {
|
|
216
|
+
db.function("REGEXP", { deterministic: true }, (pattern, value) => {
|
|
217
|
+
if (value === null || value === undefined || typeof pattern !== "string") {
|
|
218
|
+
return 0;
|
|
219
|
+
}
|
|
220
|
+
if (ModelUtils.isUnsafeRegexPattern(pattern)) {
|
|
221
|
+
return 0;
|
|
222
|
+
}
|
|
223
|
+
try {
|
|
224
|
+
return new RegExp(pattern, "i").test(String(value)) ? 1 : 0;
|
|
225
|
+
}
|
|
226
|
+
catch (err) {
|
|
227
|
+
return 0;
|
|
228
|
+
}
|
|
229
|
+
});
|
|
230
|
+
}
|
|
231
|
+
catch (err) {
|
|
232
|
+
// A `REGEXP` function may already be registered (e.g. a reused/reconnected DataSource) - better-sqlite3
|
|
233
|
+
// throws on a duplicate registration. Not fatal: the existing registration is left in place.
|
|
234
|
+
}
|
|
235
|
+
}
|
|
186
236
|
//# sourceMappingURL=TypeOrmSupport.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TypeOrmSupport.js","sourceRoot":"","sources":["../../../src/database/TypeOrmSupport.ts"],"names":[],"mappings":"AAAA,+EAA+E;AAC/E,wEAAwE;AACxE,mCAAmC;AACnC,+EAA+E;AAC/E,6GAA6G;AAC7G,4GAA4G;AAC5G,OAAO,KAAK,OAAO,MAAM,SAAS,CAAC;AACnC,OAAO,EAAE,qBAAqB,EAAE,MAAM,kCAAkC,CAAC;
|
|
1
|
+
{"version":3,"file":"TypeOrmSupport.js","sourceRoot":"","sources":["../../../src/database/TypeOrmSupport.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/database/index.ts"],"names":[],"mappings":"AAAA,cAAc,sBAAsB,CAAC;AACrC,cAAc,wBAAwB,CAAC;AACvC,cAAc,sBAAsB,CAAC;AACrC,cAAc,sBAAsB,CAAC;AACrC,cAAc,sBAAsB,CAAC;AACrC,cAAc,kBAAkB,CAAC;AACjC,cAAc,iBAAiB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/database/index.ts"],"names":[],"mappings":"AAAA,cAAc,sBAAsB,CAAC;AACrC,cAAc,wBAAwB,CAAC;AACvC,cAAc,qBAAqB,CAAC;AACpC,cAAc,sBAAsB,CAAC;AACrC,cAAc,sBAAsB,CAAC;AACrC,cAAc,sBAAsB,CAAC;AACrC,cAAc,kBAAkB,CAAC;AACjC,cAAc,iBAAiB,CAAC"}
|
|
@@ -4,6 +4,22 @@
|
|
|
4
4
|
///////////////////////////////////////////////////////////////////////////////
|
|
5
5
|
import "reflect-metadata";
|
|
6
6
|
import { snakeCase } from "../database/NamingUtils.js";
|
|
7
|
+
/**
|
|
8
|
+
* The `ColumnOptions` keys that are forwarded to TypeORM verbatim when set. `unique` is not among them: it is
|
|
9
|
+
* registered as a unique index instead (see `Column`), so both backends enforce it the same way.
|
|
10
|
+
*/
|
|
11
|
+
export const FORWARDED_SQL_COLUMN_OPTIONS = [
|
|
12
|
+
"name",
|
|
13
|
+
"nullable",
|
|
14
|
+
"default",
|
|
15
|
+
"length",
|
|
16
|
+
"precision",
|
|
17
|
+
"scale",
|
|
18
|
+
"array",
|
|
19
|
+
"enum",
|
|
20
|
+
"unsigned",
|
|
21
|
+
"comment",
|
|
22
|
+
];
|
|
7
23
|
const COLUMNS_KEY = "rrst:columns";
|
|
8
24
|
const INDEXES_KEY = "rrst:indexes";
|
|
9
25
|
const CLASS_INDEXES_KEY = "rrst:classIndexes";
|
|
@@ -45,6 +61,13 @@ export function Column(options = {}) {
|
|
|
45
61
|
designType,
|
|
46
62
|
options,
|
|
47
63
|
});
|
|
64
|
+
if (options.unique) {
|
|
65
|
+
// Same registration `@Unique()` makes, so MongoSchemaSync and the TypeORM bridge both pick it up.
|
|
66
|
+
pushOwnMetadata(INDEXES_KEY, target, {
|
|
67
|
+
columns: [String(propertyKey)],
|
|
68
|
+
options: { unique: true },
|
|
69
|
+
});
|
|
70
|
+
}
|
|
48
71
|
};
|
|
49
72
|
}
|
|
50
73
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PersistenceDecorators.js","sourceRoot":"","sources":["../../../src/decorators/PersistenceDecorators.ts"],"names":[],"mappings":"AAAA,+EAA+E;AAC/E,wEAAwE;AACxE,mCAAmC;AACnC,+EAA+E;AAC/E,OAAO,kBAAkB,CAAC;AAC1B,OAAO,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;
|
|
1
|
+
{"version":3,"file":"PersistenceDecorators.js","sourceRoot":"","sources":["../../../src/decorators/PersistenceDecorators.ts"],"names":[],"mappings":"AAAA,+EAA+E;AAC/E,wEAAwE;AACxE,mCAAmC;AACnC,+EAA+E;AAC/E,OAAO,kBAAkB,CAAC;AAC1B,OAAO,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AAiEvD;;;GAGG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAG;IACxC,MAAM;IACN,UAAU;IACV,SAAS;IACT,QAAQ;IACR,WAAW;IACX,OAAO;IACP,OAAO;IACP,MAAM;IACN,UAAU;IACV,SAAS;CACH,CAAC;AAqDX,MAAM,WAAW,GAAG,cAAc,CAAC;AACnC,MAAM,WAAW,GAAG,cAAc,CAAC;AACnC,MAAM,iBAAiB,GAAG,mBAAmB,CAAC;AAC9C,MAAM,eAAe,GAAG,iBAAiB,CAAC;AAE1C;;;;GAIG;AACH,SAAS,eAAe,CAAC,GAAW,EAAE,MAAW,EAAE,KAAU;IACzD,MAAM,IAAI,GAAU,OAAO,CAAC,cAAc,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC;IAC9D,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACjB,OAAO,CAAC,cAAc,CAAC,GAAG,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;AAC9C,CAAC;AAED;;;GAGG;AACH,SAAS,kBAAkB,CAAC,GAAW,EAAE,MAAW;IAChD,MAAM,OAAO,GAAY,EAAE,CAAC;IAC5B,KAAK,IAAI,CAAC,GAAG,MAAM,EAAE,CAAC,IAAI,CAAC,KAAK,QAAQ,CAAC,SAAS,IAAI,CAAC,KAAK,MAAM,CAAC,SAAS,EAAE,CAAC,GAAG,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,CAAC;QACzG,MAAM,IAAI,GAAU,OAAO,CAAC,cAAc,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;QACnD,IAAI,IAAI,EAAE,CAAC;YACP,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACvB,CAAC;IACL,CAAC;IACD,OAAO,OAAO,CAAC;AACnB,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,MAAM,CAAC,UAAyB,EAAE;IAC9C,OAAO,UAAU,MAAW,EAAE,WAA4B;QACtD,MAAM,UAAU,GAAQ,OAAO,CAAC,WAAW,CAAC,aAAa,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC;QAChF,eAAe,CAAC,WAAW,EAAE,MAAM,EAAE;YACjC,YAAY,EAAE,MAAM,CAAC,WAAW,CAAC;YACjC,UAAU;YACV,OAAO;SACW,CAAC,CAAC;QACxB,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;YACjB,kGAAkG;YAClG,eAAe,CAAC,WAAW,EAAE,MAAM,EAAE;gBACjC,OAAO,EAAE,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;gBAC9B,OAAO,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE;aACR,CAAC,CAAC;QAC3B,CAAC;IACL,CAAC,CAAC;AACN,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,aAAa,CAAC,UAAyB,EAAE;IACrD,OAAO,MAAM,CAAC,EAAE,GAAG,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;AACjD,CAAC;AAuBD,MAAM,UAAU,KAAK,CACjB,qBAAwD,EACxD,eAAyC,EACzC,YAA2B;IAE3B,4CAA4C;IAC5C,MAAM,IAAI,GAAuB,OAAO,qBAAqB,KAAK,QAAQ,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,SAAS,CAAC;IAC/G,MAAM,MAAM,GAAyB,KAAK,CAAC,OAAO,CAAC,qBAAqB,CAAC;QACrE,CAAC,CAAC,qBAAqB;QACvB,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,eAAe,CAAC;YAC9B,CAAC,CAAC,eAAe;YACjB,CAAC,CAAC,SAAS,CAAC;IAClB,MAAM,OAAO,GACT,CAAC,OAAO,qBAAqB,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,qBAAqB,CAAC;QAC/E,CAAC,CAAC,qBAAqB;QACvB,CAAC,CAAC,OAAO,eAAe,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,eAAe,CAAC;YACtE,CAAC,CAAC,eAAe;YACjB,CAAC,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC;IAEhC,OAAO,UAAU,MAAW,EAAE,WAA6B;QACvD,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;YAC5B,uBAAuB;YACvB,eAAe,CAAC,WAAW,EAAE,MAAM,EAAE;gBACjC,IAAI;gBACJ,OAAO,EAAE,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;gBAC9B,OAAO;aACU,CAAC,CAAC;QAC3B,CAAC;aAAM,CAAC;YACJ,+BAA+B;YAC/B,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACjC,MAAM,IAAI,KAAK,CAAC,mBAAmB,MAAM,CAAC,IAAI,qCAAqC,CAAC,CAAC;YACzF,CAAC;YACD,eAAe,CAAC,iBAAiB,EAAE,MAAM,EAAE;gBACvC,IAAI;gBACJ,OAAO,EAAE,MAAM;gBACf,OAAO;aACU,CAAC,CAAC;QAC3B,CAAC;IACL,CAAC,CAAC;AACN,CAAC;AAWD,MAAM,UAAU,MAAM,CAAC,YAAgC,EAAE,WAAsB;IAC3E,IAAI,OAAO,YAAY,KAAK,QAAQ,EAAE,CAAC;QACnC,OAAO,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC,YAAY,EAAE,WAAW,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,YAAY,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;IACpH,CAAC;SAAM,IAAI,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,CAAC;QACrC,OAAO,KAAK,CAAC,YAAY,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;IACjD,CAAC;IACD,OAAO,KAAK,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;AACnC,CAAC;AACD,gCAAgC;AAEhC;;;;GAIG;AACH,MAAM,UAAU,MAAM,CAAC,OAAuB;IAC1C,OAAO,UAAU,MAAW;QACxB,OAAO,GAAG,OAAO,IAAI,EAAE,CAAC;QACxB,OAAO,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,IAAI,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAEtD,OAAO,CAAC,cAAc,CAAC,oBAAoB,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;QAC9D,OAAO,CAAC,cAAc,CAAC,iBAAiB,EAAE,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IACpE,CAAC,CAAC;AACN,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,iBAAiB,CAAC,KAAU;IACxC,MAAM,MAAM,GAA4B,IAAI,GAAG,EAAE,CAAC;IAClD,+DAA+D;IAC/D,KAAK,MAAM,IAAI,IAAI,kBAAkB,CAAC,WAAW,EAAE,KAAK,CAAC,SAAS,IAAI,KAAK,CAAC,EAAE,CAAC;QAC3E,KAAK,MAAM,MAAM,IAAI,IAAoB,EAAE,CAAC;YACxC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,YAAY,CAAC,EAAE,CAAC;gBACnC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;YAC5C,CAAC;QACL,CAAC;IACL,CAAC;IACD,OAAO,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;AACvC,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,gBAAgB,CAAC,KAAU;IACvC,MAAM,MAAM,GAA2B,IAAI,GAAG,EAAE,CAAC;IACjD,MAAM,QAAQ,GAAG,CAAC,GAAc,EAAU,EAAE,CAAC,GAAG,CAAC,IAAI,IAAI,QAAQ,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;IACzF,6FAA6F;IAC7F,yFAAyF;IACzF,kFAAkF;IAClF,IAAI,IAAI,GAAG,KAAK,CAAC;IACjB,IAAI,KAAK,GAAG,KAAK,CAAC,SAAS,IAAI,KAAK,CAAC;IACrC,OAAO,IAAI,IAAI,IAAI,KAAK,QAAQ,CAAC,SAAS,IAAI,IAAI,KAAK,MAAM,CAAC,SAAS,EAAE,CAAC;QACtE,MAAM,SAAS,GAAgB,OAAO,CAAC,cAAc,CAAC,iBAAiB,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC;QACrF,MAAM,QAAQ,GAAgB,OAAO,CAAC,cAAc,CAAC,WAAW,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC;QAC/E,KAAK,MAAM,KAAK,IAAI,CAAC,GAAG,SAAS,EAAE,GAAG,QAAQ,CAAC,EAAE,CAAC;YAC9C,MAAM,GAAG,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;YAC5B,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;gBACnB,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;YAC3B,CAAC;QACL,CAAC;QACD,IAAI,GAAG,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;QACnC,KAAK,GAAG,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;IACzC,CAAC;IACD,OAAO,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;AACvC,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,aAAa,CAAC,KAAU;IACpC,KAAK,IAAI,CAAC,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,QAAQ,CAAC,SAAS,EAAE,CAAC,GAAG,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,CAAC;QAC9E,MAAM,UAAU,GAAuB,OAAO,CAAC,cAAc,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC;QAClF,IAAI,UAAU,EAAE,CAAC;YACb,OAAO,UAAU,CAAC;QACtB,CAAC;IACL,CAAC;IACD,OAAO,SAAS,CAAC;AACrB,CAAC"}
|
|
@@ -307,8 +307,10 @@ export function Query(name = undefined) {
|
|
|
307
307
|
* endpoints in the class will have rate limiting applied.
|
|
308
308
|
*
|
|
309
309
|
* Optionally pass in options to control the identifier of the rate limit. Set `options.id` to set an explicit identifier.
|
|
310
|
-
* By default, the method and path of the request (without the query portion) is used
|
|
311
|
-
* the `options.perUser` option to `true` to have the limit scoped to each user individually
|
|
310
|
+
* By default, the method and the percent-decoded, normalized path of the request (without the query portion) is used
|
|
311
|
+
* as the identifier. Set the `options.perUser` option to `true` to have the limit scoped to each user individually;
|
|
312
|
+
* anonymous callers are then scoped by client IP address (see `trusted_proxies`). Calling `@RateLimit()` with no
|
|
313
|
+
* options enables `perUser`. See `RouteUtils.checkRateLimiter()`.
|
|
312
314
|
*/
|
|
313
315
|
export function RateLimit(options = { perUser: true }) {
|
|
314
316
|
return function (target, propertyKey, descriptor) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RouteDecorators.js","sourceRoot":"","sources":["../../../src/decorators/RouteDecorators.ts"],"names":[],"mappings":"AAAA,+EAA+E;AAC/E,wEAAwE;AACxE,mCAAmC;AACnC,+EAA+E;AAC/E,OAAO,kBAAkB,CAAC;AAC1B,OAAO,EAAE,SAAS,EAA0B,MAAM,kCAAkC,CAAC;AAGrF;;;;;;;;;GASG;AACH,SAAS,gBAAgB,CAAC,MAAW,EAAE,WAAmB;IACtD,MAAM,QAAQ,GAAQ,OAAO,CAAC,WAAW,CAAC,YAAY,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC;IAC7E,OAAO;QACH,GAAG,QAAQ;QACX,OAAO,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS;KACrE,CAAC;AACN,CAAC;AAED;;;;;;;GAOG;AACH,SAAS,eAAe,CAAC,MAAW,EAAE,WAAmB;IACrD,OAAO,EAAE,GAAG,OAAO,CAAC,WAAW,CAAC,WAAW,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,CAAC;AACxE,CAAC;AAED;;;;GAIG;AACH,SAAS,IAAI,CAAC,GAAG,KAAe;IAC5B,IAAI,MAAM,GAAG,EAAE,CAAC;IAChB,KAAK,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,MAAM,IAAI,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,GAAG,EAAE,CAAC,CAAC,CAAC;IAC1E,OAAO,MAAM,CAAC;AAClB,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,KAAK,CAAC,IAA+C;IACjE,OAAO,UAAU,MAAW,EAAE,WAAmB,EAAE,UAA8B;QAC7E,IAAI,KAAK,GAAQ,gBAAgB,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;QAEvD,4GAA4G;QAC5G,IAAI,KAAK,GAA0B,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QACvE,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;QAE9D,OAAO,CAAC,cAAc,CAAC,YAAY,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC;IACrE,CAAC,CAAC;AACN,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,QAAQ,CAAC,KAAwB,EAAE,OAAyB;IACxE,IAAI,MAAM,GAAa,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;IAC9D,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,OAAO,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;IAChG,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC;AACzB,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,IAAI,CAAC,UAA6B,EAAE,UAAmB,IAAI;IACvE,OAAO,UAAU,MAAW,EAAE,WAAmB,EAAE,UAA8B;QAC7E,IAAI,KAAK,GAAQ,gBAAgB,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;QACvD,KAAK,CAAC,cAAc,GAAG,UAAU,CAAC;QAClC,KAAK,CAAC,YAAY,GAAG,OAAO,CAAC;QAC7B,OAAO,CAAC,cAAc,CAAC,YAAY,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC;IACrE,CAAC,CAAC;AACN,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,UAAU,CAAC,MAAW,EAAE,WAAmB,EAAE,KAAa;IACtE,IAAI,IAAI,GAAQ,eAAe,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;IACrD,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;IAC7B,OAAO,CAAC,cAAc,CAAC,WAAW,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC;AACnE,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,MAAM,CAAC,IAA+C;IAClE,OAAO,UAAU,MAAW,EAAE,WAAmB,EAAE,UAA8B;QAC7E,IAAI,KAAK,GAAQ,gBAAgB,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;QAEvD,4GAA4G;QAC5G,IAAI,KAAK,GAA0B,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QACvE,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;QAEjE,OAAO,CAAC,cAAc,CAAC,YAAY,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC;IACrE,CAAC,CAAC;AACN,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,WAAW,CAAC,IAAY;IACpC,OAAO,UAAU,MAAW,EAAE,WAAmB,EAAE,UAA8B;QAC7E,MAAM,KAAK,GAAQ,gBAAgB,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;QACzD,KAAK,CAAC,WAAW,GAAG,IAAI,CAAC;QACzB,OAAO,CAAC,cAAc,CAAC,YAAY,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC;IACrE,CAAC,CAAC;AACN,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,MAAM,CAAC,IAAa;IAChC,OAAO,MAAM,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;AAClC,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,GAAG,CAAC,IAAa;IAC7B,OAAO,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;AAC/B,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,IAAI,CAAC,IAAa;IAC9B,OAAO,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;AAChC,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,MAAM,CAAC,IAAY;IAC/B,OAAO,UAAU,MAAW,EAAE,WAAmB,EAAE,KAAa;QAC5D,IAAI,IAAI,GAAQ,eAAe,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;QACrD,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;QAC/B,OAAO,CAAC,cAAc,CAAC,WAAW,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC;IACnE,CAAC,CAAC;AACN,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,MAAM,CAAC,MAAyB,EAAE,IAAa;IAC3D,OAAO,UAAU,MAAW,EAAE,WAAmB,EAAE,UAA8B;QAC7E,IAAI,KAAK,GAAQ,gBAAgB,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;QACvD,MAAM,SAAS,GAAW,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;QAE3C,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;YACjB,KAAK,CAAC,OAAO,GAAG,IAAI,GAAG,EAAE,CAAC;QAC9B,CAAC;QAED,IAAI,OAAO,GAAa,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;QAClE,KAAK,IAAI,GAAG,IAAI,OAAO,EAAE,CAAC;YACtB,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;QACtC,CAAC;QAED,OAAO,CAAC,cAAc,CAAC,YAAY,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC;IACrE,CAAC,CAAC;AACN,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,KAAK,CAAC,IAAS;IAC3B,OAAO,UAAkD,WAAc;;QACnE,YAAO,KAAM,SAAQ,WAAW;aAG/B;YAFG,wEAAwE;YACjD,aAAU,GAAQ,IAAK;eAChD;IACN,CAAC,CAAC;AACN,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,OAAO,CAAC,IAAa;IACjC,OAAO,MAAM,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;AACnC,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,KAAK,CAAC,OAA2B,SAAS;IACtD,OAAO,UAAU,MAAW,EAAE,WAAmB,EAAE,KAAa;QAC5D,IAAI,IAAI,GAAQ,eAAe,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;QACrD,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QAC9B,OAAO,CAAC,cAAc,CAAC,WAAW,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC;IACnE,CAAC,CAAC;AACN,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,KAAK,CAAC,IAAa;IAC/B,OAAO,MAAM,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;AACjC,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,IAAI,CAAC,IAAa;IAC9B,OAAO,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;AAChC,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,GAAG,CAAC,IAAa;IAC7B,OAAO,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;AAC/B,CAAC;AAID;;;;;;;;;;GAUG;AACH,MAAM,UAAU,OAAO,CACnB,MAAkB;IACd,GAAG,EAAE,cAAc;IACnB,OAAO,EAAE;QACL;YACI,YAAY,EAAE,WAAW;YACzB,OAAO,EAAE,EAAE;SACd;QACD;YACI,YAAY,EAAE,IAAI;YAClB,OAAO,EAAE;gBACL,SAAS,CAAC,KAAK;gBACf,SAAS,CAAC,MAAM;gBAChB,SAAS,CAAC,MAAM;gBAChB,SAAS,CAAC,MAAM;gBAChB,SAAS,CAAC,IAAI;gBACd,SAAS,CAAC,IAAI;gBACd,SAAS,CAAC,QAAQ;gBAClB,SAAS,CAAC,MAAM;aACnB;SACJ;KACJ;CACJ;IAED,OAAO,UAAU,MAAW,EAAE,WAAoB;QAC9C,kGAAkG;QAClG,qGAAqG;QACrG,sGAAsG;QACtG,MAAM,WAAW,GAAe;YAC5B,GAAG,GAAG;YACN,OAAO,EAAE,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,MAAM,EAAE,OAAO,EAAE,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;SACtF,CAAC;QACF,IAAI,CAAC,WAAW,CAAC,GAAG,IAAI,WAAW,CAAC,GAAG,KAAK,cAAc,EAAE,CAAC;YACzD,WAAW,CAAC,GAAG,GAAG,WAAW,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,WAAW,CAAC,IAAI,IAAI,WAAW,EAAE,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC;QACnG,CAAC;QACD,IAAI,WAAW,EAAE,CAAC;YACd,OAAO,CAAC,cAAc,CAAC,UAAU,EAAE,WAAW,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC;QACzE,CAAC;aAAM,CAAC;YACJ,OAAO,CAAC,cAAc,CAAC,UAAU,EAAE,WAAW,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC;QACtE,CAAC;IACL,CAAC,CAAC;AACN,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,KAAK,CAAC,OAA2B,SAAS;IACtD,OAAO,UAAU,MAAW,EAAE,WAAmB,EAAE,KAAa;QAC5D,IAAI,IAAI,GAAQ,eAAe,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;QACrD,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QAC9B,OAAO,CAAC,cAAc,CAAC,WAAW,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC;IACnE,CAAC,CAAC;AACN,CAAC;AAOD;;;;;;;;GAQG;AACH,MAAM,UAAU,SAAS,CAAC,UAA4B,EAAE,OAAO,EAAE,IAAI,EAAE;IACnE,OAAO,UAAU,MAAW,EAAE,WAAoB,EAAE,UAA+B;QAC/E,IAAI,WAAW,EAAE,CAAC;YACd,IAAI,KAAK,GAAQ,gBAAgB,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;YACvD,KAAK,CAAC,SAAS,GAAG,OAAO,CAAC;YAC1B,OAAO,CAAC,cAAc,CAAC,YAAY,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC;QACrE,CAAC;aAAM,CAAC;YACJ,OAAO,CAAC,cAAc,CAAC,gBAAgB,EAAE,OAAO,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC;QACxE,CAAC;IACL,CAAC,CAAC;AACN,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,OAAO,CAAC,MAAW,EAAE,WAAmB,EAAE,KAAa;IACnE,IAAI,IAAI,GAAQ,eAAe,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;IACrD,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IAC1B,OAAO,CAAC,cAAc,CAAC,WAAW,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC;AACnE,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,QAAQ,CAAC,MAAW,EAAE,WAAmB,EAAE,KAAa;IACpE,IAAI,IAAI,GAAQ,eAAe,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;IACrD,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IAC3B,OAAO,CAAC,cAAc,CAAC,WAAW,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC;AACnE,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,iBAAiB,CAAC,YAAoB,CAAC,CAAC;IACpD,OAAO,UAAU,MAAW,EAAE,WAAoB,EAAE,UAA+B;QAC/E,IAAI,WAAW,EAAE,CAAC;YACd,IAAI,KAAK,GAAQ,gBAAgB,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;YACvD,KAAK,CAAC,iBAAiB,GAAG,SAAS,CAAC;YACpC,OAAO,CAAC,cAAc,CAAC,YAAY,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC;QACrE,CAAC;aAAM,CAAC;YACJ,OAAO,CAAC,cAAc,CAAC,wBAAwB,EAAE,SAAS,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC;QAClF,CAAC;IACL,CAAC,CAAC;AACN,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,YAAY,CAAC,KAAwB;IACjD,OAAO,UAAU,MAAW,EAAE,WAAmB,EAAE,UAA8B;QAC7E,IAAI,KAAK,GAAQ,gBAAgB,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;QACvD,KAAK,CAAC,aAAa,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;QAC7D,OAAO,CAAC,cAAc,CAAC,YAAY,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC;IACrE,CAAC,CAAC;AACN,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,aAAa,CAAC,MAAyB;IACnD,OAAO,UAAU,MAAW,EAAE,WAAmB,EAAE,UAA8B;QAC7E,IAAI,KAAK,GAAQ,gBAAgB,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;QACvD,KAAK,CAAC,cAAc,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;QACjE,OAAO,CAAC,cAAc,CAAC,YAAY,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC;IACrE,CAAC,CAAC;AACN,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,mBAAmB;IAC/B,OAAO,UAAU,MAAW,EAAE,WAAmB,EAAE,UAA8B;QAC7E,IAAI,KAAK,GAAQ,gBAAgB,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;QACvD,KAAK,CAAC,mBAAmB,GAAG,IAAI,CAAC;QACjC,OAAO,CAAC,cAAc,CAAC,YAAY,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC;IACrE,CAAC,CAAC;AACN,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,KAAK,CAAC,KAAwB;IAC1C,OAAO,UAAU,MAAgB;QAC7B,IAAI,UAAU,GAAa,OAAO,CAAC,WAAW,CAAC,iBAAiB,EAAE,MAAM,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;QAC1F,UAAU,GAAG,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;QACvE,OAAO,CAAC,cAAc,CAAC,iBAAiB,EAAE,UAAU,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC;IAC5E,CAAC,CAAC;AACN,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,MAAM,CAAC,MAAW,EAAE,WAAmB,EAAE,KAAa;IAClE,IAAI,IAAI,GAAQ,eAAe,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;IACrD,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IACzB,OAAO,CAAC,cAAc,CAAC,WAAW,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC;AACnE,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,IAAI,CAAC,MAAW,EAAE,WAAmB,EAAE,KAAa;IAChE,IAAI,IAAI,GAAQ,eAAe,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;IACrD,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IACvB,OAAO,CAAC,cAAc,CAAC,WAAW,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC;AACnE,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,QAAQ,CAAC,IAAuB;IAC5C,OAAO,UAAU,MAAW,EAAE,WAAmB,EAAE,UAA8B;QAC7E,IAAI,KAAK,GAAQ,gBAAgB,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;QACvD,KAAK,CAAC,SAAS,GAAG,IAAI,CAAC;QACvB,OAAO,CAAC,cAAc,CAAC,YAAY,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC;IACrE,CAAC,CAAC;AACN,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,SAAS,CAAC,IAAa;IACnC,OAAO,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;AAC9B,CAAC"}
|
|
1
|
+
{"version":3,"file":"RouteDecorators.js","sourceRoot":"","sources":["../../../src/decorators/RouteDecorators.ts"],"names":[],"mappings":"AAAA,+EAA+E;AAC/E,wEAAwE;AACxE,mCAAmC;AACnC,+EAA+E;AAC/E,OAAO,kBAAkB,CAAC;AAC1B,OAAO,EAAE,SAAS,EAA0B,MAAM,kCAAkC,CAAC;AAGrF;;;;;;;;;GASG;AACH,SAAS,gBAAgB,CAAC,MAAW,EAAE,WAAmB;IACtD,MAAM,QAAQ,GAAQ,OAAO,CAAC,WAAW,CAAC,YAAY,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC;IAC7E,OAAO;QACH,GAAG,QAAQ;QACX,OAAO,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS;KACrE,CAAC;AACN,CAAC;AAED;;;;;;;GAOG;AACH,SAAS,eAAe,CAAC,MAAW,EAAE,WAAmB;IACrD,OAAO,EAAE,GAAG,OAAO,CAAC,WAAW,CAAC,WAAW,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,CAAC;AACxE,CAAC;AAED;;;;GAIG;AACH,SAAS,IAAI,CAAC,GAAG,KAAe;IAC5B,IAAI,MAAM,GAAG,EAAE,CAAC;IAChB,KAAK,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,MAAM,IAAI,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,GAAG,EAAE,CAAC,CAAC,CAAC;IAC1E,OAAO,MAAM,CAAC;AAClB,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,KAAK,CAAC,IAA+C;IACjE,OAAO,UAAU,MAAW,EAAE,WAAmB,EAAE,UAA8B;QAC7E,IAAI,KAAK,GAAQ,gBAAgB,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;QAEvD,4GAA4G;QAC5G,IAAI,KAAK,GAA0B,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QACvE,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;QAE9D,OAAO,CAAC,cAAc,CAAC,YAAY,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC;IACrE,CAAC,CAAC;AACN,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,QAAQ,CAAC,KAAwB,EAAE,OAAyB;IACxE,IAAI,MAAM,GAAa,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;IAC9D,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,OAAO,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;IAChG,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC;AACzB,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,IAAI,CAAC,UAA6B,EAAE,UAAmB,IAAI;IACvE,OAAO,UAAU,MAAW,EAAE,WAAmB,EAAE,UAA8B;QAC7E,IAAI,KAAK,GAAQ,gBAAgB,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;QACvD,KAAK,CAAC,cAAc,GAAG,UAAU,CAAC;QAClC,KAAK,CAAC,YAAY,GAAG,OAAO,CAAC;QAC7B,OAAO,CAAC,cAAc,CAAC,YAAY,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC;IACrE,CAAC,CAAC;AACN,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,UAAU,CAAC,MAAW,EAAE,WAAmB,EAAE,KAAa;IACtE,IAAI,IAAI,GAAQ,eAAe,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;IACrD,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;IAC7B,OAAO,CAAC,cAAc,CAAC,WAAW,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC;AACnE,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,MAAM,CAAC,IAA+C;IAClE,OAAO,UAAU,MAAW,EAAE,WAAmB,EAAE,UAA8B;QAC7E,IAAI,KAAK,GAAQ,gBAAgB,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;QAEvD,4GAA4G;QAC5G,IAAI,KAAK,GAA0B,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QACvE,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;QAEjE,OAAO,CAAC,cAAc,CAAC,YAAY,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC;IACrE,CAAC,CAAC;AACN,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,WAAW,CAAC,IAAY;IACpC,OAAO,UAAU,MAAW,EAAE,WAAmB,EAAE,UAA8B;QAC7E,MAAM,KAAK,GAAQ,gBAAgB,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;QACzD,KAAK,CAAC,WAAW,GAAG,IAAI,CAAC;QACzB,OAAO,CAAC,cAAc,CAAC,YAAY,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC;IACrE,CAAC,CAAC;AACN,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,MAAM,CAAC,IAAa;IAChC,OAAO,MAAM,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;AAClC,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,GAAG,CAAC,IAAa;IAC7B,OAAO,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;AAC/B,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,IAAI,CAAC,IAAa;IAC9B,OAAO,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;AAChC,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,MAAM,CAAC,IAAY;IAC/B,OAAO,UAAU,MAAW,EAAE,WAAmB,EAAE,KAAa;QAC5D,IAAI,IAAI,GAAQ,eAAe,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;QACrD,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;QAC/B,OAAO,CAAC,cAAc,CAAC,WAAW,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC;IACnE,CAAC,CAAC;AACN,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,MAAM,CAAC,MAAyB,EAAE,IAAa;IAC3D,OAAO,UAAU,MAAW,EAAE,WAAmB,EAAE,UAA8B;QAC7E,IAAI,KAAK,GAAQ,gBAAgB,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;QACvD,MAAM,SAAS,GAAW,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;QAE3C,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;YACjB,KAAK,CAAC,OAAO,GAAG,IAAI,GAAG,EAAE,CAAC;QAC9B,CAAC;QAED,IAAI,OAAO,GAAa,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;QAClE,KAAK,IAAI,GAAG,IAAI,OAAO,EAAE,CAAC;YACtB,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;QACtC,CAAC;QAED,OAAO,CAAC,cAAc,CAAC,YAAY,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC;IACrE,CAAC,CAAC;AACN,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,KAAK,CAAC,IAAS;IAC3B,OAAO,UAAkD,WAAc;;QACnE,YAAO,KAAM,SAAQ,WAAW;aAG/B;YAFG,wEAAwE;YACjD,aAAU,GAAQ,IAAK;eAChD;IACN,CAAC,CAAC;AACN,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,OAAO,CAAC,IAAa;IACjC,OAAO,MAAM,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;AACnC,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,KAAK,CAAC,OAA2B,SAAS;IACtD,OAAO,UAAU,MAAW,EAAE,WAAmB,EAAE,KAAa;QAC5D,IAAI,IAAI,GAAQ,eAAe,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;QACrD,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QAC9B,OAAO,CAAC,cAAc,CAAC,WAAW,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC;IACnE,CAAC,CAAC;AACN,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,KAAK,CAAC,IAAa;IAC/B,OAAO,MAAM,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;AACjC,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,IAAI,CAAC,IAAa;IAC9B,OAAO,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;AAChC,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,GAAG,CAAC,IAAa;IAC7B,OAAO,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;AAC/B,CAAC;AAID;;;;;;;;;;GAUG;AACH,MAAM,UAAU,OAAO,CACnB,MAAkB;IACd,GAAG,EAAE,cAAc;IACnB,OAAO,EAAE;QACL;YACI,YAAY,EAAE,WAAW;YACzB,OAAO,EAAE,EAAE;SACd;QACD;YACI,YAAY,EAAE,IAAI;YAClB,OAAO,EAAE;gBACL,SAAS,CAAC,KAAK;gBACf,SAAS,CAAC,MAAM;gBAChB,SAAS,CAAC,MAAM;gBAChB,SAAS,CAAC,MAAM;gBAChB,SAAS,CAAC,IAAI;gBACd,SAAS,CAAC,IAAI;gBACd,SAAS,CAAC,QAAQ;gBAClB,SAAS,CAAC,MAAM;aACnB;SACJ;KACJ;CACJ;IAED,OAAO,UAAU,MAAW,EAAE,WAAoB;QAC9C,kGAAkG;QAClG,qGAAqG;QACrG,sGAAsG;QACtG,MAAM,WAAW,GAAe;YAC5B,GAAG,GAAG;YACN,OAAO,EAAE,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,MAAM,EAAE,OAAO,EAAE,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;SACtF,CAAC;QACF,IAAI,CAAC,WAAW,CAAC,GAAG,IAAI,WAAW,CAAC,GAAG,KAAK,cAAc,EAAE,CAAC;YACzD,WAAW,CAAC,GAAG,GAAG,WAAW,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,WAAW,CAAC,IAAI,IAAI,WAAW,EAAE,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC;QACnG,CAAC;QACD,IAAI,WAAW,EAAE,CAAC;YACd,OAAO,CAAC,cAAc,CAAC,UAAU,EAAE,WAAW,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC;QACzE,CAAC;aAAM,CAAC;YACJ,OAAO,CAAC,cAAc,CAAC,UAAU,EAAE,WAAW,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC;QACtE,CAAC;IACL,CAAC,CAAC;AACN,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,KAAK,CAAC,OAA2B,SAAS;IACtD,OAAO,UAAU,MAAW,EAAE,WAAmB,EAAE,KAAa;QAC5D,IAAI,IAAI,GAAQ,eAAe,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;QACrD,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QAC9B,OAAO,CAAC,cAAc,CAAC,WAAW,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC;IACnE,CAAC,CAAC;AACN,CAAC;AAOD;;;;;;;;;;GAUG;AACH,MAAM,UAAU,SAAS,CAAC,UAA4B,EAAE,OAAO,EAAE,IAAI,EAAE;IACnE,OAAO,UAAU,MAAW,EAAE,WAAoB,EAAE,UAA+B;QAC/E,IAAI,WAAW,EAAE,CAAC;YACd,IAAI,KAAK,GAAQ,gBAAgB,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;YACvD,KAAK,CAAC,SAAS,GAAG,OAAO,CAAC;YAC1B,OAAO,CAAC,cAAc,CAAC,YAAY,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC;QACrE,CAAC;aAAM,CAAC;YACJ,OAAO,CAAC,cAAc,CAAC,gBAAgB,EAAE,OAAO,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC;QACxE,CAAC;IACL,CAAC,CAAC;AACN,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,OAAO,CAAC,MAAW,EAAE,WAAmB,EAAE,KAAa;IACnE,IAAI,IAAI,GAAQ,eAAe,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;IACrD,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IAC1B,OAAO,CAAC,cAAc,CAAC,WAAW,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC;AACnE,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,QAAQ,CAAC,MAAW,EAAE,WAAmB,EAAE,KAAa;IACpE,IAAI,IAAI,GAAQ,eAAe,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;IACrD,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IAC3B,OAAO,CAAC,cAAc,CAAC,WAAW,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC;AACnE,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,iBAAiB,CAAC,YAAoB,CAAC,CAAC;IACpD,OAAO,UAAU,MAAW,EAAE,WAAoB,EAAE,UAA+B;QAC/E,IAAI,WAAW,EAAE,CAAC;YACd,IAAI,KAAK,GAAQ,gBAAgB,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;YACvD,KAAK,CAAC,iBAAiB,GAAG,SAAS,CAAC;YACpC,OAAO,CAAC,cAAc,CAAC,YAAY,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC;QACrE,CAAC;aAAM,CAAC;YACJ,OAAO,CAAC,cAAc,CAAC,wBAAwB,EAAE,SAAS,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC;QAClF,CAAC;IACL,CAAC,CAAC;AACN,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,YAAY,CAAC,KAAwB;IACjD,OAAO,UAAU,MAAW,EAAE,WAAmB,EAAE,UAA8B;QAC7E,IAAI,KAAK,GAAQ,gBAAgB,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;QACvD,KAAK,CAAC,aAAa,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;QAC7D,OAAO,CAAC,cAAc,CAAC,YAAY,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC;IACrE,CAAC,CAAC;AACN,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,aAAa,CAAC,MAAyB;IACnD,OAAO,UAAU,MAAW,EAAE,WAAmB,EAAE,UAA8B;QAC7E,IAAI,KAAK,GAAQ,gBAAgB,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;QACvD,KAAK,CAAC,cAAc,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;QACjE,OAAO,CAAC,cAAc,CAAC,YAAY,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC;IACrE,CAAC,CAAC;AACN,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,mBAAmB;IAC/B,OAAO,UAAU,MAAW,EAAE,WAAmB,EAAE,UAA8B;QAC7E,IAAI,KAAK,GAAQ,gBAAgB,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;QACvD,KAAK,CAAC,mBAAmB,GAAG,IAAI,CAAC;QACjC,OAAO,CAAC,cAAc,CAAC,YAAY,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC;IACrE,CAAC,CAAC;AACN,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,KAAK,CAAC,KAAwB;IAC1C,OAAO,UAAU,MAAgB;QAC7B,IAAI,UAAU,GAAa,OAAO,CAAC,WAAW,CAAC,iBAAiB,EAAE,MAAM,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;QAC1F,UAAU,GAAG,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;QACvE,OAAO,CAAC,cAAc,CAAC,iBAAiB,EAAE,UAAU,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC;IAC5E,CAAC,CAAC;AACN,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,MAAM,CAAC,MAAW,EAAE,WAAmB,EAAE,KAAa;IAClE,IAAI,IAAI,GAAQ,eAAe,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;IACrD,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IACzB,OAAO,CAAC,cAAc,CAAC,WAAW,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC;AACnE,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,IAAI,CAAC,MAAW,EAAE,WAAmB,EAAE,KAAa;IAChE,IAAI,IAAI,GAAQ,eAAe,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;IACrD,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IACvB,OAAO,CAAC,cAAc,CAAC,WAAW,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC;AACnE,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,QAAQ,CAAC,IAAuB;IAC5C,OAAO,UAAU,MAAW,EAAE,WAAmB,EAAE,UAA8B;QAC7E,IAAI,KAAK,GAAQ,gBAAgB,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;QACvD,KAAK,CAAC,SAAS,GAAG,IAAI,CAAC;QACvB,OAAO,CAAC,cAAc,CAAC,YAAY,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC;IACrE,CAAC,CAAC;AACN,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,SAAS,CAAC,IAAa;IACnC,OAAO,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;AAC9B,CAAC"}
|
|
@@ -1,3 +1,9 @@
|
|
|
1
|
+
///////////////////////////////////////////////////////////////////////////////
|
|
2
|
+
// Copyright (C) 2020-2026 Jean-Philippe Steinmetz. All rights reserved.
|
|
3
|
+
// SPDX-License-Identifier: MPL-2.0
|
|
4
|
+
///////////////////////////////////////////////////////////////////////////////
|
|
5
|
+
/// <reference types="bun" />
|
|
6
|
+
import { DEFAULT_WS_OPTIONS, } from "../types.js";
|
|
1
7
|
import { DEFAULT_MAX_BODY_SIZE } from "../uWS/Adapters.js";
|
|
2
8
|
import { BunRequest, BunResponse, readBunBody } from "./BunAdapters.js";
|
|
3
9
|
import { BunWebSocketShim } from "./BunWebSocket.js";
|
|
@@ -73,6 +79,10 @@ function mapSslConfigToBunTls(sslConfig) {
|
|
|
73
79
|
passphrase: sslConfig.passphrase,
|
|
74
80
|
};
|
|
75
81
|
}
|
|
82
|
+
/** Returns the byte length of an incoming Bun WebSocket message. */
|
|
83
|
+
function messageByteLength(message) {
|
|
84
|
+
return typeof message === "string" ? Buffer.byteLength(message) : message.byteLength;
|
|
85
|
+
}
|
|
76
86
|
/**
|
|
77
87
|
* Bun-native HTTP/WebSocket router built on `Bun.serve()`. Exposes the same public surface as the
|
|
78
88
|
* uWS-backed `HttpRouter` (`use/get/post/put/delete/patch/head/options/ws/listen/close/isListening/
|
|
@@ -94,6 +104,8 @@ export class BunRouter {
|
|
|
94
104
|
* see `HttpRouter`'s identical field/doc comment for the full rationale (consulted by `Server.ts`'s
|
|
95
105
|
* global CORS middleware so a real app-defined `OPTIONS` handler gets a chance to run). */
|
|
96
106
|
this.explicitOptionsPaths = new Set();
|
|
107
|
+
/** The HTTP requests currently being handled. */
|
|
108
|
+
this.inFlight = 0;
|
|
97
109
|
/** The port the server is currently listening on (set after a successful `listen()` call). */
|
|
98
110
|
this.listenPort = 0;
|
|
99
111
|
// -------------------------------------------------------------------------
|
|
@@ -112,6 +124,7 @@ export class BunRouter {
|
|
|
112
124
|
if (wsMatch) {
|
|
113
125
|
const req = new BunRequest(rawReq, server);
|
|
114
126
|
req.params = extractParams(wsMatch.segments, reqSegments);
|
|
127
|
+
req.routePattern = wsMatch.pattern;
|
|
115
128
|
if (wsMatch.upgradeAuth) {
|
|
116
129
|
const authResult = wsMatch.upgradeAuth(req);
|
|
117
130
|
if (authResult.reject) {
|
|
@@ -127,7 +140,11 @@ export class BunRouter {
|
|
|
127
140
|
req.authToken = authResult.authToken;
|
|
128
141
|
}
|
|
129
142
|
}
|
|
130
|
-
const socketData = {
|
|
143
|
+
const socketData = {
|
|
144
|
+
req,
|
|
145
|
+
handlers: wsMatch.handlers,
|
|
146
|
+
maxPayloadLength: wsMatch.options.maxPayloadLength,
|
|
147
|
+
};
|
|
131
148
|
const upgraded = server.upgrade(rawReq, { data: socketData });
|
|
132
149
|
if (upgraded)
|
|
133
150
|
return undefined;
|
|
@@ -141,15 +158,26 @@ export class BunRouter {
|
|
|
141
158
|
return new Response(JSON.stringify({ code: ApiErrors.NOT_FOUND, status: 404, message: ApiErrorMessages.NOT_FOUND }), { status: 404, headers: { "content-type": "application/json" } });
|
|
142
159
|
}
|
|
143
160
|
const req = new BunRequest(rawReq, server);
|
|
161
|
+
req.routePattern = route.pattern;
|
|
144
162
|
// For wildcard-suffixed routes, `route.segments` is only the prefix — slice reqSegments to
|
|
145
163
|
// match so extractParams doesn't walk past it. For exact-length routes this is a no-op
|
|
146
164
|
// (route.segments.length === reqSegments.length is guaranteed by matchSegments).
|
|
147
165
|
req.params = extractParams(route.segments, reqSegments.slice(0, route.segments.length));
|
|
148
166
|
const res = new BunResponse(rawReq);
|
|
149
167
|
res.isHead = route.isHead;
|
|
150
|
-
|
|
151
|
-
|
|
168
|
+
this.inFlight++;
|
|
169
|
+
let bodyResult;
|
|
170
|
+
try {
|
|
171
|
+
bodyResult = await readBunBody(req, rawReq, this.maxBodySize);
|
|
172
|
+
}
|
|
173
|
+
catch (err) {
|
|
174
|
+
this.inFlight--;
|
|
175
|
+
throw err;
|
|
176
|
+
}
|
|
177
|
+
if (!bodyResult.ok) {
|
|
178
|
+
this.inFlight--;
|
|
152
179
|
return bodyResult.response;
|
|
180
|
+
}
|
|
153
181
|
const allHandlers = [
|
|
154
182
|
...this.globalMiddleware.slice(0, route.preLength),
|
|
155
183
|
...route.handlers,
|
|
@@ -162,6 +190,9 @@ export class BunRouter {
|
|
|
162
190
|
})
|
|
163
191
|
.catch((err) => {
|
|
164
192
|
res.abortStream(err);
|
|
193
|
+
})
|
|
194
|
+
.finally(() => {
|
|
195
|
+
this.inFlight--;
|
|
165
196
|
});
|
|
166
197
|
return res.responseReady;
|
|
167
198
|
};
|
|
@@ -194,6 +225,17 @@ export class BunRouter {
|
|
|
194
225
|
},
|
|
195
226
|
message: (ws, message) => {
|
|
196
227
|
const data = ws.data;
|
|
228
|
+
// Bun's own limit is server-wide (the largest of all routes), so enforce this route's own limit here,
|
|
229
|
+
// closing the socket like uWS does for an oversized message.
|
|
230
|
+
if (data.maxPayloadLength !== undefined && messageByteLength(message) > data.maxPayloadLength) {
|
|
231
|
+
try {
|
|
232
|
+
ws.close(1009, "Message too big");
|
|
233
|
+
}
|
|
234
|
+
catch {
|
|
235
|
+
// Already closed
|
|
236
|
+
}
|
|
237
|
+
return;
|
|
238
|
+
}
|
|
197
239
|
const isBinary = typeof message !== "string";
|
|
198
240
|
data.shim?.emit("message", isBinary ? Buffer.from(message) : message, isBinary);
|
|
199
241
|
},
|
|
@@ -232,7 +274,9 @@ export class BunRouter {
|
|
|
232
274
|
list.push(route);
|
|
233
275
|
this.routesByMethod.set(method, list);
|
|
234
276
|
}
|
|
235
|
-
register(method, routePath, handlers, isHead = false
|
|
277
|
+
register(method, routePath, handlers, isHead = false,
|
|
278
|
+
// `null` (not `undefined`, which would select this default) marks the router's own fallback routes.
|
|
279
|
+
pattern = routePath) {
|
|
236
280
|
const pre = this.capturePreRouteCount();
|
|
237
281
|
const normalized = normalizePath(routePath);
|
|
238
282
|
const isRootWildcard = normalized === "/*";
|
|
@@ -241,7 +285,15 @@ export class BunRouter {
|
|
|
241
285
|
const hasWildcardSuffix = isRootWildcard || normalized.endsWith("/*");
|
|
242
286
|
// Strip the trailing "/*" (2 chars) to get the prefix; "/*" itself strips to "" -> segments [].
|
|
243
287
|
const segments = hasWildcardSuffix ? splitPath(normalized.slice(0, -2)) : splitPath(normalized);
|
|
244
|
-
this.pushRoute(method, {
|
|
288
|
+
this.pushRoute(method, {
|
|
289
|
+
segments,
|
|
290
|
+
hasWildcardSuffix,
|
|
291
|
+
isRootWildcard,
|
|
292
|
+
handlers,
|
|
293
|
+
preLength: pre,
|
|
294
|
+
isHead,
|
|
295
|
+
pattern: pattern ?? undefined,
|
|
296
|
+
});
|
|
245
297
|
return this;
|
|
246
298
|
}
|
|
247
299
|
// -------------------------------------------------------------------------
|
|
@@ -290,12 +342,38 @@ export class BunRouter {
|
|
|
290
342
|
* is aborted. If it returns `{ user, ... }`, those credentials are attached to the request so
|
|
291
343
|
* downstream middleware sees an authenticated user. If it returns `{}`, auth falls through to
|
|
292
344
|
* the post-upgrade message-based LOGIN flow.
|
|
345
|
+
*
|
|
346
|
+
* `wsOptions` uses the uWS option names (`maxPayloadLength`, `idleTimeout`, `maxBackpressure`) over
|
|
347
|
+
* `DEFAULT_WS_OPTIONS`. `Bun.serve()` only accepts one WebSocket configuration for the whole server, so
|
|
348
|
+
* `maxPayloadLength` is additionally enforced per route (a larger message closes the socket with 1009), while
|
|
349
|
+
* `idleTimeout` and `maxBackpressure` are applied server-wide using the largest value any route registered.
|
|
293
350
|
*/
|
|
294
|
-
ws(routePath, handlers,
|
|
351
|
+
ws(routePath, handlers, wsOptions, upgradeAuth) {
|
|
295
352
|
const normalized = normalizePath(routePath);
|
|
296
|
-
|
|
353
|
+
const options = {
|
|
354
|
+
maxPayloadLength: wsOptions?.maxPayloadLength ?? DEFAULT_WS_OPTIONS.maxPayloadLength,
|
|
355
|
+
idleTimeout: wsOptions?.idleTimeout ?? DEFAULT_WS_OPTIONS.idleTimeout,
|
|
356
|
+
maxBackpressure: wsOptions?.maxBackpressure ?? DEFAULT_WS_OPTIONS.maxBackpressure,
|
|
357
|
+
};
|
|
358
|
+
this.wsRoutes.push({ segments: splitPath(normalized), handlers, upgradeAuth, pattern: routePath, options });
|
|
297
359
|
return this;
|
|
298
360
|
}
|
|
361
|
+
/**
|
|
362
|
+
* Builds the server-wide `Bun.serve()` WebSocket limits from every registered WebSocket route: the largest value
|
|
363
|
+
* of each option, or `DEFAULT_WS_OPTIONS` when no route is registered.
|
|
364
|
+
*/
|
|
365
|
+
buildWebSocketLimits() {
|
|
366
|
+
const all = this.wsRoutes.length > 0 ? this.wsRoutes.map((r) => r.options) : [DEFAULT_WS_OPTIONS];
|
|
367
|
+
// Bun treats an idleTimeout of 0 as "disabled", same as uWS, so a route that disabled it wins.
|
|
368
|
+
const idleTimeout = all.some((o) => o.idleTimeout === 0)
|
|
369
|
+
? 0
|
|
370
|
+
: Math.max(...all.map((o) => o.idleTimeout));
|
|
371
|
+
return {
|
|
372
|
+
maxPayloadLength: Math.max(...all.map((o) => o.maxPayloadLength)),
|
|
373
|
+
idleTimeout,
|
|
374
|
+
backpressureLimit: Math.max(...all.map((o) => o.maxBackpressure)),
|
|
375
|
+
};
|
|
376
|
+
}
|
|
299
377
|
// -------------------------------------------------------------------------
|
|
300
378
|
// Route matching
|
|
301
379
|
// -------------------------------------------------------------------------
|
|
@@ -370,6 +448,7 @@ export class BunRouter {
|
|
|
370
448
|
handlers: [],
|
|
371
449
|
preLength: 0,
|
|
372
450
|
isHead: false,
|
|
451
|
+
pattern: undefined,
|
|
373
452
|
});
|
|
374
453
|
// Register a JSON 404 fallback for any request that doesn't match a registered route,
|
|
375
454
|
// respecting an app-defined literal `/*` route (e.g. a `BaseStaticRoute` mounted at the site
|
|
@@ -387,7 +466,9 @@ export class BunRouter {
|
|
|
387
466
|
];
|
|
388
467
|
for (const verb of verbs) {
|
|
389
468
|
if (!this.rootWildcardVerbs.has(verb)) {
|
|
390
|
-
|
|
469
|
+
// No route pattern: every unmatched path shares one "unmatched" identity instead of looking like an
|
|
470
|
+
// app-defined `/*` route.
|
|
471
|
+
this.register(verb.toUpperCase(), "/*", [notFoundHandler], verb === "head", null);
|
|
391
472
|
}
|
|
392
473
|
}
|
|
393
474
|
const tls = this.sslConfig ? mapSslConfigToBunTls(this.sslConfig) : undefined;
|
|
@@ -397,7 +478,7 @@ export class BunRouter {
|
|
|
397
478
|
hostname: host,
|
|
398
479
|
port,
|
|
399
480
|
fetch: this.fetchHandler,
|
|
400
|
-
websocket: this.websocketConfig,
|
|
481
|
+
websocket: { ...this.websocketConfig, ...this.buildWebSocketLimits() },
|
|
401
482
|
tls,
|
|
402
483
|
});
|
|
403
484
|
this.listenPort = this._bunServer.port ?? port;
|
|
@@ -415,5 +496,34 @@ export class BunRouter {
|
|
|
415
496
|
this._bunServer = undefined;
|
|
416
497
|
}
|
|
417
498
|
}
|
|
499
|
+
/** The number of HTTP requests currently being handled. */
|
|
500
|
+
get inFlightRequests() {
|
|
501
|
+
return this.inFlight;
|
|
502
|
+
}
|
|
503
|
+
/**
|
|
504
|
+
* Stops accepting new connections, waits up to `timeoutMs` for in-flight HTTP requests to finish, then closes
|
|
505
|
+
* every remaining connection (keep-alive and WebSocket connections included).
|
|
506
|
+
*
|
|
507
|
+
* @param timeoutMs The maximum time to wait for in-flight requests, in milliseconds.
|
|
508
|
+
*/
|
|
509
|
+
async shutdown(timeoutMs = 10000) {
|
|
510
|
+
const server = this._bunServer;
|
|
511
|
+
if (!server) {
|
|
512
|
+
return;
|
|
513
|
+
}
|
|
514
|
+
this._bunServer = undefined;
|
|
515
|
+
// stop(false) stops accepting new connections but lets existing ones finish.
|
|
516
|
+
void Promise.resolve(server.stop(false)).catch(() => undefined);
|
|
517
|
+
const deadline = Date.now() + Math.max(0, timeoutMs);
|
|
518
|
+
while (this.inFlight > 0 && Date.now() < deadline) {
|
|
519
|
+
await new Promise((resolve) => setTimeout(resolve, 10));
|
|
520
|
+
}
|
|
521
|
+
try {
|
|
522
|
+
await server.stop(true);
|
|
523
|
+
}
|
|
524
|
+
catch {
|
|
525
|
+
// Already stopped
|
|
526
|
+
}
|
|
527
|
+
}
|
|
418
528
|
}
|
|
419
529
|
//# sourceMappingURL=BunRouter.js.map
|