@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,122 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ORM Query Builder
|
|
3
|
+
*
|
|
4
|
+
* Fluent, chainable query builder for SELECT, INSERT, UPDATE, DELETE operations.
|
|
5
|
+
* Works independently of Model; can be used standalone.
|
|
6
|
+
*/
|
|
7
|
+
import type { Database } from "../index";
|
|
8
|
+
import { QueryCompiler, type QueryState, type SqlDialect } from "./compiler";
|
|
9
|
+
export interface PaginationResult<T> {
|
|
10
|
+
data: T[];
|
|
11
|
+
total: number;
|
|
12
|
+
page: number;
|
|
13
|
+
limit: number;
|
|
14
|
+
totalPages: number;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Standalone ORM Query Builder
|
|
18
|
+
* Generic over the row type T returned by queries
|
|
19
|
+
*/
|
|
20
|
+
export declare class OrmQueryBuilder<T extends Record<string, unknown> = Record<string, unknown>> {
|
|
21
|
+
protected state: QueryState;
|
|
22
|
+
protected compiler: QueryCompiler;
|
|
23
|
+
protected db: Database;
|
|
24
|
+
protected rowTransformer?: (row: Record<string, unknown>) => T;
|
|
25
|
+
constructor(db: Database, table: string, dialect?: SqlDialect);
|
|
26
|
+
/**
|
|
27
|
+
* Clone this builder to a new instance (used by scopes, relationships)
|
|
28
|
+
*/
|
|
29
|
+
clone(): OrmQueryBuilder<T>;
|
|
30
|
+
/**
|
|
31
|
+
* Set row transformer (called after fetch, before return)
|
|
32
|
+
*/
|
|
33
|
+
setRowTransformer(fn: (row: Record<string, unknown>) => T): this;
|
|
34
|
+
select(...columns: string[]): this;
|
|
35
|
+
addSelect(...columns: string[]): this;
|
|
36
|
+
distinct(): this;
|
|
37
|
+
where(column: string, operatorOrValue: unknown, value?: unknown): this;
|
|
38
|
+
orWhere(column: string, operatorOrValue: unknown, value?: unknown): this;
|
|
39
|
+
whereRaw(sql: string, params?: unknown[]): this;
|
|
40
|
+
whereIn(column: string, values: unknown[]): this;
|
|
41
|
+
whereNotIn(column: string, values: unknown[]): this;
|
|
42
|
+
whereNull(column: string): this;
|
|
43
|
+
whereNotNull(column: string): this;
|
|
44
|
+
whereBetween(column: string, min: unknown, max: unknown): this;
|
|
45
|
+
join(table: string, on: string, type?: "INNER" | "LEFT" | "RIGHT"): this;
|
|
46
|
+
leftJoin(table: string, on: string): this;
|
|
47
|
+
rightJoin(table: string, on: string): this;
|
|
48
|
+
crossJoin(table: string): this;
|
|
49
|
+
groupBy(...columns: string[]): this;
|
|
50
|
+
having(raw: string, params?: unknown[]): this;
|
|
51
|
+
orderBy(column: string, direction?: "ASC" | "DESC"): this;
|
|
52
|
+
orderByDesc(column: string): this;
|
|
53
|
+
limit(n: number): this;
|
|
54
|
+
offset(n: number): this;
|
|
55
|
+
lockForShare(): this;
|
|
56
|
+
lockForUpdate(): this;
|
|
57
|
+
/**
|
|
58
|
+
* Fetch all rows
|
|
59
|
+
*/
|
|
60
|
+
get(): Promise<T[]>;
|
|
61
|
+
/**
|
|
62
|
+
* Fetch first row
|
|
63
|
+
*/
|
|
64
|
+
first(): Promise<T | null>;
|
|
65
|
+
/**
|
|
66
|
+
* Fetch first row or throw
|
|
67
|
+
*/
|
|
68
|
+
firstOrFail(): Promise<T>;
|
|
69
|
+
/**
|
|
70
|
+
* Find by primary key (assumes 'id' column)
|
|
71
|
+
*/
|
|
72
|
+
find(id: unknown): Promise<T | null>;
|
|
73
|
+
/**
|
|
74
|
+
* Find by primary key or throw
|
|
75
|
+
*/
|
|
76
|
+
findOrFail(id: unknown): Promise<T>;
|
|
77
|
+
/**
|
|
78
|
+
* Count rows
|
|
79
|
+
*/
|
|
80
|
+
count(column?: string): Promise<number>;
|
|
81
|
+
/**
|
|
82
|
+
* Check if any rows exist
|
|
83
|
+
*/
|
|
84
|
+
exists(): Promise<boolean>;
|
|
85
|
+
/**
|
|
86
|
+
* Pluck a single column
|
|
87
|
+
*/
|
|
88
|
+
pluck<K extends keyof T>(column: K): Promise<T[K][]>;
|
|
89
|
+
/**
|
|
90
|
+
* Get a single column value
|
|
91
|
+
*/
|
|
92
|
+
value<K extends keyof T>(column: K): Promise<T[K] | null>;
|
|
93
|
+
/**
|
|
94
|
+
* Paginate results
|
|
95
|
+
*/
|
|
96
|
+
paginate(page: number, limit: number): Promise<PaginationResult<T>>;
|
|
97
|
+
/**
|
|
98
|
+
* Insert a single row
|
|
99
|
+
*/
|
|
100
|
+
insert(data: Partial<T>): Promise<T>;
|
|
101
|
+
/**
|
|
102
|
+
* Insert multiple rows
|
|
103
|
+
*/
|
|
104
|
+
insertMany(items: Partial<T>[]): Promise<T[]>;
|
|
105
|
+
/**
|
|
106
|
+
* Update rows matching the query
|
|
107
|
+
*/
|
|
108
|
+
update(data: Partial<T>): Promise<number>;
|
|
109
|
+
/**
|
|
110
|
+
* Delete rows matching the query
|
|
111
|
+
*/
|
|
112
|
+
delete(): Promise<number>;
|
|
113
|
+
/**
|
|
114
|
+
* Get last insert ID (SQLite/MySQL only)
|
|
115
|
+
*/
|
|
116
|
+
private getLastInsertId;
|
|
117
|
+
}
|
|
118
|
+
/**
|
|
119
|
+
* Factory function to create a query builder
|
|
120
|
+
*/
|
|
121
|
+
export declare function query<T extends Record<string, unknown> = Record<string, unknown>>(db: Database, table: string): OrmQueryBuilder<T>;
|
|
122
|
+
//# sourceMappingURL=builder.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"builder.d.ts","sourceRoot":"","sources":["../../../src/database/orm/builder.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Cast Registry and Built-in Casts
|
|
3
|
+
*/
|
|
4
|
+
import type { CastDefinition } from "./types";
|
|
5
|
+
export type { CastDefinition, CastObject, BuiltInCastName } from "./types";
|
|
6
|
+
export declare class CastRegistry {
|
|
7
|
+
/**
|
|
8
|
+
* Deserialize a value from database using a cast definition
|
|
9
|
+
*/
|
|
10
|
+
static deserialize(castDef: CastDefinition, value: unknown): unknown;
|
|
11
|
+
/**
|
|
12
|
+
* Serialize a value to database using a cast definition
|
|
13
|
+
*/
|
|
14
|
+
static serialize(castDef: CastDefinition, value: unknown): unknown;
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/database/orm/casts/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAc,MAAM,SAAS,CAAC;AAE1D,YAAY,EAAE,cAAc,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AA+F3E,qBAAa,YAAY;IACxB;;OAEG;IACH,MAAM,CAAC,WAAW,CAAC,OAAO,EAAE,cAAc,EAAE,KAAK,EAAE,OAAO,GAAG,OAAO;IAWpE;;OAEG;IACH,MAAM,CAAC,SAAS,CAAC,OAAO,EAAE,cAAc,EAAE,KAAK,EAAE,OAAO,GAAG,OAAO;CAUlE"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Cast Type Definitions
|
|
3
|
+
*/
|
|
4
|
+
export type BuiltInCastName = "json" | "boolean" | "integer" | "float" | "date" | "datetime" | "timestamp";
|
|
5
|
+
export interface CastObject {
|
|
6
|
+
/**
|
|
7
|
+
* Transform value from database to model attribute
|
|
8
|
+
*/
|
|
9
|
+
get(value: unknown): unknown;
|
|
10
|
+
/**
|
|
11
|
+
* Transform value from model attribute to database
|
|
12
|
+
*/
|
|
13
|
+
set(value: unknown): unknown;
|
|
14
|
+
}
|
|
15
|
+
export type CastDefinition = BuiltInCastName | CastObject;
|
|
16
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/database/orm/casts/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,MAAM,eAAe,GACxB,MAAM,GACN,SAAS,GACT,SAAS,GACT,OAAO,GACP,MAAM,GACN,UAAU,GACV,WAAW,CAAC;AAEf,MAAM,WAAW,UAAU;IAC1B;;OAEG;IACH,GAAG,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC;IAC7B;;OAEG;IACH,GAAG,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC;CAC7B;AAED,MAAM,MAAM,cAAc,GAAG,eAAe,GAAG,UAAU,CAAC"}
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SQL Query Compiler
|
|
3
|
+
*
|
|
4
|
+
* Converts a QueryState into SQL strings and parameters,
|
|
5
|
+
* handling driver differences (PostgreSQL $1 vs SQLite/MySQL ?)
|
|
6
|
+
*/
|
|
7
|
+
export type SqlDialect = "postgresql" | "mysql" | "sqlite";
|
|
8
|
+
export interface CompiledQuery {
|
|
9
|
+
sql: string;
|
|
10
|
+
params: unknown[];
|
|
11
|
+
}
|
|
12
|
+
export interface WhereClause {
|
|
13
|
+
type: "and" | "or";
|
|
14
|
+
column?: string;
|
|
15
|
+
operator?: string;
|
|
16
|
+
value?: unknown;
|
|
17
|
+
raw?: string;
|
|
18
|
+
rawParams?: unknown[];
|
|
19
|
+
nested?: WhereClause[];
|
|
20
|
+
}
|
|
21
|
+
export interface OrderClause {
|
|
22
|
+
column: string;
|
|
23
|
+
direction: "ASC" | "DESC";
|
|
24
|
+
}
|
|
25
|
+
export interface JoinClause {
|
|
26
|
+
type: "INNER" | "LEFT" | "RIGHT" | "CROSS";
|
|
27
|
+
table: string;
|
|
28
|
+
on: string;
|
|
29
|
+
}
|
|
30
|
+
export interface QueryState {
|
|
31
|
+
table: string;
|
|
32
|
+
alias?: string;
|
|
33
|
+
selects: string[];
|
|
34
|
+
wheres: WhereClause[];
|
|
35
|
+
orders: OrderClause[];
|
|
36
|
+
joins: JoinClause[];
|
|
37
|
+
limitVal?: number;
|
|
38
|
+
offsetVal?: number;
|
|
39
|
+
groupBys: string[];
|
|
40
|
+
havings: string[];
|
|
41
|
+
distinct: boolean;
|
|
42
|
+
lockMode?: "share" | "update";
|
|
43
|
+
}
|
|
44
|
+
export declare class QueryCompiler {
|
|
45
|
+
private dialect;
|
|
46
|
+
private paramIndex;
|
|
47
|
+
private params;
|
|
48
|
+
constructor(dialect: SqlDialect);
|
|
49
|
+
/**
|
|
50
|
+
* Reset state for a new compilation
|
|
51
|
+
*/
|
|
52
|
+
private reset;
|
|
53
|
+
/**
|
|
54
|
+
* Add a parameter and return the placeholder for this dialect
|
|
55
|
+
*/
|
|
56
|
+
private addParam;
|
|
57
|
+
/**
|
|
58
|
+
* Compile a SELECT query
|
|
59
|
+
*/
|
|
60
|
+
compileSelect(state: QueryState): CompiledQuery;
|
|
61
|
+
/**
|
|
62
|
+
* Compile WHERE clauses into SQL
|
|
63
|
+
*/
|
|
64
|
+
private compileWheres;
|
|
65
|
+
/**
|
|
66
|
+
* Compile an INSERT query
|
|
67
|
+
*/
|
|
68
|
+
compileInsert(table: string, data: Record<string, unknown>): CompiledQuery;
|
|
69
|
+
/**
|
|
70
|
+
* Compile a batch INSERT query
|
|
71
|
+
*/
|
|
72
|
+
compileBatchInsert(table: string, rows: Record<string, unknown>[]): CompiledQuery;
|
|
73
|
+
/**
|
|
74
|
+
* Compile an UPDATE query
|
|
75
|
+
*/
|
|
76
|
+
compileUpdate(state: QueryState, data: Record<string, unknown>): CompiledQuery;
|
|
77
|
+
/**
|
|
78
|
+
* Compile a DELETE query
|
|
79
|
+
*/
|
|
80
|
+
compileDelete(state: QueryState): CompiledQuery;
|
|
81
|
+
/**
|
|
82
|
+
* Compile a COUNT query
|
|
83
|
+
*/
|
|
84
|
+
compileCount(state: QueryState, column?: string): CompiledQuery;
|
|
85
|
+
/**
|
|
86
|
+
* Compile an EXISTS query
|
|
87
|
+
*/
|
|
88
|
+
compileExists(state: QueryState): CompiledQuery;
|
|
89
|
+
}
|
|
90
|
+
//# sourceMappingURL=compiler.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"compiler.d.ts","sourceRoot":"","sources":["../../../src/database/orm/compiler.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,MAAM,MAAM,UAAU,GAAG,YAAY,GAAG,OAAO,GAAG,QAAQ,CAAC;AAE3D,MAAM,WAAW,aAAa;IAC7B,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,OAAO,EAAE,CAAC;CAClB;AAED,MAAM,WAAW,WAAW;IAC3B,IAAI,EAAE,KAAK,GAAG,IAAI,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,OAAO,EAAE,CAAC;IACtB,MAAM,CAAC,EAAE,WAAW,EAAE,CAAC;CACvB;AAED,MAAM,WAAW,WAAW;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,KAAK,GAAG,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,UAAU;IAC1B,IAAI,EAAE,OAAO,GAAG,MAAM,GAAG,OAAO,GAAG,OAAO,CAAC;IAC3C,KAAK,EAAE,MAAM,CAAC;IACd,EAAE,EAAE,MAAM,CAAC;CACX;AAED,MAAM,WAAW,UAAU;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,MAAM,EAAE,WAAW,EAAE,CAAC;IACtB,MAAM,EAAE,WAAW,EAAE,CAAC;IACtB,KAAK,EAAE,UAAU,EAAE,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,QAAQ,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,OAAO,GAAG,QAAQ,CAAC;CAC9B;AAED,qBAAa,aAAa;IAIb,OAAO,CAAC,OAAO;IAH3B,OAAO,CAAC,UAAU,CAAK;IACvB,OAAO,CAAC,MAAM,CAAiB;gBAEX,OAAO,EAAE,UAAU;IAEvC;;OAEG;IACH,OAAO,CAAC,KAAK;IAKb;;OAEG;IACH,OAAO,CAAC,QAAQ;IAShB;;OAEG;IACH,aAAa,CAAC,KAAK,EAAE,UAAU,GAAG,aAAa;IAwD/C;;OAEG;IACH,OAAO,CAAC,aAAa;IA8CrB;;OAEG;IACH,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,aAAa;IAa1E;;OAEG;IACH,kBAAkB,CACjB,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,GAC7B,aAAa;IAsBhB;;OAEG;IACH,aAAa,CACZ,KAAK,EAAE,UAAU,EACjB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC3B,aAAa;IAkBhB;;OAEG;IACH,aAAa,CAAC,KAAK,EAAE,UAAU,GAAG,aAAa;IAY/C;;OAEG;IACH,YAAY,CAAC,KAAK,EAAE,UAAU,EAAE,MAAM,SAAM,GAAG,aAAa;IAmB5D;;OAEG;IACH,aAAa,CAAC,KAAK,EAAE,UAAU,GAAG,aAAa;CAW/C"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Model Hooks / Lifecycle Events
|
|
3
|
+
*
|
|
4
|
+
* Provides lifecycle callbacks for model events:
|
|
5
|
+
* creating, created, updating, updated, saving, saved,
|
|
6
|
+
* deleting, deleted, restoring, restored
|
|
7
|
+
*/
|
|
8
|
+
export type ModelHookName = "creating" | "created" | "updating" | "updated" | "saving" | "saved" | "deleting" | "deleted" | "restoring" | "restored";
|
|
9
|
+
export type ModelHookCallback<M> = (model: M) => void | Promise<void> | boolean | Promise<boolean>;
|
|
10
|
+
/**
|
|
11
|
+
* Model hook registry for a specific model class
|
|
12
|
+
*/
|
|
13
|
+
export declare class HookRunner<M> {
|
|
14
|
+
private modelClass;
|
|
15
|
+
private hooks;
|
|
16
|
+
constructor(modelClass: typeof Model);
|
|
17
|
+
/**
|
|
18
|
+
* Initialize hooks from model class static definitions
|
|
19
|
+
*/
|
|
20
|
+
private initializeHooks;
|
|
21
|
+
/**
|
|
22
|
+
* Register a hook callback
|
|
23
|
+
*/
|
|
24
|
+
on(hookName: ModelHookName, callback: ModelHookCallback<M>): void;
|
|
25
|
+
/**
|
|
26
|
+
* Run all callbacks for a hook
|
|
27
|
+
* Returns false if any callback explicitly returns false (to abort operation)
|
|
28
|
+
*/
|
|
29
|
+
run(hookName: ModelHookName, model: M): Promise<boolean>;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Placeholder to avoid circular dependency issues
|
|
33
|
+
*/
|
|
34
|
+
export declare abstract class Model {
|
|
35
|
+
private static hookRegistry;
|
|
36
|
+
/**
|
|
37
|
+
* Get or create the hook registry for this model class
|
|
38
|
+
*/
|
|
39
|
+
private static getHookRegistry;
|
|
40
|
+
/**
|
|
41
|
+
* Register a hook callback on the model class
|
|
42
|
+
*/
|
|
43
|
+
static on<M extends Model>(this: {
|
|
44
|
+
new (): M;
|
|
45
|
+
} & typeof Model, hookName: ModelHookName, callback: ModelHookCallback<M>): void;
|
|
46
|
+
/**
|
|
47
|
+
* Get all callbacks for a hook
|
|
48
|
+
*/
|
|
49
|
+
static getHookCallbacks<M extends Model>(this: {
|
|
50
|
+
new (): M;
|
|
51
|
+
} & typeof Model, hookName: ModelHookName): ModelHookCallback<M>[];
|
|
52
|
+
}
|
|
53
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/database/orm/hooks/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,MAAM,MAAM,aAAa,GACtB,UAAU,GACV,SAAS,GACT,UAAU,GACV,SAAS,GACT,QAAQ,GACR,OAAO,GACP,UAAU,GACV,SAAS,GACT,WAAW,GACX,UAAU,CAAC;AAEd,MAAM,MAAM,iBAAiB,CAAC,CAAC,IAAI,CAClC,KAAK,EAAE,CAAC,KACJ,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;AAEvD;;GAEG;AACH,qBAAa,UAAU,CAAC,CAAC;IAGZ,OAAO,CAAC,UAAU;IAF9B,OAAO,CAAC,KAAK,CAAyD;gBAElD,UAAU,EAAE,OAAO,KAAK;IAI5C;;OAEG;IACH,OAAO,CAAC,eAAe;IAKvB;;OAEG;IACH,EAAE,CAAC,QAAQ,EAAE,aAAa,EAAE,QAAQ,EAAE,iBAAiB,CAAC,CAAC,CAAC,GAAG,IAAI;IAOjE;;;OAGG;IACG,GAAG,CAAC,QAAQ,EAAE,aAAa,EAAE,KAAK,EAAE,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC;CAY9D;AAED;;GAEG;AACH,8BAAsB,KAAK;IAC1B,OAAO,CAAC,MAAM,CAAC,YAAY,CAA8C;IAEzE;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,eAAe;IAS9B;;OAEG;IACH,MAAM,CAAC,EAAE,CAAC,CAAC,SAAS,KAAK,EACxB,IAAI,EAAE;QAAE,QAAQ,CAAC,CAAA;KAAE,GAAG,OAAO,KAAK,EAClC,QAAQ,EAAE,aAAa,EACvB,QAAQ,EAAE,iBAAiB,CAAC,CAAC,CAAC,GAC5B,IAAI;IAQP;;OAEG;IACH,MAAM,CAAC,gBAAgB,CAAC,CAAC,SAAS,KAAK,EACtC,IAAI,EAAE;QAAE,QAAQ,CAAC,CAAA;KAAE,GAAG,OAAO,KAAK,EAClC,QAAQ,EAAE,aAAa,GACrB,iBAAiB,CAAC,CAAC,CAAC,EAAE;CAIzB"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Bueno ORM
|
|
3
|
+
*
|
|
4
|
+
* Eloquent-inspired ORM for the Bueno framework.
|
|
5
|
+
* Provides Model, QueryBuilder, relationships, and lifecycle management.
|
|
6
|
+
*/
|
|
7
|
+
export { OrmQueryBuilder, query } from "./builder";
|
|
8
|
+
export type { PaginationResult } from "./builder";
|
|
9
|
+
export { Model, ModelNotFoundError, ModelOperationAbortedError, ModelQueryBuilder, } from "./model";
|
|
10
|
+
export { setDefaultDatabase, getDefaultDatabase, registerModelDatabase, getModelDatabase, clearModelDatabaseRegistry, clearDefaultDatabase, } from "./model-registry";
|
|
11
|
+
export { Relationship, HasOne, HasMany, BelongsTo, BelongsToMany, } from "./relationships";
|
|
12
|
+
export type { RelationshipOptions } from "./relationships/base";
|
|
13
|
+
export { CastRegistry } from "./casts";
|
|
14
|
+
export type { CastDefinition, CastObject, BuiltInCastName } from "./casts";
|
|
15
|
+
export { ScopeRegistry, SoftDeleteScope } from "./scopes";
|
|
16
|
+
export type { ScopeDefinition } from "./scopes";
|
|
17
|
+
export { HookRunner } from "./hooks";
|
|
18
|
+
export type { ModelHookName, ModelHookCallback } from "./hooks";
|
|
19
|
+
export { QueryCompiler } from "./compiler";
|
|
20
|
+
export type { SqlDialect, CompiledQuery, WhereClause, OrderClause, JoinClause, QueryState, } from "./compiler";
|
|
21
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/database/orm/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,eAAe,EAAE,KAAK,EAAE,MAAM,WAAW,CAAC;AACnD,YAAY,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAGlD,OAAO,EACN,KAAK,EACL,kBAAkB,EAClB,0BAA0B,EAC1B,iBAAiB,GACjB,MAAM,SAAS,CAAC;AAGjB,OAAO,EACN,kBAAkB,EAClB,kBAAkB,EAClB,qBAAqB,EACrB,gBAAgB,EAChB,0BAA0B,EAC1B,oBAAoB,GACpB,MAAM,kBAAkB,CAAC;AAG1B,OAAO,EACN,YAAY,EACZ,MAAM,EACN,OAAO,EACP,SAAS,EACT,aAAa,GACb,MAAM,iBAAiB,CAAC;AACzB,YAAY,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAGhE,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,YAAY,EAAE,cAAc,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAG3E,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAC1D,YAAY,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAGhD,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,YAAY,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAGhE,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAC3C,YAAY,EACX,UAAU,EACV,aAAa,EACb,WAAW,EACX,WAAW,EACX,UAAU,EACV,UAAU,GACV,MAAM,YAAY,CAAC"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Model Registry
|
|
3
|
+
*
|
|
4
|
+
* Global registry mapping model names to their Database instances.
|
|
5
|
+
* Allows per-model connection selection and a default connection fallback.
|
|
6
|
+
*/
|
|
7
|
+
import type { Database } from "../index";
|
|
8
|
+
/**
|
|
9
|
+
* Set the default database for all models
|
|
10
|
+
*/
|
|
11
|
+
export declare function setDefaultDatabase(db: Database): void;
|
|
12
|
+
/**
|
|
13
|
+
* Get the default database
|
|
14
|
+
*/
|
|
15
|
+
export declare function getDefaultDatabase(): Database;
|
|
16
|
+
/**
|
|
17
|
+
* Register a database connection for a specific model by name
|
|
18
|
+
*/
|
|
19
|
+
export declare function registerModelDatabase(modelName: string, db: Database): void;
|
|
20
|
+
/**
|
|
21
|
+
* Get the database for a model by name
|
|
22
|
+
* Falls back to default database if model-specific one not registered
|
|
23
|
+
*/
|
|
24
|
+
export declare function getModelDatabase(modelName: string): Database;
|
|
25
|
+
/**
|
|
26
|
+
* Clear all model database registrations (mainly for testing)
|
|
27
|
+
*/
|
|
28
|
+
export declare function clearModelDatabaseRegistry(): void;
|
|
29
|
+
/**
|
|
30
|
+
* Clear the default database (mainly for testing)
|
|
31
|
+
*/
|
|
32
|
+
export declare function clearDefaultDatabase(): void;
|
|
33
|
+
//# sourceMappingURL=model-registry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"model-registry.d.ts","sourceRoot":"","sources":["../../../src/database/orm/model-registry.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AAKzC;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,EAAE,EAAE,QAAQ,GAAG,IAAI,CAErD;AAED;;GAEG;AACH,wBAAgB,kBAAkB,IAAI,QAAQ,CAO7C;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,SAAS,EAAE,MAAM,EAAE,EAAE,EAAE,QAAQ,GAAG,IAAI,CAE3E;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,QAAQ,CAE5D;AAED;;GAEG;AACH,wBAAgB,0BAA0B,IAAI,IAAI,CAEjD;AAED;;GAEG;AACH,wBAAgB,oBAAoB,IAAI,IAAI,CAE3C"}
|
|
@@ -0,0 +1,245 @@
|
|
|
1
|
+
import { OrmQueryBuilder } from "./builder";
|
|
2
|
+
import { type CastDefinition } from "./casts";
|
|
3
|
+
import { type ModelHookCallback, type ModelHookName } from "./hooks";
|
|
4
|
+
import { BelongsTo, BelongsToMany, HasMany, HasOne } from "./relationships";
|
|
5
|
+
export declare class ModelNotFoundError extends Error {
|
|
6
|
+
constructor(message: string);
|
|
7
|
+
}
|
|
8
|
+
export declare class ModelOperationAbortedError extends Error {
|
|
9
|
+
constructor(message: string);
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Base Model class
|
|
13
|
+
*
|
|
14
|
+
* Generic over TAttributes (the shape of model attributes)
|
|
15
|
+
*/
|
|
16
|
+
export declare abstract class Model<TAttributes extends Record<string, unknown> = Record<string, unknown>> {
|
|
17
|
+
static readonly table: string;
|
|
18
|
+
static readonly primaryKey: string;
|
|
19
|
+
static readonly timestamps: boolean;
|
|
20
|
+
static readonly createdAtColumn: string;
|
|
21
|
+
static readonly updatedAtColumn: string;
|
|
22
|
+
static readonly softDeletes: boolean;
|
|
23
|
+
static readonly deletedAtColumn: string;
|
|
24
|
+
static readonly fillable: string[];
|
|
25
|
+
static readonly guarded: string[];
|
|
26
|
+
static readonly casts: Record<string, CastDefinition>;
|
|
27
|
+
private static scopeRegistry;
|
|
28
|
+
private static hookRegistry;
|
|
29
|
+
protected _attributes: TAttributes;
|
|
30
|
+
protected _original: TAttributes;
|
|
31
|
+
protected _relations: Map<string, unknown>;
|
|
32
|
+
protected _exists: boolean;
|
|
33
|
+
protected _isDirty: boolean;
|
|
34
|
+
constructor(attributes?: Partial<TAttributes>);
|
|
35
|
+
/**
|
|
36
|
+
* Create a query builder for this model
|
|
37
|
+
*/
|
|
38
|
+
static query<M extends Model>(this: {
|
|
39
|
+
new (): M;
|
|
40
|
+
} & typeof Model): ModelQueryBuilder<M>;
|
|
41
|
+
/**
|
|
42
|
+
* Find a model by ID
|
|
43
|
+
*/
|
|
44
|
+
static find<M extends Model>(this: {
|
|
45
|
+
new (): M;
|
|
46
|
+
} & typeof Model, id: unknown): Promise<M | null>;
|
|
47
|
+
/**
|
|
48
|
+
* Find a model by ID or throw
|
|
49
|
+
*/
|
|
50
|
+
static findOrFail<M extends Model>(this: {
|
|
51
|
+
new (): M;
|
|
52
|
+
} & typeof Model, id: unknown): Promise<M>;
|
|
53
|
+
/**
|
|
54
|
+
* Create a where clause
|
|
55
|
+
*/
|
|
56
|
+
static where<M extends Model>(this: {
|
|
57
|
+
new (): M;
|
|
58
|
+
} & typeof Model, column: string, operator: unknown, value?: unknown): ModelQueryBuilder<M>;
|
|
59
|
+
/**
|
|
60
|
+
* Get all records
|
|
61
|
+
*/
|
|
62
|
+
static all<M extends Model>(this: {
|
|
63
|
+
new (): M;
|
|
64
|
+
} & typeof Model): Promise<M[]>;
|
|
65
|
+
/**
|
|
66
|
+
* Create and persist a new model
|
|
67
|
+
*/
|
|
68
|
+
static create<M extends Model>(this: {
|
|
69
|
+
new (): M;
|
|
70
|
+
} & typeof Model, data: Record<string, unknown>): Promise<M>;
|
|
71
|
+
/**
|
|
72
|
+
* First or create — get or create based on conditions
|
|
73
|
+
*/
|
|
74
|
+
static firstOrCreate<M extends Model>(this: {
|
|
75
|
+
new (): M;
|
|
76
|
+
} & typeof Model, conditions: Partial<TAttributes>, values?: Partial<TAttributes>): Promise<M>;
|
|
77
|
+
/**
|
|
78
|
+
* Update or create — update or create based on conditions
|
|
79
|
+
*/
|
|
80
|
+
static updateOrCreate<M extends Model>(this: {
|
|
81
|
+
new (): M;
|
|
82
|
+
} & typeof Model, conditions: Partial<TAttributes>, values: Partial<TAttributes>): Promise<M>;
|
|
83
|
+
/**
|
|
84
|
+
* Get an attribute value
|
|
85
|
+
*/
|
|
86
|
+
getAttribute<K extends keyof TAttributes>(key: K): TAttributes[K];
|
|
87
|
+
/**
|
|
88
|
+
* Set an attribute value
|
|
89
|
+
*/
|
|
90
|
+
setAttribute<K extends keyof TAttributes>(key: K, value: TAttributes[K]): void;
|
|
91
|
+
/**
|
|
92
|
+
* Fill attributes from data (respects fillable/guarded)
|
|
93
|
+
*/
|
|
94
|
+
fill(data: Partial<TAttributes>): this;
|
|
95
|
+
/**
|
|
96
|
+
* Force fill (bypass fillable/guarded)
|
|
97
|
+
*/
|
|
98
|
+
forceFill(data: Partial<TAttributes>): this;
|
|
99
|
+
/**
|
|
100
|
+
* Convert to JSON
|
|
101
|
+
*/
|
|
102
|
+
toJSON(): TAttributes;
|
|
103
|
+
/**
|
|
104
|
+
* Convert to plain object
|
|
105
|
+
*/
|
|
106
|
+
toObject(): TAttributes;
|
|
107
|
+
/**
|
|
108
|
+
* Check if model or specific attribute is dirty
|
|
109
|
+
*/
|
|
110
|
+
isDirty(key?: string): boolean;
|
|
111
|
+
/**
|
|
112
|
+
* Check if model or specific attribute is clean
|
|
113
|
+
*/
|
|
114
|
+
isClean(key?: string): boolean;
|
|
115
|
+
/**
|
|
116
|
+
* Get dirty attributes
|
|
117
|
+
*/
|
|
118
|
+
getDirty(): Partial<TAttributes>;
|
|
119
|
+
/**
|
|
120
|
+
* Get original attribute values
|
|
121
|
+
*/
|
|
122
|
+
getOriginal<K extends keyof TAttributes>(key?: K): TAttributes[K] | Partial<TAttributes>;
|
|
123
|
+
/**
|
|
124
|
+
* Save the model (create or update)
|
|
125
|
+
*/
|
|
126
|
+
save(): Promise<void>;
|
|
127
|
+
/**
|
|
128
|
+
* Delete the model (soft or hard)
|
|
129
|
+
*/
|
|
130
|
+
delete(): Promise<void>;
|
|
131
|
+
/**
|
|
132
|
+
* Restore a soft-deleted model
|
|
133
|
+
*/
|
|
134
|
+
restore(): Promise<void>;
|
|
135
|
+
/**
|
|
136
|
+
* Refresh the model from the database
|
|
137
|
+
*/
|
|
138
|
+
refresh(): Promise<void>;
|
|
139
|
+
/**
|
|
140
|
+
* Get a fresh instance of this model
|
|
141
|
+
*/
|
|
142
|
+
fresh(): Promise<this>;
|
|
143
|
+
/**
|
|
144
|
+
* Define a one-to-one relationship
|
|
145
|
+
*/
|
|
146
|
+
hasOne<TRelated extends Model>(relatedClass: {
|
|
147
|
+
new (): TRelated;
|
|
148
|
+
} & typeof Model, foreignKey: string, localKey?: string): HasOne<TRelated>;
|
|
149
|
+
/**
|
|
150
|
+
* Define a one-to-many relationship
|
|
151
|
+
*/
|
|
152
|
+
hasMany<TRelated extends Model>(relatedClass: {
|
|
153
|
+
new (): TRelated;
|
|
154
|
+
} & typeof Model, foreignKey: string, localKey?: string): HasMany<TRelated>;
|
|
155
|
+
/**
|
|
156
|
+
* Define the inverse of a one-to-one or one-to-many relationship
|
|
157
|
+
*/
|
|
158
|
+
belongsTo<TRelated extends Model>(relatedClass: {
|
|
159
|
+
new (): TRelated;
|
|
160
|
+
} & typeof Model, foreignKey: string, ownerKey?: string): BelongsTo<TRelated>;
|
|
161
|
+
/**
|
|
162
|
+
* Define a many-to-many relationship
|
|
163
|
+
*/
|
|
164
|
+
belongsToMany<TRelated extends Model>(relatedClass: {
|
|
165
|
+
new (): TRelated;
|
|
166
|
+
} & typeof Model, pivotTable: string, foreignPivotKey: string, relatedPivotKey: string, parentKey?: string, relatedKey?: string): BelongsToMany<TRelated>;
|
|
167
|
+
/**
|
|
168
|
+
* Create model instances from database rows
|
|
169
|
+
*/
|
|
170
|
+
static hydrate<M extends Model>(this: {
|
|
171
|
+
new (): M;
|
|
172
|
+
} & typeof Model, rows: Record<string, unknown>[]): M[];
|
|
173
|
+
/**
|
|
174
|
+
* Register a hook callback
|
|
175
|
+
*/
|
|
176
|
+
static on<M extends Model>(this: {
|
|
177
|
+
new (): M;
|
|
178
|
+
} & typeof Model, hookName: ModelHookName, callback: ModelHookCallback<M>): void;
|
|
179
|
+
/**
|
|
180
|
+
* Get all callbacks for a hook
|
|
181
|
+
*/
|
|
182
|
+
static getHookCallbacks<M extends Model>(this: {
|
|
183
|
+
new (): M;
|
|
184
|
+
} & typeof Model, hookName: ModelHookName): ModelHookCallback<M>[];
|
|
185
|
+
/**
|
|
186
|
+
* Called when model class is first used (for static initialization)
|
|
187
|
+
*/
|
|
188
|
+
static booting(): void;
|
|
189
|
+
}
|
|
190
|
+
/**
|
|
191
|
+
* ModelQueryBuilder — extended OrmQueryBuilder with Model-specific features
|
|
192
|
+
*/
|
|
193
|
+
export declare class ModelQueryBuilder<M extends Model> extends OrmQueryBuilder<any> {
|
|
194
|
+
private modelClass;
|
|
195
|
+
private eagerLoads;
|
|
196
|
+
constructor(modelClass: {
|
|
197
|
+
new (): M;
|
|
198
|
+
} & typeof Model);
|
|
199
|
+
/**
|
|
200
|
+
* Eager load a relationship
|
|
201
|
+
*/
|
|
202
|
+
with(relation: string, callback?: (q: OrmQueryBuilder<any>) => void): this;
|
|
203
|
+
/**
|
|
204
|
+
* Override get() to hydrate Model instances
|
|
205
|
+
*/
|
|
206
|
+
get(): Promise<M[]>;
|
|
207
|
+
/**
|
|
208
|
+
* Override first() to hydrate Model instance
|
|
209
|
+
* Note: We must fetch raw data directly to avoid double-hydration
|
|
210
|
+
* (since get() is overridden to already hydrate)
|
|
211
|
+
*/
|
|
212
|
+
first(): Promise<M | null>;
|
|
213
|
+
/**
|
|
214
|
+
* Override paginate() to return hydrated Model instances
|
|
215
|
+
* Note: super.paginate() calls get() which already hydrates,
|
|
216
|
+
* so we just need to return the result as-is
|
|
217
|
+
*/
|
|
218
|
+
paginate(page: number, limit: number): Promise<{
|
|
219
|
+
data: any[];
|
|
220
|
+
total: number;
|
|
221
|
+
page: number;
|
|
222
|
+
limit: number;
|
|
223
|
+
totalPages: number;
|
|
224
|
+
}>;
|
|
225
|
+
/**
|
|
226
|
+
* Find first or create — find by conditions or create with values
|
|
227
|
+
*/
|
|
228
|
+
firstOrCreate(conditions: Record<string, unknown>, values?: Record<string, unknown>): Promise<M>;
|
|
229
|
+
/**
|
|
230
|
+
* Update or create — update if exists or create if not
|
|
231
|
+
*/
|
|
232
|
+
updateOrCreate(conditions: Record<string, unknown>, values: Record<string, unknown>): Promise<M>;
|
|
233
|
+
/**
|
|
234
|
+
* Load eager relationships
|
|
235
|
+
* Supports nested dot-notation like "posts.comments"
|
|
236
|
+
*/
|
|
237
|
+
private loadRelation;
|
|
238
|
+
/**
|
|
239
|
+
* Support local scopes via Proxy
|
|
240
|
+
*/
|
|
241
|
+
static createScoped<M extends Model>(modelClass: {
|
|
242
|
+
new (): M;
|
|
243
|
+
} & typeof Model): ModelQueryBuilder<M>;
|
|
244
|
+
}
|
|
245
|
+
//# sourceMappingURL=model.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"model.d.ts","sourceRoot":"","sources":["../../../src/database/orm/model.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAC5C,OAAO,EAAE,KAAK,cAAc,EAAgB,MAAM,SAAS,CAAC;AAC5D,OAAO,EAEN,KAAK,iBAAiB,EACtB,KAAK,aAAa,EAClB,MAAM,SAAS,CAAC;AAEjB,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAG5E,qBAAa,kBAAmB,SAAQ,KAAK;gBAChC,OAAO,EAAE,MAAM;CAI3B;AAED,qBAAa,0BAA2B,SAAQ,KAAK;gBACxC,OAAO,EAAE,MAAM;CAI3B;AAED;;;;GAIG;AACH,8BAAsB,KAAK,CAC1B,WAAW,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAIrE,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IAC9B,MAAM,CAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAQ;IAC1C,MAAM,CAAC,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAQ;IAC3C,MAAM,CAAC,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAgB;IACvD,MAAM,CAAC,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAgB;IACvD,MAAM,CAAC,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAS;IAC7C,MAAM,CAAC,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAgB;IACvD,MAAM,CAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,CAAM;IACxC,MAAM,CAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,CAAM;IACvC,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAM;IAE3D,OAAO,CAAC,MAAM,CAAC,aAAa,CAAyC;IACrE,OAAO,CAAC,MAAM,CAAC,YAAY,CAGvB;IAIJ,SAAS,CAAC,WAAW,EAAE,WAAW,CAAqB;IACvD,SAAS,CAAC,SAAS,EAAE,WAAW,CAAqB;IACrD,SAAS,CAAC,UAAU,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAa;IACvD,SAAS,CAAC,OAAO,UAAS;IAC1B,SAAS,CAAC,QAAQ,UAAS;gBAIf,UAAU,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC;IAoD7C;;OAEG;IACH,MAAM,CAAC,KAAK,CAAC,CAAC,SAAS,KAAK,EAC3B,IAAI,EAAE;QAAE,QAAQ,CAAC,CAAA;KAAE,GAAG,OAAO,KAAK,GAChC,iBAAiB,CAAC,CAAC,CAAC;IAIvB;;OAEG;WACU,IAAI,CAAC,CAAC,SAAS,KAAK,EAChC,IAAI,EAAE;QAAE,QAAQ,CAAC,CAAA;KAAE,GAAG,OAAO,KAAK,EAClC,EAAE,EAAE,OAAO,GACT,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC;IAIpB;;OAEG;WACU,UAAU,CAAC,CAAC,SAAS,KAAK,EACtC,IAAI,EAAE;QAAE,QAAQ,CAAC,CAAA;KAAE,GAAG,OAAO,KAAK,EAClC,EAAE,EAAE,OAAO,GACT,OAAO,CAAC,CAAC,CAAC;IAQb;;OAEG;IACH,MAAM,CAAC,KAAK,CAAC,CAAC,SAAS,KAAK,EAC3B,IAAI,EAAE;QAAE,QAAQ,CAAC,CAAA;KAAE,GAAG,OAAO,KAAK,EAClC,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,OAAO,EACjB,KAAK,CAAC,EAAE,OAAO,GACb,iBAAiB,CAAC,CAAC,CAAC;IAIvB;;OAEG;WACU,GAAG,CAAC,CAAC,SAAS,KAAK,EAC/B,IAAI,EAAE;QAAE,QAAQ,CAAC,CAAA;KAAE,GAAG,OAAO,KAAK,GAChC,OAAO,CAAC,CAAC,EAAE,CAAC;IAIf;;OAEG;WACU,MAAM,CAAC,CAAC,SAAS,KAAK,EAClC,IAAI,EAAE;QAAE,QAAQ,CAAC,CAAA;KAAE,GAAG,OAAO,KAAK,EAClC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC3B,OAAO,CAAC,CAAC,CAAC;IAQb;;OAEG;WACU,aAAa,CAAC,CAAC,SAAS,KAAK,EACzC,IAAI,EAAE;QAAE,QAAQ,CAAC,CAAA;KAAE,GAAG,OAAO,KAAK,EAClC,UAAU,EAAE,OAAO,CAAC,WAAW,CAAC,EAChC,MAAM,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC,GAC3B,OAAO,CAAC,CAAC,CAAC;IAYb;;OAEG;WACU,cAAc,CAAC,CAAC,SAAS,KAAK,EAC1C,IAAI,EAAE;QAAE,QAAQ,CAAC,CAAA;KAAE,GAAG,OAAO,KAAK,EAClC,UAAU,EAAE,OAAO,CAAC,WAAW,CAAC,EAChC,MAAM,EAAE,OAAO,CAAC,WAAW,CAAC,GAC1B,OAAO,CAAC,CAAC,CAAC;IAiBb;;OAEG;IACH,YAAY,CAAC,CAAC,SAAS,MAAM,WAAW,EAAE,GAAG,EAAE,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC;IAIjE;;OAEG;IACH,YAAY,CAAC,CAAC,SAAS,MAAM,WAAW,EACvC,GAAG,EAAE,CAAC,EACN,KAAK,EAAE,WAAW,CAAC,CAAC,CAAC,GACnB,IAAI;IAKP;;OAEG;IACH,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,WAAW,CAAC,GAAG,IAAI;IAkBtC;;OAEG;IACH,SAAS,CAAC,IAAI,EAAE,OAAO,CAAC,WAAW,CAAC,GAAG,IAAI;IAU3C;;OAEG;IACH,MAAM,IAAI,WAAW;IAIrB;;OAEG;IACH,QAAQ,IAAI,WAAW;IAMvB;;OAEG;IACH,OAAO,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO;IAU9B;;OAEG;IACH,OAAO,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO;IAI9B;;OAEG;IACH,QAAQ,IAAI,OAAO,CAAC,WAAW,CAAC;IAWhC;;OAEG;IACH,WAAW,CAAC,CAAC,SAAS,MAAM,WAAW,EACtC,GAAG,CAAC,EAAE,CAAC,GACL,WAAW,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,WAAW,CAAC;IASxC;;OAEG;IACG,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAiD3B;;OAEG;IACG,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;IAsB7B;;OAEG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAa9B;;OAEG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAW9B;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAQ5B;;OAEG;IACH,MAAM,CAAC,QAAQ,SAAS,KAAK,EAC5B,YAAY,EAAE;QAAE,QAAQ,QAAQ,CAAA;KAAE,GAAG,OAAO,KAAK,EACjD,UAAU,EAAE,MAAM,EAClB,QAAQ,CAAC,EAAE,MAAM,GACf,MAAM,CAAC,QAAQ,CAAC;IAInB;;OAEG;IACH,OAAO,CAAC,QAAQ,SAAS,KAAK,EAC7B,YAAY,EAAE;QAAE,QAAQ,QAAQ,CAAA;KAAE,GAAG,OAAO,KAAK,EACjD,UAAU,EAAE,MAAM,EAClB,QAAQ,CAAC,EAAE,MAAM,GACf,OAAO,CAAC,QAAQ,CAAC;IAIpB;;OAEG;IACH,SAAS,CAAC,QAAQ,SAAS,KAAK,EAC/B,YAAY,EAAE;QAAE,QAAQ,QAAQ,CAAA;KAAE,GAAG,OAAO,KAAK,EACjD,UAAU,EAAE,MAAM,EAClB,QAAQ,CAAC,EAAE,MAAM,GACf,SAAS,CAAC,QAAQ,CAAC;IAStB;;OAEG;IACH,aAAa,CAAC,QAAQ,SAAS,KAAK,EACnC,YAAY,EAAE;QAAE,QAAQ,QAAQ,CAAA;KAAE,GAAG,OAAO,KAAK,EACjD,UAAU,EAAE,MAAM,EAClB,eAAe,EAAE,MAAM,EACvB,eAAe,EAAE,MAAM,EACvB,SAAS,CAAC,EAAE,MAAM,EAClB,UAAU,CAAC,EAAE,MAAM,GACjB,aAAa,CAAC,QAAQ,CAAC;IAc1B;;OAEG;IACH,MAAM,CAAC,OAAO,CAAC,CAAC,SAAS,KAAK,EAC7B,IAAI,EAAE;QAAE,QAAQ,CAAC,CAAA;KAAE,GAAG,OAAO,KAAK,EAClC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,GAC7B,CAAC,EAAE;IAoBN;;OAEG;IACH,MAAM,CAAC,EAAE,CAAC,CAAC,SAAS,KAAK,EACxB,IAAI,EAAE;QAAE,QAAQ,CAAC,CAAA;KAAE,GAAG,OAAO,KAAK,EAClC,QAAQ,EAAE,aAAa,EACvB,QAAQ,EAAE,iBAAiB,CAAC,CAAC,CAAC,GAC5B,IAAI;IAWP;;OAEG;IACH,MAAM,CAAC,gBAAgB,CAAC,CAAC,SAAS,KAAK,EACtC,IAAI,EAAE;QAAE,QAAQ,CAAC,CAAA;KAAE,GAAG,OAAO,KAAK,EAClC,QAAQ,EAAE,aAAa,GACrB,iBAAiB,CAAC,CAAC,CAAC,EAAE;IAKzB;;OAEG;IACH,MAAM,CAAC,OAAO,IAAI,IAAI;CAGtB;AAED;;GAEG;AACH,qBAAa,iBAAiB,CAAC,CAAC,SAAS,KAAK,CAAE,SAAQ,eAAe,CAAC,GAAG,CAAC;IAC3E,OAAO,CAAC,UAAU,CAA+B;IACjD,OAAO,CAAC,UAAU,CACP;gBAEC,UAAU,EAAE;QAAE,QAAQ,CAAC,CAAA;KAAE,GAAG,OAAO,KAAK;IAMpD;;OAEG;IACH,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAC,EAAE,eAAe,CAAC,GAAG,CAAC,KAAK,IAAI,GAAG,IAAI;IAK1E;;OAEG;IACY,GAAG,IAAI,OAAO,CAAC,CAAC,EAAE,CAAC;IAYlC;;;;OAIG;IACY,KAAK,IAAI,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC;IAgBzC;;;;OAIG;IACY,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM;;;;;;;IAgBnD;;OAEG;IACG,aAAa,CAClB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACnC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC9B,OAAO,CAAC,CAAC,CAAC;IAgBb;;OAEG;IACG,cAAc,CACnB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACnC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC7B,OAAO,CAAC,CAAC,CAAC;IAqBb;;;OAGG;YACW,YAAY;IAoE1B;;OAEG;IACH,MAAM,CAAC,YAAY,CAAC,CAAC,SAAS,KAAK,EAClC,UAAU,EAAE;QAAE,QAAQ,CAAC,CAAA;KAAE,GAAG,OAAO,KAAK,GACtC,iBAAiB,CAAC,CAAC,CAAC;CAoBvB"}
|