velocious 1.0.599 → 1.0.601

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 (95) hide show
  1. package/README.md +18 -9
  2. package/build/background-jobs/adapter-client.js +45 -0
  3. package/build/background-jobs/adapter.js +139 -0
  4. package/build/background-jobs/job-registry.js +1 -1
  5. package/build/background-jobs/job.js +20 -129
  6. package/build/background-jobs/main.js +71 -28
  7. package/build/background-jobs/perform-job.js +23 -0
  8. package/build/background-jobs/platform-job.js +156 -0
  9. package/build/background-jobs/runtime.js +156 -0
  10. package/build/background-jobs/sql-adapter.js +20 -0
  11. package/build/background-jobs/store.js +3 -1
  12. package/build/background-jobs/types.js +10 -0
  13. package/build/background-jobs/web/controller.js +5 -2
  14. package/build/background-jobs/worker.js +6 -8
  15. package/build/configuration-types.js +7 -2
  16. package/build/configuration.js +224 -45
  17. package/build/environment-handlers/base.js +20 -0
  18. package/build/environment-handlers/node.js +27 -20
  19. package/build/frontend-model-controller.js +16 -20
  20. package/build/jobs/prune-terminal-background-jobs.js +2 -3
  21. package/build/src/background-jobs/adapter-client.d.ts +41 -0
  22. package/build/src/background-jobs/adapter-client.d.ts.map +1 -0
  23. package/build/src/background-jobs/adapter-client.js +39 -0
  24. package/build/src/background-jobs/adapter.d.ts +165 -0
  25. package/build/src/background-jobs/adapter.d.ts.map +1 -0
  26. package/build/src/background-jobs/adapter.js +121 -0
  27. package/build/src/background-jobs/job-registry.d.ts +1 -1
  28. package/build/src/background-jobs/job-registry.d.ts.map +1 -1
  29. package/build/src/background-jobs/job-registry.js +2 -2
  30. package/build/src/background-jobs/job.d.ts +6 -69
  31. package/build/src/background-jobs/job.d.ts.map +1 -1
  32. package/build/src/background-jobs/job.js +17 -116
  33. package/build/src/background-jobs/main.d.ts +13 -3
  34. package/build/src/background-jobs/main.d.ts.map +1 -1
  35. package/build/src/background-jobs/main.js +66 -30
  36. package/build/src/background-jobs/perform-job.d.ts +16 -0
  37. package/build/src/background-jobs/perform-job.d.ts.map +1 -0
  38. package/build/src/background-jobs/perform-job.js +22 -0
  39. package/build/src/background-jobs/platform-job.d.ts +110 -0
  40. package/build/src/background-jobs/platform-job.d.ts.map +1 -0
  41. package/build/src/background-jobs/platform-job.js +138 -0
  42. package/build/src/background-jobs/runtime.d.ts +78 -0
  43. package/build/src/background-jobs/runtime.d.ts.map +1 -0
  44. package/build/src/background-jobs/runtime.js +132 -0
  45. package/build/src/background-jobs/sql-adapter.d.ts +13 -0
  46. package/build/src/background-jobs/sql-adapter.d.ts.map +1 -0
  47. package/build/src/background-jobs/sql-adapter.js +18 -0
  48. package/build/src/background-jobs/store.d.ts +2 -1
  49. package/build/src/background-jobs/store.d.ts.map +1 -1
  50. package/build/src/background-jobs/store.js +4 -2
  51. package/build/src/background-jobs/types.d.ts +41 -0
  52. package/build/src/background-jobs/types.d.ts.map +1 -1
  53. package/build/src/background-jobs/types.js +11 -1
  54. package/build/src/background-jobs/web/controller.d.ts.map +1 -1
  55. package/build/src/background-jobs/web/controller.js +5 -3
  56. package/build/src/background-jobs/worker.d.ts.map +1 -1
  57. package/build/src/background-jobs/worker.js +7 -8
  58. package/build/src/configuration-types.d.ts +20 -4
  59. package/build/src/configuration-types.d.ts.map +1 -1
  60. package/build/src/configuration-types.js +7 -3
  61. package/build/src/configuration.d.ts +53 -4
  62. package/build/src/configuration.d.ts.map +1 -1
  63. package/build/src/configuration.js +209 -44
  64. package/build/src/environment-handlers/base.d.ts +17 -0
  65. package/build/src/environment-handlers/base.d.ts.map +1 -1
  66. package/build/src/environment-handlers/base.js +19 -1
  67. package/build/src/environment-handlers/node.d.ts +18 -0
  68. package/build/src/environment-handlers/node.d.ts.map +1 -1
  69. package/build/src/environment-handlers/node.js +25 -20
  70. package/build/src/frontend-model-controller.d.ts +1 -4
  71. package/build/src/frontend-model-controller.d.ts.map +1 -1
  72. package/build/src/frontend-model-controller.js +16 -20
  73. package/build/src/jobs/prune-terminal-background-jobs.d.ts.map +1 -1
  74. package/build/src/jobs/prune-terminal-background-jobs.js +3 -4
  75. package/build/tsconfig.tsbuildinfo +1 -1
  76. package/package.json +4 -4
  77. package/src/background-jobs/adapter-client.js +45 -0
  78. package/src/background-jobs/adapter.js +139 -0
  79. package/src/background-jobs/job-registry.js +1 -1
  80. package/src/background-jobs/job.js +20 -129
  81. package/src/background-jobs/main.js +71 -28
  82. package/src/background-jobs/perform-job.js +23 -0
  83. package/src/background-jobs/platform-job.js +156 -0
  84. package/src/background-jobs/runtime.js +156 -0
  85. package/src/background-jobs/sql-adapter.js +20 -0
  86. package/src/background-jobs/store.js +3 -1
  87. package/src/background-jobs/types.js +10 -0
  88. package/src/background-jobs/web/controller.js +5 -2
  89. package/src/background-jobs/worker.js +6 -8
  90. package/src/configuration-types.js +7 -2
  91. package/src/configuration.js +224 -45
  92. package/src/environment-handlers/base.js +20 -0
  93. package/src/environment-handlers/node.js +27 -20
  94. package/src/frontend-model-controller.js +16 -20
  95. package/src/jobs/prune-terminal-background-jobs.js +2 -3
