@rapidrest/service-core 1.0.0-rc.21 → 1.0.0-rc.23

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.
Files changed (90) hide show
  1. package/dist/lib/ApiErrors.js +2 -0
  2. package/dist/lib/ApiErrors.js.map +1 -1
  3. package/dist/lib/OpenApiSpec.js.map +1 -1
  4. package/dist/lib/Server.js +25 -15
  5. package/dist/lib/Server.js.map +1 -1
  6. package/dist/lib/auth/AuthMiddleware.js +2 -1
  7. package/dist/lib/auth/AuthMiddleware.js.map +1 -1
  8. package/dist/lib/auth/JWTStrategy.js +21 -1
  9. package/dist/lib/auth/JWTStrategy.js.map +1 -1
  10. package/dist/lib/database/ConnectionManager.js +7 -1
  11. package/dist/lib/database/ConnectionManager.js.map +1 -1
  12. package/dist/lib/database/MongoSchemaSync.js.map +1 -1
  13. package/dist/lib/decorators/ModelDecorators.js +17 -0
  14. package/dist/lib/decorators/ModelDecorators.js.map +1 -1
  15. package/dist/lib/http/IWebSocketShim.js +2 -0
  16. package/dist/lib/http/IWebSocketShim.js.map +1 -0
  17. package/dist/lib/http/MiddlewareChain.js +129 -0
  18. package/dist/lib/http/MiddlewareChain.js.map +1 -0
  19. package/dist/lib/http/RuntimeDetect.js +8 -0
  20. package/dist/lib/http/RuntimeDetect.js.map +1 -0
  21. package/dist/lib/http/bun/BunAdapters.js +270 -0
  22. package/dist/lib/http/bun/BunAdapters.js.map +1 -0
  23. package/dist/lib/http/bun/BunRouter.js +377 -0
  24. package/dist/lib/http/bun/BunRouter.js.map +1 -0
  25. package/dist/lib/http/bun/BunWebSocket.js +48 -0
  26. package/dist/lib/http/bun/BunWebSocket.js.map +1 -0
  27. package/dist/lib/http/index.js +13 -3
  28. package/dist/lib/http/index.js.map +1 -1
  29. package/dist/lib/http/{Adapters.js → uWS/Adapters.js} +65 -27
  30. package/dist/lib/http/uWS/Adapters.js.map +1 -0
  31. package/dist/lib/http/{Router.js → uWS/Router.js} +24 -133
  32. package/dist/lib/http/uWS/Router.js.map +1 -0
  33. package/dist/lib/http/uWS/WebSocket.js.map +1 -0
  34. package/dist/lib/models/ModelUtils.js +104 -9
  35. package/dist/lib/models/ModelUtils.js.map +1 -1
  36. package/dist/lib/models/RepoUtils.js +89 -6
  37. package/dist/lib/models/RepoUtils.js.map +1 -1
  38. package/dist/lib/routes/BaseAdminRoute.js +7 -5
  39. package/dist/lib/routes/BaseAdminRoute.js.map +1 -1
  40. package/dist/lib/routes/BaseMetricsRoute.js.map +1 -1
  41. package/dist/lib/routes/BasePushRoute.js +32 -5
  42. package/dist/lib/routes/BasePushRoute.js.map +1 -1
  43. package/dist/lib/routes/CRUDRoute.js.map +1 -1
  44. package/dist/lib/routes/ModelRoute.js.map +1 -1
  45. package/dist/lib/routes/RouteUtils.js +6 -2
  46. package/dist/lib/routes/RouteUtils.js.map +1 -1
  47. package/dist/lib/security/ACLUtils.js +10 -5
  48. package/dist/lib/security/ACLUtils.js.map +1 -1
  49. package/dist/lib/security/AccessControlListMongo.js +29 -29
  50. package/dist/lib/security/AccessControlListSQL.js +29 -29
  51. package/dist/lib/security/BaseACLRoute.js.map +1 -1
  52. package/dist/lib/test/requestws.js +28 -3
  53. package/dist/lib/test/requestws.js.map +1 -1
  54. package/dist/types/ApiErrors.d.ts +2 -0
  55. package/dist/types/OpenApiSpec.d.ts +1 -1
  56. package/dist/types/Server.d.ts +4 -4
  57. package/dist/types/auth/AuthMiddleware.d.ts +2 -2
  58. package/dist/types/auth/AuthStrategy.d.ts +2 -2
  59. package/dist/types/auth/BasicStrategy.d.ts +3 -3
  60. package/dist/types/auth/JWTStrategy.d.ts +3 -2
  61. package/dist/types/decorators/ModelDecorators.d.ts +8 -1
  62. package/dist/types/decorators/RouteDecorators.d.ts +1 -1
  63. package/dist/types/http/IWebSocketShim.d.ts +11 -0
  64. package/dist/types/http/MiddlewareChain.d.ts +40 -0
  65. package/dist/types/http/RuntimeDetect.d.ts +2 -0
  66. package/dist/types/http/bun/BunAdapters.d.ts +128 -0
  67. package/dist/types/http/bun/BunRouter.d.ts +79 -0
  68. package/dist/types/http/bun/BunWebSocket.d.ts +35 -0
  69. package/dist/types/http/index.d.ts +12 -6
  70. package/dist/types/http/types.d.ts +21 -0
  71. package/dist/types/http/{Adapters.d.ts → uWS/Adapters.d.ts} +24 -2
  72. package/dist/types/http/{Router.d.ts → uWS/Router.d.ts} +8 -32
  73. package/dist/types/http/{WebSocket.d.ts → uWS/WebSocket.d.ts} +6 -5
  74. package/dist/types/models/ModelUtils.d.ts +30 -0
  75. package/dist/types/models/RepoUtils.d.ts +2 -2
  76. package/dist/types/routes/BaseAdminRoute.d.ts +3 -3
  77. package/dist/types/routes/BaseMetricsRoute.d.ts +1 -1
  78. package/dist/types/routes/BasePushRoute.d.ts +4 -0
  79. package/dist/types/routes/BaseStaticRoute.d.ts +1 -1
  80. package/dist/types/routes/CRUDRoute.d.ts +2 -2
  81. package/dist/types/routes/ModelRoute.d.ts +2 -2
  82. package/dist/types/security/ACLUtils.d.ts +6 -3
  83. package/dist/types/security/AccessControlListMongo.d.ts +1 -1
  84. package/dist/types/security/AccessControlListSQL.d.ts +1 -1
  85. package/dist/types/security/BaseACLRoute.d.ts +3 -3
  86. package/package.json +138 -132
  87. package/dist/lib/http/Adapters.js.map +0 -1
  88. package/dist/lib/http/Router.js.map +0 -1
  89. package/dist/lib/http/WebSocket.js.map +0 -1
  90. /package/dist/lib/http/{WebSocket.js → uWS/WebSocket.js} +0 -0
@@ -2,106 +2,12 @@
2
2
  // Copyright (C) 2020-2026 Jean-Philippe Steinmetz. All rights reserved.
3
3
  ///////////////////////////////////////////////////////////////////////////////
4
4
  import uWS from "uWebSockets.js";
