@buenojs/bueno 0.8.5 → 0.8.7
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 +259 -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 +484 -156
- 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/container/index.js +26 -3
- 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/index.js +2156 -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/index.js +520 -434
- 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/index.js +514 -449
- 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/index.js +59 -40
- 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/llms.txt +231 -0
- package/package.json +6 -2
- package/src/cli/ARCHITECTURE.md +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 +63 -12
- package/src/config/types.ts +21 -0
- package/src/graphql/built-in-engine.ts +598 -0
- package/src/graphql/context-builder.ts +110 -0
- package/src/graphql/decorators.ts +358 -0
- package/src/graphql/execution-pipeline.ts +227 -0
- package/src/graphql/graphql-module.ts +563 -0
- package/src/graphql/index.ts +101 -0
- package/src/graphql/metadata.ts +237 -0
- package/src/graphql/schema-builder.ts +319 -0
- package/src/graphql/subscription-handler.ts +283 -0
- package/src/graphql/types.ts +324 -0
- package/src/index.ts +3 -0
- package/src/modules/index.ts +48 -1
- package/tests/integration/cli.test.ts +19 -19
- package/tests/unit/cli.test.ts +1 -1
- package/tests/unit/graphql.test.ts +991 -0
- package/tsconfig.declaration.json +14 -0
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Security Primitives
|
|
3
|
+
*
|
|
4
|
+
* Provides password hashing, JWT handling, CSRF protection,
|
|
5
|
+
* and authentication middleware using Bun's built-in capabilities.
|
|
6
|
+
*/
|
|
7
|
+
import type { Middleware } from "../middleware";
|
|
8
|
+
export interface PasswordOptions {
|
|
9
|
+
algorithm?: "argon2id" | "bcrypt";
|
|
10
|
+
cost?: number;
|
|
11
|
+
}
|
|
12
|
+
export declare const Password: {
|
|
13
|
+
/**
|
|
14
|
+
* Hash a password using Bun's built-in password hashing
|
|
15
|
+
*/
|
|
16
|
+
hash(password: string, options?: PasswordOptions): Promise<string>;
|
|
17
|
+
/**
|
|
18
|
+
* Verify a password against a hash
|
|
19
|
+
*/
|
|
20
|
+
verify(password: string, hash: string): Promise<boolean>;
|
|
21
|
+
/**
|
|
22
|
+
* Check if a hash needs rehashing (e.g., algorithm upgrade)
|
|
23
|
+
*/
|
|
24
|
+
needsRehash(hash: string, options?: PasswordOptions): boolean;
|
|
25
|
+
};
|
|
26
|
+
export interface JWTOptions {
|
|
27
|
+
expiresIn?: number | string;
|
|
28
|
+
issuer?: string;
|
|
29
|
+
audience?: string;
|
|
30
|
+
}
|
|
31
|
+
export interface JWTPayload {
|
|
32
|
+
[key: string]: unknown;
|
|
33
|
+
iat?: number;
|
|
34
|
+
exp?: number;
|
|
35
|
+
iss?: string;
|
|
36
|
+
aud?: string;
|
|
37
|
+
}
|
|
38
|
+
export declare class JWT {
|
|
39
|
+
private secret;
|
|
40
|
+
private options;
|
|
41
|
+
constructor(secret: string, options?: JWTOptions);
|
|
42
|
+
/**
|
|
43
|
+
* Sign a payload and create a JWT
|
|
44
|
+
*/
|
|
45
|
+
sign(payload: JWTPayload): Promise<string>;
|
|
46
|
+
/**
|
|
47
|
+
* Verify and decode a JWT
|
|
48
|
+
*/
|
|
49
|
+
verify(token: string): Promise<JWTPayload | null>;
|
|
50
|
+
/**
|
|
51
|
+
* Decode token without verification (for debugging)
|
|
52
|
+
*/
|
|
53
|
+
decode(token: string): JWTPayload | null;
|
|
54
|
+
/**
|
|
55
|
+
* Parse expiry string to seconds
|
|
56
|
+
*/
|
|
57
|
+
private parseExpiry;
|
|
58
|
+
/**
|
|
59
|
+
* Create JWT token manually
|
|
60
|
+
*/
|
|
61
|
+
private createToken;
|
|
62
|
+
/**
|
|
63
|
+
* Decode and verify token
|
|
64
|
+
*/
|
|
65
|
+
private decodeToken;
|
|
66
|
+
/**
|
|
67
|
+
* Decode token without verification
|
|
68
|
+
*/
|
|
69
|
+
private decodeTokenUnsafe;
|
|
70
|
+
/**
|
|
71
|
+
* Sign data using HMAC-SHA256
|
|
72
|
+
*/
|
|
73
|
+
private signData;
|
|
74
|
+
/**
|
|
75
|
+
* Base64URL encode
|
|
76
|
+
*/
|
|
77
|
+
private base64UrlEncode;
|
|
78
|
+
/**
|
|
79
|
+
* Base64URL decode
|
|
80
|
+
*/
|
|
81
|
+
private base64UrlDecode;
|
|
82
|
+
}
|
|
83
|
+
export declare const CSRF: {
|
|
84
|
+
/**
|
|
85
|
+
* Generate a CSRF token
|
|
86
|
+
*/
|
|
87
|
+
generate(): string;
|
|
88
|
+
/**
|
|
89
|
+
* Get the secret for a token (for cookie-based validation)
|
|
90
|
+
*/
|
|
91
|
+
getSecret(): string;
|
|
92
|
+
/**
|
|
93
|
+
* Verify a CSRF token against a secret
|
|
94
|
+
*/
|
|
95
|
+
verify(token: string, secret: string): boolean;
|
|
96
|
+
/**
|
|
97
|
+
* Create CSRF middleware
|
|
98
|
+
*/
|
|
99
|
+
middleware(): Middleware;
|
|
100
|
+
};
|
|
101
|
+
export interface AuthMiddlewareOptions {
|
|
102
|
+
jwt: JWT;
|
|
103
|
+
header?: string;
|
|
104
|
+
prefix?: string;
|
|
105
|
+
skipPaths?: string[];
|
|
106
|
+
}
|
|
107
|
+
/**
|
|
108
|
+
* Create authentication middleware
|
|
109
|
+
*/
|
|
110
|
+
export declare function createAuthMiddleware(options: AuthMiddlewareOptions): Middleware;
|
|
111
|
+
export interface RBACOptions {
|
|
112
|
+
getUserRoles: (userId: string | number) => Promise<string[]>;
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* Create RBAC middleware
|
|
116
|
+
*/
|
|
117
|
+
export declare function createRBACMiddleware(options: RBACOptions): (roles: string[]) => Middleware;
|
|
118
|
+
export interface APIKeyOptions {
|
|
119
|
+
validateKey: (apiKey: string) => Promise<boolean>;
|
|
120
|
+
header?: string;
|
|
121
|
+
}
|
|
122
|
+
/**
|
|
123
|
+
* Create API key authentication middleware
|
|
124
|
+
*/
|
|
125
|
+
export declare function createAPIKeyMiddleware(options: APIKeyOptions): Middleware;
|
|
126
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/security/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAIhD,MAAM,WAAW,eAAe;IAC/B,SAAS,CAAC,EAAE,UAAU,GAAG,QAAQ,CAAC;IAClC,IAAI,CAAC,EAAE,MAAM,CAAC;CACd;AAED,eAAO,MAAM,QAAQ;IACpB;;OAEG;mBACkB,MAAM,YAAY,eAAe,GAAG,OAAO,CAAC,MAAM,CAAC;IAQxE;;OAEG;qBACoB,MAAM,QAAQ,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAI9D;;OAEG;sBACe,MAAM,YAAY,eAAe,GAAG,OAAO;CAuB7D,CAAC;AAIF,MAAM,WAAW,UAAU;IAC1B,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC5B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,UAAU;IAC1B,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;IACvB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;CACb;AAED,qBAAa,GAAG;IACf,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,OAAO,CAAa;gBAEhB,MAAM,EAAE,MAAM,EAAE,OAAO,GAAE,UAAe;IAKpD;;OAEG;IACG,IAAI,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC;IAgChD;;OAEG;IACG,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC;IAmBvD;;OAEG;IACH,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,UAAU,GAAG,IAAI;IAQxC;;OAEG;IACH,OAAO,CAAC,WAAW;IAuBnB;;OAEG;YACW,WAAW;IAiBzB;;OAEG;YACW,WAAW;IAmBzB;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAQzB;;OAEG;YACW,QAAQ;IAmBtB;;OAEG;IACH,OAAO,CAAC,eAAe;IAKvB;;OAEG;IACH,OAAO,CAAC,eAAe;CAMvB;AAID,eAAO,MAAM,IAAI;IAChB;;OAEG;gBACS,MAAM;IAIlB;;OAEG;iBACU,MAAM;IAInB;;OAEG;kBACW,MAAM,UAAU,MAAM,GAAG,OAAO;IAK9C;;OAEG;kBACW,UAAU;CAiBxB,CAAC;AAIF,MAAM,WAAW,qBAAqB;IACrC,GAAG,EAAE,GAAG,CAAC;IACT,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;CACrB;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CACnC,OAAO,EAAE,qBAAqB,GAC5B,UAAU,CAwCZ;AAID,MAAM,WAAW,WAAW;IAC3B,YAAY,EAAE,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,KAAK,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;CAC7D;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CACnC,OAAO,EAAE,WAAW,GAClB,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,UAAU,CAuBjC;AAID,MAAM,WAAW,aAAa;IAC7B,WAAW,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IAClD,MAAM,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,aAAa,GAAG,UAAU,CAkBzE"}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Static Site Generation (SSG) Module
|
|
3
|
+
*
|
|
4
|
+
* Provides markdown-to-HTML conversion with frontmatter support,
|
|
5
|
+
* template system, and static site generation capabilities.
|
|
6
|
+
*/
|
|
7
|
+
import { Router } from "../router";
|
|
8
|
+
export interface Frontmatter {
|
|
9
|
+
title?: string;
|
|
10
|
+
description?: string;
|
|
11
|
+
layout?: string;
|
|
12
|
+
date?: string;
|
|
13
|
+
slug?: string;
|
|
14
|
+
[key: string]: unknown;
|
|
15
|
+
}
|
|
16
|
+
export interface Page {
|
|
17
|
+
path: string;
|
|
18
|
+
content: string;
|
|
19
|
+
html: string;
|
|
20
|
+
frontmatter: Frontmatter;
|
|
21
|
+
raw: string;
|
|
22
|
+
}
|
|
23
|
+
export interface SSGConfig {
|
|
24
|
+
contentDir: string;
|
|
25
|
+
outputDir: string;
|
|
26
|
+
publicDir?: string;
|
|
27
|
+
layoutsDir?: string;
|
|
28
|
+
defaultLayout?: string;
|
|
29
|
+
baseUrl?: string;
|
|
30
|
+
minify?: boolean;
|
|
31
|
+
}
|
|
32
|
+
export interface LayoutContext {
|
|
33
|
+
title?: string;
|
|
34
|
+
description?: string;
|
|
35
|
+
content: string;
|
|
36
|
+
page: Page;
|
|
37
|
+
site: SiteConfig;
|
|
38
|
+
[key: string]: unknown;
|
|
39
|
+
}
|
|
40
|
+
export interface SiteConfig {
|
|
41
|
+
title: string;
|
|
42
|
+
description: string;
|
|
43
|
+
baseUrl: string;
|
|
44
|
+
[key: string]: unknown;
|
|
45
|
+
}
|
|
46
|
+
declare function parseFrontmatter(content: string): {
|
|
47
|
+
frontmatter: Frontmatter;
|
|
48
|
+
body: string;
|
|
49
|
+
};
|
|
50
|
+
declare function parseMarkdown(markdown: string): string;
|
|
51
|
+
export declare class SSG {
|
|
52
|
+
private config;
|
|
53
|
+
private pages;
|
|
54
|
+
private layouts;
|
|
55
|
+
private siteConfig;
|
|
56
|
+
private router;
|
|
57
|
+
constructor(config: SSGConfig, siteConfig?: Partial<SiteConfig>);
|
|
58
|
+
private registerDefaultLayouts;
|
|
59
|
+
registerLayout(name: string, render: (ctx: LayoutContext) => string): void;
|
|
60
|
+
loadContent(): Promise<void>;
|
|
61
|
+
private scanDirectory;
|
|
62
|
+
private processFile;
|
|
63
|
+
renderPage(page: Page): string;
|
|
64
|
+
build(): Promise<void>;
|
|
65
|
+
private copyPublicDir;
|
|
66
|
+
createRouter(): Router;
|
|
67
|
+
serve(port?: number): Promise<void>;
|
|
68
|
+
getPages(): Page[];
|
|
69
|
+
getPage(path: string): Page | undefined;
|
|
70
|
+
}
|
|
71
|
+
export declare function createSSG(config: SSGConfig, siteConfig?: Partial<SiteConfig>): SSG;
|
|
72
|
+
export { parseMarkdown, parseFrontmatter };
|
|
73
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/ssg/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAEnC,MAAM,WAAW,WAAW;IAC3B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACvB;AAED,MAAM,WAAW,IAAI;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,WAAW,CAAC;IACzB,GAAG,EAAE,MAAM,CAAC;CACZ;AAED,MAAM,WAAW,SAAS;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,MAAM,WAAW,aAAa;IAC7B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,IAAI,CAAC;IACX,IAAI,EAAE,UAAU,CAAC;IACjB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACvB;AAED,MAAM,WAAW,UAAU;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACvB;AAkBD,iBAAS,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG;IAC3C,WAAW,EAAE,WAAW,CAAC;IACzB,IAAI,EAAE,MAAM,CAAC;CACb,CAqCA;AA6FD,iBAAS,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAsI/C;AAED,qBAAa,GAAG;IACf,OAAO,CAAC,MAAM,CAAY;IAC1B,OAAO,CAAC,KAAK,CAAgC;IAC7C,OAAO,CAAC,OAAO,CAA0D;IACzE,OAAO,CAAC,UAAU,CAAa;IAC/B,OAAO,CAAC,MAAM,CAAS;gBAEX,MAAM,EAAE,SAAS,EAAE,UAAU,CAAC,EAAE,OAAO,CAAC,UAAU,CAAC;IAa/D,OAAO,CAAC,sBAAsB;IAiE9B,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,GAAG,EAAE,aAAa,KAAK,MAAM,GAAG,IAAI;IAIpE,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC;YAiBpB,aAAa;YAYb,WAAW;IAiCzB,UAAU,CAAC,IAAI,EAAE,IAAI,GAAG,MAAM;IAyBxB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;YA4Bd,aAAa;IAqB3B,YAAY,IAAI,MAAM;IAyBhB,KAAK,CAAC,IAAI,SAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IA2BvC,QAAQ,IAAI,IAAI,EAAE;IAIlB,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS;CAGvC;AAED,wBAAgB,SAAS,CACxB,MAAM,EAAE,SAAS,EACjB,UAAU,CAAC,EAAE,OAAO,CAAC,UAAU,CAAC,GAC9B,GAAG,CAEL;AAED,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,CAAC"}
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Storage Layer
|
|
3
|
+
*
|
|
4
|
+
* Unified interface over Bun.s3 for S3-compatible storage with local filesystem fallback.
|
|
5
|
+
* Uses Bun 1.3+ native S3 client for cloud storage.
|
|
6
|
+
*/
|
|
7
|
+
export interface StorageConfig {
|
|
8
|
+
driver?: "s3" | "local";
|
|
9
|
+
bucket?: string;
|
|
10
|
+
region?: string;
|
|
11
|
+
endpoint?: string;
|
|
12
|
+
localPath?: string;
|
|
13
|
+
}
|
|
14
|
+
export interface UploadOptions {
|
|
15
|
+
key: string;
|
|
16
|
+
body: string | Buffer | ArrayBuffer | Blob | File;
|
|
17
|
+
contentType?: string;
|
|
18
|
+
}
|
|
19
|
+
export interface DownloadOptions {
|
|
20
|
+
key: string;
|
|
21
|
+
}
|
|
22
|
+
export interface PresignedURLOptions {
|
|
23
|
+
key: string;
|
|
24
|
+
expiresIn?: number;
|
|
25
|
+
method?: "GET" | "PUT";
|
|
26
|
+
}
|
|
27
|
+
export interface FileInfo {
|
|
28
|
+
key: string;
|
|
29
|
+
size: number;
|
|
30
|
+
lastModified?: Date;
|
|
31
|
+
}
|
|
32
|
+
export interface ListOptions {
|
|
33
|
+
prefix?: string;
|
|
34
|
+
}
|
|
35
|
+
export interface ListResult {
|
|
36
|
+
files: FileInfo[];
|
|
37
|
+
directories: string[];
|
|
38
|
+
}
|
|
39
|
+
export declare class Storage {
|
|
40
|
+
private driver;
|
|
41
|
+
private s3Storage;
|
|
42
|
+
private localStorage;
|
|
43
|
+
private _isConnected;
|
|
44
|
+
constructor(config?: StorageConfig);
|
|
45
|
+
connect(): Promise<void>;
|
|
46
|
+
get isConnected(): boolean;
|
|
47
|
+
getDriver(): "s3" | "local";
|
|
48
|
+
upload(options: UploadOptions): Promise<{
|
|
49
|
+
key: string;
|
|
50
|
+
}>;
|
|
51
|
+
download(options: DownloadOptions): Promise<Blob>;
|
|
52
|
+
downloadText(key: string): Promise<string>;
|
|
53
|
+
downloadBuffer(key: string): Promise<ArrayBuffer>;
|
|
54
|
+
stream(key: string): Promise<ReadableStream<Uint8Array>>;
|
|
55
|
+
delete(key: string): Promise<void>;
|
|
56
|
+
deleteMany(keys: string[]): Promise<void>;
|
|
57
|
+
exists(key: string): Promise<boolean>;
|
|
58
|
+
info(key: string): Promise<FileInfo | null>;
|
|
59
|
+
copy(sourceKey: string, destKey: string): Promise<void>;
|
|
60
|
+
move(sourceKey: string, destKey: string): Promise<void>;
|
|
61
|
+
list(options?: ListOptions): Promise<ListResult>;
|
|
62
|
+
getPresignedUrl(options: PresignedURLOptions): string;
|
|
63
|
+
getPublicUrl(key: string): string;
|
|
64
|
+
uploadFile(localPath: string, key: string): Promise<{
|
|
65
|
+
key: string;
|
|
66
|
+
}>;
|
|
67
|
+
}
|
|
68
|
+
export interface SecretOptions {
|
|
69
|
+
service: string;
|
|
70
|
+
name: string;
|
|
71
|
+
}
|
|
72
|
+
export interface SetSecretOptions extends SecretOptions {
|
|
73
|
+
value: string;
|
|
74
|
+
allowUnrestrictedAccess?: boolean;
|
|
75
|
+
}
|
|
76
|
+
export declare const Secrets: {
|
|
77
|
+
/**
|
|
78
|
+
* Get a secret from OS credential storage
|
|
79
|
+
*/
|
|
80
|
+
get(options: SecretOptions): Promise<string | null>;
|
|
81
|
+
/**
|
|
82
|
+
* Store a secret in OS credential storage
|
|
83
|
+
*/
|
|
84
|
+
set(options: SetSecretOptions): Promise<void>;
|
|
85
|
+
/**
|
|
86
|
+
* Delete a secret from OS credential storage
|
|
87
|
+
*/
|
|
88
|
+
delete(options: SecretOptions): Promise<void>;
|
|
89
|
+
/**
|
|
90
|
+
* Get a secret or throw if not found
|
|
91
|
+
*/
|
|
92
|
+
getOrThrow(options: SecretOptions): Promise<string>;
|
|
93
|
+
/**
|
|
94
|
+
* Get a secret or use a default value
|
|
95
|
+
*/
|
|
96
|
+
getOrDefault(options: SecretOptions, defaultValue: string): Promise<string>;
|
|
97
|
+
};
|
|
98
|
+
export declare function createStorage(config?: StorageConfig): Storage;
|
|
99
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/storage/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,376 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* OpenTelemetry OTLP Trace Exporter
|
|
3
|
+
*
|
|
4
|
+
* Provides distributed tracing with OpenTelemetry Protocol (OTLP) export.
|
|
5
|
+
* Part of Layer 7 (Testing & Observability) implementation.
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* Span kind enumeration
|
|
9
|
+
*/
|
|
10
|
+
export type SpanKind = "server" | "client" | "producer" | "consumer" | "internal";
|
|
11
|
+
/**
|
|
12
|
+
* Span status code
|
|
13
|
+
*/
|
|
14
|
+
export type StatusCode = "ok" | "error" | "unset";
|
|
15
|
+
/**
|
|
16
|
+
* Event attached to a span
|
|
17
|
+
*/
|
|
18
|
+
export interface SpanEvent {
|
|
19
|
+
/** Event name */
|
|
20
|
+
name: string;
|
|
21
|
+
/** Event timestamp in nanoseconds */
|
|
22
|
+
timestamp: number;
|
|
23
|
+
/** Event attributes */
|
|
24
|
+
attributes?: Record<string, string | number | boolean>;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Span status
|
|
28
|
+
*/
|
|
29
|
+
export interface SpanStatus {
|
|
30
|
+
/** Status code */
|
|
31
|
+
code: StatusCode;
|
|
32
|
+
/** Optional status message */
|
|
33
|
+
message?: string;
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Span represents a unit of work in distributed tracing
|
|
37
|
+
*/
|
|
38
|
+
export interface Span {
|
|
39
|
+
/** Unique trace identifier (32 hex characters) */
|
|
40
|
+
traceId: string;
|
|
41
|
+
/** Unique span identifier (16 hex characters) */
|
|
42
|
+
spanId: string;
|
|
43
|
+
/** Parent span identifier if this is a child span */
|
|
44
|
+
parentSpanId?: string;
|
|
45
|
+
/** Span name (operation name) */
|
|
46
|
+
name: string;
|
|
47
|
+
/** Span kind */
|
|
48
|
+
kind: SpanKind;
|
|
49
|
+
/** Start time in nanoseconds */
|
|
50
|
+
startTime: number;
|
|
51
|
+
/** End time in nanoseconds */
|
|
52
|
+
endTime?: number;
|
|
53
|
+
/** Duration in nanoseconds */
|
|
54
|
+
duration?: number;
|
|
55
|
+
/** Span attributes */
|
|
56
|
+
attributes: Record<string, string | number | boolean>;
|
|
57
|
+
/** Events recorded during the span */
|
|
58
|
+
events: SpanEvent[];
|
|
59
|
+
/** Span status */
|
|
60
|
+
status: SpanStatus;
|
|
61
|
+
/** Whether the span has ended */
|
|
62
|
+
ended: boolean;
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Options for starting a new span
|
|
66
|
+
*/
|
|
67
|
+
export interface SpanOptions {
|
|
68
|
+
/** Span kind */
|
|
69
|
+
kind?: SpanKind;
|
|
70
|
+
/** Parent span (if any) */
|
|
71
|
+
parent?: Span;
|
|
72
|
+
/** Initial attributes */
|
|
73
|
+
attributes?: Record<string, string | number | boolean>;
|
|
74
|
+
/** Links to other spans */
|
|
75
|
+
links?: Array<{
|
|
76
|
+
traceId: string;
|
|
77
|
+
spanId: string;
|
|
78
|
+
attributes?: Record<string, string | number | boolean>;
|
|
79
|
+
}>;
|
|
80
|
+
/** Start time in nanoseconds (defaults to current time) */
|
|
81
|
+
startTime?: number;
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* OTLP Exporter options
|
|
85
|
+
*/
|
|
86
|
+
export interface OTLPExporterOptions {
|
|
87
|
+
/** OTLP endpoint URL (e.g., http://localhost:4318/v1/traces) */
|
|
88
|
+
endpoint: string;
|
|
89
|
+
/** Additional headers to send with requests */
|
|
90
|
+
headers?: Record<string, string>;
|
|
91
|
+
/** Export interval in milliseconds (default: 5000) */
|
|
92
|
+
exportInterval?: number;
|
|
93
|
+
/** Maximum batch size before forcing export (default: 100) */
|
|
94
|
+
maxBatchSize?: number;
|
|
95
|
+
/** Maximum retry attempts on failure (default: 3) */
|
|
96
|
+
maxRetries?: number;
|
|
97
|
+
/** Initial retry delay in milliseconds (default: 1000) */
|
|
98
|
+
retryDelay?: number;
|
|
99
|
+
/** Timeout for export requests in milliseconds (default: 30000) */
|
|
100
|
+
timeout?: number;
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* Sampler type
|
|
104
|
+
*/
|
|
105
|
+
export type SamplerType = "always" | "never" | "probabilistic";
|
|
106
|
+
/**
|
|
107
|
+
* Tracer options
|
|
108
|
+
*/
|
|
109
|
+
export interface TracerOptions {
|
|
110
|
+
/** OTLP exporter instance */
|
|
111
|
+
exporter?: OTLPExporter;
|
|
112
|
+
/** Sampling strategy (default: "always") */
|
|
113
|
+
sampler?: SamplerType;
|
|
114
|
+
/** Probability for probabilistic sampling (0.0 to 1.0) */
|
|
115
|
+
probability?: number;
|
|
116
|
+
/** Service name for resource attributes */
|
|
117
|
+
serviceName?: string;
|
|
118
|
+
/** Additional resource attributes */
|
|
119
|
+
resourceAttributes?: Record<string, string | number | boolean>;
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* Trace context for propagation
|
|
123
|
+
*/
|
|
124
|
+
export interface TraceContext {
|
|
125
|
+
traceId: string;
|
|
126
|
+
spanId: string;
|
|
127
|
+
traceFlags: number;
|
|
128
|
+
traceState?: string;
|
|
129
|
+
}
|
|
130
|
+
/**
|
|
131
|
+
* Generate a random trace ID (32 hex characters / 16 bytes)
|
|
132
|
+
*/
|
|
133
|
+
export declare function generateTraceId(): string;
|
|
134
|
+
/**
|
|
135
|
+
* Generate a random span ID (16 hex characters / 8 bytes)
|
|
136
|
+
*/
|
|
137
|
+
export declare function generateSpanId(): string;
|
|
138
|
+
/**
|
|
139
|
+
* Get current time in nanoseconds using Bun.nanoseconds()
|
|
140
|
+
*/
|
|
141
|
+
export declare function nowNanoseconds(): number;
|
|
142
|
+
/**
|
|
143
|
+
* OTLP HTTP Trace Exporter
|
|
144
|
+
*
|
|
145
|
+
* Exports traces to an OTLP-compatible endpoint using HTTP/JSON.
|
|
146
|
+
*/
|
|
147
|
+
export declare class OTLPExporter {
|
|
148
|
+
private endpoint;
|
|
149
|
+
private headers;
|
|
150
|
+
private exportInterval;
|
|
151
|
+
private maxBatchSize;
|
|
152
|
+
private maxRetries;
|
|
153
|
+
private retryDelay;
|
|
154
|
+
private timeout;
|
|
155
|
+
private pendingSpans;
|
|
156
|
+
private exportTimer;
|
|
157
|
+
private isShuttingDown;
|
|
158
|
+
private serviceName;
|
|
159
|
+
private resourceAttributes;
|
|
160
|
+
constructor(options: OTLPExporterOptions);
|
|
161
|
+
/**
|
|
162
|
+
* Set service name for resource attributes
|
|
163
|
+
*/
|
|
164
|
+
setServiceName(name: string): void;
|
|
165
|
+
/**
|
|
166
|
+
* Set resource attributes
|
|
167
|
+
*/
|
|
168
|
+
setResourceAttributes(attributes: Record<string, string | number | boolean>): void;
|
|
169
|
+
/**
|
|
170
|
+
* Start periodic export
|
|
171
|
+
*/
|
|
172
|
+
start(): void;
|
|
173
|
+
/**
|
|
174
|
+
* Stop periodic export
|
|
175
|
+
*/
|
|
176
|
+
stop(): void;
|
|
177
|
+
/**
|
|
178
|
+
* Add a span to the pending batch
|
|
179
|
+
*/
|
|
180
|
+
addSpan(span: Span): void;
|
|
181
|
+
/**
|
|
182
|
+
* Export spans to OTLP endpoint
|
|
183
|
+
*/
|
|
184
|
+
export(spans: Span[]): Promise<boolean>;
|
|
185
|
+
/**
|
|
186
|
+
* Flush all pending spans
|
|
187
|
+
*/
|
|
188
|
+
flush(): Promise<void>;
|
|
189
|
+
/**
|
|
190
|
+
* Close the exporter and flush remaining spans
|
|
191
|
+
*/
|
|
192
|
+
close(): Promise<void>;
|
|
193
|
+
/**
|
|
194
|
+
* Build OTLP export request from spans
|
|
195
|
+
*/
|
|
196
|
+
private buildExportRequest;
|
|
197
|
+
/**
|
|
198
|
+
* Delay helper
|
|
199
|
+
*/
|
|
200
|
+
private delay;
|
|
201
|
+
}
|
|
202
|
+
/**
|
|
203
|
+
* Tracer creates and manages spans for distributed tracing
|
|
204
|
+
*/
|
|
205
|
+
export declare class Tracer {
|
|
206
|
+
private serviceName;
|
|
207
|
+
private exporter?;
|
|
208
|
+
private sampler;
|
|
209
|
+
private probability;
|
|
210
|
+
private resourceAttributes;
|
|
211
|
+
private currentSpan;
|
|
212
|
+
private spanStack;
|
|
213
|
+
constructor(options?: TracerOptions);
|
|
214
|
+
/**
|
|
215
|
+
* Check if a span should be sampled
|
|
216
|
+
*/
|
|
217
|
+
private shouldSample;
|
|
218
|
+
/**
|
|
219
|
+
* Start a new span
|
|
220
|
+
*/
|
|
221
|
+
startSpan(name: string, options?: SpanOptions): Span;
|
|
222
|
+
/**
|
|
223
|
+
* End a span
|
|
224
|
+
*/
|
|
225
|
+
endSpan(span: Span, endTime?: number): void;
|
|
226
|
+
/**
|
|
227
|
+
* Get the current active span
|
|
228
|
+
*/
|
|
229
|
+
getCurrentSpan(): Span | null;
|
|
230
|
+
/**
|
|
231
|
+
* Run a function within span context
|
|
232
|
+
*/
|
|
233
|
+
withSpan<T>(name: string, fn: (span: Span) => T | Promise<T>, options?: SpanOptions): Promise<T>;
|
|
234
|
+
/**
|
|
235
|
+
* Add an event to a span
|
|
236
|
+
*/
|
|
237
|
+
addEvent(span: Span, name: string, attributes?: Record<string, string | number | boolean>): void;
|
|
238
|
+
/**
|
|
239
|
+
* Set an attribute on a span
|
|
240
|
+
*/
|
|
241
|
+
setAttribute(span: Span, key: string, value: string | number | boolean): void;
|
|
242
|
+
/**
|
|
243
|
+
* Set multiple attributes on a span
|
|
244
|
+
*/
|
|
245
|
+
setAttributes(span: Span, attributes: Record<string, string | number | boolean>): void;
|
|
246
|
+
/**
|
|
247
|
+
* Set span status
|
|
248
|
+
*/
|
|
249
|
+
setStatus(span: Span, code: StatusCode, message?: string): void;
|
|
250
|
+
/**
|
|
251
|
+
* Record an error on a span
|
|
252
|
+
*/
|
|
253
|
+
setError(span: Span, error: Error): void;
|
|
254
|
+
/**
|
|
255
|
+
* Update span name
|
|
256
|
+
*/
|
|
257
|
+
updateName(span: Span, name: string): void;
|
|
258
|
+
/**
|
|
259
|
+
* Inject trace context into a carrier (for W3C TraceContext propagation)
|
|
260
|
+
*/
|
|
261
|
+
injectContext(carrier: Record<string, string>, span?: Span): void;
|
|
262
|
+
/**
|
|
263
|
+
* Extract trace context from a carrier (for W3C TraceContext propagation)
|
|
264
|
+
*/
|
|
265
|
+
extractContext(carrier: Record<string, string>): TraceContext | null;
|
|
266
|
+
/**
|
|
267
|
+
* Create a child span from extracted context
|
|
268
|
+
*/
|
|
269
|
+
startSpanFromContext(name: string, context: TraceContext, options?: SpanOptions): Span;
|
|
270
|
+
/**
|
|
271
|
+
* Flush pending spans
|
|
272
|
+
*/
|
|
273
|
+
flush(): Promise<void>;
|
|
274
|
+
/**
|
|
275
|
+
* Close the tracer
|
|
276
|
+
*/
|
|
277
|
+
close(): Promise<void>;
|
|
278
|
+
/**
|
|
279
|
+
* Create a no-op span (not sampled)
|
|
280
|
+
*/
|
|
281
|
+
private createNoopSpan;
|
|
282
|
+
}
|
|
283
|
+
/**
|
|
284
|
+
* Create a configured tracer
|
|
285
|
+
*/
|
|
286
|
+
export declare function createTracer(serviceName: string, options?: Omit<TracerOptions, "serviceName">): Tracer;
|
|
287
|
+
/**
|
|
288
|
+
* Request context for middleware
|
|
289
|
+
*/
|
|
290
|
+
interface RequestContext {
|
|
291
|
+
method: string;
|
|
292
|
+
path: string;
|
|
293
|
+
url: URL;
|
|
294
|
+
headers: Record<string, string>;
|
|
295
|
+
getHeader: (name: string) => string | undefined;
|
|
296
|
+
setHeader: (name: string, value: string) => void;
|
|
297
|
+
status?: number;
|
|
298
|
+
}
|
|
299
|
+
/**
|
|
300
|
+
* Response context for middleware
|
|
301
|
+
*/
|
|
302
|
+
interface ResponseContext {
|
|
303
|
+
status: number;
|
|
304
|
+
headers?: Record<string, string>;
|
|
305
|
+
}
|
|
306
|
+
/**
|
|
307
|
+
* Create middleware for automatic HTTP tracing
|
|
308
|
+
*/
|
|
309
|
+
export declare function traceMiddleware(tracer: Tracer): (ctx: RequestContext, next: () => Promise<ResponseContext>) => Promise<ResponseContext>;
|
|
310
|
+
/**
|
|
311
|
+
* Database interface for tracing
|
|
312
|
+
*/
|
|
313
|
+
interface TracedDatabase {
|
|
314
|
+
query?: (sql: string, params?: unknown[]) => Promise<unknown>;
|
|
315
|
+
execute?: (sql: string, params?: unknown[]) => Promise<unknown>;
|
|
316
|
+
[key: string]: unknown;
|
|
317
|
+
}
|
|
318
|
+
/**
|
|
319
|
+
* Wrap database with tracing
|
|
320
|
+
*/
|
|
321
|
+
export declare function traceDatabase(tracer: Tracer, db: TracedDatabase, system?: string): TracedDatabase;
|
|
322
|
+
/**
|
|
323
|
+
* Options for traced fetch
|
|
324
|
+
*/
|
|
325
|
+
interface TracedFetchOptions extends RequestInit {
|
|
326
|
+
/** Span to use as parent */
|
|
327
|
+
parentSpan?: Span;
|
|
328
|
+
/** Additional attributes to add to span */
|
|
329
|
+
attributes?: Record<string, string | number | boolean>;
|
|
330
|
+
}
|
|
331
|
+
/**
|
|
332
|
+
* Create a traced fetch function
|
|
333
|
+
*/
|
|
334
|
+
export declare function createTracedFetch(tracer: Tracer): (url: string | URL, options?: TracedFetchOptions) => Promise<Response>;
|
|
335
|
+
/**
|
|
336
|
+
* Span builder for fluent API
|
|
337
|
+
*/
|
|
338
|
+
export declare class SpanBuilder {
|
|
339
|
+
private span;
|
|
340
|
+
private tracer;
|
|
341
|
+
constructor(tracer: Tracer, name: string, options?: SpanOptions);
|
|
342
|
+
/**
|
|
343
|
+
* Set an attribute
|
|
344
|
+
*/
|
|
345
|
+
setAttribute(key: string, value: string | number | boolean): this;
|
|
346
|
+
/**
|
|
347
|
+
* Set multiple attributes
|
|
348
|
+
*/
|
|
349
|
+
setAttributes(attributes: Record<string, string | number | boolean>): this;
|
|
350
|
+
/**
|
|
351
|
+
* Add an event
|
|
352
|
+
*/
|
|
353
|
+
addEvent(name: string, attributes?: Record<string, string | number | boolean>): this;
|
|
354
|
+
/**
|
|
355
|
+
* Set status
|
|
356
|
+
*/
|
|
357
|
+
setStatus(code: StatusCode, message?: string): this;
|
|
358
|
+
/**
|
|
359
|
+
* Record error
|
|
360
|
+
*/
|
|
361
|
+
setError(error: Error): this;
|
|
362
|
+
/**
|
|
363
|
+
* End the span
|
|
364
|
+
*/
|
|
365
|
+
end(): Span;
|
|
366
|
+
/**
|
|
367
|
+
* Get the underlying span
|
|
368
|
+
*/
|
|
369
|
+
getSpan(): Span;
|
|
370
|
+
}
|
|
371
|
+
/**
|
|
372
|
+
* Create a span builder
|
|
373
|
+
*/
|
|
374
|
+
export declare function span(tracer: Tracer, name: string, options?: SpanOptions): SpanBuilder;
|
|
375
|
+
export {};
|
|
376
|
+
//# sourceMappingURL=index.d.ts.map
|