@velajs/vela 1.18.0 → 1.19.1
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/CHANGELOG.md +78 -14
- package/dist/configurable-module.builder-5FGMaXG6.js +91 -0
- package/dist/configurable-module.builder-5FGMaXG6.js.map +1 -0
- package/dist/container-BqUHID4l.js +645 -0
- package/dist/container-BqUHID4l.js.map +1 -0
- package/dist/cron-matcher-C9qv5OUA.js +113 -0
- package/dist/cron-matcher-C9qv5OUA.js.map +1 -0
- package/dist/decorate-GcSMAbKn.js +528 -0
- package/dist/decorate-GcSMAbKn.js.map +1 -0
- package/dist/decorators-C8YBFCIk.js +53 -0
- package/dist/decorators-C8YBFCIk.js.map +1 -0
- package/dist/define-module-NOyOZNXD.js +235 -0
- package/dist/define-module-NOyOZNXD.js.map +1 -0
- package/dist/discovery.service-BYm95SSD.js +368 -0
- package/dist/discovery.service-BYm95SSD.js.map +1 -0
- package/dist/discovery.service-Cpf1QcZ5.d.ts +648 -0
- package/dist/i18n/index.d.ts +138 -10
- package/dist/i18n/index.js +270 -8
- package/dist/i18n/index.js.map +1 -0
- package/dist/index-D72EQfcC.d.ts +430 -0
- package/dist/index-DhShDLCM.d.ts +2310 -0
- package/dist/index.d.ts +6 -66
- package/dist/index.js +14 -71
- package/dist/internal.d.ts +13 -17
- package/dist/internal.js +6 -19
- package/dist/live/index.d.ts +2 -12
- package/dist/live/index.js +826 -16
- package/dist/live/index.js.map +1 -0
- package/dist/metadata.registry-D1od8ZBt.d.ts +842 -0
- package/dist/plugin-ByBlVOve.js +1387 -0
- package/dist/plugin-ByBlVOve.js.map +1 -0
- package/dist/queue/index.d.ts +247 -10
- package/dist/queue/index.js +384 -12
- package/dist/queue/index.js.map +1 -0
- package/dist/request-context-C3nCGJNd.js +26 -0
- package/dist/request-context-C3nCGJNd.js.map +1 -0
- package/dist/route.manager-DRAZ5X04.js +991 -0
- package/dist/route.manager-DRAZ5X04.js.map +1 -0
- package/dist/schedule-node/index.d.ts +32 -3
- package/dist/schedule-node/index.js +97 -3
- package/dist/schedule-node/index.js.map +1 -0
- package/dist/schedule.registry-DVm7Jp5w.d.ts +55 -0
- package/dist/seeder/index.d.ts +75 -5
- package/dist/seeder/index.js +105 -4
- package/dist/seeder/index.js.map +1 -0
- package/dist/signed-url-CMmi0SIb.js +56 -0
- package/dist/signed-url-CMmi0SIb.js.map +1 -0
- package/dist/signed-url-DKhgja4U.d.ts +16 -0
- package/dist/src-eb5CI6Xn.js +2151 -0
- package/dist/src-eb5CI6Xn.js.map +1 -0
- package/dist/storage/index.d.ts +57 -4
- package/dist/storage/index.js +22 -5
- package/dist/storage/index.js.map +1 -0
- package/dist/streaming/index.d.ts +2 -2
- package/dist/streaming/index.js +2 -1
- package/dist/websocket/index.d.ts +3 -12
- package/dist/websocket/index.js +2 -16
- package/dist/websocket-DXmB-MWJ.js +697 -0
- package/dist/websocket-DXmB-MWJ.js.map +1 -0
- package/dist/websocket-node/index.d.ts +108 -6
- package/dist/websocket-node/index.js +228 -6
- package/dist/websocket-node/index.js.map +1 -0
- package/package.json +67 -53
- package/dist/__tests__/workers/entry.d.ts +0 -9
- package/dist/__tests__/workers-als/entry-als.d.ts +0 -9
- package/dist/application.d.ts +0 -91
- package/dist/application.js +0 -308
- package/dist/cache/cache.decorators.d.ts +0 -2
- package/dist/cache/cache.decorators.js +0 -4
- package/dist/cache/cache.interceptor.d.ts +0 -9
- package/dist/cache/cache.interceptor.js +0 -60
- package/dist/cache/cache.module.d.ts +0 -7
- package/dist/cache/cache.module.js +0 -58
- package/dist/cache/cache.service.d.ts +0 -9
- package/dist/cache/cache.service.js +0 -42
- package/dist/cache/cache.store.d.ts +0 -12
- package/dist/cache/cache.store.js +0 -51
- package/dist/cache/cache.tokens.d.ts +0 -6
- package/dist/cache/cache.tokens.js +0 -5
- package/dist/cache/cache.types.d.ts +0 -41
- package/dist/cache/cache.types.js +0 -1
- package/dist/cache/index.d.ts +0 -8
- package/dist/cache/index.js +0 -7
- package/dist/cache/tiered-cache.store.d.ts +0 -19
- package/dist/cache/tiered-cache.store.js +0 -40
- package/dist/config/config.module.d.ts +0 -19
- package/dist/config/config.module.js +0 -98
- package/dist/config/config.service.d.ts +0 -20
- package/dist/config/config.service.js +0 -43
- package/dist/config/config.store.d.ts +0 -46
- package/dist/config/config.store.js +0 -119
- package/dist/config/config.tokens.d.ts +0 -13
- package/dist/config/config.tokens.js +0 -14
- package/dist/config/config.types.d.ts +0 -41
- package/dist/config/config.types.js +0 -4
- package/dist/config/index.d.ts +0 -7
- package/dist/config/index.js +0 -5
- package/dist/config/register-as.d.ts +0 -52
- package/dist/config/register-as.js +0 -39
- package/dist/constants.d.ts +0 -44
- package/dist/constants.js +0 -46
- package/dist/container/container.d.ts +0 -154
- package/dist/container/container.js +0 -849
- package/dist/container/decorators.d.ts +0 -17
- package/dist/container/decorators.js +0 -57
- package/dist/container/disposable.d.ts +0 -5
- package/dist/container/disposable.js +0 -33
- package/dist/container/index.d.ts +0 -6
- package/dist/container/index.js +0 -5
- package/dist/container/mixin.d.ts +0 -24
- package/dist/container/mixin.js +0 -26
- package/dist/container/module-ref.d.ts +0 -21
- package/dist/container/module-ref.js +0 -48
- package/dist/container/types.d.ts +0 -154
- package/dist/container/types.js +0 -49
- package/dist/cors/cors.module.d.ts +0 -7
- package/dist/cors/cors.module.js +0 -37
- package/dist/cors/cors.tokens.d.ts +0 -3
- package/dist/cors/cors.tokens.js +0 -2
- package/dist/cors/cors.types.d.ts +0 -8
- package/dist/cors/cors.types.js +0 -1
- package/dist/cors/index.d.ts +0 -3
- package/dist/cors/index.js +0 -2
- package/dist/crypto/signed-url.d.ts +0 -12
- package/dist/crypto/signed-url.js +0 -60
- package/dist/discovery/discoverable.decorator.d.ts +0 -38
- package/dist/discovery/discoverable.decorator.js +0 -42
- package/dist/discovery/discovery.service.d.ts +0 -102
- package/dist/discovery/discovery.service.js +0 -177
- package/dist/discovery/index.d.ts +0 -2
- package/dist/discovery/index.js +0 -2
- package/dist/entrypoint/entrypoint.registry.d.ts +0 -42
- package/dist/entrypoint/entrypoint.registry.js +0 -112
- package/dist/entrypoint/entrypoint.types.d.ts +0 -41
- package/dist/entrypoint/entrypoint.types.js +0 -3
- package/dist/entrypoint/execution-context.d.ts +0 -15
- package/dist/entrypoint/execution-context.js +0 -21
- package/dist/entrypoint/execution-scope.d.ts +0 -21
- package/dist/entrypoint/execution-scope.js +0 -28
- package/dist/entrypoint/index.d.ts +0 -4
- package/dist/entrypoint/index.js +0 -4
- package/dist/errors/http-exception.d.ts +0 -62
- package/dist/errors/http-exception.js +0 -134
- package/dist/errors/index.d.ts +0 -1
- package/dist/errors/index.js +0 -1
- package/dist/event-emitter/event-emitter.decorators.d.ts +0 -1
- package/dist/event-emitter/event-emitter.decorators.js +0 -10
- package/dist/event-emitter/event-emitter.module.d.ts +0 -2
- package/dist/event-emitter/event-emitter.module.js +0 -23
- package/dist/event-emitter/event-emitter.service.d.ts +0 -13
- package/dist/event-emitter/event-emitter.service.js +0 -127
- package/dist/event-emitter/event-emitter.subscriber.d.ts +0 -9
- package/dist/event-emitter/event-emitter.subscriber.js +0 -45
- package/dist/event-emitter/event-emitter.tokens.d.ts +0 -1
- package/dist/event-emitter/event-emitter.tokens.js +0 -1
- package/dist/event-emitter/event-emitter.types.d.ts +0 -5
- package/dist/event-emitter/event-emitter.types.js +0 -1
- package/dist/event-emitter/index.d.ts +0 -6
- package/dist/event-emitter/index.js +0 -5
- package/dist/factory/adapter.d.ts +0 -36
- package/dist/factory/adapter.js +0 -18
- package/dist/factory/bootstrap.d.ts +0 -23
- package/dist/factory/bootstrap.js +0 -108
- package/dist/factory.d.ts +0 -16
- package/dist/factory.js +0 -36
- package/dist/fetch/fetch.module.d.ts +0 -7
- package/dist/fetch/fetch.module.js +0 -31
- package/dist/fetch/fetch.service.d.ts +0 -24
- package/dist/fetch/fetch.service.js +0 -145
- package/dist/fetch/fetch.types.d.ts +0 -24
- package/dist/fetch/fetch.types.js +0 -1
- package/dist/fetch/index.d.ts +0 -3
- package/dist/fetch/index.js +0 -2
- package/dist/health/health.http.d.ts +0 -14
- package/dist/health/health.http.js +0 -75
- package/dist/health/health.indicator.d.ts +0 -9
- package/dist/health/health.indicator.js +0 -32
- package/dist/health/health.module.d.ts +0 -2
- package/dist/health/health.module.js +0 -26
- package/dist/health/health.service.d.ts +0 -7
- package/dist/health/health.service.js +0 -69
- package/dist/health/health.types.d.ts +0 -15
- package/dist/health/health.types.js +0 -1
- package/dist/health/index.d.ts +0 -6
- package/dist/health/index.js +0 -4
- package/dist/http/ambient.d.ts +0 -17
- package/dist/http/ambient.js +0 -44
- package/dist/http/argument-resolver.d.ts +0 -10
- package/dist/http/argument-resolver.js +0 -89
- package/dist/http/decorators.d.ts +0 -198
- package/dist/http/decorators.js +0 -321
- package/dist/http/execution-context.d.ts +0 -8
- package/dist/http/execution-context.js +0 -35
- package/dist/http/handler-executor.d.ts +0 -20
- package/dist/http/handler-executor.js +0 -111
- package/dist/http/index.d.ts +0 -12
- package/dist/http/index.js +0 -7
- package/dist/http/instantiate.d.ts +0 -4
- package/dist/http/instantiate.js +0 -45
- package/dist/http/lazy-param.decorator.d.ts +0 -37
- package/dist/http/lazy-param.decorator.js +0 -117
- package/dist/http/request-container.d.ts +0 -16
- package/dist/http/request-container.js +0 -19
- package/dist/http/request-context.d.ts +0 -13
- package/dist/http/request-context.js +0 -22
- package/dist/http/response-mapper.d.ts +0 -8
- package/dist/http/response-mapper.js +0 -42
- package/dist/http/route-contributor.d.ts +0 -68
- package/dist/http/route-contributor.js +0 -22
- package/dist/http/route-map.d.ts +0 -30
- package/dist/http/route-map.js +0 -27
- package/dist/http/route.manager.d.ts +0 -92
- package/dist/http/route.manager.js +0 -481
- package/dist/http/types.d.ts +0 -37
- package/dist/http/types.js +0 -1
- package/dist/http/url/index.d.ts +0 -4
- package/dist/http/url/index.js +0 -3
- package/dist/http/url/signed-url.guard.d.ts +0 -27
- package/dist/http/url/signed-url.guard.js +0 -62
- package/dist/http/url/signing-secret.d.ts +0 -20
- package/dist/http/url/signing-secret.js +0 -24
- package/dist/http/url/url-generator.service.d.ts +0 -52
- package/dist/http/url/url-generator.service.js +0 -104
- package/dist/i18n/deep-merge.d.ts +0 -2
- package/dist/i18n/deep-merge.js +0 -15
- package/dist/i18n/i18n.middleware.d.ts +0 -15
- package/dist/i18n/i18n.middleware.js +0 -94
- package/dist/i18n/i18n.module.d.ts +0 -13
- package/dist/i18n/i18n.module.js +0 -69
- package/dist/i18n/i18n.options.d.ts +0 -30
- package/dist/i18n/i18n.options.js +0 -16
- package/dist/i18n/i18n.service.d.ts +0 -20
- package/dist/i18n/i18n.service.js +0 -49
- package/dist/i18n/i18n.tokens.d.ts +0 -6
- package/dist/i18n/i18n.tokens.js +0 -3
- package/dist/i18n/i18n.types.d.ts +0 -6
- package/dist/i18n/i18n.types.js +0 -1
- package/dist/i18n/message-loader.service.d.ts +0 -21
- package/dist/i18n/message-loader.service.js +0 -90
- package/dist/i18n/message-registry.d.ts +0 -16
- package/dist/i18n/message-registry.js +0 -49
- package/dist/lifecycle/index.d.ts +0 -20
- package/dist/lifecycle/index.js +0 -15
- package/dist/live/live.cursor.d.ts +0 -22
- package/dist/live/live.cursor.js +0 -56
- package/dist/live/live.decorators.d.ts +0 -32
- package/dist/live/live.decorators.js +0 -46
- package/dist/live/live.delta.d.ts +0 -15
- package/dist/live/live.delta.js +0 -51
- package/dist/live/live.engine.d.ts +0 -81
- package/dist/live/live.engine.js +0 -448
- package/dist/live/live.invalidation.d.ts +0 -45
- package/dist/live/live.invalidation.js +0 -99
- package/dist/live/live.module.d.ts +0 -28
- package/dist/live/live.module.js +0 -87
- package/dist/live/live.tokens.d.ts +0 -9
- package/dist/live/live.tokens.js +0 -8
- package/dist/live/live.types.d.ts +0 -138
- package/dist/live/live.types.js +0 -1
- package/dist/live/presence.d.ts +0 -44
- package/dist/live/presence.js +0 -130
- package/dist/metadata.d.ts +0 -10
- package/dist/metadata.js +0 -20
- package/dist/module/configurable-module.builder.d.ts +0 -56
- package/dist/module/configurable-module.builder.js +0 -84
- package/dist/module/configurable-module.types.d.ts +0 -93
- package/dist/module/configurable-module.types.js +0 -5
- package/dist/module/decorators.d.ts +0 -10
- package/dist/module/decorators.js +0 -47
- package/dist/module/define-module.d.ts +0 -112
- package/dist/module/define-module.js +0 -232
- package/dist/module/graph.d.ts +0 -10
- package/dist/module/graph.js +0 -35
- package/dist/module/index.d.ts +0 -10
- package/dist/module/index.js +0 -7
- package/dist/module/lazy-modules.d.ts +0 -82
- package/dist/module/lazy-modules.js +0 -231
- package/dist/module/lazy-provider.d.ts +0 -65
- package/dist/module/lazy-provider.js +0 -111
- package/dist/module/middleware.d.ts +0 -30
- package/dist/module/middleware.js +0 -67
- package/dist/module/module-loader.d.ts +0 -58
- package/dist/module/module-loader.js +0 -484
- package/dist/module/stable-hash.d.ts +0 -15
- package/dist/module/stable-hash.js +0 -52
- package/dist/module/types.d.ts +0 -1
- package/dist/module/types.js +0 -1
- package/dist/openapi/decorators.d.ts +0 -34
- package/dist/openapi/decorators.js +0 -66
- package/dist/openapi/document.d.ts +0 -3
- package/dist/openapi/document.js +0 -316
- package/dist/openapi/index.d.ts +0 -7
- package/dist/openapi/index.js +0 -6
- package/dist/openapi/redoc-ui.d.ts +0 -1
- package/dist/openapi/redoc-ui.js +0 -19
- package/dist/openapi/scalar-ui.d.ts +0 -1
- package/dist/openapi/scalar-ui.js +0 -19
- package/dist/openapi/swagger-ui.d.ts +0 -1
- package/dist/openapi/swagger-ui.js +0 -23
- package/dist/openapi/types.d.ts +0 -182
- package/dist/openapi/types.js +0 -4
- package/dist/openapi/zod-to-json-schema.d.ts +0 -4
- package/dist/openapi/zod-to-json-schema.js +0 -57
- package/dist/pipeline/app-providers.d.ts +0 -10
- package/dist/pipeline/app-providers.js +0 -43
- package/dist/pipeline/component.manager.d.ts +0 -25
- package/dist/pipeline/component.manager.js +0 -66
- package/dist/pipeline/decorators.d.ts +0 -10
- package/dist/pipeline/decorators.js +0 -42
- package/dist/pipeline/index.d.ts +0 -12
- package/dist/pipeline/index.js +0 -7
- package/dist/pipeline/pipeline-runner.d.ts +0 -31
- package/dist/pipeline/pipeline-runner.js +0 -40
- package/dist/pipeline/pipes.d.ts +0 -48
- package/dist/pipeline/pipes.js +0 -104
- package/dist/pipeline/reflector.d.ts +0 -86
- package/dist/pipeline/reflector.js +0 -121
- package/dist/pipeline/scoped-components.d.ts +0 -26
- package/dist/pipeline/scoped-components.js +0 -27
- package/dist/pipeline/tokens.d.ts +0 -33
- package/dist/pipeline/tokens.js +0 -27
- package/dist/pipeline/types.d.ts +0 -64
- package/dist/pipeline/types.js +0 -1
- package/dist/plugin/plugin.d.ts +0 -31
- package/dist/plugin/plugin.js +0 -111
- package/dist/queue/inline.driver.d.ts +0 -30
- package/dist/queue/inline.driver.js +0 -58
- package/dist/queue/queue.binding.d.ts +0 -23
- package/dist/queue/queue.binding.js +0 -53
- package/dist/queue/queue.client.d.ts +0 -20
- package/dist/queue/queue.client.js +0 -33
- package/dist/queue/queue.decorators.d.ts +0 -23
- package/dist/queue/queue.decorators.js +0 -46
- package/dist/queue/queue.dispatch.d.ts +0 -36
- package/dist/queue/queue.dispatch.js +0 -102
- package/dist/queue/queue.module.d.ts +0 -32
- package/dist/queue/queue.module.js +0 -80
- package/dist/queue/queue.tokens.d.ts +0 -21
- package/dist/queue/queue.tokens.js +0 -34
- package/dist/queue/queue.types.d.ts +0 -61
- package/dist/queue/queue.types.js +0 -4
- package/dist/registry/index.d.ts +0 -2
- package/dist/registry/index.js +0 -1
- package/dist/registry/metadata.registry.d.ts +0 -73
- package/dist/registry/metadata.registry.js +0 -357
- package/dist/registry/paths.d.ts +0 -3
- package/dist/registry/paths.js +0 -15
- package/dist/registry/types.d.ts +0 -116
- package/dist/registry/types.js +0 -1
- package/dist/registry/util.d.ts +0 -3
- package/dist/registry/util.js +0 -8
- package/dist/schedule/cron-matcher.d.ts +0 -2
- package/dist/schedule/cron-matcher.js +0 -62
- package/dist/schedule/index.d.ts +0 -8
- package/dist/schedule/index.js +0 -5
- package/dist/schedule/schedule.decorators.d.ts +0 -2
- package/dist/schedule/schedule.decorators.js +0 -18
- package/dist/schedule/schedule.module.d.ts +0 -9
- package/dist/schedule/schedule.module.js +0 -28
- package/dist/schedule/schedule.registry.d.ts +0 -23
- package/dist/schedule/schedule.registry.js +0 -63
- package/dist/schedule/schedule.tokens.d.ts +0 -2
- package/dist/schedule/schedule.tokens.js +0 -2
- package/dist/schedule/schedule.types.d.ts +0 -8
- package/dist/schedule/schedule.types.js +0 -1
- package/dist/schedule-node/schedule-node.module.d.ts +0 -9
- package/dist/schedule-node/schedule-node.module.js +0 -28
- package/dist/schedule-node/schedule.executor.d.ts +0 -19
- package/dist/schedule-node/schedule.executor.js +0 -107
- package/dist/seeder/seeder.decorator.d.ts +0 -7
- package/dist/seeder/seeder.decorator.js +0 -15
- package/dist/seeder/seeder.module.d.ts +0 -16
- package/dist/seeder/seeder.module.js +0 -44
- package/dist/seeder/seeder.registry.d.ts +0 -23
- package/dist/seeder/seeder.registry.js +0 -83
- package/dist/seeder/seeder.tokens.d.ts +0 -2
- package/dist/seeder/seeder.tokens.js +0 -1
- package/dist/seeder/seeder.types.d.ts +0 -20
- package/dist/seeder/seeder.types.js +0 -1
- package/dist/serialization/index.d.ts +0 -2
- package/dist/serialization/index.js +0 -2
- package/dist/serialization/serialize.decorator.d.ts +0 -6
- package/dist/serialization/serialize.decorator.js +0 -7
- package/dist/serialization/serializer.interceptor.d.ts +0 -4
- package/dist/serialization/serializer.interceptor.js +0 -16
- package/dist/services/index.d.ts +0 -2
- package/dist/services/index.js +0 -1
- package/dist/services/logger.d.ts +0 -59
- package/dist/services/logger.js +0 -159
- package/dist/storage/path-template.d.ts +0 -9
- package/dist/storage/path-template.js +0 -20
- package/dist/storage/storage.types.d.ts +0 -41
- package/dist/storage/storage.types.js +0 -5
- package/dist/throttler/index.d.ts +0 -6
- package/dist/throttler/index.js +0 -5
- package/dist/throttler/throttler.decorators.d.ts +0 -3
- package/dist/throttler/throttler.decorators.js +0 -4
- package/dist/throttler/throttler.guard.d.ts +0 -9
- package/dist/throttler/throttler.guard.js +0 -72
- package/dist/throttler/throttler.module.d.ts +0 -7
- package/dist/throttler/throttler.module.js +0 -41
- package/dist/throttler/throttler.storage.d.ts +0 -10
- package/dist/throttler/throttler.storage.js +0 -44
- package/dist/throttler/throttler.tokens.d.ts +0 -6
- package/dist/throttler/throttler.tokens.js +0 -5
- package/dist/throttler/throttler.types.d.ts +0 -25
- package/dist/throttler/throttler.types.js +0 -1
- package/dist/validation/create-zod-dto.d.ts +0 -13
- package/dist/validation/create-zod-dto.js +0 -18
- package/dist/validation/index.d.ts +0 -3
- package/dist/validation/index.js +0 -2
- package/dist/validation/validation.pipe.d.ts +0 -4
- package/dist/validation/validation.pipe.js +0 -19
- package/dist/websocket/websocket.decorators.d.ts +0 -47
- package/dist/websocket/websocket.decorators.js +0 -80
- package/dist/websocket/websocket.module.d.ts +0 -35
- package/dist/websocket/websocket.module.js +0 -63
- package/dist/websocket/websocket.tokens.d.ts +0 -30
- package/dist/websocket/websocket.tokens.js +0 -27
- package/dist/websocket/websocket.types.d.ts +0 -102
- package/dist/websocket/websocket.types.js +0 -4
- package/dist/websocket/ws-argument-resolver.d.ts +0 -13
- package/dist/websocket/ws-argument-resolver.js +0 -40
- package/dist/websocket/ws-dispatcher.d.ts +0 -54
- package/dist/websocket/ws-dispatcher.js +0 -322
- package/dist/websocket/ws-exception.d.ts +0 -16
- package/dist/websocket/ws-exception.js +0 -32
- package/dist/websocket/ws-execution-context.d.ts +0 -9
- package/dist/websocket/ws-execution-context.js +0 -24
- package/dist/websocket/ws-server.d.ts +0 -31
- package/dist/websocket/ws-server.js +0 -74
- package/dist/websocket/ws-sync.d.ts +0 -47
- package/dist/websocket/ws-sync.js +0 -74
- package/dist/websocket-node/node-ws-client.d.ts +0 -24
- package/dist/websocket-node/node-ws-client.js +0 -49
- package/dist/websocket-node/redis-live.d.ts +0 -24
- package/dist/websocket-node/redis-live.js +0 -57
- package/dist/websocket-node/redis-sync.d.ts +0 -33
- package/dist/websocket-node/redis-sync.js +0 -56
- package/dist/websocket-node/register-gateways.d.ts +0 -20
- package/dist/websocket-node/register-gateways.js +0 -61
|
@@ -0,0 +1,430 @@
|
|
|
1
|
+
import { a as OnApplicationBootstrap } from "./schedule.registry-DVm7Jp5w.js";
|
|
2
|
+
import { P as Container, U as InjectionToken, i as DiscoveryService } from "./discovery.service-Cpf1QcZ5.js";
|
|
3
|
+
import { X as ContributesEntrypoints, Z as Entrypoint } from "./metadata.registry-D1od8ZBt.js";
|
|
4
|
+
import { Xn as ReservedWsEventHandler, er as WsClient, nr as WsMessage, zt as ConfigurableModuleClassType } from "./index-DhShDLCM.js";
|
|
5
|
+
import { COMMIT_CURSOR_HEADER as COMMIT_CURSOR_HEADER$1, COMMIT_EPOCH_HEADER as COMMIT_EPOCH_HEADER$1, ClientLiveFrame, DEFAULT_KEY_FIELD as DEFAULT_KEY_FIELD$1, LIVE_ERROR_CODES as LIVE_ERROR_CODES$1, LIVE_EVENT, LIVE_PROTOCOL as LIVE_PROTOCOL$1, LiveFrame, RowOp, ServerLiveFrame, ServerLiveFrame as ServerLiveFrame$1, applyListDelta, encodeListDelta as encodeListDelta$1, encodeLiveEnvelope as encodeLiveEnvelope$1, encodeLiveFrame, isClientLiveFrame as isClientLiveFrame$1, isServerLiveFrame, readLiveEnvelope } from "@velajs/live-protocol";
|
|
6
|
+
//#region src/live/live.types.d.ts
|
|
7
|
+
/**
|
|
8
|
+
* Identity captured at subscribe time and replayed into every re-run of the
|
|
9
|
+
* subscription's query — never re-read from the client afterwards. Free-form;
|
|
10
|
+
* `expiresAt` (epoch ms) is the one recognized field: a lapsed identity drops
|
|
11
|
+
* the socket before it receives another scoped push (outbound enforcement —
|
|
12
|
+
* a passive subscriber never trips inbound checks).
|
|
13
|
+
*/
|
|
14
|
+
interface LiveIdentity {
|
|
15
|
+
[key: string]: unknown;
|
|
16
|
+
expiresAt?: number;
|
|
17
|
+
}
|
|
18
|
+
/** Second positional argument every `@LiveQuery` handler receives. */
|
|
19
|
+
interface LiveQueryContext {
|
|
20
|
+
identity?: LiveIdentity;
|
|
21
|
+
/** The subscribed connection's id. */
|
|
22
|
+
clientId: string;
|
|
23
|
+
/** Rooms the connection was in when it subscribed. */
|
|
24
|
+
rooms: string[];
|
|
25
|
+
}
|
|
26
|
+
interface LiveQueryOptions<A = unknown> {
|
|
27
|
+
/**
|
|
28
|
+
* Dependency tags this query's result is built from — the invalidation
|
|
29
|
+
* contract. Static for the common case; the function form derives
|
|
30
|
+
* per-entity tags from the (parsed) subscribe args. Writes invalidate tags
|
|
31
|
+
* via `LiveInvalidation.invalidate()` (the CRUD bridge does it
|
|
32
|
+
* automatically with `crud:<table>` tags).
|
|
33
|
+
*/
|
|
34
|
+
tags: string[] | ((args: A) => string[]);
|
|
35
|
+
/** Key field for incremental list deltas (default `'id'`). */
|
|
36
|
+
key?: string;
|
|
37
|
+
/**
|
|
38
|
+
* Args validator, run ONCE at subscribe (a zod schema's `.parse` slots in
|
|
39
|
+
* directly). A throw rejects the subscription with a `bad_args` error frame.
|
|
40
|
+
*/
|
|
41
|
+
parse?: (args: unknown) => A;
|
|
42
|
+
}
|
|
43
|
+
/** One `@LiveQuery` declaration on a `@LiveResolver` class. */
|
|
44
|
+
interface LiveQueryMetadata {
|
|
45
|
+
name: string;
|
|
46
|
+
methodName: string | symbol;
|
|
47
|
+
options: LiveQueryOptions;
|
|
48
|
+
}
|
|
49
|
+
/** Class-level marker meta written by `@LiveResolver()`. */
|
|
50
|
+
interface LiveResolverMetadata {}
|
|
51
|
+
/** A position in this log scope's ordered invalidation log. */
|
|
52
|
+
interface CommitStamp {
|
|
53
|
+
cursor: number;
|
|
54
|
+
epoch: string;
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Resume verdict for a reconnecting subscription:
|
|
58
|
+
* - `'resume'` — nothing the subscription depends on changed while away; keep
|
|
59
|
+
* the client's cached value and just advance its cursor.
|
|
60
|
+
* - `'rerun'` — a relevant tag was invalidated in the gap; re-run and snapshot.
|
|
61
|
+
* - `'snapshot'` — the gap cannot be reasoned about (epoch fork, trimmed log,
|
|
62
|
+
* rollback); re-run and snapshot.
|
|
63
|
+
*/
|
|
64
|
+
type ResumeVerdict = 'resume' | 'rerun' | 'snapshot';
|
|
65
|
+
/**
|
|
66
|
+
* The ordered tag-invalidation log for ONE log scope (this process on
|
|
67
|
+
* node/bun/deno; one Durable Object on Cloudflare). Cursor = monotonic
|
|
68
|
+
* sequence; epoch = timeline token rolled whenever monotonicity can no longer
|
|
69
|
+
* be guaranteed (process restart, DO reset).
|
|
70
|
+
*/
|
|
71
|
+
interface CursorLog {
|
|
72
|
+
append(tags: string[]): CommitStamp | Promise<CommitStamp>;
|
|
73
|
+
current(): CommitStamp | Promise<CommitStamp>;
|
|
74
|
+
evaluateResume(sinceCursor: number, sinceEpoch: string, subscriptionTags: string[]): ResumeVerdict | Promise<ResumeVerdict>;
|
|
75
|
+
}
|
|
76
|
+
/** A tag invalidation crossing the driver seam. `room` addresses the log scope holding the subscribers (advisory for local delivery). */
|
|
77
|
+
interface InvalidationCommand {
|
|
78
|
+
room?: string;
|
|
79
|
+
tags: string[];
|
|
80
|
+
/** Origin instance id — lets pub/sub drivers drop their own echo. */
|
|
81
|
+
origin?: string;
|
|
82
|
+
}
|
|
83
|
+
/** What a driver delivers invalidations INTO — the live engine of one log scope. */
|
|
84
|
+
interface LiveInvalidationSink {
|
|
85
|
+
applyInvalidation(cmd: InvalidationCommand): CommitStamp | Promise<CommitStamp>;
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* Cross-boundary invalidation transport — the live sibling of the WebSocket
|
|
89
|
+
* `SyncDriver`, carrying TAGS (re-run instructions) instead of pre-serialized
|
|
90
|
+
* frames. `localLive()` is the in-core single-scope default; platform packages
|
|
91
|
+
* (`durableObjectLive()` in @velajs/cloudflare, `redisLive()` in
|
|
92
|
+
* websocket-node) implement it out-of-core. `dispatch` returns the commit
|
|
93
|
+
* stamp of the targeted log scope when the driver can observe it.
|
|
94
|
+
*/
|
|
95
|
+
interface LiveDriver {
|
|
96
|
+
readonly kind: string;
|
|
97
|
+
bind(sink: LiveInvalidationSink): void;
|
|
98
|
+
dispatch(cmd: InvalidationCommand): CommitStamp | undefined | Promise<CommitStamp | undefined>;
|
|
99
|
+
start?(): void | Promise<void>;
|
|
100
|
+
stop?(): void | Promise<void>;
|
|
101
|
+
}
|
|
102
|
+
/** One live subscription as tracked by the engine (and persisted by transports that survive eviction). */
|
|
103
|
+
interface SubscriptionRecord {
|
|
104
|
+
sub: string;
|
|
105
|
+
query: string;
|
|
106
|
+
args: unknown;
|
|
107
|
+
/** Frozen at subscribe from the (parsed) args. */
|
|
108
|
+
tags: string[];
|
|
109
|
+
/** Delta key field (subscribe-frame override wins over the handler option). */
|
|
110
|
+
key?: string;
|
|
111
|
+
identity?: LiveIdentity;
|
|
112
|
+
/**
|
|
113
|
+
* The last result this subscription confirmed on the wire (the delta diff
|
|
114
|
+
* baseline). `undefined` after a cursor-resume: the server never re-ran the
|
|
115
|
+
* query, so the next relevant change sends a full snapshot.
|
|
116
|
+
*/
|
|
117
|
+
lastJson?: string;
|
|
118
|
+
lastCursor?: number;
|
|
119
|
+
}
|
|
120
|
+
interface LivePresenceOptions {
|
|
121
|
+
/** Roster entries older than this are filtered at read time (default 30_000 ms). */
|
|
122
|
+
ttlMs?: number;
|
|
123
|
+
}
|
|
124
|
+
interface LiveModuleOptions {
|
|
125
|
+
/** Cross-boundary invalidation driver. Defaults to `localLive()`. */
|
|
126
|
+
driver?: LiveDriver;
|
|
127
|
+
/** Ordered invalidation log. Defaults to the in-memory per-process log. */
|
|
128
|
+
log?: CursorLog;
|
|
129
|
+
/**
|
|
130
|
+
* Identity capture at subscribe. Default: a shallow copy of `client.data`
|
|
131
|
+
* (whatever the app's upgrade/`handleConnection` auth stamped there), or
|
|
132
|
+
* `undefined` when empty.
|
|
133
|
+
*/
|
|
134
|
+
identity?: (client: WsClient) => LiveIdentity | undefined;
|
|
135
|
+
/** Presence preset configuration; `false` disables the built-in resolver. */
|
|
136
|
+
presence?: LivePresenceOptions | false;
|
|
137
|
+
}
|
|
138
|
+
/** Meta carried by the `'live'` entrypoint (transports reach the engine through it). */
|
|
139
|
+
interface LiveEntrypointMeta {
|
|
140
|
+
/** The engine — typed loosely to avoid a circular type edge; cast to `LiveEngine`. */
|
|
141
|
+
engine: unknown;
|
|
142
|
+
}
|
|
143
|
+
//#endregion
|
|
144
|
+
//#region src/live/live.module.d.ts
|
|
145
|
+
/**
|
|
146
|
+
* First-party live-query module (tag-based realtime reactivity) — authored,
|
|
147
|
+
* like the queue module, entirely on vela's public API (`live-openness.test.ts`
|
|
148
|
+
* machine-verifies it; the only extra dependency is the shared wire package
|
|
149
|
+
* `@velajs/live-protocol`).
|
|
150
|
+
*
|
|
151
|
+
* ```ts
|
|
152
|
+
* imports: [WebSocketModule.forRoot({}), LiveModule.forRoot({})]
|
|
153
|
+
* ```
|
|
154
|
+
*
|
|
155
|
+
* App code declares `@LiveResolver` classes with `@LiveQuery(name, { tags })`
|
|
156
|
+
* methods; clients subscribe over the `$live` reserved WebSocket event; writes
|
|
157
|
+
* invalidate tags via `LiveInvalidation` (the `@velajs/crud` bridge does it
|
|
158
|
+
* automatically per table). See `LIVE.md` for the wire protocol, delivery
|
|
159
|
+
* guarantees, and the resume story.
|
|
160
|
+
*
|
|
161
|
+
* Deliberately EAGER (like WebSocketModule): the engine self-drives — it
|
|
162
|
+
* claims the `$live` event at bootstrap and receives invalidations from
|
|
163
|
+
* writes that never touch a live token — so the lazy-module contract
|
|
164
|
+
* ("nothing self-drives") rules laziness out.
|
|
165
|
+
*/
|
|
166
|
+
declare const ConfigurableModuleClass: ConfigurableModuleClassType<LiveModuleOptions, "forRoot", "create", {
|
|
167
|
+
isGlobal?: boolean;
|
|
168
|
+
}>;
|
|
169
|
+
declare class LiveModule extends ConfigurableModuleClass {}
|
|
170
|
+
//#endregion
|
|
171
|
+
//#region src/live/live.decorators.d.ts
|
|
172
|
+
/**
|
|
173
|
+
* Marks a provider class as a live-query resolver:
|
|
174
|
+
*
|
|
175
|
+
* ```ts
|
|
176
|
+
* @LiveResolver()
|
|
177
|
+
* @Injectable()
|
|
178
|
+
* class TodoLive {
|
|
179
|
+
* constructor(private readonly todos: TodoService) {}
|
|
180
|
+
*
|
|
181
|
+
* @LiveQuery('todos.list', { tags: (a: { listId: string }) => [`todos:${a.listId}`] })
|
|
182
|
+
* list(args: { listId: string }, ctx: LiveQueryContext) {
|
|
183
|
+
* return this.todos.byList(args.listId, ctx.identity?.userId);
|
|
184
|
+
* }
|
|
185
|
+
* }
|
|
186
|
+
* ```
|
|
187
|
+
*
|
|
188
|
+
* Clients subscribe by query name over the `$live` reserved event; the engine
|
|
189
|
+
* re-runs a handler whenever one of its tags is invalidated and pushes the
|
|
190
|
+
* result (as a keyed delta when possible). Stack with `@Injectable()`, exactly
|
|
191
|
+
* like `@Processor`.
|
|
192
|
+
*/
|
|
193
|
+
declare function LiveResolver(): ClassDecorator;
|
|
194
|
+
/**
|
|
195
|
+
* Declares a live query on a resolver method. The handler receives
|
|
196
|
+
* `(args, ctx: LiveQueryContext)` positionally — args are validated once at
|
|
197
|
+
* subscribe (via `options.parse`), then replayed verbatim into every re-run
|
|
198
|
+
* under the subscriber's captured identity.
|
|
199
|
+
*/
|
|
200
|
+
declare function LiveQuery<A = unknown>(name: string, options: LiveQueryOptions<A>): MethodDecorator;
|
|
201
|
+
/** `@LiveQuery` entries declared on a resolver class (declaration order). */
|
|
202
|
+
declare function getLiveQueries(resolverClass: object): LiveQueryMetadata[];
|
|
203
|
+
//#endregion
|
|
204
|
+
//#region src/live/presence.d.ts
|
|
205
|
+
/** The invalidation tag for one room's roster. `$`-prefixed: never collides with app tags. */
|
|
206
|
+
declare const presenceTag: (room: string) => string;
|
|
207
|
+
/** The built-in roster query name (`useLiveQuery`-able like any app query). */
|
|
208
|
+
declare const PRESENCE_ROSTER_QUERY = "$presence.roster";
|
|
209
|
+
/** One present connection as returned by the roster query. Keyed by `id` so list deltas apply. */
|
|
210
|
+
interface PresenceMember {
|
|
211
|
+
/** The connection id that heartbeats this membership. */
|
|
212
|
+
id: string;
|
|
213
|
+
meta?: unknown;
|
|
214
|
+
lastSeen: number;
|
|
215
|
+
}
|
|
216
|
+
/**
|
|
217
|
+
* The presence preset's server half. Heartbeats arrive as `{ t: 'presence' }`
|
|
218
|
+
* frames on the live socket (routed here by the engine); the roster is a
|
|
219
|
+
* built-in live query invalidated per room. Departure is immediate: the WS
|
|
220
|
+
* close hook reaps the member without waiting out the TTL. Staleness (an
|
|
221
|
+
* ungraceful drop the transport never noticed) is filtered AT READ TIME —
|
|
222
|
+
* no timers, per the edge rules (`setInterval` is forbidden).
|
|
223
|
+
*
|
|
224
|
+
* Scope note: the roster lives in this log scope (one process on node, one
|
|
225
|
+
* room-DO on Cloudflare — where it is exactly the room's roster).
|
|
226
|
+
*/
|
|
227
|
+
declare class PresenceService {
|
|
228
|
+
private readonly ttlMs;
|
|
229
|
+
readonly enabled: boolean;
|
|
230
|
+
private readonly rooms;
|
|
231
|
+
private readonly roomsByClient;
|
|
232
|
+
private invalidator?;
|
|
233
|
+
constructor(ttlMs?: number, enabled?: boolean);
|
|
234
|
+
/** Wired by the engine so beats/reaps invalidate through the live driver. */
|
|
235
|
+
bindInvalidator(invalidator: (tags: string[]) => void): void;
|
|
236
|
+
beat(room: string, clientId: string, meta?: unknown): void;
|
|
237
|
+
/** Immediate departure on socket close — peers see it without a TTL wait. */
|
|
238
|
+
reap(clientId: string): void;
|
|
239
|
+
roster(room: string): PresenceMember[];
|
|
240
|
+
}
|
|
241
|
+
/** The built-in resolver backing `$presence.roster`. Registered by `LiveModule` unless presence is disabled. */
|
|
242
|
+
declare class PresenceResolver {
|
|
243
|
+
private readonly presence;
|
|
244
|
+
constructor(presence: PresenceService);
|
|
245
|
+
roster(args: {
|
|
246
|
+
room: string;
|
|
247
|
+
}): PresenceMember[];
|
|
248
|
+
}
|
|
249
|
+
//#endregion
|
|
250
|
+
//#region src/live/live.engine.d.ts
|
|
251
|
+
/**
|
|
252
|
+
* Where the engine persists a connection's subscription records inside
|
|
253
|
+
* `client.data` (committed through `WsClient.commit()`). On Cloudflare that
|
|
254
|
+
* lands in the hibernation attachment, so subscriptions survive DO eviction;
|
|
255
|
+
* the transport replays them via `restoreSubscription` on wake. On node,
|
|
256
|
+
* `commit()` is a no-op and this is just in-memory bookkeeping.
|
|
257
|
+
*/
|
|
258
|
+
declare const LIVE_SUBS_DATA_KEY = "__velaLiveSubs";
|
|
259
|
+
/** Read the subscription records a transport persisted for a connection (wake/restore path). */
|
|
260
|
+
declare function readPersistedLiveSubscriptions(client: WsClient): SubscriptionRecord[];
|
|
261
|
+
/**
|
|
262
|
+
* The live-query engine of ONE log scope: routes `$live` frames (subscribe /
|
|
263
|
+
* unsubscribe / presence), owns the subscription registry, and turns tag
|
|
264
|
+
* invalidations into re-run → diff → push cycles.
|
|
265
|
+
*
|
|
266
|
+
* Delivery semantics (ported from lunora's `shard-do.ts` refresh loop):
|
|
267
|
+
* - **Coalescing**: a burst of invalidations collapses into one flush; every
|
|
268
|
+
* committed invalidation is observed by a flush that STARTS after it
|
|
269
|
+
* committed (`applyInvalidation` appends to the log before arming the
|
|
270
|
+
* drain, and the drain re-loops while tags are pending).
|
|
271
|
+
* - **At-least-once**: a subscription's diff baseline (`lastJson`) advances
|
|
272
|
+
* only when the frame left the socket; keyed deltas are idempotent on
|
|
273
|
+
* replay.
|
|
274
|
+
* - **Frame suppression**: a byte-identical re-run sends `settled` — no
|
|
275
|
+
* payload, but the cursor still advances so client optimistic layers drop.
|
|
276
|
+
* - **Outbound expiry**: a subscription whose captured identity lapsed is
|
|
277
|
+
* dropped (socket closed) before it receives another scoped push.
|
|
278
|
+
* - **Cursor-before-run**: the stamp a frame carries is read BEFORE the
|
|
279
|
+
* re-run, so a result can only be NEWER than its cursor claims — an
|
|
280
|
+
* invalidation racing the run is re-observed by the next flush, never lost.
|
|
281
|
+
*
|
|
282
|
+
* Transports reach the engine via `app.entrypoints.ofKind('live')` (it
|
|
283
|
+
* contributes itself) — the same contract the WebSocket triad uses.
|
|
284
|
+
*/
|
|
285
|
+
declare class LiveEngine implements OnApplicationBootstrap, ContributesEntrypoints, ReservedWsEventHandler, LiveInvalidationSink {
|
|
286
|
+
private readonly container;
|
|
287
|
+
private readonly discovery;
|
|
288
|
+
private readonly log;
|
|
289
|
+
private readonly options;
|
|
290
|
+
private readonly presence?;
|
|
291
|
+
private readonly queries;
|
|
292
|
+
private readonly connections;
|
|
293
|
+
private readonly pendingTags;
|
|
294
|
+
private drainChain;
|
|
295
|
+
private draining;
|
|
296
|
+
constructor(container: Container, discovery: DiscoveryService, log: CursorLog, driver: LiveDriver, options: LiveModuleOptions, presence?: PresenceService | undefined);
|
|
297
|
+
onApplicationBootstrap(): Promise<void>;
|
|
298
|
+
/** The `'live'` entrypoint — how transports (node registrar, CF DO bootstrap) find the engine. */
|
|
299
|
+
collectEntrypoints(): Entrypoint<LiveEntrypointMeta>[];
|
|
300
|
+
handleReservedEvent(path: string, client: WsClient, message: WsMessage): Promise<void>;
|
|
301
|
+
handleSocketClose(_path: string, client: WsClient): Promise<void>;
|
|
302
|
+
applyInvalidation(cmd: InvalidationCommand): Promise<CommitStamp>;
|
|
303
|
+
/** Settles when every pending invalidation has been flushed (tests, graceful transports). */
|
|
304
|
+
whenIdle(): Promise<void>;
|
|
305
|
+
/**
|
|
306
|
+
* Re-attach a persisted subscription without the subscribe handshake — the
|
|
307
|
+
* Cloudflare transport replays hibernation-attachment records through this
|
|
308
|
+
* on wake. No frames are sent; the next relevant invalidation pushes.
|
|
309
|
+
*/
|
|
310
|
+
restoreSubscription(path: string, client: WsClient, record: SubscriptionRecord): void;
|
|
311
|
+
private onSubscribe;
|
|
312
|
+
private runSubscribeGuards;
|
|
313
|
+
private scheduleDrain;
|
|
314
|
+
private drainLoop;
|
|
315
|
+
/**
|
|
316
|
+
* Map a resolver failure to its live error-frame code. A branded
|
|
317
|
+
* {@link VelaError} carries an HTTP-ish status that projects onto the live
|
|
318
|
+
* vocabulary (403 → forbidden, 400/422 → bad_args); everything else — and
|
|
319
|
+
* every unbranded error — is `internal` (the client sees a redacted message).
|
|
320
|
+
*/
|
|
321
|
+
private static liveFrameCode;
|
|
322
|
+
private push;
|
|
323
|
+
private runQuery;
|
|
324
|
+
/**
|
|
325
|
+
* Mirror the connection's records into `client.data` + `commit()` so
|
|
326
|
+
* hibernating transports can replay them on wake. The volatile diff
|
|
327
|
+
* baseline (`lastJson`/`lastCursor`) is deliberately stripped: it can be
|
|
328
|
+
* large (the whole last result vs the 16 KiB attachment cap) and a lost
|
|
329
|
+
* baseline just means the next relevant change sends a full snapshot.
|
|
330
|
+
*/
|
|
331
|
+
private persistSubscriptions;
|
|
332
|
+
private ensureConnection;
|
|
333
|
+
private sendFrame;
|
|
334
|
+
}
|
|
335
|
+
//#endregion
|
|
336
|
+
//#region src/live/live.invalidation.d.ts
|
|
337
|
+
/** Single-scope default driver: deliver straight to this process's engine. */
|
|
338
|
+
declare function localLive(): LiveDriver;
|
|
339
|
+
/**
|
|
340
|
+
* Per-app wrapper around a (possibly SHARED) driver instance.
|
|
341
|
+
*
|
|
342
|
+
* A driver passed to `LiveModule.forRoot({ driver })` is a plain config object
|
|
343
|
+
* — and on Cloudflare the SAME app module (thus the same driver object)
|
|
344
|
+
* bootstraps in the Worker isolate AND inside each Durable Object, often
|
|
345
|
+
* within one isolate. Mutable per-app state must therefore never live on the
|
|
346
|
+
* driver itself: the DO flipping a shared `durableObjectLive()` into local
|
|
347
|
+
* mode would otherwise poison the Worker's engine, which then executes the
|
|
348
|
+
* DO's storage handle in the wrong request context ("Cannot perform I/O on
|
|
349
|
+
* behalf of a different request").
|
|
350
|
+
*
|
|
351
|
+
* The wrapper owns the per-app sink and the per-app local-mode flag; isolate-
|
|
352
|
+
* wide concerns (env capture) forward to the underlying driver. Platform init
|
|
353
|
+
* hooks (`_setLocalMode`, `_initializeEnv`) are exposed pass-through so
|
|
354
|
+
* platform packages can keep type-guarding on their presence.
|
|
355
|
+
*/
|
|
356
|
+
declare function perAppLiveDriver(underlying: LiveDriver): LiveDriver;
|
|
357
|
+
/**
|
|
358
|
+
* The injectable invalidation surface for custom (non-CRUD) write paths:
|
|
359
|
+
*
|
|
360
|
+
* ```ts
|
|
361
|
+
* await this.live.invalidate({ tags: ['todos:' + listId] });
|
|
362
|
+
* ```
|
|
363
|
+
*
|
|
364
|
+
* Every affected live query re-runs and pushes. Returns the commit stamp of
|
|
365
|
+
* the targeted log scope so mutation endpoints can expose it to the client
|
|
366
|
+
* (`Vela-Commit-Cursor` / `Vela-Commit-Epoch`) — the cursor optimistic
|
|
367
|
+
* updates gate on. When ambient request access is enabled
|
|
368
|
+
* (`VelaFactory.create(m, { ambientContainer: true })`) the headers are
|
|
369
|
+
* stamped onto the current HTTP response automatically; otherwise stamp them
|
|
370
|
+
* yourself via {@link stampCommitHeaders}.
|
|
371
|
+
*/
|
|
372
|
+
declare class LiveInvalidation {
|
|
373
|
+
private readonly driver;
|
|
374
|
+
constructor(driver: LiveDriver);
|
|
375
|
+
invalidate(cmd: InvalidationCommand): Promise<CommitStamp | undefined>;
|
|
376
|
+
}
|
|
377
|
+
/** Write the commit headers onto a Hono context (a mutation route's response). */
|
|
378
|
+
declare function stampCommitHeaders(c: {
|
|
379
|
+
header: (name: string, value: string) => unknown;
|
|
380
|
+
}, stamp: CommitStamp): void;
|
|
381
|
+
//#endregion
|
|
382
|
+
//#region src/live/live.cursor.d.ts
|
|
383
|
+
/**
|
|
384
|
+
* The in-core `CursorLog`: a bounded in-memory ring, epoch minted per process
|
|
385
|
+
* (Web Crypto). A restart rolls the epoch, so every reconnecting client falls
|
|
386
|
+
* back to snapshot — exactly the documented node/dev semantics. Within one
|
|
387
|
+
* process lifetime resume works for gaps the ring still covers; a trimmed gap
|
|
388
|
+
* degrades to snapshot (mirrors lunora's CDC retention rule,
|
|
389
|
+
* `ctx-db-cdc.ts` — retention gap → snapshot).
|
|
390
|
+
*
|
|
391
|
+
* The Cloudflare transport replaces this with a Durable-Object SQLite log so
|
|
392
|
+
* resume survives hibernation and eviction.
|
|
393
|
+
*/
|
|
394
|
+
declare class InMemoryCursorLog implements CursorLog {
|
|
395
|
+
private readonly maxEntries;
|
|
396
|
+
private readonly epoch;
|
|
397
|
+
private readonly entries;
|
|
398
|
+
private seq;
|
|
399
|
+
constructor(maxEntries?: number);
|
|
400
|
+
append(tags: string[]): CommitStamp;
|
|
401
|
+
current(): CommitStamp;
|
|
402
|
+
evaluateResume(sinceCursor: number, sinceEpoch: string, subscriptionTags: string[]): ResumeVerdict;
|
|
403
|
+
}
|
|
404
|
+
//#endregion
|
|
405
|
+
//#region src/live/live.delta.d.ts
|
|
406
|
+
/**
|
|
407
|
+
* Decide what one re-run puts on the wire — pure, so the contract is
|
|
408
|
+
* unit-testable without sockets:
|
|
409
|
+
*
|
|
410
|
+
* - byte-identical to the baseline → `settled` (cursor still advances; this
|
|
411
|
+
* is what drops client optimistic layers for writes that didn't change the
|
|
412
|
+
* result);
|
|
413
|
+
* - baseline exists and the shared codec can diff → `delta` (batched keyed
|
|
414
|
+
* row ops);
|
|
415
|
+
* - otherwise (first send after subscribe/resume, codec bailed, unparseable
|
|
416
|
+
* baseline) → full `data` snapshot.
|
|
417
|
+
*/
|
|
418
|
+
declare function encodeSubscriptionUpdate(record: SubscriptionRecord, json: string, result: unknown, stamp: CommitStamp, initial: boolean): ServerLiveFrame;
|
|
419
|
+
//#endregion
|
|
420
|
+
//#region src/live/live.tokens.d.ts
|
|
421
|
+
declare const LIVE_RESOLVER_METADATA = "vela:live:resolver";
|
|
422
|
+
declare const LIVE_QUERY_METADATA = "vela:live:query";
|
|
423
|
+
/** The invalidation driver in effect for a `LiveModule` instance (`localLive()` by default). */
|
|
424
|
+
declare const LIVE_DRIVER: InjectionToken<LiveDriver>;
|
|
425
|
+
/** The ordered tag-invalidation log backing cursors/epochs for this log scope. */
|
|
426
|
+
declare const LIVE_CURSOR_LOG: InjectionToken<CursorLog>;
|
|
427
|
+
declare const LIVE_MODULE_OPTIONS: InjectionToken<LiveModuleOptions>;
|
|
428
|
+
//#endregion
|
|
429
|
+
export { LiveResolverMetadata as $, LiveEngine as A, LiveModule as B, encodeSubscriptionUpdate as C, perAppLiveDriver as D, localLive as E, PresenceService as F, LiveEntrypointMeta as G, CursorLog as H, presenceTag as I, LiveModuleOptions as J, LiveIdentity as K, LiveQuery as L, PRESENCE_ROSTER_QUERY as M, PresenceMember as N, stampCommitHeaders as O, PresenceResolver as P, LiveQueryOptions as Q, LiveResolver as R, LIVE_RESOLVER_METADATA as S, LiveInvalidation as T, InvalidationCommand as U, CommitStamp as V, LiveDriver as W, LiveQueryContext as X, LivePresenceOptions as Y, LiveQueryMetadata as Z, readLiveEnvelope as _, LIVE_ERROR_CODES$1 as a, LIVE_MODULE_OPTIONS as b, LiveFrame as c, applyListDelta as d, ResumeVerdict as et, encodeListDelta$1 as f, isServerLiveFrame as g, isClientLiveFrame$1 as h, DEFAULT_KEY_FIELD$1 as i, readPersistedLiveSubscriptions as j, LIVE_SUBS_DATA_KEY as k, RowOp as l, encodeLiveFrame as m, COMMIT_EPOCH_HEADER$1 as n, LIVE_EVENT as o, encodeLiveEnvelope$1 as p, LiveInvalidationSink as q, ClientLiveFrame as r, LIVE_PROTOCOL$1 as s, COMMIT_CURSOR_HEADER$1 as t, SubscriptionRecord as tt, ServerLiveFrame$1 as u, LIVE_CURSOR_LOG as v, InMemoryCursorLog as w, LIVE_QUERY_METADATA as x, LIVE_DRIVER as y, getLiveQueries as z };
|
|
430
|
+
//# sourceMappingURL=index-D72EQfcC.d.ts.map
|