5
- import { UWSRequest, UWSResponse, readBody } from "./Adapters.js";
5
+ import { DEFAULT_MAX_BODY_SIZE, UWSRequest, UWSResponse, readBody } from "./Adapters.js";
6
6
  import { UWSWebSocketShim } from "./WebSocket.js";
7
+ import { extractParamNames, makeWsStubResponse, runChain } from "../MiddlewareChain.js";
7
8
  import { ApiError } from "@rapidrest/core";
8
- import { ApiErrorMessages, ApiErrors } from "../ApiErrors.js";
9
- /**
10
- * Runs an ordered array of middleware handlers sequentially, Express-style.
11
- * Supports both 3-param `(req, res, next)` handlers and 4-param `(err, req, res, next)`
12
- * error handlers. On error, execution skips to the next error handler.
13
- *
14
- * Each handler is awaited via a Promise that resolves when next() is called, not when
15
- * the handler's return value resolves. This correctly handles: (1) sync handlers that
16
- * call next() synchronously, (2) async handlers that return next() or await before
17
- * calling it, and (3) sync handlers that schedule next() via callbacks such as
18
- * setTimeout or socket.once. The chain terminates early when a handler ends the
19
- * response without calling next().
20
- */
21
- export async function runChain(handlers, req, res) {
22
- let currentError = undefined;
23
- for (let i = 0; i < handlers.length; i++) {
24
- const handler = handlers[i];
25
- const isErrorHandler = handler.length === 4;
26
- if (currentError && !isErrorHandler)
27
- continue;
28
- if (!currentError && isErrorHandler)
29
- continue;
30
- const outcome = await new Promise((resolve) => {
31
- let settled = false;
32
- const next = (err) => {
33
- if (!settled) {
34
- settled = true;
35
- resolve({ called: true, err });
36
- }
37
- };
38
- try {
39
- const handlerResult = isErrorHandler
40
- ? handler(currentError, req, res, next)
41
- : handler(req, res, next);
42
- if (handlerResult instanceof Promise) {
43
- // Async handler: wait for the Promise, but next() may have already been
44
- // called (or may be called later inside the Promise chain).
45
- handlerResult
46
- .then(() => {
47
- if (!settled) {
48
- settled = true;
49
- resolve({ called: false });
50
- }
51
- })
52
- .catch((err) => {
53
- if (!settled) {
54
- settled = true;
55
- resolve({ called: true, err });
56
- }
57
- });
58
- }
59
- else {
60
- // Sync handler returned. Three sub-cases:
61
- // a. next() was already called synchronously → already settled.
62
- // b. Response was sent without next() → stop chain.
63
- // c. Handler will call next() from an async callback (e.g. setTimeout)
64
- // → leave the Promise pending; it resolves when next() fires.
65
- if (!settled && res.writableEnded) {
66
- settled = true;
67
- resolve({ called: false });
68
- }
69
- // else: wait for next() to be called asynchronously
70
- }
71
- }
72
- catch (err) {
73
- if (!settled) {
74
- settled = true;
75
- resolve({ called: true, err });
76
- }
77
- }
78
- });
79
- if (!outcome.called)
80
- break; // handler terminated chain (sent response)
81
- if (outcome.err !== undefined) {
82
- currentError = outcome.err;
83
- }
84
- else if (isErrorHandler) {
85
- currentError = undefined; // error was handled
86
- }
87
- }
88
- // End of chain with unhandled error
89
- if (currentError && !res.writableEnded) {
90
- res.status(500).json({
91
- message: currentError?.message || "Internal Server Error",
92
- status: 500,
93
- });
94
- }
95
- }
96
- /** Parses `:param` names out of a uWS route pattern (e.g. `/users/:uid/:version` → `["uid","version"]`). */
97
- function extractParamNames(routePath) {
98
- const names = [];
99
- for (const segment of routePath.split("/")) {
100
- if (segment.startsWith(":"))
101
- names.push(segment.slice(1));
102
- }
103
- return names;
104
- }
9
+ import { ApiErrorMessages, ApiErrors } from "../../ApiErrors.js";
10
+ export { runChain, extractParamNames } from "../MiddlewareChain.js";
105
11
  /**
106
12
  * Wraps a uWS route handler to convert uWS request/response objects into `HttpRequest`/`HttpResponse`
107
13
  * adapters, reads the body, and runs the full middleware chain (pre-route global + route-specific + post-route global).
@@ -110,7 +16,7 @@ function extractParamNames(routePath) {
110
16
  * At invocation time we split `globalMiddleware` at that index so that error handlers and metrics registered
111
17
  * AFTER the routes are placed after the route handlers in the chain (matching Express middleware ordering).
112
18
  */
