velocious 1.0.468 → 1.0.469

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/README.md CHANGED
@@ -591,16 +591,18 @@ const configuration = new Configuration({
591
591
 
592
592
  This opt-in is ignored in `production`; production frontend-model responses never include internal exception details.
593
593
 
594
- Backends can append client-safe metadata to frontend-model error responses with `configuration.addClientErrorPayloadReporter(...)`. Reporters receive the caught `error`, the current `request`, and a small `context` object, and should only return fields that are safe for clients to see. Frontend-model endpoint failures include `context.frontendModelEndpoint`, `action`, `commandType`, `model`, `requestId`, and `expectedError`. This is useful for attaching an error-reporting URL while keeping the normal production error message generic:
594
+ Backends can append client-safe metadata to frontend-model error responses with `configuration.addClientErrorPayloadReporter(...)`. Reporters receive the caught `error`, the current `request`, a safe `requestDetails` snapshot, and a small `context` object, and should only return fields that are safe for clients to see. Frontend-model endpoint failures include `context.frontendModelEndpoint`, `action`, `commandType`, `model`, `requestId`, and `expectedError`. This is useful for attaching an error-reporting URL while keeping the normal production error message generic:
595
595
 
596
596
  ```js
597
- configuration.addClientErrorPayloadReporter(async ({error, request, context}) => {
598
- const report = await reportErrorToService({error, request, context})
597
+ configuration.addClientErrorPayloadReporter(async ({error, requestDetails, context}) => {
598
+ const report = await reportErrorToService({error, requestDetails, context})
599
599
 
600
600
  return {bugReportUrl: report.url}
601
601
  })
602
602
  ```
603
603
 
604
+ `requestDetails` includes `httpMethod`, `path`, and a parsed `body` snapshot when available. The body snapshot redacts common secret keys, truncates large strings and arrays, summarizes uploaded files and buffers without bytes, and compacts oversized frontend-model batches while preserving `requestId`, `model`, `commandType` / `customPath`, and payload shape.
605
+
604
606
  For sqlite web databases, Velocious defaults to `https://sql.js.org/dist/<file>` for `sql.js` wasm loading. You can override wasm resolution per database config with `locateFile`:
605
607
 
606
608
  ```js
@@ -212,6 +212,13 @@
212
212
  * @typedef {Record<string, import("./frontend-models/query.js").FrontendModelTransportValue>} ClientErrorPayloadReporterPayload
213
213
  */
214
214
 
215
+ /**
216
+ * @typedef {object} ErrorRequestDetails
217
+ * @property {?} [body] - Sanitized parsed request body, when available.
218
+ * @property {string} httpMethod - Request HTTP method.
219
+ * @property {string} path - Request path.
220
+ */
221
+
215
222
  /**
216
223
  * @typedef {object} ClientErrorPayloadContext
217
224
  * @property {string} controller - Controller class name.
@@ -227,7 +234,8 @@
227
234
  * @typedef {function({
228
235
  * context: ClientErrorPayloadContext,
229
236
  * error: Error,
230
- * request: import("./http-server/client/request.js").default | import("./http-server/client/websocket-request.js").default | undefined
237
+ * request: import("./http-server/client/request.js").default | import("./http-server/client/websocket-request.js").default | undefined,
238
+ * requestDetails: ErrorRequestDetails | null
231
239
  * }): Promise<ClientErrorPayloadReporterPayload | void> | ClientErrorPayloadReporterPayload | void} ClientErrorPayloadReporterType
232
240
  */
233
241
 
@@ -18,6 +18,7 @@ import Ability from "./authorization/ability.js"
18
18
  import EventEmitter from "./utils/event-emitter.js"
19
19
  import VelociousWebsocketChannelSubscribers from "./http-server/websocket-channel-subscribers.js"
20
20
  import {CurrentConfigurationNotSetError, currentConfiguration, setCurrentConfiguration} from "./current-configuration.js"
21
+ import {requestDetails} from "./error-reporting/request-details.js"
21
22
  import {frontendModelResourceClassFromDefinition, frontendModelResourceConfigurationFromDefinition, frontendModelResourcesForBackendProject} from "./frontend-models/resource-definition.js"
22
23
  import PluginRoutes from "./routes/plugin-routes.js"
23
24
  import restArgsError from "./utils/rest-args-error.js"
@@ -2411,9 +2412,13 @@ export default class VelociousConfiguration {
2411
2412
  async clientErrorPayloadForError(args) {
2412
2413
  /** @type {import("./configuration-types.js").ClientErrorPayloadReporterPayload} */
2413
2414
  const payload = {}
2415
+ const details = requestDetails(args.request)
2414
2416
 
2415
2417
  for (const reporter of this._clientErrorPayloadReporters) {
2416
- const reporterPayload = await reporter(args)
2418
+ const reporterPayload = await reporter({
2419
+ ...args,
2420
+ requestDetails: details
2421
+ })
2417
2422
 
2418
2423
  if (reporterPayload && typeof reporterPayload === "object") {
2419
2424
  Object.assign(payload, reporterPayload)
@@ -1852,7 +1852,7 @@ export default class DbGenerateFrontendModels extends BaseCommand {
1852
1852
  throw new Error(`Could not parse JSDoc return type from: ${jsDocText}`)
1853
1853
  }
1854
1854
 
1855
- const returnType = jsDocText.slice(typeOpenIndex + 1, typeCloseIndex).trim()
1855
+ const returnType = this.normalizeJsDocType(jsDocText.slice(typeOpenIndex + 1, typeCloseIndex))
1856
1856
 
1857
1857
  if (returnType.length < 1) {
1858
1858
  throw new Error(`Expected non-empty JSDoc return type in: ${jsDocText}`)
@@ -1861,6 +1861,18 @@ export default class DbGenerateFrontendModels extends BaseCommand {
1861
1861
  return returnType
1862
1862
  }
1863
1863
 
1864
+ /**
1865
+ * Collapses a JSDoc type spanning multiple comment lines into a single line so it can
1866
+ * be emitted into an inline type-assertion cast. A multiline backend return type keeps
1867
+ * its leading continuation asterisks in the captured substring, which are invalid inside
1868
+ * an inline cast and make TypeScript read the asserted type as `undefined`.
1869
+ * @param {string} jsDocType - Raw captured JSDoc type, possibly multiline.
1870
+ * @returns {string} - Single-line JSDoc type.
1871
+ */
1872
+ normalizeJsDocType(jsDocType) {
1873
+ return jsDocType.replace(/\s*\n\s*\*?[ \t]*/g, " ").trim()
1874
+ }
1875
+
1864
1876
  /**
1865
1877
  * Runs js doc parameters.
1866
1878
  * @param {string} jsDocText - JSDoc text inside comment markers.
@@ -1879,7 +1891,7 @@ export default class DbGenerateFrontendModels extends BaseCommand {
1879
1891
  throw new Error(`Could not parse JSDoc parameter type from: ${jsDocText}`)
1880
1892
  }
1881
1893
 
1882
- const type = jsDocText.slice(typeOpenIndex + 1, typeCloseIndex).trim()
1894
+ const type = this.normalizeJsDocType(jsDocText.slice(typeOpenIndex + 1, typeCloseIndex))
1883
1895
 
1884
1896
  if (type.length < 1) {
1885
1897
  throw new Error(`Expected non-empty JSDoc parameter type in: ${jsDocText}`)
@@ -0,0 +1,308 @@
1
+ // @ts-check
2
+
3
+ import UploadedFile from "../http-server/client/uploaded-file/uploaded-file.js"
4
+
5
+ const REQUEST_DETAILS_BODY_MAX_SERIALIZED_LENGTH = 12000
6
+ const REQUEST_DETAILS_STRING_MAX_LENGTH = 1000
7
+ const REQUEST_DETAILS_ARRAY_MAX_ITEMS = 50
8
+ const REDACTED_REQUEST_DETAILS_VALUE = "[redacted]"
9
+
10
+ /**
11
+ * Extracts request metadata without retaining the request object.
12
+ * @param {import("../http-server/client/request.js").default | import("../http-server/client/websocket-request.js").default | undefined} request - Request object, when present.
13
+ * @returns {import("../configuration-types.js").ErrorRequestDetails | null} - Request metadata.
14
+ */
15
+ export function requestDetails(request) {
16
+ if (!request) return null
17
+
18
+ let details
19
+
20
+ try {
21
+ details = {
22
+ httpMethod: request.httpMethod(),
23
+ path: request.path()
24
+ }
25
+ } catch {
26
+ return null
27
+ }
28
+
29
+ const body = requestBodySnapshot(request)
30
+
31
+ if (body !== undefined) {
32
+ return {...details, body}
33
+ }
34
+
35
+ return details
36
+ }
37
+
38
+ /**
39
+ * Snapshots parsed request params for error reports.
40
+ * @param {import("../http-server/client/request.js").default | import("../http-server/client/websocket-request.js").default} request - Request object.
41
+ * @returns {? | undefined} - Sanitized body snapshot.
42
+ */
43
+ function requestBodySnapshot(request) {
44
+ if (typeof request.params !== "function") return undefined
45
+
46
+ try {
47
+ return requestDetailsBodySnapshot(request.params())
48
+ } catch (error) {
49
+ return {
50
+ __unavailable: true,
51
+ error: error instanceof Error ? error.message : String(error)
52
+ }
53
+ }
54
+ }
55
+
56
+ /**
57
+ * Builds a bounded, redacted body snapshot for error reports.
58
+ * @param {?} body - Parsed request body.
59
+ * @returns {?} - Sanitized body snapshot.
60
+ */
61
+ function requestDetailsBodySnapshot(body) {
62
+ const originalLength = serializedLength(body)
63
+ const sanitized = sanitizeRequestDetailsValue(body)
64
+ const sanitizedLength = serializedLength(sanitized)
65
+
66
+ if (originalLength <= REQUEST_DETAILS_BODY_MAX_SERIALIZED_LENGTH && sanitizedLength <= REQUEST_DETAILS_BODY_MAX_SERIALIZED_LENGTH) {
67
+ return sanitized
68
+ }
69
+
70
+ const compactFrontendModelBody = compactFrontendModelRequestBody(sanitized, originalLength)
71
+
72
+ if (serializedLength(compactFrontendModelBody) <= REQUEST_DETAILS_BODY_MAX_SERIALIZED_LENGTH) {
73
+ return compactFrontendModelBody
74
+ }
75
+
76
+ return compactRequestDetailsBody(sanitized, originalLength)
77
+ }
78
+
79
+ /**
80
+ * Sanitizes a value recursively for request details.
81
+ * @param {?} value - Value to sanitize.
82
+ * @param {string} [key] - Current object key.
83
+ * @param {WeakSet<object>} [seen] - Seen object references.
84
+ * @returns {?} - Sanitized value.
85
+ */
86
+ function sanitizeRequestDetailsValue(value, key = "", seen = new WeakSet()) {
87
+ if (sensitiveRequestDetailsKey(key)) return REDACTED_REQUEST_DETAILS_VALUE
88
+ if (primitiveRequestDetailsValue(value)) return value
89
+ if (bufferValue(value)) return bufferRequestDetailsSummary(value)
90
+ if (value instanceof UploadedFile) return uploadedFileRequestDetailsSummary(value)
91
+ if (typeof value === "string") return sanitizeRequestDetailsString(value)
92
+ if (Array.isArray(value)) return sanitizeRequestDetailsArray(value, seen)
93
+ if (typeof value === "object") return sanitizeRequestDetailsObject(value, seen)
94
+
95
+ return String(value)
96
+ }
97
+
98
+ /**
99
+ * Checks whether a value can be kept as-is.
100
+ * @param {?} value - Value.
101
+ * @returns {boolean} - Whether the value is primitive and safe.
102
+ */
103
+ function primitiveRequestDetailsValue(value) {
104
+ return value == null || typeof value === "boolean" || typeof value === "number"
105
+ }
106
+
107
+ /**
108
+ * Sanitizes a string value.
109
+ * @param {string} value - String value.
110
+ * @returns {string} - Sanitized string.
111
+ */
112
+ function sanitizeRequestDetailsString(value) {
113
+ if (value.length <= REQUEST_DETAILS_STRING_MAX_LENGTH) return value
114
+
115
+ return `${value.slice(0, REQUEST_DETAILS_STRING_MAX_LENGTH)}... [truncated ${value.length - REQUEST_DETAILS_STRING_MAX_LENGTH} chars]`
116
+ }
117
+
118
+ /**
119
+ * Sanitizes an array value.
120
+ * @param {Array<?>} value - Array value.
121
+ * @param {WeakSet<object>} seen - Seen object references.
122
+ * @returns {Array<?>} - Sanitized array.
123
+ */
124
+ function sanitizeRequestDetailsArray(value, seen) {
125
+ const entries = value
126
+ .slice(0, REQUEST_DETAILS_ARRAY_MAX_ITEMS)
127
+ .map((entry) => sanitizeRequestDetailsValue(entry, "", seen))
128
+
129
+ if (value.length > REQUEST_DETAILS_ARRAY_MAX_ITEMS) {
130
+ entries.push({__omittedItems: value.length - REQUEST_DETAILS_ARRAY_MAX_ITEMS})
131
+ }
132
+
133
+ return entries
134
+ }
135
+
136
+ /**
137
+ * Sanitizes a plain object-like value.
138
+ * @param {object} value - Object value.
139
+ * @param {WeakSet<object>} seen - Seen object references.
140
+ * @returns {Record<string, ?> | string} - Sanitized object or circular marker.
141
+ */
142
+ function sanitizeRequestDetailsObject(value, seen) {
143
+ if (seen.has(value)) return "[circular]"
144
+
145
+ seen.add(value)
146
+
147
+ /** @type {Record<string, ?>} */
148
+ const sanitized = {}
149
+
150
+ for (const [entryKey, entryValue] of Object.entries(value)) {
151
+ sanitized[entryKey] = sanitizeRequestDetailsValue(entryValue, entryKey, seen)
152
+ }
153
+
154
+ seen.delete(value)
155
+
156
+ return sanitized
157
+ }
158
+
159
+ /**
160
+ * Checks whether a value is a Node.js Buffer.
161
+ * @param {?} value - Value.
162
+ * @returns {value is Buffer} - Whether value is a Buffer.
163
+ */
164
+ function bufferValue(value) {
165
+ return typeof Buffer !== "undefined" && typeof Buffer.isBuffer === "function" && Buffer.isBuffer(value)
166
+ }
167
+
168
+ /**
169
+ * Summarizes raw binary data without serializing bytes.
170
+ * @param {Buffer} buffer - Uploaded or request buffer.
171
+ * @returns {Record<string, ?>} - Request-safe buffer summary.
172
+ */
173
+ function bufferRequestDetailsSummary(buffer) {
174
+ return {
175
+ __redacted: true,
176
+ __type: "Buffer",
177
+ byteLength: buffer.byteLength
178
+ }
179
+ }
180
+
181
+ /**
182
+ * Summarizes uploaded files without serializing file bytes or temp paths.
183
+ * @param {UploadedFile} uploadedFile - Uploaded file object.
184
+ * @returns {Record<string, ?>} - Request-safe upload summary.
185
+ */
186
+ function uploadedFileRequestDetailsSummary(uploadedFile) {
187
+ return {
188
+ __redacted: true,
189
+ __type: "UploadedFile",
190
+ contentType: uploadedFile.contentType() ?? null,
191
+ fieldName: uploadedFile.fieldName(),
192
+ filename: uploadedFile.filename(),
193
+ size: uploadedFile.size()
194
+ }
195
+ }
196
+
197
+ /**
198
+ * Checks whether a key should be redacted from request details.
199
+ * @param {string} key - Object key.
200
+ * @returns {boolean} - Whether the value is sensitive.
201
+ */
202
+ function sensitiveRequestDetailsKey(key) {
203
+ return /authorization|contentBase64|password|secret|sessionToken|token/i.test(key)
204
+ }
205
+
206
+ /**
207
+ * Compacts a frontend-model request envelope while preserving debugging shape.
208
+ * @param {?} value - Sanitized body value.
209
+ * @param {number} originalSerializedLength - Byte count before redaction or compaction.
210
+ * @returns {?} - Compacted body value.
211
+ */
212
+ function compactFrontendModelRequestBody(value, originalSerializedLength) {
213
+ if (!value || typeof value !== "object" || !Array.isArray(/** @type {Record<string, ?>} */ (value).requests)) {
214
+ return compactRequestDetailsBody(value, originalSerializedLength)
215
+ }
216
+
217
+ return {
218
+ __truncated: true,
219
+ originalSerializedLength,
220
+ requests: /** @type {Array<?>} */ (/** @type {Record<string, ?>} */ (value).requests).map((request) => {
221
+ return compactFrontendModelRequest(request)
222
+ })
223
+ }
224
+ }
225
+
226
+ /**
227
+ * Compacts one frontend-model request entry.
228
+ * @param {?} value - Candidate request entry from the transport envelope.
229
+ * @returns {?} - Compacted request.
230
+ */
231
+ function compactFrontendModelRequest(value) {
232
+ if (!value || typeof value !== "object") return value
233
+
234
+ const request = /** @type {Record<string, ?>} */ (value)
235
+ /** @type {Record<string, ?>} */
236
+ const compact = {}
237
+
238
+ for (const key of ["requestId", "model", "commandType", "customPath"]) {
239
+ if (request[key] !== undefined) compact[key] = request[key]
240
+ }
241
+
242
+ if (request.payload !== undefined) {
243
+ compact.payload = compactFrontendModelPayload(request.payload)
244
+ }
245
+
246
+ return compact
247
+ }
248
+
249
+ /**
250
+ * Compacts a frontend-model payload.
251
+ * @param {?} value - Candidate payload from a request entry.
252
+ * @returns {?} - Compacted payload.
253
+ */
254
+ function compactFrontendModelPayload(value) {
255
+ if (!value || typeof value !== "object" || Array.isArray(value)) return value
256
+
257
+ const payload = /** @type {Record<string, ?>} */ (value)
258
+ /** @type {Record<string, ?>} */
259
+ const compact = {}
260
+
261
+ for (const [key, entryValue] of Object.entries(payload)) {
262
+ compact[key] = compactFrontendModelPayloadEntry({key, value: entryValue})
263
+ }
264
+
265
+ return compact
266
+ }
267
+
268
+ /**
269
+ * Compacts one frontend-model payload entry.
270
+ * @param {{key: string, value: ?}} args - Payload entry.
271
+ * @returns {?} - Compacted value.
272
+ */
273
+ function compactFrontendModelPayloadEntry({key, value}) {
274
+ if (key !== "attributes" || !value || typeof value !== "object" || Array.isArray(value)) {
275
+ return value
276
+ }
277
+
278
+ return {__keys: Object.keys(/** @type {Record<string, ?>} */ (value))}
279
+ }
280
+
281
+ /**
282
+ * Builds a last-resort compact body summary.
283
+ * @param {?} value - Sanitized body.
284
+ * @param {number} originalSerializedLength - Byte count before redaction or compaction.
285
+ * @returns {Record<string, ?>} - Compact summary.
286
+ */
287
+ function compactRequestDetailsBody(value, originalSerializedLength) {
288
+ return {
289
+ __truncated: true,
290
+ originalSerializedLength,
291
+ topLevelKeys: value && typeof value === "object" && !Array.isArray(value)
292
+ ? Object.keys(/** @type {Record<string, ?>} */ (value))
293
+ : []
294
+ }
295
+ }
296
+
297
+ /**
298
+ * Measures JSON serialized length.
299
+ * @param {?} value - Value to measure.
300
+ * @returns {number} - Serialized length, or Infinity when not serializable.
301
+ */
302
+ function serializedLength(value) {
303
+ try {
304
+ return JSON.stringify(value).length
305
+ } catch {
306
+ return Infinity
307
+ }
308
+ }
@@ -8,6 +8,7 @@ import {frontendModelResourcesWithBuiltInsForBackendProject} from "./frontend-mo
8
8
  import {frontendModelResourceClassFromDefinition, frontendModelResourceConfigurationFromDefinition, frontendModelResourcePath, frontendModelResourcesForBackendProject} from "./frontend-models/resource-definition.js"
9
9
  import {FrontendModelQueryError, normalizeGroup as normalizeQueryGroup, normalizeJoins as normalizeQueryJoins, normalizePluck as normalizeQueryPluck, normalizePreload as normalizeQueryPreload, normalizeSearchOperator as normalizeQuerySearchOperator, normalizeSort as normalizeQuerySort} from "./frontend-models/query.js"
10
10
  import {assignSafeProperty, deserializeFrontendModelTransportValue, isBackendModelInstance, serializeFrontendModelTransportValue} from "./frontend-models/transport-serialization.js"
11
+ import {requestDetails} from "./error-reporting/request-details.js"
11
12
  import RoutesResolver from "./routes/resolver.js"
12
13
  import {ValidationError} from "./database/record/index.js"
13
14
  import { normalizeDateStringForWrite } from "./database/datetime-storage.js"
@@ -3183,7 +3184,8 @@ export default class FrontendModelController extends Controller {
3183
3184
  const errorPayload = {
3184
3185
  context: errorContext,
3185
3186
  error: error instanceof Error ? error : new Error(String(error)),
3186
- request: this.getRequest()
3187
+ request: this.getRequest(),
3188
+ requestDetails: requestDetails(this.getRequest())
3187
3189
  }
3188
3190
 
3189
3191
  this.getConfiguration().getErrorEvents().emit("framework-error", errorPayload)
@@ -186,6 +186,12 @@
186
186
  /**
187
187
  * @typedef {Record<string, import("./frontend-models/query.js").FrontendModelTransportValue>} ClientErrorPayloadReporterPayload
188
188
  */
189
+ /**
190
+ * @typedef {object} ErrorRequestDetails
191
+ * @property {?} [body] - Sanitized parsed request body, when available.
192
+ * @property {string} httpMethod - Request HTTP method.
193
+ * @property {string} path - Request path.
194
+ */
189
195
  /**
190
196
  * @typedef {object} ClientErrorPayloadContext
191
197
  * @property {string} controller - Controller class name.
@@ -200,7 +206,8 @@
200
206
  * @typedef {function({
201
207
  * context: ClientErrorPayloadContext,
202
208
  * error: Error,
203
- * request: import("./http-server/client/request.js").default | import("./http-server/client/websocket-request.js").default | undefined
209
+ * request: import("./http-server/client/request.js").default | import("./http-server/client/websocket-request.js").default | undefined,
210
+ * requestDetails: ErrorRequestDetails | null
204
211
  * }): Promise<ClientErrorPayloadReporterPayload | void> | ClientErrorPayloadReporterPayload | void} ClientErrorPayloadReporterType
205
212
  */
206
213
  /**
@@ -878,6 +885,20 @@ export type ScheduledBackgroundJobConfiguration = {
878
885
  };
879
886
  export type VelociousParams = Record<string, string>;
880
887
  export type ClientErrorPayloadReporterPayload = Record<string, import("./frontend-models/query.js").FrontendModelTransportValue>;
888
+ export type ErrorRequestDetails = {
889
+ /**
890
+ * - Sanitized parsed request body, when available.
891
+ */
892
+ body?: unknown;
893
+ /**
894
+ * - Request HTTP method.
895
+ */
896
+ httpMethod: string;
897
+ /**
898
+ * - Request path.
899
+ */
900
+ path: string;
901
+ };
881
902
  export type ClientErrorPayloadContext = {
882
903
  /**
883
904
  * - Controller class name.
@@ -912,6 +933,7 @@ export type ClientErrorPayloadReporterType = (arg0: {
912
933
  context: ClientErrorPayloadContext;
913
934
  error: Error;
914
935
  request: import("./http-server/client/request.js").default | import("./http-server/client/websocket-request.js").default | undefined;
936
+ requestDetails: ErrorRequestDetails | null;
915
937
  }) => Promise<ClientErrorPayloadReporterPayload | void> | ClientErrorPayloadReporterPayload | void;
916
938
  export type VelociousLooseObject = Record<string, unknown> & {
917
939
  configuration?: import("./configuration.js").default;
@@ -1 +1 @@
1
- {"version":3,"file":"configuration-types.d.ts","sourceRoot":"","sources":["../../src/configuration-types.js"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"configuration-types.d.ts","sourceRoot":"","sources":["../../src/configuration-types.js"],"names":[],"mappings":"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"}