nitrostack 1.0.72 → 1.0.74
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/dist/auth/__tests__/api-key.test.d.ts +2 -0
- package/dist/auth/__tests__/api-key.test.d.ts.map +1 -0
- package/dist/auth/__tests__/api-key.test.js +136 -0
- package/dist/auth/__tests__/api-key.test.js.map +1 -0
- package/dist/auth/__tests__/middleware.test.d.ts +2 -0
- package/dist/auth/__tests__/middleware.test.d.ts.map +1 -0
- package/dist/auth/__tests__/middleware.test.js +186 -0
- package/dist/auth/__tests__/middleware.test.js.map +1 -0
- package/dist/auth/__tests__/pkce.test.d.ts +2 -0
- package/dist/auth/__tests__/pkce.test.d.ts.map +1 -0
- package/dist/auth/__tests__/pkce.test.js +61 -0
- package/dist/auth/__tests__/pkce.test.js.map +1 -0
- package/dist/auth/__tests__/secure-secret.test.d.ts +2 -0
- package/dist/auth/__tests__/secure-secret.test.d.ts.map +1 -0
- package/dist/auth/__tests__/secure-secret.test.js +42 -0
- package/dist/auth/__tests__/secure-secret.test.js.map +1 -0
- package/dist/auth/__tests__/simple-jwt.test.d.ts +2 -0
- package/dist/auth/__tests__/simple-jwt.test.d.ts.map +1 -0
- package/dist/auth/__tests__/simple-jwt.test.js +68 -0
- package/dist/auth/__tests__/simple-jwt.test.js.map +1 -0
- package/dist/auth/__tests__/token-store.test.d.ts +2 -0
- package/dist/auth/__tests__/token-store.test.d.ts.map +1 -0
- package/dist/auth/__tests__/token-store.test.js +79 -0
- package/dist/auth/__tests__/token-store.test.js.map +1 -0
- package/dist/auth/__tests__/token-validation.test.d.ts +2 -0
- package/dist/auth/__tests__/token-validation.test.d.ts.map +1 -0
- package/dist/auth/__tests__/token-validation.test.js +23 -0
- package/dist/auth/__tests__/token-validation.test.js.map +1 -0
- package/dist/auth/api-key.js.map +1 -1
- package/dist/auth/client.js.map +1 -1
- package/dist/auth/index.d.ts +2 -1
- package/dist/auth/index.d.ts.map +1 -1
- package/dist/auth/index.js +3 -0
- package/dist/auth/index.js.map +1 -1
- package/dist/auth/middleware.d.ts +1 -1
- package/dist/auth/middleware.d.ts.map +1 -1
- package/dist/auth/middleware.js.map +1 -1
- package/dist/auth/secure-secret.d.ts +136 -0
- package/dist/auth/secure-secret.d.ts.map +1 -0
- package/dist/auth/secure-secret.js +182 -0
- package/dist/auth/secure-secret.js.map +1 -0
- package/dist/auth/server-metadata.d.ts.map +1 -1
- package/dist/auth/server-metadata.js.map +1 -1
- package/dist/auth/simple-jwt.d.ts +100 -14
- package/dist/auth/simple-jwt.d.ts.map +1 -1
- package/dist/auth/simple-jwt.js +19 -9
- package/dist/auth/simple-jwt.js.map +1 -1
- package/dist/auth/token-store.js +1 -1
- package/dist/auth/token-store.js.map +1 -1
- package/dist/auth/token-validation.js +1 -1
- package/dist/auth/token-validation.js.map +1 -1
- package/dist/cli/__tests__/cli-dev.test.d.ts +2 -0
- package/dist/cli/__tests__/cli-dev.test.d.ts.map +1 -0
- package/dist/cli/__tests__/cli-dev.test.js +83 -0
- package/dist/cli/__tests__/cli-dev.test.js.map +1 -0
- package/dist/cli/__tests__/cli-start.test.d.ts +2 -0
- package/dist/cli/__tests__/cli-start.test.d.ts.map +1 -0
- package/dist/cli/__tests__/cli-start.test.js +61 -0
- package/dist/cli/__tests__/cli-start.test.js.map +1 -0
- package/dist/cli/__tests__/cli.test.d.ts +2 -0
- package/dist/cli/__tests__/cli.test.d.ts.map +1 -0
- package/dist/cli/__tests__/cli.test.js +73 -0
- package/dist/cli/__tests__/cli.test.js.map +1 -0
- package/dist/cli/__tests__/commands.test.d.ts +2 -0
- package/dist/cli/__tests__/commands.test.d.ts.map +1 -0
- package/dist/cli/__tests__/commands.test.js +64 -0
- package/dist/cli/__tests__/commands.test.js.map +1 -0
- package/dist/cli/commands/build.js +1 -1
- package/dist/cli/commands/build.js.map +1 -1
- package/dist/cli/commands/generate-types.js +12 -12
- package/dist/cli/commands/generate-types.js.map +1 -1
- package/dist/cli/commands/generate.d.ts +8 -1
- package/dist/cli/commands/generate.d.ts.map +1 -1
- package/dist/cli/commands/generate.js +13 -12
- package/dist/cli/commands/generate.js.map +1 -1
- package/dist/cli/commands/init.js +1 -1
- package/dist/cli/commands/init.js.map +1 -1
- package/dist/cli/commands/upgrade.d.ts +10 -0
- package/dist/cli/commands/upgrade.d.ts.map +1 -0
- package/dist/cli/commands/upgrade.js +221 -0
- package/dist/cli/commands/upgrade.js.map +1 -0
- package/dist/cli/index.d.ts +2 -1
- package/dist/cli/index.d.ts.map +1 -1
- package/dist/cli/index.js +69 -39
- package/dist/cli/index.js.map +1 -1
- package/dist/core/__tests__/core-modules.test.d.ts +2 -0
- package/dist/core/__tests__/core-modules.test.d.ts.map +1 -0
- package/dist/core/__tests__/core-modules.test.js +36 -0
- package/dist/core/__tests__/core-modules.test.js.map +1 -0
- package/dist/core/__tests__/models.test.d.ts +2 -0
- package/dist/core/__tests__/models.test.d.ts.map +1 -0
- package/dist/core/__tests__/models.test.js +142 -0
- package/dist/core/__tests__/models.test.js.map +1 -0
- package/dist/core/__tests__/module.test.d.ts +2 -0
- package/dist/core/__tests__/module.test.d.ts.map +1 -0
- package/dist/core/__tests__/module.test.js +60 -0
- package/dist/core/__tests__/module.test.js.map +1 -0
- package/dist/core/__tests__/server.test.d.ts +2 -0
- package/dist/core/__tests__/server.test.d.ts.map +1 -0
- package/dist/core/__tests__/server.test.js +120 -0
- package/dist/core/__tests__/server.test.js.map +1 -0
- package/dist/core/__tests__/transports.test.d.ts +2 -0
- package/dist/core/__tests__/transports.test.d.ts.map +1 -0
- package/dist/core/__tests__/transports.test.js +12 -0
- package/dist/core/__tests__/transports.test.js.map +1 -0
- package/dist/core/app-decorator.d.ts +4 -3
- package/dist/core/app-decorator.d.ts.map +1 -1
- package/dist/core/app-decorator.js +67 -28
- package/dist/core/app-decorator.js.map +1 -1
- package/dist/core/builders.d.ts +19 -7
- package/dist/core/builders.d.ts.map +1 -1
- package/dist/core/builders.js +15 -8
- package/dist/core/builders.js.map +1 -1
- package/dist/core/component.d.ts +8 -8
- package/dist/core/component.d.ts.map +1 -1
- package/dist/core/component.js +3 -2
- package/dist/core/component.js.map +1 -1
- package/dist/core/config-module.d.ts +11 -4
- package/dist/core/config-module.d.ts.map +1 -1
- package/dist/core/config-module.js +1 -1
- package/dist/core/config-module.js.map +1 -1
- package/dist/core/decorators/__tests__/decorators.test.d.ts +2 -0
- package/dist/core/decorators/__tests__/decorators.test.d.ts.map +1 -0
- package/dist/core/decorators/__tests__/decorators.test.js +103 -0
- package/dist/core/decorators/__tests__/decorators.test.js.map +1 -0
- package/dist/core/decorators/__tests__/extended-decorators.test.d.ts +2 -0
- package/dist/core/decorators/__tests__/extended-decorators.test.d.ts.map +1 -0
- package/dist/core/decorators/__tests__/extended-decorators.test.js +194 -0
- package/dist/core/decorators/__tests__/extended-decorators.test.js.map +1 -0
- package/dist/core/decorators/cache.decorator.d.ts +9 -9
- package/dist/core/decorators/cache.decorator.d.ts.map +1 -1
- package/dist/core/decorators/cache.decorator.js +3 -3
- package/dist/core/decorators/cache.decorator.js.map +1 -1
- package/dist/core/decorators/health-check.decorator.d.ts +3 -3
- package/dist/core/decorators/health-check.decorator.d.ts.map +1 -1
- package/dist/core/decorators/health-check.decorator.js +2 -2
- package/dist/core/decorators/health-check.decorator.js.map +1 -1
- package/dist/core/decorators/rate-limit.decorator.d.ts +5 -4
- package/dist/core/decorators/rate-limit.decorator.d.ts.map +1 -1
- package/dist/core/decorators/rate-limit.decorator.js +3 -3
- package/dist/core/decorators/rate-limit.decorator.js.map +1 -1
- package/dist/core/decorators.d.ts +47 -29
- package/dist/core/decorators.d.ts.map +1 -1
- package/dist/core/decorators.js +9 -9
- package/dist/core/decorators.js.map +1 -1
- package/dist/core/di/__tests__/container.test.d.ts +2 -0
- package/dist/core/di/__tests__/container.test.d.ts.map +1 -0
- package/dist/core/di/__tests__/container.test.js +88 -0
- package/dist/core/di/__tests__/container.test.js.map +1 -0
- package/dist/core/di/container.d.ts +21 -4
- package/dist/core/di/container.d.ts.map +1 -1
- package/dist/core/di/container.js +11 -7
- package/dist/core/di/container.js.map +1 -1
- package/dist/core/di/injectable.decorator.d.ts +5 -3
- package/dist/core/di/injectable.decorator.d.ts.map +1 -1
- package/dist/core/di/injectable.decorator.js.map +1 -1
- package/dist/core/errors.d.ts +4 -4
- package/dist/core/errors.d.ts.map +1 -1
- package/dist/core/errors.js.map +1 -1
- package/dist/core/events/__tests__/events.test.d.ts +2 -0
- package/dist/core/events/__tests__/events.test.d.ts.map +1 -0
- package/dist/core/events/__tests__/events.test.js +177 -0
- package/dist/core/events/__tests__/events.test.js.map +1 -0
- package/dist/core/events/event-emitter.d.ts +3 -3
- package/dist/core/events/event-emitter.d.ts.map +1 -1
- package/dist/core/events/event-emitter.js.map +1 -1
- package/dist/core/events/event.decorator.d.ts +5 -5
- package/dist/core/events/event.decorator.d.ts.map +1 -1
- package/dist/core/events/event.decorator.js +10 -6
- package/dist/core/events/event.decorator.js.map +1 -1
- package/dist/core/events/log-emitter.d.ts +7 -1
- package/dist/core/events/log-emitter.d.ts.map +1 -1
- package/dist/core/events/log-emitter.js.map +1 -1
- package/dist/core/filters/__tests__/filters.test.d.ts +2 -0
- package/dist/core/filters/__tests__/filters.test.d.ts.map +1 -0
- package/dist/core/filters/__tests__/filters.test.js +72 -0
- package/dist/core/filters/__tests__/filters.test.js.map +1 -0
- package/dist/core/filters/exception-filter.decorator.d.ts +5 -5
- package/dist/core/filters/exception-filter.decorator.d.ts.map +1 -1
- package/dist/core/filters/exception-filter.decorator.js +3 -3
- package/dist/core/filters/exception-filter.decorator.js.map +1 -1
- package/dist/core/filters/exception-filter.interface.d.ts +14 -5
- package/dist/core/filters/exception-filter.interface.d.ts.map +1 -1
- package/dist/core/guards/__tests__/guards.test.d.ts +2 -0
- package/dist/core/guards/__tests__/guards.test.d.ts.map +1 -0
- package/dist/core/guards/__tests__/guards.test.js +55 -0
- package/dist/core/guards/__tests__/guards.test.js.map +1 -0
- package/dist/core/guards/apikey.guard.d.ts +1 -1
- package/dist/core/guards/apikey.guard.d.ts.map +1 -1
- package/dist/core/guards/guard.interface.d.ts +1 -1
- package/dist/core/guards/guard.interface.d.ts.map +1 -1
- package/dist/core/guards/jwt.guard.d.ts +1 -1
- package/dist/core/guards/jwt.guard.d.ts.map +1 -1
- package/dist/core/guards/oauth.guard.d.ts +1 -1
- package/dist/core/guards/oauth.guard.d.ts.map +1 -1
- package/dist/core/guards/use-guards.decorator.d.ts +3 -3
- package/dist/core/guards/use-guards.decorator.d.ts.map +1 -1
- package/dist/core/guards/use-guards.decorator.js +1 -1
- package/dist/core/guards/use-guards.decorator.js.map +1 -1
- package/dist/core/health/__tests__/health.test.d.ts +2 -0
- package/dist/core/health/__tests__/health.test.d.ts.map +1 -0
- package/dist/core/health/__tests__/health.test.js +31 -0
- package/dist/core/health/__tests__/health.test.js.map +1 -0
- package/dist/core/index.d.ts +2 -2
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/index.js.map +1 -1
- package/dist/core/interceptors/__tests__/interceptors.test.d.ts +2 -0
- package/dist/core/interceptors/__tests__/interceptors.test.d.ts.map +1 -0
- package/dist/core/interceptors/__tests__/interceptors.test.js +52 -0
- package/dist/core/interceptors/__tests__/interceptors.test.js.map +1 -0
- package/dist/core/interceptors/interceptor.decorator.d.ts +4 -4
- package/dist/core/interceptors/interceptor.decorator.d.ts.map +1 -1
- package/dist/core/interceptors/interceptor.decorator.js +2 -2
- package/dist/core/interceptors/interceptor.decorator.js.map +1 -1
- package/dist/core/interceptors/interceptor.interface.d.ts +3 -3
- package/dist/core/interceptors/interceptor.interface.d.ts.map +1 -1
- package/dist/core/logger.d.ts.map +1 -1
- package/dist/core/logger.js.map +1 -1
- package/dist/core/middleware/__tests__/middleware.test.d.ts +2 -0
- package/dist/core/middleware/__tests__/middleware.test.d.ts.map +1 -0
- package/dist/core/middleware/__tests__/middleware.test.js +105 -0
- package/dist/core/middleware/__tests__/middleware.test.js.map +1 -0
- package/dist/core/middleware/middleware.decorator.d.ts +4 -4
- package/dist/core/middleware/middleware.decorator.d.ts.map +1 -1
- package/dist/core/middleware/middleware.decorator.js +2 -2
- package/dist/core/middleware/middleware.decorator.js.map +1 -1
- package/dist/core/middleware/middleware.interface.d.ts +3 -3
- package/dist/core/middleware/middleware.interface.d.ts.map +1 -1
- package/dist/core/module.d.ts +33 -14
- package/dist/core/module.d.ts.map +1 -1
- package/dist/core/module.js +11 -6
- package/dist/core/module.js.map +1 -1
- package/dist/core/oauth-module.d.ts +9 -3
- package/dist/core/oauth-module.d.ts.map +1 -1
- package/dist/core/oauth-module.js +4 -3
- package/dist/core/oauth-module.js.map +1 -1
- package/dist/core/pipes/__tests__/pipes.test.d.ts +2 -0
- package/dist/core/pipes/__tests__/pipes.test.d.ts.map +1 -0
- package/dist/core/pipes/__tests__/pipes.test.js +52 -0
- package/dist/core/pipes/__tests__/pipes.test.js.map +1 -0
- package/dist/core/pipes/pipe.decorator.d.ts +14 -5
- package/dist/core/pipes/pipe.decorator.d.ts.map +1 -1
- package/dist/core/pipes/pipe.decorator.js +2 -2
- package/dist/core/pipes/pipe.decorator.js.map +1 -1
- package/dist/core/pipes/pipe.interface.d.ts +9 -4
- package/dist/core/pipes/pipe.interface.d.ts.map +1 -1
- package/dist/core/prompt.d.ts +13 -4
- package/dist/core/prompt.d.ts.map +1 -1
- package/dist/core/prompt.js +2 -2
- package/dist/core/prompt.js.map +1 -1
- package/dist/core/resource.d.ts +7 -2
- package/dist/core/resource.d.ts.map +1 -1
- package/dist/core/resource.js +2 -2
- package/dist/core/resource.js.map +1 -1
- package/dist/core/server.d.ts +49 -3
- package/dist/core/server.d.ts.map +1 -1
- package/dist/core/server.js +61 -34
- package/dist/core/server.js.map +1 -1
- package/dist/core/tool.d.ts +44 -16
- package/dist/core/tool.d.ts.map +1 -1
- package/dist/core/tool.js +19 -6
- package/dist/core/tool.js.map +1 -1
- package/dist/core/transports/__tests__/transports.test.d.ts +2 -0
- package/dist/core/transports/__tests__/transports.test.d.ts.map +1 -0
- package/dist/core/transports/__tests__/transports.test.js +249 -0
- package/dist/core/transports/__tests__/transports.test.js.map +1 -0
- package/dist/core/transports/discovery-http-server.d.ts +7 -1
- package/dist/core/transports/discovery-http-server.d.ts.map +1 -1
- package/dist/core/transports/discovery-http-server.js.map +1 -1
- package/dist/core/transports/http-server.d.ts +2 -2
- package/dist/core/transports/http-server.d.ts.map +1 -1
- package/dist/core/transports/http-server.js +1 -1
- package/dist/core/transports/http-server.js.map +1 -1
- package/dist/core/transports/streamable-http.d.ts +4 -4
- package/dist/core/transports/streamable-http.d.ts.map +1 -1
- package/dist/core/transports/streamable-http.js +1 -1
- package/dist/core/transports/streamable-http.js.map +1 -1
- package/dist/core/types.d.ts +87 -15
- package/dist/core/types.d.ts.map +1 -1
- package/dist/core/widgets/__tests__/registry.test.d.ts +2 -0
- package/dist/core/widgets/__tests__/registry.test.d.ts.map +1 -0
- package/dist/core/widgets/__tests__/registry.test.js +69 -0
- package/dist/core/widgets/__tests__/registry.test.js.map +1 -0
- package/dist/core/widgets/widget-registry.d.ts +2 -2
- package/dist/core/widgets/widget-registry.d.ts.map +1 -1
- package/dist/core/widgets/widget-registry.js +1 -1
- package/dist/core/widgets/widget-registry.js.map +1 -1
- package/dist/testing/__tests__/testing.test.d.ts +2 -0
- package/dist/testing/__tests__/testing.test.d.ts.map +1 -0
- package/dist/testing/__tests__/testing.test.js +167 -0
- package/dist/testing/__tests__/testing.test.js.map +1 -0
- package/dist/testing/index.d.ts +40 -19
- package/dist/testing/index.d.ts.map +1 -1
- package/dist/testing/index.js +5 -8
- package/dist/testing/index.js.map +1 -1
- package/dist/ui-next/__tests__/ui-next.test.d.ts +2 -0
- package/dist/ui-next/__tests__/ui-next.test.d.ts.map +1 -0
- package/dist/ui-next/__tests__/ui-next.test.js +74 -0
- package/dist/ui-next/__tests__/ui-next.test.js.map +1 -0
- package/dist/ui-next/index.d.ts +1 -1
- package/dist/ui-next/index.d.ts.map +1 -1
- package/dist/ui-next/index.js.map +1 -1
- package/dist/widgets/__tests__/utils.test.d.ts +2 -0
- package/dist/widgets/__tests__/utils.test.d.ts.map +1 -0
- package/dist/widgets/__tests__/utils.test.js +80 -0
- package/dist/widgets/__tests__/utils.test.js.map +1 -0
- package/dist/widgets/__tests__/widgets.test.d.ts +2 -0
- package/dist/widgets/__tests__/widgets.test.d.ts.map +1 -0
- package/dist/widgets/__tests__/widgets.test.js +245 -0
- package/dist/widgets/__tests__/widgets.test.js.map +1 -0
- package/dist/widgets/hooks/useWidgetSDK.d.ts +5 -5
- package/dist/widgets/runtime/WidgetLayout.js.map +1 -1
- package/dist/widgets/sdk.d.ts +5 -5
- package/dist/widgets/sdk.d.ts.map +1 -1
- package/dist/widgets/sdk.js.map +1 -1
- package/package.json +1 -1
- package/src/studio/app/api/auth/fetch-metadata/route.ts +3 -2
- package/src/studio/app/api/auth/register-client/route.ts +3 -2
- package/src/studio/app/api/chat/route.ts +31 -17
- package/src/studio/app/api/health/checks/route.ts +5 -4
- package/src/studio/app/api/init/route.ts +3 -2
- package/src/studio/app/api/ping/route.ts +3 -2
- package/src/studio/app/api/prompts/[name]/route.ts +4 -3
- package/src/studio/app/api/prompts/route.ts +3 -2
- package/src/studio/app/api/resources/[...uri]/route.ts +3 -2
- package/src/studio/app/api/resources/route.ts +3 -2
- package/src/studio/app/api/roots/route.ts +3 -2
- package/src/studio/app/api/sampling/route.ts +3 -2
- package/src/studio/app/api/tools/[name]/call/route.ts +3 -2
- package/src/studio/app/api/tools/route.ts +4 -3
- package/src/studio/app/api/widget-examples/route.ts +5 -4
- package/src/studio/app/auth/callback/page.tsx +3 -2
- package/src/studio/app/chat/page.tsx +481 -105
- package/src/studio/app/health/page.tsx +1 -1
- package/src/studio/app/logs/page.tsx +2 -2
- package/src/studio/app/page.tsx +5 -5
- package/src/studio/app/prompts/page.tsx +2 -2
- package/src/studio/app/settings/page.tsx +3 -2
- package/src/studio/app/tools/page.tsx +3 -3
- package/src/studio/components/LogMessage.tsx +1 -1
- package/src/studio/components/MarkdownRenderer.tsx +245 -348
- package/src/studio/components/Sidebar.tsx +18 -3
- package/src/studio/components/VoiceOrbOverlay.tsx +12 -6
- package/src/studio/components/WidgetErrorBoundary.tsx +49 -0
- package/src/studio/components/WidgetRenderer.tsx +168 -215
- package/src/studio/components/ops/OpsCanvas.tsx +748 -0
- package/src/studio/components/ops/OpsNodeDetailPanel.tsx +150 -0
- package/src/studio/components/ops/OpsSummaryBar.tsx +90 -0
- package/src/studio/components/ops/index.ts +6 -0
- package/src/studio/components/ops/nodes/BaseNode.tsx +65 -0
- package/src/studio/components/ops/nodes/LLMCallNode.tsx +34 -0
- package/src/studio/components/ops/nodes/LLMResponseNode.tsx +33 -0
- package/src/studio/components/ops/nodes/ToolCallNode.tsx +30 -0
- package/src/studio/components/ops/nodes/ToolResultNode.tsx +43 -0
- package/src/studio/components/ops/nodes/UserPromptNode.tsx +34 -0
- package/src/studio/components/ops/nodes/WidgetRenderNode.tsx +23 -0
- package/src/studio/components/ops/nodes/index.ts +9 -0
- package/src/studio/components/tools/ToolsCanvas.tsx +2 -2
- package/src/studio/lib/api.ts +61 -42
- package/src/studio/lib/http-client-transport.ts +2 -2
- package/src/studio/lib/llm-service.ts +126 -47
- package/src/studio/lib/mcp-client.ts +9 -6
- package/src/studio/lib/ops-store.ts +427 -0
- package/src/studio/lib/ops-tracker.ts +416 -0
- package/src/studio/lib/ops-types.ts +164 -0
- package/src/studio/lib/store.ts +8 -11
- package/src/studio/lib/types.ts +228 -38
- package/src/studio/lib/widget-loader.ts +2 -2
- package/templates/typescript-oauth/src/modules/flights/flights.prompts.ts +19 -22
- package/dist/cli/build-widgets.mjs +0 -165
|
@@ -21,18 +21,24 @@ export class DIContainer {
|
|
|
21
21
|
}
|
|
22
22
|
/**
|
|
23
23
|
* Register a provider (class)
|
|
24
|
+
* @param token - The token to register (usually the class itself)
|
|
25
|
+
* @param provider - Optional provider class (defaults to token if it's a class)
|
|
24
26
|
*/
|
|
25
27
|
register(token, provider) {
|
|
26
|
-
this.providers.set(token, provider || token);
|
|
28
|
+
this.providers.set(token, (provider || token));
|
|
27
29
|
}
|
|
28
30
|
/**
|
|
29
31
|
* Register a value directly
|
|
32
|
+
* @param token - The token to register
|
|
33
|
+
* @param value - The value to associate with the token
|
|
30
34
|
*/
|
|
31
35
|
registerValue(token, value) {
|
|
32
36
|
this.instances.set(token, value);
|
|
33
37
|
}
|
|
34
38
|
/**
|
|
35
39
|
* Resolve a dependency (get or create instance)
|
|
40
|
+
* @param token - The token to resolve
|
|
41
|
+
* @returns The resolved instance
|
|
36
42
|
*/
|
|
37
43
|
resolve(token) {
|
|
38
44
|
// Check if already instantiated
|
|
@@ -43,14 +49,15 @@ export class DIContainer {
|
|
|
43
49
|
const provider = this.providers.get(token) || token;
|
|
44
50
|
// If provider is not a constructor function, throw error
|
|
45
51
|
if (typeof provider !== 'function') {
|
|
46
|
-
throw new Error(`Cannot resolve token "${token}". No value or provider registered.`);
|
|
52
|
+
throw new Error(`Cannot resolve token "${String(token)}". No value or provider registered.`);
|
|
47
53
|
}
|
|
48
54
|
// Get constructor dependencies
|
|
49
55
|
const dependencies = this.getDependencies(provider);
|
|
50
56
|
// Resolve dependencies recursively
|
|
51
57
|
const resolvedDependencies = dependencies.map((dep) => this.resolve(dep));
|
|
52
58
|
// Create instance
|
|
53
|
-
const
|
|
59
|
+
const ProviderClass = provider;
|
|
60
|
+
const instance = new ProviderClass(...resolvedDependencies);
|
|
54
61
|
// Cache instance
|
|
55
62
|
this.instances.set(token, instance);
|
|
56
63
|
return instance;
|
|
@@ -59,10 +66,6 @@ export class DIContainer {
|
|
|
59
66
|
* Get constructor dependencies from metadata
|
|
60
67
|
*/
|
|
61
68
|
getDependencies(target) {
|
|
62
|
-
// If not a function/class, it has no dependencies
|
|
63
|
-
if (typeof target !== 'function') {
|
|
64
|
-
return [];
|
|
65
|
-
}
|
|
66
69
|
// Get design:paramtypes metadata set by TypeScript
|
|
67
70
|
const params = Reflect.getMetadata('design:paramtypes', target) || [];
|
|
68
71
|
// Check for @Inject tokens which override the types
|
|
@@ -81,6 +84,7 @@ export class DIContainer {
|
|
|
81
84
|
}
|
|
82
85
|
/**
|
|
83
86
|
* Check if a token is registered
|
|
87
|
+
* @param token - The token to check
|
|
84
88
|
*/
|
|
85
89
|
has(token) {
|
|
86
90
|
return this.providers.has(token) || this.instances.has(token);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"container.js","sourceRoot":"","sources":["../../../src/core/di/container.ts"],"names":[],"mappings":"AAAA,OAAO,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"container.js","sourceRoot":"","sources":["../../../src/core/di/container.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
import 'reflect-metadata';
|
|
2
|
+
import { InjectionToken } from './container.js';
|
|
3
|
+
import type { ClassConstructor } from '../types.js';
|
|
2
4
|
/**
|
|
3
5
|
* Marks a class as injectable (can be used with DI)
|
|
4
6
|
*
|
|
@@ -23,13 +25,13 @@ export declare function Injectable(): ClassDecorator;
|
|
|
23
25
|
* constructor(@Inject('DATABASE_CONFIG') private config: DatabaseConfig) {}
|
|
24
26
|
* ```
|
|
25
27
|
*/
|
|
26
|
-
export declare function Inject(token:
|
|
28
|
+
export declare function Inject(token: InjectionToken): ParameterDecorator;
|
|
27
29
|
/**
|
|
28
30
|
* Check if a class is injectable
|
|
29
31
|
*/
|
|
30
|
-
export declare function isInjectable(target:
|
|
32
|
+
export declare function isInjectable(target: ClassConstructor): boolean;
|
|
31
33
|
/**
|
|
32
34
|
* Get inject tokens for constructor parameters
|
|
33
35
|
*/
|
|
34
|
-
export declare function getInjectTokens(target:
|
|
36
|
+
export declare function getInjectTokens(target: ClassConstructor): InjectionToken[];
|
|
35
37
|
//# sourceMappingURL=injectable.decorator.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"injectable.decorator.d.ts","sourceRoot":"","sources":["../../../src/core/di/injectable.decorator.ts"],"names":[],"mappings":"AAAA,OAAO,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"injectable.decorator.d.ts","sourceRoot":"","sources":["../../../src/core/di/injectable.decorator.ts"],"names":[],"mappings":"AAAA,OAAO,kBAAkB,CAAC;AAC1B,OAAO,EAAe,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAC7D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAKpD;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,UAAU,IAAI,cAAc,CAU3C;AAED;;;;;;;GAOG;AACH,wBAAgB,MAAM,CAAC,KAAK,EAAE,cAAc,GAAG,kBAAkB,CAMhE;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,gBAAgB,GAAG,OAAO,CAE9D;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,gBAAgB,GAAG,cAAc,EAAE,CAE1E"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"injectable.decorator.js","sourceRoot":"","sources":["../../../src/core/di/injectable.decorator.ts"],"names":[],"mappings":"AAAA,OAAO,kBAAkB,CAAC;AAC1B,OAAO,EAAE,WAAW,
|
|
1
|
+
{"version":3,"file":"injectable.decorator.js","sourceRoot":"","sources":["../../../src/core/di/injectable.decorator.ts"],"names":[],"mappings":"AAAA,OAAO,kBAAkB,CAAC;AAC1B,OAAO,EAAE,WAAW,EAAkB,MAAM,gBAAgB,CAAC;AAG7D,MAAM,cAAc,GAAG,uBAAuB,CAAC;AAC/C,MAAM,UAAU,GAAG,mBAAmB,CAAC;AAEvC;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,UAAU;IACxB,OAAO,CAAC,MAAc,EAAE,EAAE;QACxB,OAAO,CAAC,cAAc,CAAC,cAAc,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;QAErD,gCAAgC;QAChC,MAAM,SAAS,GAAG,WAAW,CAAC,WAAW,EAAE,CAAC;QAC5C,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,MAA0B,CAAC,EAAE,CAAC;YAC/C,SAAS,CAAC,QAAQ,CAAC,MAA0B,CAAC,CAAC;QACjD,CAAC;IACH,CAAC,CAAC;AACJ,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,MAAM,CAAC,KAAqB;IAC1C,OAAO,CAAC,MAAc,EAAE,WAAwC,EAAE,cAAsB,EAAE,EAAE;QAC1F,MAAM,cAAc,GAAqB,OAAO,CAAC,WAAW,CAAC,UAAU,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC;QACvF,cAAc,CAAC,cAAc,CAAC,GAAG,KAAK,CAAC;QACvC,OAAO,CAAC,cAAc,CAAC,UAAU,EAAE,cAAc,EAAE,MAAM,CAAC,CAAC;IAC7D,CAAC,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,YAAY,CAAC,MAAwB;IACnD,OAAO,OAAO,CAAC,WAAW,CAAC,cAAc,EAAE,MAAM,CAAC,KAAK,IAAI,CAAC;AAC9D,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,eAAe,CAAC,MAAwB;IACtD,OAAO,OAAO,CAAC,WAAW,CAAC,UAAU,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC;AACvD,CAAC"}
|
package/dist/core/errors.d.ts
CHANGED
|
@@ -4,14 +4,14 @@
|
|
|
4
4
|
export declare class McpError extends Error {
|
|
5
5
|
code: string;
|
|
6
6
|
statusCode: number;
|
|
7
|
-
details?:
|
|
8
|
-
constructor(message: string, code: string, statusCode?: number, details?:
|
|
7
|
+
details?: unknown | undefined;
|
|
8
|
+
constructor(message: string, code: string, statusCode?: number, details?: unknown | undefined);
|
|
9
9
|
}
|
|
10
10
|
/**
|
|
11
11
|
* Validation error
|
|
12
12
|
*/
|
|
13
13
|
export declare class ValidationError extends McpError {
|
|
14
|
-
constructor(message: string, details?:
|
|
14
|
+
constructor(message: string, details?: unknown);
|
|
15
15
|
}
|
|
16
16
|
/**
|
|
17
17
|
* Tool not found error
|
|
@@ -49,6 +49,6 @@ export declare class ToolExecutionError extends McpError {
|
|
|
49
49
|
export declare function formatError(error: Error): {
|
|
50
50
|
code: string;
|
|
51
51
|
message: string;
|
|
52
|
-
details?:
|
|
52
|
+
details?: unknown;
|
|
53
53
|
};
|
|
54
54
|
//# sourceMappingURL=errors.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/core/errors.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,qBAAa,QAAS,SAAQ,KAAK;IAGxB,IAAI,EAAE,MAAM;IACZ,UAAU,EAAE,MAAM;IAClB,OAAO,CAAC,EAAE,
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/core/errors.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,qBAAa,QAAS,SAAQ,KAAK;IAGxB,IAAI,EAAE,MAAM;IACZ,UAAU,EAAE,MAAM;IAClB,OAAO,CAAC,EAAE,OAAO;gBAHxB,OAAO,EAAE,MAAM,EACR,IAAI,EAAE,MAAM,EACZ,UAAU,GAAE,MAAY,EACxB,OAAO,CAAC,EAAE,OAAO,YAAA;CAM3B;AAED;;GAEG;AACH,qBAAa,eAAgB,SAAQ,QAAQ;gBAC/B,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO;CAI/C;AAED;;GAEG;AACH,qBAAa,iBAAkB,SAAQ,QAAQ;gBACjC,QAAQ,EAAE,MAAM;CAI7B;AAED;;GAEG;AACH,qBAAa,qBAAsB,SAAQ,QAAQ;gBACrC,GAAG,EAAE,MAAM;CAIxB;AAED;;GAEG;AACH,qBAAa,mBAAoB,SAAQ,QAAQ;gBACnC,UAAU,EAAE,MAAM;CAI/B;AAED;;GAEG;AACH,qBAAa,cAAe,SAAQ,QAAQ;gBAC9B,OAAO,GAAE,MAA8B;CAIpD;AAED;;GAEG;AACH,qBAAa,kBAAmB,SAAQ,QAAQ;gBAClC,QAAQ,EAAE,MAAM,EAAE,aAAa,EAAE,KAAK;CASnD;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,KAAK,GAAG;IACzC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB,CAaA"}
|
package/dist/core/errors.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/core/errors.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,OAAO,QAAS,SAAQ,KAAK;IAGxB;IACA;IACA;IAJT,YACE,OAAe,EACR,IAAY,EACZ,aAAqB,GAAG,EACxB,
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/core/errors.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,OAAO,QAAS,SAAQ,KAAK;IAGxB;IACA;IACA;IAJT,YACE,OAAe,EACR,IAAY,EACZ,aAAqB,GAAG,EACxB,OAAiB;QAExB,KAAK,CAAC,OAAO,CAAC,CAAC;QAJR,SAAI,GAAJ,IAAI,CAAQ;QACZ,eAAU,GAAV,UAAU,CAAc;QACxB,YAAO,GAAP,OAAO,CAAU;QAGxB,IAAI,CAAC,IAAI,GAAG,UAAU,CAAC;QACvB,KAAK,CAAC,iBAAiB,CAAC,IAAI,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;IAClD,CAAC;CACF;AAED;;GAEG;AACH,MAAM,OAAO,eAAgB,SAAQ,QAAQ;IAC3C,YAAY,OAAe,EAAE,OAAiB;QAC5C,KAAK,CAAC,OAAO,EAAE,kBAAkB,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC;QACjD,IAAI,CAAC,IAAI,GAAG,iBAAiB,CAAC;IAChC,CAAC;CACF;AAED;;GAEG;AACH,MAAM,OAAO,iBAAkB,SAAQ,QAAQ;IAC7C,YAAY,QAAgB;QAC1B,KAAK,CAAC,SAAS,QAAQ,aAAa,EAAE,gBAAgB,EAAE,GAAG,CAAC,CAAC;QAC7D,IAAI,CAAC,IAAI,GAAG,mBAAmB,CAAC;IAClC,CAAC;CACF;AAED;;GAEG;AACH,MAAM,OAAO,qBAAsB,SAAQ,QAAQ;IACjD,YAAY,GAAW;QACrB,KAAK,CAAC,aAAa,GAAG,aAAa,EAAE,oBAAoB,EAAE,GAAG,CAAC,CAAC;QAChE,IAAI,CAAC,IAAI,GAAG,uBAAuB,CAAC;IACtC,CAAC;CACF;AAED;;GAEG;AACH,MAAM,OAAO,mBAAoB,SAAQ,QAAQ;IAC/C,YAAY,UAAkB;QAC5B,KAAK,CAAC,WAAW,UAAU,aAAa,EAAE,kBAAkB,EAAE,GAAG,CAAC,CAAC;QACnE,IAAI,CAAC,IAAI,GAAG,qBAAqB,CAAC;IACpC,CAAC;CACF;AAED;;GAEG;AACH,MAAM,OAAO,cAAe,SAAQ,QAAQ;IAC1C,YAAY,UAAkB,qBAAqB;QACjD,KAAK,CAAC,OAAO,EAAE,qBAAqB,EAAE,GAAG,CAAC,CAAC;QAC3C,IAAI,CAAC,IAAI,GAAG,gBAAgB,CAAC;IAC/B,CAAC;CACF;AAED;;GAEG;AACH,MAAM,OAAO,kBAAmB,SAAQ,QAAQ;IAC9C,YAAY,QAAgB,EAAE,aAAoB;QAChD,KAAK,CACH,yBAAyB,QAAQ,MAAM,aAAa,CAAC,OAAO,EAAE,EAC9D,sBAAsB,EACtB,GAAG,EACH,EAAE,aAAa,EAAE,aAAa,CAAC,OAAO,EAAE,KAAK,EAAE,aAAa,CAAC,KAAK,EAAE,CACrE,CAAC;QACF,IAAI,CAAC,IAAI,GAAG,oBAAoB,CAAC;IACnC,CAAC;CACF;AAED;;GAEG;AACH,MAAM,UAAU,WAAW,CAAC,KAAY;IAKtC,IAAI,KAAK,YAAY,QAAQ,EAAE,CAAC;QAC9B,OAAO;YACL,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,OAAO,EAAE,KAAK,CAAC,OAAO;YACtB,OAAO,EAAE,KAAK,CAAC,OAAO;SACvB,CAAC;IACJ,CAAC;IAED,OAAO;QACL,IAAI,EAAE,gBAAgB;QACtB,OAAO,EAAE,KAAK,CAAC,OAAO;KACvB,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"events.test.d.ts","sourceRoot":"","sources":["../../../../src/core/events/__tests__/events.test.ts"],"names":[],"mappings":"AACA,OAAO,kBAAkB,CAAC"}
|
|
@@ -0,0 +1,177 @@
|
|
|
1
|
+
var __decorate = (this && this.__decorate) || function (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
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
8
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
9
|
+
};
|
|
10
|
+
import { jest, describe, it, expect, beforeEach, afterEach } from '@jest/globals';
|
|
11
|
+
import 'reflect-metadata';
|
|
12
|
+
import { EventEmitter } from '../event-emitter.js';
|
|
13
|
+
import { OnEvent } from '../event.decorator.js';
|
|
14
|
+
describe('Events Module', () => {
|
|
15
|
+
describe('EventEmitter', () => {
|
|
16
|
+
let eventEmitter;
|
|
17
|
+
beforeEach(() => {
|
|
18
|
+
eventEmitter = EventEmitter.getInstance();
|
|
19
|
+
eventEmitter.removeAllListeners();
|
|
20
|
+
});
|
|
21
|
+
afterEach(() => {
|
|
22
|
+
eventEmitter.removeAllListeners();
|
|
23
|
+
});
|
|
24
|
+
it('should be a singleton', () => {
|
|
25
|
+
const instance1 = EventEmitter.getInstance();
|
|
26
|
+
const instance2 = EventEmitter.getInstance();
|
|
27
|
+
expect(instance1).toBe(instance2);
|
|
28
|
+
});
|
|
29
|
+
it('should emit and listen to events', () => {
|
|
30
|
+
const callback = jest.fn();
|
|
31
|
+
eventEmitter.on('test-event', callback);
|
|
32
|
+
eventEmitter.emit('test-event', { data: 'test' });
|
|
33
|
+
expect(callback).toHaveBeenCalledWith({ data: 'test' });
|
|
34
|
+
});
|
|
35
|
+
it('should handle multiple listeners', () => {
|
|
36
|
+
const callback1 = jest.fn();
|
|
37
|
+
const callback2 = jest.fn();
|
|
38
|
+
eventEmitter.on('multi-event', callback1);
|
|
39
|
+
eventEmitter.on('multi-event', callback2);
|
|
40
|
+
eventEmitter.emit('multi-event', 'payload');
|
|
41
|
+
expect(callback1).toHaveBeenCalledWith('payload');
|
|
42
|
+
expect(callback2).toHaveBeenCalledWith('payload');
|
|
43
|
+
});
|
|
44
|
+
it('should remove listener with off()', () => {
|
|
45
|
+
const callback = jest.fn();
|
|
46
|
+
eventEmitter.on('removable-event', callback);
|
|
47
|
+
eventEmitter.emit('removable-event', 'first');
|
|
48
|
+
expect(callback).toHaveBeenCalledTimes(1);
|
|
49
|
+
eventEmitter.off('removable-event', callback);
|
|
50
|
+
eventEmitter.emit('removable-event', 'second');
|
|
51
|
+
expect(callback).toHaveBeenCalledTimes(1);
|
|
52
|
+
});
|
|
53
|
+
it('should handle off() for non-existent event', () => {
|
|
54
|
+
const callback = jest.fn();
|
|
55
|
+
// Should not throw
|
|
56
|
+
eventEmitter.off('non-existent', callback);
|
|
57
|
+
});
|
|
58
|
+
it('should handle off() for non-existent listener', () => {
|
|
59
|
+
const callback1 = jest.fn();
|
|
60
|
+
const callback2 = jest.fn();
|
|
61
|
+
eventEmitter.on('some-event', callback1);
|
|
62
|
+
// Should not throw
|
|
63
|
+
eventEmitter.off('some-event', callback2);
|
|
64
|
+
// Original listener should still work
|
|
65
|
+
eventEmitter.emit('some-event', 'test');
|
|
66
|
+
expect(callback1).toHaveBeenCalled();
|
|
67
|
+
});
|
|
68
|
+
it('should support once() for one-time listeners', async () => {
|
|
69
|
+
const callback = jest.fn();
|
|
70
|
+
eventEmitter.once('once-event', callback);
|
|
71
|
+
await eventEmitter.emit('once-event', 'first');
|
|
72
|
+
await eventEmitter.emit('once-event', 'second');
|
|
73
|
+
expect(callback).toHaveBeenCalledTimes(1);
|
|
74
|
+
expect(callback).toHaveBeenCalledWith('first');
|
|
75
|
+
});
|
|
76
|
+
it('should emit synchronously with emitSync()', () => {
|
|
77
|
+
const callback = jest.fn();
|
|
78
|
+
eventEmitter.on('sync-event', callback);
|
|
79
|
+
eventEmitter.emitSync('sync-event', 'sync-payload');
|
|
80
|
+
expect(callback).toHaveBeenCalledWith('sync-payload');
|
|
81
|
+
});
|
|
82
|
+
it('should removeAllListeners for specific event', () => {
|
|
83
|
+
const callback1 = jest.fn();
|
|
84
|
+
const callback2 = jest.fn();
|
|
85
|
+
eventEmitter.on('event1', callback1);
|
|
86
|
+
eventEmitter.on('event2', callback2);
|
|
87
|
+
eventEmitter.removeAllListeners('event1');
|
|
88
|
+
eventEmitter.emit('event1', 'test1');
|
|
89
|
+
eventEmitter.emit('event2', 'test2');
|
|
90
|
+
expect(callback1).not.toHaveBeenCalled();
|
|
91
|
+
expect(callback2).toHaveBeenCalledWith('test2');
|
|
92
|
+
});
|
|
93
|
+
it('should removeAllListeners for all events', () => {
|
|
94
|
+
const callback1 = jest.fn();
|
|
95
|
+
const callback2 = jest.fn();
|
|
96
|
+
eventEmitter.on('event1', callback1);
|
|
97
|
+
eventEmitter.on('event2', callback2);
|
|
98
|
+
eventEmitter.removeAllListeners();
|
|
99
|
+
eventEmitter.emit('event1', 'test1');
|
|
100
|
+
eventEmitter.emit('event2', 'test2');
|
|
101
|
+
expect(callback1).not.toHaveBeenCalled();
|
|
102
|
+
expect(callback2).not.toHaveBeenCalled();
|
|
103
|
+
});
|
|
104
|
+
it('should return listenerCount', () => {
|
|
105
|
+
const callback1 = jest.fn();
|
|
106
|
+
const callback2 = jest.fn();
|
|
107
|
+
expect(eventEmitter.listenerCount('count-event')).toBe(0);
|
|
108
|
+
eventEmitter.on('count-event', callback1);
|
|
109
|
+
expect(eventEmitter.listenerCount('count-event')).toBe(1);
|
|
110
|
+
eventEmitter.on('count-event', callback2);
|
|
111
|
+
expect(eventEmitter.listenerCount('count-event')).toBe(2);
|
|
112
|
+
});
|
|
113
|
+
it('should return eventNames', () => {
|
|
114
|
+
const callback = jest.fn();
|
|
115
|
+
eventEmitter.on('event-a', callback);
|
|
116
|
+
eventEmitter.on('event-b', callback);
|
|
117
|
+
eventEmitter.on('event-c', callback);
|
|
118
|
+
const names = eventEmitter.eventNames();
|
|
119
|
+
expect(names).toContain('event-a');
|
|
120
|
+
expect(names).toContain('event-b');
|
|
121
|
+
expect(names).toContain('event-c');
|
|
122
|
+
expect(names).toHaveLength(3);
|
|
123
|
+
});
|
|
124
|
+
it('should handle emit with no listeners', async () => {
|
|
125
|
+
// Should not throw
|
|
126
|
+
await eventEmitter.emit('no-listeners', 'data');
|
|
127
|
+
});
|
|
128
|
+
it('should handle emitSync with no listeners', () => {
|
|
129
|
+
// Should not throw
|
|
130
|
+
eventEmitter.emitSync('no-listeners-sync', 'data');
|
|
131
|
+
});
|
|
132
|
+
});
|
|
133
|
+
describe('@OnEvent Decorator', () => {
|
|
134
|
+
it('should register event listener metadata', () => {
|
|
135
|
+
const callback = jest.fn();
|
|
136
|
+
class TestListener {
|
|
137
|
+
handleEvent(payload) {
|
|
138
|
+
callback(payload);
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
__decorate([
|
|
142
|
+
OnEvent('decorator-event'),
|
|
143
|
+
__metadata("design:type", Function),
|
|
144
|
+
__metadata("design:paramtypes", [Object]),
|
|
145
|
+
__metadata("design:returntype", void 0)
|
|
146
|
+
], TestListener.prototype, "handleEvent", null);
|
|
147
|
+
const instance = new TestListener();
|
|
148
|
+
const key = 'nitrostack:event_handler';
|
|
149
|
+
const metadata = Reflect.getMetadata(key, instance.constructor);
|
|
150
|
+
expect(metadata).toEqual([{ event: 'decorator-event', methodName: 'handleEvent' }]);
|
|
151
|
+
});
|
|
152
|
+
it('should register multiple event handlers', () => {
|
|
153
|
+
class MultiHandler {
|
|
154
|
+
handleOne(payload) { }
|
|
155
|
+
handleTwo(payload) { }
|
|
156
|
+
}
|
|
157
|
+
__decorate([
|
|
158
|
+
OnEvent('event-one'),
|
|
159
|
+
__metadata("design:type", Function),
|
|
160
|
+
__metadata("design:paramtypes", [Object]),
|
|
161
|
+
__metadata("design:returntype", void 0)
|
|
162
|
+
], MultiHandler.prototype, "handleOne", null);
|
|
163
|
+
__decorate([
|
|
164
|
+
OnEvent('event-two'),
|
|
165
|
+
__metadata("design:type", Function),
|
|
166
|
+
__metadata("design:paramtypes", [Object]),
|
|
167
|
+
__metadata("design:returntype", void 0)
|
|
168
|
+
], MultiHandler.prototype, "handleTwo", null);
|
|
169
|
+
const key = 'nitrostack:event_handler';
|
|
170
|
+
const metadata = Reflect.getMetadata(key, MultiHandler);
|
|
171
|
+
expect(metadata).toHaveLength(2);
|
|
172
|
+
expect(metadata).toContainEqual({ event: 'event-one', methodName: 'handleOne' });
|
|
173
|
+
expect(metadata).toContainEqual({ event: 'event-two', methodName: 'handleTwo' });
|
|
174
|
+
});
|
|
175
|
+
});
|
|
176
|
+
});
|
|
177
|
+
//# sourceMappingURL=events.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"events.test.js","sourceRoot":"","sources":["../../../../src/core/events/__tests__/events.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,7 +2,7 @@ import 'reflect-metadata';
|
|
|
2
2
|
/**
|
|
3
3
|
* Event handler type
|
|
4
4
|
*/
|
|
5
|
-
type EventHandler = (...args:
|
|
5
|
+
type EventHandler = (...args: unknown[]) => void | Promise<void>;
|
|
6
6
|
/**
|
|
7
7
|
* Event Emitter
|
|
8
8
|
*
|
|
@@ -28,11 +28,11 @@ export declare class EventEmitter {
|
|
|
28
28
|
/**
|
|
29
29
|
* Emit an event
|
|
30
30
|
*/
|
|
31
|
-
emit(event: string, ...args:
|
|
31
|
+
emit(event: string, ...args: unknown[]): Promise<void>;
|
|
32
32
|
/**
|
|
33
33
|
* Emit an event synchronously
|
|
34
34
|
*/
|
|
35
|
-
emitSync(event: string, ...args:
|
|
35
|
+
emitSync(event: string, ...args: unknown[]): void;
|
|
36
36
|
/**
|
|
37
37
|
* Remove all listeners for an event
|
|
38
38
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"event-emitter.d.ts","sourceRoot":"","sources":["../../../src/core/events/event-emitter.ts"],"names":[],"mappings":"AAAA,OAAO,kBAAkB,CAAC;AAE1B;;GAEG;AACH,KAAK,YAAY,GAAG,CAAC,GAAG,IAAI,EAAE,
|
|
1
|
+
{"version":3,"file":"event-emitter.d.ts","sourceRoot":"","sources":["../../../src/core/events/event-emitter.ts"],"names":[],"mappings":"AAAA,OAAO,kBAAkB,CAAC;AAE1B;;GAEG;AACH,KAAK,YAAY,GAAG,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;AAEjE;;;;GAIG;AACH,qBAAa,YAAY;IACvB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAe;IACtC,OAAO,CAAC,SAAS,CAA0C;IAE3D,OAAO;IAEP,MAAM,CAAC,WAAW,IAAI,YAAY;IAOlC;;OAEG;IACH,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,YAAY,GAAG,IAAI;IAO9C;;OAEG;IACH,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,YAAY,GAAG,IAAI;IAQhD;;OAEG;IACH,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,YAAY,GAAG,IAAI;IAc/C;;OAEG;IACG,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAQ5D;;OAEG;IACH,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI;IAOjD;;OAEG;IACH,kBAAkB,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI;IAQxC;;OAEG;IACH,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;IAIpC;;OAEG;IACH,UAAU,IAAI,MAAM,EAAE;CAGvB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"event-emitter.js","sourceRoot":"","sources":["../../../src/core/events/event-emitter.ts"],"names":[],"mappings":"AAAA,OAAO,kBAAkB,CAAC;AAO1B;;;;GAIG;AACH,MAAM,OAAO,YAAY;IACf,MAAM,CAAC,QAAQ,CAAe;IAC9B,SAAS,GAAgC,IAAI,GAAG,EAAE,CAAC;IAE3D,gBAAuB,CAAC;IAExB,MAAM,CAAC,WAAW;QAChB,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,CAAC;YAC3B,YAAY,CAAC,QAAQ,GAAG,IAAI,YAAY,EAAE,CAAC;QAC7C,CAAC;QACD,OAAO,YAAY,CAAC,QAAQ,CAAC;IAC/B,CAAC;IAED;;OAEG;IACH,EAAE,CAAC,KAAa,EAAE,OAAqB;QACrC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;YAC/B,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QAChC,CAAC;QACD,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC3C,CAAC;IAED;;OAEG;IACH,IAAI,CAAC,KAAa,EAAE,OAAqB;QACvC,MAAM,cAAc,GAAG,KAAK,EAAE,GAAG,
|
|
1
|
+
{"version":3,"file":"event-emitter.js","sourceRoot":"","sources":["../../../src/core/events/event-emitter.ts"],"names":[],"mappings":"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"}
|
|
@@ -13,7 +13,7 @@ interface EventHandlerMetadata {
|
|
|
13
13
|
* ```typescript
|
|
14
14
|
* export class OrderTools {
|
|
15
15
|
* @Tool({ name: 'create_order', ... })
|
|
16
|
-
* async createOrder(input:
|
|
16
|
+
* async createOrder(input: Record<string, unknown>, ctx: ExecutionContext) {
|
|
17
17
|
* const order = await this.saveOrder(input);
|
|
18
18
|
*
|
|
19
19
|
* // Emit event
|
|
@@ -25,7 +25,7 @@ interface EventHandlerMetadata {
|
|
|
25
25
|
*
|
|
26
26
|
* export class NotificationService {
|
|
27
27
|
* @OnEvent('order.created')
|
|
28
|
-
* async handleOrderCreated(order:
|
|
28
|
+
* async handleOrderCreated(order: unknown) {
|
|
29
29
|
* await this.sendConfirmationEmail(order);
|
|
30
30
|
* }
|
|
31
31
|
* }
|
|
@@ -35,14 +35,14 @@ export declare function OnEvent(event: string): MethodDecorator;
|
|
|
35
35
|
/**
|
|
36
36
|
* Get event handlers from a class
|
|
37
37
|
*/
|
|
38
|
-
export declare function getEventHandlers(target:
|
|
38
|
+
export declare function getEventHandlers(target: object): EventHandlerMetadata[];
|
|
39
39
|
/**
|
|
40
40
|
* Register all event handlers from a class instance
|
|
41
41
|
*/
|
|
42
|
-
export declare function registerEventHandlers(instance:
|
|
42
|
+
export declare function registerEventHandlers(instance: object & Record<string, unknown>): void;
|
|
43
43
|
/**
|
|
44
44
|
* Emit an event from execution context
|
|
45
45
|
*/
|
|
46
|
-
export declare function emitEvent(event: string, ...args:
|
|
46
|
+
export declare function emitEvent(event: string, ...args: unknown[]): void;
|
|
47
47
|
export {};
|
|
48
48
|
//# sourceMappingURL=event.decorator.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"event.decorator.d.ts","sourceRoot":"","sources":["../../../src/core/events/event.decorator.ts"],"names":[],"mappings":"AAAA,OAAO,kBAAkB,CAAC;AAK1B;;GAEG;AACH,UAAU,oBAAoB;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAgB,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,eAAe,
|
|
1
|
+
{"version":3,"file":"event.decorator.d.ts","sourceRoot":"","sources":["../../../src/core/events/event.decorator.ts"],"names":[],"mappings":"AAAA,OAAO,kBAAkB,CAAC;AAK1B;;GAEG;AACH,UAAU,oBAAoB;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAgB,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,eAAe,CAUtD;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,oBAAoB,EAAE,CAEvE;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAWtF;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI,CASjE"}
|
|
@@ -8,7 +8,7 @@ const EVENT_HANDLER_KEY = 'nitrostack:event_handler';
|
|
|
8
8
|
* ```typescript
|
|
9
9
|
* export class OrderTools {
|
|
10
10
|
* @Tool({ name: 'create_order', ... })
|
|
11
|
-
* async createOrder(input:
|
|
11
|
+
* async createOrder(input: Record<string, unknown>, ctx: ExecutionContext) {
|
|
12
12
|
* const order = await this.saveOrder(input);
|
|
13
13
|
*
|
|
14
14
|
* // Emit event
|
|
@@ -20,7 +20,7 @@ const EVENT_HANDLER_KEY = 'nitrostack:event_handler';
|
|
|
20
20
|
*
|
|
21
21
|
* export class NotificationService {
|
|
22
22
|
* @OnEvent('order.created')
|
|
23
|
-
* async handleOrderCreated(order:
|
|
23
|
+
* async handleOrderCreated(order: unknown) {
|
|
24
24
|
* await this.sendConfirmationEmail(order);
|
|
25
25
|
* }
|
|
26
26
|
* }
|
|
@@ -28,12 +28,13 @@ const EVENT_HANDLER_KEY = 'nitrostack:event_handler';
|
|
|
28
28
|
*/
|
|
29
29
|
export function OnEvent(event) {
|
|
30
30
|
return (target, propertyKey, descriptor) => {
|
|
31
|
-
const
|
|
31
|
+
const targetWithConstructor = target;
|
|
32
|
+
const existingHandlers = Reflect.getMetadata(EVENT_HANDLER_KEY, targetWithConstructor.constructor) || [];
|
|
32
33
|
existingHandlers.push({
|
|
33
34
|
event,
|
|
34
35
|
methodName: propertyKey,
|
|
35
36
|
});
|
|
36
|
-
Reflect.defineMetadata(EVENT_HANDLER_KEY, existingHandlers,
|
|
37
|
+
Reflect.defineMetadata(EVENT_HANDLER_KEY, existingHandlers, targetWithConstructor.constructor);
|
|
37
38
|
};
|
|
38
39
|
}
|
|
39
40
|
/**
|
|
@@ -49,8 +50,11 @@ export function registerEventHandlers(instance) {
|
|
|
49
50
|
const emitter = EventEmitter.getInstance();
|
|
50
51
|
const handlers = getEventHandlers(instance.constructor);
|
|
51
52
|
for (const { event, methodName } of handlers) {
|
|
52
|
-
const
|
|
53
|
-
|
|
53
|
+
const method = instance[String(methodName)];
|
|
54
|
+
if (typeof method === 'function') {
|
|
55
|
+
const handler = method.bind(instance);
|
|
56
|
+
emitter.on(event, handler);
|
|
57
|
+
}
|
|
54
58
|
}
|
|
55
59
|
}
|
|
56
60
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"event.decorator.js","sourceRoot":"","sources":["../../../src/core/events/event.decorator.ts"],"names":[],"mappings":"AAAA,OAAO,kBAAkB,CAAC;AAC1B,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAElD,MAAM,iBAAiB,GAAG,0BAA0B,CAAC;AAUrD;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,MAAM,UAAU,OAAO,CAAC,KAAa;IACnC,OAAO,CAAC,
|
|
1
|
+
{"version":3,"file":"event.decorator.js","sourceRoot":"","sources":["../../../src/core/events/event.decorator.ts"],"names":[],"mappings":"AAAA,OAAO,kBAAkB,CAAC;AAC1B,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAElD,MAAM,iBAAiB,GAAG,0BAA0B,CAAC;AAUrD;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,MAAM,UAAU,OAAO,CAAC,KAAa;IACnC,OAAO,CAAC,MAAc,EAAE,WAA4B,EAAE,UAA8B,EAAE,EAAE;QACtF,MAAM,qBAAqB,GAAG,MAAiC,CAAC;QAChE,MAAM,gBAAgB,GAAG,OAAO,CAAC,WAAW,CAAC,iBAAiB,EAAE,qBAAqB,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;QACzG,gBAAgB,CAAC,IAAI,CAAC;YACpB,KAAK;YACL,UAAU,EAAE,WAAW;SACxB,CAAC,CAAC;QACH,OAAO,CAAC,cAAc,CAAC,iBAAiB,EAAE,gBAAgB,EAAE,qBAAqB,CAAC,WAAW,CAAC,CAAC;IACjG,CAAC,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAAC,MAAc;IAC7C,OAAO,OAAO,CAAC,WAAW,CAAC,iBAAiB,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC;AAC9D,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,qBAAqB,CAAC,QAA0C;IAC9E,MAAM,OAAO,GAAG,YAAY,CAAC,WAAW,EAAE,CAAC;IAC3C,MAAM,QAAQ,GAAG,gBAAgB,CAAE,QAAoC,CAAC,WAAW,CAAC,CAAC;IAErF,KAAK,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,QAAQ,EAAE,CAAC;QAC7C,MAAM,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC;QAC5C,IAAI,OAAO,MAAM,KAAK,UAAU,EAAE,CAAC;YACjC,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACtC,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QAC7B,CAAC;IACH,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,SAAS,CAAC,KAAa,EAAE,GAAG,IAAe;IACzD,MAAM,OAAO,GAAG,YAAY,CAAC,WAAW,EAAE,CAAC;IAC3C,kCAAkC;IAClC,OAAO,CAAC,QAAQ,CAAC,KAAK,EAAE,GAAG,IAAI,CAAC,CAAC;IAEjC,gCAAgC;IAChC,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,IAAI,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE;QACzC,OAAO,CAAC,KAAK,CAAC,8BAA8B,KAAK,GAAG,EAAE,KAAK,CAAC,CAAC;IAC/D,CAAC,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -1,8 +1,14 @@
|
|
|
1
1
|
import { EventEmitter } from 'events';
|
|
2
2
|
import Transport from 'winston-transport';
|
|
3
3
|
export declare const logEmitter: EventEmitter<[never]>;
|
|
4
|
+
interface LogInfo {
|
|
5
|
+
level: string;
|
|
6
|
+
message: string;
|
|
7
|
+
[key: string]: unknown;
|
|
8
|
+
}
|
|
4
9
|
export declare class EventEmitterTransport extends Transport {
|
|
5
10
|
constructor(opts?: Transport.TransportStreamOptions);
|
|
6
|
-
log(info:
|
|
11
|
+
log(info: LogInfo, callback: () => void): void;
|
|
7
12
|
}
|
|
13
|
+
export {};
|
|
8
14
|
//# sourceMappingURL=log-emitter.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"log-emitter.d.ts","sourceRoot":"","sources":["../../../src/core/events/log-emitter.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AACtC,OAAO,SAAS,MAAM,mBAAmB,CAAC;AAG1C,eAAO,MAAM,UAAU,uBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"log-emitter.d.ts","sourceRoot":"","sources":["../../../src/core/events/log-emitter.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AACtC,OAAO,SAAS,MAAM,mBAAmB,CAAC;AAG1C,eAAO,MAAM,UAAU,uBAAqB,CAAC;AAE7C,UAAU,OAAO;IACf,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAGD,qBAAa,qBAAsB,SAAQ,SAAS;gBACtC,IAAI,CAAC,EAAE,SAAS,CAAC,sBAAsB;IAInD,GAAG,CAAC,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,IAAI;CAUxC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"log-emitter.js","sourceRoot":"","sources":["../../../src/core/events/log-emitter.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AACtC,OAAO,SAAS,MAAM,mBAAmB,CAAC;AAE1C,6BAA6B;AAC7B,MAAM,CAAC,MAAM,UAAU,GAAG,IAAI,YAAY,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"log-emitter.js","sourceRoot":"","sources":["../../../src/core/events/log-emitter.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AACtC,OAAO,SAAS,MAAM,mBAAmB,CAAC;AAE1C,6BAA6B;AAC7B,MAAM,CAAC,MAAM,UAAU,GAAG,IAAI,YAAY,EAAE,CAAC;AAQ7C,oCAAoC;AACpC,MAAM,OAAO,qBAAsB,SAAQ,SAAS;IAClD,YAAY,IAAuC;QACjD,KAAK,CAAC,IAAI,CAAC,CAAC;IACd,CAAC;IAED,GAAG,CAAC,IAAa,EAAE,QAAoB;QACrC,YAAY,CAAC,GAAG,EAAE;YAChB,UAAU,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;YAC7B,sDAAsD;YACtD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,cAAc,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC/D,CAAC,CAAC,CAAC;QAEH,uBAAuB;QACvB,QAAQ,EAAE,CAAC;IACb,CAAC;CACF"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"filters.test.d.ts","sourceRoot":"","sources":["../../../../src/core/filters/__tests__/filters.test.ts"],"names":[],"mappings":"AACA,OAAO,kBAAkB,CAAC"}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
var __decorate = (this && this.__decorate) || function (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
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
8
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
9
|
+
};
|
|
10
|
+
import { describe, it, expect } from '@jest/globals';
|
|
11
|
+
import 'reflect-metadata';
|
|
12
|
+
import { UseFilters, getExceptionFilterMetadata } from '../exception-filter.decorator';
|
|
13
|
+
// Verify what was actually exported
|
|
14
|
+
// The previous view showed:
|
|
15
|
+
// export const EXCEPTION_FILTERS_METADATA = Symbol('filters:exception');
|
|
16
|
+
// export function UseFilters(...filters: ExceptionFilterConstructor[]) ...
|
|
17
|
+
// export function getExceptionFiltersMetadata(target: object, methodName: string): ExceptionFilterConstructor[] ...
|
|
18
|
+
// And interface:
|
|
19
|
+
// export interface ExceptionFilter<T = any> { catch(exception: T, host: ArgumentsHost): void; }
|
|
20
|
+
// Wait, the lint said "Module ... has no exported member 'ExceptionFilter'".
|
|
21
|
+
// Maybe I missed something in view_file 384 output? No output was shown for view_file there?
|
|
22
|
+
// Ah, I viewed file 387 in step 387 but didn't see content?
|
|
23
|
+
// In Step 387/388/389 I listed dir and wrote file. I didn't actually READ the filter interface file content in the prompt history I have.
|
|
24
|
+
// I requested view_file in step 401 (this step).
|
|
25
|
+
// I will see the content NOW. So I should wait for output before replace?
|
|
26
|
+
// But I can guess or try to start pipe test.
|
|
27
|
+
// Actually I am in step 401 generation. I can't read the file yet.
|
|
28
|
+
// I will blindly assume I need to read first.
|
|
29
|
+
// Oh wait, I am generating 401. I requested view_file.
|
|
30
|
+
// I can't do replace_file_content immediately if I rely on that info.
|
|
31
|
+
// But I can queue it if I am confident.
|
|
32
|
+
// I'll wait.
|
|
33
|
+
describe('Filters Module', () => {
|
|
34
|
+
describe('@UseFilters Decorator', () => {
|
|
35
|
+
it('should register filters metadata', () => {
|
|
36
|
+
class MockFilter {
|
|
37
|
+
catch(exception, host) { }
|
|
38
|
+
}
|
|
39
|
+
class TestController {
|
|
40
|
+
method() { }
|
|
41
|
+
}
|
|
42
|
+
__decorate([
|
|
43
|
+
UseFilters(MockFilter),
|
|
44
|
+
__metadata("design:type", Function),
|
|
45
|
+
__metadata("design:paramtypes", []),
|
|
46
|
+
__metadata("design:returntype", void 0)
|
|
47
|
+
], TestController.prototype, "method", null);
|
|
48
|
+
const metadata = getExceptionFilterMetadata(TestController.prototype, 'method');
|
|
49
|
+
expect(metadata).toEqual([MockFilter]);
|
|
50
|
+
});
|
|
51
|
+
it('should register multiple filters', () => {
|
|
52
|
+
class Filter1 {
|
|
53
|
+
catch() { }
|
|
54
|
+
}
|
|
55
|
+
class Filter2 {
|
|
56
|
+
catch() { }
|
|
57
|
+
}
|
|
58
|
+
class TestController {
|
|
59
|
+
method() { }
|
|
60
|
+
}
|
|
61
|
+
__decorate([
|
|
62
|
+
UseFilters(Filter1, Filter2),
|
|
63
|
+
__metadata("design:type", Function),
|
|
64
|
+
__metadata("design:paramtypes", []),
|
|
65
|
+
__metadata("design:returntype", void 0)
|
|
66
|
+
], TestController.prototype, "method", null);
|
|
67
|
+
const metadata = getExceptionFilterMetadata(TestController.prototype, 'method');
|
|
68
|
+
expect(metadata).toEqual([Filter1, Filter2]);
|
|
69
|
+
});
|
|
70
|
+
});
|
|
71
|
+
});
|
|
72
|
+
//# sourceMappingURL=filters.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"filters.test.js","sourceRoot":"","sources":["../../../../src/core/filters/__tests__/filters.test.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EAAQ,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAC3D,OAAO,kBAAkB,CAAC;AAC1B,OAAO,EAAE,UAAU,EAAE,0BAA0B,EAAE,MAAM,+BAA+B,CAAC;AAGvF,oCAAoC;AACpC,4BAA4B;AAC5B,yEAAyE;AACzE,2EAA2E;AAC3E,oHAAoH;AAEpH,iBAAiB;AACjB,gGAAgG;AAEhG,6EAA6E;AAC7E,6FAA6F;AAC7F,4DAA4D;AAC5D,0IAA0I;AAC1I,iDAAiD;AACjD,0EAA0E;AAC1E,6CAA6C;AAC7C,mEAAmE;AACnE,8CAA8C;AAE9C,uDAAuD;AACvD,sEAAsE;AACtE,wCAAwC;AACxC,aAAa;AAGb,QAAQ,CAAC,gBAAgB,EAAE,GAAG,EAAE;IAC5B,QAAQ,CAAC,uBAAuB,EAAE,GAAG,EAAE;QACnC,EAAE,CAAC,kCAAkC,EAAE,GAAG,EAAE;YACxC,MAAM,UAAU;gBACZ,KAAK,CAAC,SAAkB,EAAE,IAAS,IAAI,CAAC;aAC3C;YAED,MAAM,cAAc;gBAEhB,MAAM,KAAK,CAAC;aACf;YADG;gBADC,UAAU,CAAC,UAAU,CAAC;;;;wDACX;YAGhB,MAAM,QAAQ,GAAG,0BAA0B,CAAC,cAAc,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;YAChF,MAAM,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC;QAC3C,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,kCAAkC,EAAE,GAAG,EAAE;YACxC,MAAM,OAAO;gBAAuC,KAAK,KAAK,CAAC;aAAE;YACjE,MAAM,OAAO;gBAAuC,KAAK,KAAK,CAAC;aAAE;YAEjE,MAAM,cAAc;gBAEhB,MAAM,KAAK,CAAC;aACf;YADG;gBADC,UAAU,CAAC,OAAO,EAAE,OAAO,CAAC;;;;wDACjB;YAGhB,MAAM,QAAQ,GAAG,0BAA0B,CAAC,cAAc,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;YAChF,MAAM,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;QACjD,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC"}
|