@buenojs/bueno 0.8.10 → 0.8.11
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/cache/index.d.ts +187 -0
- package/dist/cache/index.d.ts.map +1 -0
- package/dist/cache/index.js +595 -0
- package/dist/cache/index.js.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 +9 -9
- package/dist/cli/bin.js.map +1 -0
- 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/add-frontend.js +376 -0
- package/dist/cli/commands/add-frontend.js.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/build.js +347 -0
- package/dist/cli/commands/build.js.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/dev.js +205 -0
- package/dist/cli/commands/dev.js.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/generate.js +491 -0
- package/dist/cli/commands/generate.js.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/help.js +51 -0
- package/dist/cli/commands/help.js.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/index.js +77 -0
- package/dist/cli/commands/index.js.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/migration.js +295 -0
- package/dist/cli/commands/migration.js.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/new.js +641 -0
- package/dist/cli/commands/new.js.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/commands/start.js +171 -0
- package/dist/cli/commands/start.js.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/args.js +224 -0
- package/dist/cli/core/args.js.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/console.js +268 -0
- package/dist/cli/core/console.js.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/index.js +10 -0
- package/dist/cli/core/index.js.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/prompt.js +338 -0
- package/dist/cli/core/prompt.js.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/core/spinner.js +208 -0
- package/dist/cli/core/spinner.js.map +1 -0
- package/dist/cli/index.d.ts +47 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +127 -0
- package/dist/cli/index.js.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/index.js +49 -0
- package/dist/cli/templates/database/index.js.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/mysql.js +12 -0
- package/dist/cli/templates/database/mysql.js.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/none.js +14 -0
- package/dist/cli/templates/database/none.js.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/postgresql.js +12 -0
- package/dist/cli/templates/database/postgresql.js.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/database/sqlite.js +12 -0
- package/dist/cli/templates/database/sqlite.js.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/deploy.js +278 -0
- package/dist/cli/templates/deploy.js.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/docker.js +298 -0
- package/dist/cli/templates/docker.js.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/index.js +40 -0
- package/dist/cli/templates/frontend/index.js.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/none.js +15 -0
- package/dist/cli/templates/frontend/none.js.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/react.js +139 -0
- package/dist/cli/templates/frontend/react.js.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/solid.js +133 -0
- package/dist/cli/templates/frontend/solid.js.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/svelte.js +130 -0
- package/dist/cli/templates/frontend/svelte.js.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/frontend/vue.js +129 -0
- package/dist/cli/templates/frontend/vue.js.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/index.js +308 -0
- package/dist/cli/templates/generators/index.js.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/generators/types.js +21 -0
- package/dist/cli/templates/generators/types.js.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/index.js +18 -0
- package/dist/cli/templates/index.js.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/api.js +79 -0
- package/dist/cli/templates/project/api.js.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/default.js +136 -0
- package/dist/cli/templates/project/default.js.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/fullstack.js +19 -0
- package/dist/cli/templates/project/fullstack.js.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/index.js +60 -0
- package/dist/cli/templates/project/index.js.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/minimal.js +43 -0
- package/dist/cli/templates/project/minimal.js.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/types.js +7 -0
- package/dist/cli/templates/project/types.js.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/templates/project/website.js +312 -0
- package/dist/cli/templates/project/website.js.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/fs.js +350 -0
- package/dist/cli/utils/fs.js.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/index.js +9 -0
- package/dist/cli/utils/index.js.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/strings.js +190 -0
- package/dist/cli/utils/strings.js.map +1 -0
- package/dist/cli/utils/version.d.ts +15 -0
- package/dist/cli/utils/version.d.ts.map +1 -0
- package/dist/cli/utils/version.js +38 -0
- package/dist/cli/utils/version.js.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-validation.js +77 -0
- package/dist/config/env-validation.js.map +1 -0
- package/dist/config/env.d.ts +167 -0
- package/dist/config/env.d.ts.map +1 -0
- package/dist/config/env.js +392 -0
- package/dist/config/env.js.map +1 -0
- package/dist/config/index.d.ts +168 -0
- package/dist/config/index.d.ts.map +1 -0
- package/dist/config/index.js +329 -0
- package/dist/config/index.js.map +1 -0
- package/dist/config/loader.d.ts +81 -0
- package/dist/config/loader.d.ts.map +1 -0
- package/dist/config/loader.js +242 -0
- package/dist/config/loader.js.map +1 -0
- package/dist/config/merge.d.ts +66 -0
- package/dist/config/merge.d.ts.map +1 -0
- package/dist/config/merge.js +226 -0
- package/dist/config/merge.js.map +1 -0
- package/dist/config/types.d.ts +322 -0
- package/dist/config/types.d.ts.map +1 -0
- package/dist/config/types.js +443 -0
- package/dist/config/types.js.map +1 -0
- package/dist/config/validation.d.ts +100 -0
- package/dist/config/validation.d.ts.map +1 -0
- package/dist/config/validation.js +548 -0
- package/dist/config/validation.js.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/forward-ref.js +105 -0
- package/dist/container/forward-ref.js.map +1 -0
- package/dist/container/index.d.ts +95 -0
- package/dist/container/index.d.ts.map +1 -0
- package/dist/container/index.js.map +1 -0
- package/dist/context/index.d.ts +143 -0
- package/dist/context/index.d.ts.map +1 -0
- package/dist/context/index.js.map +1 -0
- package/dist/database/index.d.ts +219 -0
- package/dist/database/index.d.ts.map +1 -0
- package/dist/database/index.js.map +1 -0
- package/dist/database/migrations/index.d.ts +151 -0
- package/dist/database/migrations/index.d.ts.map +1 -0
- package/dist/database/migrations/index.js +258 -0
- package/dist/database/migrations/index.js.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/builder.js +355 -0
- package/dist/database/orm/builder.js.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/index.js +131 -0
- package/dist/database/orm/casts/index.js.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/casts/types.js +5 -0
- package/dist/database/orm/casts/types.js.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/compiler.js +218 -0
- package/dist/database/orm/compiler.js.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/hooks/index.js +81 -0
- package/dist/database/orm/hooks/index.js.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/index.js +23 -0
- package/dist/database/orm/index.js.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-registry.js +49 -0
- package/dist/database/orm/model-registry.js.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/model.js +599 -0
- package/dist/database/orm/model.js.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/base.js +84 -0
- package/dist/database/orm/relationships/base.js.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-many.js +136 -0
- package/dist/database/orm/relationships/belongs-to-many.js.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/belongs-to.js +38 -0
- package/dist/database/orm/relationships/belongs-to.js.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-many.js +35 -0
- package/dist/database/orm/relationships/has-many.js.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/has-one.js +32 -0
- package/dist/database/orm/relationships/has-one.js.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/relationships/index.js +9 -0
- package/dist/database/orm/relationships/index.js.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/orm/scopes/index.js +47 -0
- package/dist/database/orm/scopes/index.js.map +1 -0
- package/dist/database/schema/index.d.ts +155 -0
- package/dist/database/schema/index.d.ts.map +1 -0
- package/dist/database/schema/index.js +401 -0
- package/dist/database/schema/index.js.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/api-routes.js +548 -0
- package/dist/frontend/api-routes.js.map +1 -0
- package/dist/frontend/bundler.d.ts +99 -0
- package/dist/frontend/bundler.d.ts.map +1 -0
- package/dist/frontend/bundler.js +555 -0
- package/dist/frontend/bundler.js.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-client.js +414 -0
- package/dist/frontend/console-client.js.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/console-stream.js +535 -0
- package/dist/frontend/console-stream.js.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/dev-server.js +735 -0
- package/dist/frontend/dev-server.js.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/file-router.js +531 -0
- package/dist/frontend/file-router.js.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/index.js +87 -0
- package/dist/frontend/frameworks/index.js.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/react.js +66 -0
- package/dist/frontend/frameworks/react.js.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/solid.js +84 -0
- package/dist/frontend/frameworks/solid.js.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/svelte.js +90 -0
- package/dist/frontend/frameworks/svelte.js.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/frameworks/vue.js +72 -0
- package/dist/frontend/frameworks/vue.js.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-client.js +654 -0
- package/dist/frontend/hmr-client.js.map +1 -0
- package/dist/frontend/hmr.d.ts +185 -0
- package/dist/frontend/hmr.d.ts.map +1 -0
- package/dist/frontend/hmr.js +619 -0
- package/dist/frontend/hmr.js.map +1 -0
- package/dist/frontend/index.d.ts +34 -0
- package/dist/frontend/index.d.ts.map +1 -0
- package/dist/frontend/index.js.map +1 -0
- package/dist/frontend/islands.d.ts +135 -0
- package/dist/frontend/islands.d.ts.map +1 -0
- package/dist/frontend/islands.js +455 -0
- package/dist/frontend/islands.js.map +1 -0
- package/dist/frontend/isr.d.ts +143 -0
- package/dist/frontend/isr.d.ts.map +1 -0
- package/dist/frontend/isr.js +440 -0
- package/dist/frontend/isr.js.map +1 -0
- package/dist/frontend/layout.d.ts +140 -0
- package/dist/frontend/layout.d.ts.map +1 -0
- package/dist/frontend/layout.js +392 -0
- package/dist/frontend/layout.js.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/react.js +373 -0
- package/dist/frontend/ssr/react.js.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/solid.js +440 -0
- package/dist/frontend/ssr/solid.js.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/svelte.js +439 -0
- package/dist/frontend/ssr/svelte.js.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/vue.js +385 -0
- package/dist/frontend/ssr/vue.js.map +1 -0
- package/dist/frontend/ssr.d.ts +147 -0
- package/dist/frontend/ssr.d.ts.map +1 -0
- package/dist/frontend/ssr.js +609 -0
- package/dist/frontend/ssr.js.map +1 -0
- package/dist/frontend/types.d.ts +1902 -0
- package/dist/frontend/types.d.ts.map +1 -0
- package/dist/frontend/types.js +8 -0
- package/dist/frontend/types.js.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/built-in-engine.js +443 -0
- package/dist/graphql/built-in-engine.js.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/context-builder.js +91 -0
- package/dist/graphql/context-builder.js.map +1 -0
- package/dist/graphql/decorators.d.ts +162 -0
- package/dist/graphql/decorators.d.ts.map +1 -0
- package/dist/graphql/decorators.js +291 -0
- package/dist/graphql/decorators.js.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/execution-pipeline.js +127 -0
- package/dist/graphql/execution-pipeline.js.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/graphql-module.js +442 -0
- package/dist/graphql/graphql-module.js.map +1 -0
- package/dist/graphql/index.d.ts +48 -0
- package/dist/graphql/index.d.ts.map +1 -0
- package/dist/graphql/index.js.map +1 -0
- package/dist/graphql/metadata.d.ts +37 -0
- package/dist/graphql/metadata.d.ts.map +1 -0
- package/dist/graphql/metadata.js +130 -0
- package/dist/graphql/metadata.js.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/schema-builder.js +251 -0
- package/dist/graphql/schema-builder.js.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/subscription-handler.js +201 -0
- package/dist/graphql/subscription-handler.js.map +1 -0
- package/dist/graphql/types.d.ts +252 -0
- package/dist/graphql/types.d.ts.map +1 -0
- package/dist/graphql/types.js +28 -0
- package/dist/graphql/types.js.map +1 -0
- package/dist/health/index.d.ts +176 -0
- package/dist/health/index.d.ts.map +1 -0
- package/dist/health/index.js.map +1 -0
- package/dist/i18n/engine.d.ts +105 -0
- package/dist/i18n/engine.d.ts.map +1 -0
- package/dist/i18n/engine.js +248 -0
- package/dist/i18n/engine.js.map +1 -0
- package/dist/i18n/index.d.ts +13 -0
- package/dist/i18n/index.d.ts.map +1 -0
- package/dist/i18n/index.js.map +1 -0
- package/dist/i18n/loader.d.ts +79 -0
- package/dist/i18n/loader.d.ts.map +1 -0
- package/dist/i18n/loader.js +192 -0
- package/dist/i18n/loader.js.map +1 -0
- package/dist/i18n/middleware.d.ts +96 -0
- package/dist/i18n/middleware.d.ts.map +1 -0
- package/dist/i18n/middleware.js +126 -0
- package/dist/i18n/middleware.js.map +1 -0
- package/dist/i18n/negotiator.d.ts +84 -0
- package/dist/i18n/negotiator.d.ts.map +1 -0
- package/dist/i18n/negotiator.js +139 -0
- package/dist/i18n/negotiator.js.map +1 -0
- package/dist/i18n/types.d.ts +129 -0
- package/dist/i18n/types.d.ts.map +1 -0
- package/dist/i18n/types.js +8 -0
- package/dist/i18n/types.js.map +1 -0
- package/dist/index.d.ts +48 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js.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/memory.js +246 -0
- package/dist/jobs/drivers/memory.js.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/drivers/redis.js +355 -0
- package/dist/jobs/drivers/redis.js.map +1 -0
- package/dist/jobs/index.d.ts +12 -0
- package/dist/jobs/index.d.ts.map +1 -0
- package/dist/jobs/index.js.map +1 -0
- package/dist/jobs/queue.d.ts +93 -0
- package/dist/jobs/queue.d.ts.map +1 -0
- package/dist/jobs/queue.js +233 -0
- package/dist/jobs/queue.js.map +1 -0
- package/dist/jobs/types.d.ts +193 -0
- package/dist/jobs/types.d.ts.map +1 -0
- package/dist/jobs/types.js +8 -0
- package/dist/jobs/types.js.map +1 -0
- package/dist/jobs/worker.d.ts +91 -0
- package/dist/jobs/worker.d.ts.map +1 -0
- package/dist/jobs/worker.js +300 -0
- package/dist/jobs/worker.js.map +1 -0
- package/dist/lock/index.d.ts +141 -0
- package/dist/lock/index.d.ts.map +1 -0
- package/dist/lock/index.js.map +1 -0
- package/dist/logger/index.d.ts +156 -0
- package/dist/logger/index.d.ts.map +1 -0
- package/dist/logger/index.js.map +1 -0
- package/dist/logger/transports/index.d.ts +371 -0
- package/dist/logger/transports/index.d.ts.map +1 -0
- package/dist/logger/transports/index.js +740 -0
- package/dist/logger/transports/index.js.map +1 -0
- package/dist/metrics/index.d.ts +163 -0
- package/dist/metrics/index.d.ts.map +1 -0
- package/dist/metrics/index.js.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/built-in.js +220 -0
- package/dist/middleware/built-in.js.map +1 -0
- package/dist/middleware/index.d.ts +40 -0
- package/dist/middleware/index.d.ts.map +1 -0
- package/dist/middleware/index.js.map +1 -0
- package/dist/migrations/index.d.ts +48 -0
- package/dist/migrations/index.d.ts.map +1 -0
- package/dist/migrations/index.js +3 -0
- package/dist/migrations/index.js.map +1 -0
- package/dist/modules/filters.d.ts +150 -0
- package/dist/modules/filters.d.ts.map +1 -0
- package/dist/modules/filters.js +338 -0
- package/dist/modules/filters.js.map +1 -0
- package/dist/modules/guards.d.ts +188 -0
- package/dist/modules/guards.d.ts.map +1 -0
- package/dist/modules/guards.js +278 -0
- package/dist/modules/guards.js.map +1 -0
- package/dist/modules/index.d.ts +266 -0
- package/dist/modules/index.d.ts.map +1 -0
- package/dist/modules/index.js.map +1 -0
- package/dist/modules/interceptors.d.ts +242 -0
- package/dist/modules/interceptors.d.ts.map +1 -0
- package/dist/modules/interceptors.js +407 -0
- package/dist/modules/interceptors.js.map +1 -0
- package/dist/modules/lazy.d.ts +187 -0
- package/dist/modules/lazy.d.ts.map +1 -0
- package/dist/modules/lazy.js +305 -0
- package/dist/modules/lazy.js.map +1 -0
- package/dist/modules/lifecycle.d.ts +221 -0
- package/dist/modules/lifecycle.d.ts.map +1 -0
- package/dist/modules/lifecycle.js +314 -0
- package/dist/modules/lifecycle.js.map +1 -0
- package/dist/modules/metadata.d.ts +32 -0
- package/dist/modules/metadata.d.ts.map +1 -0
- package/dist/modules/metadata.js +59 -0
- package/dist/modules/metadata.js.map +1 -0
- package/dist/modules/pipes.d.ts +287 -0
- package/dist/modules/pipes.d.ts.map +1 -0
- package/dist/modules/pipes.js +443 -0
- package/dist/modules/pipes.js.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/base.js +37 -0
- package/dist/notification/channels/base.js.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/email.js +85 -0
- package/dist/notification/channels/email.js.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/push.js +84 -0
- package/dist/notification/channels/push.js.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/sms.js +83 -0
- package/dist/notification/channels/sms.js.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/channels/whatsapp.js +81 -0
- package/dist/notification/channels/whatsapp.js.map +1 -0
- package/dist/notification/index.d.ts +15 -0
- package/dist/notification/index.d.ts.map +1 -0
- package/dist/notification/index.js.map +1 -0
- package/dist/notification/service.d.ts +100 -0
- package/dist/notification/service.d.ts.map +1 -0
- package/dist/notification/service.js +279 -0
- package/dist/notification/service.js.map +1 -0
- package/dist/notification/types.d.ts +253 -0
- package/dist/notification/types.d.ts.map +1 -0
- package/dist/notification/types.js +14 -0
- package/dist/notification/types.js.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/__tests__/observability.test.js +404 -0
- package/dist/observability/__tests__/observability.test.js.map +1 -0
- package/dist/observability/breadcrumbs.d.ts +48 -0
- package/dist/observability/breadcrumbs.d.ts.map +1 -0
- package/dist/observability/breadcrumbs.js +97 -0
- package/dist/observability/breadcrumbs.js.map +1 -0
- package/dist/observability/index.d.ts +95 -0
- package/dist/observability/index.d.ts.map +1 -0
- package/dist/observability/index.js.map +1 -0
- package/dist/observability/interceptor.d.ts +19 -0
- package/dist/observability/interceptor.d.ts.map +1 -0
- package/dist/observability/interceptor.js +67 -0
- package/dist/observability/interceptor.js.map +1 -0
- package/dist/observability/service.d.ts +101 -0
- package/dist/observability/service.d.ts.map +1 -0
- package/dist/observability/service.js +249 -0
- package/dist/observability/service.js.map +1 -0
- package/dist/observability/trace.d.ts +21 -0
- package/dist/observability/trace.d.ts.map +1 -0
- package/dist/observability/trace.js +35 -0
- package/dist/observability/trace.js.map +1 -0
- package/dist/observability/types.d.ts +172 -0
- package/dist/observability/types.d.ts.map +1 -0
- package/dist/observability/types.js +8 -0
- package/dist/observability/types.js.map +1 -0
- package/dist/openapi/decorators.d.ts +173 -0
- package/dist/openapi/decorators.d.ts.map +1 -0
- package/dist/openapi/decorators.js +276 -0
- package/dist/openapi/decorators.js.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/document-builder.js +228 -0
- package/dist/openapi/document-builder.js.map +1 -0
- package/dist/openapi/index.d.ts +48 -0
- package/dist/openapi/index.d.ts.map +1 -0
- package/dist/openapi/index.js.map +1 -0
- package/dist/openapi/metadata.d.ts +36 -0
- package/dist/openapi/metadata.d.ts.map +1 -0
- package/dist/openapi/metadata.js +78 -0
- package/dist/openapi/metadata.js.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/route-scanner.js +174 -0
- package/dist/openapi/route-scanner.js.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/schema-generator.js +236 -0
- package/dist/openapi/schema-generator.js.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/swagger-module.js +143 -0
- package/dist/openapi/swagger-module.js.map +1 -0
- package/dist/openapi/types.d.ts +344 -0
- package/dist/openapi/types.d.ts.map +1 -0
- package/dist/openapi/types.js +7 -0
- package/dist/openapi/types.js.map +1 -0
- package/dist/orm/index.d.ts +10 -0
- package/dist/orm/index.d.ts.map +1 -0
- package/dist/orm/index.js.map +1 -0
- package/dist/router/index.d.ts +73 -0
- package/dist/router/index.d.ts.map +1 -0
- package/dist/router/index.js.map +1 -0
- package/dist/router/linear.d.ts +54 -0
- package/dist/router/linear.d.ts.map +1 -0
- package/dist/router/linear.js +261 -0
- package/dist/router/linear.js.map +1 -0
- package/dist/router/regex.d.ts +49 -0
- package/dist/router/regex.d.ts.map +1 -0
- package/dist/router/regex.js +201 -0
- package/dist/router/regex.js.map +1 -0
- package/dist/router/tree.d.ts +112 -0
- package/dist/router/tree.d.ts.map +1 -0
- package/dist/router/tree.js +360 -0
- package/dist/router/tree.js.map +1 -0
- package/dist/rpc/index.d.ts +321 -0
- package/dist/rpc/index.d.ts.map +1 -0
- package/dist/rpc/index.js.map +1 -0
- package/dist/schema/index.d.ts +10 -0
- package/dist/schema/index.d.ts.map +1 -0
- package/dist/schema/index.js.map +1 -0
- package/dist/security/index.d.ts +126 -0
- package/dist/security/index.d.ts.map +1 -0
- package/dist/security/index.js +309 -0
- package/dist/security/index.js.map +1 -0
- package/dist/ssg/index.d.ts +73 -0
- package/dist/ssg/index.d.ts.map +1 -0
- package/dist/ssg/index.js +464 -0
- package/dist/ssg/index.js.map +1 -0
- package/dist/storage/index.d.ts +99 -0
- package/dist/storage/index.d.ts.map +1 -0
- package/dist/storage/index.js +338 -0
- package/dist/storage/index.js.map +1 -0
- package/dist/telemetry/index.d.ts +376 -0
- package/dist/telemetry/index.d.ts.map +1 -0
- package/dist/telemetry/index.js.map +1 -0
- package/dist/template/index.d.ts +7 -0
- package/dist/template/index.d.ts.map +1 -0
- package/dist/template/index.js.map +1 -0
- package/dist/templates/engine.d.ts +60 -0
- package/dist/templates/engine.d.ts.map +1 -0
- package/dist/templates/engine.js +177 -0
- package/dist/templates/engine.js.map +1 -0
- package/dist/templates/index.d.ts +9 -0
- package/dist/templates/index.d.ts.map +1 -0
- package/dist/templates/index.js.map +1 -0
- package/dist/templates/loader.d.ts +45 -0
- package/dist/templates/loader.d.ts.map +1 -0
- package/dist/templates/loader.js +274 -0
- package/dist/templates/loader.js.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/markdown.js +181 -0
- package/dist/templates/renderers/markdown.js.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/renderers/simple.js +245 -0
- package/dist/templates/renderers/simple.js.map +1 -0
- package/dist/templates/types.d.ts +138 -0
- package/dist/templates/types.d.ts.map +1 -0
- package/dist/templates/types.js +8 -0
- package/dist/templates/types.js.map +1 -0
- package/dist/testing/index.d.ts +539 -0
- package/dist/testing/index.d.ts.map +1 -0
- package/dist/testing/index.js.map +1 -0
- package/dist/types/index.d.ts +116 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js.map +1 -0
- package/dist/validation/index.d.ts +89 -0
- package/dist/validation/index.d.ts.map +1 -0
- package/dist/validation/index.js +276 -0
- package/dist/validation/index.js.map +1 -0
- package/dist/validation/schemas.d.ts +283 -0
- package/dist/validation/schemas.d.ts.map +1 -0
- package/dist/validation/schemas.js +407 -0
- package/dist/validation/schemas.js.map +1 -0
- package/dist/websocket/index.d.ts +252 -0
- package/dist/websocket/index.d.ts.map +1 -0
- package/dist/websocket/index.js +749 -0
- package/dist/websocket/index.js.map +1 -0
- package/package.json +3 -3
- package/src/database/migrations/index.ts +8 -0
- package/src/migrations/index.ts +40 -1
- package/src/types/index.ts +1 -1
- package/tsconfig.json +2 -6
|
@@ -0,0 +1,172 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Observability Types
|
|
3
|
+
*
|
|
4
|
+
* Core interfaces for the error tracking and observability integration layer.
|
|
5
|
+
* Implement ErrorReporter to integrate with Sentry, Bugsnag, Datadog, etc.
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* A single breadcrumb entry recording an event that occurred before an error
|
|
9
|
+
*/
|
|
10
|
+
export interface BreadcrumbEntry {
|
|
11
|
+
/** When this breadcrumb was recorded */
|
|
12
|
+
timestamp: Date;
|
|
13
|
+
/** Category of event */
|
|
14
|
+
type: "http" | "log" | "navigation" | "custom";
|
|
15
|
+
/** Severity level */
|
|
16
|
+
level: "debug" | "info" | "warning" | "error";
|
|
17
|
+
/** Human-readable description of the event */
|
|
18
|
+
message: string;
|
|
19
|
+
/** Optional structured data for context */
|
|
20
|
+
data?: Record<string, unknown>;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Request metadata captured at error time
|
|
24
|
+
*/
|
|
25
|
+
export interface ErrorRequestContext {
|
|
26
|
+
/** HTTP method */
|
|
27
|
+
method: string;
|
|
28
|
+
/** Request path */
|
|
29
|
+
path: string;
|
|
30
|
+
/** Relevant request headers (sanitized) */
|
|
31
|
+
headers: Record<string, string>;
|
|
32
|
+
/** Client IP address */
|
|
33
|
+
ip: string;
|
|
34
|
+
/** User-Agent header if present */
|
|
35
|
+
userAgent?: string;
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* User identity snapshot (sourced from context.get('user'))
|
|
39
|
+
*/
|
|
40
|
+
export interface ErrorUserContext {
|
|
41
|
+
id?: string | number;
|
|
42
|
+
email?: string;
|
|
43
|
+
[key: string]: unknown;
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* A captured error event with full context, ready for the reporter
|
|
47
|
+
*/
|
|
48
|
+
export interface ErrorEvent {
|
|
49
|
+
/** Unique ID for this error event (for deduplication) */
|
|
50
|
+
id: string;
|
|
51
|
+
/** When the error occurred */
|
|
52
|
+
timestamp: Date;
|
|
53
|
+
/** The original Error object */
|
|
54
|
+
error: Error;
|
|
55
|
+
/** Severity level */
|
|
56
|
+
level: "fatal" | "error" | "warning";
|
|
57
|
+
/** HTTP request context (undefined for non-HTTP errors) */
|
|
58
|
+
request?: ErrorRequestContext;
|
|
59
|
+
/** W3C trace ID (from traceparent header or generated) */
|
|
60
|
+
traceId?: string;
|
|
61
|
+
/** W3C span ID */
|
|
62
|
+
spanId?: string;
|
|
63
|
+
/** Authenticated user at time of error */
|
|
64
|
+
user?: ErrorUserContext;
|
|
65
|
+
/** Recent events leading up to this error */
|
|
66
|
+
breadcrumbs: BreadcrumbEntry[];
|
|
67
|
+
/** Custom tags for categorization */
|
|
68
|
+
tags?: Record<string, string>;
|
|
69
|
+
/** Any additional context */
|
|
70
|
+
extra?: Record<string, unknown>;
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* A captured message event (non-error) for the reporter
|
|
74
|
+
*/
|
|
75
|
+
export interface MessageEvent {
|
|
76
|
+
/** Unique ID */
|
|
77
|
+
id: string;
|
|
78
|
+
/** When the message was captured */
|
|
79
|
+
timestamp: Date;
|
|
80
|
+
/** The message text */
|
|
81
|
+
message: string;
|
|
82
|
+
/** Severity */
|
|
83
|
+
level: "debug" | "info" | "warning" | "error";
|
|
84
|
+
/** Optional extra context */
|
|
85
|
+
extra?: Record<string, unknown>;
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* Implement this interface to report errors to your platform (Sentry, Bugsnag, etc.).
|
|
89
|
+
*
|
|
90
|
+
* @example
|
|
91
|
+
* ```typescript
|
|
92
|
+
* class SentryReporter implements ErrorReporter {
|
|
93
|
+
* captureError(event: ErrorEvent) {
|
|
94
|
+
* Sentry.withScope(scope => {
|
|
95
|
+
* if (event.user) scope.setUser(event.user);
|
|
96
|
+
* if (event.traceId) scope.setTag('traceId', event.traceId);
|
|
97
|
+
* Sentry.captureException(event.error);
|
|
98
|
+
* });
|
|
99
|
+
* }
|
|
100
|
+
* async flush() { await Sentry.flush(2000); }
|
|
101
|
+
* }
|
|
102
|
+
* ```
|
|
103
|
+
*/
|
|
104
|
+
export interface ErrorReporter {
|
|
105
|
+
/**
|
|
106
|
+
* Report an error event. Called asynchronously (non-blocking).
|
|
107
|
+
* Throw errors only if truly unrecoverable — they are caught and logged.
|
|
108
|
+
*/
|
|
109
|
+
captureError(event: ErrorEvent): void | Promise<void>;
|
|
110
|
+
/**
|
|
111
|
+
* Report a non-error message. Optional.
|
|
112
|
+
*/
|
|
113
|
+
captureMessage?(event: MessageEvent): void | Promise<void>;
|
|
114
|
+
/**
|
|
115
|
+
* Flush pending events. Called on application shutdown.
|
|
116
|
+
* Use this to ensure all buffered events are sent before process exit.
|
|
117
|
+
*/
|
|
118
|
+
flush?(): Promise<void>;
|
|
119
|
+
}
|
|
120
|
+
/**
|
|
121
|
+
* Options for ObservabilityModule.forRoot()
|
|
122
|
+
*/
|
|
123
|
+
export interface ObservabilityOptions {
|
|
124
|
+
/**
|
|
125
|
+
* The reporter that receives all captured error events.
|
|
126
|
+
* Required — without a reporter, no events are sent anywhere.
|
|
127
|
+
*/
|
|
128
|
+
reporter: ErrorReporter;
|
|
129
|
+
/**
|
|
130
|
+
* Maximum number of breadcrumbs to retain in the ring buffer.
|
|
131
|
+
* Older breadcrumbs are evicted when the buffer is full.
|
|
132
|
+
* @default 20
|
|
133
|
+
*/
|
|
134
|
+
breadcrumbsSize?: number;
|
|
135
|
+
/**
|
|
136
|
+
* Error classes to suppress — events with these types are not reported.
|
|
137
|
+
* Useful for suppressing expected errors like 404s or 401s.
|
|
138
|
+
*
|
|
139
|
+
* @example ignoreErrors: [NotFoundError, UnauthorizedError]
|
|
140
|
+
*/
|
|
141
|
+
ignoreErrors?: Array<new (...args: unknown[]) => Error>;
|
|
142
|
+
/**
|
|
143
|
+
* HTTP status codes to suppress.
|
|
144
|
+
* Errors whose statusCode property matches are not reported.
|
|
145
|
+
* @example ignoreStatusCodes: [404, 401]
|
|
146
|
+
*/
|
|
147
|
+
ignoreStatusCodes?: number[];
|
|
148
|
+
/**
|
|
149
|
+
* Custom tags attached to every error event.
|
|
150
|
+
* @example tags: { environment: 'production', version: '1.2.3' }
|
|
151
|
+
*/
|
|
152
|
+
tags?: Record<string, string>;
|
|
153
|
+
/**
|
|
154
|
+
* Also capture unhandled promise rejections and uncaught exceptions
|
|
155
|
+
* at the process level (outside the HTTP request pipeline).
|
|
156
|
+
* @default false
|
|
157
|
+
*/
|
|
158
|
+
captureUnhandled?: boolean;
|
|
159
|
+
}
|
|
160
|
+
/**
|
|
161
|
+
* Configuration values that can be set via environment variables.
|
|
162
|
+
* These are applied as defaults; ObservabilityOptions take precedence.
|
|
163
|
+
*/
|
|
164
|
+
export interface ObservabilityConfig {
|
|
165
|
+
/** Enable/disable the observability system */
|
|
166
|
+
enabled?: boolean;
|
|
167
|
+
/** Maximum breadcrumb ring buffer size */
|
|
168
|
+
breadcrumbsSize?: number;
|
|
169
|
+
/** HTTP status codes to ignore (comma-separated in env) */
|
|
170
|
+
ignoreStatusCodes?: number[];
|
|
171
|
+
}
|
|
172
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/observability/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/observability/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG"}
|
|
@@ -0,0 +1,173 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* OpenAPI Decorators
|
|
3
|
+
*
|
|
4
|
+
* Decorators for documenting controllers, methods, parameters, and DTOs with OpenAPI metadata.
|
|
5
|
+
*/
|
|
6
|
+
import type { ApiBodyOptions, ApiHeaderOptions, ApiKeySecurityOptions, ApiOperationOptions, ApiParamOptions, ApiPropertyOptions, ApiQueryOptions, ApiResponseOptions, SecuritySchemeOptions } from './types';
|
|
7
|
+
/**
|
|
8
|
+
* Mark one or more tags that apply to all operations in this controller
|
|
9
|
+
*
|
|
10
|
+
* @example
|
|
11
|
+
* ```typescript
|
|
12
|
+
* @Controller('/users')
|
|
13
|
+
* @ApiTags('users', 'accounts')
|
|
14
|
+
* class UserController { ... }
|
|
15
|
+
* ```
|
|
16
|
+
*/
|
|
17
|
+
export declare function ApiTags(...tags: string[]): ClassDecorator;
|
|
18
|
+
/**
|
|
19
|
+
* Mark this controller with Bearer token authentication
|
|
20
|
+
*
|
|
21
|
+
* @example
|
|
22
|
+
* ```typescript
|
|
23
|
+
* @Controller('/api')
|
|
24
|
+
* @ApiBearerAuth()
|
|
25
|
+
* class ApiController { ... }
|
|
26
|
+
* ```
|
|
27
|
+
*/
|
|
28
|
+
export declare function ApiBearerAuth(name?: string, options?: SecuritySchemeOptions): ClassDecorator | MethodDecorator;
|
|
29
|
+
/**
|
|
30
|
+
* Mark this controller with Basic authentication
|
|
31
|
+
*
|
|
32
|
+
* @example
|
|
33
|
+
* ```typescript
|
|
34
|
+
* @Controller('/api')
|
|
35
|
+
* @ApiBasicAuth()
|
|
36
|
+
* class ApiController { ... }
|
|
37
|
+
* ```
|
|
38
|
+
*/
|
|
39
|
+
export declare function ApiBasicAuth(name?: string): ClassDecorator | MethodDecorator;
|
|
40
|
+
/**
|
|
41
|
+
* Mark this controller with API Key authentication
|
|
42
|
+
*
|
|
43
|
+
* @example
|
|
44
|
+
* ```typescript
|
|
45
|
+
* @Controller('/api')
|
|
46
|
+
* @ApiApiKey({ in: 'header', name: 'X-API-Key' })
|
|
47
|
+
* class ApiController { ... }
|
|
48
|
+
* ```
|
|
49
|
+
*/
|
|
50
|
+
export declare function ApiApiKey(options: ApiKeySecurityOptions, name?: string): ClassDecorator | MethodDecorator;
|
|
51
|
+
/**
|
|
52
|
+
* Exclude this entire controller from OpenAPI documentation
|
|
53
|
+
*
|
|
54
|
+
* @example
|
|
55
|
+
* ```typescript
|
|
56
|
+
* @Controller('/internal')
|
|
57
|
+
* @ApiExcludeController()
|
|
58
|
+
* class InternalController { ... }
|
|
59
|
+
* ```
|
|
60
|
+
*/
|
|
61
|
+
export declare function ApiExcludeController(): ClassDecorator;
|
|
62
|
+
/**
|
|
63
|
+
* Document the operation (HTTP method) with summary, description, and other metadata
|
|
64
|
+
*
|
|
65
|
+
* @example
|
|
66
|
+
* ```typescript
|
|
67
|
+
* @Get('/:id')
|
|
68
|
+
* @ApiOperation({ summary: 'Get user by ID', description: 'Retrieve a single user' })
|
|
69
|
+
* getUser(@Param('id') id: string) { ... }
|
|
70
|
+
* ```
|
|
71
|
+
*/
|
|
72
|
+
export declare function ApiOperation(options: ApiOperationOptions): MethodDecorator;
|
|
73
|
+
/**
|
|
74
|
+
* Document an HTTP response from this operation
|
|
75
|
+
* Can be used multiple times for different status codes
|
|
76
|
+
*
|
|
77
|
+
* @example
|
|
78
|
+
* ```typescript
|
|
79
|
+
* @ApiResponse({ status: 200, description: 'Success', type: UserDto })
|
|
80
|
+
* @ApiResponse({ status: 404, description: 'Not found' })
|
|
81
|
+
* getUser() { ... }
|
|
82
|
+
* ```
|
|
83
|
+
*/
|
|
84
|
+
export declare function ApiResponse(options: ApiResponseOptions): MethodDecorator;
|
|
85
|
+
/**
|
|
86
|
+
* Document a path parameter
|
|
87
|
+
* Can be used multiple times for different parameters
|
|
88
|
+
*
|
|
89
|
+
* @example
|
|
90
|
+
* ```typescript
|
|
91
|
+
* @Get('/:userId/posts/:postId')
|
|
92
|
+
* @ApiParam({ name: 'userId', type: 'string', description: 'User ID' })
|
|
93
|
+
* @ApiParam({ name: 'postId', type: 'string', description: 'Post ID' })
|
|
94
|
+
* getPost(@Param('userId') userId: string, @Param('postId') postId: string) { ... }
|
|
95
|
+
* ```
|
|
96
|
+
*/
|
|
97
|
+
export declare function ApiParam(options: ApiParamOptions): MethodDecorator;
|
|
98
|
+
/**
|
|
99
|
+
* Document a query parameter
|
|
100
|
+
* Can be used multiple times for different parameters
|
|
101
|
+
*
|
|
102
|
+
* @example
|
|
103
|
+
* ```typescript
|
|
104
|
+
* @Get()
|
|
105
|
+
* @ApiQuery({ name: 'page', type: 'number', description: 'Page number', required: false })
|
|
106
|
+
* @ApiQuery({ name: 'limit', type: 'number', description: 'Items per page', required: false })
|
|
107
|
+
* getUsers(@Query('page') page?: number, @Query('limit') limit?: number) { ... }
|
|
108
|
+
* ```
|
|
109
|
+
*/
|
|
110
|
+
export declare function ApiQuery(options: ApiQueryOptions): MethodDecorator;
|
|
111
|
+
/**
|
|
112
|
+
* Document an HTTP header
|
|
113
|
+
* Can be used multiple times for different headers
|
|
114
|
+
*
|
|
115
|
+
* @example
|
|
116
|
+
* ```typescript
|
|
117
|
+
* @Post()
|
|
118
|
+
* @ApiHeader({ name: 'X-Request-ID', description: 'Request ID', required: true })
|
|
119
|
+
* create() { ... }
|
|
120
|
+
* ```
|
|
121
|
+
*/
|
|
122
|
+
export declare function ApiHeader(options: ApiHeaderOptions): MethodDecorator;
|
|
123
|
+
/**
|
|
124
|
+
* Document the request body
|
|
125
|
+
*
|
|
126
|
+
* @example
|
|
127
|
+
* ```typescript
|
|
128
|
+
* @Post()
|
|
129
|
+
* @ApiBody({ type: CreateUserDto, description: 'User data to create' })
|
|
130
|
+
* create(@Body() dto: CreateUserDto) { ... }
|
|
131
|
+
* ```
|
|
132
|
+
*/
|
|
133
|
+
export declare function ApiBody(options: ApiBodyOptions): MethodDecorator;
|
|
134
|
+
/**
|
|
135
|
+
* Exclude this endpoint from OpenAPI documentation
|
|
136
|
+
*
|
|
137
|
+
* @example
|
|
138
|
+
* ```typescript
|
|
139
|
+
* @Get()
|
|
140
|
+
* @ApiExcludeEndpoint()
|
|
141
|
+
* internalOnly() { ... }
|
|
142
|
+
* ```
|
|
143
|
+
*/
|
|
144
|
+
export declare function ApiExcludeEndpoint(): MethodDecorator;
|
|
145
|
+
/**
|
|
146
|
+
* Document a DTO property with type, description, validation rules, etc.
|
|
147
|
+
*
|
|
148
|
+
* @example
|
|
149
|
+
* ```typescript
|
|
150
|
+
* class CreateUserDto {
|
|
151
|
+
* @ApiProperty({ description: 'Email address', example: 'user@example.com' })
|
|
152
|
+
* email: string;
|
|
153
|
+
*
|
|
154
|
+
* @ApiProperty({ minLength: 2, maxLength: 50, description: 'Full name' })
|
|
155
|
+
* name: string;
|
|
156
|
+
* }
|
|
157
|
+
* ```
|
|
158
|
+
*/
|
|
159
|
+
export declare function ApiProperty(options?: ApiPropertyOptions): PropertyDecorator;
|
|
160
|
+
/**
|
|
161
|
+
* Document an optional DTO property
|
|
162
|
+
* Equivalent to ApiProperty with required: false
|
|
163
|
+
*
|
|
164
|
+
* @example
|
|
165
|
+
* ```typescript
|
|
166
|
+
* class UserFilterDto {
|
|
167
|
+
* @ApiPropertyOptional({ description: 'Filter by name', example: 'John' })
|
|
168
|
+
* name?: string;
|
|
169
|
+
* }
|
|
170
|
+
* ```
|
|
171
|
+
*/
|
|
172
|
+
export declare function ApiPropertyOptional(options?: Omit<ApiPropertyOptions, 'required'>): PropertyDecorator;
|
|
173
|
+
//# sourceMappingURL=decorators.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"decorators.d.ts","sourceRoot":"","sources":["../../src/openapi/decorators.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EACX,cAAc,EACd,gBAAgB,EAChB,qBAAqB,EACrB,mBAAmB,EACnB,eAAe,EACf,kBAAkB,EAClB,eAAe,EACf,kBAAkB,EAGlB,qBAAqB,EACrB,MAAM,SAAS,CAAC;AAYjB;;;;;;;;;GASG;AACH,wBAAgB,OAAO,CAAC,GAAG,IAAI,EAAE,MAAM,EAAE,GAAG,cAAc,CAOzD;AAED;;;;;;;;;GASG;AACH,wBAAgB,aAAa,CAAC,IAAI,SAAW,EAAE,OAAO,CAAC,EAAE,qBAAqB,GAAG,cAAc,GAAG,eAAe,CAiBhH;AAED;;;;;;;;;GASG;AACH,wBAAgB,YAAY,CAAC,IAAI,SAAU,GAAG,cAAc,GAAG,eAAe,CAiB7E;AAED;;;;;;;;;GASG;AACH,wBAAgB,SAAS,CAAC,OAAO,EAAE,qBAAqB,EAAE,IAAI,SAAY,GAAG,cAAc,GAAG,eAAe,CAmB5G;AAED;;;;;;;;;GASG;AACH,wBAAgB,oBAAoB,IAAI,cAAc,CAKrD;AAID;;;;;;;;;GASG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,mBAAmB,GAAG,eAAe,CAI1E;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,WAAW,CAAC,OAAO,EAAE,kBAAkB,GAAG,eAAe,CAOxE;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,QAAQ,CAAC,OAAO,EAAE,eAAe,GAAG,eAAe,CAOlE;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,QAAQ,CAAC,OAAO,EAAE,eAAe,GAAG,eAAe,CAOlE;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,SAAS,CAAC,OAAO,EAAE,gBAAgB,GAAG,eAAe,CAOpE;AAED;;;;;;;;;GASG;AACH,wBAAgB,OAAO,CAAC,OAAO,EAAE,cAAc,GAAG,eAAe,CAIhE;AAED;;;;;;;;;GASG;AACH,wBAAgB,kBAAkB,IAAI,eAAe,CAIpD;AAID;;;;;;;;;;;;;GAaG;AACH,wBAAgB,WAAW,CAAC,OAAO,CAAC,EAAE,kBAAkB,GAAG,iBAAiB,CAK3E;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,CAAC,EAAE,IAAI,CAAC,kBAAkB,EAAE,UAAU,CAAC,GAAG,iBAAiB,CAKrG"}
|
|
@@ -0,0 +1,276 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* OpenAPI Decorators
|
|
3
|
+
*
|
|
4
|
+
* Decorators for documenting controllers, methods, parameters, and DTOs with OpenAPI metadata.
|
|
5
|
+
*/
|
|
6
|
+
import { getApiMetadata, getApiMethodMetadata, setApiMetadata, setApiMethodMetadata, setApiPropertyMetadata, } from './metadata';
|
|
7
|
+
// ============= Class-Level Decorators =============
|
|
8
|
+
/**
|
|
9
|
+
* Mark one or more tags that apply to all operations in this controller
|
|
10
|
+
*
|
|
11
|
+
* @example
|
|
12
|
+
* ```typescript
|
|
13
|
+
* @Controller('/users')
|
|
14
|
+
* @ApiTags('users', 'accounts')
|
|
15
|
+
* class UserController { ... }
|
|
16
|
+
* ```
|
|
17
|
+
*/
|
|
18
|
+
export function ApiTags(...tags) {
|
|
19
|
+
return (target) => {
|
|
20
|
+
const existingTags = getApiMetadata(target, 'api:tags') ?? [];
|
|
21
|
+
const combined = [...new Set([...existingTags, ...tags])];
|
|
22
|
+
setApiMetadata(target, 'api:tags', combined);
|
|
23
|
+
return target;
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Mark this controller with Bearer token authentication
|
|
28
|
+
*
|
|
29
|
+
* @example
|
|
30
|
+
* ```typescript
|
|
31
|
+
* @Controller('/api')
|
|
32
|
+
* @ApiBearerAuth()
|
|
33
|
+
* class ApiController { ... }
|
|
34
|
+
* ```
|
|
35
|
+
*/
|
|
36
|
+
export function ApiBearerAuth(name = 'bearer', options) {
|
|
37
|
+
return function (target, propertyKey) {
|
|
38
|
+
const security = [{ [name]: [] }];
|
|
39
|
+
const targetObj = propertyKey
|
|
40
|
+
? target // Method decorator
|
|
41
|
+
: target; // Class decorator
|
|
42
|
+
const store = propertyKey ? getApiMethodMetadata : getApiMetadata;
|
|
43
|
+
const setSt = propertyKey ? setApiMethodMetadata : setApiMetadata;
|
|
44
|
+
const existingSecurity = store(targetObj, 'api:security') ?? [];
|
|
45
|
+
setSt(targetObj, 'api:security', [...existingSecurity, ...security]);
|
|
46
|
+
return propertyKey ? descriptor : target;
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Mark this controller with Basic authentication
|
|
51
|
+
*
|
|
52
|
+
* @example
|
|
53
|
+
* ```typescript
|
|
54
|
+
* @Controller('/api')
|
|
55
|
+
* @ApiBasicAuth()
|
|
56
|
+
* class ApiController { ... }
|
|
57
|
+
* ```
|
|
58
|
+
*/
|
|
59
|
+
export function ApiBasicAuth(name = 'basic') {
|
|
60
|
+
return function (target, propertyKey) {
|
|
61
|
+
const security = [{ [name]: [] }];
|
|
62
|
+
const targetObj = propertyKey
|
|
63
|
+
? target // Method decorator
|
|
64
|
+
: target; // Class decorator
|
|
65
|
+
const store = propertyKey ? getApiMethodMetadata : getApiMetadata;
|
|
66
|
+
const setSt = propertyKey ? setApiMethodMetadata : setApiMetadata;
|
|
67
|
+
const existingSecurity = store(targetObj, 'api:security') ?? [];
|
|
68
|
+
setSt(targetObj, 'api:security', [...existingSecurity, ...security]);
|
|
69
|
+
return propertyKey ? descriptor : target;
|
|
70
|
+
};
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Mark this controller with API Key authentication
|
|
74
|
+
*
|
|
75
|
+
* @example
|
|
76
|
+
* ```typescript
|
|
77
|
+
* @Controller('/api')
|
|
78
|
+
* @ApiApiKey({ in: 'header', name: 'X-API-Key' })
|
|
79
|
+
* class ApiController { ... }
|
|
80
|
+
* ```
|
|
81
|
+
*/
|
|
82
|
+
export function ApiApiKey(options, name = 'api_key') {
|
|
83
|
+
return function (target, propertyKey) {
|
|
84
|
+
const security = [{ [name]: [] }];
|
|
85
|
+
const targetObj = propertyKey
|
|
86
|
+
? target // Method decorator
|
|
87
|
+
: target; // Class decorator
|
|
88
|
+
const store = propertyKey ? getApiMethodMetadata : getApiMetadata;
|
|
89
|
+
const setSt = propertyKey ? setApiMethodMetadata : setApiMetadata;
|
|
90
|
+
const existingSecurity = store(targetObj, 'api:security') ?? [];
|
|
91
|
+
// Store security scheme metadata for document builder
|
|
92
|
+
setSt(targetObj, `api:security:scheme:${name}`, options);
|
|
93
|
+
setSt(targetObj, 'api:security', [...existingSecurity, ...security]);
|
|
94
|
+
return propertyKey ? descriptor : target;
|
|
95
|
+
};
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* Exclude this entire controller from OpenAPI documentation
|
|
99
|
+
*
|
|
100
|
+
* @example
|
|
101
|
+
* ```typescript
|
|
102
|
+
* @Controller('/internal')
|
|
103
|
+
* @ApiExcludeController()
|
|
104
|
+
* class InternalController { ... }
|
|
105
|
+
* ```
|
|
106
|
+
*/
|
|
107
|
+
export function ApiExcludeController() {
|
|
108
|
+
return (target) => {
|
|
109
|
+
setApiMetadata(target, 'api:exclude', true);
|
|
110
|
+
return target;
|
|
111
|
+
};
|
|
112
|
+
}
|
|
113
|
+
// ============= Method-Level Decorators =============
|
|
114
|
+
/**
|
|
115
|
+
* Document the operation (HTTP method) with summary, description, and other metadata
|
|
116
|
+
*
|
|
117
|
+
* @example
|
|
118
|
+
* ```typescript
|
|
119
|
+
* @Get('/:id')
|
|
120
|
+
* @ApiOperation({ summary: 'Get user by ID', description: 'Retrieve a single user' })
|
|
121
|
+
* getUser(@Param('id') id: string) { ... }
|
|
122
|
+
* ```
|
|
123
|
+
*/
|
|
124
|
+
export function ApiOperation(options) {
|
|
125
|
+
return (target, propertyKey) => {
|
|
126
|
+
setApiMethodMetadata(target, `api:operation:${String(propertyKey)}`, options);
|
|
127
|
+
};
|
|
128
|
+
}
|
|
129
|
+
/**
|
|
130
|
+
* Document an HTTP response from this operation
|
|
131
|
+
* Can be used multiple times for different status codes
|
|
132
|
+
*
|
|
133
|
+
* @example
|
|
134
|
+
* ```typescript
|
|
135
|
+
* @ApiResponse({ status: 200, description: 'Success', type: UserDto })
|
|
136
|
+
* @ApiResponse({ status: 404, description: 'Not found' })
|
|
137
|
+
* getUser() { ... }
|
|
138
|
+
* ```
|
|
139
|
+
*/
|
|
140
|
+
export function ApiResponse(options) {
|
|
141
|
+
return (target, propertyKey) => {
|
|
142
|
+
const key = `api:responses:${String(propertyKey)}`;
|
|
143
|
+
const existing = getApiMethodMetadata(target, key) ?? [];
|
|
144
|
+
existing.push(options);
|
|
145
|
+
setApiMethodMetadata(target, key, existing);
|
|
146
|
+
};
|
|
147
|
+
}
|
|
148
|
+
/**
|
|
149
|
+
* Document a path parameter
|
|
150
|
+
* Can be used multiple times for different parameters
|
|
151
|
+
*
|
|
152
|
+
* @example
|
|
153
|
+
* ```typescript
|
|
154
|
+
* @Get('/:userId/posts/:postId')
|
|
155
|
+
* @ApiParam({ name: 'userId', type: 'string', description: 'User ID' })
|
|
156
|
+
* @ApiParam({ name: 'postId', type: 'string', description: 'Post ID' })
|
|
157
|
+
* getPost(@Param('userId') userId: string, @Param('postId') postId: string) { ... }
|
|
158
|
+
* ```
|
|
159
|
+
*/
|
|
160
|
+
export function ApiParam(options) {
|
|
161
|
+
return (target, propertyKey) => {
|
|
162
|
+
const key = `api:params:${String(propertyKey)}`;
|
|
163
|
+
const existing = getApiMethodMetadata(target, key) ?? [];
|
|
164
|
+
existing.push(options);
|
|
165
|
+
setApiMethodMetadata(target, key, existing);
|
|
166
|
+
};
|
|
167
|
+
}
|
|
168
|
+
/**
|
|
169
|
+
* Document a query parameter
|
|
170
|
+
* Can be used multiple times for different parameters
|
|
171
|
+
*
|
|
172
|
+
* @example
|
|
173
|
+
* ```typescript
|
|
174
|
+
* @Get()
|
|
175
|
+
* @ApiQuery({ name: 'page', type: 'number', description: 'Page number', required: false })
|
|
176
|
+
* @ApiQuery({ name: 'limit', type: 'number', description: 'Items per page', required: false })
|
|
177
|
+
* getUsers(@Query('page') page?: number, @Query('limit') limit?: number) { ... }
|
|
178
|
+
* ```
|
|
179
|
+
*/
|
|
180
|
+
export function ApiQuery(options) {
|
|
181
|
+
return (target, propertyKey) => {
|
|
182
|
+
const key = `api:query:${String(propertyKey)}`;
|
|
183
|
+
const existing = getApiMethodMetadata(target, key) ?? [];
|
|
184
|
+
existing.push(options);
|
|
185
|
+
setApiMethodMetadata(target, key, existing);
|
|
186
|
+
};
|
|
187
|
+
}
|
|
188
|
+
/**
|
|
189
|
+
* Document an HTTP header
|
|
190
|
+
* Can be used multiple times for different headers
|
|
191
|
+
*
|
|
192
|
+
* @example
|
|
193
|
+
* ```typescript
|
|
194
|
+
* @Post()
|
|
195
|
+
* @ApiHeader({ name: 'X-Request-ID', description: 'Request ID', required: true })
|
|
196
|
+
* create() { ... }
|
|
197
|
+
* ```
|
|
198
|
+
*/
|
|
199
|
+
export function ApiHeader(options) {
|
|
200
|
+
return (target, propertyKey) => {
|
|
201
|
+
const key = `api:headers:${String(propertyKey)}`;
|
|
202
|
+
const existing = getApiMethodMetadata(target, key) ?? [];
|
|
203
|
+
existing.push(options);
|
|
204
|
+
setApiMethodMetadata(target, key, existing);
|
|
205
|
+
};
|
|
206
|
+
}
|
|
207
|
+
/**
|
|
208
|
+
* Document the request body
|
|
209
|
+
*
|
|
210
|
+
* @example
|
|
211
|
+
* ```typescript
|
|
212
|
+
* @Post()
|
|
213
|
+
* @ApiBody({ type: CreateUserDto, description: 'User data to create' })
|
|
214
|
+
* create(@Body() dto: CreateUserDto) { ... }
|
|
215
|
+
* ```
|
|
216
|
+
*/
|
|
217
|
+
export function ApiBody(options) {
|
|
218
|
+
return (target, propertyKey) => {
|
|
219
|
+
setApiMethodMetadata(target, `api:body:${String(propertyKey)}`, options);
|
|
220
|
+
};
|
|
221
|
+
}
|
|
222
|
+
/**
|
|
223
|
+
* Exclude this endpoint from OpenAPI documentation
|
|
224
|
+
*
|
|
225
|
+
* @example
|
|
226
|
+
* ```typescript
|
|
227
|
+
* @Get()
|
|
228
|
+
* @ApiExcludeEndpoint()
|
|
229
|
+
* internalOnly() { ... }
|
|
230
|
+
* ```
|
|
231
|
+
*/
|
|
232
|
+
export function ApiExcludeEndpoint() {
|
|
233
|
+
return (target, propertyKey) => {
|
|
234
|
+
setApiMethodMetadata(target, `api:exclude:${String(propertyKey)}`, true);
|
|
235
|
+
};
|
|
236
|
+
}
|
|
237
|
+
// ============= Property-Level Decorators (for DTOs) =============
|
|
238
|
+
/**
|
|
239
|
+
* Document a DTO property with type, description, validation rules, etc.
|
|
240
|
+
*
|
|
241
|
+
* @example
|
|
242
|
+
* ```typescript
|
|
243
|
+
* class CreateUserDto {
|
|
244
|
+
* @ApiProperty({ description: 'Email address', example: 'user@example.com' })
|
|
245
|
+
* email: string;
|
|
246
|
+
*
|
|
247
|
+
* @ApiProperty({ minLength: 2, maxLength: 50, description: 'Full name' })
|
|
248
|
+
* name: string;
|
|
249
|
+
* }
|
|
250
|
+
* ```
|
|
251
|
+
*/
|
|
252
|
+
export function ApiProperty(options) {
|
|
253
|
+
return (target, propertyKey) => {
|
|
254
|
+
const opts = { ...options, required: options?.required !== false };
|
|
255
|
+
setApiPropertyMetadata(target, propertyKey, opts);
|
|
256
|
+
};
|
|
257
|
+
}
|
|
258
|
+
/**
|
|
259
|
+
* Document an optional DTO property
|
|
260
|
+
* Equivalent to ApiProperty with required: false
|
|
261
|
+
*
|
|
262
|
+
* @example
|
|
263
|
+
* ```typescript
|
|
264
|
+
* class UserFilterDto {
|
|
265
|
+
* @ApiPropertyOptional({ description: 'Filter by name', example: 'John' })
|
|
266
|
+
* name?: string;
|
|
267
|
+
* }
|
|
268
|
+
* ```
|
|
269
|
+
*/
|
|
270
|
+
export function ApiPropertyOptional(options) {
|
|
271
|
+
return (target, propertyKey) => {
|
|
272
|
+
const opts = { ...options, required: false };
|
|
273
|
+
setApiPropertyMetadata(target, propertyKey, opts);
|
|
274
|
+
};
|
|
275
|
+
}
|
|
276
|
+
//# sourceMappingURL=decorators.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"decorators.js","sourceRoot":"","sources":["../../src/openapi/decorators.ts"],"names":[],"mappings":"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"}
|