@buenojs/bueno 0.8.6 → 0.8.8
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/.claude/settings.local.json +9 -0
- package/README.md +132 -15
- package/dist/cache/index.d.ts +187 -0
- package/dist/cache/index.d.ts.map +1 -0
- package/dist/cli/bin.d.ts +8 -0
- package/dist/cli/bin.d.ts.map +1 -0
- package/dist/cli/bin.js +483 -155
- package/dist/cli/commands/add-frontend.d.ts +7 -0
- package/dist/cli/commands/add-frontend.d.ts.map +1 -0
- package/dist/cli/commands/build.d.ts +7 -0
- package/dist/cli/commands/build.d.ts.map +1 -0
- package/dist/cli/commands/dev.d.ts +7 -0
- package/dist/cli/commands/dev.d.ts.map +1 -0
- package/dist/cli/commands/generate.d.ts +7 -0
- package/dist/cli/commands/generate.d.ts.map +1 -0
- package/dist/cli/commands/help.d.ts +7 -0
- package/dist/cli/commands/help.d.ts.map +1 -0
- package/dist/cli/commands/index.d.ts +59 -0
- package/dist/cli/commands/index.d.ts.map +1 -0
- package/dist/cli/commands/migration.d.ts +7 -0
- package/dist/cli/commands/migration.d.ts.map +1 -0
- package/dist/cli/commands/new.d.ts +7 -0
- package/dist/cli/commands/new.d.ts.map +1 -0
- package/dist/cli/commands/start.d.ts +7 -0
- package/dist/cli/commands/start.d.ts.map +1 -0
- package/dist/cli/core/args.d.ts +61 -0
- package/dist/cli/core/args.d.ts.map +1 -0
- package/dist/cli/core/console.d.ts +135 -0
- package/dist/cli/core/console.d.ts.map +1 -0
- package/dist/cli/core/index.d.ts +10 -0
- package/dist/cli/core/index.d.ts.map +1 -0
- package/dist/cli/core/prompt.d.ts +63 -0
- package/dist/cli/core/prompt.d.ts.map +1 -0
- package/dist/cli/core/spinner.d.ts +111 -0
- package/dist/cli/core/spinner.d.ts.map +1 -0
- package/dist/cli/index.d.ts +47 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/templates/database/index.d.ts +24 -0
- package/dist/cli/templates/database/index.d.ts.map +1 -0
- package/dist/cli/templates/database/mysql.d.ts +6 -0
- package/dist/cli/templates/database/mysql.d.ts.map +1 -0
- package/dist/cli/templates/database/none.d.ts +8 -0
- package/dist/cli/templates/database/none.d.ts.map +1 -0
- package/dist/cli/templates/database/postgresql.d.ts +6 -0
- package/dist/cli/templates/database/postgresql.d.ts.map +1 -0
- package/dist/cli/templates/database/sqlite.d.ts +6 -0
- package/dist/cli/templates/database/sqlite.d.ts.map +1 -0
- package/dist/cli/templates/deploy.d.ts +41 -0
- package/dist/cli/templates/deploy.d.ts.map +1 -0
- package/dist/cli/templates/docker.d.ts +30 -0
- package/dist/cli/templates/docker.d.ts.map +1 -0
- package/dist/cli/templates/frontend/index.d.ts +25 -0
- package/dist/cli/templates/frontend/index.d.ts.map +1 -0
- package/dist/cli/templates/frontend/none.d.ts +8 -0
- package/dist/cli/templates/frontend/none.d.ts.map +1 -0
- package/dist/cli/templates/frontend/react.d.ts +6 -0
- package/dist/cli/templates/frontend/react.d.ts.map +1 -0
- package/dist/cli/templates/frontend/solid.d.ts +6 -0
- package/dist/cli/templates/frontend/solid.d.ts.map +1 -0
- package/dist/cli/templates/frontend/svelte.d.ts +6 -0
- package/dist/cli/templates/frontend/svelte.d.ts.map +1 -0
- package/dist/cli/templates/frontend/vue.d.ts +6 -0
- package/dist/cli/templates/frontend/vue.d.ts.map +1 -0
- package/dist/cli/templates/generators/index.d.ts +29 -0
- package/dist/cli/templates/generators/index.d.ts.map +1 -0
- package/dist/cli/templates/generators/types.d.ts +32 -0
- package/dist/cli/templates/generators/types.d.ts.map +1 -0
- package/dist/cli/templates/index.d.ts +12 -0
- package/dist/cli/templates/index.d.ts.map +1 -0
- package/dist/cli/templates/project/api.d.ts +6 -0
- package/dist/cli/templates/project/api.d.ts.map +1 -0
- package/dist/cli/templates/project/default.d.ts +6 -0
- package/dist/cli/templates/project/default.d.ts.map +1 -0
- package/dist/cli/templates/project/fullstack.d.ts +14 -0
- package/dist/cli/templates/project/fullstack.d.ts.map +1 -0
- package/dist/cli/templates/project/index.d.ts +26 -0
- package/dist/cli/templates/project/index.d.ts.map +1 -0
- package/dist/cli/templates/project/minimal.d.ts +6 -0
- package/dist/cli/templates/project/minimal.d.ts.map +1 -0
- package/dist/cli/templates/project/types.d.ts +80 -0
- package/dist/cli/templates/project/types.d.ts.map +1 -0
- package/dist/cli/templates/project/website.d.ts +8 -0
- package/dist/cli/templates/project/website.d.ts.map +1 -0
- package/dist/cli/utils/fs.d.ts +137 -0
- package/dist/cli/utils/fs.d.ts.map +1 -0
- package/dist/cli/utils/index.d.ts +9 -0
- package/dist/cli/utils/index.d.ts.map +1 -0
- package/dist/cli/utils/strings.d.ts +86 -0
- package/dist/cli/utils/strings.d.ts.map +1 -0
- package/dist/cli/utils/version.d.ts +15 -0
- package/dist/cli/utils/version.d.ts.map +1 -0
- package/dist/config/env-validation.d.ts +49 -0
- package/dist/config/env-validation.d.ts.map +1 -0
- package/dist/config/env.d.ts +167 -0
- package/dist/config/env.d.ts.map +1 -0
- package/dist/config/index.d.ts +168 -0
- package/dist/config/index.d.ts.map +1 -0
- package/dist/config/loader.d.ts +81 -0
- package/dist/config/loader.d.ts.map +1 -0
- package/dist/config/merge.d.ts +66 -0
- package/dist/config/merge.d.ts.map +1 -0
- package/dist/config/types.d.ts +322 -0
- package/dist/config/types.d.ts.map +1 -0
- package/dist/config/validation.d.ts +100 -0
- package/dist/config/validation.d.ts.map +1 -0
- package/dist/container/forward-ref.d.ts +116 -0
- package/dist/container/forward-ref.d.ts.map +1 -0
- package/dist/container/index.d.ts +95 -0
- package/dist/container/index.d.ts.map +1 -0
- package/dist/context/index.d.ts +143 -0
- package/dist/context/index.d.ts.map +1 -0
- package/dist/database/index.d.ts +219 -0
- package/dist/database/index.d.ts.map +1 -0
- package/dist/database/migrations/index.d.ts +146 -0
- package/dist/database/migrations/index.d.ts.map +1 -0
- package/dist/database/orm/builder.d.ts +122 -0
- package/dist/database/orm/builder.d.ts.map +1 -0
- package/dist/database/orm/casts/index.d.ts +16 -0
- package/dist/database/orm/casts/index.d.ts.map +1 -0
- package/dist/database/orm/casts/types.d.ts +16 -0
- package/dist/database/orm/casts/types.d.ts.map +1 -0
- package/dist/database/orm/compiler.d.ts +90 -0
- package/dist/database/orm/compiler.d.ts.map +1 -0
- package/dist/database/orm/hooks/index.d.ts +53 -0
- package/dist/database/orm/hooks/index.d.ts.map +1 -0
- package/dist/database/orm/index.d.ts +21 -0
- package/dist/database/orm/index.d.ts.map +1 -0
- package/dist/database/orm/model-registry.d.ts +33 -0
- package/dist/database/orm/model-registry.d.ts.map +1 -0
- package/dist/database/orm/model.d.ts +245 -0
- package/dist/database/orm/model.d.ts.map +1 -0
- package/dist/database/orm/relationships/base.d.ts +69 -0
- package/dist/database/orm/relationships/base.d.ts.map +1 -0
- package/dist/database/orm/relationships/belongs-to-many.d.ts +47 -0
- package/dist/database/orm/relationships/belongs-to-many.d.ts.map +1 -0
- package/dist/database/orm/relationships/belongs-to.d.ts +17 -0
- package/dist/database/orm/relationships/belongs-to.d.ts.map +1 -0
- package/dist/database/orm/relationships/has-many.d.ts +14 -0
- package/dist/database/orm/relationships/has-many.d.ts.map +1 -0
- package/dist/database/orm/relationships/has-one.d.ts +14 -0
- package/dist/database/orm/relationships/has-one.d.ts.map +1 -0
- package/dist/database/orm/relationships/index.d.ts +10 -0
- package/dist/database/orm/relationships/index.d.ts.map +1 -0
- package/dist/database/orm/scopes/index.d.ts +36 -0
- package/dist/database/orm/scopes/index.d.ts.map +1 -0
- package/dist/database/schema/index.d.ts +155 -0
- package/dist/database/schema/index.d.ts.map +1 -0
- package/dist/events/__tests__/event-system.test.d.ts +2 -0
- package/dist/events/__tests__/event-system.test.d.ts.map +1 -0
- package/dist/events/config.d.ts +16 -0
- package/dist/events/config.d.ts.map +1 -0
- package/dist/events/example-usage.d.ts +12 -0
- package/dist/events/example-usage.d.ts.map +1 -0
- package/dist/events/index.d.ts +27 -0
- package/dist/events/index.d.ts.map +1 -0
- package/dist/events/manager.d.ts +33 -0
- package/dist/events/manager.d.ts.map +1 -0
- package/dist/events/registry.d.ts +31 -0
- package/dist/events/registry.d.ts.map +1 -0
- package/dist/events/types.d.ts +105 -0
- package/dist/events/types.d.ts.map +1 -0
- package/dist/frontend/api-routes.d.ts +189 -0
- package/dist/frontend/api-routes.d.ts.map +1 -0
- package/dist/frontend/bundler.d.ts +99 -0
- package/dist/frontend/bundler.d.ts.map +1 -0
- package/dist/frontend/console-client.d.ts +11 -0
- package/dist/frontend/console-client.d.ts.map +1 -0
- package/dist/frontend/console-stream.d.ts +138 -0
- package/dist/frontend/console-stream.d.ts.map +1 -0
- package/dist/frontend/dev-server.d.ts +174 -0
- package/dist/frontend/dev-server.d.ts.map +1 -0
- package/dist/frontend/file-router.d.ts +170 -0
- package/dist/frontend/file-router.d.ts.map +1 -0
- package/dist/frontend/frameworks/index.d.ts +41 -0
- package/dist/frontend/frameworks/index.d.ts.map +1 -0
- package/dist/frontend/frameworks/react.d.ts +32 -0
- package/dist/frontend/frameworks/react.d.ts.map +1 -0
- package/dist/frontend/frameworks/solid.d.ts +42 -0
- package/dist/frontend/frameworks/solid.d.ts.map +1 -0
- package/dist/frontend/frameworks/svelte.d.ts +57 -0
- package/dist/frontend/frameworks/svelte.d.ts.map +1 -0
- package/dist/frontend/frameworks/vue.d.ts +36 -0
- package/dist/frontend/frameworks/vue.d.ts.map +1 -0
- package/dist/frontend/hmr-client.d.ts +22 -0
- package/dist/frontend/hmr-client.d.ts.map +1 -0
- package/dist/frontend/hmr.d.ts +185 -0
- package/dist/frontend/hmr.d.ts.map +1 -0
- package/dist/frontend/index.d.ts +34 -0
- package/dist/frontend/index.d.ts.map +1 -0
- package/dist/frontend/islands.d.ts +135 -0
- package/dist/frontend/islands.d.ts.map +1 -0
- package/dist/frontend/isr.d.ts +143 -0
- package/dist/frontend/isr.d.ts.map +1 -0
- package/dist/frontend/layout.d.ts +140 -0
- package/dist/frontend/layout.d.ts.map +1 -0
- package/dist/frontend/ssr/react.d.ts +118 -0
- package/dist/frontend/ssr/react.d.ts.map +1 -0
- package/dist/frontend/ssr/solid.d.ts +141 -0
- package/dist/frontend/ssr/solid.d.ts.map +1 -0
- package/dist/frontend/ssr/svelte.d.ts +158 -0
- package/dist/frontend/ssr/svelte.d.ts.map +1 -0
- package/dist/frontend/ssr/vue.d.ts +161 -0
- package/dist/frontend/ssr/vue.d.ts.map +1 -0
- package/dist/frontend/ssr.d.ts +147 -0
- package/dist/frontend/ssr.d.ts.map +1 -0
- package/dist/frontend/types.d.ts +1902 -0
- package/dist/frontend/types.d.ts.map +1 -0
- package/dist/graphql/built-in-engine.d.ts +36 -0
- package/dist/graphql/built-in-engine.d.ts.map +1 -0
- package/dist/graphql/context-builder.d.ts +44 -0
- package/dist/graphql/context-builder.d.ts.map +1 -0
- package/dist/graphql/decorators.d.ts +162 -0
- package/dist/graphql/decorators.d.ts.map +1 -0
- package/dist/graphql/execution-pipeline.d.ts +67 -0
- package/dist/graphql/execution-pipeline.d.ts.map +1 -0
- package/dist/graphql/graphql-module.d.ts +70 -0
- package/dist/graphql/graphql-module.d.ts.map +1 -0
- package/dist/graphql/index.d.ts +48 -0
- package/dist/graphql/index.d.ts.map +1 -0
- package/dist/graphql/metadata.d.ts +37 -0
- package/dist/graphql/metadata.d.ts.map +1 -0
- package/dist/graphql/schema-builder.d.ts +34 -0
- package/dist/graphql/schema-builder.d.ts.map +1 -0
- package/dist/graphql/subscription-handler.d.ts +47 -0
- package/dist/graphql/subscription-handler.d.ts.map +1 -0
- package/dist/graphql/types.d.ts +252 -0
- package/dist/graphql/types.d.ts.map +1 -0
- package/dist/health/index.d.ts +176 -0
- package/dist/health/index.d.ts.map +1 -0
- package/dist/i18n/engine.d.ts +105 -0
- package/dist/i18n/engine.d.ts.map +1 -0
- package/dist/i18n/index.d.ts +13 -0
- package/dist/i18n/index.d.ts.map +1 -0
- package/dist/i18n/loader.d.ts +79 -0
- package/dist/i18n/loader.d.ts.map +1 -0
- package/dist/i18n/middleware.d.ts +96 -0
- package/dist/i18n/middleware.d.ts.map +1 -0
- package/dist/i18n/negotiator.d.ts +84 -0
- package/dist/i18n/negotiator.d.ts.map +1 -0
- package/dist/i18n/types.d.ts +129 -0
- package/dist/i18n/types.d.ts.map +1 -0
- package/dist/index.d.ts +48 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/jobs/drivers/memory.d.ts +38 -0
- package/dist/jobs/drivers/memory.d.ts.map +1 -0
- package/dist/jobs/drivers/redis.d.ts +34 -0
- package/dist/jobs/drivers/redis.d.ts.map +1 -0
- package/dist/jobs/index.d.ts +12 -0
- package/dist/jobs/index.d.ts.map +1 -0
- package/dist/jobs/queue.d.ts +93 -0
- package/dist/jobs/queue.d.ts.map +1 -0
- package/dist/jobs/types.d.ts +193 -0
- package/dist/jobs/types.d.ts.map +1 -0
- package/dist/jobs/worker.d.ts +91 -0
- package/dist/jobs/worker.d.ts.map +1 -0
- package/dist/lock/index.d.ts +141 -0
- package/dist/lock/index.d.ts.map +1 -0
- package/dist/logger/index.d.ts +156 -0
- package/dist/logger/index.d.ts.map +1 -0
- package/dist/logger/transports/index.d.ts +371 -0
- package/dist/logger/transports/index.d.ts.map +1 -0
- package/dist/metrics/index.d.ts +163 -0
- package/dist/metrics/index.d.ts.map +1 -0
- package/dist/middleware/built-in.d.ts +50 -0
- package/dist/middleware/built-in.d.ts.map +1 -0
- package/dist/middleware/index.d.ts +40 -0
- package/dist/middleware/index.d.ts.map +1 -0
- package/dist/migrations/index.d.ts +10 -0
- package/dist/migrations/index.d.ts.map +1 -0
- package/dist/modules/filters.d.ts +150 -0
- package/dist/modules/filters.d.ts.map +1 -0
- package/dist/modules/guards.d.ts +188 -0
- package/dist/modules/guards.d.ts.map +1 -0
- package/dist/modules/index.d.ts +266 -0
- package/dist/modules/index.d.ts.map +1 -0
- package/dist/modules/interceptors.d.ts +242 -0
- package/dist/modules/interceptors.d.ts.map +1 -0
- package/dist/modules/lazy.d.ts +187 -0
- package/dist/modules/lazy.d.ts.map +1 -0
- package/dist/modules/lifecycle.d.ts +221 -0
- package/dist/modules/lifecycle.d.ts.map +1 -0
- package/dist/modules/metadata.d.ts +32 -0
- package/dist/modules/metadata.d.ts.map +1 -0
- package/dist/modules/pipes.d.ts +287 -0
- package/dist/modules/pipes.d.ts.map +1 -0
- package/dist/notification/channels/base.d.ts +32 -0
- package/dist/notification/channels/base.d.ts.map +1 -0
- package/dist/notification/channels/email.d.ts +37 -0
- package/dist/notification/channels/email.d.ts.map +1 -0
- package/dist/notification/channels/push.d.ts +37 -0
- package/dist/notification/channels/push.d.ts.map +1 -0
- package/dist/notification/channels/sms.d.ts +37 -0
- package/dist/notification/channels/sms.d.ts.map +1 -0
- package/dist/notification/channels/whatsapp.d.ts +37 -0
- package/dist/notification/channels/whatsapp.d.ts.map +1 -0
- package/dist/notification/index.d.ts +15 -0
- package/dist/notification/index.d.ts.map +1 -0
- package/dist/notification/service.d.ts +100 -0
- package/dist/notification/service.d.ts.map +1 -0
- package/dist/notification/types.d.ts +253 -0
- package/dist/notification/types.d.ts.map +1 -0
- package/dist/observability/__tests__/observability.test.d.ts +2 -0
- package/dist/observability/__tests__/observability.test.d.ts.map +1 -0
- package/dist/observability/breadcrumbs.d.ts +48 -0
- package/dist/observability/breadcrumbs.d.ts.map +1 -0
- package/dist/observability/index.d.ts +95 -0
- package/dist/observability/index.d.ts.map +1 -0
- package/dist/observability/interceptor.d.ts +19 -0
- package/dist/observability/interceptor.d.ts.map +1 -0
- package/dist/observability/service.d.ts +101 -0
- package/dist/observability/service.d.ts.map +1 -0
- package/dist/observability/trace.d.ts +21 -0
- package/dist/observability/trace.d.ts.map +1 -0
- package/dist/observability/types.d.ts +172 -0
- package/dist/observability/types.d.ts.map +1 -0
- package/dist/openapi/__tests__/decorators.test.d.ts +2 -0
- package/dist/openapi/__tests__/decorators.test.d.ts.map +1 -0
- package/dist/openapi/__tests__/document-builder.test.d.ts +2 -0
- package/dist/openapi/__tests__/document-builder.test.d.ts.map +1 -0
- package/dist/openapi/__tests__/route-scanner.test.d.ts +2 -0
- package/dist/openapi/__tests__/route-scanner.test.d.ts.map +1 -0
- package/dist/openapi/__tests__/schema-generator.test.d.ts +2 -0
- package/dist/openapi/__tests__/schema-generator.test.d.ts.map +1 -0
- package/dist/openapi/decorators.d.ts +173 -0
- package/dist/openapi/decorators.d.ts.map +1 -0
- package/dist/openapi/document-builder.d.ts +82 -0
- package/dist/openapi/document-builder.d.ts.map +1 -0
- package/dist/openapi/index.d.ts +48 -0
- package/dist/openapi/index.d.ts.map +1 -0
- package/dist/openapi/metadata.d.ts +36 -0
- package/dist/openapi/metadata.d.ts.map +1 -0
- package/dist/openapi/route-scanner.d.ts +34 -0
- package/dist/openapi/route-scanner.d.ts.map +1 -0
- package/dist/openapi/schema-generator.d.ts +53 -0
- package/dist/openapi/schema-generator.d.ts.map +1 -0
- package/dist/openapi/swagger-module.d.ts +57 -0
- package/dist/openapi/swagger-module.d.ts.map +1 -0
- package/dist/openapi/types.d.ts +344 -0
- package/dist/openapi/types.d.ts.map +1 -0
- package/dist/orm/index.d.ts +10 -0
- package/dist/orm/index.d.ts.map +1 -0
- package/dist/router/index.d.ts +73 -0
- package/dist/router/index.d.ts.map +1 -0
- package/dist/router/linear.d.ts +54 -0
- package/dist/router/linear.d.ts.map +1 -0
- package/dist/router/regex.d.ts +49 -0
- package/dist/router/regex.d.ts.map +1 -0
- package/dist/router/tree.d.ts +112 -0
- package/dist/router/tree.d.ts.map +1 -0
- package/dist/rpc/index.d.ts +321 -0
- package/dist/rpc/index.d.ts.map +1 -0
- package/dist/schema/index.d.ts +10 -0
- package/dist/schema/index.d.ts.map +1 -0
- package/dist/security/index.d.ts +126 -0
- package/dist/security/index.d.ts.map +1 -0
- package/dist/ssg/index.d.ts +73 -0
- package/dist/ssg/index.d.ts.map +1 -0
- package/dist/storage/index.d.ts +99 -0
- package/dist/storage/index.d.ts.map +1 -0
- package/dist/telemetry/index.d.ts +376 -0
- package/dist/telemetry/index.d.ts.map +1 -0
- package/dist/template/index.d.ts +7 -0
- package/dist/template/index.d.ts.map +1 -0
- package/dist/templates/engine.d.ts +60 -0
- package/dist/templates/engine.d.ts.map +1 -0
- package/dist/templates/index.d.ts +9 -0
- package/dist/templates/index.d.ts.map +1 -0
- package/dist/templates/loader.d.ts +45 -0
- package/dist/templates/loader.d.ts.map +1 -0
- package/dist/templates/renderers/markdown.d.ts +46 -0
- package/dist/templates/renderers/markdown.d.ts.map +1 -0
- package/dist/templates/renderers/simple.d.ts +35 -0
- package/dist/templates/renderers/simple.d.ts.map +1 -0
- package/dist/templates/types.d.ts +138 -0
- package/dist/templates/types.d.ts.map +1 -0
- package/dist/testing/index.d.ts +539 -0
- package/dist/testing/index.d.ts.map +1 -0
- package/dist/types/index.d.ts +116 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/validation/index.d.ts +89 -0
- package/dist/validation/index.d.ts.map +1 -0
- package/dist/validation/schemas.d.ts +243 -0
- package/dist/validation/schemas.d.ts.map +1 -0
- package/dist/websocket/index.d.ts +252 -0
- package/dist/websocket/index.d.ts.map +1 -0
- package/package.json +3 -3
- package/src/cli/commands/add-frontend.ts +444 -0
- package/src/cli/commands/new.ts +23 -0
- package/src/cli/index.ts +1 -0
- package/src/cli/templates/frontend/react.ts +2 -1
- package/src/cli/templates/frontend/solid.ts +2 -1
- package/src/cli/templates/frontend/svelte.ts +2 -1
- package/src/cli/templates/frontend/vue.ts +2 -1
- package/src/cli/templates/project/api.ts +1 -1
- package/src/cli/templates/project/default.ts +1 -1
- package/src/cli/templates/project/fullstack.ts +14 -104
- package/src/cli/templates/project/website.ts +62 -11
- package/tsconfig.declaration.json +14 -0
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Metadata Storage
|
|
3
|
+
*
|
|
4
|
+
* Isolated metadata storage and decorators to avoid circular dependencies.
|
|
5
|
+
* This module has no dependencies on other module files.
|
|
6
|
+
*/
|
|
7
|
+
import type { Provider, Token } from "../container";
|
|
8
|
+
type Constructor = new (...args: unknown[]) => unknown;
|
|
9
|
+
export interface ModuleMetadata {
|
|
10
|
+
imports?: Constructor[];
|
|
11
|
+
providers?: Provider[];
|
|
12
|
+
controllers?: Constructor[];
|
|
13
|
+
exports?: Token[];
|
|
14
|
+
}
|
|
15
|
+
export declare function setMetadata(target: Constructor, key: string, value: unknown): void;
|
|
16
|
+
export declare function getMetadata<T>(target: Constructor, key: string): T | undefined;
|
|
17
|
+
export declare function setPrototypeMetadata(target: object, key: string, value: unknown): void;
|
|
18
|
+
export declare function getPrototypeMetadata<T>(target: object, key: string): T | undefined;
|
|
19
|
+
/**
|
|
20
|
+
* Mark a class as injectable
|
|
21
|
+
*/
|
|
22
|
+
export declare function Injectable(): ClassDecorator;
|
|
23
|
+
/**
|
|
24
|
+
* Mark a class as a controller with a base path
|
|
25
|
+
*/
|
|
26
|
+
export declare function Controller(path?: string): ClassDecorator;
|
|
27
|
+
/**
|
|
28
|
+
* Define a module with metadata
|
|
29
|
+
*/
|
|
30
|
+
export declare function Module(metadata: ModuleMetadata): ClassDecorator;
|
|
31
|
+
export type { Constructor };
|
|
32
|
+
//# sourceMappingURL=metadata.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"metadata.d.ts","sourceRoot":"","sources":["../../src/modules/metadata.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,cAAc,CAAC;AAGpD,KAAK,WAAW,GAAG,KAAK,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,OAAO,CAAC;AAIvD,MAAM,WAAW,cAAc;IAC9B,OAAO,CAAC,EAAE,WAAW,EAAE,CAAC;IACxB,SAAS,CAAC,EAAE,QAAQ,EAAE,CAAC;IACvB,WAAW,CAAC,EAAE,WAAW,EAAE,CAAC;IAC5B,OAAO,CAAC,EAAE,KAAK,EAAE,CAAC;CAClB;AAOD,wBAAgB,WAAW,CAC1B,MAAM,EAAE,WAAW,EACnB,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,OAAO,GACZ,IAAI,CAKN;AAED,wBAAgB,WAAW,CAAC,CAAC,EAC5B,MAAM,EAAE,WAAW,EACnB,GAAG,EAAE,MAAM,GACT,CAAC,GAAG,SAAS,CAEf;AAKD,wBAAgB,oBAAoB,CACnC,MAAM,EAAE,MAAM,EACd,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,OAAO,GACZ,IAAI,CAKN;AAED,wBAAgB,oBAAoB,CAAC,CAAC,EACrC,MAAM,EAAE,MAAM,EACd,GAAG,EAAE,MAAM,GACT,CAAC,GAAG,SAAS,CAEf;AAID;;GAEG;AACH,wBAAgB,UAAU,IAAI,cAAc,CAK3C;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,IAAI,SAAK,GAAG,cAAc,CAMpD;AAED;;GAEG;AACH,wBAAgB,MAAM,CAAC,QAAQ,EAAE,cAAc,GAAG,cAAc,CAK/D;AAGD,YAAY,EAAE,WAAW,EAAE,CAAC"}
|
|
@@ -0,0 +1,287 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pipes System
|
|
3
|
+
*
|
|
4
|
+
* Pipes run after guards in the request pipeline and can transform/validate
|
|
5
|
+
* data before it reaches the handler.
|
|
6
|
+
*
|
|
7
|
+
* Execution Order:
|
|
8
|
+
* Incoming Request → Guards → Pipes → Handler
|
|
9
|
+
*
|
|
10
|
+
* Pipes can:
|
|
11
|
+
* - Transform data (e.g., string to number)
|
|
12
|
+
* - Validate data (e.g., using Standard Schema)
|
|
13
|
+
* - Provide default values
|
|
14
|
+
*/
|
|
15
|
+
import type { Token } from "../container";
|
|
16
|
+
import type { Context } from "../context";
|
|
17
|
+
import type { StandardSchema } from "../types";
|
|
18
|
+
/**
|
|
19
|
+
* Parameter metadata available to pipes
|
|
20
|
+
*/
|
|
21
|
+
export interface ParameterMetadata {
|
|
22
|
+
/** Parameter index */
|
|
23
|
+
index: number;
|
|
24
|
+
/** Parameter name if available */
|
|
25
|
+
name?: string;
|
|
26
|
+
/** Decorator type (body, query, param, etc.) */
|
|
27
|
+
decorator?: string;
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Context available to pipes during transformation
|
|
31
|
+
*/
|
|
32
|
+
export interface PipeContext {
|
|
33
|
+
/** The request context */
|
|
34
|
+
context: Context;
|
|
35
|
+
/** Parameter metadata */
|
|
36
|
+
metadata?: ParameterMetadata;
|
|
37
|
+
/** Target type information */
|
|
38
|
+
type?: unknown;
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Pipe interface for data transformation
|
|
42
|
+
*
|
|
43
|
+
* @example
|
|
44
|
+
* ```typescript
|
|
45
|
+
* class ParseIntPipe implements PipeTransform<string, number> {
|
|
46
|
+
* transform(value: string, context: PipeContext): number {
|
|
47
|
+
* const parsed = parseInt(value, 10);
|
|
48
|
+
* if (isNaN(parsed)) {
|
|
49
|
+
* throw new Error('Validation failed');
|
|
50
|
+
* }
|
|
51
|
+
* return parsed;
|
|
52
|
+
* }
|
|
53
|
+
* }
|
|
54
|
+
* ```
|
|
55
|
+
*/
|
|
56
|
+
export interface PipeTransform<T = unknown, R = unknown> {
|
|
57
|
+
transform(value: T, context: PipeContext): R | Promise<R>;
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Pipe function type (for functional pipes)
|
|
61
|
+
*
|
|
62
|
+
* @example
|
|
63
|
+
* ```typescript
|
|
64
|
+
* const trimPipe: PipeFn<string, string> = (value) => value.trim();
|
|
65
|
+
* ```
|
|
66
|
+
*/
|
|
67
|
+
export type PipeFn<T = unknown, R = unknown> = (value: T, context: PipeContext) => R | Promise<R>;
|
|
68
|
+
/**
|
|
69
|
+
* Pipe type - can be:
|
|
70
|
+
* - A token for a pipe class registered in the container
|
|
71
|
+
* - A pipe class instance
|
|
72
|
+
* - A pipe function
|
|
73
|
+
*/
|
|
74
|
+
export type Pipe<T = unknown, R = unknown> = Token<PipeTransform<T, R>> | PipeTransform<T, R> | PipeFn<T, R>;
|
|
75
|
+
/**
|
|
76
|
+
* Metadata for a parameter with pipes
|
|
77
|
+
*/
|
|
78
|
+
export interface ParameterPipeMetadata {
|
|
79
|
+
/** Parameter index */
|
|
80
|
+
index: number;
|
|
81
|
+
/** Parameter decorator type */
|
|
82
|
+
decorator: "body" | "query" | "param" | "custom";
|
|
83
|
+
/** Key for query/param decorators */
|
|
84
|
+
key?: string;
|
|
85
|
+
/** Schema for validation */
|
|
86
|
+
schema?: StandardSchema;
|
|
87
|
+
/** Pipes to apply */
|
|
88
|
+
pipes: Pipe[];
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* Get pipes metadata from a method
|
|
92
|
+
*/
|
|
93
|
+
export declare function getMethodPipes(target: object, propertyKey: string | symbol): ParameterPipeMetadata[] | undefined;
|
|
94
|
+
/**
|
|
95
|
+
* Decorator to apply pipes to a parameter.
|
|
96
|
+
* Pipes are executed in the order they are provided.
|
|
97
|
+
*
|
|
98
|
+
* @param pipes - Pipes to apply
|
|
99
|
+
* @returns ParameterDecorator
|
|
100
|
+
*
|
|
101
|
+
* @example
|
|
102
|
+
* ```typescript
|
|
103
|
+
* @Get(':id')
|
|
104
|
+
* getUser(@Param('id', ParseIntPipe) id: number) {}
|
|
105
|
+
* ```
|
|
106
|
+
*/
|
|
107
|
+
export declare function UsePipes(...pipes: Pipe[]): ParameterDecorator;
|
|
108
|
+
/**
|
|
109
|
+
* Extract and optionally validate request body.
|
|
110
|
+
*
|
|
111
|
+
* @param schema - Optional Standard Schema for validation
|
|
112
|
+
* @returns ParameterDecorator
|
|
113
|
+
*
|
|
114
|
+
* @example
|
|
115
|
+
* ```typescript
|
|
116
|
+
* @Post()
|
|
117
|
+
* createUser(@Body(userSchema) body: User) {}
|
|
118
|
+
* ```
|
|
119
|
+
*/
|
|
120
|
+
export declare function Body(schema?: StandardSchema): ParameterDecorator;
|
|
121
|
+
/**
|
|
122
|
+
* Extract and optionally validate query parameter.
|
|
123
|
+
*
|
|
124
|
+
* @param key - Query parameter key (optional, if omitted returns all query params)
|
|
125
|
+
* @param schema - Optional Standard Schema for validation
|
|
126
|
+
* @returns ParameterDecorator
|
|
127
|
+
*
|
|
128
|
+
* @example
|
|
129
|
+
* ```typescript
|
|
130
|
+
* @Get()
|
|
131
|
+
* search(@Query('q') query: string) {}
|
|
132
|
+
*
|
|
133
|
+
* @Get()
|
|
134
|
+
* search(@Query('limit', limitSchema) limit: number) {}
|
|
135
|
+
* ```
|
|
136
|
+
*/
|
|
137
|
+
export declare function Query(key?: string, schema?: StandardSchema): ParameterDecorator;
|
|
138
|
+
/**
|
|
139
|
+
* Extract and transform route parameter.
|
|
140
|
+
*
|
|
141
|
+
* @param key - Route parameter key (optional, if omitted returns all params)
|
|
142
|
+
* @param pipes - Pipes to apply for transformation
|
|
143
|
+
* @returns ParameterDecorator
|
|
144
|
+
*
|
|
145
|
+
* @example
|
|
146
|
+
* ```typescript
|
|
147
|
+
* @Get(':id')
|
|
148
|
+
* getUser(@Param('id', ParseIntPipe) id: number) {}
|
|
149
|
+
* ```
|
|
150
|
+
*/
|
|
151
|
+
export declare function Param(key?: string, ...pipes: Pipe[]): ParameterDecorator;
|
|
152
|
+
/**
|
|
153
|
+
* ValidationPipe - Validates using Standard Schema
|
|
154
|
+
*
|
|
155
|
+
* @example
|
|
156
|
+
* ```typescript
|
|
157
|
+
* @Body(userSchema) body: User
|
|
158
|
+
* // or explicitly
|
|
159
|
+
* @UsePipes(new ValidationPipe(userSchema))
|
|
160
|
+
* ```
|
|
161
|
+
*/
|
|
162
|
+
export declare class ValidationPipe<T = unknown> implements PipeTransform<unknown, T> {
|
|
163
|
+
private schema;
|
|
164
|
+
constructor(schema: StandardSchema<unknown, T>);
|
|
165
|
+
transform(value: unknown, context: PipeContext): Promise<T>;
|
|
166
|
+
}
|
|
167
|
+
/**
|
|
168
|
+
* ParseIntPipe - Transforms string to integer
|
|
169
|
+
*
|
|
170
|
+
* @example
|
|
171
|
+
* ```typescript
|
|
172
|
+
* @Param('id', ParseIntPipe) id: number
|
|
173
|
+
* ```
|
|
174
|
+
*/
|
|
175
|
+
export declare class ParseIntPipe implements PipeTransform<string, number> {
|
|
176
|
+
transform(value: string, context: PipeContext): number;
|
|
177
|
+
}
|
|
178
|
+
/**
|
|
179
|
+
* ParseFloatPipe - Transforms string to float
|
|
180
|
+
*
|
|
181
|
+
* @example
|
|
182
|
+
* ```typescript
|
|
183
|
+
* @Param('price', ParseFloatPipe) price: number
|
|
184
|
+
* ```
|
|
185
|
+
*/
|
|
186
|
+
export declare class ParseFloatPipe implements PipeTransform<string, number> {
|
|
187
|
+
transform(value: string, context: PipeContext): number;
|
|
188
|
+
}
|
|
189
|
+
/**
|
|
190
|
+
* ParseBoolPipe - Transforms string to boolean
|
|
191
|
+
*
|
|
192
|
+
* @example
|
|
193
|
+
* ```typescript
|
|
194
|
+
* @Query('active', ParseBoolPipe) active: boolean
|
|
195
|
+
* ```
|
|
196
|
+
*/
|
|
197
|
+
export declare class ParseBoolPipe implements PipeTransform<string, boolean> {
|
|
198
|
+
private readonly truthyValues;
|
|
199
|
+
private readonly falsyValues;
|
|
200
|
+
transform(value: string, context: PipeContext): boolean;
|
|
201
|
+
}
|
|
202
|
+
/**
|
|
203
|
+
* DefaultValuePipe - Provides default value when input is undefined or null
|
|
204
|
+
*
|
|
205
|
+
* @example
|
|
206
|
+
* ```typescript
|
|
207
|
+
* @Query('limit', new DefaultValuePipe(10), ParseIntPipe) limit: number
|
|
208
|
+
* ```
|
|
209
|
+
*/
|
|
210
|
+
export declare class DefaultValuePipe<T> implements PipeTransform<unknown, T> {
|
|
211
|
+
private defaultValue;
|
|
212
|
+
constructor(defaultValue: T);
|
|
213
|
+
transform(value: unknown, context: PipeContext): T;
|
|
214
|
+
}
|
|
215
|
+
/**
|
|
216
|
+
* TrimPipe - Trims string whitespace
|
|
217
|
+
*
|
|
218
|
+
* @example
|
|
219
|
+
* ```typescript
|
|
220
|
+
* @Query('name', TrimPipe) name: string
|
|
221
|
+
* ```
|
|
222
|
+
*/
|
|
223
|
+
export declare class TrimPipe implements PipeTransform<string, string> {
|
|
224
|
+
transform(value: string, context: PipeContext): string;
|
|
225
|
+
}
|
|
226
|
+
/**
|
|
227
|
+
* ParseJsonPipe - Parses JSON string to object
|
|
228
|
+
*
|
|
229
|
+
* @example
|
|
230
|
+
* ```typescript
|
|
231
|
+
* @Query('data', ParseJsonPipe) data: MyObject
|
|
232
|
+
* ```
|
|
233
|
+
*/
|
|
234
|
+
export declare class ParseJsonPipe<T = unknown> implements PipeTransform<string, T> {
|
|
235
|
+
transform(value: string, context: PipeContext): T;
|
|
236
|
+
}
|
|
237
|
+
/**
|
|
238
|
+
* ParseArrayPipe - Transforms comma-separated string to array
|
|
239
|
+
*
|
|
240
|
+
* @example
|
|
241
|
+
* ```typescript
|
|
242
|
+
* @Query('tags', ParseArrayPipe) tags: string[]
|
|
243
|
+
* ```
|
|
244
|
+
*/
|
|
245
|
+
export declare class ParseArrayPipe implements PipeTransform<string, string[]> {
|
|
246
|
+
private separator;
|
|
247
|
+
constructor(separator?: string);
|
|
248
|
+
transform(value: string, context: PipeContext): string[];
|
|
249
|
+
}
|
|
250
|
+
/**
|
|
251
|
+
* Pipe executor options
|
|
252
|
+
*/
|
|
253
|
+
export interface PipeExecutorOptions {
|
|
254
|
+
/** Global pipes applied to all parameters */
|
|
255
|
+
globalPipes?: Pipe[];
|
|
256
|
+
/** Pipes from parameter decorator */
|
|
257
|
+
parameterPipes?: Pipe[];
|
|
258
|
+
/** Container for resolving pipe instances */
|
|
259
|
+
resolvePipe?: (pipe: Pipe) => PipeTransform | PipeFn | null;
|
|
260
|
+
}
|
|
261
|
+
/**
|
|
262
|
+
* Execute pipes in order and return the transformed value
|
|
263
|
+
*
|
|
264
|
+
* @param value - Initial value to transform
|
|
265
|
+
* @param context - Pipe context
|
|
266
|
+
* @param options - Pipe executor options
|
|
267
|
+
* @returns Transformed value
|
|
268
|
+
* @throws Error if any pipe fails
|
|
269
|
+
*/
|
|
270
|
+
export declare function executePipes<T = unknown>(value: unknown, context: PipeContext, options: PipeExecutorOptions): Promise<T>;
|
|
271
|
+
/**
|
|
272
|
+
* Extract parameter value from context based on decorator type
|
|
273
|
+
*/
|
|
274
|
+
export declare function extractParameterValue(context: Context, metadata: ParameterPipeMetadata): Promise<unknown>;
|
|
275
|
+
/**
|
|
276
|
+
* Create a 400 Bad Request response for pipe errors
|
|
277
|
+
*/
|
|
278
|
+
export declare function createBadRequestResponse(error: Error): Response;
|
|
279
|
+
/**
|
|
280
|
+
* Check if a value is a PipeTransform instance
|
|
281
|
+
*/
|
|
282
|
+
export declare function isPipeTransform(value: unknown): value is PipeTransform;
|
|
283
|
+
/**
|
|
284
|
+
* Check if a value is a pipe function
|
|
285
|
+
*/
|
|
286
|
+
export declare function isPipeFn(value: unknown): value is PipeFn;
|
|
287
|
+
//# sourceMappingURL=pipes.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pipes.d.ts","sourceRoot":"","sources":["../../src/modules/pipes.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Base Channel Service
|
|
3
|
+
*
|
|
4
|
+
* Abstract base class for all channel implementations
|
|
5
|
+
*/
|
|
6
|
+
import type { ChannelHealth, ChannelService, NotificationMessage } from "../types";
|
|
7
|
+
export declare abstract class BaseChannelService<T extends NotificationMessage = NotificationMessage> implements ChannelService<T> {
|
|
8
|
+
abstract readonly name: string;
|
|
9
|
+
readonly configSchema?: unknown;
|
|
10
|
+
/**
|
|
11
|
+
* Validate message structure
|
|
12
|
+
* Should throw if message is invalid
|
|
13
|
+
*/
|
|
14
|
+
abstract validate(message: unknown): asserts message is T;
|
|
15
|
+
/**
|
|
16
|
+
* Send a notification message
|
|
17
|
+
*/
|
|
18
|
+
abstract send(message: T): Promise<string | undefined>;
|
|
19
|
+
/**
|
|
20
|
+
* Get health status
|
|
21
|
+
*/
|
|
22
|
+
getHealth(): Promise<ChannelHealth>;
|
|
23
|
+
/**
|
|
24
|
+
* Validate that value matches expected type
|
|
25
|
+
*/
|
|
26
|
+
protected validateField(value: unknown, expectedType: string, fieldName: string): void;
|
|
27
|
+
/**
|
|
28
|
+
* Validate that required field exists
|
|
29
|
+
*/
|
|
30
|
+
protected validateRequired(value: unknown, fieldName: string): void;
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=base.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../../src/notification/channels/base.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EACX,aAAa,EACb,cAAc,EACd,mBAAmB,EACnB,MAAM,UAAU,CAAC;AAIlB,8BAAsB,kBAAkB,CACvC,CAAC,SAAS,mBAAmB,GAAG,mBAAmB,CAClD,YAAW,cAAc,CAAC,CAAC,CAAC;IAE7B,QAAQ,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,YAAY,CAAC,EAAE,OAAO,CAAC;IAEhC;;;OAGG;IACH,QAAQ,CAAC,QAAQ,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,CAAC;IAEzD;;OAEG;IACH,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IAEtD;;OAEG;IACG,SAAS,IAAI,OAAO,CAAC,aAAa,CAAC;IAQzC;;OAEG;IACH,SAAS,CAAC,aAAa,CACtB,KAAK,EAAE,OAAO,EACd,YAAY,EAAE,MAAM,EACpB,SAAS,EAAE,MAAM,GACf,IAAI;IASP;;OAEG;IACH,SAAS,CAAC,gBAAgB,CAAC,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI;CAKnE"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Email Channel Service
|
|
3
|
+
*
|
|
4
|
+
* Sends notifications via email through various drivers
|
|
5
|
+
* (SMTP, Sendgrid, Brevo, Resend)
|
|
6
|
+
*/
|
|
7
|
+
import type { EmailChannelConfig, EmailMessage } from "../types";
|
|
8
|
+
import { BaseChannelService } from "./base";
|
|
9
|
+
export declare class EmailChannelService extends BaseChannelService<EmailMessage> {
|
|
10
|
+
readonly name = "email";
|
|
11
|
+
private config;
|
|
12
|
+
private sentCount;
|
|
13
|
+
private failureCount;
|
|
14
|
+
constructor(config: EmailChannelConfig);
|
|
15
|
+
/**
|
|
16
|
+
* Validate email message structure
|
|
17
|
+
*/
|
|
18
|
+
validate(message: unknown): asserts message is EmailMessage;
|
|
19
|
+
/**
|
|
20
|
+
* Send email message
|
|
21
|
+
*/
|
|
22
|
+
send(message: EmailMessage): Promise<string | undefined>;
|
|
23
|
+
/**
|
|
24
|
+
* Get email channel metrics
|
|
25
|
+
*/
|
|
26
|
+
getMetrics(): {
|
|
27
|
+
sent: number;
|
|
28
|
+
failed: number;
|
|
29
|
+
total: number;
|
|
30
|
+
successRate: number;
|
|
31
|
+
};
|
|
32
|
+
/**
|
|
33
|
+
* Generate a message ID
|
|
34
|
+
*/
|
|
35
|
+
private _generateMessageId;
|
|
36
|
+
}
|
|
37
|
+
//# sourceMappingURL=email.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"email.d.ts","sourceRoot":"","sources":["../../../src/notification/channels/email.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,kBAAkB,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AACjE,OAAO,EAAE,kBAAkB,EAAE,MAAM,QAAQ,CAAC;AAI5C,qBAAa,mBAAoB,SAAQ,kBAAkB,CAAC,YAAY,CAAC;IACxE,QAAQ,CAAC,IAAI,WAAW;IACxB,OAAO,CAAC,MAAM,CAAqB;IACnC,OAAO,CAAC,SAAS,CAAK;IACtB,OAAO,CAAC,YAAY,CAAK;gBAEb,MAAM,EAAE,kBAAkB;IAKtC;;OAEG;IACH,QAAQ,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,YAAY;IA4B3D;;OAEG;IACG,IAAI,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IA0B9D;;OAEG;IACH,UAAU;;;;;;IAUV;;OAEG;IACH,OAAO,CAAC,kBAAkB;CAK1B"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Push Notification Channel Service
|
|
3
|
+
*
|
|
4
|
+
* Sends notifications via push through various drivers
|
|
5
|
+
* (Firebase, APNS, custom)
|
|
6
|
+
*/
|
|
7
|
+
import type { PushChannelConfig, PushNotificationMessage } from "../types";
|
|
8
|
+
import { BaseChannelService } from "./base";
|
|
9
|
+
export declare class PushNotificationChannelService extends BaseChannelService<PushNotificationMessage> {
|
|
10
|
+
readonly name = "push";
|
|
11
|
+
private config;
|
|
12
|
+
private sentCount;
|
|
13
|
+
private failureCount;
|
|
14
|
+
constructor(config: PushChannelConfig);
|
|
15
|
+
/**
|
|
16
|
+
* Validate push notification message structure
|
|
17
|
+
*/
|
|
18
|
+
validate(message: unknown): asserts message is PushNotificationMessage;
|
|
19
|
+
/**
|
|
20
|
+
* Send push notification message
|
|
21
|
+
*/
|
|
22
|
+
send(message: PushNotificationMessage): Promise<string | undefined>;
|
|
23
|
+
/**
|
|
24
|
+
* Get push channel metrics
|
|
25
|
+
*/
|
|
26
|
+
getMetrics(): {
|
|
27
|
+
sent: number;
|
|
28
|
+
failed: number;
|
|
29
|
+
total: number;
|
|
30
|
+
successRate: number;
|
|
31
|
+
};
|
|
32
|
+
/**
|
|
33
|
+
* Generate a message ID
|
|
34
|
+
*/
|
|
35
|
+
private _generateMessageId;
|
|
36
|
+
}
|
|
37
|
+
//# sourceMappingURL=push.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"push.d.ts","sourceRoot":"","sources":["../../../src/notification/channels/push.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,iBAAiB,EAAE,uBAAuB,EAAE,MAAM,UAAU,CAAC;AAC3E,OAAO,EAAE,kBAAkB,EAAE,MAAM,QAAQ,CAAC;AAI5C,qBAAa,8BAA+B,SAAQ,kBAAkB,CAAC,uBAAuB,CAAC;IAC9F,QAAQ,CAAC,IAAI,UAAU;IACvB,OAAO,CAAC,MAAM,CAAoB;IAClC,OAAO,CAAC,SAAS,CAAK;IACtB,OAAO,CAAC,YAAY,CAAK;gBAEb,MAAM,EAAE,iBAAiB;IAKrC;;OAEG;IACH,QAAQ,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,uBAAuB;IA0BtE;;OAEG;IACG,IAAI,CAAC,OAAO,EAAE,uBAAuB,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IA2BzE;;OAEG;IACH,UAAU;;;;;;IAUV;;OAEG;IACH,OAAO,CAAC,kBAAkB;CAK1B"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SMS Channel Service
|
|
3
|
+
*
|
|
4
|
+
* Sends notifications via SMS through various drivers
|
|
5
|
+
* (Twilio, AWS SNS, custom)
|
|
6
|
+
*/
|
|
7
|
+
import type { SMSChannelConfig, SMSMessage } from "../types";
|
|
8
|
+
import { BaseChannelService } from "./base";
|
|
9
|
+
export declare class SMSChannelService extends BaseChannelService<SMSMessage> {
|
|
10
|
+
readonly name = "sms";
|
|
11
|
+
private config;
|
|
12
|
+
private sentCount;
|
|
13
|
+
private failureCount;
|
|
14
|
+
constructor(config: SMSChannelConfig);
|
|
15
|
+
/**
|
|
16
|
+
* Validate SMS message structure
|
|
17
|
+
*/
|
|
18
|
+
validate(message: unknown): asserts message is SMSMessage;
|
|
19
|
+
/**
|
|
20
|
+
* Send SMS message
|
|
21
|
+
*/
|
|
22
|
+
send(message: SMSMessage): Promise<string | undefined>;
|
|
23
|
+
/**
|
|
24
|
+
* Get SMS channel metrics
|
|
25
|
+
*/
|
|
26
|
+
getMetrics(): {
|
|
27
|
+
sent: number;
|
|
28
|
+
failed: number;
|
|
29
|
+
total: number;
|
|
30
|
+
successRate: number;
|
|
31
|
+
};
|
|
32
|
+
/**
|
|
33
|
+
* Generate a message ID
|
|
34
|
+
*/
|
|
35
|
+
private _generateMessageId;
|
|
36
|
+
}
|
|
37
|
+
//# sourceMappingURL=sms.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sms.d.ts","sourceRoot":"","sources":["../../../src/notification/channels/sms.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAC7D,OAAO,EAAE,kBAAkB,EAAE,MAAM,QAAQ,CAAC;AAI5C,qBAAa,iBAAkB,SAAQ,kBAAkB,CAAC,UAAU,CAAC;IACpE,QAAQ,CAAC,IAAI,SAAS;IACtB,OAAO,CAAC,MAAM,CAAmB;IACjC,OAAO,CAAC,SAAS,CAAK;IACtB,OAAO,CAAC,YAAY,CAAK;gBAEb,MAAM,EAAE,gBAAgB;IAKpC;;OAEG;IACH,QAAQ,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,UAAU;IA4BzD;;OAEG;IACG,IAAI,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IA0B5D;;OAEG;IACH,UAAU;;;;;;IAUV;;OAEG;IACH,OAAO,CAAC,kBAAkB;CAK1B"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* WhatsApp Channel Service
|
|
3
|
+
*
|
|
4
|
+
* Sends notifications via WhatsApp through various drivers
|
|
5
|
+
* (Twilio, custom)
|
|
6
|
+
*/
|
|
7
|
+
import type { WhatsAppChannelConfig, WhatsAppMessage } from "../types";
|
|
8
|
+
import { BaseChannelService } from "./base";
|
|
9
|
+
export declare class WhatsAppChannelService extends BaseChannelService<WhatsAppMessage> {
|
|
10
|
+
readonly name = "whatsapp";
|
|
11
|
+
private config;
|
|
12
|
+
private sentCount;
|
|
13
|
+
private failureCount;
|
|
14
|
+
constructor(config: WhatsAppChannelConfig);
|
|
15
|
+
/**
|
|
16
|
+
* Validate WhatsApp message structure
|
|
17
|
+
*/
|
|
18
|
+
validate(message: unknown): asserts message is WhatsAppMessage;
|
|
19
|
+
/**
|
|
20
|
+
* Send WhatsApp message
|
|
21
|
+
*/
|
|
22
|
+
send(message: WhatsAppMessage): Promise<string | undefined>;
|
|
23
|
+
/**
|
|
24
|
+
* Get WhatsApp channel metrics
|
|
25
|
+
*/
|
|
26
|
+
getMetrics(): {
|
|
27
|
+
sent: number;
|
|
28
|
+
failed: number;
|
|
29
|
+
total: number;
|
|
30
|
+
successRate: number;
|
|
31
|
+
};
|
|
32
|
+
/**
|
|
33
|
+
* Generate a message ID
|
|
34
|
+
*/
|
|
35
|
+
private _generateMessageId;
|
|
36
|
+
}
|
|
37
|
+
//# sourceMappingURL=whatsapp.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"whatsapp.d.ts","sourceRoot":"","sources":["../../../src/notification/channels/whatsapp.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,qBAAqB,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AACvE,OAAO,EAAE,kBAAkB,EAAE,MAAM,QAAQ,CAAC;AAI5C,qBAAa,sBAAuB,SAAQ,kBAAkB,CAAC,eAAe,CAAC;IAC9E,QAAQ,CAAC,IAAI,cAAc;IAC3B,OAAO,CAAC,MAAM,CAAwB;IACtC,OAAO,CAAC,SAAS,CAAK;IACtB,OAAO,CAAC,YAAY,CAAK;gBAEb,MAAM,EAAE,qBAAqB;IAKzC;;OAEG;IACH,QAAQ,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,eAAe;IAsB9D;;OAEG;IACG,IAAI,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IA+BjE;;OAEG;IACH,UAAU;;;;;;IAUV;;OAEG;IACH,OAAO,CAAC,kBAAkB;CAK1B"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Notification Module
|
|
3
|
+
*
|
|
4
|
+
* Multi-channel notification system with support for email, SMS, WhatsApp,
|
|
5
|
+
* push notifications, and custom channels. Uses registry pattern for
|
|
6
|
+
* dynamic channel registration.
|
|
7
|
+
*/
|
|
8
|
+
export type { NotificationChannel, NotificationMessage, EmailRecipient, EmailRecipients, EmailAttachment, EmailMessage, SMSMessage, WhatsAppMessage, PushNotificationMessage, BuiltInNotification, Notifiable, ChannelHealth, ChannelService, BaseChannelConfig, EmailChannelConfig, SMSChannelConfig, WhatsAppChannelConfig, PushChannelConfig, ChannelConfig, NotificationServiceConfig, ChannelMetrics, NotificationEvent, NotificationEventType, NotificationValidationResult, StandardSchema, } from "./types";
|
|
9
|
+
export { NotificationService, createNotificationService } from "./service";
|
|
10
|
+
export { BaseChannelService } from "./channels/base";
|
|
11
|
+
export { EmailChannelService } from "./channels/email";
|
|
12
|
+
export { SMSChannelService } from "./channels/sms";
|
|
13
|
+
export { WhatsAppChannelService } from "./channels/whatsapp";
|
|
14
|
+
export { PushNotificationChannelService } from "./channels/push";
|
|
15
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/notification/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,YAAY,EACX,mBAAmB,EACnB,mBAAmB,EACnB,cAAc,EACd,eAAe,EACf,eAAe,EACf,YAAY,EACZ,UAAU,EACV,eAAe,EACf,uBAAuB,EACvB,mBAAmB,EACnB,UAAU,EACV,aAAa,EACb,cAAc,EACd,iBAAiB,EACjB,kBAAkB,EAClB,gBAAgB,EAChB,qBAAqB,EACrB,iBAAiB,EACjB,aAAa,EACb,yBAAyB,EACzB,cAAc,EACd,iBAAiB,EACjB,qBAAqB,EACrB,4BAA4B,EAC5B,cAAc,GACd,MAAM,SAAS,CAAC;AAGjB,OAAO,EAAE,mBAAmB,EAAE,yBAAyB,EAAE,MAAM,WAAW,CAAC;AAG3E,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAGrD,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,EAAE,8BAA8B,EAAE,MAAM,iBAAiB,CAAC"}
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Notification Service
|
|
3
|
+
*
|
|
4
|
+
* Core notification service with registry-based channel management.
|
|
5
|
+
* Supports dynamic channel registration and multi-channel notification sending.
|
|
6
|
+
*/
|
|
7
|
+
import type { ChannelHealth, ChannelMetrics, ChannelService, Notifiable, NotificationChannel, NotificationMessage, NotificationServiceConfig } from "./types";
|
|
8
|
+
export declare class NotificationService {
|
|
9
|
+
private channels;
|
|
10
|
+
private config;
|
|
11
|
+
private metrics;
|
|
12
|
+
constructor(config?: NotificationServiceConfig);
|
|
13
|
+
/**
|
|
14
|
+
* Register a channel service
|
|
15
|
+
* @param service Channel service to register
|
|
16
|
+
* @throws Error if channel is already registered
|
|
17
|
+
*/
|
|
18
|
+
registerChannel<T extends NotificationMessage>(service: ChannelService<T>): void;
|
|
19
|
+
/**
|
|
20
|
+
* Unregister a channel service
|
|
21
|
+
* @param channelName Name of the channel to unregister
|
|
22
|
+
*/
|
|
23
|
+
unregisterChannel(channelName: NotificationChannel): void;
|
|
24
|
+
/**
|
|
25
|
+
* Get a registered channel service
|
|
26
|
+
* @param channelName Name of the channel
|
|
27
|
+
* @returns Channel service or null if not found
|
|
28
|
+
*/
|
|
29
|
+
getChannel(channelName: NotificationChannel): ChannelService | null;
|
|
30
|
+
/**
|
|
31
|
+
* Get all registered channel names
|
|
32
|
+
*/
|
|
33
|
+
getChannels(): NotificationChannel[];
|
|
34
|
+
/**
|
|
35
|
+
* Check if a channel is registered
|
|
36
|
+
*/
|
|
37
|
+
hasChannel(channelName: NotificationChannel): boolean;
|
|
38
|
+
/**
|
|
39
|
+
* Send a notification via specified channel
|
|
40
|
+
* @param message Notification message
|
|
41
|
+
* @returns Message ID or undefined
|
|
42
|
+
* @throws Error if channel not found or message invalid
|
|
43
|
+
*/
|
|
44
|
+
send(message: NotificationMessage): Promise<string | undefined>;
|
|
45
|
+
/**
|
|
46
|
+
* Send multiple notifications (potentially different channels)
|
|
47
|
+
* @param messages Array of notification messages
|
|
48
|
+
* @returns Array of message IDs
|
|
49
|
+
*/
|
|
50
|
+
sendBatch(messages: NotificationMessage[]): Promise<(string | undefined)[]>;
|
|
51
|
+
/**
|
|
52
|
+
* Send a notification from a Notifiable
|
|
53
|
+
* @param notifiable Notifiable instance
|
|
54
|
+
* @param channel Optional specific channel (otherwise uses buildAll or default)
|
|
55
|
+
* @returns Message ID(s)
|
|
56
|
+
*/
|
|
57
|
+
sendNotifiable(notifiable: Notifiable, channel?: NotificationChannel): Promise<string | undefined>;
|
|
58
|
+
/**
|
|
59
|
+
* Queue a notification for async sending (requires job queue integration)
|
|
60
|
+
* @param message Notification message
|
|
61
|
+
* @returns Job ID or undefined
|
|
62
|
+
*/
|
|
63
|
+
queue(message: NotificationMessage): Promise<string | undefined>;
|
|
64
|
+
/**
|
|
65
|
+
* Get health status for a channel
|
|
66
|
+
* @param channelName Name of the channel
|
|
67
|
+
*/
|
|
68
|
+
getChannelHealth(channelName: NotificationChannel): Promise<ChannelHealth | null>;
|
|
69
|
+
/**
|
|
70
|
+
* Get health status for all channels
|
|
71
|
+
*/
|
|
72
|
+
getHealthStatus(): Promise<Record<NotificationChannel, ChannelHealth>>;
|
|
73
|
+
/**
|
|
74
|
+
* Get metrics for a specific channel
|
|
75
|
+
* @param channelName Name of the channel
|
|
76
|
+
*/
|
|
77
|
+
getChannelMetrics(channelName: NotificationChannel): ChannelMetrics | null;
|
|
78
|
+
/**
|
|
79
|
+
* Get metrics for all channels
|
|
80
|
+
*/
|
|
81
|
+
getAllMetrics(): Record<NotificationChannel, ChannelMetrics>;
|
|
82
|
+
/**
|
|
83
|
+
* Resolve TemplateRef objects in message fields to rendered strings
|
|
84
|
+
*/
|
|
85
|
+
private _resolveTemplates;
|
|
86
|
+
/**
|
|
87
|
+
* Assert that no TemplateRef fields exist in the message
|
|
88
|
+
* Throws if a TemplateRef is found but no templateEngine is configured
|
|
89
|
+
*/
|
|
90
|
+
private _assertNoTemplateRefs;
|
|
91
|
+
/**
|
|
92
|
+
* Update metrics for a channel
|
|
93
|
+
*/
|
|
94
|
+
private _updateMetrics;
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* Factory function to create notification service
|
|
98
|
+
*/
|
|
99
|
+
export declare function createNotificationService(config?: NotificationServiceConfig): NotificationService;
|
|
100
|
+
//# sourceMappingURL=service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../../src/notification/service.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EACX,aAAa,EACb,cAAc,EACd,cAAc,EACd,UAAU,EACV,mBAAmB,EACnB,mBAAmB,EACnB,yBAAyB,EAEzB,MAAM,SAAS,CAAC;AAKjB,qBAAa,mBAAmB;IAC/B,OAAO,CAAC,QAAQ,CAAuD;IACvE,OAAO,CAAC,MAAM,CAA4B;IAC1C,OAAO,CAAC,OAAO,CAAuD;gBAE1D,MAAM,GAAE,yBAA8B;IAIlD;;;;OAIG;IACH,eAAe,CAAC,CAAC,SAAS,mBAAmB,EAC5C,OAAO,EAAE,cAAc,CAAC,CAAC,CAAC,GACxB,IAAI;IAmBP;;;OAGG;IACH,iBAAiB,CAAC,WAAW,EAAE,mBAAmB,GAAG,IAAI;IAKzD;;;;OAIG;IACH,UAAU,CAAC,WAAW,EAAE,mBAAmB,GAAG,cAAc,GAAG,IAAI;IAInE;;OAEG;IACH,WAAW,IAAI,mBAAmB,EAAE;IAIpC;;OAEG;IACH,UAAU,CAAC,WAAW,EAAE,mBAAmB,GAAG,OAAO;IAIrD;;;;;OAKG;IACG,IAAI,CAAC,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IAkCrE;;;;OAIG;IACG,SAAS,CACd,QAAQ,EAAE,mBAAmB,EAAE,GAC7B,OAAO,CAAC,CAAC,MAAM,GAAG,SAAS,CAAC,EAAE,CAAC;IAelC;;;;;OAKG;IACG,cAAc,CACnB,UAAU,EAAE,UAAU,EACtB,OAAO,CAAC,EAAE,mBAAmB,GAC3B,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IAuB9B;;;;OAIG;IACG,KAAK,CAAC,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IAMtE;;;OAGG;IACG,gBAAgB,CACrB,WAAW,EAAE,mBAAmB,GAC9B,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC;IAahC;;OAEG;IACG,eAAe,IAAI,OAAO,CAAC,MAAM,CAAC,mBAAmB,EAAE,aAAa,CAAC,CAAC;IAa5E;;;OAGG;IACH,iBAAiB,CAAC,WAAW,EAAE,mBAAmB,GAAG,cAAc,GAAG,IAAI;IAI1E;;OAEG;IACH,aAAa,IAAI,MAAM,CAAC,mBAAmB,EAAE,cAAc,CAAC;IAU5D;;OAEG;YACW,iBAAiB;IAsD/B;;;OAGG;IACH,OAAO,CAAC,qBAAqB;IAU7B;;OAEG;IACH,OAAO,CAAC,cAAc;CAqBtB;AAED;;GAEG;AACH,wBAAgB,yBAAyB,CACxC,MAAM,CAAC,EAAE,yBAAyB,GAChC,mBAAmB,CAErB"}
|