velocious 1.0.461 → 1.0.462
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/build/application.js +1 -3
- package/build/background-jobs/cron-expression.js +1 -3
- package/build/background-jobs/forked-runner-child.js +1 -3
- package/build/background-jobs/job.js +1 -3
- package/build/background-jobs/scheduler.js +2 -6
- package/build/background-jobs/store.js +2 -6
- package/build/background-jobs/web/controller.js +1 -3
- package/build/background-jobs/worker.js +1 -3
- package/build/beacon/client.js +2 -6
- package/build/cli/tenant-database-command-helper.js +1 -3
- package/build/configuration.js +29 -32
- package/build/controller.js +4 -14
- package/build/database/drivers/mssql/index.js +1 -3
- package/build/database/drivers/mysql/index.js +2 -6
- package/build/database/drivers/pgsql/index.js +1 -3
- package/build/database/drivers/sqlite/base.js +3 -9
- package/build/database/drivers/sqlite/index.js +3 -9
- package/build/database/drivers/sqlite/table.js +1 -3
- package/build/database/migrator.js +1 -3
- package/build/database/pool/async-tracked-multi-connection.js +20 -45
- package/build/database/pool/base-methods-forward.js +2 -10
- package/build/database/pool/base.js +5 -15
- package/build/database/query/index.js +4 -12
- package/build/database/query/join-object.js +3 -9
- package/build/database/query/model-class-query.js +21 -63
- package/build/database/query/preloader/belongs-to.js +9 -27
- package/build/database/query/preloader/has-many.js +7 -21
- package/build/database/query/preloader/has-one.js +3 -9
- package/build/database/query/preloader.js +6 -18
- package/build/database/query/query-data.js +5 -15
- package/build/database/query/where-model-class-hash.js +5 -15
- package/build/database/query/with-count.js +5 -15
- package/build/database/record/acts-as-list.js +10 -38
- package/build/database/record/attachments/normalize-input.js +7 -25
- package/build/database/record/attachments/storage-drivers/s3.js +4 -12
- package/build/database/record/attachments/store.js +2 -6
- package/build/database/record/index.js +55 -171
- package/build/database/record/instance-relationships/base.js +6 -20
- package/build/database/record/instance-relationships/belongs-to.js +2 -6
- package/build/database/record/instance-relationships/has-many.js +4 -12
- package/build/database/record/instance-relationships/has-one.js +4 -12
- package/build/database/record/relationships/base.js +1 -5
- package/build/database/record/validators/presence.js +1 -3
- package/build/database/record/validators/uniqueness.js +4 -12
- package/build/environment-handlers/browser.js +1 -3
- package/build/environment-handlers/node/cli/commands/console.js +2 -6
- package/build/environment-handlers/node/cli/commands/db/schema/load.js +1 -3
- package/build/environment-handlers/node/cli/commands/generate/frontend-models.js +67 -11
- package/build/environment-handlers/node.js +15 -6
- package/build/frontend-model-controller.js +34 -110
- package/build/frontend-models/base.js +45 -151
- package/build/frontend-models/clear-pending-debounced-callback.js +1 -3
- package/build/frontend-models/preloader.js +3 -9
- package/build/frontend-models/query.js +11 -33
- package/build/frontend-models/resource-definition.js +2 -6
- package/build/frontend-models/transport-serialization.js +7 -21
- package/build/frontend-models/use-destroyed-event.js +2 -6
- package/build/frontend-models/use-model-class-event.js +2 -6
- package/build/frontend-models/use-updated-event.js +3 -9
- package/build/frontend-models/websocket-channel.js +9 -27
- package/build/frontend-models/websocket-publishers.js +12 -23
- package/build/http-server/client/index.js +6 -18
- package/build/http-server/client/params-to-object.js +6 -18
- package/build/http-server/client/request-buffer/index.js +1 -3
- package/build/http-server/client/request-parser.js +1 -3
- package/build/http-server/client/request-runner.js +4 -12
- package/build/http-server/client/websocket-session.js +6 -18
- package/build/http-server/development-reloader.js +2 -6
- package/build/http-server/remote-address.js +1 -5
- package/build/http-server/server-client.js +3 -9
- package/build/http-server/server-lock.js +2 -6
- package/build/http-server/websocket-channel-subscribers.js +2 -6
- package/build/http-server/websocket-event-log-store.js +5 -15
- package/build/http-server/websocket-events-host.js +1 -3
- package/build/http-server/worker-handler/in-process.js +3 -11
- package/build/http-server/worker-handler/worker-thread.js +1 -3
- package/build/logger.js +2 -6
- package/build/mailer/backends/smtp.js +1 -5
- package/build/mailer/base.js +4 -16
- package/build/plugins/sqljs-wasm-route-controller.js +1 -3
- package/build/routes/basic-route.js +1 -3
- package/build/routes/resolver.js +4 -14
- package/build/src/application.d.ts.map +1 -1
- package/build/src/application.js +2 -4
- package/build/src/background-jobs/cron-expression.d.ts.map +1 -1
- package/build/src/background-jobs/cron-expression.js +2 -4
- package/build/src/background-jobs/forked-runner-child.js +2 -4
- package/build/src/background-jobs/job.d.ts.map +1 -1
- package/build/src/background-jobs/job.js +2 -4
- package/build/src/background-jobs/scheduler.d.ts.map +1 -1
- package/build/src/background-jobs/scheduler.js +3 -7
- package/build/src/background-jobs/store.d.ts.map +1 -1
- package/build/src/background-jobs/store.js +3 -7
- package/build/src/background-jobs/web/controller.d.ts.map +1 -1
- package/build/src/background-jobs/web/controller.js +2 -5
- package/build/src/background-jobs/worker.d.ts.map +1 -1
- package/build/src/background-jobs/worker.js +2 -4
- package/build/src/beacon/client.d.ts.map +1 -1
- package/build/src/beacon/client.js +3 -7
- package/build/src/cli/tenant-database-command-helper.d.ts.map +1 -1
- package/build/src/cli/tenant-database-command-helper.js +2 -4
- package/build/src/configuration.d.ts.map +1 -1
- package/build/src/configuration.js +27 -35
- package/build/src/controller.d.ts.map +1 -1
- package/build/src/controller.js +5 -15
- package/build/src/database/drivers/mssql/index.d.ts.map +1 -1
- package/build/src/database/drivers/mssql/index.js +2 -4
- package/build/src/database/drivers/mysql/index.d.ts.map +1 -1
- package/build/src/database/drivers/mysql/index.js +3 -7
- package/build/src/database/drivers/pgsql/index.d.ts.map +1 -1
- package/build/src/database/drivers/pgsql/index.js +2 -4
- package/build/src/database/drivers/sqlite/base.d.ts.map +1 -1
- package/build/src/database/drivers/sqlite/base.js +4 -10
- package/build/src/database/drivers/sqlite/index.d.ts.map +1 -1
- package/build/src/database/drivers/sqlite/index.js +4 -10
- package/build/src/database/drivers/sqlite/table.d.ts.map +1 -1
- package/build/src/database/drivers/sqlite/table.js +2 -4
- package/build/src/database/migrator.d.ts.map +1 -1
- package/build/src/database/migrator.js +2 -4
- package/build/src/database/pool/async-tracked-multi-connection.d.ts.map +1 -1
- package/build/src/database/pool/async-tracked-multi-connection.js +21 -47
- package/build/src/database/pool/base-methods-forward.d.ts.map +1 -1
- package/build/src/database/pool/base-methods-forward.js +3 -11
- package/build/src/database/pool/base.d.ts.map +1 -1
- package/build/src/database/pool/base.js +6 -16
- package/build/src/database/query/index.d.ts.map +1 -1
- package/build/src/database/query/index.js +5 -13
- package/build/src/database/query/join-object.d.ts.map +1 -1
- package/build/src/database/query/join-object.js +4 -10
- package/build/src/database/query/model-class-query.d.ts.map +1 -1
- package/build/src/database/query/model-class-query.js +22 -64
- package/build/src/database/query/preloader/belongs-to.d.ts.map +1 -1
- package/build/src/database/query/preloader/belongs-to.js +10 -28
- package/build/src/database/query/preloader/has-many.d.ts.map +1 -1
- package/build/src/database/query/preloader/has-many.js +8 -22
- package/build/src/database/query/preloader/has-one.d.ts.map +1 -1
- package/build/src/database/query/preloader/has-one.js +4 -10
- package/build/src/database/query/preloader.d.ts.map +1 -1
- package/build/src/database/query/preloader.js +7 -20
- package/build/src/database/query/query-data.d.ts.map +1 -1
- package/build/src/database/query/query-data.js +6 -16
- package/build/src/database/query/where-model-class-hash.d.ts.map +1 -1
- package/build/src/database/query/where-model-class-hash.js +6 -16
- package/build/src/database/query/with-count.d.ts.map +1 -1
- package/build/src/database/query/with-count.js +6 -17
- package/build/src/database/record/acts-as-list.d.ts.map +1 -1
- package/build/src/database/record/acts-as-list.js +11 -47
- package/build/src/database/record/attachments/normalize-input.d.ts.map +1 -1
- package/build/src/database/record/attachments/normalize-input.js +8 -30
- package/build/src/database/record/attachments/storage-drivers/s3.d.ts.map +1 -1
- package/build/src/database/record/attachments/storage-drivers/s3.js +5 -13
- package/build/src/database/record/attachments/store.d.ts.map +1 -1
- package/build/src/database/record/attachments/store.js +3 -7
- package/build/src/database/record/index.d.ts +4 -9
- package/build/src/database/record/index.d.ts.map +1 -1
- package/build/src/database/record/index.js +53 -173
- package/build/src/database/record/instance-relationships/base.d.ts.map +1 -1
- package/build/src/database/record/instance-relationships/base.js +7 -21
- package/build/src/database/record/instance-relationships/belongs-to.d.ts.map +1 -1
- package/build/src/database/record/instance-relationships/belongs-to.js +3 -7
- package/build/src/database/record/instance-relationships/has-many.d.ts.map +1 -1
- package/build/src/database/record/instance-relationships/has-many.js +5 -13
- package/build/src/database/record/instance-relationships/has-one.d.ts.map +1 -1
- package/build/src/database/record/instance-relationships/has-one.js +5 -13
- package/build/src/database/record/relationships/base.d.ts.map +1 -1
- package/build/src/database/record/relationships/base.js +2 -6
- package/build/src/database/record/validators/presence.d.ts.map +1 -1
- package/build/src/database/record/validators/presence.js +2 -4
- package/build/src/database/record/validators/uniqueness.d.ts.map +1 -1
- package/build/src/database/record/validators/uniqueness.js +5 -14
- package/build/src/environment-handlers/browser.d.ts.map +1 -1
- package/build/src/environment-handlers/browser.js +2 -4
- package/build/src/environment-handlers/node/cli/commands/console.d.ts.map +1 -1
- package/build/src/environment-handlers/node/cli/commands/console.js +3 -7
- package/build/src/environment-handlers/node/cli/commands/db/schema/load.d.ts.map +1 -1
- package/build/src/environment-handlers/node/cli/commands/db/schema/load.js +2 -4
- package/build/src/environment-handlers/node/cli/commands/generate/frontend-models.d.ts +38 -0
- package/build/src/environment-handlers/node/cli/commands/generate/frontend-models.d.ts.map +1 -1
- package/build/src/environment-handlers/node/cli/commands/generate/frontend-models.js +58 -12
- package/build/src/environment-handlers/node.d.ts.map +1 -1
- package/build/src/environment-handlers/node.js +16 -7
- package/build/src/frontend-model-controller.d.ts.map +1 -1
- package/build/src/frontend-model-controller.js +35 -114
- package/build/src/frontend-models/base.d.ts.map +1 -1
- package/build/src/frontend-models/base.js +46 -158
- package/build/src/frontend-models/clear-pending-debounced-callback.d.ts.map +1 -1
- package/build/src/frontend-models/clear-pending-debounced-callback.js +2 -4
- package/build/src/frontend-models/preloader.d.ts.map +1 -1
- package/build/src/frontend-models/preloader.js +4 -11
- package/build/src/frontend-models/query.d.ts.map +1 -1
- package/build/src/frontend-models/query.js +12 -34
- package/build/src/frontend-models/resource-definition.d.ts.map +1 -1
- package/build/src/frontend-models/resource-definition.js +3 -7
- package/build/src/frontend-models/transport-serialization.d.ts.map +1 -1
- package/build/src/frontend-models/transport-serialization.js +8 -23
- package/build/src/frontend-models/use-destroyed-event.js +3 -7
- package/build/src/frontend-models/use-model-class-event.d.ts.map +1 -1
- package/build/src/frontend-models/use-model-class-event.js +3 -7
- package/build/src/frontend-models/use-updated-event.d.ts.map +1 -1
- package/build/src/frontend-models/use-updated-event.js +4 -10
- package/build/src/frontend-models/websocket-channel.d.ts.map +1 -1
- package/build/src/frontend-models/websocket-channel.js +10 -32
- package/build/src/frontend-models/websocket-publishers.d.ts.map +1 -1
- package/build/src/frontend-models/websocket-publishers.js +14 -25
- package/build/src/http-server/client/index.d.ts.map +1 -1
- package/build/src/http-server/client/index.js +7 -21
- package/build/src/http-server/client/params-to-object.d.ts.map +1 -1
- package/build/src/http-server/client/params-to-object.js +7 -21
- package/build/src/http-server/client/request-buffer/index.d.ts.map +1 -1
- package/build/src/http-server/client/request-buffer/index.js +2 -4
- package/build/src/http-server/client/request-parser.d.ts.map +1 -1
- package/build/src/http-server/client/request-parser.js +2 -4
- package/build/src/http-server/client/request-runner.d.ts.map +1 -1
- package/build/src/http-server/client/request-runner.js +5 -14
- package/build/src/http-server/client/websocket-session.d.ts.map +1 -1
- package/build/src/http-server/client/websocket-session.js +7 -20
- package/build/src/http-server/development-reloader.d.ts.map +1 -1
- package/build/src/http-server/development-reloader.js +3 -7
- package/build/src/http-server/remote-address.d.ts.map +1 -1
- package/build/src/http-server/remote-address.js +2 -6
- package/build/src/http-server/server-client.d.ts.map +1 -1
- package/build/src/http-server/server-client.js +4 -10
- package/build/src/http-server/server-lock.d.ts.map +1 -1
- package/build/src/http-server/server-lock.js +3 -7
- package/build/src/http-server/websocket-channel-subscribers.d.ts.map +1 -1
- package/build/src/http-server/websocket-channel-subscribers.js +3 -7
- package/build/src/http-server/websocket-event-log-store.d.ts.map +1 -1
- package/build/src/http-server/websocket-event-log-store.js +6 -16
- package/build/src/http-server/websocket-events-host.d.ts.map +1 -1
- package/build/src/http-server/websocket-events-host.js +2 -5
- package/build/src/http-server/worker-handler/in-process.d.ts.map +1 -1
- package/build/src/http-server/worker-handler/in-process.js +4 -12
- package/build/src/http-server/worker-handler/worker-thread.d.ts.map +1 -1
- package/build/src/http-server/worker-handler/worker-thread.js +2 -4
- package/build/src/logger.d.ts.map +1 -1
- package/build/src/logger.js +3 -7
- package/build/src/mailer/backends/smtp.d.ts.map +1 -1
- package/build/src/mailer/backends/smtp.js +2 -6
- package/build/src/mailer/base.d.ts.map +1 -1
- package/build/src/mailer/base.js +5 -17
- package/build/src/plugins/sqljs-wasm-route-controller.d.ts.map +1 -1
- package/build/src/plugins/sqljs-wasm-route-controller.js +2 -4
- package/build/src/routes/basic-route.d.ts.map +1 -1
- package/build/src/routes/basic-route.js +2 -4
- package/build/src/routes/resolver.d.ts.map +1 -1
- package/build/src/routes/resolver.js +5 -15
- package/build/src/testing/expect-utils.d.ts.map +1 -1
- package/build/src/testing/expect-utils.js +9 -27
- package/build/src/testing/expect.d.ts.map +1 -1
- package/build/src/testing/expect.js +5 -15
- package/build/src/testing/test-runner.d.ts.map +1 -1
- package/build/src/testing/test-runner.js +4 -10
- package/build/src/testing/test.d.ts.map +1 -1
- package/build/src/testing/test.js +5 -17
- package/build/src/utils/model-scope.d.ts.map +1 -1
- package/build/src/utils/model-scope.js +2 -5
- package/build/src/utils/ransack.d.ts.map +1 -1
- package/build/src/utils/ransack.js +15 -42
- package/build/src/utils/with-tracked-stack-async-hooks.d.ts.map +1 -1
- package/build/src/utils/with-tracked-stack-async-hooks.js +4 -12
- package/build/src/utils/with-tracked-stack.d.ts.map +1 -1
- package/build/src/utils/with-tracked-stack.js +3 -8
- package/build/testing/expect-utils.js +8 -26
- package/build/testing/expect.js +4 -14
- package/build/testing/test-runner.js +3 -9
- package/build/testing/test.js +4 -12
- package/build/utils/model-scope.js +1 -3
- package/build/utils/ransack.js +15 -41
- package/build/utils/with-tracked-stack-async-hooks.js +3 -9
- package/build/utils/with-tracked-stack.js +2 -6
- package/package.json +3 -2
- package/src/application.js +1 -3
- package/src/background-jobs/cron-expression.js +1 -3
- package/src/background-jobs/forked-runner-child.js +1 -3
- package/src/background-jobs/job.js +1 -3
- package/src/background-jobs/scheduler.js +2 -6
- package/src/background-jobs/store.js +2 -6
- package/src/background-jobs/web/controller.js +1 -3
- package/src/background-jobs/worker.js +1 -3
- package/src/beacon/client.js +2 -6
- package/src/cli/tenant-database-command-helper.js +1 -3
- package/src/configuration.js +29 -32
- package/src/controller.js +4 -14
- package/src/database/drivers/mssql/index.js +1 -3
- package/src/database/drivers/mysql/index.js +2 -6
- package/src/database/drivers/pgsql/index.js +1 -3
- package/src/database/drivers/sqlite/base.js +3 -9
- package/src/database/drivers/sqlite/index.js +3 -9
- package/src/database/drivers/sqlite/table.js +1 -3
- package/src/database/migrator.js +1 -3
- package/src/database/pool/async-tracked-multi-connection.js +20 -45
- package/src/database/pool/base-methods-forward.js +2 -10
- package/src/database/pool/base.js +5 -15
- package/src/database/query/index.js +4 -12
- package/src/database/query/join-object.js +3 -9
- package/src/database/query/model-class-query.js +21 -63
- package/src/database/query/preloader/belongs-to.js +9 -27
- package/src/database/query/preloader/has-many.js +7 -21
- package/src/database/query/preloader/has-one.js +3 -9
- package/src/database/query/preloader.js +6 -18
- package/src/database/query/query-data.js +5 -15
- package/src/database/query/where-model-class-hash.js +5 -15
- package/src/database/query/with-count.js +5 -15
- package/src/database/record/acts-as-list.js +10 -38
- package/src/database/record/attachments/normalize-input.js +7 -25
- package/src/database/record/attachments/storage-drivers/s3.js +4 -12
- package/src/database/record/attachments/store.js +2 -6
- package/src/database/record/index.js +55 -171
- package/src/database/record/instance-relationships/base.js +6 -20
- package/src/database/record/instance-relationships/belongs-to.js +2 -6
- package/src/database/record/instance-relationships/has-many.js +4 -12
- package/src/database/record/instance-relationships/has-one.js +4 -12
- package/src/database/record/relationships/base.js +1 -5
- package/src/database/record/validators/presence.js +1 -3
- package/src/database/record/validators/uniqueness.js +4 -12
- package/src/environment-handlers/browser.js +1 -3
- package/src/environment-handlers/node/cli/commands/console.js +2 -6
- package/src/environment-handlers/node/cli/commands/db/schema/load.js +1 -3
- package/src/environment-handlers/node/cli/commands/generate/frontend-models.js +67 -11
- package/src/environment-handlers/node.js +15 -6
- package/src/frontend-model-controller.js +34 -110
- package/src/frontend-models/base.js +45 -151
- package/src/frontend-models/clear-pending-debounced-callback.js +1 -3
- package/src/frontend-models/preloader.js +3 -9
- package/src/frontend-models/query.js +11 -33
- package/src/frontend-models/resource-definition.js +2 -6
- package/src/frontend-models/transport-serialization.js +7 -21
- package/src/frontend-models/use-destroyed-event.js +2 -6
- package/src/frontend-models/use-model-class-event.js +2 -6
- package/src/frontend-models/use-updated-event.js +3 -9
- package/src/frontend-models/websocket-channel.js +9 -27
- package/src/frontend-models/websocket-publishers.js +12 -23
- package/src/http-server/client/index.js +6 -18
- package/src/http-server/client/params-to-object.js +6 -18
- package/src/http-server/client/request-buffer/index.js +1 -3
- package/src/http-server/client/request-parser.js +1 -3
- package/src/http-server/client/request-runner.js +4 -12
- package/src/http-server/client/websocket-session.js +6 -18
- package/src/http-server/development-reloader.js +2 -6
- package/src/http-server/remote-address.js +1 -5
- package/src/http-server/server-client.js +3 -9
- package/src/http-server/server-lock.js +2 -6
- package/src/http-server/websocket-channel-subscribers.js +2 -6
- package/src/http-server/websocket-event-log-store.js +5 -15
- package/src/http-server/websocket-events-host.js +1 -3
- package/src/http-server/worker-handler/in-process.js +3 -11
- package/src/http-server/worker-handler/worker-thread.js +1 -3
- package/src/logger.js +2 -6
- package/src/mailer/backends/smtp.js +1 -5
- package/src/mailer/base.js +4 -16
- package/src/plugins/sqljs-wasm-route-controller.js +1 -3
- package/src/routes/basic-route.js +1 -3
- package/src/routes/resolver.js +4 -14
- package/src/testing/expect-utils.js +8 -26
- package/src/testing/expect.js +4 -14
- package/src/testing/test-runner.js +3 -9
- package/src/testing/test.js +4 -12
- package/src/utils/model-scope.js +1 -3
- package/src/utils/ransack.js +15 -41
- package/src/utils/with-tracked-stack-async-hooks.js +3 -9
- package/src/utils/with-tracked-stack.js +2 -6
|
@@ -137,9 +137,7 @@ function isFrontendModelMarker(value) {
|
|
|
137
137
|
export function isBackendModelInstance(value) {
|
|
138
138
|
if (!value || typeof value !== "object") return false
|
|
139
139
|
|
|
140
|
-
const candidate = /**
|
|
141
|
-
* Narrows the runtime value to the documented type.
|
|
142
|
-
* @type {Record<string, ?>} */ (value)
|
|
140
|
+
const candidate = /** @type {Record<string, ?>} */ (value)
|
|
143
141
|
|
|
144
142
|
return (
|
|
145
143
|
typeof candidate.attributes === "function"
|
|
@@ -197,9 +195,7 @@ function serializeFrontendModelTransportValueInternal(value, seenModels) {
|
|
|
197
195
|
* @type {Record<string, ?>} */
|
|
198
196
|
const serializedModel = {
|
|
199
197
|
[TYPE_KEY]: TYPE_FRONTEND_MODEL,
|
|
200
|
-
attributes: /**
|
|
201
|
-
* Narrows the runtime value to the documented type.
|
|
202
|
-
* @type {Record<string, ?>} */ (serializeFrontendModelTransportValueInternal(modelAttributes, seenModels)),
|
|
198
|
+
attributes: /** @type {Record<string, ?>} */ (serializeFrontendModelTransportValueInternal(modelAttributes, seenModels)),
|
|
203
199
|
modelName
|
|
204
200
|
}
|
|
205
201
|
|
|
@@ -259,13 +255,9 @@ function serializeFrontendModelTransportValueInternal(value, seenModels) {
|
|
|
259
255
|
* @returns {?} - Hydrated frontend model or plain object fallback.
|
|
260
256
|
*/
|
|
261
257
|
function deserializeFrontendModelMarker(marker) {
|
|
262
|
-
const attributes = /**
|
|
263
|
-
* Narrows the runtime value to the documented type.
|
|
264
|
-
* @type {Record<string, ?>} */ (deserializeFrontendModelTransportValue(marker.attributes))
|
|
258
|
+
const attributes = /** @type {Record<string, ?>} */ (deserializeFrontendModelTransportValue(marker.attributes))
|
|
265
259
|
const preloadedRelationships = isPlainObject(marker.preloadedRelationships)
|
|
266
|
-
? /**
|
|
267
|
-
* Narrows the runtime value to the documented type.
|
|
268
|
-
* @type {Record<string, ?>} */ (deserializeFrontendModelTransportValue(marker.preloadedRelationships))
|
|
260
|
+
? /** @type {Record<string, ?>} */ (deserializeFrontendModelTransportValue(marker.preloadedRelationships))
|
|
269
261
|
: {}
|
|
270
262
|
const modelClass = resolveFrontendModelClass(marker.modelName)
|
|
271
263
|
|
|
@@ -317,25 +309,19 @@ export function deserializeFrontendModelTransportValue(value) {
|
|
|
317
309
|
}
|
|
318
310
|
|
|
319
311
|
if (isDateMarker(value)) {
|
|
320
|
-
const dateValue = /**
|
|
321
|
-
* Narrows the runtime value to the documented type.
|
|
322
|
-
* @type {{value: string}} */ (value).value
|
|
312
|
+
const dateValue = /** @type {{value: string}} */ (value).value
|
|
323
313
|
|
|
324
314
|
return new Date(dateValue)
|
|
325
315
|
}
|
|
326
316
|
|
|
327
317
|
if (isBigIntMarker(value)) {
|
|
328
|
-
const bigintValue = /**
|
|
329
|
-
* Narrows the runtime value to the documented type.
|
|
330
|
-
* @type {{value: string}} */ (value).value
|
|
318
|
+
const bigintValue = /** @type {{value: string}} */ (value).value
|
|
331
319
|
|
|
332
320
|
return BigInt(bigintValue)
|
|
333
321
|
}
|
|
334
322
|
|
|
335
323
|
if (isNonFiniteNumberMarker(value)) {
|
|
336
|
-
const numberValue = /**
|
|
337
|
-
* Narrows the runtime value to the documented type.
|
|
338
|
-
* @type {{value: string}} */ (value).value
|
|
324
|
+
const numberValue = /** @type {{value: string}} */ (value).value
|
|
339
325
|
|
|
340
326
|
if (numberValue === NUMBER_NAN) return Number.NaN
|
|
341
327
|
if (numberValue === NUMBER_POSITIVE_INFINITY) return Number.POSITIVE_INFINITY
|
|
@@ -92,9 +92,7 @@ function useInstanceDestroyedEvent(modelOrModels, callback, options) {
|
|
|
92
92
|
|
|
93
93
|
const modelsKey = modelsDependencyKey(modelOrModels)
|
|
94
94
|
const eventCallback = useMemo(() => {
|
|
95
|
-
const wrappedCallback = (/**
|
|
96
|
-
* Narrows the runtime value to the documented type.
|
|
97
|
-
* @type {FrontendModelInstanceDestroyEventPayload} */ payload) => {
|
|
95
|
+
const wrappedCallback = (/** @type {FrontendModelInstanceDestroyEventPayload} */ payload) => {
|
|
98
96
|
if (activeRef.current) callbackRef.current(payload)
|
|
99
97
|
}
|
|
100
98
|
|
|
@@ -115,9 +113,7 @@ function useInstanceDestroyedEvent(modelOrModels, callback, options) {
|
|
|
115
113
|
* Unsubscribe callbacks.
|
|
116
114
|
* @type {Array<() => void>} */
|
|
117
115
|
const unsubscribeCallbacks = []
|
|
118
|
-
const subscriptionCallback = (/**
|
|
119
|
-
* Narrows the runtime value to the documented type.
|
|
120
|
-
* @type {FrontendModelInstanceDestroyEventPayload} */ payload) => {
|
|
116
|
+
const subscriptionCallback = (/** @type {FrontendModelInstanceDestroyEventPayload} */ payload) => {
|
|
121
117
|
if (!closed) eventCallback(payload)
|
|
122
118
|
}
|
|
123
119
|
|
|
@@ -111,9 +111,7 @@ export default function useModelClassEvent(modelClass, eventOrEvents, callback,
|
|
|
111
111
|
const eventNames = normalizeEventNames(eventOrEvents)
|
|
112
112
|
const eventsKey = eventNamesDependencyKey(eventNames)
|
|
113
113
|
const eventCallback = useMemo(() => {
|
|
114
|
-
const wrappedCallback = (/**
|
|
115
|
-
* Narrows the runtime value to the documented type.
|
|
116
|
-
* @type {FrontendModelClassEventPayload} */ payload) => {
|
|
114
|
+
const wrappedCallback = (/** @type {FrontendModelClassEventPayload} */ payload) => {
|
|
117
115
|
if (activeRef.current) callbackRef.current(payload)
|
|
118
116
|
}
|
|
119
117
|
|
|
@@ -131,9 +129,7 @@ export default function useModelClassEvent(modelClass, eventOrEvents, callback,
|
|
|
131
129
|
* Unsubscribe callbacks.
|
|
132
130
|
* @type {Array<() => void>} */
|
|
133
131
|
const unsubscribeCallbacks = []
|
|
134
|
-
const subscriptionCallback = (/**
|
|
135
|
-
* Narrows the runtime value to the documented type.
|
|
136
|
-
* @type {FrontendModelClassEventPayload} */ payload) => {
|
|
132
|
+
const subscriptionCallback = (/** @type {FrontendModelClassEventPayload} */ payload) => {
|
|
137
133
|
if (!closed) eventCallback(payload)
|
|
138
134
|
}
|
|
139
135
|
|
|
@@ -70,9 +70,7 @@ export default function useUpdatedEvent(modelClassOrModels, callback, options =
|
|
|
70
70
|
const projectionOptions = {abilities, preload, query, queryData, select, selectsExtra, withCount}
|
|
71
71
|
|
|
72
72
|
useModelClassEvent(classModel, "update", (payload) => {
|
|
73
|
-
callback(/**
|
|
74
|
-
* Narrows the runtime value to the documented type.
|
|
75
|
-
* @type {FrontendModelClassUpdateEventPayload} */ (payload))
|
|
73
|
+
callback(/** @type {FrontendModelClassUpdateEventPayload} */ (payload))
|
|
76
74
|
}, {active: active && Boolean(classModel), debounce, onConnected, ...projectionOptions})
|
|
77
75
|
useInstanceUpdatedEvent(instanceModels, callback, {active: active && !classModel, debounce, onConnected, ...projectionOptions})
|
|
78
76
|
}
|
|
@@ -96,9 +94,7 @@ function useInstanceUpdatedEvent(modelOrModels, callback, options) {
|
|
|
96
94
|
|
|
97
95
|
const modelsKey = modelsDependencyKey(modelOrModels)
|
|
98
96
|
const eventCallback = useMemo(() => {
|
|
99
|
-
const wrappedCallback = (/**
|
|
100
|
-
* Narrows the runtime value to the documented type.
|
|
101
|
-
* @type {FrontendModelInstanceUpdateEventPayload} */ payload) => {
|
|
97
|
+
const wrappedCallback = (/** @type {FrontendModelInstanceUpdateEventPayload} */ payload) => {
|
|
102
98
|
if (activeRef.current) callbackRef.current(payload)
|
|
103
99
|
}
|
|
104
100
|
|
|
@@ -119,9 +115,7 @@ function useInstanceUpdatedEvent(modelOrModels, callback, options) {
|
|
|
119
115
|
* Unsubscribe callbacks.
|
|
120
116
|
* @type {Array<() => void>} */
|
|
121
117
|
const unsubscribeCallbacks = []
|
|
122
|
-
const subscriptionCallback = (/**
|
|
123
|
-
* Narrows the runtime value to the documented type.
|
|
124
|
-
* @type {FrontendModelInstanceUpdateEventPayload} */ payload) => {
|
|
118
|
+
const subscriptionCallback = (/** @type {FrontendModelInstanceUpdateEventPayload} */ payload) => {
|
|
125
119
|
if (!closed) eventCallback(payload)
|
|
126
120
|
}
|
|
127
121
|
|
|
@@ -85,9 +85,7 @@ export default class FrontendModelWebsocketChannel extends VelociousWebsocketCha
|
|
|
85
85
|
|
|
86
86
|
const readRules = ability.rulesFor({action: "read", modelClass: ModelClass})
|
|
87
87
|
|
|
88
|
-
return readRules.some((/**
|
|
89
|
-
* Narrows the runtime value to the documented type.
|
|
90
|
-
* @type {{effect: string}} */ rule) => rule.effect === "allow")
|
|
88
|
+
return readRules.some((/** @type {{effect: string}} */ rule) => rule.effect === "allow")
|
|
91
89
|
}
|
|
92
90
|
|
|
93
91
|
/**
|
|
@@ -168,9 +166,7 @@ export default class FrontendModelWebsocketChannel extends VelociousWebsocketCha
|
|
|
168
166
|
|
|
169
167
|
deliverBody = {
|
|
170
168
|
...deliverBody,
|
|
171
|
-
record: /**
|
|
172
|
-
* Narrows the runtime value to the documented type.
|
|
173
|
-
* @type {import("./query.js").FrontendModelTransportValue} */ (serializeFrontendModelTransportValue(projectedRecord))
|
|
169
|
+
record: /** @type {import("./query.js").FrontendModelTransportValue} */ (serializeFrontendModelTransportValue(projectedRecord))
|
|
174
170
|
}
|
|
175
171
|
}
|
|
176
172
|
|
|
@@ -276,9 +272,7 @@ export default class FrontendModelWebsocketChannel extends VelociousWebsocketCha
|
|
|
276
272
|
throw new Error("Frontend model eventFilters entries must be objects")
|
|
277
273
|
}
|
|
278
274
|
|
|
279
|
-
const eventFilter = /**
|
|
280
|
-
* Narrows the runtime value to the documented type.
|
|
281
|
-
* @type {Record<string, ?>} */ (entry)
|
|
275
|
+
const eventFilter = /** @type {Record<string, ?>} */ (entry)
|
|
282
276
|
const unknownKeys = Object.keys(eventFilter).filter((key) => !EVENT_FILTER_KEYS.has(key))
|
|
283
277
|
|
|
284
278
|
if (unknownKeys.length > 0) {
|
|
@@ -295,21 +289,15 @@ export default class FrontendModelWebsocketChannel extends VelociousWebsocketCha
|
|
|
295
289
|
const sanitizedEventFilter = {key: eventFilter.key}
|
|
296
290
|
|
|
297
291
|
if (eventFilter.joins !== undefined) {
|
|
298
|
-
sanitizedEventFilter.joins = /**
|
|
299
|
-
* Narrows the runtime value to the documented type.
|
|
300
|
-
* @type {Record<string, import("./query.js").FrontendModelTransportValue>} */ (eventFilter.joins)
|
|
292
|
+
sanitizedEventFilter.joins = /** @type {Record<string, import("./query.js").FrontendModelTransportValue>} */ (eventFilter.joins)
|
|
301
293
|
}
|
|
302
294
|
|
|
303
295
|
if (eventFilter.searches !== undefined) {
|
|
304
|
-
sanitizedEventFilter.searches = /**
|
|
305
|
-
* Narrows the runtime value to the documented type.
|
|
306
|
-
* @type {import("./query.js").FrontendModelSearch[]} */ (eventFilter.searches)
|
|
296
|
+
sanitizedEventFilter.searches = /** @type {import("./query.js").FrontendModelSearch[]} */ (eventFilter.searches)
|
|
307
297
|
}
|
|
308
298
|
|
|
309
299
|
if (eventFilter.where !== undefined) {
|
|
310
|
-
sanitizedEventFilter.where = /**
|
|
311
|
-
* Narrows the runtime value to the documented type.
|
|
312
|
-
* @type {Record<string, import("./query.js").FrontendModelTransportValue>} */ (eventFilter.where)
|
|
300
|
+
sanitizedEventFilter.where = /** @type {Record<string, import("./query.js").FrontendModelTransportValue>} */ (eventFilter.where)
|
|
313
301
|
}
|
|
314
302
|
|
|
315
303
|
return sanitizedEventFilter
|
|
@@ -352,9 +340,7 @@ export default class FrontendModelWebsocketChannel extends VelociousWebsocketCha
|
|
|
352
340
|
...params,
|
|
353
341
|
withCount: this.params.withCount
|
|
354
342
|
},
|
|
355
|
-
request: /**
|
|
356
|
-
* Narrows the runtime value to the documented type.
|
|
357
|
-
* @type {import("../http-server/client/request.js").default} */ (this._syntheticRequest()),
|
|
343
|
+
request: /** @type {import("../http-server/client/request.js").default} */ (this._syntheticRequest()),
|
|
358
344
|
response: new Response({configuration}),
|
|
359
345
|
viewPath: "/"
|
|
360
346
|
})
|
|
@@ -518,9 +504,7 @@ export default class FrontendModelWebsocketChannel extends VelociousWebsocketCha
|
|
|
518
504
|
|
|
519
505
|
spec[entry.attributeName] = {
|
|
520
506
|
relationship: entry.relationshipName,
|
|
521
|
-
where: entry.where ? /**
|
|
522
|
-
* Narrows the runtime value to the documented type.
|
|
523
|
-
* @type {Record<string, import("./query.js").FrontendModelTransportValue>} */ (entry.where) : undefined
|
|
507
|
+
where: entry.where ? /** @type {Record<string, import("./query.js").FrontendModelTransportValue>} */ (entry.where) : undefined
|
|
524
508
|
}
|
|
525
509
|
query.withCount(spec)
|
|
526
510
|
}
|
|
@@ -558,9 +542,7 @@ export default class FrontendModelWebsocketChannel extends VelociousWebsocketCha
|
|
|
558
542
|
* @returns {FrontendModelWebsocketSyntheticRequest} Request-like object for ability resolution.
|
|
559
543
|
*/
|
|
560
544
|
_syntheticRequest() {
|
|
561
|
-
const upgradeRequest = /**
|
|
562
|
-
* Narrows the runtime value to the documented type.
|
|
563
|
-
* @type {FrontendModelWebsocketUpgradeRequest} */ (this.session.upgradeRequest)
|
|
545
|
+
const upgradeRequest = /** @type {FrontendModelWebsocketUpgradeRequest} */ (this.session.upgradeRequest)
|
|
564
546
|
const rawHeaders = typeof upgradeRequest?.headers === "function" ? upgradeRequest.headers() : {}
|
|
565
547
|
const metadata = typeof this.session.getMetadata === "function" ? this.session.getMetadata() : {}
|
|
566
548
|
const remoteAddress = typeof upgradeRequest?.remoteAddress === "function" ? upgradeRequest.remoteAddress() : undefined
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
import AuthorizationBaseResource from "../authorization/base-resource.js"
|
|
4
4
|
import {frontendModelResourcesWithBuiltInsForBackendProject} from "./built-in-resources.js"
|
|
5
|
-
import {frontendModelResourceDefinitionIsClass
|
|
5
|
+
import {frontendModelResourceDefinitionIsClass} from "./resource-definition.js"
|
|
6
6
|
import {serializeFrontendModelTransportValue} from "./transport-serialization.js"
|
|
7
7
|
|
|
8
8
|
const modelClassesWithRegisteredHooks = new WeakSet()
|
|
@@ -72,27 +72,22 @@ export async function ensureFrontendModelWebsocketPublishersRegistered(configura
|
|
|
72
72
|
* All frontend models.
|
|
73
73
|
* @type {Record<string, import("../configuration-types.js").FrontendModelResourceClassType>} */
|
|
74
74
|
let allFrontendModels = {}
|
|
75
|
-
/**
|
|
76
|
-
* Configured frontend models.
|
|
77
|
-
* @type {Record<string, import("../configuration-types.js").FrontendModelResourceClassType>} */
|
|
78
|
-
let configuredFrontendModels = {}
|
|
79
75
|
|
|
80
76
|
for (const backendProject of configuration.getBackendProjects()) {
|
|
81
|
-
const configuredProjectResources = frontendModelResourcesForBackendProject(backendProject)
|
|
82
77
|
const projectResources = frontendModelResourcesWithBuiltInsForBackendProject(backendProject)
|
|
83
78
|
|
|
84
|
-
configuredFrontendModels = {...configuredFrontendModels, ...configuredProjectResources}
|
|
85
79
|
allFrontendModels = {...allFrontendModels, ...projectResources}
|
|
86
80
|
}
|
|
87
81
|
|
|
88
|
-
//
|
|
89
|
-
|
|
90
|
-
|
|
82
|
+
// Always merge the ability resolver's resource list too. A project can expose some
|
|
83
|
+
// resources as discoverable `src/resources/*.js` files (configured or auto-discovered)
|
|
84
|
+
// and others only through `getAbilityResources()`; both sets need lifecycle publishers,
|
|
85
|
+
// so resource discovery must not suppress this list.
|
|
86
|
+
const abilityResources = configuration.getAbilityResources()
|
|
91
87
|
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
}
|
|
88
|
+
allFrontendModels = {
|
|
89
|
+
...allFrontendModels,
|
|
90
|
+
...frontendModelResourcesFromAbilityResourcesList(abilityResources)
|
|
96
91
|
}
|
|
97
92
|
|
|
98
93
|
// Phase 3: register the V2 channel class once per configuration so
|
|
@@ -126,21 +121,15 @@ export async function ensureFrontendModelWebsocketPublishersRegistered(configura
|
|
|
126
121
|
modelClassesWithRegisteredHooks.add(modelClass)
|
|
127
122
|
|
|
128
123
|
modelClass.beforeCreate((model) => {
|
|
129
|
-
/**
|
|
130
|
-
* Narrows the runtime value to the documented type.
|
|
131
|
-
* @type {import("../database/record/index.js").default & {__frontendModelWebsocketAction?: "create" | "update"}} */ (model).__frontendModelWebsocketAction = "create"
|
|
124
|
+
/** @type {import("../database/record/index.js").default & {__frontendModelWebsocketAction?: "create" | "update"}} */ (model).__frontendModelWebsocketAction = "create"
|
|
132
125
|
})
|
|
133
126
|
|
|
134
127
|
modelClass.beforeUpdate((model) => {
|
|
135
|
-
/**
|
|
136
|
-
* Narrows the runtime value to the documented type.
|
|
137
|
-
* @type {import("../database/record/index.js").default & {__frontendModelWebsocketAction?: "create" | "update"}} */ (model).__frontendModelWebsocketAction = "update"
|
|
128
|
+
/** @type {import("../database/record/index.js").default & {__frontendModelWebsocketAction?: "create" | "update"}} */ (model).__frontendModelWebsocketAction = "update"
|
|
138
129
|
})
|
|
139
130
|
|
|
140
131
|
modelClass.afterSave((model) => {
|
|
141
|
-
const modelWithWebsocketAction = /**
|
|
142
|
-
* Narrows the runtime value to the documented type.
|
|
143
|
-
* @type {import("../database/record/index.js").default & {__frontendModelWebsocketAction?: "create" | "update"}} */ (model)
|
|
132
|
+
const modelWithWebsocketAction = /** @type {import("../database/record/index.js").default & {__frontendModelWebsocketAction?: "create" | "update"}} */ (model)
|
|
144
133
|
const action = modelWithWebsocketAction.__frontendModelWebsocketAction
|
|
145
134
|
|
|
146
135
|
if (action !== "create" && action !== "update") return
|
|
@@ -108,14 +108,10 @@ export default class VeoliciousHttpServerClient {
|
|
|
108
108
|
* @returns {void} - No return value.
|
|
109
109
|
*/
|
|
110
110
|
handleBadRequest(error) {
|
|
111
|
-
this.logger.warn(() => ["Failed to parse HTTP request", badRequestDetails(/**
|
|
112
|
-
* Narrows the runtime value to the documented type.
|
|
113
|
-
* @type {Error & {velociousContext?: Record<string, ?>}} */ (error))])
|
|
111
|
+
this.logger.warn(() => ["Failed to parse HTTP request", badRequestDetails(/** @type {Error & {velociousContext?: Record<string, ?>}} */ (error))])
|
|
114
112
|
|
|
115
113
|
if (this.currentRequest && "getRequestParser" in this.currentRequest) {
|
|
116
|
-
const httpRequest = /**
|
|
117
|
-
* Narrows the runtime value to the documented type.
|
|
118
|
-
* @type {import("./request.js").default} */ (this.currentRequest)
|
|
114
|
+
const httpRequest = /** @type {import("./request.js").default} */ (this.currentRequest)
|
|
119
115
|
|
|
120
116
|
httpRequest.getRequestParser().destroy()
|
|
121
117
|
}
|
|
@@ -279,18 +275,12 @@ export default class VeoliciousHttpServerClient {
|
|
|
279
275
|
request: this.currentRequest
|
|
280
276
|
})
|
|
281
277
|
|
|
282
|
-
const resolvedThenable = /**
|
|
283
|
-
* Narrows the runtime value to the documented type.
|
|
284
|
-
* @type {{then?: (...args: Array<?>) => ?}} */ (resolvedHandler)
|
|
278
|
+
const resolvedThenable = /** @type {{then?: (...args: Array<?>) => ?}} */ (resolvedHandler)
|
|
285
279
|
|
|
286
280
|
if (resolvedThenable?.then) {
|
|
287
|
-
messageHandlerPromise = /**
|
|
288
|
-
* Narrows the runtime value to the documented type.
|
|
289
|
-
* @type {Promise<import("../../configuration-types.js").WebsocketMessageHandler | void>} */ (resolvedHandler)
|
|
281
|
+
messageHandlerPromise = /** @type {Promise<import("../../configuration-types.js").WebsocketMessageHandler | void>} */ (resolvedHandler)
|
|
290
282
|
} else if (resolvedHandler) {
|
|
291
|
-
messageHandler = /**
|
|
292
|
-
* Narrows the runtime value to the documented type.
|
|
293
|
-
* @type {import("../../configuration-types.js").WebsocketMessageHandler} */ (resolvedHandler)
|
|
283
|
+
messageHandler = /** @type {import("../../configuration-types.js").WebsocketMessageHandler} */ (resolvedHandler)
|
|
294
284
|
}
|
|
295
285
|
}
|
|
296
286
|
|
|
@@ -443,9 +433,7 @@ export default class VeoliciousHttpServerClient {
|
|
|
443
433
|
await requestRunner.logCompletedRequest()
|
|
444
434
|
|
|
445
435
|
if ("getRequestParser" in request) {
|
|
446
|
-
const httpRequest = /**
|
|
447
|
-
* Narrows the runtime value to the documented type.
|
|
448
|
-
* @type {import("./request.js").default} */ (request)
|
|
436
|
+
const httpRequest = /** @type {import("./request.js").default} */ (request)
|
|
449
437
|
httpRequest.getRequestParser().destroy()
|
|
450
438
|
}
|
|
451
439
|
}
|
|
@@ -72,14 +72,10 @@ export default class ParamsToObject {
|
|
|
72
72
|
* Defines newResult.
|
|
73
73
|
* @type {Array<?> | Record<string, ?>} */
|
|
74
74
|
let newResult
|
|
75
|
-
const objectResult = /**
|
|
76
|
-
* Narrows the runtime value to the documented type.
|
|
77
|
-
* @type {Record<string, ?>} */ (result)
|
|
75
|
+
const objectResult = /** @type {Record<string, ?>} */ (result)
|
|
78
76
|
|
|
79
77
|
if (inputName in objectResult) {
|
|
80
|
-
newResult = /**
|
|
81
|
-
* Narrows the runtime value to the documented type.
|
|
82
|
-
* @type {Array<?> | Record<string, ?>} */ (objectResult[inputName])
|
|
78
|
+
newResult = /** @type {Array<?> | Record<string, ?>} */ (objectResult[inputName])
|
|
83
79
|
} else if (rest == "[]") {
|
|
84
80
|
newResult = []
|
|
85
81
|
objectResult[inputName] = newResult
|
|
@@ -90,9 +86,7 @@ export default class ParamsToObject {
|
|
|
90
86
|
|
|
91
87
|
this.treatSecond(value, rest, newResult, key)
|
|
92
88
|
} else {
|
|
93
|
-
const objectResult = /**
|
|
94
|
-
* Narrows the runtime value to the documented type.
|
|
95
|
-
* @type {Record<string, ?>} */ (result)
|
|
89
|
+
const objectResult = /** @type {Record<string, ?>} */ (result)
|
|
96
90
|
|
|
97
91
|
objectResult[key] = value
|
|
98
92
|
}
|
|
@@ -126,18 +120,12 @@ export default class ParamsToObject {
|
|
|
126
120
|
|
|
127
121
|
result.push(value)
|
|
128
122
|
} else if (newRest == "") {
|
|
129
|
-
/**
|
|
130
|
-
* Narrows the runtime value to the documented type.
|
|
131
|
-
* @type {Record<string, ?>} */ (result)[key] = value
|
|
123
|
+
/** @type {Record<string, ?>} */ (result)[key] = value
|
|
132
124
|
} else {
|
|
133
|
-
const objectResult = /**
|
|
134
|
-
* Narrows the runtime value to the documented type.
|
|
135
|
-
* @type {Record<string, ?>} */ (result)
|
|
125
|
+
const objectResult = /** @type {Record<string, ?>} */ (result)
|
|
136
126
|
|
|
137
127
|
if (!Array.isArray(result) && key in objectResult) {
|
|
138
|
-
newResult = /**
|
|
139
|
-
* Narrows the runtime value to the documented type.
|
|
140
|
-
* @type {Array<?> | Record<string, ?>} */ (objectResult[key])
|
|
128
|
+
newResult = /** @type {Array<?> | Record<string, ?>} */ (objectResult[key])
|
|
141
129
|
} else if (newRest == "[]") {
|
|
142
130
|
newResult = []
|
|
143
131
|
objectResult[key] = newResult
|
|
@@ -512,9 +512,7 @@ export default class RequestBuffer {
|
|
|
512
512
|
|
|
513
513
|
incorporate(this.params, newParams)
|
|
514
514
|
} catch (error) {
|
|
515
|
-
const ensuredError = /**
|
|
516
|
-
* Narrows the runtime value to the documented type.
|
|
517
|
-
* @type {Error & {velociousContext?: Record<string, ?>}} */ (error)
|
|
515
|
+
const ensuredError = /** @type {Error & {velociousContext?: Record<string, ?>}} */ (error)
|
|
518
516
|
|
|
519
517
|
ensuredError.velociousContext = {
|
|
520
518
|
...(ensuredError.velociousContext || {}),
|
|
@@ -60,9 +60,7 @@ export default class VelociousHttpServerClientRequestParser {
|
|
|
60
60
|
|
|
61
61
|
incorporate(this.params, newParams)
|
|
62
62
|
} catch (error) {
|
|
63
|
-
const ensuredError = /**
|
|
64
|
-
* Narrows the runtime value to the documented type.
|
|
65
|
-
* @type {Error & {velociousContext?: Record<string, ?>}} */ (error)
|
|
63
|
+
const ensuredError = /** @type {Error & {velociousContext?: Record<string, ?>}} */ (error)
|
|
66
64
|
|
|
67
65
|
ensuredError.velociousContext = {
|
|
68
66
|
...(ensuredError.velociousContext || {}),
|
|
@@ -30,12 +30,8 @@ function requestErrorSummary(error, cleanedStackWithHeader) {
|
|
|
30
30
|
|
|
31
31
|
if (stackHeader && !stackFrameLine(stackHeader)) return stackHeader
|
|
32
32
|
|
|
33
|
-
const errorCode = typeof /**
|
|
34
|
-
|
|
35
|
-
* @type {?} */ (error).code === "string"
|
|
36
|
-
? /**
|
|
37
|
-
* Narrows the runtime value to the documented type.
|
|
38
|
-
* @type {?} */ (error).code
|
|
33
|
+
const errorCode = typeof /** @type {?} */ (error).code === "string"
|
|
34
|
+
? /** @type {?} */ (error).code
|
|
39
35
|
: undefined
|
|
40
36
|
const errorMessage = error.message || String(error)
|
|
41
37
|
|
|
@@ -190,9 +186,7 @@ export default class VelociousHttpServerClientRequestRunner {
|
|
|
190
186
|
let timeoutReject
|
|
191
187
|
let timedOut = false
|
|
192
188
|
|
|
193
|
-
const setRequestTimeoutSeconds = (/**
|
|
194
|
-
* Narrows the runtime value to the documented type.
|
|
195
|
-
* @type {number | undefined} */ timeoutSeconds) => {
|
|
189
|
+
const setRequestTimeoutSeconds = (/** @type {number | undefined} */ timeoutSeconds) => {
|
|
196
190
|
if (timeoutId) {
|
|
197
191
|
clearTimeout(timeoutId)
|
|
198
192
|
timeoutId = undefined
|
|
@@ -255,9 +249,7 @@ export default class VelociousHttpServerClientRequestRunner {
|
|
|
255
249
|
}
|
|
256
250
|
} catch (e) {
|
|
257
251
|
const error = ensureError(e)
|
|
258
|
-
const errorWithContext = /**
|
|
259
|
-
* Narrows the runtime value to the documented type.
|
|
260
|
-
* @type {{velociousContext?: object}} */ (error)
|
|
252
|
+
const errorWithContext = /** @type {{velociousContext?: object}} */ (error)
|
|
261
253
|
const errorContext = errorWithContext.velociousContext || {stage: "request-runner"}
|
|
262
254
|
const logDetails = requestErrorLogDetails(error)
|
|
263
255
|
|
|
@@ -38,9 +38,7 @@ const WEBSOCKET_MAX_FRAGMENTED_MESSAGE_FRAGMENTS = 1024
|
|
|
38
38
|
*/
|
|
39
39
|
function subscribeMessage(message) {
|
|
40
40
|
return message.type === "subscribe"
|
|
41
|
-
? /**
|
|
42
|
-
* Narrows the runtime value to the documented type.
|
|
43
|
-
* @type {{type: "subscribe", channel: string, lastEventId?: string, params?: Record<string, ?>}} */ (message)
|
|
41
|
+
? /** @type {{type: "subscribe", channel: string, lastEventId?: string, params?: Record<string, ?>}} */ (message)
|
|
44
42
|
: null
|
|
45
43
|
}
|
|
46
44
|
|
|
@@ -462,9 +460,7 @@ export default class VelociousHttpServerClientWebsocketSession {
|
|
|
462
460
|
}
|
|
463
461
|
|
|
464
462
|
if (message.type === "metadata") {
|
|
465
|
-
const metadataPayload = /**
|
|
466
|
-
* Narrows the runtime value to the documented type.
|
|
467
|
-
* @type {{data?: Record<string, ?>}} */ (message)
|
|
463
|
+
const metadataPayload = /** @type {{data?: Record<string, ?>}} */ (message)
|
|
468
464
|
|
|
469
465
|
this._metadata = metadataPayload.data && typeof metadataPayload.data === "object" ? {...metadataPayload.data} : {}
|
|
470
466
|
|
|
@@ -1147,9 +1143,7 @@ export default class VelociousHttpServerClientWebsocketSession {
|
|
|
1147
1143
|
this.sendJson({type: "connection-opened", connectionId})
|
|
1148
1144
|
} catch (error) {
|
|
1149
1145
|
this.logger.error(() => [`Failed to open connection ${connectionType}:${connectionId}`, error])
|
|
1150
|
-
this.sendJson({type: "connection-error", connectionId, message: /**
|
|
1151
|
-
* Narrows the runtime value to the documented type.
|
|
1152
|
-
* @type {Error} */ (error).message || "Failed to open connection"})
|
|
1146
|
+
this.sendJson({type: "connection-error", connectionId, message: /** @type {Error} */ (error).message || "Failed to open connection"})
|
|
1153
1147
|
}
|
|
1154
1148
|
}
|
|
1155
1149
|
|
|
@@ -1173,9 +1167,7 @@ export default class VelociousHttpServerClientWebsocketSession {
|
|
|
1173
1167
|
})
|
|
1174
1168
|
} catch (error) {
|
|
1175
1169
|
this.logger.error(() => [`Failed to handle connection-message for ${connectionId}`, error])
|
|
1176
|
-
this.sendJson({type: "connection-error", connectionId, message: /**
|
|
1177
|
-
* Narrows the runtime value to the documented type.
|
|
1178
|
-
* @type {Error} */ (error).message || "Failed to handle message"})
|
|
1170
|
+
this.sendJson({type: "connection-error", connectionId, message: /** @type {Error} */ (error).message || "Failed to handle message"})
|
|
1179
1171
|
}
|
|
1180
1172
|
}
|
|
1181
1173
|
|
|
@@ -1286,9 +1278,7 @@ export default class VelociousHttpServerClientWebsocketSession {
|
|
|
1286
1278
|
this._channelSubscriptions.delete(subscriptionId)
|
|
1287
1279
|
this.configuration._unregisterWebsocketChannelSubscription(channelType, subscription)
|
|
1288
1280
|
this.logger.error(() => [`Failed to subscribe channel ${channelType}:${subscriptionId}`, error])
|
|
1289
|
-
this.sendJson({type: "channel-error", subscriptionId, message: /**
|
|
1290
|
-
* Narrows the runtime value to the documented type.
|
|
1291
|
-
* @type {Error} */ (error).message || "Failed to subscribe"})
|
|
1281
|
+
this.sendJson({type: "channel-error", subscriptionId, message: /** @type {Error} */ (error).message || "Failed to subscribe"})
|
|
1292
1282
|
}
|
|
1293
1283
|
}
|
|
1294
1284
|
|
|
@@ -1331,9 +1321,7 @@ export default class VelociousHttpServerClientWebsocketSession {
|
|
|
1331
1321
|
for (const event of events) {
|
|
1332
1322
|
if (subscription.isClosed()) break
|
|
1333
1323
|
|
|
1334
|
-
subscription.sendMessage(/**
|
|
1335
|
-
* Narrows the runtime value to the documented type.
|
|
1336
|
-
* @type {import("../websocket-channel.js").WebsocketJsonValue} */ (event.payload))
|
|
1324
|
+
subscription.sendMessage(/** @type {import("../websocket-channel.js").WebsocketJsonValue} */ (event.payload))
|
|
1337
1325
|
}
|
|
1338
1326
|
}
|
|
1339
1327
|
|
|
@@ -96,9 +96,7 @@ export default class VelociousHttpServerDevelopmentReloader {
|
|
|
96
96
|
try {
|
|
97
97
|
entries = await this.readdir(resolvedDirectoryPath, {withFileTypes: true})
|
|
98
98
|
} catch (error) {
|
|
99
|
-
if (/**
|
|
100
|
-
* Narrows the runtime value to the documented type.
|
|
101
|
-
* @type {{code?: string}} */ (error)?.code === "ENOENT") return
|
|
99
|
+
if (/** @type {{code?: string}} */ (error)?.code === "ENOENT") return
|
|
102
100
|
throw error
|
|
103
101
|
}
|
|
104
102
|
|
|
@@ -170,9 +168,7 @@ export default class VelociousHttpServerDevelopmentReloader {
|
|
|
170
168
|
await this.watchDirectoryRecursive(changedPath)
|
|
171
169
|
}
|
|
172
170
|
} catch (error) {
|
|
173
|
-
if (/**
|
|
174
|
-
* Narrows the runtime value to the documented type.
|
|
175
|
-
* @type {{code?: string}} */ (error)?.code !== "ENOENT") {
|
|
171
|
+
if (/** @type {{code?: string}} */ (error)?.code !== "ENOENT") {
|
|
176
172
|
throw error
|
|
177
173
|
}
|
|
178
174
|
}
|
|
@@ -63,11 +63,7 @@ export default function resolveRemoteAddress({configuration, headers, socketRemo
|
|
|
63
63
|
|
|
64
64
|
if (!trust) return socketRemoteAddress
|
|
65
65
|
|
|
66
|
-
const proxyRequest = /**
|
|
67
|
-
* Narrows the runtime value to the documented type.
|
|
68
|
-
* @type {Parameters<typeof proxyaddr>[0]} */ (/**
|
|
69
|
-
* Narrows the runtime value to the documented type.
|
|
70
|
-
* @type {?} */ ({
|
|
66
|
+
const proxyRequest = /** @type {Parameters<typeof proxyaddr>[0]} */ (/** @type {?} */ ({
|
|
71
67
|
connection: {remoteAddress: socketRemoteAddress},
|
|
72
68
|
headers: nodeStyleHeaders(headers),
|
|
73
69
|
socket: {remoteAddress: socketRemoteAddress}
|
|
@@ -142,9 +142,7 @@ export default class ServerClient {
|
|
|
142
142
|
* @returns {void} - No return value.
|
|
143
143
|
*/
|
|
144
144
|
onSocketError = (error) => {
|
|
145
|
-
const errorCode = /**
|
|
146
|
-
* Narrows the runtime value to the documented type.
|
|
147
|
-
* @type {{code?: string}} */ (error).code
|
|
145
|
+
const errorCode = /** @type {{code?: string}} */ (error).code
|
|
148
146
|
|
|
149
147
|
this.logger.error(() => [`Socket ${this.clientCount} error`, errorCode || error.message])
|
|
150
148
|
this.emitClose()
|
|
@@ -188,12 +186,8 @@ export default class ServerClient {
|
|
|
188
186
|
this.socket.off("error", onWriteError)
|
|
189
187
|
resolve()
|
|
190
188
|
}
|
|
191
|
-
const onWriteError = (/**
|
|
192
|
-
|
|
193
|
-
* @type {Error} */ error) => {
|
|
194
|
-
const errorCode = /**
|
|
195
|
-
* Narrows the runtime value to the documented type.
|
|
196
|
-
* @type {{code?: string}} */ (error).code
|
|
189
|
+
const onWriteError = (/** @type {Error} */ error) => {
|
|
190
|
+
const errorCode = /** @type {{code?: string}} */ (error).code
|
|
197
191
|
|
|
198
192
|
this.logger.error(() => [`Socket ${this.clientCount} write error`, errorCode || error.message])
|
|
199
193
|
finish()
|
|
@@ -54,9 +54,7 @@ export default class VelociousHttpServerLock {
|
|
|
54
54
|
try {
|
|
55
55
|
await fs.mkdir(this.lockPath)
|
|
56
56
|
} catch (error) {
|
|
57
|
-
if (/**
|
|
58
|
-
* Narrows the runtime value to the documented type.
|
|
59
|
-
* @type {{code?: string}} */ (error).code === "EEXIST") return false
|
|
57
|
+
if (/** @type {{code?: string}} */ (error).code === "EEXIST") return false
|
|
60
58
|
throw error
|
|
61
59
|
}
|
|
62
60
|
|
|
@@ -105,9 +103,7 @@ export default class VelociousHttpServerLock {
|
|
|
105
103
|
|
|
106
104
|
if (!this.isLocalProcessOwner(owner)) return false
|
|
107
105
|
|
|
108
|
-
return this.processIsDead(/**
|
|
109
|
-
* Narrows the runtime value to the documented type.
|
|
110
|
-
* @type {{pid: number}} */ (owner).pid)
|
|
106
|
+
return this.processIsDead(/** @type {{pid: number}} */ (owner).pid)
|
|
111
107
|
}
|
|
112
108
|
|
|
113
109
|
/**
|
|
@@ -92,12 +92,8 @@ export default class VelociousWebsocketChannelSubscribers {
|
|
|
92
92
|
try {
|
|
93
93
|
const result = callback(payload, meta)
|
|
94
94
|
|
|
95
|
-
if (result && typeof (/**
|
|
96
|
-
|
|
97
|
-
* @type {Promise<void>} */ (result)).then === "function") {
|
|
98
|
-
tasks.push(/**
|
|
99
|
-
* Narrows the runtime value to the documented type.
|
|
100
|
-
* @type {Promise<void>} */ (result))
|
|
95
|
+
if (result && typeof (/** @type {Promise<void>} */ (result)).then === "function") {
|
|
96
|
+
tasks.push(/** @type {Promise<void>} */ (result))
|
|
101
97
|
}
|
|
102
98
|
} catch (error) {
|
|
103
99
|
// Don't let one subscriber's failure abort the others; surface via the returned promises instead.
|