@zintrust/core 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/bin/z.d.ts +7 -0
- package/bin/z.d.ts.map +1 -0
- package/bin/z.js +6 -0
- package/bin/zin.d.ts +7 -0
- package/bin/zin.d.ts.map +1 -0
- package/bin/zin.js +6 -0
- package/bin/zintrust-microservices.d.ts +7 -0
- package/bin/zintrust-microservices.d.ts.map +1 -0
- package/bin/zintrust-microservices.js +165 -0
- package/bin/zintrust.d.ts +9 -0
- package/bin/zintrust.d.ts.map +1 -0
- package/bin/zintrust.js +51 -0
- package/bin/zt.d.ts +7 -0
- package/bin/zt.d.ts.map +1 -0
- package/bin/zt.js +6 -0
- package/package.json +80 -0
- package/src/boot/Application.d.ts +31 -0
- package/src/boot/Application.d.ts.map +1 -0
- package/src/boot/Application.js +159 -0
- package/src/boot/Server.d.ts +23 -0
- package/src/boot/Server.d.ts.map +1 -0
- package/src/boot/Server.js +236 -0
- package/src/boot/bootstrap.d.ts +7 -0
- package/src/boot/bootstrap.d.ts.map +1 -0
- package/src/boot/bootstrap.js +64 -0
- package/src/builder/BundleOptimizer.d.ts +42 -0
- package/src/builder/BundleOptimizer.d.ts.map +1 -0
- package/src/builder/BundleOptimizer.js +356 -0
- package/src/cache/Cache.d.ts +26 -0
- package/src/cache/Cache.d.ts.map +1 -0
- package/src/cache/Cache.js +89 -0
- package/src/cache/CacheDriver.d.ts +28 -0
- package/src/cache/CacheDriver.d.ts.map +1 -0
- package/src/cache/CacheDriver.js +6 -0
- package/src/cache/drivers/KVDriver.d.ts +12 -0
- package/src/cache/drivers/KVDriver.d.ts.map +1 -0
- package/src/cache/drivers/KVDriver.js +54 -0
- package/src/cache/drivers/MemoryDriver.d.ts +12 -0
- package/src/cache/drivers/MemoryDriver.d.ts.map +1 -0
- package/src/cache/drivers/MemoryDriver.js +50 -0
- package/src/cache/drivers/MongoDriver.d.ts +17 -0
- package/src/cache/drivers/MongoDriver.d.ts.map +1 -0
- package/src/cache/drivers/MongoDriver.js +80 -0
- package/src/cache/drivers/RedisDriver.d.ts +12 -0
- package/src/cache/drivers/RedisDriver.d.ts.map +1 -0
- package/src/cache/drivers/RedisDriver.js +79 -0
- package/src/cli/BaseCommand.d.ts +39 -0
- package/src/cli/BaseCommand.d.ts.map +1 -0
- package/src/cli/BaseCommand.js +58 -0
- package/src/cli/CLI.d.ts +21 -0
- package/src/cli/CLI.d.ts.map +1 -0
- package/src/cli/CLI.js +203 -0
- package/src/cli/ErrorHandler.d.ts +23 -0
- package/src/cli/ErrorHandler.d.ts.map +1 -0
- package/src/cli/ErrorHandler.js +95 -0
- package/src/cli/PromptHelper.d.ts +47 -0
- package/src/cli/PromptHelper.d.ts.map +1 -0
- package/src/cli/PromptHelper.js +155 -0
- package/src/cli/commands/AddCommand.d.ts +15 -0
- package/src/cli/commands/AddCommand.d.ts.map +1 -0
- package/src/cli/commands/AddCommand.js +817 -0
- package/src/cli/commands/ConfigCommand.d.ts +15 -0
- package/src/cli/commands/ConfigCommand.d.ts.map +1 -0
- package/src/cli/commands/ConfigCommand.js +273 -0
- package/src/cli/commands/D1MigrateCommand.d.ts +15 -0
- package/src/cli/commands/D1MigrateCommand.d.ts.map +1 -0
- package/src/cli/commands/D1MigrateCommand.js +73 -0
- package/src/cli/commands/DebugCommand.d.ts +15 -0
- package/src/cli/commands/DebugCommand.d.ts.map +1 -0
- package/src/cli/commands/DebugCommand.js +52 -0
- package/src/cli/commands/FixCommand.d.ts +15 -0
- package/src/cli/commands/FixCommand.d.ts.map +1 -0
- package/src/cli/commands/FixCommand.js +80 -0
- package/src/cli/commands/KeyGenerateCommand.d.ts +9 -0
- package/src/cli/commands/KeyGenerateCommand.d.ts.map +1 -0
- package/src/cli/commands/KeyGenerateCommand.js +76 -0
- package/src/cli/commands/LogsCommand.d.ts +19 -0
- package/src/cli/commands/LogsCommand.d.ts.map +1 -0
- package/src/cli/commands/LogsCommand.js +185 -0
- package/src/cli/commands/MigrateCommand.d.ts +15 -0
- package/src/cli/commands/MigrateCommand.d.ts.map +1 -0
- package/src/cli/commands/MigrateCommand.js +56 -0
- package/src/cli/commands/NewCommand.d.ts +32 -0
- package/src/cli/commands/NewCommand.d.ts.map +1 -0
- package/src/cli/commands/NewCommand.js +280 -0
- package/src/cli/commands/PluginCommand.d.ts +9 -0
- package/src/cli/commands/PluginCommand.d.ts.map +1 -0
- package/src/cli/commands/PluginCommand.js +94 -0
- package/src/cli/commands/PrepareCommand.d.ts +8 -0
- package/src/cli/commands/PrepareCommand.d.ts.map +1 -0
- package/src/cli/commands/PrepareCommand.js +51 -0
- package/src/cli/commands/QACommand.d.ts +33 -0
- package/src/cli/commands/QACommand.d.ts.map +1 -0
- package/src/cli/commands/QACommand.js +490 -0
- package/src/cli/commands/SimulateCommand.d.ts +12 -0
- package/src/cli/commands/SimulateCommand.d.ts.map +1 -0
- package/src/cli/commands/SimulateCommand.js +79 -0
- package/src/cli/commands/StartCommand.d.ts +5 -0
- package/src/cli/commands/StartCommand.d.ts.map +1 -0
- package/src/cli/commands/StartCommand.js +227 -0
- package/src/cli/commands/index.d.ts +11 -0
- package/src/cli/commands/index.d.ts.map +1 -0
- package/src/cli/commands/index.js +10 -0
- package/src/cli/config/ConfigManager.d.ts +42 -0
- package/src/cli/config/ConfigManager.d.ts.map +1 -0
- package/src/cli/config/ConfigManager.js +175 -0
- package/src/cli/config/ConfigSchema.d.ts +195 -0
- package/src/cli/config/ConfigSchema.d.ts.map +1 -0
- package/src/cli/config/ConfigSchema.js +171 -0
- package/src/cli/config/ConfigValidator.d.ts +41 -0
- package/src/cli/config/ConfigValidator.d.ts.map +1 -0
- package/src/cli/config/ConfigValidator.js +200 -0
- package/src/cli/config/index.d.ts +8 -0
- package/src/cli/config/index.d.ts.map +1 -0
- package/src/cli/config/index.js +7 -0
- package/src/cli/debug/Dashboard.d.ts +34 -0
- package/src/cli/debug/Dashboard.d.ts.map +1 -0
- package/src/cli/debug/Dashboard.js +152 -0
- package/src/cli/index.d.ts +14 -0
- package/src/cli/index.d.ts.map +1 -0
- package/src/cli/index.js +14 -0
- package/src/cli/logger/Logger.d.ts +43 -0
- package/src/cli/logger/Logger.d.ts.map +1 -0
- package/src/cli/logger/Logger.js +137 -0
- package/src/cli/scaffolding/ControllerGenerator.d.ts +44 -0
- package/src/cli/scaffolding/ControllerGenerator.d.ts.map +1 -0
- package/src/cli/scaffolding/ControllerGenerator.js +540 -0
- package/src/cli/scaffolding/FactoryGenerator.d.ts +47 -0
- package/src/cli/scaffolding/FactoryGenerator.d.ts.map +1 -0
- package/src/cli/scaffolding/FactoryGenerator.js +356 -0
- package/src/cli/scaffolding/FeatureScaffolder.d.ts +40 -0
- package/src/cli/scaffolding/FeatureScaffolder.d.ts.map +1 -0
- package/src/cli/scaffolding/FeatureScaffolder.js +747 -0
- package/src/cli/scaffolding/FileGenerator.d.ts +31 -0
- package/src/cli/scaffolding/FileGenerator.d.ts.map +1 -0
- package/src/cli/scaffolding/FileGenerator.js +222 -0
- package/src/cli/scaffolding/MigrationGenerator.d.ts +35 -0
- package/src/cli/scaffolding/MigrationGenerator.d.ts.map +1 -0
- package/src/cli/scaffolding/MigrationGenerator.js +257 -0
- package/src/cli/scaffolding/ModelGenerator.d.ts +81 -0
- package/src/cli/scaffolding/ModelGenerator.d.ts.map +1 -0
- package/src/cli/scaffolding/ModelGenerator.js +249 -0
- package/src/cli/scaffolding/ProjectScaffolder.d.ts +66 -0
- package/src/cli/scaffolding/ProjectScaffolder.d.ts.map +1 -0
- package/src/cli/scaffolding/ProjectScaffolder.js +439 -0
- package/src/cli/scaffolding/RequestFactoryGenerator.d.ts +50 -0
- package/src/cli/scaffolding/RequestFactoryGenerator.d.ts.map +1 -0
- package/src/cli/scaffolding/RequestFactoryGenerator.js +465 -0
- package/src/cli/scaffolding/ResponseFactoryGenerator.d.ts +43 -0
- package/src/cli/scaffolding/ResponseFactoryGenerator.d.ts.map +1 -0
- package/src/cli/scaffolding/ResponseFactoryGenerator.js +321 -0
- package/src/cli/scaffolding/RouteGenerator.d.ts +66 -0
- package/src/cli/scaffolding/RouteGenerator.d.ts.map +1 -0
- package/src/cli/scaffolding/RouteGenerator.js +306 -0
- package/src/cli/scaffolding/SeederGenerator.d.ts +47 -0
- package/src/cli/scaffolding/SeederGenerator.d.ts.map +1 -0
- package/src/cli/scaffolding/SeederGenerator.js +286 -0
- package/src/cli/scaffolding/ServiceIntegrationTestGenerator.d.ts +40 -0
- package/src/cli/scaffolding/ServiceIntegrationTestGenerator.d.ts.map +1 -0
- package/src/cli/scaffolding/ServiceIntegrationTestGenerator.js +267 -0
- package/src/cli/scaffolding/ServiceRequestFactoryGenerator.d.ts +45 -0
- package/src/cli/scaffolding/ServiceRequestFactoryGenerator.d.ts.map +1 -0
- package/src/cli/scaffolding/ServiceRequestFactoryGenerator.js +397 -0
- package/src/cli/scaffolding/ServiceScaffolder.d.ts +45 -0
- package/src/cli/scaffolding/ServiceScaffolder.d.ts.map +1 -0
- package/src/cli/scaffolding/ServiceScaffolder.js +367 -0
- package/src/cli/scaffolding/TemplateEngine.d.ts +35 -0
- package/src/cli/scaffolding/TemplateEngine.d.ts.map +1 -0
- package/src/cli/scaffolding/TemplateEngine.js +379 -0
- package/src/cli/scaffolding/WorkflowGenerator.d.ts +31 -0
- package/src/cli/scaffolding/WorkflowGenerator.d.ts.map +1 -0
- package/src/cli/scaffolding/WorkflowGenerator.js +193 -0
- package/src/cli/scaffolding/index.d.ts +34 -0
- package/src/cli/scaffolding/index.d.ts.map +1 -0
- package/src/cli/scaffolding/index.js +18 -0
- package/src/cli/utils/DistPackager.d.ts +8 -0
- package/src/cli/utils/DistPackager.d.ts.map +1 -0
- package/src/cli/utils/DistPackager.js +94 -0
- package/src/cli/utils/EnvFileLoader.d.ts +21 -0
- package/src/cli/utils/EnvFileLoader.d.ts.map +1 -0
- package/src/cli/utils/EnvFileLoader.js +166 -0
- package/src/cli/utils/spawn.d.ts +11 -0
- package/src/cli/utils/spawn.d.ts.map +1 -0
- package/src/cli/utils/spawn.js +81 -0
- package/src/common/index.d.ts +87 -0
- package/src/common/index.d.ts.map +1 -0
- package/src/common/index.js +207 -0
- package/src/config/SecretsManager.d.ts +122 -0
- package/src/config/SecretsManager.d.ts.map +1 -0
- package/src/config/SecretsManager.js +328 -0
- package/src/config/app.d.ts +56 -0
- package/src/config/app.d.ts.map +1 -0
- package/src/config/app.js +77 -0
- package/src/config/cache.d.ts +76 -0
- package/src/config/cache.d.ts.map +1 -0
- package/src/config/cache.js +62 -0
- package/src/config/constants.d.ts +108 -0
- package/src/config/constants.d.ts.map +1 -0
- package/src/config/constants.js +64 -0
- package/src/config/database.d.ts +122 -0
- package/src/config/database.d.ts.map +1 -0
- package/src/config/database.js +89 -0
- package/src/config/env.d.ts +56 -0
- package/src/config/env.d.ts.map +1 -0
- package/src/config/env.js +133 -0
- package/src/config/features.d.ts +27 -0
- package/src/config/features.d.ts.map +1 -0
- package/src/config/features.js +49 -0
- package/src/config/index.d.ts +554 -0
- package/src/config/index.d.ts.map +1 -0
- package/src/config/index.js +31 -0
- package/src/config/logger.d.ts +17 -0
- package/src/config/logger.d.ts.map +1 -0
- package/src/config/logger.js +77 -0
- package/src/config/microservices.d.ts +88 -0
- package/src/config/microservices.d.ts.map +1 -0
- package/src/config/microservices.js +90 -0
- package/src/config/queue.d.ts +107 -0
- package/src/config/queue.d.ts.map +1 -0
- package/src/config/queue.js +74 -0
- package/src/config/security.d.ts +108 -0
- package/src/config/security.d.ts.map +1 -0
- package/src/config/security.js +134 -0
- package/src/config/storage.d.ts +105 -0
- package/src/config/storage.d.ts.map +1 -0
- package/src/config/storage.js +79 -0
- package/src/container/ServiceContainer.d.ts +25 -0
- package/src/container/ServiceContainer.d.ts.map +1 -0
- package/src/container/ServiceContainer.js +75 -0
- package/src/database/migrations/index.d.ts +2 -0
- package/src/database/migrations/index.d.ts.map +1 -0
- package/src/database/migrations/index.js +1 -0
- package/src/exceptions/ZintrustError.d.ts +88 -0
- package/src/exceptions/ZintrustError.d.ts.map +1 -0
- package/src/exceptions/ZintrustError.js +110 -0
- package/src/features/Auth.d.ts +20 -0
- package/src/features/Auth.d.ts.map +1 -0
- package/src/features/Auth.js +32 -0
- package/src/features/Queue.d.ts +21 -0
- package/src/features/Queue.d.ts.map +1 -0
- package/src/features/Queue.js +59 -0
- package/src/functions/cloudflare.d.ts +5 -0
- package/src/functions/cloudflare.d.ts.map +1 -0
- package/src/functions/cloudflare.js +34 -0
- package/src/functions/deno.d.ts +3 -0
- package/src/functions/deno.d.ts.map +1 -0
- package/src/functions/deno.js +31 -0
- package/src/functions/lambda.d.ts +2 -0
- package/src/functions/lambda.d.ts.map +1 -0
- package/src/functions/lambda.js +32 -0
- package/src/http/Controller.d.ts +20 -0
- package/src/http/Controller.d.ts.map +1 -0
- package/src/http/Controller.js +46 -0
- package/src/http/Kernel.d.ts +24 -0
- package/src/http/Kernel.d.ts.map +1 -0
- package/src/http/Kernel.js +72 -0
- package/src/http/Request.d.ts +36 -0
- package/src/http/Request.d.ts.map +1 -0
- package/src/http/Request.js +142 -0
- package/src/http/Response.d.ts +32 -0
- package/src/http/Response.d.ts.map +1 -0
- package/src/http/Response.js +70 -0
- package/src/index.d.ts +43 -0
- package/src/index.d.ts.map +1 -0
- package/src/index.js +37 -0
- package/src/microservices/MicroserviceBootstrap.d.ts +75 -0
- package/src/microservices/MicroserviceBootstrap.d.ts.map +1 -0
- package/src/microservices/MicroserviceBootstrap.js +285 -0
- package/src/microservices/MicroserviceGenerator.d.ts +27 -0
- package/src/microservices/MicroserviceGenerator.d.ts.map +1 -0
- package/src/microservices/MicroserviceGenerator.js +436 -0
- package/src/microservices/MicroserviceManager.d.ts +68 -0
- package/src/microservices/MicroserviceManager.d.ts.map +1 -0
- package/src/microservices/MicroserviceManager.js +266 -0
- package/src/microservices/PostgresAdapter.d.ts +90 -0
- package/src/microservices/PostgresAdapter.d.ts.map +1 -0
- package/src/microservices/PostgresAdapter.js +286 -0
- package/src/microservices/RequestTracingMiddleware.d.ts +41 -0
- package/src/microservices/RequestTracingMiddleware.d.ts.map +1 -0
- package/src/microservices/RequestTracingMiddleware.js +122 -0
- package/src/microservices/ServiceAuthMiddleware.d.ts +58 -0
- package/src/microservices/ServiceAuthMiddleware.d.ts.map +1 -0
- package/src/microservices/ServiceAuthMiddleware.js +240 -0
- package/src/microservices/ServiceBundler.d.ts +45 -0
- package/src/microservices/ServiceBundler.d.ts.map +1 -0
- package/src/microservices/ServiceBundler.js +297 -0
- package/src/microservices/ServiceHealthMonitor.d.ts +96 -0
- package/src/microservices/ServiceHealthMonitor.d.ts.map +1 -0
- package/src/microservices/ServiceHealthMonitor.js +379 -0
- package/src/middleware/CsrfMiddleware.d.ts +19 -0
- package/src/middleware/CsrfMiddleware.d.ts.map +1 -0
- package/src/middleware/CsrfMiddleware.js +121 -0
- package/src/middleware/MiddlewareStack.d.ts +27 -0
- package/src/middleware/MiddlewareStack.d.ts.map +1 -0
- package/src/middleware/MiddlewareStack.js +43 -0
- package/src/middleware/RateLimiter.d.ts +22 -0
- package/src/middleware/RateLimiter.d.ts.map +1 -0
- package/src/middleware/RateLimiter.js +72 -0
- package/src/middleware/SecurityMiddleware.d.ts +33 -0
- package/src/middleware/SecurityMiddleware.d.ts.map +1 -0
- package/src/middleware/SecurityMiddleware.js +106 -0
- package/src/middleware/index.d.ts +9 -0
- package/src/middleware/index.d.ts.map +1 -0
- package/src/middleware/index.js +8 -0
- package/src/node-singletons/child-process.d.ts +7 -0
- package/src/node-singletons/child-process.d.ts.map +1 -0
- package/src/node-singletons/child-process.js +6 -0
- package/src/node-singletons/crypto.d.ts +7 -0
- package/src/node-singletons/crypto.d.ts.map +1 -0
- package/src/node-singletons/crypto.js +6 -0
- package/src/node-singletons/events.d.ts +7 -0
- package/src/node-singletons/events.d.ts.map +1 -0
- package/src/node-singletons/events.js +6 -0
- package/src/node-singletons/fs.d.ts +12 -0
- package/src/node-singletons/fs.d.ts.map +1 -0
- package/src/node-singletons/fs.js +14 -0
- package/src/node-singletons/http.d.ts +8 -0
- package/src/node-singletons/http.d.ts.map +1 -0
- package/src/node-singletons/http.js +6 -0
- package/src/node-singletons/index.d.ts +30 -0
- package/src/node-singletons/index.d.ts.map +1 -0
- package/src/node-singletons/index.js +31 -0
- package/src/node-singletons/os.d.ts +9 -0
- package/src/node-singletons/os.d.ts.map +1 -0
- package/src/node-singletons/os.js +9 -0
- package/src/node-singletons/path.d.ts +7 -0
- package/src/node-singletons/path.d.ts.map +1 -0
- package/src/node-singletons/path.js +6 -0
- package/src/node-singletons/perf-hooks.d.ts +7 -0
- package/src/node-singletons/perf-hooks.d.ts.map +1 -0
- package/src/node-singletons/perf-hooks.js +6 -0
- package/src/node-singletons/readline.d.ts +10 -0
- package/src/node-singletons/readline.d.ts.map +1 -0
- package/src/node-singletons/readline.js +9 -0
- package/src/node-singletons/url.d.ts +7 -0
- package/src/node-singletons/url.d.ts.map +1 -0
- package/src/node-singletons/url.js +6 -0
- package/src/orm/ConnectionManager.d.ts +118 -0
- package/src/orm/ConnectionManager.d.ts.map +1 -0
- package/src/orm/ConnectionManager.js +401 -0
- package/src/orm/Database.d.ts +31 -0
- package/src/orm/Database.d.ts.map +1 -0
- package/src/orm/Database.js +163 -0
- package/src/orm/DatabaseAdapter.d.ts +96 -0
- package/src/orm/DatabaseAdapter.d.ts.map +1 -0
- package/src/orm/DatabaseAdapter.js +40 -0
- package/src/orm/Model.d.ts +91 -0
- package/src/orm/Model.d.ts.map +1 -0
- package/src/orm/Model.js +206 -0
- package/src/orm/QueryBuilder.d.ts +52 -0
- package/src/orm/QueryBuilder.d.ts.map +1 -0
- package/src/orm/QueryBuilder.js +134 -0
- package/src/orm/Relationships.d.ts +53 -0
- package/src/orm/Relationships.d.ts.map +1 -0
- package/src/orm/Relationships.js +98 -0
- package/src/orm/Schema.d.ts +123 -0
- package/src/orm/Schema.d.ts.map +1 -0
- package/src/orm/Schema.js +169 -0
- package/src/orm/adapters/D1Adapter.d.ts +15 -0
- package/src/orm/adapters/D1Adapter.d.ts.map +1 -0
- package/src/orm/adapters/D1Adapter.js +125 -0
- package/src/orm/adapters/MySQLAdapter.d.ts +16 -0
- package/src/orm/adapters/MySQLAdapter.d.ts.map +1 -0
- package/src/orm/adapters/MySQLAdapter.js +87 -0
- package/src/orm/adapters/PostgreSQLAdapter.d.ts +16 -0
- package/src/orm/adapters/PostgreSQLAdapter.d.ts.map +1 -0
- package/src/orm/adapters/PostgreSQLAdapter.js +87 -0
- package/src/orm/adapters/SQLServerAdapter.d.ts +16 -0
- package/src/orm/adapters/SQLServerAdapter.d.ts.map +1 -0
- package/src/orm/adapters/SQLServerAdapter.js +81 -0
- package/src/orm/adapters/SQLiteAdapter.d.ts +11 -0
- package/src/orm/adapters/SQLiteAdapter.d.ts.map +1 -0
- package/src/orm/adapters/SQLiteAdapter.js +131 -0
- package/src/performance/Benchmark.d.ts +87 -0
- package/src/performance/Benchmark.d.ts.map +1 -0
- package/src/performance/Benchmark.js +304 -0
- package/src/performance/CodeGenerationBenchmark.d.ts +23 -0
- package/src/performance/CodeGenerationBenchmark.d.ts.map +1 -0
- package/src/performance/CodeGenerationBenchmark.js +249 -0
- package/src/performance/Optimizer.d.ts +99 -0
- package/src/performance/Optimizer.d.ts.map +1 -0
- package/src/performance/Optimizer.js +396 -0
- package/src/performance/establish-baseline.d.ts +9 -0
- package/src/performance/establish-baseline.d.ts.map +1 -0
- package/src/performance/establish-baseline.js +55 -0
- package/src/profiling/MemoryProfiler.d.ts +32 -0
- package/src/profiling/MemoryProfiler.d.ts.map +1 -0
- package/src/profiling/MemoryProfiler.js +84 -0
- package/src/profiling/N1Detector.d.ts +16 -0
- package/src/profiling/N1Detector.d.ts.map +1 -0
- package/src/profiling/N1Detector.js +120 -0
- package/src/profiling/QueryLogger.d.ts +107 -0
- package/src/profiling/QueryLogger.d.ts.map +1 -0
- package/src/profiling/QueryLogger.js +148 -0
- package/src/profiling/RequestProfiler.d.ts +30 -0
- package/src/profiling/RequestProfiler.d.ts.map +1 -0
- package/src/profiling/RequestProfiler.js +94 -0
- package/src/profiling/types.d.ts +77 -0
- package/src/profiling/types.d.ts.map +1 -0
- package/src/profiling/types.js +5 -0
- package/src/routing/Router.d.ts +52 -0
- package/src/routing/Router.d.ts.map +1 -0
- package/src/routing/Router.js +191 -0
- package/src/runtime/PluginManager.d.ts +30 -0
- package/src/runtime/PluginManager.d.ts.map +1 -0
- package/src/runtime/PluginManager.js +197 -0
- package/src/runtime/PluginRegistry.d.ts +22 -0
- package/src/runtime/PluginRegistry.d.ts.map +1 -0
- package/src/runtime/PluginRegistry.js +93 -0
- package/src/runtime/RuntimeAdapter.d.ts +126 -0
- package/src/runtime/RuntimeAdapter.d.ts.map +1 -0
- package/src/runtime/RuntimeAdapter.js +127 -0
- package/src/runtime/RuntimeDetector.d.ts +15 -0
- package/src/runtime/RuntimeDetector.d.ts.map +1 -0
- package/src/runtime/RuntimeDetector.js +219 -0
- package/src/runtime/adapters/CloudflareAdapter.d.ts +43 -0
- package/src/runtime/adapters/CloudflareAdapter.d.ts.map +1 -0
- package/src/runtime/adapters/CloudflareAdapter.js +175 -0
- package/src/runtime/adapters/DenoAdapter.d.ts +30 -0
- package/src/runtime/adapters/DenoAdapter.d.ts.map +1 -0
- package/src/runtime/adapters/DenoAdapter.js +191 -0
- package/src/runtime/adapters/FargateAdapter.d.ts +40 -0
- package/src/runtime/adapters/FargateAdapter.d.ts.map +1 -0
- package/src/runtime/adapters/FargateAdapter.js +156 -0
- package/src/runtime/adapters/LambdaAdapter.d.ts +13 -0
- package/src/runtime/adapters/LambdaAdapter.d.ts.map +1 -0
- package/src/runtime/adapters/LambdaAdapter.js +302 -0
- package/src/runtime/adapters/NodeServerAdapter.d.ts +16 -0
- package/src/runtime/adapters/NodeServerAdapter.d.ts.map +1 -0
- package/src/runtime/adapters/NodeServerAdapter.js +199 -0
- package/src/scripts/TemplateSync.d.ts +7 -0
- package/src/scripts/TemplateSync.d.ts.map +1 -0
- package/src/scripts/TemplateSync.js +234 -0
- package/src/security/CsrfTokenManager.d.ts +28 -0
- package/src/security/CsrfTokenManager.d.ts.map +1 -0
- package/src/security/CsrfTokenManager.js +78 -0
- package/src/security/Encryptor.d.ts +15 -0
- package/src/security/Encryptor.d.ts.map +1 -0
- package/src/security/Encryptor.js +142 -0
- package/src/security/JwtManager.d.ts +41 -0
- package/src/security/JwtManager.d.ts.map +1 -0
- package/src/security/JwtManager.js +229 -0
- package/src/security/UrlValidator.d.ts +21 -0
- package/src/security/UrlValidator.d.ts.map +1 -0
- package/src/security/UrlValidator.js +42 -0
- package/src/security/XssProtection.d.ts +24 -0
- package/src/security/XssProtection.d.ts.map +1 -0
- package/src/security/XssProtection.js +133 -0
- package/src/templates/TemplateRegistry.d.ts +40 -0
- package/src/templates/TemplateRegistry.d.ts.map +1 -0
- package/src/templates/TemplateRegistry.js +78 -0
- package/src/templates/TemplateRegistry.ts +91 -0
- package/src/templates/adapters/MySQLAdapter.ts.tpl +97 -0
- package/src/templates/adapters/PostgreSQLAdapter.ts.tpl +101 -0
- package/src/templates/adapters/SQLServerAdapter.ts.tpl +95 -0
- package/src/templates/adapters/SQLiteAdapter.ts.tpl +189 -0
- package/src/templates/features/Auth.ts.tpl +40 -0
- package/src/templates/features/Queue.ts.tpl +75 -0
- package/src/templates/project/basic/.env.example.tpl +26 -0
- package/src/templates/project/basic/.env.tpl +164 -0
- package/src/templates/project/basic/README.md.tpl +13 -0
- package/src/templates/project/basic/app/Controllers/UserController.ts.tpl +155 -0
- package/src/templates/project/basic/app/Middleware/ProfilerMiddleware.ts.tpl +55 -0
- package/src/templates/project/basic/app/Middleware/index.ts.tpl +304 -0
- package/src/templates/project/basic/app/Models/Post.ts.tpl +30 -0
- package/src/templates/project/basic/app/Models/User.ts.tpl +53 -0
- package/src/templates/project/basic/config/SecretsManager.ts.tpl +453 -0
- package/src/templates/project/basic/config/app.ts.tpl +97 -0
- package/src/templates/project/basic/config/cache.ts.tpl +117 -0
- package/src/templates/project/basic/config/constants.ts.tpl +70 -0
- package/src/templates/project/basic/config/database.ts.tpl +152 -0
- package/src/templates/project/basic/config/env.ts.tpl +148 -0
- package/src/templates/project/basic/config/features.ts.tpl +57 -0
- package/src/templates/project/basic/config/index.ts.tpl +36 -0
- package/src/templates/project/basic/config/logger.ts.tpl +95 -0
- package/src/templates/project/basic/config/microservices.ts.tpl +104 -0
- package/src/templates/project/basic/config/queue.ts.tpl +134 -0
- package/src/templates/project/basic/config/security.ts.tpl +149 -0
- package/src/templates/project/basic/config/storage.ts.tpl +136 -0
- package/src/templates/project/basic/database/factories/.gitkeep.tpl +0 -0
- package/src/templates/project/basic/database/migrations/.gitkeep.tpl +0 -0
- package/src/templates/project/basic/database/migrations/index.ts.tpl +2 -0
- package/src/templates/project/basic/database/seeders/.gitkeep.tpl +0 -0
- package/src/templates/project/basic/package.json.tpl +22 -0
- package/src/templates/project/basic/routes/api.ts.tpl +135 -0
- package/src/templates/project/basic/src/index.ts.tpl +49 -0
- package/src/templates/project/basic/template.json +17 -0
- package/src/templates/project/basic/tsconfig.json.tpl +20 -0
- package/src/validation/ValidationError.d.ts +42 -0
- package/src/validation/ValidationError.d.ts.map +1 -0
- package/src/validation/ValidationError.js +53 -0
- package/src/validation/Validator.d.ts +60 -0
- package/src/validation/Validator.d.ts.map +1 -0
- package/src/validation/Validator.js +190 -0
|
@@ -0,0 +1,321 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Response Factory Generator - Phase 7
|
|
3
|
+
* Generates response/output DTO factories with built-in validation
|
|
4
|
+
*/
|
|
5
|
+
import { FileGenerator } from '../scaffolding/FileGenerator';
|
|
6
|
+
import { Logger } from '../../config/logger';
|
|
7
|
+
import { ErrorFactory } from '../../exceptions/ZintrustError';
|
|
8
|
+
import { fsPromises as fs } from '../../node-singletons/fs';
|
|
9
|
+
import * as path from 'node:path';
|
|
10
|
+
/**
|
|
11
|
+
* Validate response factory options
|
|
12
|
+
*/
|
|
13
|
+
export async function validateOptions(options) {
|
|
14
|
+
if (options.factoryName.trim() === '') {
|
|
15
|
+
throw ErrorFactory.createCliError('Response factory name is required');
|
|
16
|
+
}
|
|
17
|
+
if (options.responseName.trim() === '') {
|
|
18
|
+
throw ErrorFactory.createCliError('Response name is required');
|
|
19
|
+
}
|
|
20
|
+
if (options.factoriesPath === '') {
|
|
21
|
+
throw ErrorFactory.createCliError('Factories path is required');
|
|
22
|
+
}
|
|
23
|
+
// Verify factory path exists
|
|
24
|
+
const pathExists = await fs
|
|
25
|
+
.access(options.factoriesPath)
|
|
26
|
+
.then(() => true)
|
|
27
|
+
.catch(() => false);
|
|
28
|
+
if (!pathExists) {
|
|
29
|
+
throw ErrorFactory.createCliError(`Factories directory not found: ${options.factoriesPath}`);
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Generate response factory
|
|
34
|
+
*/
|
|
35
|
+
export async function generate(options) {
|
|
36
|
+
try {
|
|
37
|
+
await validateOptions(options);
|
|
38
|
+
const factoryPath = path.join(options.factoriesPath, `${options.factoryName}.ts`);
|
|
39
|
+
const factoryCode = generateFactoryCode(options);
|
|
40
|
+
// Write factory file
|
|
41
|
+
FileGenerator.writeFile(factoryPath, factoryCode);
|
|
42
|
+
Logger.info(`✅ Generated response factory: ${options.factoryName}`);
|
|
43
|
+
// Generate response DTO if requested
|
|
44
|
+
let responsePath;
|
|
45
|
+
if (options.responsesPath !== undefined) {
|
|
46
|
+
responsePath = await generateResponseDTO(options);
|
|
47
|
+
}
|
|
48
|
+
return {
|
|
49
|
+
success: true,
|
|
50
|
+
factoryPath,
|
|
51
|
+
responsePath,
|
|
52
|
+
message: `Response factory '${options.factoryName}' generated successfully`,
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
catch (err) {
|
|
56
|
+
ErrorFactory.createTryCatchError('Response factory generation failed', err);
|
|
57
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
58
|
+
return {
|
|
59
|
+
success: false,
|
|
60
|
+
factoryPath: '',
|
|
61
|
+
message: `Failed to generate response factory: ${message}`,
|
|
62
|
+
};
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Generate factory methods (times, setState, make, makeMany, get, first)
|
|
67
|
+
*/
|
|
68
|
+
function generateFactoryMethods() {
|
|
69
|
+
return ` /**
|
|
70
|
+
* Generate multiple responses
|
|
71
|
+
*/
|
|
72
|
+
times(count: number) {
|
|
73
|
+
recordCount = count;
|
|
74
|
+
return factory;
|
|
75
|
+
},
|
|
76
|
+
|
|
77
|
+
/**
|
|
78
|
+
* Set response state (success, error, partial)
|
|
79
|
+
*/
|
|
80
|
+
setState(state: 'success' | 'error' | 'partial') {
|
|
81
|
+
responseState = state;
|
|
82
|
+
return factory;
|
|
83
|
+
},
|
|
84
|
+
|
|
85
|
+
/**
|
|
86
|
+
* Generate single response
|
|
87
|
+
*/
|
|
88
|
+
make() {
|
|
89
|
+
return factory.generateResponse();
|
|
90
|
+
},
|
|
91
|
+
|
|
92
|
+
/**
|
|
93
|
+
* Generate multiple responses
|
|
94
|
+
*/
|
|
95
|
+
makeMany() {
|
|
96
|
+
return Array.from({ length: recordCount }, () => factory.generateResponse());
|
|
97
|
+
},
|
|
98
|
+
|
|
99
|
+
/**
|
|
100
|
+
* Alias for makeMany()
|
|
101
|
+
*/
|
|
102
|
+
get() {
|
|
103
|
+
return factory.makeMany();
|
|
104
|
+
},
|
|
105
|
+
|
|
106
|
+
/**
|
|
107
|
+
* Get first response
|
|
108
|
+
*/
|
|
109
|
+
first() {
|
|
110
|
+
return factory.make();
|
|
111
|
+
},`;
|
|
112
|
+
}
|
|
113
|
+
/**
|
|
114
|
+
* Generate response generation method
|
|
115
|
+
*/
|
|
116
|
+
function generateResponseMethod(responseName, fields, responseType) {
|
|
117
|
+
return ` /**
|
|
118
|
+
* Generate response with state handling
|
|
119
|
+
*/
|
|
120
|
+
generateResponse() {
|
|
121
|
+
const data: Record<string, unknown> = {
|
|
122
|
+
${generateFieldAssignments(fields, responseType)}
|
|
123
|
+
};
|
|
124
|
+
|
|
125
|
+
// Apply state transformations
|
|
126
|
+
if (responseState === 'error') {
|
|
127
|
+
data.status = 'error';
|
|
128
|
+
data.errors = ['An error occurred'];
|
|
129
|
+
} else if (responseState === 'partial') {
|
|
130
|
+
// Set some fields to null/undefined for partial response testing
|
|
131
|
+
${generatePartialFields(fields)}
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
return ${responseName}.create(data);
|
|
135
|
+
},`;
|
|
136
|
+
}
|
|
137
|
+
/**
|
|
138
|
+
* Generate response factory code
|
|
139
|
+
*/
|
|
140
|
+
function generateFactoryCode(options) {
|
|
141
|
+
const { factoryName, responseName, fields = [], responseType = 'success' } = options;
|
|
142
|
+
const helperMethods = generateHelperMethods(fields);
|
|
143
|
+
const dtoImport = options.responsesPath === undefined
|
|
144
|
+
? `export const ${responseName} = {
|
|
145
|
+
create(data: Record<string, unknown> = {}) {
|
|
146
|
+
return { ...data };
|
|
147
|
+
}
|
|
148
|
+
};`
|
|
149
|
+
: `import { ${responseName} } from '@app/Responses/${responseName}';`;
|
|
150
|
+
return `/**
|
|
151
|
+
* ${factoryName} - Response Factory
|
|
152
|
+
* Generates ${responseName} response instances for testing
|
|
153
|
+
*
|
|
154
|
+
* Response Type: ${responseType}
|
|
155
|
+
*/
|
|
156
|
+
|
|
157
|
+
import { faker } from '@faker-js/faker';
|
|
158
|
+
|
|
159
|
+
${dtoImport}
|
|
160
|
+
|
|
161
|
+
/**
|
|
162
|
+
* ${factoryName} - Generates response test data
|
|
163
|
+
*/
|
|
164
|
+
export const ${factoryName} = Object.freeze({
|
|
165
|
+
/**
|
|
166
|
+
* Create a new factory instance
|
|
167
|
+
*/
|
|
168
|
+
new() {
|
|
169
|
+
let recordCount = 1;
|
|
170
|
+
let responseState = 'success';
|
|
171
|
+
|
|
172
|
+
const factory = {
|
|
173
|
+
${generateFactoryMethods()}
|
|
174
|
+
|
|
175
|
+
${generateResponseMethod(responseName, fields, responseType)}
|
|
176
|
+
|
|
177
|
+
${helperMethods}
|
|
178
|
+
};
|
|
179
|
+
|
|
180
|
+
return factory;
|
|
181
|
+
}
|
|
182
|
+
});
|
|
183
|
+
|
|
184
|
+
export default ${factoryName};
|
|
185
|
+
`;
|
|
186
|
+
}
|
|
187
|
+
/**
|
|
188
|
+
* Generate response DTO code
|
|
189
|
+
*/
|
|
190
|
+
async function generateResponseDTO(options) {
|
|
191
|
+
if (options.responsesPath === undefined) {
|
|
192
|
+
throw ErrorFactory.createCliError('Responses path is required');
|
|
193
|
+
}
|
|
194
|
+
const dtoPath = path.join(options.responsesPath, `${options.responseName}.ts`);
|
|
195
|
+
const dtoCode = `/**
|
|
196
|
+
* ${options.responseName} - Response DTO
|
|
197
|
+
* Serializes and validates API response data
|
|
198
|
+
*
|
|
199
|
+
* Type: ${options.responseType}
|
|
200
|
+
*/
|
|
201
|
+
|
|
202
|
+
export const ${options.responseName} = Object.freeze({
|
|
203
|
+
create(data: Record<string, unknown> = {}) {
|
|
204
|
+
const response = {
|
|
205
|
+
...data,
|
|
206
|
+
|
|
207
|
+
/**
|
|
208
|
+
* Serialize to JSON
|
|
209
|
+
*/
|
|
210
|
+
toJSON() {
|
|
211
|
+
const d = response as any;
|
|
212
|
+
return {
|
|
213
|
+
${(options.fields ?? []).map((f) => ` ${f.name}: d.${f.name}`).join(',\n')}
|
|
214
|
+
};
|
|
215
|
+
},
|
|
216
|
+
|
|
217
|
+
/**
|
|
218
|
+
* Validate response
|
|
219
|
+
*/
|
|
220
|
+
validate(): string[] {
|
|
221
|
+
const errors: string[] = [];
|
|
222
|
+
const d = response as any;
|
|
223
|
+
|
|
224
|
+
${(options.fields ?? [])
|
|
225
|
+
.filter((f) => f.required === true)
|
|
226
|
+
.map((f) => ` if (d.${f.name} === undefined || d.${f.name} === null) {
|
|
227
|
+
errors.push('${f.name} is required');
|
|
228
|
+
}`)
|
|
229
|
+
.join('\n')}
|
|
230
|
+
|
|
231
|
+
return errors;
|
|
232
|
+
},
|
|
233
|
+
};
|
|
234
|
+
|
|
235
|
+
return response;
|
|
236
|
+
}
|
|
237
|
+
};
|
|
238
|
+
|
|
239
|
+
export default ${options.responseName};
|
|
240
|
+
`;
|
|
241
|
+
FileGenerator.writeFile(dtoPath, dtoCode);
|
|
242
|
+
Logger.info(`✅ Generated response DTO: ${options.responseName}`);
|
|
243
|
+
return dtoPath;
|
|
244
|
+
}
|
|
245
|
+
/**
|
|
246
|
+
* Generate field assignments for the factory
|
|
247
|
+
*/
|
|
248
|
+
function generateFieldAssignments(fields, responseType) {
|
|
249
|
+
const assignments = fields.map((field) => {
|
|
250
|
+
let value = 'faker.lorem.word()';
|
|
251
|
+
if (field.type === 'email')
|
|
252
|
+
value = 'faker.internet.email()';
|
|
253
|
+
else if (field.type === 'number')
|
|
254
|
+
value = 'faker.number.int({ min: 1, max: 1000 })';
|
|
255
|
+
else if (field.type === 'boolean')
|
|
256
|
+
value = 'faker.datatype.boolean()';
|
|
257
|
+
else if (field.type === 'uuid')
|
|
258
|
+
value = 'faker.string.uuid()';
|
|
259
|
+
else if (field.type === 'date')
|
|
260
|
+
value = 'faker.date.recent().toISOString()';
|
|
261
|
+
else if (field.type === 'json')
|
|
262
|
+
value = '{ key: faker.lorem.word() }';
|
|
263
|
+
if (field.array === true) {
|
|
264
|
+
value = `Array.from({ length: 3 }, () => ${value})`;
|
|
265
|
+
}
|
|
266
|
+
return ` ${field.name}: ${value},`;
|
|
267
|
+
});
|
|
268
|
+
if (responseType === 'paginated') {
|
|
269
|
+
// Provide a minimal, predictable pagination shape for tests and examples.
|
|
270
|
+
if (!fields.some((f) => f.name === 'pagination')) {
|
|
271
|
+
assignments.push(' pagination: { page: 1, limit: 10, total: 100 },');
|
|
272
|
+
}
|
|
273
|
+
if (!fields.some((f) => f.name === 'items')) {
|
|
274
|
+
assignments.push(' items: [],');
|
|
275
|
+
}
|
|
276
|
+
}
|
|
277
|
+
if (responseType === 'success' && !fields.some((f) => f.name === 'status')) {
|
|
278
|
+
assignments.push(" status: 'success',");
|
|
279
|
+
}
|
|
280
|
+
return assignments.join('\n');
|
|
281
|
+
}
|
|
282
|
+
/**
|
|
283
|
+
* Generate partial field modifications
|
|
284
|
+
*/
|
|
285
|
+
function generatePartialFields(fields) {
|
|
286
|
+
return fields
|
|
287
|
+
.filter((f) => (f.required ?? false) !== true)
|
|
288
|
+
.map((f) => `data.${f.name} = null;`)
|
|
289
|
+
.join('\n ');
|
|
290
|
+
}
|
|
291
|
+
/**
|
|
292
|
+
* Generate helper methods for the factory
|
|
293
|
+
*/
|
|
294
|
+
function generateHelperMethods(fields) {
|
|
295
|
+
return fields
|
|
296
|
+
.map((field) => `
|
|
297
|
+
/**
|
|
298
|
+
* Set ${field.name}
|
|
299
|
+
*/
|
|
300
|
+
with${capitalizeType(field.name)}(value: any) {
|
|
301
|
+
return factory.generateResponse().then((res: any) => {
|
|
302
|
+
res.${field.name} = value;
|
|
303
|
+
return res;
|
|
304
|
+
});
|
|
305
|
+
},`)
|
|
306
|
+
.join('\n');
|
|
307
|
+
}
|
|
308
|
+
/**
|
|
309
|
+
* Capitalize type name
|
|
310
|
+
*/
|
|
311
|
+
function capitalizeType(type) {
|
|
312
|
+
return type.charAt(0).toUpperCase() + type.slice(1);
|
|
313
|
+
}
|
|
314
|
+
/**
|
|
315
|
+
* Response Factory Generator - Phase 7
|
|
316
|
+
* Generates response/output DTO factories with built-in validation
|
|
317
|
+
*/
|
|
318
|
+
export const ResponseFactoryGenerator = Object.freeze({
|
|
319
|
+
validateOptions,
|
|
320
|
+
generate,
|
|
321
|
+
});
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* RouteGenerator - Generate route files
|
|
3
|
+
* Creates route definitions with middleware and parameters
|
|
4
|
+
*/
|
|
5
|
+
export type RouteMethod = 'get' | 'post' | 'put' | 'patch' | 'delete' | 'resource';
|
|
6
|
+
export interface RouteDefinition {
|
|
7
|
+
method: RouteMethod;
|
|
8
|
+
path: string;
|
|
9
|
+
controller: string;
|
|
10
|
+
action?: string;
|
|
11
|
+
middleware?: string[];
|
|
12
|
+
params?: string[];
|
|
13
|
+
}
|
|
14
|
+
export interface RouteOptions {
|
|
15
|
+
routesPath: string;
|
|
16
|
+
groupName?: string;
|
|
17
|
+
prefix?: string;
|
|
18
|
+
middleware?: string[];
|
|
19
|
+
routes: RouteDefinition[];
|
|
20
|
+
namespace?: string;
|
|
21
|
+
}
|
|
22
|
+
export interface RouteGeneratorResult {
|
|
23
|
+
success: boolean;
|
|
24
|
+
routeFile: string;
|
|
25
|
+
routeCount: number;
|
|
26
|
+
message: string;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Validate route options
|
|
30
|
+
*/
|
|
31
|
+
export declare function validateOptions(options: RouteOptions): {
|
|
32
|
+
valid: boolean;
|
|
33
|
+
errors: string[];
|
|
34
|
+
};
|
|
35
|
+
/**
|
|
36
|
+
* Generate route file
|
|
37
|
+
*/
|
|
38
|
+
export declare function generateRoutes(options: RouteOptions): Promise<RouteGeneratorResult>;
|
|
39
|
+
/**
|
|
40
|
+
* Generate common API routes (User CRUD example)
|
|
41
|
+
*/
|
|
42
|
+
export declare function getUserApiRoutes(): RouteDefinition[];
|
|
43
|
+
/**
|
|
44
|
+
* Generate common auth routes
|
|
45
|
+
*/
|
|
46
|
+
export declare function getAuthRoutes(): RouteDefinition[];
|
|
47
|
+
/**
|
|
48
|
+
* Generate common admin routes
|
|
49
|
+
*/
|
|
50
|
+
export declare function getAdminRoutes(): RouteDefinition[];
|
|
51
|
+
/**
|
|
52
|
+
* Get common HTTP methods
|
|
53
|
+
*/
|
|
54
|
+
export declare function getCommonMethods(): RouteMethod[];
|
|
55
|
+
/**
|
|
56
|
+
* RouteGenerator creates route definitions
|
|
57
|
+
*/
|
|
58
|
+
export declare const RouteGenerator: Readonly<{
|
|
59
|
+
validateOptions: typeof validateOptions;
|
|
60
|
+
generateRoutes: typeof generateRoutes;
|
|
61
|
+
getUserApiRoutes: typeof getUserApiRoutes;
|
|
62
|
+
getAuthRoutes: typeof getAuthRoutes;
|
|
63
|
+
getAdminRoutes: typeof getAdminRoutes;
|
|
64
|
+
getCommonMethods: typeof getCommonMethods;
|
|
65
|
+
}>;
|
|
66
|
+
//# sourceMappingURL=RouteGenerator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RouteGenerator.d.ts","sourceRoot":"","sources":["../../../../src/cli/scaffolding/RouteGenerator.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAMH,MAAM,MAAM,WAAW,GAAG,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,OAAO,GAAG,QAAQ,GAAG,UAAU,CAAC;AAEnF,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,WAAW,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;CACnB;AAED,MAAM,WAAW,YAAY;IAC3B,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,MAAM,EAAE,eAAe,EAAE,CAAC;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,YAAY,GAAG;IAAE,KAAK,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,MAAM,EAAE,CAAA;CAAE,CAqB3F;AAED;;GAEG;AACH,wBAAsB,cAAc,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,oBAAoB,CAAC,CA2CzF;AA+HD;;GAEG;AACH,wBAAgB,gBAAgB,IAAI,eAAe,EAAE,CAsCpD;AAED;;GAEG;AACH,wBAAgB,aAAa,IAAI,eAAe,EAAE,CA6BjD;AAED;;GAEG;AACH,wBAAgB,cAAc,IAAI,eAAe,EAAE,CA+BlD;AAED;;GAEG;AACH,wBAAgB,gBAAgB,IAAI,WAAW,EAAE,CAEhD;AAED;;GAEG;AACH,eAAO,MAAM,cAAc;;;;;;;EAOzB,CAAC"}
|
|
@@ -0,0 +1,306 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* RouteGenerator - Generate route files
|
|
3
|
+
* Creates route definitions with middleware and parameters
|
|
4
|
+
*/
|
|
5
|
+
import { FileGenerator } from '../scaffolding/FileGenerator';
|
|
6
|
+
import { Logger } from '../../config/logger';
|
|
7
|
+
import * as path from 'node:path';
|
|
8
|
+
/**
|
|
9
|
+
* Validate route options
|
|
10
|
+
*/
|
|
11
|
+
export function validateOptions(options) {
|
|
12
|
+
const errors = [];
|
|
13
|
+
if (options.routesPath === '' || !FileGenerator.directoryExists(options.routesPath)) {
|
|
14
|
+
errors.push(`Routes directory does not exist: ${options.routesPath}`);
|
|
15
|
+
}
|
|
16
|
+
if (options.routes.length === 0) {
|
|
17
|
+
errors.push(`No routes provided`);
|
|
18
|
+
}
|
|
19
|
+
const validMethods = ['get', 'post', 'put', 'patch', 'delete', 'resource'];
|
|
20
|
+
const invalidRoutes = options.routes.filter((r) => !validMethods.includes(r.method));
|
|
21
|
+
if (invalidRoutes.length > 0) {
|
|
22
|
+
errors.push(`Invalid route methods. Supported: ${validMethods.join(', ')}`);
|
|
23
|
+
}
|
|
24
|
+
return {
|
|
25
|
+
valid: errors.length === 0,
|
|
26
|
+
errors,
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Generate route file
|
|
31
|
+
*/
|
|
32
|
+
export async function generateRoutes(options) {
|
|
33
|
+
const validation = validateOptions(options);
|
|
34
|
+
if (!validation.valid) {
|
|
35
|
+
return {
|
|
36
|
+
success: false,
|
|
37
|
+
routeFile: '',
|
|
38
|
+
routeCount: 0,
|
|
39
|
+
message: `Validation failed: ${validation.errors.join(', ')}`,
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
try {
|
|
43
|
+
const routeContent = buildRouteWrapper(options);
|
|
44
|
+
const groupName = options.groupName ?? 'routes';
|
|
45
|
+
const routeFile = path.join(options.routesPath, `${groupName}.ts`);
|
|
46
|
+
const created = FileGenerator.writeFile(routeFile, routeContent);
|
|
47
|
+
if (!created) {
|
|
48
|
+
return {
|
|
49
|
+
success: false,
|
|
50
|
+
routeFile,
|
|
51
|
+
routeCount: 0,
|
|
52
|
+
message: `Failed to create route file`,
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
Logger.info(`✅ Generated routes: ${routeFile} (${options.routes.length} routes)`);
|
|
56
|
+
return {
|
|
57
|
+
success: true,
|
|
58
|
+
routeFile,
|
|
59
|
+
routeCount: options.routes.length,
|
|
60
|
+
message: `Routes created successfully`,
|
|
61
|
+
};
|
|
62
|
+
}
|
|
63
|
+
catch (error) {
|
|
64
|
+
Logger.error('Route generation failed', error);
|
|
65
|
+
return {
|
|
66
|
+
success: false,
|
|
67
|
+
routeFile: '',
|
|
68
|
+
routeCount: 0,
|
|
69
|
+
message: `Error: ${error.message}`,
|
|
70
|
+
};
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Build route wrapper TypeScript code
|
|
75
|
+
*/
|
|
76
|
+
function buildRouteWrapper(options) {
|
|
77
|
+
const imports = buildImports(options);
|
|
78
|
+
const routeRegistration = buildRouteRegistration(options);
|
|
79
|
+
return `/**
|
|
80
|
+
* Routes
|
|
81
|
+
* Auto-generated route definitions
|
|
82
|
+
*/
|
|
83
|
+
|
|
84
|
+
${imports}
|
|
85
|
+
|
|
86
|
+
export function registerRoutes(router: Router): void {
|
|
87
|
+
${routeRegistration}
|
|
88
|
+
}
|
|
89
|
+
`;
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Build import statements
|
|
93
|
+
*/
|
|
94
|
+
function buildImports(options) {
|
|
95
|
+
const imports = ['import { Router } from "../../routing/Router";'];
|
|
96
|
+
// Collect unique controllers
|
|
97
|
+
const controllers = new Set();
|
|
98
|
+
for (const route of options.routes) {
|
|
99
|
+
controllers.add(route.controller);
|
|
100
|
+
}
|
|
101
|
+
// Add controller imports
|
|
102
|
+
for (const controller of controllers) {
|
|
103
|
+
imports.push(`import { ${controller} } from '@app/Controllers/${controller}';`);
|
|
104
|
+
}
|
|
105
|
+
return imports.join('\n');
|
|
106
|
+
}
|
|
107
|
+
/**
|
|
108
|
+
* Build route registration code
|
|
109
|
+
*/
|
|
110
|
+
function buildRouteRegistration(options) {
|
|
111
|
+
let code = '';
|
|
112
|
+
// Add group if prefix or middleware provided
|
|
113
|
+
if (options.prefix !== undefined || options.middleware !== undefined) {
|
|
114
|
+
code += ` router.group({`;
|
|
115
|
+
const groupOptions = [];
|
|
116
|
+
if (options.prefix !== undefined) {
|
|
117
|
+
groupOptions.push(` prefix: '${options.prefix}'`);
|
|
118
|
+
}
|
|
119
|
+
if (options.middleware !== undefined && options.middleware.length > 0) {
|
|
120
|
+
const middleware = options.middleware.map((m) => `'${m}'`).join(', ');
|
|
121
|
+
groupOptions.push(` middleware: [${middleware}]`);
|
|
122
|
+
}
|
|
123
|
+
code += groupOptions.join(',\n') + '\n';
|
|
124
|
+
code += ` }, (r) => {\n`;
|
|
125
|
+
// Add routes inside group
|
|
126
|
+
for (const route of options.routes) {
|
|
127
|
+
code += buildRouteCode(route, 'r');
|
|
128
|
+
}
|
|
129
|
+
code += ` });\n`;
|
|
130
|
+
}
|
|
131
|
+
else {
|
|
132
|
+
// Add routes directly
|
|
133
|
+
for (const route of options.routes) {
|
|
134
|
+
code += buildRouteCode(route, 'router');
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
return code;
|
|
138
|
+
}
|
|
139
|
+
/**
|
|
140
|
+
* Build single route code
|
|
141
|
+
*/
|
|
142
|
+
function buildRouteCode(route, router) {
|
|
143
|
+
if (route.method === 'resource') {
|
|
144
|
+
return buildResourceRoute(route, router);
|
|
145
|
+
}
|
|
146
|
+
else {
|
|
147
|
+
return buildMethodRoute(route, router);
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
/**
|
|
151
|
+
* Build standard method route (GET, POST, etc.)
|
|
152
|
+
*/
|
|
153
|
+
function buildMethodRoute(route, router) {
|
|
154
|
+
const method = route.method;
|
|
155
|
+
const path = route.path;
|
|
156
|
+
const controller = route.controller;
|
|
157
|
+
const action = route.action ?? 'handle';
|
|
158
|
+
const middleware = route.middleware === undefined
|
|
159
|
+
? ''
|
|
160
|
+
: (() => {
|
|
161
|
+
const middlewareList = route.middleware.map((m) => `'${m}'`).join(', ');
|
|
162
|
+
return `, { middleware: [${middlewareList}] }`;
|
|
163
|
+
})();
|
|
164
|
+
return ` ${router}.${method}('${path}', [${controller}, '${action}']${middleware});\n`;
|
|
165
|
+
}
|
|
166
|
+
/**
|
|
167
|
+
* Build resource route (RESTful CRUD)
|
|
168
|
+
*/
|
|
169
|
+
function buildResourceRoute(route, router) {
|
|
170
|
+
const path = route.path;
|
|
171
|
+
const controller = route.controller;
|
|
172
|
+
const middleware = route.middleware === undefined
|
|
173
|
+
? ''
|
|
174
|
+
: (() => {
|
|
175
|
+
const middlewareList = route.middleware.map((m) => `'${m}'`).join(', ');
|
|
176
|
+
return `, { middleware: [${middlewareList}] }`;
|
|
177
|
+
})();
|
|
178
|
+
return ` ${router}.resource('${path}', ${controller}${middleware});\n`;
|
|
179
|
+
}
|
|
180
|
+
/**
|
|
181
|
+
* Generate common API routes (User CRUD example)
|
|
182
|
+
*/
|
|
183
|
+
export function getUserApiRoutes() {
|
|
184
|
+
return [
|
|
185
|
+
{
|
|
186
|
+
method: 'get',
|
|
187
|
+
path: '/users',
|
|
188
|
+
controller: 'UserController',
|
|
189
|
+
action: 'index',
|
|
190
|
+
middleware: ['auth'],
|
|
191
|
+
},
|
|
192
|
+
{
|
|
193
|
+
method: 'post',
|
|
194
|
+
path: '/users',
|
|
195
|
+
controller: 'UserController',
|
|
196
|
+
action: 'store',
|
|
197
|
+
middleware: ['auth'],
|
|
198
|
+
},
|
|
199
|
+
{
|
|
200
|
+
method: 'get',
|
|
201
|
+
path: '/users/:id',
|
|
202
|
+
controller: 'UserController',
|
|
203
|
+
action: 'show',
|
|
204
|
+
middleware: ['auth'],
|
|
205
|
+
},
|
|
206
|
+
{
|
|
207
|
+
method: 'put',
|
|
208
|
+
path: '/users/:id',
|
|
209
|
+
controller: 'UserController',
|
|
210
|
+
action: 'update',
|
|
211
|
+
middleware: ['auth'],
|
|
212
|
+
},
|
|
213
|
+
{
|
|
214
|
+
method: 'delete',
|
|
215
|
+
path: '/users/:id',
|
|
216
|
+
controller: 'UserController',
|
|
217
|
+
action: 'destroy',
|
|
218
|
+
middleware: ['auth'],
|
|
219
|
+
},
|
|
220
|
+
];
|
|
221
|
+
}
|
|
222
|
+
/**
|
|
223
|
+
* Generate common auth routes
|
|
224
|
+
*/
|
|
225
|
+
export function getAuthRoutes() {
|
|
226
|
+
return [
|
|
227
|
+
{
|
|
228
|
+
method: 'post',
|
|
229
|
+
path: '/auth/login',
|
|
230
|
+
controller: 'AuthController',
|
|
231
|
+
action: 'login',
|
|
232
|
+
},
|
|
233
|
+
{
|
|
234
|
+
method: 'post',
|
|
235
|
+
path: '/auth/register',
|
|
236
|
+
controller: 'AuthController',
|
|
237
|
+
action: 'register',
|
|
238
|
+
},
|
|
239
|
+
{
|
|
240
|
+
method: 'post',
|
|
241
|
+
path: '/auth/logout',
|
|
242
|
+
controller: 'AuthController',
|
|
243
|
+
action: 'logout',
|
|
244
|
+
middleware: ['auth'],
|
|
245
|
+
},
|
|
246
|
+
{
|
|
247
|
+
method: 'post',
|
|
248
|
+
path: '/auth/refresh',
|
|
249
|
+
controller: 'AuthController',
|
|
250
|
+
action: 'refresh',
|
|
251
|
+
middleware: ['auth'],
|
|
252
|
+
},
|
|
253
|
+
];
|
|
254
|
+
}
|
|
255
|
+
/**
|
|
256
|
+
* Generate common admin routes
|
|
257
|
+
*/
|
|
258
|
+
export function getAdminRoutes() {
|
|
259
|
+
return [
|
|
260
|
+
{
|
|
261
|
+
method: 'get',
|
|
262
|
+
path: '/dashboard',
|
|
263
|
+
controller: 'AdminController',
|
|
264
|
+
action: 'dashboard',
|
|
265
|
+
middleware: ['auth', 'admin'],
|
|
266
|
+
},
|
|
267
|
+
{
|
|
268
|
+
method: 'get',
|
|
269
|
+
path: '/users',
|
|
270
|
+
controller: 'AdminController',
|
|
271
|
+
action: 'users',
|
|
272
|
+
middleware: ['auth', 'admin'],
|
|
273
|
+
},
|
|
274
|
+
{
|
|
275
|
+
method: 'get',
|
|
276
|
+
path: '/analytics',
|
|
277
|
+
controller: 'AdminController',
|
|
278
|
+
action: 'analytics',
|
|
279
|
+
middleware: ['auth', 'admin'],
|
|
280
|
+
},
|
|
281
|
+
{
|
|
282
|
+
method: 'get',
|
|
283
|
+
path: '/logs',
|
|
284
|
+
controller: 'AdminController',
|
|
285
|
+
action: 'logs',
|
|
286
|
+
middleware: ['auth', 'admin'],
|
|
287
|
+
},
|
|
288
|
+
];
|
|
289
|
+
}
|
|
290
|
+
/**
|
|
291
|
+
* Get common HTTP methods
|
|
292
|
+
*/
|
|
293
|
+
export function getCommonMethods() {
|
|
294
|
+
return ['get', 'post', 'put', 'patch', 'delete', 'resource'];
|
|
295
|
+
}
|
|
296
|
+
/**
|
|
297
|
+
* RouteGenerator creates route definitions
|
|
298
|
+
*/
|
|
299
|
+
export const RouteGenerator = Object.freeze({
|
|
300
|
+
validateOptions,
|
|
301
|
+
generateRoutes,
|
|
302
|
+
getUserApiRoutes,
|
|
303
|
+
getAuthRoutes,
|
|
304
|
+
getAdminRoutes,
|
|
305
|
+
getCommonMethods,
|
|
306
|
+
});
|