@@ -175,7 +175,6 @@ const frontendModelJoinedPathsSymbol = Symbol("frontendModelJoinedPaths")
175
175
  const frontendModelGroupedColumnsSymbol = Symbol("frontendModelGroupedColumns")
176
176
  const frontendModelWhereNoMatchSymbol = Symbol("frontendModelWhereNoMatch")
177
177
  const frontendModelClientSafeErrorMessage = "Request failed."
178
- const frontendModelDebugErrorEnvironments = new Set(["development", "test"])
179
178
 
180
179
  /**
181
180
  * Builds a client-safe sync replay validation error.
@@ -277,10 +276,10 @@ function frontendModelVelociousMetadataForError(error) {
277
276
  /**
278
277
  * Runs frontend model client message for error.
279
278
  * @param {unknown} error - Caught error.
280
- * @param {boolean} forwardUnexpectedErrorMessage - Whether unexpected error messages may be exposed.
279
+ * @param {boolean} exposeInternalErrorsToClients - Whether unexpected error messages may be exposed.
281
280
  * @returns {string} - Message safe to return to API clients.
282
281
  */
283
- function frontendModelClientMessageForError(error, forwardUnexpectedErrorMessage) {
282
+ function frontendModelClientMessageForError(error, exposeInternalErrorsToClients) {
284
283
  if (error instanceof RecordNotFoundError) {
285
284
  return "Record not found."
286
285
  }
@@ -301,7 +300,7 @@ function frontendModelClientMessageForError(error, forwardUnexpectedErrorMessage
301
300
  return error.message
302
301
  }
303
302
 
304
- if (forwardUnexpectedErrorMessage && error instanceof Error) return error.message
303
+ if (exposeInternalErrorsToClients && error instanceof Error) return error.message
305
304
 
306
305
  return frontendModelClientSafeErrorMessage
307
306
  }
@@ -310,14 +309,11 @@ function frontendModelClientMessageForError(error, forwardUnexpectedErrorMessage
310
309
  * Runs frontend model debug payload for error.
311
310
  * @param {object} args - Arguments.
312
311
  * @param {import("./configuration.js").default} args.configuration - Current configuration.
313
- * @param {string} args.environment - Current environment.
314
312
  * @param {unknown} args.error - Caught error.
315
- * @returns {import("./configuration-types.js").ClientErrorPayloadReporterPayload} - Optional debug payload for non-production environments.
313
+ * @returns {import("./configuration-types.js").ClientErrorPayloadReporterPayload} - Optional internal error details when client exposure is enabled.
316
314
  */
317
- function frontendModelDebugPayloadForError({configuration, environment, error}) {
318
- const debugAllowed = frontendModelDebugErrorEnvironments.has(environment) || environment !== "production" && configuration.getExposeInternalErrorsToClients()
319
-
320
- if (!debugAllowed) {
315
+ function frontendModelDebugPayloadForError({configuration, error}) {
316
+ if (!configuration.getExposeInternalErrorsToClients()) {
321
317
  return {}
322
318
  }
323
319
 
@@ -3259,10 +3255,9 @@ export default class FrontendModelController extends Controller {
3259
3255
  * Runs frontend model client error payload for error.
3260
3256
  * @param {unknown} error - Caught error.
3261
3257
  * @param {FrontendModelEndpointErrorContext | undefined} [endpointErrorContext] - Frontend-model endpoint error context.
3262
- * @param {{forwardUnexpectedErrorMessage?: boolean}} [options] - Client error rendering options.
3263
3258
  * @returns {Promise<import("./configuration-types.js").ClientErrorPayloadReporterPayload>} - Client payload for the current environment.
3264
3259
  */
3265
- async frontendModelClientErrorPayloadForError(error, endpointErrorContext, {forwardUnexpectedErrorMessage = false} = {}) {
3260
+ async frontendModelClientErrorPayloadForError(error, endpointErrorContext) {
3266
3261
  const velociousMetadata = frontendModelVelociousMetadataForError(error)
3267
3262
  const normalizedError = error instanceof Error ? error : new Error(String(error))
3268
3263
  /** @type {import("./configuration-types.js").ClientErrorPayloadReporterPayload} */
@@ -3312,15 +3307,20 @@ export default class FrontendModelController extends Controller {
3312
3307
  request: this.getRequest()
3313
3308
  })
3314
3309
 
3310
+ if (!this.getConfiguration().getExposeInternalErrorsToClients()) {
3311
+ delete reporterPayload.debugBacktrace
3312
+ delete reporterPayload.debugErrorClass
3313
+ delete reporterPayload.debugErrorMessage
3314
+ }
3315
+
3315
3316
  return {
3316
3317
  ...reporterPayload,
3317
3318
  ...this.frontendModelErrorPayload(frontendModelClientMessageForError(
3318
3319
  error,
3319
- forwardUnexpectedErrorMessage && !this.getConfiguration().getSecureFrontendModelErrors()
3320
+ this.getConfiguration().getExposeInternalErrorsToClients()
3320
3321
  )),
3321
3322
  ...frontendModelDebugPayloadForError({
3322
3323
  configuration: this.getConfiguration(),
3323
- environment: this.getConfiguration().getEnvironment(),
3324
3324
  error
3325
3325
  }),
3326
3326
  ...(velociousMetadata ? {velocious: velociousMetadata} : {}),
@@ -4397,9 +4397,7 @@ export default class FrontendModelController extends Controller {
4397
4397
 
4398
4398
  responses.push({
4399
4399
  requestId,
4400
- response: await this.frontendModelClientErrorPayloadForError(error, errorContext, {
4401
- forwardUnexpectedErrorMessage: !isBuiltInCommand
4402
- })
4400
+ response: await this.frontendModelClientErrorPayloadForError(error, errorContext)
4403
4401
  })
4404
4402
  }
4405
4403
  }
@@ -4623,9 +4621,7 @@ export default class FrontendModelController extends Controller {
4623
4621
  await this.frontendModelLogEndpointError({error, errorContext})
4624
4622
 
4625
4623
  await this.render({
4626
- json: /** @type {Record<string, ReturnType<typeof JSON.parse>>} */ (serializeFrontendModelTransportValue(await this.frontendModelClientErrorPayloadForError(error, errorContext, {
4627
- forwardUnexpectedErrorMessage: true
4628
- }), this.transportSerializationOptions()))
4624
+ json: /** @type {Record<string, ReturnType<typeof JSON.parse>>} */ (serializeFrontendModelTransportValue(await this.frontendModelClientErrorPayloadForError(error, errorContext), this.transportSerializationOptions()))
4629
4625
  })
4630
4626
  }
4631
4627
  }
@@ -1,6 +1,5 @@
1
1
  // @ts-check
2
2
 
3
- import BackgroundJobsStore from "../background-jobs/store.js"
4
3
  import Configuration from "../configuration.js"
5
4
  import VelociousJob from "../background-jobs/job.js"
6
5
 
@@ -59,9 +58,9 @@ export default class PruneTerminalBackgroundJobsJob extends VelociousJob {
59
58
  async perform() {
60
59
  const configuration = Configuration.current()
61
60
  const config = configuration.getBackgroundJobsConfig()
62
- const store = new BackgroundJobsStore({configuration, databaseIdentifier: config.databaseIdentifier})
61
+ const adapter = await configuration.acquireReadyBackgroundJobsAdapter()
63
62
 
64
- await store.pruneTerminalJobs({
63
+ await adapter.pruneTerminalJobs({
65
64
  completedTtlMs: config.retention.completedTtlMs,
66
65
  failedTtlMs: config.retention.failedTtlMs,
67
66
  batchSize: config.retention.batchSize