113
- function makeUWSHandler(globalMiddleware, routeHandlers, preLength, paramNames, isHead = false) {
19
+ function makeUWSHandler(globalMiddleware, routeHandlers, preLength, paramNames, isHead = false, maxBodySize = DEFAULT_MAX_BODY_SIZE) {
114
20
  // Built lazily on the first request and reused thereafter. Safe because all use() calls
115
21
  // complete before listen() is invoked, and requests only arrive after listen().
116
22
  let allHandlers = null;
@@ -125,13 +31,19 @@ function makeUWSHandler(globalMiddleware, routeHandlers, preLength, paramNames,
125
31
  for (let i = 0; i < paramNames.length; i++) {
126
32
  req.params[paramNames[i]] = uwsReq.getParameter(i) || "";
127
33
  }
128
- // Body must be read before any middleware runs
34
+ // Body must be read before any middleware runs. If it exceeds maxBodySize, readBody() has
35
+ // already written a 413 response and ended the connection — stop here without running any
36
+ // middleware/route logic against a truncated/oversized body.
37
+ let bodyOk = true;
129
38
  try {
130
- await readBody(uwsRes, req);
39
+ bodyOk = await readBody(uwsRes, req, maxBodySize);
131
40
  }
132
41
  catch {
133
42
  // Non-fatal: body may not exist for GET/HEAD/OPTIONS
134
43
  }
44
+ if (!bodyOk) {
45
+ return;
46
+ }
135
47
  // Build the combined handler chain once; reuse on every subsequent request.
136
48
  if (allHandlers === null) {
137
49
  allHandlers = [
@@ -159,7 +71,7 @@ function makeUWSHandler(globalMiddleware, routeHandlers, preLength, paramNames,
159
71
  * - `listen(host, port)` / `close()` — server lifecycle
160
72
  */
161
73
  export class HttpRouter {
162
- constructor(uwsApp) {
74
+ constructor(uwsApp, maxBodySize = DEFAULT_MAX_BODY_SIZE) {
163
75
  this.globalMiddleware = [];
164
76
  this.listenSocket = null;
165
77
  /**
@@ -176,6 +88,7 @@ export class HttpRouter {
176
88
  */
177
89
  this.rootWildcardVerbs = new Set();
178
90
  this.uwsApp = uwsApp;
91
+ this.maxBodySize = maxBodySize;
179
92
  }
180
93
  /** Returns `true` if the server is currently listening. */
181
94
  get isListening() {
@@ -204,35 +117,35 @@ export class HttpRouter {
204
117
  const pre = this.capturePreRouteCount();
205
118
  if (routePath === "/*")
206
119
  this.rootWildcardVerbs.add("get");
207
- this.uwsApp.get(routePath, makeUWSHandler(this.globalMiddleware, handlers, pre, extractParamNames(routePath)));
120
+ this.uwsApp.get(routePath, makeUWSHandler(this.globalMiddleware, handlers, pre, extractParamNames(routePath), false, this.maxBodySize));
208
121
  return this;
209
122
  }
210
123
  post(routePath, ...handlers) {
211
124
  const pre = this.capturePreRouteCount();
212
125
  if (routePath === "/*")
213
126
  this.rootWildcardVerbs.add("post");
214
- this.uwsApp.post(routePath, makeUWSHandler(this.globalMiddleware, handlers, pre, extractParamNames(routePath)));
127
+ this.uwsApp.post(routePath, makeUWSHandler(this.globalMiddleware, handlers, pre, extractParamNames(routePath), false, this.maxBodySize));
215
128
  return this;
216
129
  }
217
130
  put(routePath, ...handlers) {
218
131
  const pre = this.capturePreRouteCount();
219
132
  if (routePath === "/*")
220
133
  this.rootWildcardVerbs.add("put");
221
- this.uwsApp.put(routePath, makeUWSHandler(this.globalMiddleware, handlers, pre, extractParamNames(routePath)));
134
+ this.uwsApp.put(routePath, makeUWSHandler(this.globalMiddleware, handlers, pre, extractParamNames(routePath), false, this.maxBodySize));
222
135
  return this;
223
136
  }
224
137
  delete(routePath, ...handlers) {
225
138
  const pre = this.capturePreRouteCount();
226
139
  if (routePath === "/*")
227
140
  this.rootWildcardVerbs.add("delete");
228
- this.uwsApp.del(routePath, makeUWSHandler(this.globalMiddleware, handlers, pre, extractParamNames(routePath)));
141
+ this.uwsApp.del(routePath, makeUWSHandler(this.globalMiddleware, handlers, pre, extractParamNames(routePath), false, this.maxBodySize));
229
142
  return this;
230
143
  }
231
144
  patch(routePath, ...handlers) {
232
145
  const pre = this.capturePreRouteCount();
233
146
  if (routePath === "/*")
234
147
  this.rootWildcardVerbs.add("patch");
235
- this.uwsApp.patch(routePath, makeUWSHandler(this.globalMiddleware, handlers, pre, extractParamNames(routePath)));
148
+ this.uwsApp.patch(routePath, makeUWSHandler(this.globalMiddleware, handlers, pre, extractParamNames(routePath), false, this.maxBodySize));
236
149
  return this;
237
150
  }
238
151
  head(routePath, ...handlers) {
@@ -240,12 +153,12 @@ export class HttpRouter {
240
153
  if (routePath === "/*")
241
154
  this.rootWildcardVerbs.add("head");
242
155
  // uWS explicitly-registered HEAD routes do send body bytes — suppress them via isHead flag
243
- this.uwsApp.head(routePath, makeUWSHandler(this.globalMiddleware, handlers, pre, extractParamNames(routePath), true));
156
+ this.uwsApp.head(routePath, makeUWSHandler(this.globalMiddleware, handlers, pre, extractParamNames(routePath), true, this.maxBodySize));
244
157
  return this;
245
158
  }
246
159
  options(routePath, ...handlers) {
247
160
  const pre = this.capturePreRouteCount();
248
- this.uwsApp.options(routePath, makeUWSHandler(this.globalMiddleware, handlers, pre, extractParamNames(routePath)));
161
+ this.uwsApp.options(routePath, makeUWSHandler(this.globalMiddleware, handlers, pre, extractParamNames(routePath), false, this.maxBodySize));
249
162
  return this;
250
163
  }
251
164
  /**
@@ -301,29 +214,7 @@ export class HttpRouter {
301
214
  req.websocket = shim;
302
215
  req.wsHandled = false;
303
216
  // Create a stub response (WebSocket responses don't use HTTP res)
304
- const stubRes = {
305
- statusCode: 101,
306
- headersSent: true,
307
- writableEnded: false,
308
- status() {
309
- return this;
310
- },
311
- setHeader() {
312
- return this;
313
- },
314
- getHeader() {
315
- return undefined;
316
- },
317
- json() {
318
- return;
319
- },
320
- send() {
321
- return;
322
- },
323
- end() {
324
- this.writableEnded = true;
325
- },
326
- };
217
+ const stubRes = makeWsStubResponse();
327
218
  await runChain(handlers, req, stubRes);
328
219
  // If no handler marked wsHandled, close the connection.
329
220
  // Guard against the client disconnecting while runChain was awaiting
@@ -367,7 +258,7 @@ export class HttpRouter {
367
258
  // This must happen before the uWS listen call so it is ready when the first request arrives.
368
259
  // preLength=0 places all globalMiddleware as "post-route" so they all execute sequentially;
369
260
  // the CORS middleware terminates the chain early for OPTIONS (sends 204 without calling next).
370
- this.uwsApp.options("/*", makeUWSHandler(this.globalMiddleware, [], 0, []));
261
+ this.uwsApp.options("/*", makeUWSHandler(this.globalMiddleware, [], 0, [], false, this.maxBodySize));
371
262
  // Register a JSON 404 fallback for any request that doesn't match a registered route, so
372
263
  // clients get the framework's normal ApiError response shape instead of uWS's built-in HTML
373
264
  // "File Not Found" page. Routed through `next()` so it flows through the same error-handling
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Router.js","sourceRoot":"","sources":["../../../../src/http/uWS/Router.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WebSocket.js","sourceRoot":"","sources":["../../../../src/http/uWS/WebSocket.ts"],"names":[],"mappings":"AAAA,+EAA+E;AAC/E,wEAAwE;AACxE,+EAA+E;AAC/E,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AACtC,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAwBhC;;;;;;;;;;;GAWG;AACH,MAAM,OAAO,gBAAiB,SAAQ,YAAY;IAI9C,YAAY,EAAkB;QAC1B,KAAK,EAAE,CAAC;QAHL,eAAU,GAAW,CAAC,CAAC,CAAC,OAAO;QAIlC,IAAI,CAAC,GAAG,GAAG,EAAE,CAAC;IAClB,CAAC;IAED;;;;OAIG;IACI,IAAI,CAAC,IAAS,EAAE,EAA0B;QAC7C,IAAI,CAAC;YACD,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CACpB,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EACnD,OAAO,IAAI,KAAK,QAAQ,CAC3B,CAAC;YACF,IAAI,EAAE;gBAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC,CAAC;QAC5E,CAAC;QAAC,OAAO,GAAQ,EAAE,CAAC;YAChB,IAAI,EAAE;gBAAE,EAAE,CAAC,GAAG,CAAC,CAAC;QACpB,CAAC;IACL,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,IAAa,EAAE,MAAe;QACvC,IAAI,CAAC;YACD,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QAC/B,CAAC;QAAC,MAAM,CAAC;YACL,+BAA+B;QACnC,CAAC;IACL,CAAC;CACJ;AAED;;;;;;GAMG;AACH,MAAM,UAAU,qBAAqB,CAAC,IAAsB;IACxD,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC;QACtB,IAAI,KAAK,OAAO,CAAC,CAAC;QAClB,KAAK,CAAC,KAAK,EAAE,SAAS,EAAE,QAAQ;YAC5B,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;QAC7C,CAAC;QACD,KAAK,CAAC,QAAQ;YACV,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YACjB,QAAQ,EAAE,CAAC;QACf,CAAC;KACJ,CAAC,CAAC;IAEH,IAAI,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,IAAS,EAAE,EAAE;QAC7B,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACtB,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE;QAClB,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAClB,MAAM,CAAC,OAAO,EAAE,CAAC;IACrB,CAAC,CAAC,CAAC;IAEH,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE;QACpB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACrB,CAAC,CAAC,CAAC;IAEH,OAAO,MAAM,CAAC;AAClB,CAAC"}
@@ -65,6 +65,34 @@ export class ModelUtils {
65
65
  ModelUtils.idPropertyCache.set(modelClass, results);
66
66
  return results;
67
67
  }
68
+ /**
69
+ * Retrieves a list of all of the specified class's properties that have the @ReadOnly decorator applied.
70
+ *
71
+ * @param modelClass The class definition to search for read-only properties from.
72
+ * @returns The list of all property names that have the @ReadOnly decorator applied.
73
+ */
74
+ static getReadOnlyPropertyNames(modelClass) {
75
+ const results = [];
76
+ if (ModelUtils.readOnlyPropertyCache.has(modelClass)) {
77
+ return ModelUtils.readOnlyPropertyCache.get(modelClass);
78
+ }
79
+ // The props don't show up correctly on the class def. So instantiate a dummy object that we can read the props
80
+ // from and look for read-only fields.
81
+ let proto = Object.getPrototypeOf(new modelClass());
82
+ while (proto) {
83
+ const props = Object.getOwnPropertyNames(proto);
84
+ for (const prop of props) {
85
+ const isReadOnly = Reflect.getMetadata("rrst:readOnly", proto, prop);
86
+ if (isReadOnly) {
87
+ results.push(prop);
88
+ }
89
+ }
90
+ proto = Object.getPrototypeOf(proto);
91
+ }
92
+ // Cache the results so we're not always having to walk the class structure
93
+ ModelUtils.readOnlyPropertyCache.set(modelClass, results);
94
+ return results;
95
+ }
68
96
  /**
69
97
  * Builds a query object for use with `find` functions of the given repository for retrieving objects matching the
70
98
  * specified unique identifier.
@@ -228,6 +256,45 @@ export class ModelUtils {
228
256
  return param;
229
257
  }
230
258
  }
259
+ /**
260
+ * Recursively verifies that no key in the given value (at any depth, including keys of objects nested inside
261
+ * arrays) is a MongoDB operator (starts with `$`) or uses dot-notation field addressing (contains `.`). Client
262
+ * input is only ever meant to supply plain field values/comparison operands — never raw Mongo query operators —
263
+ * so any such key indicates an attempt to inject arbitrary query behavior (e.g. `$where`, `$expr`, or reaching
264
+ * into a field the API doesn't expose via dot-notation).
265
+ *
266
+ * @param value The value to check, typically a parsed query parameter.
267
+ * @throws {ApiError} If an operator-like or dotted key is found anywhere in `value`.
268
+ */
269
+ static assertNoOperatorInjection(value) {
270
+ if (Array.isArray(value)) {
271
+ for (const item of value) {
272
+ ModelUtils.assertNoOperatorInjection(item);
273
+ }
274
+ }
275
+ else if (value && typeof value === "object") {
276
+ for (const key of Object.keys(value)) {
277
+ if (key.startsWith("$") || key.includes(".")) {
278
+ throw new ApiError(ApiErrors.INVALID_REQUEST, 400, ApiErrorMessages.INVALID_REQUEST);
279
+ }
280
+ ModelUtils.assertNoOperatorInjection(value[key]);
281
+ }
282
+ }
283
+ }
284
+ /**
285
+ * Best-effort check for regex patterns vulnerable to catastrophic backtracking (ReDoS). Rejects patterns that
286
+ * are unreasonably long, or that contain a quantified group whose contents are themselves quantified (e.g.
287
+ * `(a+)+`, `(a*)*`) — the classic shape that causes exponential backtracking in JS's regex engine. This is not
288
+ * an exhaustive defense; it catches the common cases a client would realistically send.
289
+ *
290
+ * @param pattern The user-supplied `like()` pattern.
291
+ */
292
+ static isUnsafeRegexPattern(pattern) {
293
+ if (pattern.length > ModelUtils.MAX_LIKE_PATTERN_LENGTH) {
294
+ return true;
295
+ }
296
+ return /\([^()]*[+*]\)[+*{]/.test(pattern);
297
+ }
231
298
  /**
232
299
  * Given a string containing a parameter value and/or a comparison operation return a MongoDB compatible find value.
233
300
  * e.g.
@@ -256,6 +323,11 @@ export class ModelUtils {
256
323
  value = matches[2];
257
324
  }
258
325
  }
326
+ // `value` is the client-supplied comparison operand — reject any Mongo operator/dotted key hidden
327
+ // inside it, regardless of which (trusted, framework-constructed) operator wrapper it ends up
328
+ // under below. Must run *after* the parse fallback above, not inside its try/catch, so a
329
+ // rejection here isn't silently swallowed as a "not valid JSON" case.
330
+ ModelUtils.assertNoOperatorInjection(value);
259
331
  switch (opName) {
260
332
  case "eq":
261
333
  return value;
@@ -271,8 +343,13 @@ export class ModelUtils {
271
343
  const args = value.split(",");
272
344
  return { $nin: args };
273
345
  }
274
- case "like":
275
- return { $regex: value, $options: "i" };
346
+ case "like": {
347
+ const pattern = String(value);
348
+ if (ModelUtils.isUnsafeRegexPattern(pattern)) {
349
+ throw new ApiError(ApiErrors.INVALID_REQUEST, 400, ApiErrorMessages.INVALID_REQUEST);
350
+ }
351
+ return { $regex: pattern, $options: "i" };
352
+ }
276
353
  case "lt":
277
354
  return { $lt: value };
278
355
  case "lte":
@@ -290,28 +367,36 @@ export class ModelUtils {
290
367
  });
291
368
  throw new ApiError(ApiErrors.SEARCH_INVALID_RANGE, 400, msg);
292
369
  }
370
+ // Attempt to parse the range values to native types, falling back to the raw strings
371
+ let gte = args[0];
372
+ let lte = args[1];
293
373
  try {
294
- // Attempt to parse the range values to native types
295
- return { $gte: JSON.parse(args[0]), $lte: JSON.parse(args[1]) };
374
+ gte = JSON.parse(args[0]);
375
+ lte = JSON.parse(args[1]);
296
376
  }
297
377
  catch (err) {
298
- return { $gte: args[0], $lte: args[1] };
378
+ // Not valid JSON — fall back to the raw strings assigned above.
299
379
  }
380
+ ModelUtils.assertNoOperatorInjection(gte);
381
+ ModelUtils.assertNoOperatorInjection(lte);
382
+ return { $gte: gte, $lte: lte };
300
383
  }
301
384
  default:
302
385
  return value;
303
386
  }
304
387
  }
305
388
  else {
389
+ // Attempt to parse the value to a native type, falling back to a date/string if it's not valid JSON
390
+ let parsed;
306
391
  try {
307
- // Attempt to parse the value to a native type
308
- return JSON.parse(param);
392
+ parsed = JSON.parse(param);
309
393
  }
310
394
  catch (err) {
311
- // If an error occurred it's because the value is a string or date, not another type.
312
395
  const date = new Date(param);
313
396
  return !isNaN(date.valueOf()) ? date : param;
314
397
  }
398
+ ModelUtils.assertNoOperatorInjection(parsed);
399
+ return parsed;
315
400
  }
316
401
  }
317
402
  else {
@@ -564,6 +649,12 @@ export class ModelUtils {
564
649
  }
565
650
  continue;
566
651
  }
652
+ // Reject any other Mongo operator key or dot-notation field path outright — client input may only
653
+ // supply plain field names, never raw query operators (`$or` is the one deliberate exception, handled
654
+ // just below; its sub-queries are validated recursively when they're built).
655
+ if (key !== "$or" && (key.startsWith("$") || key.includes("."))) {
656
+ throw new ApiError(ApiErrors.INVALID_REQUEST, 400, ApiErrorMessages.INVALID_REQUEST);
657
+ }
567
658
  if (key === "$or") {
568
659
  // Array of OR queries
569
660
  let orResults = [];
@@ -578,7 +669,8 @@ export class ModelUtils {
578
669
  continue;
579
670
  }
580
671
  if (Array.isArray(queryParams[key])) {
581
- // Add each value in the array to each corresponding query
672
+ // Add each value in the array to each corresponding query. Injection safety is already enforced
673
+ // inside getQueryParamValueMongo() itself, at the point the client-supplied value is parsed.
582
674
  const conditions = [];
583
675
  for (let i = 0; i < queryParams[key].length; i++) {
584
676
  const value = ModelUtils.getQueryParamValueMongo(queryParams[key][i]);
@@ -649,4 +741,7 @@ export class ModelUtils {
649
741
  }
650
742
  }
651
743
  ModelUtils.idPropertyCache = new Map();
744
+ ModelUtils.readOnlyPropertyCache = new Map();
745
+ /** Maximum accepted length of a client-supplied `like()` search pattern. */
746
+ ModelUtils.MAX_LIKE_PATTERN_LENGTH = 100;
652
747
  //# sourceMappingURL=ModelUtils.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ModelUtils.js","sourceRoot":"","sources":["../../../src/models/ModelUtils.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AACjE,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC7E,OAAO,kBAAkB,CAAC;AAC1B,OAAU,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACvC,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AACnE,OAAO,EAAE,gBAAgB,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAE9D,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC;AACxB,MAAM,uBAAuB,GAAW,IAAI,MAAM,CAAC,uBAAuB,EAAE,GAAG,CAAC,CAAC;AACjF,MAAM,2BAA2B,GAAW,IAAI,MAAM,CAAC,6BAA6B,EAAE,GAAG,CAAC,CAAC;AAC3F,MAAM,kBAAkB,GAAW,IAAI,MAAM,CAAC,qBAAqB,EAAE,GAAG,CAAC,CAAC;AAC1E,MAAM,uBAAuB,GAAW,IAAI,MAAM,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC;AAEpE,8FAA8F;AAC9F,2FAA2F;AAC3F,wBAAwB;AACvB,MAAM,CAAC,SAAiB,CAAC,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC;AAE7D;;;;GAIG;AACH,MAAM,OAAO,UAAU;IAKnB;;;;;OAKG;IACI,MAAM,CAAC,UAAU,CAAC,MAAW;QAChC,UAAU,CAAC,OAAO,GAAG,MAAM,CAAC;IAChC,CAAC;IAED;;OAEG;IACI,MAAM,KAAK,GAAG;QACjB,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;YACtB,MAAM,IAAI,KAAK,CACX,mHAAmH,CACtH,CAAC;QACN,CAAC;QACD,OAAO,UAAU,CAAC,OAAO,CAAC;IAC9B,CAAC;IAED;;;;;OAKG;IACI,MAAM,CAAC,kBAAkB,CAAC,UAAe;QAC5C,MAAM,OAAO,GAAa,EAAE,CAAC;QAE7B,IAAI,UAAU,CAAC,eAAe,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC;YAC7C,OAAO,UAAU,CAAC,eAAe,CAAC,GAAG,CAAC,UAAU,CAAa,CAAC;QAClE,CAAC;QAED,+GAA+G;QAC/G,iCAAiC;QACjC,IAAI,KAAK,GAAQ,MAAM,CAAC,cAAc,CAAC,IAAI,UAAU,EAAE,CAAC,CAAC;QACzD,OAAO,KAAK,EAAE,CAAC;YACX,MAAM,KAAK,GAAa,MAAM,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC;YAC1D,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;gBACvB,MAAM,YAAY,GAAY,OAAO,CAAC,WAAW,CAAC,mBAAmB,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;gBACpF,IAAI,YAAY,EAAE,CAAC;oBACf,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACvB,CAAC;YACL,CAAC;YAED,KAAK,GAAG,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;QACzC,CAAC;QAED,2EAA2E;QAC3E,UAAU,CAAC,eAAe,CAAC,GAAG,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;QAEpD,OAAO,OAAO,CAAC;IACnB,CAAC;IAED;;;;;;;;;OASG;IACI,MAAM,CAAC,kBAAkB,CAC5B,IAAoD,EACpD,UAAe,EACf,EAAe,EACf,OAAgB;QAEhB,IAAI,IAAI,YAAY,eAAe,EAAE,CAAC;YAClC,OAAO,UAAU,CAAC,uBAAuB,CAAC,UAAU,EAAE,EAAE,EAAE,OAAO,CAAC,CAAC;QACvE,CAAC;aAAM,CAAC;YACJ,OAAO,UAAU,CAAC,qBAAqB,CAAC,UAAU,EAAE,EAAE,EAAE,OAAO,CAAC,CAAC;QACrE,CAAC;IACL,CAAC;IAED;;;;;;;;OAQG;IACI,MAAM,CAAC,qBAAqB,CAAC,UAAe,EAAE,EAAe,EAAE,OAAgB;QAClF,MAAM,KAAK,GAAa,UAAU,CAAC,kBAAkB,CAAC,UAAU,CAAC,CAAC;QAElE,6FAA6F;QAC7F,8DAA8D;QAC9D,MAAM,KAAK,GAAQ,EAAE,CAAC;QACtB,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACvB,MAAM,CAAC,GAAQ,EAAE,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;YAC1E,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;gBACxB,CAAC,CAAC,OAAO,GAAG,OAAO,CAAC;YACxB,CAAC;YACD,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,OAAO,EAAE,KAAK,EAAE,CAAC;IACrB,CAAC;IAED;;;;;;;;OAQG;IACI,MAAM,CAAC,uBAAuB,CAAC,UAAe,EAAE,EAAe,EAAE,OAAgB;QACpF,MAAM,KAAK,GAAa,UAAU,CAAC,kBAAkB,CAAC,UAAU,CAAC,CAAC;QAElE,sGAAsG;QACtG,sGAAsG;QACtG,wGAAwG;QACxG,WAAW;QACX,sEAAsE;QACtE,2BAA2B;QAC3B,4CAA4C;QAC5C,2CAA2C;QAC3C,iGAAiG;QACjG,YAAY;QACZ,QAAQ;QACR,uCAAuC;QACvC,mFAAmF;QACnF,IAAI;QAEJ,sGAAsG;QACtG,MAAM,KAAK,GAAU,EAAE,CAAC;QACxB,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACvB,MAAM,CAAC,GAAQ,EAAE,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;YAChE,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;gBACxB,CAAC,CAAC,OAAO,GAAG,OAAO,CAAC;YACxB,CAAC;YACD,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC;IAC1B,CAAC;IAED;;;;;;;OAOG;IACK,MAAM,CAAC,kBAAkB,CAAC,KAAU;QACxC,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC5B,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,eAAe,EAAE,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,eAAe,EAAE,GAAG,EAAE,OAAO,EAAE,GAC1F,UAAU,CAAC,GAAG,CAAC;YACnB,uGAAuG;YACvG,kBAAkB;YAClB,4DAA4D;YAC5D,MAAM,OAAO,GAA4B,KAAK,CAAC,KAAK,CAAC,uBAAuB,CAAC,CAAC;YAC9E,IAAI,OAAO,EAAE,CAAC;gBACV,MAAM,MAAM,GAAW,OAAO,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;gBAChD,IAAI,KAAK,GAAQ,OAAO,CAAC,CAAC,CAAC,CAAC;gBAC5B,IAAI,CAAC;oBACD,8CAA8C;oBAC9C,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;gBACnC,CAAC;gBAAC,OAAO,GAAG,EAAE,CAAC;oBACX,qFAAqF;oBACrF,KAAK,GAAG,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;oBAC7B,IAAI,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC;wBACf,KAAK,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;oBACvB,CAAC;gBACL,CAAC;gBAED,QAAQ,MAAM,EAAE,CAAC;oBACb,KAAK,IAAI;wBACL,OAAO,KAAK,CAAC,KAAK,CAAC,CAAC;oBACxB,KAAK,IAAI;wBACL,OAAO,QAAQ,CAAC,KAAK,CAAC,CAAC;oBAC3B,KAAK,KAAK;wBACN,OAAO,eAAe,CAAC,KAAK,CAAC,CAAC;oBAClC,KAAK,IAAI,CAAC,CAAC,CAAC;wBACR,MAAM,IAAI,GAAa,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;wBACxC,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC;oBACpB,CAAC;oBACD,KAAK,MAAM;wBACP,OAAO,KAAK,CAAC,KAAK,CAAC,CAAC;oBACxB,KAAK,IAAI;wBACL,OAAO,QAAQ,CAAC,KAAK,CAAC,CAAC;oBAC3B,KAAK,KAAK;wBACN,OAAO,eAAe,CAAC,KAAK,CAAC,CAAC;oBAClC,KAAK,IAAI,CAAC;oBACV,KAAK,KAAK;wBACN,OAAO,GAAG,CAAC,KAAK,CAAC,CAAC;oBACtB,KAAK,OAAO,CAAC,CAAC,CAAC;wBACX,MAAM,IAAI,GAAa,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;wBACxC,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;4BACpB,MAAM,GAAG,GAAW,WAAW,CAAC,cAAc,CAAC,gBAAgB,CAAC,oBAAoB,EAAE;gCAClF,KAAK;gCACL,MAAM,EAAE,IAAI,CAAC,MAAM;6BACtB,CAAC,CAAC;4BACH,MAAM,IAAI,QAAQ,CAAC,SAAS,CAAC,oBAAoB,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;wBACjE,CAAC;wBACD,IAAI,CAAC;4BACD,oDAAoD;4BACpD,OAAO,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;wBAC7D,CAAC;wBAAC,OAAO,GAAG,EAAE,CAAC;4BACX,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;wBACrC,CAAC;oBACL,CAAC;oBACD;wBACI,OAAO,KAAK,CAAC,KAAK,CAAC,CAAC;gBAC5B,CAAC;YACL,CAAC;iBAAM,CAAC;gBACJ,IAAI,CAAC;oBACD,8CAA8C;oBAC9C,OAAO,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;gBACpC,CAAC;gBAAC,OAAO,GAAG,EAAE,CAAC;oBACX,6EAA6E;oBAC7E,MAAM,IAAI,GAAS,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC;oBACnC,OAAO,KAAK,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;gBACxD,CAAC;YACL,CAAC;QACL,CAAC;aAAM,CAAC;YACJ,OAAO,KAAK,CAAC;QACjB,CAAC;IACL,CAAC;IAED;;;;;;;OAOG;IACK,MAAM,CAAC,uBAAuB,CAAC,KAAU;QAC7C,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC5B,uGAAuG;YACvG,kBAAkB;YAClB,4DAA4D;YAC5D,MAAM,OAAO,GAA4B,KAAK,CAAC,KAAK,CAAC,uBAAuB,CAAC,CAAC;YAC9E,IAAI,OAAO,EAAE,CAAC;gBACV,MAAM,MAAM,GAAW,OAAO,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;gBAChD,IAAI,KAAK,GAAQ,OAAO,CAAC,CAAC,CAAC,CAAC;gBAC5B,IAAI,CAAC;oBACD,8CAA8C;oBAC9C,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;gBACnC,CAAC;gBAAC,OAAO,GAAG,EAAE,CAAC;oBACX,qFAAqF;oBACrF,KAAK,GAAG,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;oBAC7B,IAAI,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC;wBACf,KAAK,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;oBACvB,CAAC;gBACL,CAAC;gBACD,QAAQ,MAAM,EAAE,CAAC;oBACb,KAAK,IAAI;wBACL,OAAO,KAAK,CAAC;oBACjB,KAAK,IAAI;wBACL,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC;oBAC1B,KAAK,KAAK;wBACN,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;oBAC3B,KAAK,IAAI,CAAC,CAAC,CAAC;wBACR,MAAM,IAAI,GAAa,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;wBACxC,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC;oBACzB,CAAC;oBACD,KAAK,KAAK,CAAC,CAAC,CAAC;wBACT,MAAM,IAAI,GAAa,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;wBACxC,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;oBAC1B,CAAC;oBACD,KAAK,MAAM;wBACP,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC;oBAC5C,KAAK,IAAI;wBACL,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC;oBAC1B,KAAK,KAAK;wBACN,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;oBAC3B,KAAK,IAAI;wBACL,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC;oBAC1B,KAAK,KAAK;wBACN,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;oBAC3B,KAAK,OAAO,CAAC,CAAC,CAAC;wBACX,MAAM,IAAI,GAAa,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;wBACxC,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;4BACpB,MAAM,GAAG,GAAW,WAAW,CAAC,cAAc,CAAC,gBAAgB,CAAC,oBAAoB,EAAE;gCAClF,KAAK;gCACL,MAAM,EAAE,IAAI,CAAC,MAAM;6BACtB,CAAC,CAAC;4BACH,MAAM,IAAI,QAAQ,CAAC,SAAS,CAAC,oBAAoB,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;wBACjE,CAAC;wBACD,IAAI,CAAC;4BACD,oDAAoD;4BACpD,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;wBACpE,CAAC;wBAAC,OAAO,GAAG,EAAE,CAAC;4BACX,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;wBAC5C,CAAC;oBACL,CAAC;oBACD;wBACI,OAAO,KAAK,CAAC;gBACrB,CAAC;YACL,CAAC;iBAAM,CAAC;gBACJ,IAAI,CAAC;oBACD,8CAA8C;oBAC9C,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;gBAC7B,CAAC;gBAAC,OAAO,GAAG,EAAE,CAAC;oBACX,qFAAqF;oBACrF,MAAM,IAAI,GAAS,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC;oBACnC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC;gBACjD,CAAC;YACL,CAAC;QACL,CAAC;aAAM,CAAC;YACJ,OAAO,KAAK,CAAC;QACjB,CAAC;IACL,CAAC;IAED;;;;;;;;;;;;;;;;;;;;;;;;;OAyBG;IACI,MAAM,CAAC,gBAAgB,CAC1B,UAAe,EACf,IAAoD,EACpD,MAAY,EACZ,WAAiB,EACjB,aAAsB,KAAK,EAC3B,IAAU;QAEV,6FAA6F;QAC7F,IAAI,IAAI,UAAU,EAAE,YAAY,qBAAqB,EAAE,CAAC;YACpD,WAAW,GAAG;gBACV,GAAG,WAAW;gBACd,OAAO,EAAE,WAAW,IAAI,SAAS,IAAI,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK;aACjF,CAAC;QACN,CAAC;QAED,IAAI,IAAI,YAAY,eAAe,EAAE,CAAC;YAClC,OAAO,UAAU,CAAC,qBAAqB,CAAC,UAAU,EAAE,MAAM,EAAE,WAAW,EAAE,UAAU,EAAE,IAAI,CAAC,CAAC;QAC/F,CAAC;aAAM,CAAC;YACJ,OAAO,UAAU,CAAC,mBAAmB,CAAC,UAAU,EAAE,MAAM,EAAE,WAAW,EAAE,UAAU,EAAE,IAAI,CAAC,CAAC;QAC7F,CAAC;IACL,CAAC;IAED;;;;;;;;;;;;;;;;;;;;;;OAsBG;IACI,MAAM,CAAC,mBAAmB,CAC7B,UAAe,EACf,MAAY,EACZ,WAAiB,EACjB,aAAsB,KAAK,EAC3B,IAAU;QAEV,MAAM,KAAK,GAAQ,EAAE,CAAC;QACtB,KAAK,CAAC,KAAK,GAAG,EAAE,CAAC;QAEjB,yBAAyB;QACzB,KAAK,MAAM,GAAG,IAAI,MAAM,EAAE,CAAC;YACvB,0EAA0E;YAC1E,IAAI,MAAM,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE,CAAC;gBACvB,IAAI,CAAC,IAAI,EAAE,CAAC;oBACR,MAAM,IAAI,QAAQ,CACd,SAAS,CAAC,2BAA2B,EACrC,GAAG,EACH,gBAAgB,CAAC,2BAA2B,CAC/C,CAAC;gBACN,CAAC;gBACD,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC;YAChC,CAAC;iBAAM,CAAC;gBACJ,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;YACnC,CAAC;QACL,CAAC;QAED,uGAAuG;QACvG,4GAA4G;QAC5G,0BAA0B;QAE1B,0EAA0E;QAC1E,IAAI,UAAU,GAAG,CAAC,CAAC;QACnB,KAAK,MAAM,GAAG,IAAI,WAAW,EAAE,CAAC;YAC5B,MAAM,KAAK,GAAsB,WAAW,CAAC,GAAG,CAAC,CAAC;YAClD,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;gBACvB,IAAI,KAAK,CAAC,MAAM,GAAG,UAAU,EAAE,CAAC;oBAC5B,UAAU,GAAG,KAAK,CAAC,MAAM,CAAC;gBAC9B,CAAC;YACL,CAAC;QACL,CAAC;QAED,iEAAiE;QAEjE,0HAA0H;QAC1H,2CAA2C;QAC3C,KAAK,IAAI,GAAG,IAAI,WAAW,EAAE,CAAC;YAC1B,mCAAmC;YACnC,IAAI,GAAG,CAAC,KAAK,CAAC,2BAA2B,CAAC,EAAE,CAAC;gBACzC,SAAS;YACb,CAAC;YAED,gEAAgE;YAChE,IAAI,GAAG,CAAC,KAAK,CAAC,kBAAkB,CAAC,EAAE,CAAC;gBAChC,IAAI,KAAK,GAAQ,WAAW,CAAC,GAAG,CAAC,CAAC;gBAElC,IAAI,GAAG,KAAK,OAAO,EAAE,CAAC;oBAClB,GAAG,GAAG,MAAM,CAAC;oBACb,KAAK,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;gBAC/B,CAAC;qBAAM,IAAI,GAAG,KAAK,MAAM,EAAE,CAAC;oBACxB,KAAK,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;gBAC/B,CAAC;qBAAM,IAAI,GAAG,KAAK,MAAM,EAAE,CAAC;oBACxB,GAAG,GAAG,OAAO,CAAC;oBAEd,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;wBAC5B,IAAI,KAAK,CAAC,KAAK,CAAC,uBAAuB,CAAC,EAAE,CAAC;4BACvC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;wBAC9B,CAAC;6BAAM,CAAC;4BACJ,IAAI,QAAQ,GAAQ,KAAK,CAAC;4BAC1B,QAAQ,GAAG,EAAE,CAAC;4BACd,QAAQ,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC;4BACxB,KAAK,GAAG,QAAQ,CAAC;wBACrB,CAAC;oBACL,CAAC;oBAED,KAAK,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;gBACvB,CAAC;gBAED,SAAS;YACb,CAAC;YAED,IAAI,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;gBAClC,0DAA0D;gBAC1D,IAAI,CAAC,GAAG,CAAC,CAAC;gBACV,KAAK,MAAM,KAAK,IAAI,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC;oBACnC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;wBAClB,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;oBACxB,CAAC;oBAED,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,UAAU,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;oBAE3D,CAAC,EAAE,CAAC;gBACR,CAAC;YACL,CAAC;iBAAM,CAAC;gBACJ,mCAAmC;gBACnC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,EAAE,CAAC,EAAE,EAAE,CAAC;oBAClC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;wBAClB,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;oBACxB,CAAC;oBAED,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,UAAU,CAAC,kBAAkB,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC;gBAC1E,CAAC;YACL,CAAC;QACL,CAAC;QAED,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC3B,OAAO,KAAK,CAAC,KAAK,CAAC;QACvB,CAAC;QAED,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;YACb,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAC5C,CAAC;aAAM,CAAC;YACJ,KAAK,CAAC,IAAI,GAAG,GAAG,CAAC;QACrB,CAAC;QACD,KAAK,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QAEzC,OAAO,KAAK,CAAC;IACjB,CAAC;IAED;;;;;;;;;;;;;;;;;;;;;;;;OAwBG;IACI,MAAM,CAAC,qBAAqB,CAC/B,UAAe,EACf,MAAY,EACZ,WAAiB,EACjB,aAAsB,KAAK,EAC3B,IAAU;QAEV,MAAM,OAAO,GAAU,CAAC,EAAE,CAAC,CAAC;QAC5B,IAAI,IAAI,GAAQ,SAAS,CAAC;QAE1B,yBAAyB;QACzB,KAAK,MAAM,GAAG,IAAI,MAAM,EAAE,CAAC;YACvB,0EAA0E;YAC1E,IAAI,MAAM,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE,CAAC;gBACvB,IAAI,CAAC,IAAI,EAAE,CAAC;oBACR,MAAM,IAAI,QAAQ,CACd,SAAS,CAAC,2BAA2B,EACrC,GAAG,EACH,gBAAgB,CAAC,2BAA2B,CAC/C,CAAC;gBACN,CAAC;gBACD,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC;YAC/B,CAAC;iBAAM,CAAC;gBACJ,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;YAClC,CAAC;QACL,CAAC;QAED,iEAAiE;QAEjE,KAAK,MAAM,GAAG,IAAI,WAAW,EAAE,CAAC;YAC5B,mCAAmC;YACnC,IAAI,GAAG,CAAC,KAAK,CAAC,2BAA2B,CAAC,EAAE,CAAC;gBACzC,SAAS;YACb,CAAC;YAED,gEAAgE;YAChE,IAAI,GAAG,CAAC,KAAK,CAAC,kBAAkB,CAAC,EAAE,CAAC;gBAChC,IAAI,KAAK,GAAQ,WAAW,CAAC,GAAG,CAAC,CAAC;gBAElC,IAAI,GAAG,KAAK,MAAM,EAAE,CAAC;oBACjB,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;wBAC5B,IAAI,KAAK,CAAC,KAAK,CAAC,uBAAuB,CAAC,EAAE,CAAC;4BACvC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;wBAC9B,CAAC;6BAAM,CAAC;4BACJ,IAAI,QAAQ,GAAQ,KAAK,CAAC;4BAC1B,QAAQ,GAAG,EAAE,CAAC;4BACd,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;4BACpB,KAAK,GAAG,QAAQ,CAAC;wBACrB,CAAC;oBACL,CAAC;oBAED,IAAI,YAAY,GAAG;wBACf,GAAG,IAAI;wBACP,GAAG,KAAK;qBACX,CAAC;oBAEF,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC;oBAElB,8HAA8H;oBAC9H,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE;wBACtC,IAAI,KAAK,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC;wBAE9B,IAAI,CAAC,KAAK;4BAAE,OAAO;wBAEnB,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;4BAC5B,IAAI,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;wBACtB,CAAC;6BAAM,IAAI,KAAK,CAAC,WAAW,EAAE,KAAK,KAAK,EAAE,CAAC;4BACvC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;wBAClB,CAAC;6BAAM,IAAI,KAAK,CAAC,WAAW,EAAE,KAAK,MAAM,EAAE,CAAC;4BACxC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;wBACnB,CAAC;oBACL,CAAC,CAAC,CAAC;gBACP,CAAC;gBAED,SAAS;YACb,CAAC;YAED,IAAI,GAAG,KAAK,KAAK,EAAE,CAAC;gBAChB,sBAAsB;gBACtB,IAAI,SAAS,GAAU,EAAE,CAAC;gBAC1B,KAAK,MAAM,KAAK,IAAI,WAAW,CAAC,GAAG,CAAe,EAAE,CAAC;oBACjD,MAAM,gBAAgB,GAAG,IAAI,CAAC,qBAAqB,CAAC,UAAU,EAAE,SAAS,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,CAAC,CAAC;oBACpG,MAAM,mBAAmB,GACrB,KAAK,CAAC,OAAO,CAAC,gBAAgB,CAAC,IAAI,gBAAgB,CAAC,MAAM,GAAG,CAAC;wBAC1D,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;wBAC/B,CAAC,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC;oBACrC,mBAAmB,IAAI,SAAS,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;gBAC/D,CAAC;gBAED,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,SAAS,EAAE,CAAC;gBAEhC,SAAS;YACb,CAAC;YAED,IAAI,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;gBAClC,0DAA0D;gBAC1D,MAAM,UAAU,GAAU,EAAE,CAAC;gBAC7B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;oBAC/C,MAAM,KAAK,GAAQ,UAAU,CAAC,uBAAuB,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;oBAE3E,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;wBACd,OAAO,CAAC,CAAC,CAAC,GAAG;4BACT,GAAG,OAAO,CAAC,CAAC,CAAC;yBAChB,CAAC;oBACN,CAAC;oBAED,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;gBAC5B,CAAC;YACL,CAAC;iBAAM,CAAC;gBACJ,MAAM,KAAK,GAAQ,UAAU,CAAC,uBAAuB,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC;gBACxE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;oBACtC,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;gBAC5B,CAAC;YACL,CAAC;QACL,CAAC;QAED,IAAI,MAAM,GAAU,EAAE,CAAC;QACvB,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACrB,MAAM,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,OAAO,EAAE,EAAE,CAAC,CAAC;QAClF,CAAC;QAED,2EAA2E;QAC3E,8BAA8B;QAC9B,IAAI,UAAU,IAAI,UAAU,CAAC,YAAY,KAAK,SAAS,EAAE,CAAC;YACtD,MAAM,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACxC,MAAM,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC;YACpE,MAAM,CAAC,IAAI,CAAC,EAAE,YAAY,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC;QACvD,CAAC;QAED,4BAA4B;QAC5B,IAAI,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;YACzB,MAAM,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QACjC,CAAC;QAED,oGAAoG;QACpG,4CAA4C;QAC5C,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACpB,OAAO;gBACH,GAAG,MAAM,CAAC,CAAC,CAAC;gBACZ,GAAG,MAAM,CAAC,CAAC,CAAC;aACf,CAAC;QACN,CAAC;QAED,OAAO,MAAM,CAAC;IAClB,CAAC;IAED;;;;;OAKG;IACI,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,GAAW,EAAE,SAA2B,IAAI,GAAG,EAAE;QAC5E,OAAO,MAAM,IAAI,OAAO,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE;YAC/C,IAAI,CAAC;gBACD,MAAM,WAAW,GAAgB,IAAI,WAAW,CAAC,GAAG,CAAC,CAAC;gBACtD,MAAM,WAAW,CAAC,IAAI,EAAE,CAAC;gBAEzB,oFAAoF;gBACpF,WAAW,CAAC,UAAU,EAAE,CAAC,OAAO,CAAC,CAAC,KAAU,EAAE,IAAY,EAAE,EAAE;oBAC1D,MAAM,OAAO,GAAQ,OAAO,CAAC,WAAW,CAAC,gBAAgB,EAAE,KAAK,CAAC,KAAK,SAAS,CAAC;oBAChF,IAAI,OAAO,EAAE,CAAC;wBACV,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;oBAC5B,CAAC;gBACL,CAAC,CAAC,CAAC;gBAEH,OAAO,CAAC,MAAM,CAAC,CAAC;YACpB,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACb,MAAM,CAAC,KAAK,CAAC,CAAC;YAClB,CAAC;QACL,CAAC,CAAC,CAAC;IACP,CAAC;;AAhsBc,0BAAe,GAAuB,IAAI,GAAG,EAAE,CAAC"}
1
+ {"version":3,"file":"ModelUtils.js","sourceRoot":"","sources":["../../../src/models/ModelUtils.ts"],"names":[],"mappings":"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"}