@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,80 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MongoDB Cache Driver
|
|
3
|
+
* Uses MongoDB Atlas Data API (HTTPS) for zero-dependency integration
|
|
4
|
+
*/
|
|
5
|
+
import { Env } from '../../config/env';
|
|
6
|
+
import { Logger } from '../../config/logger';
|
|
7
|
+
import { ErrorFactory } from '../../exceptions/ZintrustError';
|
|
8
|
+
/**
|
|
9
|
+
* MongoDB Cache Driver
|
|
10
|
+
* Uses MongoDB Atlas Data API (HTTPS) for zero-dependency integration
|
|
11
|
+
* Sealed namespace for immutability
|
|
12
|
+
*/
|
|
13
|
+
export const MongoDriver = Object.freeze({
|
|
14
|
+
/**
|
|
15
|
+
* Create a new MongoDB driver instance
|
|
16
|
+
*/
|
|
17
|
+
create() {
|
|
18
|
+
const uri = Env.MONGO_URI;
|
|
19
|
+
const db = Env.MONGO_DB;
|
|
20
|
+
const collection = 'cache';
|
|
21
|
+
const request = async (action, body) => {
|
|
22
|
+
if (uri === '') {
|
|
23
|
+
Logger.warn('MONGO_URI not configured. MongoDB Cache request ignored.');
|
|
24
|
+
return null;
|
|
25
|
+
}
|
|
26
|
+
try {
|
|
27
|
+
const response = await fetch(`${uri}/action/${action}`, {
|
|
28
|
+
method: 'POST',
|
|
29
|
+
headers: {
|
|
30
|
+
'Content-Type': 'application/json',
|
|
31
|
+
'Access-Control-Request-Headers': '*',
|
|
32
|
+
},
|
|
33
|
+
body: JSON.stringify({
|
|
34
|
+
dataSource: 'Cluster0',
|
|
35
|
+
database: db,
|
|
36
|
+
collection: collection,
|
|
37
|
+
...body,
|
|
38
|
+
}),
|
|
39
|
+
});
|
|
40
|
+
return await response.json();
|
|
41
|
+
}
|
|
42
|
+
catch (error) {
|
|
43
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
44
|
+
ErrorFactory.createTryCatchError(`MongoDB Cache Error: ${message}`);
|
|
45
|
+
return null;
|
|
46
|
+
}
|
|
47
|
+
};
|
|
48
|
+
return {
|
|
49
|
+
async get(key) {
|
|
50
|
+
const result = (await request('findOne', { filter: { _id: key } }));
|
|
51
|
+
if (result?.document === undefined || result.document === null)
|
|
52
|
+
return null;
|
|
53
|
+
const doc = result.document;
|
|
54
|
+
if (doc.expires !== null && doc.expires < Date.now()) {
|
|
55
|
+
await this.delete(key);
|
|
56
|
+
return null;
|
|
57
|
+
}
|
|
58
|
+
return doc.value;
|
|
59
|
+
},
|
|
60
|
+
async set(key, value, ttl) {
|
|
61
|
+
const expires = ttl === undefined ? null : Date.now() + ttl * 1000;
|
|
62
|
+
await request('updateOne', {
|
|
63
|
+
filter: { _id: key },
|
|
64
|
+
update: { $set: { value, expires } },
|
|
65
|
+
upsert: true,
|
|
66
|
+
});
|
|
67
|
+
},
|
|
68
|
+
async delete(key) {
|
|
69
|
+
await request('deleteOne', { filter: { _id: key } });
|
|
70
|
+
},
|
|
71
|
+
async clear() {
|
|
72
|
+
await request('deleteMany', { filter: {} });
|
|
73
|
+
},
|
|
74
|
+
async has(key) {
|
|
75
|
+
const result = (await request('findOne', { filter: { _id: key } }));
|
|
76
|
+
return result?.document !== undefined && result.document !== null;
|
|
77
|
+
},
|
|
78
|
+
};
|
|
79
|
+
},
|
|
80
|
+
});
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Redis Cache Driver
|
|
3
|
+
* Zero-dependency implementation using Node.js native net module
|
|
4
|
+
*/
|
|
5
|
+
import { CacheDriver } from '../CacheDriver';
|
|
6
|
+
/**
|
|
7
|
+
* RedisDriver namespace - sealed for immutability
|
|
8
|
+
*/
|
|
9
|
+
export declare const RedisDriver: Readonly<{
|
|
10
|
+
create: () => CacheDriver;
|
|
11
|
+
}>;
|
|
12
|
+
//# sourceMappingURL=RedisDriver.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RedisDriver.d.ts","sourceRoot":"","sources":["../../../../src/cache/drivers/RedisDriver.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AA+EjD;;GAEG;AACH,eAAO,MAAM,WAAW;kBA1EL,WAAW;EA4E5B,CAAC"}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Redis Cache Driver
|
|
3
|
+
* Zero-dependency implementation using Node.js native net module
|
|
4
|
+
*/
|
|
5
|
+
import { Env } from '../../config/env';
|
|
6
|
+
import { Logger } from '../../config/logger';
|
|
7
|
+
import * as net from 'node:net';
|
|
8
|
+
/**
|
|
9
|
+
* Create a new Redis driver instance
|
|
10
|
+
*/
|
|
11
|
+
const create = () => {
|
|
12
|
+
let client = null;
|
|
13
|
+
const host = Env.REDIS_HOST;
|
|
14
|
+
const port = Env.REDIS_PORT;
|
|
15
|
+
const connect = async () => {
|
|
16
|
+
if (client && !client.destroyed)
|
|
17
|
+
return client;
|
|
18
|
+
return new Promise((resolve, reject) => {
|
|
19
|
+
const socket = net.connect(port, host, () => {
|
|
20
|
+
client = socket;
|
|
21
|
+
resolve(socket);
|
|
22
|
+
});
|
|
23
|
+
socket.on('error', (err) => {
|
|
24
|
+
Logger.error(`Redis Connection Error: ${err.message}`);
|
|
25
|
+
reject(err);
|
|
26
|
+
});
|
|
27
|
+
});
|
|
28
|
+
};
|
|
29
|
+
const sendCommand = async (command) => {
|
|
30
|
+
const socket = await connect();
|
|
31
|
+
return new Promise((resolve, _reject) => {
|
|
32
|
+
socket.once('data', (data) => {
|
|
33
|
+
resolve(data.toString());
|
|
34
|
+
});
|
|
35
|
+
socket.write(command);
|
|
36
|
+
});
|
|
37
|
+
};
|
|
38
|
+
return {
|
|
39
|
+
async get(key) {
|
|
40
|
+
try {
|
|
41
|
+
const response = await sendCommand(`GET ${key}\r\n`);
|
|
42
|
+
if (response.startsWith('$-1'))
|
|
43
|
+
return null;
|
|
44
|
+
// Basic RESP parsing
|
|
45
|
+
const lines = response.split('\r\n');
|
|
46
|
+
const value = lines[1];
|
|
47
|
+
return JSON.parse(value);
|
|
48
|
+
}
|
|
49
|
+
catch (error) {
|
|
50
|
+
Logger.error('Redis GET failed', error);
|
|
51
|
+
return null;
|
|
52
|
+
}
|
|
53
|
+
},
|
|
54
|
+
async set(key, value, ttl) {
|
|
55
|
+
const jsonValue = JSON.stringify(value);
|
|
56
|
+
let command = `SET ${key} ${jsonValue}\r\n`;
|
|
57
|
+
if (ttl !== undefined) {
|
|
58
|
+
command = `SETEX ${key} ${ttl} ${jsonValue}\r\n`;
|
|
59
|
+
}
|
|
60
|
+
await sendCommand(command);
|
|
61
|
+
},
|
|
62
|
+
async delete(key) {
|
|
63
|
+
await sendCommand(`DEL ${key}\r\n`);
|
|
64
|
+
},
|
|
65
|
+
async clear() {
|
|
66
|
+
await sendCommand(`FLUSHDB\r\n`);
|
|
67
|
+
},
|
|
68
|
+
async has(key) {
|
|
69
|
+
const response = await sendCommand(`EXISTS ${key}\r\n`);
|
|
70
|
+
return response.includes(':1');
|
|
71
|
+
},
|
|
72
|
+
};
|
|
73
|
+
};
|
|
74
|
+
/**
|
|
75
|
+
* RedisDriver namespace - sealed for immutability
|
|
76
|
+
*/
|
|
77
|
+
export const RedisDriver = Object.freeze({
|
|
78
|
+
create,
|
|
79
|
+
});
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Base Command - Abstract Command Class
|
|
3
|
+
* All CLI commands extend this class
|
|
4
|
+
*/
|
|
5
|
+
import { Command } from 'commander';
|
|
6
|
+
export interface CommandOptions {
|
|
7
|
+
verbose?: boolean;
|
|
8
|
+
args?: string[];
|
|
9
|
+
[key: string]: unknown;
|
|
10
|
+
}
|
|
11
|
+
export interface IBaseCommand {
|
|
12
|
+
[x: string]: unknown;
|
|
13
|
+
name: string;
|
|
14
|
+
description: string;
|
|
15
|
+
verbose?: boolean;
|
|
16
|
+
getCommand(): Command;
|
|
17
|
+
addOptions?: (command: Command) => void;
|
|
18
|
+
execute(options: CommandOptions): void | Promise<void>;
|
|
19
|
+
info(message: string): void;
|
|
20
|
+
success(message: string): void;
|
|
21
|
+
warn(message: string): void;
|
|
22
|
+
debug(message: unknown): void;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Command Factory Helper
|
|
26
|
+
* Sealed namespace for immutability
|
|
27
|
+
*/
|
|
28
|
+
export declare const BaseCommand: Readonly<{
|
|
29
|
+
/**
|
|
30
|
+
* Create a command instance with common logic
|
|
31
|
+
*/
|
|
32
|
+
create(config: {
|
|
33
|
+
name: string;
|
|
34
|
+
description: string;
|
|
35
|
+
addOptions?: (command: Command) => void;
|
|
36
|
+
execute: (options: CommandOptions) => void | Promise<void>;
|
|
37
|
+
}): IBaseCommand;
|
|
38
|
+
}>;
|
|
39
|
+
//# sourceMappingURL=BaseCommand.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BaseCommand.d.ts","sourceRoot":"","sources":["../../../src/cli/BaseCommand.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,MAAM,WAAW,cAAc;IAC7B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,YAAY;IAC3B,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,UAAU,IAAI,OAAO,CAAC;IACtB,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;IACxC,OAAO,CAAC,OAAO,EAAE,cAAc,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACvD,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,OAAO,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,KAAK,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAAC;CAC/B;AAED;;;GAGG;AACH,eAAO,MAAM,WAAW;IACtB;;OAEG;mBACY;QACb,IAAI,EAAE,MAAM,CAAC;QACb,WAAW,EAAE,MAAM,CAAC;QACpB,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;QACxC,OAAO,EAAE,CAAC,OAAO,EAAE,cAAc,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;KAC5D,GAAG,YAAY;EA+ChB,CAAC"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Base Command - Abstract Command Class
|
|
3
|
+
* All CLI commands extend this class
|
|
4
|
+
*/
|
|
5
|
+
import { ErrorHandler } from './ErrorHandler';
|
|
6
|
+
import { ErrorFactory } from '../exceptions/ZintrustError';
|
|
7
|
+
import { Command } from 'commander';
|
|
8
|
+
/**
|
|
9
|
+
* Command Factory Helper
|
|
10
|
+
* Sealed namespace for immutability
|
|
11
|
+
*/
|
|
12
|
+
export const BaseCommand = Object.freeze({
|
|
13
|
+
/**
|
|
14
|
+
* Create a command instance with common logic
|
|
15
|
+
*/
|
|
16
|
+
create(config) {
|
|
17
|
+
const getCommand = () => {
|
|
18
|
+
const command = new Command(config.name);
|
|
19
|
+
command.description(config.description);
|
|
20
|
+
command.option('-v, --verbose', 'Enable verbose output');
|
|
21
|
+
// Add custom options
|
|
22
|
+
if (config.addOptions) {
|
|
23
|
+
config.addOptions(command);
|
|
24
|
+
}
|
|
25
|
+
// Set action handler
|
|
26
|
+
command.action(async (...args) => {
|
|
27
|
+
const options = args.at(-2);
|
|
28
|
+
const commandArgs = args.slice(0, -2);
|
|
29
|
+
options.args = commandArgs;
|
|
30
|
+
try {
|
|
31
|
+
await config.execute(options);
|
|
32
|
+
}
|
|
33
|
+
catch (error) {
|
|
34
|
+
if (error instanceof Error) {
|
|
35
|
+
ErrorFactory.createTryCatchError('Command execution failed', error);
|
|
36
|
+
ErrorHandler.handle(error, undefined, false);
|
|
37
|
+
return;
|
|
38
|
+
}
|
|
39
|
+
const wrapped = ErrorFactory.createTryCatchError('Command execution failed', error);
|
|
40
|
+
ErrorHandler.handle(wrapped, undefined, false);
|
|
41
|
+
}
|
|
42
|
+
});
|
|
43
|
+
return command;
|
|
44
|
+
};
|
|
45
|
+
return {
|
|
46
|
+
name: config.name,
|
|
47
|
+
description: config.description,
|
|
48
|
+
verbose: false,
|
|
49
|
+
addOptions: config.addOptions,
|
|
50
|
+
getCommand,
|
|
51
|
+
execute: config.execute,
|
|
52
|
+
info: (msg) => ErrorHandler.info(msg),
|
|
53
|
+
success: (msg) => ErrorHandler.success(msg),
|
|
54
|
+
warn: (msg) => ErrorHandler.warn(msg),
|
|
55
|
+
debug: (msg) => ErrorHandler.debug(msg, true),
|
|
56
|
+
};
|
|
57
|
+
},
|
|
58
|
+
});
|
package/src/cli/CLI.d.ts
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CLI - Main CLI Class
|
|
3
|
+
* Orchestrates all CLI commands using Commander
|
|
4
|
+
*/
|
|
5
|
+
import { Command } from 'commander';
|
|
6
|
+
export interface ICLI {
|
|
7
|
+
run(args: string[]): Promise<void>;
|
|
8
|
+
getProgram(): Command;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* CLI - Main CLI Class
|
|
12
|
+
* Orchestrates all CLI commands using Commander
|
|
13
|
+
*
|
|
14
|
+
* Notes:
|
|
15
|
+
* - `CLI.create()` is the preferred API (used by current bin scripts/tests).
|
|
16
|
+
* - `new CLI()` remains supported for backward compatibility with older bin scripts.
|
|
17
|
+
*/
|
|
18
|
+
export declare const CLI: Readonly<{
|
|
19
|
+
create(): ICLI;
|
|
20
|
+
}>;
|
|
21
|
+
//# sourceMappingURL=CLI.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CLI.d.ts","sourceRoot":"","sources":["../../../src/cli/CLI.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAqBH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAKpC,MAAM,WAAW,IAAI;IACnB,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACnC,UAAU,IAAI,OAAO,CAAC;CACvB;AAkLD;;;;;;;GAOG;AACH,eAAO,MAAM,GAAG;cACJ,IAAI;EAed,CAAC"}
|
package/src/cli/CLI.js
ADDED
|
@@ -0,0 +1,203 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CLI - Main CLI Class
|
|
3
|
+
* Orchestrates all CLI commands using Commander
|
|
4
|
+
*/
|
|
5
|
+
import { AddCommand } from './commands/AddCommand';
|
|
6
|
+
import { ConfigCommand } from './commands/ConfigCommand';
|
|
7
|
+
import { D1MigrateCommand } from './commands/D1MigrateCommand';
|
|
8
|
+
import { DebugCommand } from './commands/DebugCommand';
|
|
9
|
+
import { FixCommand } from './commands/FixCommand';
|
|
10
|
+
import { KeyGenerateCommand } from './commands/KeyGenerateCommand';
|
|
11
|
+
import { MigrateCommand } from './commands/MigrateCommand';
|
|
12
|
+
import { NewCommand } from './commands/NewCommand';
|
|
13
|
+
import { PluginCommand } from './commands/PluginCommand';
|
|
14
|
+
import { PrepareCommand } from './commands/PrepareCommand';
|
|
15
|
+
import { QACommand } from './commands/QACommand';
|
|
16
|
+
import { SimulateCommand } from './commands/SimulateCommand';
|
|
17
|
+
import { StartCommand } from './commands/StartCommand';
|
|
18
|
+
import { ErrorHandler } from './ErrorHandler';
|
|
19
|
+
import { Logger } from '../config/logger';
|
|
20
|
+
import { ErrorFactory } from '../exceptions/ZintrustError';
|
|
21
|
+
import { readFileSync } from '../node-singletons/fs';
|
|
22
|
+
import { dirname, join } from '../node-singletons/path';
|
|
23
|
+
import { fileURLToPath } from '../node-singletons/url';
|
|
24
|
+
import { Command } from 'commander';
|
|
25
|
+
const __filename = fileURLToPath(import.meta.url);
|
|
26
|
+
const __dirname = dirname(__filename);
|
|
27
|
+
/**
|
|
28
|
+
* CLI - Main CLI Class
|
|
29
|
+
* Orchestrates all CLI commands using Commander
|
|
30
|
+
*/
|
|
31
|
+
/**
|
|
32
|
+
* Load version from package.json
|
|
33
|
+
*/
|
|
34
|
+
const loadVersion = () => {
|
|
35
|
+
try {
|
|
36
|
+
const packagePath = join(__dirname, '../../package.json');
|
|
37
|
+
const packageJson = JSON.parse(readFileSync(packagePath, 'utf-8'));
|
|
38
|
+
return typeof packageJson.version === 'string' ? packageJson.version : '1.0.0';
|
|
39
|
+
}
|
|
40
|
+
catch (error) {
|
|
41
|
+
ErrorFactory.createCliError('Failed to load version from package.json', error);
|
|
42
|
+
// Use default version if package.json not found
|
|
43
|
+
return '1.0.0';
|
|
44
|
+
}
|
|
45
|
+
};
|
|
46
|
+
/**
|
|
47
|
+
* Setup program metadata
|
|
48
|
+
*/
|
|
49
|
+
const setupProgram = (program, version) => {
|
|
50
|
+
program
|
|
51
|
+
.name('zintrust')
|
|
52
|
+
.description('Zintrust Framework CLI - Build production-grade TypeScript APIs')
|
|
53
|
+
.version(version, '-v, --version', 'Output version number')
|
|
54
|
+
.helpOption('-h, --help', 'Display help for command')
|
|
55
|
+
.usage('[command] [options]');
|
|
56
|
+
// Global error handling
|
|
57
|
+
program.exitOverride();
|
|
58
|
+
};
|
|
59
|
+
/**
|
|
60
|
+
* Register all available commands
|
|
61
|
+
*/
|
|
62
|
+
const registerCommands = (program) => {
|
|
63
|
+
const commands = [
|
|
64
|
+
NewCommand.create(),
|
|
65
|
+
PrepareCommand,
|
|
66
|
+
AddCommand.create(),
|
|
67
|
+
StartCommand.create(),
|
|
68
|
+
MigrateCommand.create(),
|
|
69
|
+
D1MigrateCommand.create(),
|
|
70
|
+
DebugCommand.create(),
|
|
71
|
+
ConfigCommand.create(),
|
|
72
|
+
PluginCommand.create(),
|
|
73
|
+
QACommand(),
|
|
74
|
+
FixCommand.create(),
|
|
75
|
+
KeyGenerateCommand.create(),
|
|
76
|
+
SimulateCommand,
|
|
77
|
+
];
|
|
78
|
+
for (const command of commands) {
|
|
79
|
+
program.addCommand(command.getCommand());
|
|
80
|
+
}
|
|
81
|
+
// Help command
|
|
82
|
+
program
|
|
83
|
+
.command('help [command]')
|
|
84
|
+
.description('Display help for a command')
|
|
85
|
+
.action((commandName) => {
|
|
86
|
+
if (commandName) {
|
|
87
|
+
const cmd = program.commands.find((c) => c.name() === commandName);
|
|
88
|
+
if (cmd) {
|
|
89
|
+
cmd.help();
|
|
90
|
+
}
|
|
91
|
+
else {
|
|
92
|
+
Logger.error(`Unknown command: ${commandName}`);
|
|
93
|
+
program.help();
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
else {
|
|
97
|
+
program.help();
|
|
98
|
+
}
|
|
99
|
+
});
|
|
100
|
+
};
|
|
101
|
+
/**
|
|
102
|
+
* Check if error is a commander error that can be safely ignored
|
|
103
|
+
*/
|
|
104
|
+
const isIgnorableCommanderError = (error) => {
|
|
105
|
+
if (error instanceof Error &&
|
|
106
|
+
'code' in error &&
|
|
107
|
+
typeof error.code === 'string' &&
|
|
108
|
+
error.code.startsWith('commander.')) {
|
|
109
|
+
const commanderError = error;
|
|
110
|
+
return typeof commanderError.exitCode === 'number' && commanderError.exitCode === 0;
|
|
111
|
+
}
|
|
112
|
+
return false;
|
|
113
|
+
};
|
|
114
|
+
/**
|
|
115
|
+
* Get exit code from error
|
|
116
|
+
*/
|
|
117
|
+
const getExitCode = (error) => {
|
|
118
|
+
if (error instanceof Error &&
|
|
119
|
+
'exitCode' in error &&
|
|
120
|
+
typeof error.exitCode === 'number') {
|
|
121
|
+
return error.exitCode;
|
|
122
|
+
}
|
|
123
|
+
return 1;
|
|
124
|
+
};
|
|
125
|
+
/**
|
|
126
|
+
* Handle CLI execution error
|
|
127
|
+
*/
|
|
128
|
+
const handleExecutionError = (error, version, log = true) => {
|
|
129
|
+
if (isIgnorableCommanderError(error)) {
|
|
130
|
+
return;
|
|
131
|
+
}
|
|
132
|
+
if (error === version) {
|
|
133
|
+
return;
|
|
134
|
+
}
|
|
135
|
+
if (error instanceof Error) {
|
|
136
|
+
ErrorHandler.handle(error, undefined, log);
|
|
137
|
+
}
|
|
138
|
+
throw ErrorFactory.createCliError('Unhandled CLI execution error', error);
|
|
139
|
+
};
|
|
140
|
+
/**
|
|
141
|
+
* Run CLI with arguments
|
|
142
|
+
*/
|
|
143
|
+
const runCLI = async (program, version, args) => {
|
|
144
|
+
try {
|
|
145
|
+
// Always show banner
|
|
146
|
+
ErrorHandler.banner(version);
|
|
147
|
+
// If version is requested, we've already shown the banner which includes the version.
|
|
148
|
+
if (args.includes('-v') || args.includes('--version')) {
|
|
149
|
+
return;
|
|
150
|
+
}
|
|
151
|
+
// Show help if no arguments provided
|
|
152
|
+
if (args.length === 0) {
|
|
153
|
+
program.help();
|
|
154
|
+
return;
|
|
155
|
+
}
|
|
156
|
+
// Convert global aliases to subcommand format
|
|
157
|
+
// e.g., `zin -sim my-app` -> `zin simulate my-app`
|
|
158
|
+
let processedArgs = args;
|
|
159
|
+
if (args[0] === '-sim' || args[0] === '--sim') {
|
|
160
|
+
processedArgs = ['simulate', ...args.slice(1)];
|
|
161
|
+
}
|
|
162
|
+
await program.parseAsync(['node', 'zintrust', ...processedArgs]);
|
|
163
|
+
}
|
|
164
|
+
catch (error) {
|
|
165
|
+
// Check for commander-specific errors that need special handling
|
|
166
|
+
if (error instanceof Error &&
|
|
167
|
+
'code' in error &&
|
|
168
|
+
typeof error.code === 'string' &&
|
|
169
|
+
error.code.startsWith('commander.')) {
|
|
170
|
+
const exitCode = getExitCode(error);
|
|
171
|
+
if (exitCode !== 0) {
|
|
172
|
+
ErrorFactory.createCliError('CLI execution failed', error);
|
|
173
|
+
process.exit(exitCode);
|
|
174
|
+
}
|
|
175
|
+
return;
|
|
176
|
+
}
|
|
177
|
+
// Handle all other errors with proper logging
|
|
178
|
+
ErrorFactory.createCliError('CLI execution failed', error);
|
|
179
|
+
handleExecutionError(error, version, false);
|
|
180
|
+
}
|
|
181
|
+
};
|
|
182
|
+
/**
|
|
183
|
+
* CLI - Main CLI Class
|
|
184
|
+
* Orchestrates all CLI commands using Commander
|
|
185
|
+
*
|
|
186
|
+
* Notes:
|
|
187
|
+
* - `CLI.create()` is the preferred API (used by current bin scripts/tests).
|
|
188
|
+
* - `new CLI()` remains supported for backward compatibility with older bin scripts.
|
|
189
|
+
*/
|
|
190
|
+
export const CLI = Object.freeze({
|
|
191
|
+
create() {
|
|
192
|
+
const program = new Command();
|
|
193
|
+
const version = loadVersion();
|
|
194
|
+
setupProgram(program, version);
|
|
195
|
+
registerCommands(program);
|
|
196
|
+
const run = async (args) => runCLI(program, version, args);
|
|
197
|
+
const getProgram = () => program;
|
|
198
|
+
return Object.freeze({
|
|
199
|
+
run,
|
|
200
|
+
getProgram,
|
|
201
|
+
});
|
|
202
|
+
},
|
|
203
|
+
});
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Error Handler - CLI Error Formatting & Exit Codes
|
|
3
|
+
* Provides consistent error formatting and proper Unix exit codes
|
|
4
|
+
* Sealed namespace with immutable error handling methods
|
|
5
|
+
*/
|
|
6
|
+
export declare const EXIT_CODES: {
|
|
7
|
+
readonly SUCCESS: 0;
|
|
8
|
+
readonly RUNTIME_ERROR: 1;
|
|
9
|
+
readonly USAGE_ERROR: 2;
|
|
10
|
+
};
|
|
11
|
+
/**
|
|
12
|
+
* ErrorHandler namespace - sealed for immutability
|
|
13
|
+
*/
|
|
14
|
+
export declare const ErrorHandler: Readonly<{
|
|
15
|
+
handle: (error: Error | string, exitCode?: number, log?: boolean) => void;
|
|
16
|
+
usageError: (message: string, command?: string) => void;
|
|
17
|
+
info: (message: string) => void;
|
|
18
|
+
success: (message: string) => void;
|
|
19
|
+
warn: (message: string) => void;
|
|
20
|
+
debug: (message: string, verbose?: boolean) => void;
|
|
21
|
+
banner: (version: string) => void;
|
|
22
|
+
}>;
|
|
23
|
+
//# sourceMappingURL=ErrorHandler.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ErrorHandler.d.ts","sourceRoot":"","sources":["../../../src/cli/ErrorHandler.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAMH,eAAO,MAAM,UAAU;;;;CAIb,CAAC;AAuGX;;GAEG;AACH,eAAO,MAAM,YAAY;oBAnGhB,KAAK,GAAG,MAAM,aACX,MAAM,QACX,OAAO,KACX,IAAI;0BAasB,MAAM,YAAY,MAAM,KAAG,IAAI;oBAa9B,MAAM,KAAG,IAAI;uBA4CV,MAAM,KAAG,IAAI;oBAQb,MAAM,KAAG,IAAI;qBAQf,MAAM,YAAW,OAAO,KAAW,IAAI;sBApDtC,MAAM,KAAG,IAAI;EAsE3C,CAAC"}
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Error Handler - CLI Error Formatting & Exit Codes
|
|
3
|
+
* Provides consistent error formatting and proper Unix exit codes
|
|
4
|
+
* Sealed namespace with immutable error handling methods
|
|
5
|
+
*/
|
|
6
|
+
import { Env } from '../config/env';
|
|
7
|
+
import { Logger } from '../config/logger';
|
|
8
|
+
import chalk from 'chalk';
|
|
9
|
+
export const EXIT_CODES = {
|
|
10
|
+
SUCCESS: 0,
|
|
11
|
+
RUNTIME_ERROR: 1,
|
|
12
|
+
USAGE_ERROR: 2,
|
|
13
|
+
};
|
|
14
|
+
/**
|
|
15
|
+
* Format and display error
|
|
16
|
+
* Exit codes: 0 (success), 1 (runtime error), 2 (usage error)
|
|
17
|
+
*/
|
|
18
|
+
const handleError = (error, exitCode = EXIT_CODES.RUNTIME_ERROR, log = true) => {
|
|
19
|
+
const message = typeof error === 'string' ? error : error.message;
|
|
20
|
+
const formattedMessage = `${chalk.red('[ERROR]')} ${message}`;
|
|
21
|
+
if (log) {
|
|
22
|
+
Logger.error(formattedMessage);
|
|
23
|
+
}
|
|
24
|
+
process.exit(exitCode);
|
|
25
|
+
};
|
|
26
|
+
/**
|
|
27
|
+
* Display usage error with help hint
|
|
28
|
+
*/
|
|
29
|
+
const usageError = (message, command) => {
|
|
30
|
+
const helpText = `Run: zin ${command} --help`;
|
|
31
|
+
const hint = command !== undefined && command !== '' ? `\n${chalk.gray(helpText)}` : '';
|
|
32
|
+
const formattedMessage = `${chalk.red('[ERROR]')} ${message}${hint}`;
|
|
33
|
+
Logger.warn(formattedMessage);
|
|
34
|
+
process.exit(EXIT_CODES.USAGE_ERROR);
|
|
35
|
+
};
|
|
36
|
+
/**
|
|
37
|
+
* Display info message
|
|
38
|
+
*/
|
|
39
|
+
const displayInfo = (message) => {
|
|
40
|
+
const formatted = `${chalk.blue('[i]')} ${message}`;
|
|
41
|
+
Logger.info(formatted);
|
|
42
|
+
};
|
|
43
|
+
/**
|
|
44
|
+
* Display framework banner
|
|
45
|
+
*/
|
|
46
|
+
const displayBanner = (version) => {
|
|
47
|
+
/* eslint-disable no-console */
|
|
48
|
+
const framework = 'Zintrust Framework';
|
|
49
|
+
const bannerWidth = 46;
|
|
50
|
+
const env = Env.NODE_ENV || 'development';
|
|
51
|
+
const db = Env.DB_CONNECTION || 'sqlite';
|
|
52
|
+
console.log(chalk.cyan('┌' + '─'.repeat(bannerWidth) + '┐'));
|
|
53
|
+
console.log(`${chalk.cyan('│')} ${chalk.bold.white('Framework: ')}${chalk.bold.cyan(framework.padEnd(bannerWidth - 12))} ${chalk.cyan('│')}`);
|
|
54
|
+
console.log(`${chalk.cyan('│')} ${chalk.bold.white('Version: ')}${chalk.bold.green(version.padEnd(bannerWidth - 12))} ${chalk.cyan('│')}`);
|
|
55
|
+
console.log(`${chalk.cyan('│')} ${chalk.bold.white('Env: ')}${chalk.bold.yellow(env.padEnd(bannerWidth - 12))} ${chalk.cyan('│')}`);
|
|
56
|
+
console.log(`${chalk.cyan('│')} ${chalk.bold.white('Database: ')}${chalk.bold.magenta(db.padEnd(bannerWidth - 12))} ${chalk.cyan('│')}`);
|
|
57
|
+
console.log(chalk.cyan('└' + '─'.repeat(bannerWidth) + '┘'));
|
|
58
|
+
console.log();
|
|
59
|
+
/* eslint-enable no-console */
|
|
60
|
+
};
|
|
61
|
+
/**
|
|
62
|
+
* Display success message
|
|
63
|
+
*/
|
|
64
|
+
const displaySuccess = (message) => {
|
|
65
|
+
const formatted = `${chalk.green('[✓]')} ${message}`;
|
|
66
|
+
Logger.info(formatted);
|
|
67
|
+
};
|
|
68
|
+
/**
|
|
69
|
+
* Display warning message
|
|
70
|
+
*/
|
|
71
|
+
const displayWarning = (message) => {
|
|
72
|
+
const formatted = `${chalk.yellow('[!]')} ${message}`;
|
|
73
|
+
Logger.warn(formatted);
|
|
74
|
+
};
|
|
75
|
+
/**
|
|
76
|
+
* Display debug message (only if verbose)
|
|
77
|
+
*/
|
|
78
|
+
const displayDebug = (message, verbose = false) => {
|
|
79
|
+
if (verbose) {
|
|
80
|
+
const formatted = `${chalk.gray('[DEBUG]')} ${message}`;
|
|
81
|
+
Logger.debug(formatted);
|
|
82
|
+
}
|
|
83
|
+
};
|
|
84
|
+
/**
|
|
85
|
+
* ErrorHandler namespace - sealed for immutability
|
|
86
|
+
*/
|
|
87
|
+
export const ErrorHandler = Object.freeze({
|
|
88
|
+
handle: handleError,
|
|
89
|
+
usageError,
|
|
90
|
+
info: displayInfo,
|
|
91
|
+
success: displaySuccess,
|
|
92
|
+
warn: displayWarning,
|
|
93
|
+
debug: displayDebug,
|
|
94
|
+
banner: displayBanner,
|
|
95
|
+
});
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Prompt Helper - Interactive CLI Prompts
|
|
3
|
+
* Provides reusable prompt utilities using inquirer
|
|
4
|
+
*/
|
|
5
|
+
export interface PromptOptions {
|
|
6
|
+
interactive?: boolean;
|
|
7
|
+
defaults?: Record<string, unknown>;
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* Prompt Helper Factory
|
|
11
|
+
* Sealed namespace for immutability
|
|
12
|
+
*/
|
|
13
|
+
export declare const PromptHelper: Readonly<{
|
|
14
|
+
/**
|
|
15
|
+
* Generic prompt method for custom questions
|
|
16
|
+
*/
|
|
17
|
+
prompt(questions: unknown): Promise<Record<string, unknown>>;
|
|
18
|
+
/**
|
|
19
|
+
* Ask for project name
|
|
20
|
+
*/
|
|
21
|
+
projectName(defaultName?: string, interactive?: boolean): Promise<string>;
|
|
22
|
+
/**
|
|
23
|
+
* Ask for database type
|
|
24
|
+
*/
|
|
25
|
+
databaseType(defaultDb?: string, interactive?: boolean): Promise<string>;
|
|
26
|
+
/**
|
|
27
|
+
* Ask for port number
|
|
28
|
+
*/
|
|
29
|
+
port(defaultPort?: number, interactive?: boolean): Promise<number>;
|
|
30
|
+
/**
|
|
31
|
+
* Ask for feature selection
|
|
32
|
+
*/
|
|
33
|
+
selectFeatures(availableFeatures?: string[], interactive?: boolean): Promise<string[]>;
|
|
34
|
+
/**
|
|
35
|
+
* Confirm action
|
|
36
|
+
*/
|
|
37
|
+
confirm(message: string, defaultConfirm?: boolean, interactive?: boolean): Promise<boolean>;
|
|
38
|
+
/**
|
|
39
|
+
* Choose from list
|
|
40
|
+
*/
|
|
41
|
+
chooseFrom(message: string, choices: string[], defaultChoice?: string, interactive?: boolean): Promise<string>;
|
|
42
|
+
/**
|
|
43
|
+
* Get text input
|
|
44
|
+
*/
|
|
45
|
+
textInput(message: string, defaultValue?: string, interactive?: boolean): Promise<string>;
|
|
46
|
+
}>;
|
|
47
|
+
//# sourceMappingURL=PromptHelper.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PromptHelper.d.ts","sourceRoot":"","sources":["../../../src/cli/PromptHelper.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,MAAM,WAAW,aAAa;IAC5B,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAED;;;GAGG;AACH,eAAO,MAAM,YAAY;IACvB;;OAEG;sBACqB,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAMlE;;OAEG;8BAC6B,MAAM,gBAAe,OAAO,GAAU,OAAO,CAAC,MAAM,CAAC;IAuBrF;;OAEG;6BAEU,MAAM,gBACJ,OAAO,GACnB,OAAO,CAAC,MAAM,CAAC;IAsBlB;;OAEG;uBACqB,MAAM,gBAAsB,OAAO,GAAU,OAAO,CAAC,MAAM,CAAC;IAqBpF;;OAEG;uCAEkB,MAAM,EAAE,gBACd,OAAO,GACnB,OAAO,CAAC,MAAM,EAAE,CAAC;IAkBpB;;OAEG;qBAEQ,MAAM,mBACC,OAAO,gBACV,OAAO,GACnB,OAAO,CAAC,OAAO,CAAC;IAiBnB;;OAEG;wBAEQ,MAAM,WACN,MAAM,EAAE,kBACF,MAAM,gBACR,OAAO,GACnB,OAAO,CAAC,MAAM,CAAC;IAkBlB;;OAEG;uBAEQ,MAAM,iBACD,MAAM,gBACP,OAAO,GACnB,OAAO,CAAC,MAAM,CAAC;EAgBlB,CAAC"}
|