@shohaghinfo/aerojs 0.1.0
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/AEROJS.md +12 -0
- package/AGENTS.md +709 -0
- package/LICENSE +21 -0
- package/README.md +1186 -0
- package/bin/aero.js +24 -0
- package/dist/application.d.ts +251 -0
- package/dist/application.d.ts.map +1 -0
- package/dist/application.js +658 -0
- package/dist/application.js.map +1 -0
- package/dist/audit/audit-trail.d.ts +122 -0
- package/dist/audit/audit-trail.d.ts.map +1 -0
- package/dist/audit/audit-trail.js +154 -0
- package/dist/audit/audit-trail.js.map +1 -0
- package/dist/auth/auth-manager.d.ts +95 -0
- package/dist/auth/auth-manager.d.ts.map +1 -0
- package/dist/auth/auth-manager.js +130 -0
- package/dist/auth/auth-manager.js.map +1 -0
- package/dist/auth/bouncer.d.ts +143 -0
- package/dist/auth/bouncer.d.ts.map +1 -0
- package/dist/auth/bouncer.js +243 -0
- package/dist/auth/bouncer.js.map +1 -0
- package/dist/auth/guards/api-token-guard.d.ts +68 -0
- package/dist/auth/guards/api-token-guard.d.ts.map +1 -0
- package/dist/auth/guards/api-token-guard.js +107 -0
- package/dist/auth/guards/api-token-guard.js.map +1 -0
- package/dist/auth/guards/guard.d.ts +35 -0
- package/dist/auth/guards/guard.d.ts.map +1 -0
- package/dist/auth/guards/guard.js +7 -0
- package/dist/auth/guards/guard.js.map +1 -0
- package/dist/auth/guards/jwt-guard.d.ts +64 -0
- package/dist/auth/guards/jwt-guard.d.ts.map +1 -0
- package/dist/auth/guards/jwt-guard.js +104 -0
- package/dist/auth/guards/jwt-guard.js.map +1 -0
- package/dist/auth/guards/session-guard.d.ts +57 -0
- package/dist/auth/guards/session-guard.d.ts.map +1 -0
- package/dist/auth/guards/session-guard.js +101 -0
- package/dist/auth/guards/session-guard.js.map +1 -0
- package/dist/auth/index.d.ts +2 -0
- package/dist/auth/index.d.ts.map +1 -0
- package/dist/auth/index.js +2 -0
- package/dist/auth/index.js.map +1 -0
- package/dist/auth/policy.d.ts +20 -0
- package/dist/auth/policy.d.ts.map +1 -0
- package/dist/auth/policy.js +49 -0
- package/dist/auth/policy.js.map +1 -0
- package/dist/body-parser.d.ts +40 -0
- package/dist/body-parser.d.ts.map +1 -0
- package/dist/body-parser.js +99 -0
- package/dist/body-parser.js.map +1 -0
- package/dist/cache/cache-driver.d.ts +43 -0
- package/dist/cache/cache-driver.d.ts.map +1 -0
- package/dist/cache/cache-driver.js +6 -0
- package/dist/cache/cache-driver.js.map +1 -0
- package/dist/cache/cache-manager.d.ts +44 -0
- package/dist/cache/cache-manager.d.ts.map +1 -0
- package/dist/cache/cache-manager.js +160 -0
- package/dist/cache/cache-manager.js.map +1 -0
- package/dist/cache/drivers/database-cache-driver.d.ts +18 -0
- package/dist/cache/drivers/database-cache-driver.d.ts.map +1 -0
- package/dist/cache/drivers/database-cache-driver.js +77 -0
- package/dist/cache/drivers/database-cache-driver.js.map +1 -0
- package/dist/cache/drivers/file-cache-driver.d.ts +21 -0
- package/dist/cache/drivers/file-cache-driver.d.ts.map +1 -0
- package/dist/cache/drivers/file-cache-driver.js +95 -0
- package/dist/cache/drivers/file-cache-driver.js.map +1 -0
- package/dist/cache/drivers/memory-cache-driver.d.ts +21 -0
- package/dist/cache/drivers/memory-cache-driver.d.ts.map +1 -0
- package/dist/cache/drivers/memory-cache-driver.js +82 -0
- package/dist/cache/drivers/memory-cache-driver.js.map +1 -0
- package/dist/cache/drivers/redis-cache-driver.d.ts +18 -0
- package/dist/cache/drivers/redis-cache-driver.d.ts.map +1 -0
- package/dist/cache/drivers/redis-cache-driver.js +95 -0
- package/dist/cache/drivers/redis-cache-driver.js.map +1 -0
- package/dist/cache/index.d.ts +7 -0
- package/dist/cache/index.d.ts.map +1 -0
- package/dist/cache/index.js +7 -0
- package/dist/cache/index.js.map +1 -0
- package/dist/cli/commands/init.d.ts +10 -0
- package/dist/cli/commands/init.d.ts.map +1 -0
- package/dist/cli/commands/init.js +471 -0
- package/dist/cli/commands/init.js.map +1 -0
- package/dist/cli/commands/make.d.ts +16 -0
- package/dist/cli/commands/make.d.ts.map +1 -0
- package/dist/cli/commands/make.js +157 -0
- package/dist/cli/commands/make.js.map +1 -0
- package/dist/cli/commands/new.d.ts +7 -0
- package/dist/cli/commands/new.d.ts.map +1 -0
- package/dist/cli/commands/new.js +175 -0
- package/dist/cli/commands/new.js.map +1 -0
- package/dist/cli/commands/vault.d.ts +7 -0
- package/dist/cli/commands/vault.d.ts.map +1 -0
- package/dist/cli/commands/vault.js +39 -0
- package/dist/cli/commands/vault.js.map +1 -0
- package/dist/cli/index.d.ts +8 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +8 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/cli/runner.d.ts +10 -0
- package/dist/cli/runner.d.ts.map +1 -0
- package/dist/cli/runner.js +207 -0
- package/dist/cli/runner.js.map +1 -0
- package/dist/cli/templates/ecommerce-erp.d.ts +6 -0
- package/dist/cli/templates/ecommerce-erp.d.ts.map +1 -0
- package/dist/cli/templates/ecommerce-erp.js +1760 -0
- package/dist/cli/templates/ecommerce-erp.js.map +1 -0
- package/dist/cli/templates/fullstack-templates.d.ts +17 -0
- package/dist/cli/templates/fullstack-templates.d.ts.map +1 -0
- package/dist/cli/templates/fullstack-templates.js +17 -0
- package/dist/cli/templates/fullstack-templates.js.map +1 -0
- package/dist/config/config.d.ts +25 -0
- package/dist/config/config.d.ts.map +1 -0
- package/dist/config/config.js +53 -0
- package/dist/config/config.js.map +1 -0
- package/dist/config/env-schema.d.ts +62 -0
- package/dist/config/env-schema.d.ts.map +1 -0
- package/dist/config/env-schema.js +203 -0
- package/dist/config/env-schema.js.map +1 -0
- package/dist/config/env.d.ts +31 -0
- package/dist/config/env.d.ts.map +1 -0
- package/dist/config/env.js +153 -0
- package/dist/config/env.js.map +1 -0
- package/dist/context.d.ts +181 -0
- package/dist/context.d.ts.map +1 -0
- package/dist/context.js +277 -0
- package/dist/context.js.map +1 -0
- package/dist/core/application-core.d.ts +79 -0
- package/dist/core/application-core.d.ts.map +1 -0
- package/dist/core/application-core.js +560 -0
- package/dist/core/application-core.js.map +1 -0
- package/dist/core/application.d.ts +121 -0
- package/dist/core/application.d.ts.map +1 -0
- package/dist/core/application.js +179 -0
- package/dist/core/application.js.map +1 -0
- package/dist/core/body-parser.d.ts +12 -0
- package/dist/core/body-parser.d.ts.map +1 -0
- package/dist/core/body-parser.js +85 -0
- package/dist/core/body-parser.js.map +1 -0
- package/dist/core/context.d.ts +94 -0
- package/dist/core/context.d.ts.map +1 -0
- package/dist/core/context.js +278 -0
- package/dist/core/context.js.map +1 -0
- package/dist/core/error-dashboard.d.ts +35 -0
- package/dist/core/error-dashboard.d.ts.map +1 -0
- package/dist/core/error-dashboard.js +481 -0
- package/dist/core/error-dashboard.js.map +1 -0
- package/dist/core/errors.d.ts +83 -0
- package/dist/core/errors.d.ts.map +1 -0
- package/dist/core/errors.js +117 -0
- package/dist/core/errors.js.map +1 -0
- package/dist/core/hooks.d.ts +39 -0
- package/dist/core/hooks.d.ts.map +1 -0
- package/dist/core/hooks.js +65 -0
- package/dist/core/hooks.js.map +1 -0
- package/dist/core/middleware.d.ts +15 -0
- package/dist/core/middleware.d.ts.map +1 -0
- package/dist/core/middleware.js +45 -0
- package/dist/core/middleware.js.map +1 -0
- package/dist/core/request.d.ts +50 -0
- package/dist/core/request.d.ts.map +1 -0
- package/dist/core/request.js +94 -0
- package/dist/core/request.js.map +1 -0
- package/dist/core/response.d.ts +49 -0
- package/dist/core/response.d.ts.map +1 -0
- package/dist/core/response.js +302 -0
- package/dist/core/response.js.map +1 -0
- package/dist/core/router.d.ts +58 -0
- package/dist/core/router.d.ts.map +1 -0
- package/dist/core/router.js +298 -0
- package/dist/core/router.js.map +1 -0
- package/dist/core/types.d.ts +70 -0
- package/dist/core/types.d.ts.map +1 -0
- package/dist/core/types.js +6 -0
- package/dist/core/types.js.map +1 -0
- package/dist/core/utils.d.ts +36 -0
- package/dist/core/utils.d.ts.map +1 -0
- package/dist/core/utils.js +108 -0
- package/dist/core/utils.js.map +1 -0
- package/dist/database/connection.d.ts +97 -0
- package/dist/database/connection.d.ts.map +1 -0
- package/dist/database/connection.js +251 -0
- package/dist/database/connection.js.map +1 -0
- package/dist/database/drizzle.d.ts +10 -0
- package/dist/database/drizzle.d.ts.map +1 -0
- package/dist/database/drizzle.js +13 -0
- package/dist/database/drizzle.js.map +1 -0
- package/dist/database/factory.d.ts +39 -0
- package/dist/database/factory.d.ts.map +1 -0
- package/dist/database/factory.js +74 -0
- package/dist/database/factory.js.map +1 -0
- package/dist/database/index.d.ts +16 -0
- package/dist/database/index.d.ts.map +1 -0
- package/dist/database/index.js +16 -0
- package/dist/database/index.js.map +1 -0
- package/dist/database/knex.d.ts +33 -0
- package/dist/database/knex.d.ts.map +1 -0
- package/dist/database/knex.js +123 -0
- package/dist/database/knex.js.map +1 -0
- package/dist/database/migrator.d.ts +29 -0
- package/dist/database/migrator.d.ts.map +1 -0
- package/dist/database/migrator.js +83 -0
- package/dist/database/migrator.js.map +1 -0
- package/dist/database/model-hooks.d.ts +61 -0
- package/dist/database/model-hooks.d.ts.map +1 -0
- package/dist/database/model-hooks.js +126 -0
- package/dist/database/model-hooks.js.map +1 -0
- package/dist/database/model.d.ts +279 -0
- package/dist/database/model.d.ts.map +1 -0
- package/dist/database/model.js +960 -0
- package/dist/database/model.js.map +1 -0
- package/dist/database/prisma.d.ts +13 -0
- package/dist/database/prisma.d.ts.map +1 -0
- package/dist/database/prisma.js +28 -0
- package/dist/database/prisma.js.map +1 -0
- package/dist/database/query-builder.d.ts +178 -0
- package/dist/database/query-builder.d.ts.map +1 -0
- package/dist/database/query-builder.js +607 -0
- package/dist/database/query-builder.js.map +1 -0
- package/dist/database/schema.d.ts +38 -0
- package/dist/database/schema.d.ts.map +1 -0
- package/dist/database/schema.js +134 -0
- package/dist/database/schema.js.map +1 -0
- package/dist/database/seeder.d.ts +24 -0
- package/dist/database/seeder.d.ts.map +1 -0
- package/dist/database/seeder.js +27 -0
- package/dist/database/seeder.js.map +1 -0
- package/dist/di/container.d.ts +52 -0
- package/dist/di/container.d.ts.map +1 -0
- package/dist/di/container.js +124 -0
- package/dist/di/container.js.map +1 -0
- package/dist/di/decorators.d.ts +17 -0
- package/dist/di/decorators.d.ts.map +1 -0
- package/dist/di/decorators.js +63 -0
- package/dist/di/decorators.js.map +1 -0
- package/dist/di/inject.d.ts +11 -0
- package/dist/di/inject.d.ts.map +1 -0
- package/dist/di/inject.js +30 -0
- package/dist/di/inject.js.map +1 -0
- package/dist/di/provider.d.ts +32 -0
- package/dist/di/provider.d.ts.map +1 -0
- package/dist/di/provider.js +30 -0
- package/dist/di/provider.js.map +1 -0
- package/dist/diagnostics/diagnostics-plugin.d.ts +9 -0
- package/dist/diagnostics/diagnostics-plugin.d.ts.map +1 -0
- package/dist/diagnostics/diagnostics-plugin.js +49 -0
- package/dist/diagnostics/diagnostics-plugin.js.map +1 -0
- package/dist/diagnostics/health-check.d.ts +51 -0
- package/dist/diagnostics/health-check.d.ts.map +1 -0
- package/dist/diagnostics/health-check.js +122 -0
- package/dist/diagnostics/health-check.js.map +1 -0
- package/dist/diagnostics/index.d.ts +4 -0
- package/dist/diagnostics/index.d.ts.map +1 -0
- package/dist/diagnostics/index.js +4 -0
- package/dist/diagnostics/index.js.map +1 -0
- package/dist/diagnostics/prometheus.d.ts +19 -0
- package/dist/diagnostics/prometheus.d.ts.map +1 -0
- package/dist/diagnostics/prometheus.js +99 -0
- package/dist/diagnostics/prometheus.js.map +1 -0
- package/dist/errors.d.ts +139 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +173 -0
- package/dist/errors.js.map +1 -0
- package/dist/events/event-bus.d.ts +178 -0
- package/dist/events/event-bus.d.ts.map +1 -0
- package/dist/events/event-bus.js +182 -0
- package/dist/events/event-bus.js.map +1 -0
- package/dist/graphql/adapter.d.ts +48 -0
- package/dist/graphql/adapter.d.ts.map +1 -0
- package/dist/graphql/adapter.js +109 -0
- package/dist/graphql/adapter.js.map +1 -0
- package/dist/graphql/executor.d.ts +24 -0
- package/dist/graphql/executor.d.ts.map +1 -0
- package/dist/graphql/executor.js +124 -0
- package/dist/graphql/executor.js.map +1 -0
- package/dist/graphql/index.d.ts +8 -0
- package/dist/graphql/index.d.ts.map +1 -0
- package/dist/graphql/index.js +8 -0
- package/dist/graphql/index.js.map +1 -0
- package/dist/graphql/lexer.d.ts +52 -0
- package/dist/graphql/lexer.d.ts.map +1 -0
- package/dist/graphql/lexer.js +188 -0
- package/dist/graphql/lexer.js.map +1 -0
- package/dist/graphql/parser.d.ts +29 -0
- package/dist/graphql/parser.d.ts.map +1 -0
- package/dist/graphql/parser.js +206 -0
- package/dist/graphql/parser.js.map +1 -0
- package/dist/graphql/plugin.d.ts +13 -0
- package/dist/graphql/plugin.d.ts.map +1 -0
- package/dist/graphql/plugin.js +103 -0
- package/dist/graphql/plugin.js.map +1 -0
- package/dist/graphql/schema.d.ts +15 -0
- package/dist/graphql/schema.d.ts.map +1 -0
- package/dist/graphql/schema.js +17 -0
- package/dist/graphql/schema.js.map +1 -0
- package/dist/graphql/types.d.ts +65 -0
- package/dist/graphql/types.d.ts.map +1 -0
- package/dist/graphql/types.js +74 -0
- package/dist/graphql/types.js.map +1 -0
- package/dist/hooks.d.ts +67 -0
- package/dist/hooks.d.ts.map +1 -0
- package/dist/hooks.js +115 -0
- package/dist/hooks.js.map +1 -0
- package/dist/i18n/i18n.d.ts +42 -0
- package/dist/i18n/i18n.d.ts.map +1 -0
- package/dist/i18n/i18n.js +158 -0
- package/dist/i18n/i18n.js.map +1 -0
- package/dist/i18n/index.d.ts +2 -0
- package/dist/i18n/index.d.ts.map +1 -0
- package/dist/i18n/index.js +2 -0
- package/dist/i18n/index.js.map +1 -0
- package/dist/index.d.ts +75 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +87 -0
- package/dist/index.js.map +1 -0
- package/dist/inertia/inertia.d.ts +62 -0
- package/dist/inertia/inertia.d.ts.map +1 -0
- package/dist/inertia/inertia.js +159 -0
- package/dist/inertia/inertia.js.map +1 -0
- package/dist/logging/index.d.ts +7 -0
- package/dist/logging/index.d.ts.map +1 -0
- package/dist/logging/index.js +7 -0
- package/dist/logging/index.js.map +1 -0
- package/dist/logging/logger.d.ts +62 -0
- package/dist/logging/logger.d.ts.map +1 -0
- package/dist/logging/logger.js +197 -0
- package/dist/logging/logger.js.map +1 -0
- package/dist/logging/request-context.d.ts +29 -0
- package/dist/logging/request-context.d.ts.map +1 -0
- package/dist/logging/request-context.js +29 -0
- package/dist/logging/request-context.js.map +1 -0
- package/dist/mail/drivers/log-mail-driver.d.ts +11 -0
- package/dist/mail/drivers/log-mail-driver.d.ts.map +1 -0
- package/dist/mail/drivers/log-mail-driver.js +23 -0
- package/dist/mail/drivers/log-mail-driver.js.map +1 -0
- package/dist/mail/drivers/mail-driver.d.ts +14 -0
- package/dist/mail/drivers/mail-driver.d.ts.map +1 -0
- package/dist/mail/drivers/mail-driver.js +6 -0
- package/dist/mail/drivers/mail-driver.js.map +1 -0
- package/dist/mail/drivers/memory-mail-driver.d.ts +14 -0
- package/dist/mail/drivers/memory-mail-driver.d.ts.map +1 -0
- package/dist/mail/drivers/memory-mail-driver.js +24 -0
- package/dist/mail/drivers/memory-mail-driver.js.map +1 -0
- package/dist/mail/index.d.ts +10 -0
- package/dist/mail/index.d.ts.map +1 -0
- package/dist/mail/index.js +10 -0
- package/dist/mail/index.js.map +1 -0
- package/dist/mail/mailer.d.ts +48 -0
- package/dist/mail/mailer.d.ts.map +1 -0
- package/dist/mail/mailer.js +111 -0
- package/dist/mail/mailer.js.map +1 -0
- package/dist/mail/message.d.ts +30 -0
- package/dist/mail/message.d.ts.map +1 -0
- package/dist/mail/message.js +77 -0
- package/dist/mail/message.js.map +1 -0
- package/dist/middleware/cors.d.ts +16 -0
- package/dist/middleware/cors.d.ts.map +1 -0
- package/dist/middleware/cors.js +76 -0
- package/dist/middleware/cors.js.map +1 -0
- package/dist/middleware.d.ts +26 -0
- package/dist/middleware.d.ts.map +1 -0
- package/dist/middleware.js +45 -0
- package/dist/middleware.js.map +1 -0
- package/dist/pdf/index.d.ts +2 -0
- package/dist/pdf/index.d.ts.map +1 -0
- package/dist/pdf/index.js +2 -0
- package/dist/pdf/index.js.map +1 -0
- package/dist/pdf/pdf.d.ts +86 -0
- package/dist/pdf/pdf.d.ts.map +1 -0
- package/dist/pdf/pdf.js +237 -0
- package/dist/pdf/pdf.js.map +1 -0
- package/dist/plugins/plugin.d.ts +25 -0
- package/dist/plugins/plugin.d.ts.map +1 -0
- package/dist/plugins/plugin.js +17 -0
- package/dist/plugins/plugin.js.map +1 -0
- package/dist/queue/drivers/database-queue-driver.d.ts +21 -0
- package/dist/queue/drivers/database-queue-driver.d.ts.map +1 -0
- package/dist/queue/drivers/database-queue-driver.js +84 -0
- package/dist/queue/drivers/database-queue-driver.js.map +1 -0
- package/dist/queue/drivers/memory-queue-driver.d.ts +17 -0
- package/dist/queue/drivers/memory-queue-driver.d.ts.map +1 -0
- package/dist/queue/drivers/memory-queue-driver.js +71 -0
- package/dist/queue/drivers/memory-queue-driver.js.map +1 -0
- package/dist/queue/drivers/queue-driver.d.ts +44 -0
- package/dist/queue/drivers/queue-driver.d.ts.map +1 -0
- package/dist/queue/drivers/queue-driver.js +6 -0
- package/dist/queue/drivers/queue-driver.js.map +1 -0
- package/dist/queue/drivers/redis-queue-driver.d.ts +16 -0
- package/dist/queue/drivers/redis-queue-driver.d.ts.map +1 -0
- package/dist/queue/drivers/redis-queue-driver.js +92 -0
- package/dist/queue/drivers/redis-queue-driver.js.map +1 -0
- package/dist/queue/index.d.ts +12 -0
- package/dist/queue/index.d.ts.map +1 -0
- package/dist/queue/index.js +12 -0
- package/dist/queue/index.js.map +1 -0
- package/dist/queue/job.d.ts +20 -0
- package/dist/queue/job.d.ts.map +1 -0
- package/dist/queue/job.js +19 -0
- package/dist/queue/job.js.map +1 -0
- package/dist/queue/queue-manager.d.ts +41 -0
- package/dist/queue/queue-manager.d.ts.map +1 -0
- package/dist/queue/queue-manager.js +98 -0
- package/dist/queue/queue-manager.js.map +1 -0
- package/dist/queue/worker.d.ts +57 -0
- package/dist/queue/worker.d.ts.map +1 -0
- package/dist/queue/worker.js +156 -0
- package/dist/queue/worker.js.map +1 -0
- package/dist/redis/index.d.ts +5 -0
- package/dist/redis/index.d.ts.map +1 -0
- package/dist/redis/index.js +5 -0
- package/dist/redis/index.js.map +1 -0
- package/dist/redis/redis-client.d.ts +44 -0
- package/dist/redis/redis-client.d.ts.map +1 -0
- package/dist/redis/redis-client.js +131 -0
- package/dist/redis/redis-client.js.map +1 -0
- package/dist/redis/redis-connection.d.ts +32 -0
- package/dist/redis/redis-connection.d.ts.map +1 -0
- package/dist/redis/redis-connection.js +151 -0
- package/dist/redis/redis-connection.js.map +1 -0
- package/dist/redis/redis-manager.d.ts +28 -0
- package/dist/redis/redis-manager.d.ts.map +1 -0
- package/dist/redis/redis-manager.js +68 -0
- package/dist/redis/redis-manager.js.map +1 -0
- package/dist/redis/resp-parser.d.ts +29 -0
- package/dist/redis/resp-parser.d.ts.map +1 -0
- package/dist/redis/resp-parser.js +113 -0
- package/dist/redis/resp-parser.js.map +1 -0
- package/dist/request.d.ts +122 -0
- package/dist/request.d.ts.map +1 -0
- package/dist/request.js +171 -0
- package/dist/request.js.map +1 -0
- package/dist/response.d.ts +208 -0
- package/dist/response.d.ts.map +1 -0
- package/dist/response.js +375 -0
- package/dist/response.js.map +1 -0
- package/dist/router.d.ts +146 -0
- package/dist/router.d.ts.map +1 -0
- package/dist/router.js +341 -0
- package/dist/router.js.map +1 -0
- package/dist/routing/controller.d.ts +18 -0
- package/dist/routing/controller.d.ts.map +1 -0
- package/dist/routing/controller.js +49 -0
- package/dist/routing/controller.js.map +1 -0
- package/dist/routing/named-middleware.d.ts +27 -0
- package/dist/routing/named-middleware.d.ts.map +1 -0
- package/dist/routing/named-middleware.js +41 -0
- package/dist/routing/named-middleware.js.map +1 -0
- package/dist/routing/route-builder.d.ts +54 -0
- package/dist/routing/route-builder.d.ts.map +1 -0
- package/dist/routing/route-builder.js +95 -0
- package/dist/routing/route-builder.js.map +1 -0
- package/dist/routing/route-group.d.ts +39 -0
- package/dist/routing/route-group.d.ts.map +1 -0
- package/dist/routing/route-group.js +79 -0
- package/dist/routing/route-group.js.map +1 -0
- package/dist/scheduler/scheduler.d.ts +85 -0
- package/dist/scheduler/scheduler.d.ts.map +1 -0
- package/dist/scheduler/scheduler.js +216 -0
- package/dist/scheduler/scheduler.js.map +1 -0
- package/dist/security/csrf.d.ts +19 -0
- package/dist/security/csrf.d.ts.map +1 -0
- package/dist/security/csrf.js +69 -0
- package/dist/security/csrf.js.map +1 -0
- package/dist/security/hash.d.ts +30 -0
- package/dist/security/hash.d.ts.map +1 -0
- package/dist/security/hash.js +86 -0
- package/dist/security/hash.js.map +1 -0
- package/dist/security/headers.d.ts +56 -0
- package/dist/security/headers.d.ts.map +1 -0
- package/dist/security/headers.js +81 -0
- package/dist/security/headers.js.map +1 -0
- package/dist/security/index.d.ts +13 -0
- package/dist/security/index.d.ts.map +1 -0
- package/dist/security/index.js +13 -0
- package/dist/security/index.js.map +1 -0
- package/dist/security/jwt.d.ts +96 -0
- package/dist/security/jwt.d.ts.map +1 -0
- package/dist/security/jwt.js +308 -0
- package/dist/security/jwt.js.map +1 -0
- package/dist/security/rate-limiter.d.ts +80 -0
- package/dist/security/rate-limiter.d.ts.map +1 -0
- package/dist/security/rate-limiter.js +127 -0
- package/dist/security/rate-limiter.js.map +1 -0
- package/dist/security/totp.d.ts +43 -0
- package/dist/security/totp.d.ts.map +1 -0
- package/dist/security/totp.js +122 -0
- package/dist/security/totp.js.map +1 -0
- package/dist/security/vault.d.ts +28 -0
- package/dist/security/vault.d.ts.map +1 -0
- package/dist/security/vault.js +73 -0
- package/dist/security/vault.js.map +1 -0
- package/dist/session/session-driver.d.ts +53 -0
- package/dist/session/session-driver.d.ts.map +1 -0
- package/dist/session/session-driver.js +132 -0
- package/dist/session/session-driver.js.map +1 -0
- package/dist/session/session-manager.d.ts +100 -0
- package/dist/session/session-manager.d.ts.map +1 -0
- package/dist/session/session-manager.js +186 -0
- package/dist/session/session-manager.js.map +1 -0
- package/dist/sse/index.d.ts +2 -0
- package/dist/sse/index.d.ts.map +1 -0
- package/dist/sse/index.js +2 -0
- package/dist/sse/index.js.map +1 -0
- package/dist/sse/sse.d.ts +32 -0
- package/dist/sse/sse.d.ts.map +1 -0
- package/dist/sse/sse.js +87 -0
- package/dist/sse/sse.js.map +1 -0
- package/dist/ssr/engine.d.ts +58 -0
- package/dist/ssr/engine.d.ts.map +1 -0
- package/dist/ssr/engine.js +121 -0
- package/dist/ssr/engine.js.map +1 -0
- package/dist/ssr/index.d.ts +6 -0
- package/dist/ssr/index.d.ts.map +1 -0
- package/dist/ssr/index.js +6 -0
- package/dist/ssr/index.js.map +1 -0
- package/dist/static/static.d.ts +22 -0
- package/dist/static/static.d.ts.map +1 -0
- package/dist/static/static.js +134 -0
- package/dist/static/static.js.map +1 -0
- package/dist/storage/chunked-uploader.d.ts +53 -0
- package/dist/storage/chunked-uploader.d.ts.map +1 -0
- package/dist/storage/chunked-uploader.js +135 -0
- package/dist/storage/chunked-uploader.js.map +1 -0
- package/dist/storage/drivers/local-driver.d.ts +25 -0
- package/dist/storage/drivers/local-driver.d.ts.map +1 -0
- package/dist/storage/drivers/local-driver.js +75 -0
- package/dist/storage/drivers/local-driver.js.map +1 -0
- package/dist/storage/drivers/memory-driver.d.ts +23 -0
- package/dist/storage/drivers/memory-driver.d.ts.map +1 -0
- package/dist/storage/drivers/memory-driver.js +55 -0
- package/dist/storage/drivers/memory-driver.js.map +1 -0
- package/dist/storage/drivers/s3-driver.d.ts +34 -0
- package/dist/storage/drivers/s3-driver.d.ts.map +1 -0
- package/dist/storage/drivers/s3-driver.js +186 -0
- package/dist/storage/drivers/s3-driver.js.map +1 -0
- package/dist/storage/drivers/storage-driver.d.ts +40 -0
- package/dist/storage/drivers/storage-driver.d.ts.map +1 -0
- package/dist/storage/drivers/storage-driver.js +6 -0
- package/dist/storage/drivers/storage-driver.js.map +1 -0
- package/dist/storage/index.d.ts +13 -0
- package/dist/storage/index.d.ts.map +1 -0
- package/dist/storage/index.js +13 -0
- package/dist/storage/index.js.map +1 -0
- package/dist/storage/multipart.d.ts +12 -0
- package/dist/storage/multipart.d.ts.map +1 -0
- package/dist/storage/multipart.js +79 -0
- package/dist/storage/multipart.js.map +1 -0
- package/dist/storage/storage-manager.d.ts +48 -0
- package/dist/storage/storage-manager.d.ts.map +1 -0
- package/dist/storage/storage-manager.js +106 -0
- package/dist/storage/storage-manager.js.map +1 -0
- package/dist/storage/uploaded-file.d.ts +40 -0
- package/dist/storage/uploaded-file.d.ts.map +1 -0
- package/dist/storage/uploaded-file.js +73 -0
- package/dist/storage/uploaded-file.js.map +1 -0
- package/dist/swagger/generator.d.ts +44 -0
- package/dist/swagger/generator.d.ts.map +1 -0
- package/dist/swagger/generator.js +117 -0
- package/dist/swagger/generator.js.map +1 -0
- package/dist/swagger/index.d.ts +8 -0
- package/dist/swagger/index.d.ts.map +1 -0
- package/dist/swagger/index.js +8 -0
- package/dist/swagger/index.js.map +1 -0
- package/dist/swagger/swagger.d.ts +9 -0
- package/dist/swagger/swagger.d.ts.map +1 -0
- package/dist/swagger/swagger.js +32 -0
- package/dist/swagger/swagger.js.map +1 -0
- package/dist/swagger/ui.d.ts +11 -0
- package/dist/swagger/ui.d.ts.map +1 -0
- package/dist/swagger/ui.js +93 -0
- package/dist/swagger/ui.js.map +1 -0
- package/dist/tcp/hl7.d.ts +19 -0
- package/dist/tcp/hl7.d.ts.map +1 -0
- package/dist/tcp/hl7.js +42 -0
- package/dist/tcp/hl7.js.map +1 -0
- package/dist/tcp/index.d.ts +4 -0
- package/dist/tcp/index.d.ts.map +1 -0
- package/dist/tcp/index.js +4 -0
- package/dist/tcp/index.js.map +1 -0
- package/dist/tcp/mllp.d.ts +22 -0
- package/dist/tcp/mllp.d.ts.map +1 -0
- package/dist/tcp/mllp.js +44 -0
- package/dist/tcp/mllp.js.map +1 -0
- package/dist/tcp/tcp-server.d.ts +20 -0
- package/dist/tcp/tcp-server.d.ts.map +1 -0
- package/dist/tcp/tcp-server.js +59 -0
- package/dist/tcp/tcp-server.js.map +1 -0
- package/dist/tenancy/index.d.ts +2 -0
- package/dist/tenancy/index.d.ts.map +1 -0
- package/dist/tenancy/index.js +2 -0
- package/dist/tenancy/index.js.map +1 -0
- package/dist/tenancy/tenant.d.ts +22 -0
- package/dist/tenancy/tenant.d.ts.map +1 -0
- package/dist/tenancy/tenant.js +32 -0
- package/dist/tenancy/tenant.js.map +1 -0
- package/dist/testing/test-client.d.ts +36 -0
- package/dist/testing/test-client.d.ts.map +1 -0
- package/dist/testing/test-client.js +128 -0
- package/dist/testing/test-client.js.map +1 -0
- package/dist/validation/index.d.ts +10 -0
- package/dist/validation/index.d.ts.map +1 -0
- package/dist/validation/index.js +10 -0
- package/dist/validation/index.js.map +1 -0
- package/dist/validation/rules-validator.d.ts +65 -0
- package/dist/validation/rules-validator.d.ts.map +1 -0
- package/dist/validation/rules-validator.js +301 -0
- package/dist/validation/rules-validator.js.map +1 -0
- package/dist/validation/schema.d.ts +34 -0
- package/dist/validation/schema.d.ts.map +1 -0
- package/dist/validation/schema.js +174 -0
- package/dist/validation/schema.js.map +1 -0
- package/dist/validation/vine.d.ts +23 -0
- package/dist/validation/vine.d.ts.map +1 -0
- package/dist/validation/vine.js +97 -0
- package/dist/validation/vine.js.map +1 -0
- package/dist/views/view.d.ts +51 -0
- package/dist/views/view.d.ts.map +1 -0
- package/dist/views/view.js +91 -0
- package/dist/views/view.js.map +1 -0
- package/dist/views/vite.d.ts +19 -0
- package/dist/views/vite.d.ts.map +1 -0
- package/dist/views/vite.js +60 -0
- package/dist/views/vite.js.map +1 -0
- package/dist/webhook/index.d.ts +2 -0
- package/dist/webhook/index.d.ts.map +1 -0
- package/dist/webhook/index.js +2 -0
- package/dist/webhook/index.js.map +1 -0
- package/dist/webhook/webhook.d.ts +30 -0
- package/dist/webhook/webhook.d.ts.map +1 -0
- package/dist/webhook/webhook.js +124 -0
- package/dist/webhook/webhook.js.map +1 -0
- package/dist/ws/broadcaster.d.ts +43 -0
- package/dist/ws/broadcaster.d.ts.map +1 -0
- package/dist/ws/broadcaster.js +81 -0
- package/dist/ws/broadcaster.js.map +1 -0
- package/dist/ws/channel.d.ts +23 -0
- package/dist/ws/channel.d.ts.map +1 -0
- package/dist/ws/channel.js +27 -0
- package/dist/ws/channel.js.map +1 -0
- package/dist/ws/index.d.ts +5 -0
- package/dist/ws/index.d.ts.map +1 -0
- package/dist/ws/index.js +5 -0
- package/dist/ws/index.js.map +1 -0
- package/dist/ws/websocket-hub.d.ts +52 -0
- package/dist/ws/websocket-hub.d.ts.map +1 -0
- package/dist/ws/websocket-hub.js +187 -0
- package/dist/ws/websocket-hub.js.map +1 -0
- package/dist/ws/websocket.d.ts +43 -0
- package/dist/ws/websocket.d.ts.map +1 -0
- package/dist/ws/websocket.js +214 -0
- package/dist/ws/websocket.js.map +1 -0
- package/package.json +141 -0
package/dist/router.js
ADDED
|
@@ -0,0 +1,341 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file router.ts
|
|
3
|
+
* @description Radix Tree routing engine supporting route params, wildcards, and method matching.
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* Node within the Radix Tree structure.
|
|
7
|
+
*/
|
|
8
|
+
class RadixNode {
|
|
9
|
+
/**
|
|
10
|
+
* Exact match child nodes mapped by path segment.
|
|
11
|
+
*/
|
|
12
|
+
children = new Map();
|
|
13
|
+
/**
|
|
14
|
+
* Parameter child node (e.g., `:id`).
|
|
15
|
+
*/
|
|
16
|
+
paramChild;
|
|
17
|
+
/**
|
|
18
|
+
* Wildcard child node (e.g., `*` or `*filepath`).
|
|
19
|
+
*/
|
|
20
|
+
wildcardChild;
|
|
21
|
+
/**
|
|
22
|
+
* Registered routes on this node mapped by HTTP method.
|
|
23
|
+
*/
|
|
24
|
+
routes = new Map();
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Normalizes a URL path by stripping trailing slashes while preserving root `/`.
|
|
28
|
+
*
|
|
29
|
+
* @param path - Input URL path.
|
|
30
|
+
* @returns Normalized URL path.
|
|
31
|
+
*/
|
|
32
|
+
export function normalizePath(path) {
|
|
33
|
+
if (!path || path === '/') {
|
|
34
|
+
return '/';
|
|
35
|
+
}
|
|
36
|
+
const stripped = path.endsWith('/') ? path.slice(0, -1) : path;
|
|
37
|
+
return stripped.startsWith('/') ? stripped : `/${stripped}`;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Splits a path into constituent segments for Radix Tree indexing.
|
|
41
|
+
*
|
|
42
|
+
* @param path - URL path.
|
|
43
|
+
* @returns Array of non-empty segment strings.
|
|
44
|
+
*/
|
|
45
|
+
function splitPath(path) {
|
|
46
|
+
const norm = normalizePath(path);
|
|
47
|
+
if (norm === '/') {
|
|
48
|
+
return [];
|
|
49
|
+
}
|
|
50
|
+
return norm.slice(1).split('/');
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Chainable route builder for configuring multiple HTTP methods on a single path.
|
|
54
|
+
*/
|
|
55
|
+
export class RouteChain {
|
|
56
|
+
router;
|
|
57
|
+
path;
|
|
58
|
+
constructor(router, path) {
|
|
59
|
+
this.router = router;
|
|
60
|
+
this.path = path;
|
|
61
|
+
}
|
|
62
|
+
get(...handlers) {
|
|
63
|
+
this.router.get(this.path, ...handlers);
|
|
64
|
+
return this;
|
|
65
|
+
}
|
|
66
|
+
post(...handlers) {
|
|
67
|
+
this.router.post(this.path, ...handlers);
|
|
68
|
+
return this;
|
|
69
|
+
}
|
|
70
|
+
put(...handlers) {
|
|
71
|
+
this.router.put(this.path, ...handlers);
|
|
72
|
+
return this;
|
|
73
|
+
}
|
|
74
|
+
patch(...handlers) {
|
|
75
|
+
this.router.patch(this.path, ...handlers);
|
|
76
|
+
return this;
|
|
77
|
+
}
|
|
78
|
+
delete(...handlers) {
|
|
79
|
+
this.router.delete(this.path, ...handlers);
|
|
80
|
+
return this;
|
|
81
|
+
}
|
|
82
|
+
all(...handlers) {
|
|
83
|
+
this.router.all(this.path, ...handlers);
|
|
84
|
+
return this;
|
|
85
|
+
}
|
|
86
|
+
options(...handlers) {
|
|
87
|
+
this.router.options(this.path, ...handlers);
|
|
88
|
+
return this;
|
|
89
|
+
}
|
|
90
|
+
head(...handlers) {
|
|
91
|
+
this.router.head(this.path, ...handlers);
|
|
92
|
+
return this;
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* High-performance Radix Tree router supporting route parameters,
|
|
97
|
+
* wildcards, trailing-slash normalization, and 405 Method Not Allowed discovery.
|
|
98
|
+
*/
|
|
99
|
+
export class Router {
|
|
100
|
+
root = new RadixNode();
|
|
101
|
+
allRoutes = [];
|
|
102
|
+
/**
|
|
103
|
+
* Registers a new route in the Radix Tree.
|
|
104
|
+
*
|
|
105
|
+
* @param method - HTTP method (e.g., 'GET', 'POST', 'ALL').
|
|
106
|
+
* @param path - URL pattern (e.g., '/users/:id/posts/:postId').
|
|
107
|
+
* @param handlers - One or more middleware handlers.
|
|
108
|
+
* @returns this
|
|
109
|
+
*/
|
|
110
|
+
add(method, path, handlers, schema) {
|
|
111
|
+
const upperMethod = method.toUpperCase();
|
|
112
|
+
const normalized = normalizePath(path);
|
|
113
|
+
const segments = splitPath(normalized);
|
|
114
|
+
let current = this.root;
|
|
115
|
+
for (let i = 0; i < segments.length; i++) {
|
|
116
|
+
const segment = segments[i];
|
|
117
|
+
if (segment.startsWith('*')) {
|
|
118
|
+
// Wildcard segment: captures remainder of path
|
|
119
|
+
const paramName = segment.length > 1 ? segment.slice(1) : '*';
|
|
120
|
+
if (!current.wildcardChild) {
|
|
121
|
+
current.wildcardChild = {
|
|
122
|
+
paramName,
|
|
123
|
+
node: new RadixNode(),
|
|
124
|
+
};
|
|
125
|
+
}
|
|
126
|
+
current = current.wildcardChild.node;
|
|
127
|
+
// Wildcard must be the terminal segment
|
|
128
|
+
break;
|
|
129
|
+
}
|
|
130
|
+
else if (segment.startsWith(':')) {
|
|
131
|
+
// Parameter segment
|
|
132
|
+
const paramName = segment.slice(1);
|
|
133
|
+
if (!current.paramChild) {
|
|
134
|
+
current.paramChild = {
|
|
135
|
+
paramName,
|
|
136
|
+
node: new RadixNode(),
|
|
137
|
+
};
|
|
138
|
+
}
|
|
139
|
+
current = current.paramChild.node;
|
|
140
|
+
}
|
|
141
|
+
else {
|
|
142
|
+
// Static segment
|
|
143
|
+
let child = current.children.get(segment);
|
|
144
|
+
if (!child) {
|
|
145
|
+
child = new RadixNode();
|
|
146
|
+
current.children.set(segment, child);
|
|
147
|
+
}
|
|
148
|
+
current = child;
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
const route = {
|
|
152
|
+
method: upperMethod,
|
|
153
|
+
path: normalized,
|
|
154
|
+
handlers,
|
|
155
|
+
schema,
|
|
156
|
+
};
|
|
157
|
+
current.routes.set(upperMethod, route);
|
|
158
|
+
this.allRoutes.push(route);
|
|
159
|
+
return this;
|
|
160
|
+
}
|
|
161
|
+
/**
|
|
162
|
+
* Matches an incoming HTTP request method and path against the Radix Tree.
|
|
163
|
+
*
|
|
164
|
+
* @param method - HTTP method.
|
|
165
|
+
* @param path - URL pathname.
|
|
166
|
+
* @returns RouteMatch or null if no route matches.
|
|
167
|
+
*/
|
|
168
|
+
match(method, path) {
|
|
169
|
+
const upperMethod = method.toUpperCase();
|
|
170
|
+
const normalized = normalizePath(path);
|
|
171
|
+
const segments = splitPath(normalized);
|
|
172
|
+
const params = {};
|
|
173
|
+
const node = this.searchNode(this.root, segments, 0, params);
|
|
174
|
+
if (!node) {
|
|
175
|
+
return null;
|
|
176
|
+
}
|
|
177
|
+
// Try exact method match
|
|
178
|
+
let route = node.routes.get(upperMethod);
|
|
179
|
+
// Fallback to 'ALL' wildcard handler
|
|
180
|
+
if (!route) {
|
|
181
|
+
route = node.routes.get('ALL');
|
|
182
|
+
}
|
|
183
|
+
// Fallback for HEAD request to GET handler
|
|
184
|
+
if (!route && upperMethod === 'HEAD') {
|
|
185
|
+
route = node.routes.get('GET');
|
|
186
|
+
}
|
|
187
|
+
if (!route) {
|
|
188
|
+
return null;
|
|
189
|
+
}
|
|
190
|
+
return {
|
|
191
|
+
route,
|
|
192
|
+
params,
|
|
193
|
+
handlers: route.handlers,
|
|
194
|
+
};
|
|
195
|
+
}
|
|
196
|
+
/**
|
|
197
|
+
* Checks whether ANY route is registered for the specified path,
|
|
198
|
+
* regardless of the HTTP method (used for 405 Method Not Allowed detection).
|
|
199
|
+
*
|
|
200
|
+
* @param path - URL pathname.
|
|
201
|
+
* @returns True if at least one route matches the path.
|
|
202
|
+
*/
|
|
203
|
+
hasPath(path) {
|
|
204
|
+
const normalized = normalizePath(path);
|
|
205
|
+
const segments = splitPath(normalized);
|
|
206
|
+
const params = {};
|
|
207
|
+
const node = this.searchNode(this.root, segments, 0, params);
|
|
208
|
+
if (!node) {
|
|
209
|
+
return false;
|
|
210
|
+
}
|
|
211
|
+
return node.routes.size > 0;
|
|
212
|
+
}
|
|
213
|
+
/**
|
|
214
|
+
* Retrieves all HTTP methods registered for a given path.
|
|
215
|
+
*
|
|
216
|
+
* @param path - URL pathname.
|
|
217
|
+
* @returns Array of allowed HTTP method strings.
|
|
218
|
+
*/
|
|
219
|
+
allowedMethods(path) {
|
|
220
|
+
const normalized = normalizePath(path);
|
|
221
|
+
const segments = splitPath(normalized);
|
|
222
|
+
const params = {};
|
|
223
|
+
const node = this.searchNode(this.root, segments, 0, params);
|
|
224
|
+
if (!node) {
|
|
225
|
+
return [];
|
|
226
|
+
}
|
|
227
|
+
const methods = new Set();
|
|
228
|
+
for (const m of node.routes.keys()) {
|
|
229
|
+
if (m === 'ALL') {
|
|
230
|
+
methods.add('GET');
|
|
231
|
+
methods.add('POST');
|
|
232
|
+
methods.add('PUT');
|
|
233
|
+
methods.add('PATCH');
|
|
234
|
+
methods.add('DELETE');
|
|
235
|
+
methods.add('HEAD');
|
|
236
|
+
methods.add('OPTIONS');
|
|
237
|
+
}
|
|
238
|
+
else {
|
|
239
|
+
methods.add(m);
|
|
240
|
+
}
|
|
241
|
+
}
|
|
242
|
+
// If GET is supported, HEAD is implicitly supported
|
|
243
|
+
if (methods.has('GET')) {
|
|
244
|
+
methods.add('HEAD');
|
|
245
|
+
}
|
|
246
|
+
methods.add('OPTIONS');
|
|
247
|
+
return Array.from(methods);
|
|
248
|
+
}
|
|
249
|
+
/**
|
|
250
|
+
* Recursively traverses the Radix Tree matching static, param, and wildcard segments.
|
|
251
|
+
*/
|
|
252
|
+
searchNode(current, segments, index, params) {
|
|
253
|
+
// End of segments reached
|
|
254
|
+
if (index === segments.length) {
|
|
255
|
+
if (current.routes.size > 0) {
|
|
256
|
+
return current;
|
|
257
|
+
}
|
|
258
|
+
// If no route at exact end, check if wildcard child exists that can match empty remainder
|
|
259
|
+
if (current.wildcardChild && current.wildcardChild.node.routes.size > 0) {
|
|
260
|
+
params[current.wildcardChild.paramName] = '';
|
|
261
|
+
return current.wildcardChild.node;
|
|
262
|
+
}
|
|
263
|
+
return null;
|
|
264
|
+
}
|
|
265
|
+
const segment = segments[index];
|
|
266
|
+
// 1. Try static child match
|
|
267
|
+
const child = current.children.get(segment);
|
|
268
|
+
if (child) {
|
|
269
|
+
const match = this.searchNode(child, segments, index + 1, params);
|
|
270
|
+
if (match)
|
|
271
|
+
return match;
|
|
272
|
+
}
|
|
273
|
+
// 2. Try parameter child match
|
|
274
|
+
if (current.paramChild) {
|
|
275
|
+
params[current.paramChild.paramName] = segment;
|
|
276
|
+
const match = this.searchNode(current.paramChild.node, segments, index + 1, params);
|
|
277
|
+
if (match)
|
|
278
|
+
return match;
|
|
279
|
+
delete params[current.paramChild.paramName];
|
|
280
|
+
}
|
|
281
|
+
// 3. Try wildcard child match
|
|
282
|
+
if (current.wildcardChild) {
|
|
283
|
+
const remaining = segments.slice(index).join('/');
|
|
284
|
+
params[current.wildcardChild.paramName] = remaining;
|
|
285
|
+
return current.wildcardChild.node;
|
|
286
|
+
}
|
|
287
|
+
return null;
|
|
288
|
+
}
|
|
289
|
+
/**
|
|
290
|
+
* Registers a sub-router with a URL prefix.
|
|
291
|
+
*
|
|
292
|
+
* @param prefix - Base path prefix (e.g., '/api/v1').
|
|
293
|
+
* @param subRouter - Router instance to mount.
|
|
294
|
+
* @returns this
|
|
295
|
+
*/
|
|
296
|
+
mount(prefix, subRouter) {
|
|
297
|
+
const cleanPrefix = normalizePath(prefix);
|
|
298
|
+
for (const route of subRouter.allRoutes) {
|
|
299
|
+
const combinedPath = route.path === '/'
|
|
300
|
+
? cleanPrefix
|
|
301
|
+
: normalizePath(`${cleanPrefix}${route.path}`);
|
|
302
|
+
this.add(route.method, combinedPath, [...route.handlers], route.schema);
|
|
303
|
+
}
|
|
304
|
+
return this;
|
|
305
|
+
}
|
|
306
|
+
/**
|
|
307
|
+
* Creates a chainable RouteChain for configuring handlers on a path.
|
|
308
|
+
*
|
|
309
|
+
* @param path - URL path.
|
|
310
|
+
* @returns RouteChain instance.
|
|
311
|
+
*/
|
|
312
|
+
route(path) {
|
|
313
|
+
return new RouteChain(this, path);
|
|
314
|
+
}
|
|
315
|
+
// --- HTTP Verb Shorthands ---
|
|
316
|
+
get(path, ...handlers) {
|
|
317
|
+
return this.add('GET', path, handlers);
|
|
318
|
+
}
|
|
319
|
+
post(path, ...handlers) {
|
|
320
|
+
return this.add('POST', path, handlers);
|
|
321
|
+
}
|
|
322
|
+
put(path, ...handlers) {
|
|
323
|
+
return this.add('PUT', path, handlers);
|
|
324
|
+
}
|
|
325
|
+
patch(path, ...handlers) {
|
|
326
|
+
return this.add('PATCH', path, handlers);
|
|
327
|
+
}
|
|
328
|
+
delete(path, ...handlers) {
|
|
329
|
+
return this.add('DELETE', path, handlers);
|
|
330
|
+
}
|
|
331
|
+
all(path, ...handlers) {
|
|
332
|
+
return this.add('ALL', path, handlers);
|
|
333
|
+
}
|
|
334
|
+
options(path, ...handlers) {
|
|
335
|
+
return this.add('OPTIONS', path, handlers);
|
|
336
|
+
}
|
|
337
|
+
head(path, ...handlers) {
|
|
338
|
+
return this.add('HEAD', path, handlers);
|
|
339
|
+
}
|
|
340
|
+
}
|
|
341
|
+
//# sourceMappingURL=router.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"router.js","sourceRoot":"","sources":["../src/router.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file controller.ts
|
|
3
|
+
* @description Controller resolution and handler adapter for class-based routing.
|
|
4
|
+
*/
|
|
5
|
+
import type { DefaultState } from '../core/context.js';
|
|
6
|
+
import type { Middleware } from '../core/types.js';
|
|
7
|
+
export type ControllerConstructor<T = any> = new (...args: any[]) => T;
|
|
8
|
+
export type ControllerTuple<T = any> = [ControllerConstructor<T>, string];
|
|
9
|
+
/**
|
|
10
|
+
* Checks if a value is a controller tuple [ControllerClass, 'methodName'].
|
|
11
|
+
*/
|
|
12
|
+
export declare function isControllerTuple(val: unknown): val is [ControllerConstructor, string];
|
|
13
|
+
/**
|
|
14
|
+
* Adapts a controller class and action method into an Aero Middleware function.
|
|
15
|
+
* Leverages the IoC container from ctx.container if available for automatic dependency injection.
|
|
16
|
+
*/
|
|
17
|
+
export declare function createControllerHandler<State = DefaultState>(target: ControllerConstructor | [ControllerConstructor, string], actionName?: string): Middleware<State>;
|
|
18
|
+
//# sourceMappingURL=controller.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"controller.d.ts","sourceRoot":"","sources":["../../src/routing/controller.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAe,YAAY,EAAE,MAAM,oBAAoB,CAAC;AACpE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAEnD,MAAM,MAAM,qBAAqB,CAAC,CAAC,GAAG,GAAG,IAAI,KAAK,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;AACvE,MAAM,MAAM,eAAe,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC,qBAAqB,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;AAE1E;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,OAAO,GAAG,GAAG,IAAI,CAAC,qBAAqB,EAAE,MAAM,CAAC,CAOtF;AAED;;;GAGG;AACH,wBAAgB,uBAAuB,CAAC,KAAK,GAAG,YAAY,EAC1D,MAAM,EAAE,qBAAqB,GAAG,CAAC,qBAAqB,EAAE,MAAM,CAAC,EAC/D,UAAU,CAAC,EAAE,MAAM,GAClB,UAAU,CAAC,KAAK,CAAC,CAmCnB"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file controller.ts
|
|
3
|
+
* @description Controller resolution and handler adapter for class-based routing.
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* Checks if a value is a controller tuple [ControllerClass, 'methodName'].
|
|
7
|
+
*/
|
|
8
|
+
export function isControllerTuple(val) {
|
|
9
|
+
return (Array.isArray(val) &&
|
|
10
|
+
val.length === 2 &&
|
|
11
|
+
typeof val[0] === 'function' &&
|
|
12
|
+
typeof val[1] === 'string');
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Adapts a controller class and action method into an Aero Middleware function.
|
|
16
|
+
* Leverages the IoC container from ctx.container if available for automatic dependency injection.
|
|
17
|
+
*/
|
|
18
|
+
export function createControllerHandler(target, actionName) {
|
|
19
|
+
let ControllerClass;
|
|
20
|
+
let action;
|
|
21
|
+
if (isControllerTuple(target)) {
|
|
22
|
+
ControllerClass = target[0];
|
|
23
|
+
action = target[1];
|
|
24
|
+
}
|
|
25
|
+
else if (typeof target === 'function' && typeof actionName === 'string') {
|
|
26
|
+
ControllerClass = target;
|
|
27
|
+
action = actionName;
|
|
28
|
+
}
|
|
29
|
+
else {
|
|
30
|
+
throw new TypeError('Invalid controller definition. Expected [Class, "method"] or (Class, "method").');
|
|
31
|
+
}
|
|
32
|
+
return async (ctx) => {
|
|
33
|
+
let instance;
|
|
34
|
+
if (ctx.container && typeof ctx.container.make === 'function') {
|
|
35
|
+
instance = ctx.container.make(ControllerClass);
|
|
36
|
+
}
|
|
37
|
+
else {
|
|
38
|
+
instance = new ControllerClass();
|
|
39
|
+
}
|
|
40
|
+
if (typeof instance[action] !== 'function') {
|
|
41
|
+
throw new Error(`Controller method '${action}' does not exist on ${ControllerClass.name || 'Controller'}.`);
|
|
42
|
+
}
|
|
43
|
+
const result = await instance[action](ctx);
|
|
44
|
+
if (result !== undefined && !ctx.res.isSent && !ctx.res.headersSent) {
|
|
45
|
+
ctx.send(result);
|
|
46
|
+
}
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
//# sourceMappingURL=controller.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"controller.js","sourceRoot":"","sources":["../../src/routing/controller.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAQH;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAAC,GAAY;IAC5C,OAAO,CACL,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC;QAClB,GAAG,CAAC,MAAM,KAAK,CAAC;QAChB,OAAO,GAAG,CAAC,CAAC,CAAC,KAAK,UAAU;QAC5B,OAAO,GAAG,CAAC,CAAC,CAAC,KAAK,QAAQ,CAC3B,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,uBAAuB,CACrC,MAA+D,EAC/D,UAAmB;IAEnB,IAAI,eAAsC,CAAC;IAC3C,IAAI,MAAc,CAAC;IAEnB,IAAI,iBAAiB,CAAC,MAAM,CAAC,EAAE,CAAC;QAC9B,eAAe,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;QAC5B,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;IACrB,CAAC;SAAM,IAAI,OAAO,MAAM,KAAK,UAAU,IAAI,OAAO,UAAU,KAAK,QAAQ,EAAE,CAAC;QAC1E,eAAe,GAAG,MAAM,CAAC;QACzB,MAAM,GAAG,UAAU,CAAC;IACtB,CAAC;SAAM,CAAC;QACN,MAAM,IAAI,SAAS,CAAC,iFAAiF,CAAC,CAAC;IACzG,CAAC;IAED,OAAO,KAAK,EAAE,GAAuB,EAAE,EAAE;QACvC,IAAI,QAAa,CAAC;QAElB,IAAI,GAAG,CAAC,SAAS,IAAI,OAAQ,GAAG,CAAC,SAAiB,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;YACvE,QAAQ,GAAI,GAAG,CAAC,SAAiB,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;QAC1D,CAAC;aAAM,CAAC;YACN,QAAQ,GAAG,IAAI,eAAe,EAAE,CAAC;QACnC,CAAC;QAED,IAAI,OAAO,QAAQ,CAAC,MAAM,CAAC,KAAK,UAAU,EAAE,CAAC;YAC3C,MAAM,IAAI,KAAK,CACb,sBAAsB,MAAM,uBAAuB,eAAe,CAAC,IAAI,IAAI,YAAY,GAAG,CAC3F,CAAC;QACJ,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC;QAE3C,IAAI,MAAM,KAAK,SAAS,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC;YACpE,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACnB,CAAC;IACH,CAAC,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file named-middleware.ts
|
|
3
|
+
* @description Named middleware registry allowing reusable, named middleware across routes and groups.
|
|
4
|
+
*/
|
|
5
|
+
import type { DefaultState } from '../core/context.js';
|
|
6
|
+
import type { Middleware } from '../core/types.js';
|
|
7
|
+
export declare class NamedMiddlewareRegistry<State = DefaultState> {
|
|
8
|
+
private readonly middlewares;
|
|
9
|
+
/**
|
|
10
|
+
* Registers a middleware function under a specific name.
|
|
11
|
+
*/
|
|
12
|
+
register(name: string, middleware: Middleware<State>): this;
|
|
13
|
+
/**
|
|
14
|
+
* Retrieves a named middleware by key.
|
|
15
|
+
* Throws an error if the named middleware is not registered.
|
|
16
|
+
*/
|
|
17
|
+
get(name: string): Middleware<State>;
|
|
18
|
+
/**
|
|
19
|
+
* Checks whether a named middleware is registered.
|
|
20
|
+
*/
|
|
21
|
+
has(name: string): boolean;
|
|
22
|
+
/**
|
|
23
|
+
* Returns a copy of all registered named middlewares.
|
|
24
|
+
*/
|
|
25
|
+
all(): Map<string, Middleware<State>>;
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=named-middleware.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"named-middleware.d.ts","sourceRoot":"","sources":["../../src/routing/named-middleware.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAEnD,qBAAa,uBAAuB,CAAC,KAAK,GAAG,YAAY;IACvD,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAwC;IAEpE;;OAEG;IACI,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,UAAU,CAAC,KAAK,CAAC,GAAG,IAAI;IAQlE;;;OAGG;IACI,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU,CAAC,KAAK,CAAC;IAQ3C;;OAEG;IACI,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAIjC;;OAEG;IACI,GAAG,IAAI,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,KAAK,CAAC,CAAC;CAG7C"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file named-middleware.ts
|
|
3
|
+
* @description Named middleware registry allowing reusable, named middleware across routes and groups.
|
|
4
|
+
*/
|
|
5
|
+
export class NamedMiddlewareRegistry {
|
|
6
|
+
middlewares = new Map();
|
|
7
|
+
/**
|
|
8
|
+
* Registers a middleware function under a specific name.
|
|
9
|
+
*/
|
|
10
|
+
register(name, middleware) {
|
|
11
|
+
if (typeof middleware !== 'function') {
|
|
12
|
+
throw new TypeError(`Named middleware '${name}' must be a function, received ${typeof middleware}`);
|
|
13
|
+
}
|
|
14
|
+
this.middlewares.set(name, middleware);
|
|
15
|
+
return this;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Retrieves a named middleware by key.
|
|
19
|
+
* Throws an error if the named middleware is not registered.
|
|
20
|
+
*/
|
|
21
|
+
get(name) {
|
|
22
|
+
const mw = this.middlewares.get(name);
|
|
23
|
+
if (!mw) {
|
|
24
|
+
throw new Error(`Named middleware '${name}' is not registered.`);
|
|
25
|
+
}
|
|
26
|
+
return mw;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Checks whether a named middleware is registered.
|
|
30
|
+
*/
|
|
31
|
+
has(name) {
|
|
32
|
+
return this.middlewares.has(name);
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Returns a copy of all registered named middlewares.
|
|
36
|
+
*/
|
|
37
|
+
all() {
|
|
38
|
+
return new Map(this.middlewares);
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
//# sourceMappingURL=named-middleware.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"named-middleware.js","sourceRoot":"","sources":["../../src/routing/named-middleware.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,MAAM,OAAO,uBAAuB;IACjB,WAAW,GAAG,IAAI,GAAG,EAA6B,CAAC;IAEpE;;OAEG;IACI,QAAQ,CAAC,IAAY,EAAE,UAA6B;QACzD,IAAI,OAAO,UAAU,KAAK,UAAU,EAAE,CAAC;YACrC,MAAM,IAAI,SAAS,CAAC,qBAAqB,IAAI,kCAAkC,OAAO,UAAU,EAAE,CAAC,CAAC;QACtG,CAAC;QACD,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;QACvC,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;OAGG;IACI,GAAG,CAAC,IAAY;QACrB,MAAM,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACtC,IAAI,CAAC,EAAE,EAAE,CAAC;YACR,MAAM,IAAI,KAAK,CAAC,qBAAqB,IAAI,sBAAsB,CAAC,CAAC;QACnE,CAAC;QACD,OAAO,EAAE,CAAC;IACZ,CAAC;IAED;;OAEG;IACI,GAAG,CAAC,IAAY;QACrB,OAAO,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACpC,CAAC;IAED;;OAEG;IACI,GAAG;QACR,OAAO,IAAI,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IACnC,CAAC;CACF"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file route-builder.ts
|
|
3
|
+
* @description Fluent RouteBuilder enabling chainable route configuration (.as(), .middleware(), .schema()).
|
|
4
|
+
*/
|
|
5
|
+
import type { DefaultState } from '../core/context.js';
|
|
6
|
+
import type { Middleware } from '../core/types.js';
|
|
7
|
+
import type { Route, RouteSchema, Router } from '../core/router.js';
|
|
8
|
+
import type { NamedMiddlewareRegistry } from './named-middleware.js';
|
|
9
|
+
export declare class RouteBuilder<State = DefaultState> {
|
|
10
|
+
private readonly route;
|
|
11
|
+
private readonly router;
|
|
12
|
+
private readonly namedMiddleware?;
|
|
13
|
+
private readonly addedMiddlewares;
|
|
14
|
+
private readonly initialHandlers;
|
|
15
|
+
constructor(route: Route<State>, router: Router<State>, namedMiddleware?: NamedMiddlewareRegistry<State> | undefined);
|
|
16
|
+
/**
|
|
17
|
+
* Sets the unique name for this route (used by urlFor).
|
|
18
|
+
*/
|
|
19
|
+
as(name: string): this;
|
|
20
|
+
/**
|
|
21
|
+
* Alias for as(name).
|
|
22
|
+
*/
|
|
23
|
+
name(name: string): this;
|
|
24
|
+
/**
|
|
25
|
+
* Attaches one or more route-level middlewares (functions or registered names).
|
|
26
|
+
* Middlewares execute sequentially in the order registered before the route handler.
|
|
27
|
+
*/
|
|
28
|
+
middleware(...middlewares: (Middleware<State> | string)[]): this;
|
|
29
|
+
/**
|
|
30
|
+
* Alias for middleware().
|
|
31
|
+
*/
|
|
32
|
+
use(...middlewares: (Middleware<State> | string)[]): this;
|
|
33
|
+
/**
|
|
34
|
+
* Attaches schema validation rules to this route.
|
|
35
|
+
*/
|
|
36
|
+
schema(schema: RouteSchema): this;
|
|
37
|
+
/**
|
|
38
|
+
* Attaches OpenAPI 3.1 metadata to this route.
|
|
39
|
+
*/
|
|
40
|
+
openapi(meta: Record<string, any>): this;
|
|
41
|
+
/**
|
|
42
|
+
* Returns the underlying Route object.
|
|
43
|
+
*/
|
|
44
|
+
getRoute(): Route<State>;
|
|
45
|
+
get(path: string, ...handlers: any[]): RouteBuilder<State>;
|
|
46
|
+
post(path: string, ...handlers: any[]): RouteBuilder<State>;
|
|
47
|
+
put(path: string, ...handlers: any[]): RouteBuilder<State>;
|
|
48
|
+
patch(path: string, ...handlers: any[]): RouteBuilder<State>;
|
|
49
|
+
delete(path: string, ...handlers: any[]): RouteBuilder<State>;
|
|
50
|
+
options(path: string, ...handlers: any[]): RouteBuilder<State>;
|
|
51
|
+
head(path: string, ...handlers: any[]): RouteBuilder<State>;
|
|
52
|
+
all(path: string, ...handlers: any[]): RouteBuilder<State>;
|
|
53
|
+
}
|
|
54
|
+
//# sourceMappingURL=route-builder.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"route-builder.d.ts","sourceRoot":"","sources":["../../src/routing/route-builder.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,KAAK,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AACpE,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAErE,qBAAa,YAAY,CAAC,KAAK,GAAG,YAAY;IAK1C,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAC;IANnC,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAsC;IACvE,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAiC;gBAG9C,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,EACnB,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,EACrB,eAAe,CAAC,EAAE,uBAAuB,CAAC,KAAK,CAAC,YAAA;IAKnE;;OAEG;IACI,EAAE,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAM7B;;OAEG;IACI,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAI/B;;;OAGG;IACI,UAAU,CAAC,GAAG,WAAW,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC,EAAE,GAAG,IAAI;IAMvE;;OAEG;IACI,GAAG,CAAC,GAAG,WAAW,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC,EAAE,GAAG,IAAI;IAIhE;;OAEG;IACI,MAAM,CAAC,MAAM,EAAE,WAAW,GAAG,IAAI;IAQxC;;OAEG;IACI,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI;IAM/C;;OAEG;IACI,QAAQ,IAAI,KAAK,CAAC,KAAK,CAAC;IAKxB,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,QAAQ,EAAE,GAAG,EAAE,GAAG,YAAY,CAAC,KAAK,CAAC;IAI1D,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,QAAQ,EAAE,GAAG,EAAE,GAAG,YAAY,CAAC,KAAK,CAAC;IAI3D,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,QAAQ,EAAE,GAAG,EAAE,GAAG,YAAY,CAAC,KAAK,CAAC;IAI1D,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,QAAQ,EAAE,GAAG,EAAE,GAAG,YAAY,CAAC,KAAK,CAAC;IAI5D,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,QAAQ,EAAE,GAAG,EAAE,GAAG,YAAY,CAAC,KAAK,CAAC;IAI7D,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,QAAQ,EAAE,GAAG,EAAE,GAAG,YAAY,CAAC,KAAK,CAAC;IAI9D,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,QAAQ,EAAE,GAAG,EAAE,GAAG,YAAY,CAAC,KAAK,CAAC;IAI3D,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,QAAQ,EAAE,GAAG,EAAE,GAAG,YAAY,CAAC,KAAK,CAAC;CAGlE"}
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file route-builder.ts
|
|
3
|
+
* @description Fluent RouteBuilder enabling chainable route configuration (.as(), .middleware(), .schema()).
|
|
4
|
+
*/
|
|
5
|
+
export class RouteBuilder {
|
|
6
|
+
route;
|
|
7
|
+
router;
|
|
8
|
+
namedMiddleware;
|
|
9
|
+
addedMiddlewares = [];
|
|
10
|
+
initialHandlers;
|
|
11
|
+
constructor(route, router, namedMiddleware) {
|
|
12
|
+
this.route = route;
|
|
13
|
+
this.router = router;
|
|
14
|
+
this.namedMiddleware = namedMiddleware;
|
|
15
|
+
this.initialHandlers = [...route.handlers];
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Sets the unique name for this route (used by urlFor).
|
|
19
|
+
*/
|
|
20
|
+
as(name) {
|
|
21
|
+
this.route.name = name;
|
|
22
|
+
this.router.registerNamedRoute(name, this.route);
|
|
23
|
+
return this;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Alias for as(name).
|
|
27
|
+
*/
|
|
28
|
+
name(name) {
|
|
29
|
+
return this.as(name);
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Attaches one or more route-level middlewares (functions or registered names).
|
|
33
|
+
* Middlewares execute sequentially in the order registered before the route handler.
|
|
34
|
+
*/
|
|
35
|
+
middleware(...middlewares) {
|
|
36
|
+
this.addedMiddlewares.push(...middlewares);
|
|
37
|
+
this.route.handlers = [...this.addedMiddlewares, ...this.initialHandlers];
|
|
38
|
+
return this;
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Alias for middleware().
|
|
42
|
+
*/
|
|
43
|
+
use(...middlewares) {
|
|
44
|
+
return this.middleware(...middlewares);
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Attaches schema validation rules to this route.
|
|
48
|
+
*/
|
|
49
|
+
schema(schema) {
|
|
50
|
+
this.route.schema = {
|
|
51
|
+
...this.route.schema,
|
|
52
|
+
...schema,
|
|
53
|
+
};
|
|
54
|
+
return this;
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Attaches OpenAPI 3.1 metadata to this route.
|
|
58
|
+
*/
|
|
59
|
+
openapi(meta) {
|
|
60
|
+
this.route.openapi = meta;
|
|
61
|
+
return this;
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Returns the underlying Route object.
|
|
65
|
+
*/
|
|
66
|
+
getRoute() {
|
|
67
|
+
return this.route;
|
|
68
|
+
}
|
|
69
|
+
// Chaining support for defining subsequent routes directly
|
|
70
|
+
get(path, ...handlers) {
|
|
71
|
+
return this.router.get(path, ...handlers);
|
|
72
|
+
}
|
|
73
|
+
post(path, ...handlers) {
|
|
74
|
+
return this.router.post(path, ...handlers);
|
|
75
|
+
}
|
|
76
|
+
put(path, ...handlers) {
|
|
77
|
+
return this.router.put(path, ...handlers);
|
|
78
|
+
}
|
|
79
|
+
patch(path, ...handlers) {
|
|
80
|
+
return this.router.patch(path, ...handlers);
|
|
81
|
+
}
|
|
82
|
+
delete(path, ...handlers) {
|
|
83
|
+
return this.router.delete(path, ...handlers);
|
|
84
|
+
}
|
|
85
|
+
options(path, ...handlers) {
|
|
86
|
+
return this.router.options(path, ...handlers);
|
|
87
|
+
}
|
|
88
|
+
head(path, ...handlers) {
|
|
89
|
+
return this.router.head(path, ...handlers);
|
|
90
|
+
}
|
|
91
|
+
all(path, ...handlers) {
|
|
92
|
+
return this.router.all(path, ...handlers);
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
//# sourceMappingURL=route-builder.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"route-builder.js","sourceRoot":"","sources":["../../src/routing/route-builder.ts"],"names":[],"mappings":"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"}
|