@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
package/package.json
CHANGED
|
@@ -1,8 +1,41 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@velajs/vela",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.19.1",
|
|
4
4
|
"description": "NestJS-compatible framework for edge runtimes, powered by Hono",
|
|
5
|
+
"keywords": [
|
|
6
|
+
"bun",
|
|
7
|
+
"cloudflare-workers",
|
|
8
|
+
"decorators",
|
|
9
|
+
"deno",
|
|
10
|
+
"dependency-injection",
|
|
11
|
+
"edge",
|
|
12
|
+
"framework",
|
|
13
|
+
"hono",
|
|
14
|
+
"nestjs",
|
|
15
|
+
"typescript"
|
|
16
|
+
],
|
|
17
|
+
"homepage": "https://github.com/velajs/vela#readme",
|
|
18
|
+
"bugs": {
|
|
19
|
+
"url": "https://github.com/velajs/vela/issues"
|
|
20
|
+
},
|
|
21
|
+
"license": "MIT",
|
|
22
|
+
"author": "ksh",
|
|
23
|
+
"repository": {
|
|
24
|
+
"type": "git",
|
|
25
|
+
"url": "git+https://github.com/velajs/vela.git"
|
|
26
|
+
},
|
|
27
|
+
"files": [
|
|
28
|
+
"dist",
|
|
29
|
+
"README.md",
|
|
30
|
+
"LICENSE",
|
|
31
|
+
"CHANGELOG.md"
|
|
32
|
+
],
|
|
5
33
|
"type": "module",
|
|
34
|
+
"sideEffects": [
|
|
35
|
+
"./dist/index.js",
|
|
36
|
+
"./dist/metadata.js",
|
|
37
|
+
"./dist/schedule-node/index.js"
|
|
38
|
+
],
|
|
6
39
|
"main": "./dist/index.js",
|
|
7
40
|
"types": "./dist/index.d.ts",
|
|
8
41
|
"exports": {
|
|
@@ -51,46 +84,29 @@
|
|
|
51
84
|
"import": "./dist/seeder/index.js"
|
|
52
85
|
}
|
|
53
86
|
},
|
|
54
|
-
"files": [
|
|
55
|
-
"dist",
|
|
56
|
-
"README.md",
|
|
57
|
-
"LICENSE",
|
|
58
|
-
"CHANGELOG.md"
|
|
59
|
-
],
|
|
60
|
-
"sideEffects": [
|
|
61
|
-
"./dist/index.js",
|
|
62
|
-
"./dist/metadata.js",
|
|
63
|
-
"./dist/schedule-node/index.js"
|
|
64
|
-
],
|
|
65
|
-
"keywords": [
|
|
66
|
-
"edge",
|
|
67
|
-
"hono",
|
|
68
|
-
"nestjs",
|
|
69
|
-
"framework",
|
|
70
|
-
"decorators",
|
|
71
|
-
"dependency-injection",
|
|
72
|
-
"cloudflare-workers",
|
|
73
|
-
"deno",
|
|
74
|
-
"bun",
|
|
75
|
-
"typescript"
|
|
76
|
-
],
|
|
77
|
-
"author": "ksh",
|
|
78
|
-
"license": "MIT",
|
|
79
|
-
"repository": {
|
|
80
|
-
"type": "git",
|
|
81
|
-
"url": "git+https://github.com/velajs/vela.git"
|
|
82
|
-
},
|
|
83
|
-
"homepage": "https://github.com/velajs/vela#readme",
|
|
84
|
-
"bugs": {
|
|
85
|
-
"url": "https://github.com/velajs/vela/issues"
|
|
86
|
-
},
|
|
87
|
-
"engines": {
|
|
88
|
-
"node": ">=20"
|
|
89
|
-
},
|
|
90
87
|
"dependencies": {
|
|
88
|
+
"@velajs/errors": "^1.0.0",
|
|
91
89
|
"@velajs/live-protocol": "^1.0.0",
|
|
92
90
|
"hono": "^4.12.26"
|
|
93
91
|
},
|
|
92
|
+
"devDependencies": {
|
|
93
|
+
"@arethetypeswrong/cli": "^0.18.5",
|
|
94
|
+
"@changesets/cli": "^2.31.0",
|
|
95
|
+
"@cloudflare/vitest-pool-workers": "^0.16.18",
|
|
96
|
+
"@swc/core": "^1.15.43",
|
|
97
|
+
"@types/bun": "latest",
|
|
98
|
+
"@vitest/runner": "^4.1.10",
|
|
99
|
+
"@vitest/snapshot": "^4.1.10",
|
|
100
|
+
"intl-messageformat": "^11.2.9",
|
|
101
|
+
"oxfmt": "^0.58.0",
|
|
102
|
+
"oxlint": "^1.73.0",
|
|
103
|
+
"publint": "^0.3.21",
|
|
104
|
+
"tsdown": "^0.22.4",
|
|
105
|
+
"typescript": "^7.0.2",
|
|
106
|
+
"unplugin-swc": "^1.5.9",
|
|
107
|
+
"vitest": "^4.1.10",
|
|
108
|
+
"zod": "^4.4.3"
|
|
109
|
+
},
|
|
94
110
|
"peerDependencies": {
|
|
95
111
|
"intl-messageformat": ">=10"
|
|
96
112
|
},
|
|
@@ -99,28 +115,26 @@
|
|
|
99
115
|
"optional": true
|
|
100
116
|
}
|
|
101
117
|
},
|
|
102
|
-
"
|
|
103
|
-
"
|
|
104
|
-
"@swc/cli": "^0.8.1",
|
|
105
|
-
"@swc/core": "^1.15.41",
|
|
106
|
-
"@types/bun": "latest",
|
|
107
|
-
"@vitest/runner": "^4.1.9",
|
|
108
|
-
"@vitest/snapshot": "^4.1.9",
|
|
109
|
-
"intl-messageformat": "^11.2.9",
|
|
110
|
-
"typedoc": "~0.28.19",
|
|
111
|
-
"typescript": "^6.0.3",
|
|
112
|
-
"unplugin-swc": "^1.5.9",
|
|
113
|
-
"vitest": "^4.1.9",
|
|
114
|
-
"zod": "^4.4.3"
|
|
118
|
+
"engines": {
|
|
119
|
+
"node": ">=24"
|
|
115
120
|
},
|
|
116
121
|
"scripts": {
|
|
117
|
-
"build": "
|
|
122
|
+
"build": "tsdown",
|
|
118
123
|
"test": "vitest run",
|
|
119
124
|
"test:workers": "vitest run --config vitest.config.workers.ts",
|
|
120
125
|
"test:workers:als": "vitest run --config vitest.config.workers-als.ts",
|
|
121
126
|
"typecheck": "tsc --noEmit && tsc --noEmit -p tsconfig.type-tests.json",
|
|
122
127
|
"check:skill": "node scripts/check-skill.mjs",
|
|
123
|
-
"docs": "
|
|
124
|
-
"docs:check": "
|
|
128
|
+
"docs": "pnpm --dir tools/docs docs",
|
|
129
|
+
"docs:check": "pnpm --dir tools/docs docs:check",
|
|
130
|
+
"lint": "oxlint .",
|
|
131
|
+
"format": "oxfmt .",
|
|
132
|
+
"format:check": "oxfmt --check .",
|
|
133
|
+
"publint": "publint",
|
|
134
|
+
"attw": "attw --pack . --profile esm-only",
|
|
135
|
+
"changeset": "changeset",
|
|
136
|
+
"version-packages": "changeset version && node scripts/sync-skill-version.mjs",
|
|
137
|
+
"release": "pnpm build && changeset publish",
|
|
138
|
+
"verify": "pnpm lint && pnpm format:check && pnpm build && pnpm typecheck && pnpm check:skill && pnpm docs:check && pnpm test && pnpm test:workers && pnpm test:workers:als && pnpm publint && pnpm attw"
|
|
125
139
|
}
|
|
126
140
|
}
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
declare const _default: {
|
|
2
|
-
fetch(request: Request, _env: unknown, _ctx: unknown): Promise<Response>;
|
|
3
|
-
};
|
|
4
|
-
export default _default;
|
|
5
|
-
declare global {
|
|
6
|
-
interface ExportedHandler<Env = unknown> {
|
|
7
|
-
fetch?(request: Request, env: Env, ctx: unknown): Response | Promise<Response>;
|
|
8
|
-
}
|
|
9
|
-
}
|
package/dist/application.d.ts
DELETED
|
@@ -1,91 +0,0 @@
|
|
|
1
|
-
import type { Hono } from 'hono';
|
|
2
|
-
import type { Container } from './container/container';
|
|
3
|
-
import type { Token } from './container/types';
|
|
4
|
-
import { EntrypointRegistry } from './entrypoint/entrypoint.registry';
|
|
5
|
-
import type { RouteDescription, RouteManager } from './http/route.manager';
|
|
6
|
-
import type { MountOpenApiOptions } from './openapi/types';
|
|
7
|
-
import type { FilterType, GuardType, InterceptorType, PipeType } from './registry/types';
|
|
8
|
-
export declare class VelaApplication {
|
|
9
|
-
private readonly container;
|
|
10
|
-
private readonly routeManager;
|
|
11
|
-
private instances;
|
|
12
|
-
private honoApp;
|
|
13
|
-
private entrypointRegistry;
|
|
14
|
-
private disposed;
|
|
15
|
-
private readonly lazyManager;
|
|
16
|
-
private readonly knownInstances;
|
|
17
|
-
constructor(container: Container, routeManager: RouteManager);
|
|
18
|
-
private trackNew;
|
|
19
|
-
/** Pre-build routes (handles async CRUD imports). Called by VelaFactory. */
|
|
20
|
-
initRoutes(): Promise<void>;
|
|
21
|
-
private getApp;
|
|
22
|
-
get fetch(): Hono['fetch'];
|
|
23
|
-
getInstances(): unknown[];
|
|
24
|
-
getContainer(): Container;
|
|
25
|
-
setInstances(instances: unknown[]): void;
|
|
26
|
-
get<T>(token: Token<T>): T;
|
|
27
|
-
getHonoApp(): Hono;
|
|
28
|
-
/**
|
|
29
|
-
* Every explicit controller route as the framework registered it (fully
|
|
30
|
-
* composed paths — the `vela route list` seam). Requires built routes;
|
|
31
|
-
* contributed routes (`@velajs/crud`) mount directly on Hono and are
|
|
32
|
-
* observable via `getHonoApp().routes` instead.
|
|
33
|
-
*/
|
|
34
|
-
describeRoutes(): RouteDescription[];
|
|
35
|
-
/** The global route prefix in effect ('' when none). */
|
|
36
|
-
getGlobalPrefix(): string;
|
|
37
|
-
useGlobalPipes(...pipes: PipeType[]): this;
|
|
38
|
-
useGlobalGuards(...guards: GuardType[]): this;
|
|
39
|
-
useGlobalInterceptors(...interceptors: InterceptorType[]): this;
|
|
40
|
-
useGlobalFilters(...filters: FilterType[]): this;
|
|
41
|
-
/**
|
|
42
|
-
* Serve a pre-built OpenAPI document and one or more interactive doc UIs
|
|
43
|
-
* (Swagger UI, Scalar, ReDoc) on the underlying Hono app, mirroring the
|
|
44
|
-
* hono-crud docs convention. Edge-safe: each UI is a tiny self-contained
|
|
45
|
-
* HTML shell that loads its renderer from a CDN at runtime so nothing is
|
|
46
|
-
* bundled server-side and no extra dependency is required.
|
|
47
|
-
*
|
|
48
|
-
* Defaults: spec at `/openapi.json`, Scalar at `/scalar`, Swagger UI at
|
|
49
|
-
* `/docs`, ReDoc at `/redoc`. The deprecated `path` / `uiPath` aliases are
|
|
50
|
-
* retained for migration from the previous single-UI shape.
|
|
51
|
-
*
|
|
52
|
-
* ```ts
|
|
53
|
-
* const doc = createOpenApiDocument(AppModule);
|
|
54
|
-
* app.mountOpenApi({ document: doc }); // Scalar @ /scalar
|
|
55
|
-
* app.mountOpenApi({ document: doc, ui: 'all' }); // swagger + scalar + redoc
|
|
56
|
-
* ```
|
|
57
|
-
*/
|
|
58
|
-
mountOpenApi(options: MountOpenApiOptions): this;
|
|
59
|
-
/**
|
|
60
|
-
* Pull instances materialized during the bootstrap phase (lazy modules
|
|
61
|
-
* dragged in by eager consumers) into the front of the instance list —
|
|
62
|
-
* dependency-before-consumer: a group absorbed because an eager provider
|
|
63
|
-
* injected it must be initialized before that consumer's hooks read it.
|
|
64
|
-
*/
|
|
65
|
-
private absorbLazyInstances;
|
|
66
|
-
callOnModuleInit(): Promise<void>;
|
|
67
|
-
callOnApplicationBootstrap(): Promise<void>;
|
|
68
|
-
/**
|
|
69
|
-
* Materialize every still-pending lazy module (async-safe): construct the
|
|
70
|
-
* groups, replay their lifecycle hooks, and add their instances to the
|
|
71
|
-
* shutdown flow. Warmup escape hatch for tests and node runtimes that want
|
|
72
|
-
* eager-everything semantics back after bootstrap.
|
|
73
|
-
*/
|
|
74
|
-
materializeLazyModules(): Promise<void>;
|
|
75
|
-
/**
|
|
76
|
-
* Every entrypoint contributed by the module graph, grouped by kind —
|
|
77
|
-
* what runtime adapters/transports query instead of re-scanning providers:
|
|
78
|
-
* `app.entrypoints.ofKind('websocket')`.
|
|
79
|
-
*/
|
|
80
|
-
get entrypoints(): EntrypointRegistry;
|
|
81
|
-
close(signal?: string): Promise<void>;
|
|
82
|
-
/**
|
|
83
|
-
* Full teardown: run shutdown lifecycle hooks ({@link close}) then dispose
|
|
84
|
-
* container-held instances (LIFO) and clear cached singletons. Use for
|
|
85
|
-
* graceful shutdown and dev HMR so old and new DI graphs never coexist.
|
|
86
|
-
*
|
|
87
|
-
* On runtimes/TS supporting explicit resource management this is also exposed
|
|
88
|
-
* as `Symbol.asyncDispose`, enabling `await using app = await VelaFactory.create(...)`.
|
|
89
|
-
*/
|
|
90
|
-
dispose(signal?: string): Promise<void>;
|
|
91
|
-
}
|
package/dist/application.js
DELETED
|
@@ -1,308 +0,0 @@
|
|
|
1
|
-
import { DiscoveryService } from "./discovery/discovery.service.js";
|
|
2
|
-
import { EntrypointRegistry } from "./entrypoint/entrypoint.registry.js";
|
|
3
|
-
import { LazyModuleManager } from "./module/lazy-modules.js";
|
|
4
|
-
import { hasBeforeApplicationShutdown, hasOnApplicationBootstrap, hasOnApplicationShutdown, hasOnModuleDestroy, hasOnModuleInit } from "./lifecycle/index.js";
|
|
5
|
-
import { renderScalarUi } from "./openapi/scalar-ui.js";
|
|
6
|
-
import { renderSwaggerUi } from "./openapi/swagger-ui.js";
|
|
7
|
-
import { renderRedocUi } from "./openapi/redoc-ui.js";
|
|
8
|
-
export class VelaApplication {
|
|
9
|
-
container;
|
|
10
|
-
routeManager;
|
|
11
|
-
instances = [];
|
|
12
|
-
honoApp = null;
|
|
13
|
-
entrypointRegistry = null;
|
|
14
|
-
disposed = false;
|
|
15
|
-
lazyManager;
|
|
16
|
-
// Identity guard for the instance flow: a token registered by BOTH a lazy
|
|
17
|
-
// and an eager module reaches us through the eager pass AND the absorbed
|
|
18
|
-
// batch — without dedup its hooks would run twice.
|
|
19
|
-
knownInstances = new Set();
|
|
20
|
-
constructor(container, routeManager){
|
|
21
|
-
this.container = container;
|
|
22
|
-
this.routeManager = routeManager;
|
|
23
|
-
// bootstrap() registers the manager; a hand-built container may not have
|
|
24
|
-
// one (container unit tests) — lazy semantics simply don't engage then.
|
|
25
|
-
this.lazyManager = container.has(LazyModuleManager) ? container.resolve(LazyModuleManager) : undefined;
|
|
26
|
-
// Live-phase materializations join the instance flow so close()/dispose()
|
|
27
|
-
// run shutdown hooks over them (LIFO — appended last, destroyed first).
|
|
28
|
-
this.lazyManager?.setOnMaterialized((instances)=>{
|
|
29
|
-
this.instances.push(...this.trackNew(instances));
|
|
30
|
-
});
|
|
31
|
-
}
|
|
32
|
-
trackNew(batch) {
|
|
33
|
-
const fresh = batch.filter((i)=>!this.knownInstances.has(i));
|
|
34
|
-
for (const i of fresh)this.knownInstances.add(i);
|
|
35
|
-
return fresh;
|
|
36
|
-
}
|
|
37
|
-
/** Pre-build routes (handles async CRUD imports). Called by VelaFactory. */ async initRoutes() {
|
|
38
|
-
this.honoApp = await this.routeManager.build();
|
|
39
|
-
}
|
|
40
|
-
getApp() {
|
|
41
|
-
if (!this.honoApp) {
|
|
42
|
-
throw new Error('Routes not built. This should not happen — VelaFactory.create() builds routes automatically.');
|
|
43
|
-
}
|
|
44
|
-
return this.honoApp;
|
|
45
|
-
}
|
|
46
|
-
get fetch() {
|
|
47
|
-
return this.getApp().fetch;
|
|
48
|
-
}
|
|
49
|
-
getInstances() {
|
|
50
|
-
return this.instances;
|
|
51
|
-
}
|
|
52
|
-
getContainer() {
|
|
53
|
-
return this.container;
|
|
54
|
-
}
|
|
55
|
-
setInstances(instances) {
|
|
56
|
-
this.instances = instances;
|
|
57
|
-
this.knownInstances.clear();
|
|
58
|
-
for (const i of instances)this.knownInstances.add(i);
|
|
59
|
-
}
|
|
60
|
-
get(token) {
|
|
61
|
-
return this.container.resolve(token);
|
|
62
|
-
}
|
|
63
|
-
getHonoApp() {
|
|
64
|
-
return this.getApp();
|
|
65
|
-
}
|
|
66
|
-
/**
|
|
67
|
-
* Every explicit controller route as the framework registered it (fully
|
|
68
|
-
* composed paths — the `vela route list` seam). Requires built routes;
|
|
69
|
-
* contributed routes (`@velajs/crud`) mount directly on Hono and are
|
|
70
|
-
* observable via `getHonoApp().routes` instead.
|
|
71
|
-
*/ describeRoutes() {
|
|
72
|
-
this.getApp(); // same routes-not-built guard as every HTTP accessor
|
|
73
|
-
return this.routeManager.getRouteDescriptions();
|
|
74
|
-
}
|
|
75
|
-
/** The global route prefix in effect ('' when none). */ getGlobalPrefix() {
|
|
76
|
-
return this.routeManager.getGlobalPrefix();
|
|
77
|
-
}
|
|
78
|
-
// Pipeline components — applied at request time, no rebuild needed
|
|
79
|
-
useGlobalPipes(...pipes) {
|
|
80
|
-
this.routeManager.useGlobalPipes(...pipes);
|
|
81
|
-
return this;
|
|
82
|
-
}
|
|
83
|
-
useGlobalGuards(...guards) {
|
|
84
|
-
this.routeManager.useGlobalGuards(...guards);
|
|
85
|
-
return this;
|
|
86
|
-
}
|
|
87
|
-
useGlobalInterceptors(...interceptors) {
|
|
88
|
-
this.routeManager.useGlobalInterceptors(...interceptors);
|
|
89
|
-
return this;
|
|
90
|
-
}
|
|
91
|
-
useGlobalFilters(...filters) {
|
|
92
|
-
this.routeManager.useGlobalFilters(...filters);
|
|
93
|
-
return this;
|
|
94
|
-
}
|
|
95
|
-
/**
|
|
96
|
-
* Serve a pre-built OpenAPI document and one or more interactive doc UIs
|
|
97
|
-
* (Swagger UI, Scalar, ReDoc) on the underlying Hono app, mirroring the
|
|
98
|
-
* hono-crud docs convention. Edge-safe: each UI is a tiny self-contained
|
|
99
|
-
* HTML shell that loads its renderer from a CDN at runtime so nothing is
|
|
100
|
-
* bundled server-side and no extra dependency is required.
|
|
101
|
-
*
|
|
102
|
-
* Defaults: spec at `/openapi.json`, Scalar at `/scalar`, Swagger UI at
|
|
103
|
-
* `/docs`, ReDoc at `/redoc`. The deprecated `path` / `uiPath` aliases are
|
|
104
|
-
* retained for migration from the previous single-UI shape.
|
|
105
|
-
*
|
|
106
|
-
* ```ts
|
|
107
|
-
* const doc = createOpenApiDocument(AppModule);
|
|
108
|
-
* app.mountOpenApi({ document: doc }); // Scalar @ /scalar
|
|
109
|
-
* app.mountOpenApi({ document: doc, ui: 'all' }); // swagger + scalar + redoc
|
|
110
|
-
* ```
|
|
111
|
-
*/ mountOpenApi(options) {
|
|
112
|
-
const app = this.getApp();
|
|
113
|
-
const doc = options.document;
|
|
114
|
-
const title = options.title;
|
|
115
|
-
// Spec JSON: new default `/openapi.json`. The deprecated `path` alias is
|
|
116
|
-
// honored as an override only (does not change the default).
|
|
117
|
-
const specPath = options.specPath ?? options.path ?? '/openapi.json';
|
|
118
|
-
app.get(specPath, (c)=>c.json(doc));
|
|
119
|
-
// Normalize the requested UI set. Default is Scalar only.
|
|
120
|
-
const uiOption = options.ui;
|
|
121
|
-
let uis;
|
|
122
|
-
let singleStringUi = false;
|
|
123
|
-
if (uiOption === undefined) {
|
|
124
|
-
uis = [
|
|
125
|
-
'scalar'
|
|
126
|
-
];
|
|
127
|
-
} else if (uiOption === 'all') {
|
|
128
|
-
uis = [
|
|
129
|
-
'swagger',
|
|
130
|
-
'scalar',
|
|
131
|
-
'redoc'
|
|
132
|
-
];
|
|
133
|
-
} else if (Array.isArray(uiOption)) {
|
|
134
|
-
uis = uiOption;
|
|
135
|
-
} else {
|
|
136
|
-
uis = [
|
|
137
|
-
uiOption
|
|
138
|
-
];
|
|
139
|
-
singleStringUi = true;
|
|
140
|
-
}
|
|
141
|
-
for (const ui of uis){
|
|
142
|
-
// Back-compat: the old `{ ui: 'scalar', uiPath }` form mapped a single
|
|
143
|
-
// string UI to `uiPath`. Honor that only when exactly one UI was
|
|
144
|
-
// requested as a string.
|
|
145
|
-
const legacyPath = singleStringUi && uis.length === 1 ? options.uiPath : undefined;
|
|
146
|
-
if (ui === 'swagger') {
|
|
147
|
-
const path = legacyPath ?? options.swaggerPath ?? '/docs';
|
|
148
|
-
const html = renderSwaggerUi(specPath, title);
|
|
149
|
-
app.get(path, (c)=>c.html(html));
|
|
150
|
-
} else if (ui === 'redoc') {
|
|
151
|
-
const path = legacyPath ?? options.redocPath ?? '/redoc';
|
|
152
|
-
const html = renderRedocUi(specPath, title);
|
|
153
|
-
app.get(path, (c)=>c.html(html));
|
|
154
|
-
} else {
|
|
155
|
-
const path = legacyPath ?? options.scalarPath ?? '/scalar';
|
|
156
|
-
const html = renderScalarUi(specPath, title);
|
|
157
|
-
app.get(path, (c)=>c.html(html));
|
|
158
|
-
}
|
|
159
|
-
}
|
|
160
|
-
return this;
|
|
161
|
-
}
|
|
162
|
-
// Lifecycle hooks
|
|
163
|
-
/**
|
|
164
|
-
* Pull instances materialized during the bootstrap phase (lazy modules
|
|
165
|
-
* dragged in by eager consumers) into the front of the instance list —
|
|
166
|
-
* dependency-before-consumer: a group absorbed because an eager provider
|
|
167
|
-
* injected it must be initialized before that consumer's hooks read it.
|
|
168
|
-
*/ absorbLazyInstances(prepend) {
|
|
169
|
-
const batch = this.trackNew(this.lazyManager?.takeAbsorbed() ?? []);
|
|
170
|
-
if (batch.length === 0) return batch;
|
|
171
|
-
if (prepend) {
|
|
172
|
-
this.instances = [
|
|
173
|
-
...batch,
|
|
174
|
-
...this.instances
|
|
175
|
-
];
|
|
176
|
-
} else {
|
|
177
|
-
this.instances.push(...batch);
|
|
178
|
-
}
|
|
179
|
-
return batch;
|
|
180
|
-
}
|
|
181
|
-
async callOnModuleInit() {
|
|
182
|
-
this.absorbLazyInstances(true);
|
|
183
|
-
// Index loop: hooks can trigger further absorptions, which append —
|
|
184
|
-
// the loop naturally covers them.
|
|
185
|
-
for(let i = 0; i < this.instances.length; i++){
|
|
186
|
-
const instance = this.instances[i];
|
|
187
|
-
if (hasOnModuleInit(instance)) {
|
|
188
|
-
await instance.onModuleInit();
|
|
189
|
-
}
|
|
190
|
-
this.absorbLazyInstances(false);
|
|
191
|
-
}
|
|
192
|
-
}
|
|
193
|
-
async callOnApplicationBootstrap() {
|
|
194
|
-
for(let i = 0; i < this.instances.length; i++){
|
|
195
|
-
const instance = this.instances[i];
|
|
196
|
-
if (hasOnApplicationBootstrap(instance)) {
|
|
197
|
-
await instance.onApplicationBootstrap();
|
|
198
|
-
}
|
|
199
|
-
// Instances absorbed mid-phase already missed the init pass — run
|
|
200
|
-
// onModuleInit now; the loop then reaches them for the bootstrap hook.
|
|
201
|
-
for (const late of this.absorbLazyInstances(false)){
|
|
202
|
-
if (hasOnModuleInit(late)) await late.onModuleInit();
|
|
203
|
-
}
|
|
204
|
-
}
|
|
205
|
-
// Computed-entrypoint contributors (ContributesEntrypoints) in lazy
|
|
206
|
-
// modules must exist before the snapshot below — materialize them now
|
|
207
|
-
// (the documented cost of contributing computed entrypoints), then run
|
|
208
|
-
// their hooks through the same absorb loop.
|
|
209
|
-
if (this.lazyManager) {
|
|
210
|
-
await this.lazyManager.materializeContributors();
|
|
211
|
-
let batch;
|
|
212
|
-
while((batch = this.absorbLazyInstances(false)).length > 0){
|
|
213
|
-
for (const late of batch){
|
|
214
|
-
if (hasOnModuleInit(late)) await late.onModuleInit();
|
|
215
|
-
}
|
|
216
|
-
for (const late of batch){
|
|
217
|
-
if (hasOnApplicationBootstrap(late)) await late.onApplicationBootstrap();
|
|
218
|
-
}
|
|
219
|
-
}
|
|
220
|
-
// From here on, materializations replay their hooks at the trigger.
|
|
221
|
-
this.lazyManager.setPhaseLive();
|
|
222
|
-
}
|
|
223
|
-
// Build the per-app entrypoint registry AFTER the hooks: dispatchers that
|
|
224
|
-
// implement ContributesEntrypoints (WsDispatcher) finish their own
|
|
225
|
-
// discovery inside onApplicationBootstrap. Built here — not in
|
|
226
|
-
// VelaFactory/initRoutes — so slim bootstrap paths that never build HTTP
|
|
227
|
-
// routes (the Cloudflare Durable Object) still get `app.entrypoints`.
|
|
228
|
-
// Lazy-pending providers of declared kinds yield metadata-only entries
|
|
229
|
-
// (instance: undefined) — dispatchers re-resolve by token per event,
|
|
230
|
-
// which materializes the owning module at dispatch time.
|
|
231
|
-
const discovery = this.container.has(DiscoveryService) ? this.container.resolve(DiscoveryService) : new DiscoveryService(this.container);
|
|
232
|
-
this.entrypointRegistry = await EntrypointRegistry.build(discovery, this.instances, {
|
|
233
|
-
deferLazy: true
|
|
234
|
-
});
|
|
235
|
-
// Make the per-app registry injectable (global token): providers that
|
|
236
|
-
// dispatch entrypoints themselves (the queue module's in-process driver
|
|
237
|
-
// binding) resolve it instead of needing a back-reference to the app.
|
|
238
|
-
// Registered AFTER build so anything resolving it sees the final registry;
|
|
239
|
-
// pre-bootstrap resolution attempts fail the `has()` probe and defer.
|
|
240
|
-
this.container.register({
|
|
241
|
-
provide: EntrypointRegistry,
|
|
242
|
-
useValue: this.entrypointRegistry
|
|
243
|
-
});
|
|
244
|
-
this.container.markGlobalToken(EntrypointRegistry);
|
|
245
|
-
}
|
|
246
|
-
/**
|
|
247
|
-
* Materialize every still-pending lazy module (async-safe): construct the
|
|
248
|
-
* groups, replay their lifecycle hooks, and add their instances to the
|
|
249
|
-
* shutdown flow. Warmup escape hatch for tests and node runtimes that want
|
|
250
|
-
* eager-everything semantics back after bootstrap.
|
|
251
|
-
*/ async materializeLazyModules() {
|
|
252
|
-
await this.lazyManager?.materializeAll();
|
|
253
|
-
}
|
|
254
|
-
/**
|
|
255
|
-
* Every entrypoint contributed by the module graph, grouped by kind —
|
|
256
|
-
* what runtime adapters/transports query instead of re-scanning providers:
|
|
257
|
-
* `app.entrypoints.ofKind('websocket')`.
|
|
258
|
-
*/ get entrypoints() {
|
|
259
|
-
if (!this.entrypointRegistry) {
|
|
260
|
-
throw new Error('Entrypoints are not built yet — they are assembled at the end of ' + 'callOnApplicationBootstrap(). Finish bootstrapping before querying them.');
|
|
261
|
-
}
|
|
262
|
-
return this.entrypointRegistry;
|
|
263
|
-
}
|
|
264
|
-
async close(signal) {
|
|
265
|
-
const reversed = [
|
|
266
|
-
...this.instances
|
|
267
|
-
].reverse();
|
|
268
|
-
for (const instance of reversed){
|
|
269
|
-
if (hasBeforeApplicationShutdown(instance)) {
|
|
270
|
-
await instance.beforeApplicationShutdown(signal);
|
|
271
|
-
}
|
|
272
|
-
}
|
|
273
|
-
for (const instance of reversed){
|
|
274
|
-
if (hasOnModuleDestroy(instance)) {
|
|
275
|
-
await instance.onModuleDestroy();
|
|
276
|
-
}
|
|
277
|
-
}
|
|
278
|
-
for (const instance of reversed){
|
|
279
|
-
if (hasOnApplicationShutdown(instance)) {
|
|
280
|
-
await instance.onApplicationShutdown(signal);
|
|
281
|
-
}
|
|
282
|
-
}
|
|
283
|
-
}
|
|
284
|
-
/**
|
|
285
|
-
* Full teardown: run shutdown lifecycle hooks ({@link close}) then dispose
|
|
286
|
-
* container-held instances (LIFO) and clear cached singletons. Use for
|
|
287
|
-
* graceful shutdown and dev HMR so old and new DI graphs never coexist.
|
|
288
|
-
*
|
|
289
|
-
* On runtimes/TS supporting explicit resource management this is also exposed
|
|
290
|
-
* as `Symbol.asyncDispose`, enabling `await using app = await VelaFactory.create(...)`.
|
|
291
|
-
*/ async dispose(signal) {
|
|
292
|
-
// Idempotent: `await using` + an explicit dispose(), or repeated shutdown
|
|
293
|
-
// signals, must not re-run shutdown lifecycle hooks.
|
|
294
|
-
if (this.disposed) return;
|
|
295
|
-
this.disposed = true;
|
|
296
|
-
await this.close(signal);
|
|
297
|
-
await this.container.dispose();
|
|
298
|
-
}
|
|
299
|
-
}
|
|
300
|
-
// Attach the well-known async-dispose symbol at runtime (it is not in the
|
|
301
|
-
// ES2022 lib the project compiles against) so `await using` works where
|
|
302
|
-
// supported, without a type dependency on esnext.disposable.
|
|
303
|
-
const ASYNC_DISPOSE = Symbol.asyncDispose;
|
|
304
|
-
if (ASYNC_DISPOSE) {
|
|
305
|
-
VelaApplication.prototype[ASYNC_DISPOSE] = function() {
|
|
306
|
-
return this.dispose();
|
|
307
|
-
};
|
|
308
|
-
}
|
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
import { SetMetadata } from "../pipeline/reflector.js";
|
|
2
|
-
import { CACHE_KEY_METADATA, CACHE_TTL_METADATA } from "./cache.tokens.js";
|
|
3
|
-
export const CacheKey = (key)=>SetMetadata(CACHE_KEY_METADATA, key);
|
|
4
|
-
export const CacheTTL = (seconds)=>SetMetadata(CACHE_TTL_METADATA, seconds);
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import type { ExecutionContext, CallHandler, NestInterceptor } from '../pipeline/types';
|
|
2
|
-
import type { CacheModuleOptions, CacheStore } from './cache.types';
|
|
3
|
-
export declare class CacheInterceptor implements NestInterceptor {
|
|
4
|
-
private cacheStore;
|
|
5
|
-
private options;
|
|
6
|
-
private reflector;
|
|
7
|
-
constructor(cacheStore: CacheStore, options: CacheModuleOptions);
|
|
8
|
-
intercept(context: ExecutionContext, next: CallHandler): Promise<unknown>;
|
|
9
|
-
}
|
|
@@ -1,60 +0,0 @@
|
|
|
1
|
-
function _ts_decorate(decorators, target, key, desc) {
|
|
2
|
-
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
-
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
4
|
-
else for(var i = decorators.length - 1; i >= 0; i--)if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
5
|
-
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
-
}
|
|
7
|
-
function _ts_metadata(k, v) {
|
|
8
|
-
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
9
|
-
}
|
|
10
|
-
function _ts_param(paramIndex, decorator) {
|
|
11
|
-
return function(target, key) {
|
|
12
|
-
decorator(target, key, paramIndex);
|
|
13
|
-
};
|
|
14
|
-
}
|
|
15
|
-
import { Injectable, Inject } from "../container/decorators.js";
|
|
16
|
-
import { Reflector } from "../pipeline/reflector.js";
|
|
17
|
-
import { CACHE_MANAGER, CACHE_MODULE_OPTIONS, CACHE_KEY_METADATA, CACHE_TTL_METADATA } from "./cache.tokens.js";
|
|
18
|
-
export class CacheInterceptor {
|
|
19
|
-
cacheStore;
|
|
20
|
-
options;
|
|
21
|
-
reflector = new Reflector();
|
|
22
|
-
constructor(cacheStore, options){
|
|
23
|
-
this.cacheStore = cacheStore;
|
|
24
|
-
this.options = options;
|
|
25
|
-
}
|
|
26
|
-
async intercept(context, next) {
|
|
27
|
-
const request = context.getRequest();
|
|
28
|
-
// Only cache GET requests
|
|
29
|
-
if (request.method !== 'GET') {
|
|
30
|
-
return next.handle();
|
|
31
|
-
}
|
|
32
|
-
// Determine cache key
|
|
33
|
-
const customKey = this.reflector.getAllAndOverride(CACHE_KEY_METADATA, context);
|
|
34
|
-
const url = new URL(request.url);
|
|
35
|
-
const cacheKey = customKey ?? `cache:GET:${url.pathname}`;
|
|
36
|
-
// Check cache
|
|
37
|
-
const cached = this.cacheStore.get(cacheKey);
|
|
38
|
-
if (cached !== undefined) {
|
|
39
|
-
return cached;
|
|
40
|
-
}
|
|
41
|
-
// Execute handler
|
|
42
|
-
const result = await next.handle();
|
|
43
|
-
// Determine TTL
|
|
44
|
-
const customTtl = this.reflector.getAllAndOverride(CACHE_TTL_METADATA, context);
|
|
45
|
-
const ttl = customTtl ?? this.options.ttl ?? 5;
|
|
46
|
-
// Store in cache
|
|
47
|
-
this.cacheStore.set(cacheKey, result, ttl);
|
|
48
|
-
return result;
|
|
49
|
-
}
|
|
50
|
-
}
|
|
51
|
-
CacheInterceptor = _ts_decorate([
|
|
52
|
-
Injectable(),
|
|
53
|
-
_ts_param(0, Inject(CACHE_MANAGER)),
|
|
54
|
-
_ts_param(1, Inject(CACHE_MODULE_OPTIONS)),
|
|
55
|
-
_ts_metadata("design:type", Function),
|
|
56
|
-
_ts_metadata("design:paramtypes", [
|
|
57
|
-
typeof CacheStore === "undefined" ? Object : CacheStore,
|
|
58
|
-
typeof CacheModuleOptions === "undefined" ? Object : CacheModuleOptions
|
|
59
|
-
])
|
|
60
|
-
], CacheInterceptor);
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
import type { CacheModuleOptions } from './cache.types';
|
|
2
|
-
declare const ConfigurableModuleClass: import("..").ConfigurableModuleClassType<CacheModuleOptions, "forRoot", "create", {
|
|
3
|
-
isGlobal: boolean;
|
|
4
|
-
}>;
|
|
5
|
-
export declare class CacheModule extends ConfigurableModuleClass {
|
|
6
|
-
}
|
|
7
|
-
export {};
|