@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 @@
|
|
|
1
|
+
{"version":3,"file":"SimulateCommand.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/SimulateCommand.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AA+BhD;;GAEG;AACH,eAAO,MAAM,eAAe,EAuDvB,YAAY,CAAC"}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Simulate Command
|
|
3
|
+
* Internal dev tool that generates a simulated Zintrust app under ./simulate/
|
|
4
|
+
* IMPORTANT: this uses the same ProjectScaffolder as `zin new`.
|
|
5
|
+
* Usage: zin -sim my-blog
|
|
6
|
+
*/
|
|
7
|
+
import { ProjectScaffolder } from '../scaffolding/ProjectScaffolder';
|
|
8
|
+
import { DistPackager } from '../utils/DistPackager';
|
|
9
|
+
import { Logger } from '../../config/logger';
|
|
10
|
+
import { ErrorFactory } from '../../exceptions/ZintrustError';
|
|
11
|
+
import fs from '../../node-singletons/fs';
|
|
12
|
+
import * as path from '../../node-singletons/path';
|
|
13
|
+
import chalk from 'chalk';
|
|
14
|
+
import { Command } from 'commander';
|
|
15
|
+
const rewriteSimulatedAppDependencyToDist = (appPath, distPath) => {
|
|
16
|
+
const packageJsonPath = path.join(appPath, 'package.json');
|
|
17
|
+
if (!fs.existsSync(packageJsonPath)) {
|
|
18
|
+
throw ErrorFactory.createCliError(`Missing simulated app package.json at: ${packageJsonPath}`);
|
|
19
|
+
}
|
|
20
|
+
const pkg = JSON.parse(fs.readFileSync(packageJsonPath, 'utf8'));
|
|
21
|
+
const dependencies = { ...pkg.dependencies };
|
|
22
|
+
dependencies['@zintrust/core'] = `file:${distPath}`;
|
|
23
|
+
const nextPkg = {
|
|
24
|
+
...pkg,
|
|
25
|
+
dependencies,
|
|
26
|
+
};
|
|
27
|
+
fs.writeFileSync(packageJsonPath, JSON.stringify(nextPkg, null, 2) + '\n');
|
|
28
|
+
};
|
|
29
|
+
/**
|
|
30
|
+
* SimulateCommand - Generate simulated apps for testing
|
|
31
|
+
*/
|
|
32
|
+
export const SimulateCommand = {
|
|
33
|
+
name: 'simulate',
|
|
34
|
+
description: '[INTERNAL] Generate simulated Zintrust app for testing new developer experience',
|
|
35
|
+
getCommand() {
|
|
36
|
+
const command = new Command('simulate')
|
|
37
|
+
.alias('-sim')
|
|
38
|
+
.alias('--sim')
|
|
39
|
+
.description('[INTERNAL DEV] Create a simulated Zintrust application in simulate/ folder')
|
|
40
|
+
.argument('<name>', 'Name of the simulated app')
|
|
41
|
+
.action(async (appName) => {
|
|
42
|
+
try {
|
|
43
|
+
const simulateBasePath = path.join(process.cwd(), 'simulate');
|
|
44
|
+
if (!appName || appName.trim() === '') {
|
|
45
|
+
throw ErrorFactory.createValidationError('App name is required');
|
|
46
|
+
}
|
|
47
|
+
// Delegate validation + file generation to the same scaffolder used by `zin new`.
|
|
48
|
+
Logger.info(`Creating simulated app via ProjectScaffolder: ${chalk.cyan(appName)}`);
|
|
49
|
+
const result = await ProjectScaffolder.scaffold(simulateBasePath, {
|
|
50
|
+
name: appName,
|
|
51
|
+
template: 'basic',
|
|
52
|
+
database: 'sqlite',
|
|
53
|
+
author: 'Internal',
|
|
54
|
+
description: `Simulated Zintrust app - ${appName}`,
|
|
55
|
+
});
|
|
56
|
+
if (!result.success) {
|
|
57
|
+
throw ErrorFactory.createCliError(result.message, result.error);
|
|
58
|
+
}
|
|
59
|
+
const appPath = path.join(simulateBasePath, appName);
|
|
60
|
+
// For simulate apps only: install the locally-built framework from dist/
|
|
61
|
+
// so the dev experience matches "fresh install" of the current build output.
|
|
62
|
+
const distPath = path.join(process.cwd(), 'dist');
|
|
63
|
+
DistPackager.prepare(distPath, process.cwd());
|
|
64
|
+
rewriteSimulatedAppDependencyToDist(appPath, distPath);
|
|
65
|
+
Logger.info('✅ Simulated app created successfully!');
|
|
66
|
+
Logger.info(`📁 Location: ${chalk.cyan(appPath)}`);
|
|
67
|
+
Logger.info(`\n${chalk.bold('Next steps:')}`);
|
|
68
|
+
Logger.info(` cd ${path.relative(process.cwd(), appPath)}`);
|
|
69
|
+
Logger.info(' npm install');
|
|
70
|
+
Logger.info(' npm run dev');
|
|
71
|
+
}
|
|
72
|
+
catch (error) {
|
|
73
|
+
Logger.error('Failed to create simulated app', error);
|
|
74
|
+
process.exit(1);
|
|
75
|
+
}
|
|
76
|
+
});
|
|
77
|
+
return command;
|
|
78
|
+
},
|
|
79
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"StartCommand.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/StartCommand.ts"],"names":[],"mappings":"AACA,OAAO,EAAoC,KAAK,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAkSvF,eAAO,MAAM,YAAY;cACb,YAAY;EAsBtB,CAAC"}
|
|
@@ -0,0 +1,227 @@
|
|
|
1
|
+
import { resolveNpmPath } from '../../common';
|
|
2
|
+
import { BaseCommand } from '../BaseCommand';
|
|
3
|
+
import { EnvFileLoader } from '../utils/EnvFileLoader';
|
|
4
|
+
import { SpawnUtil } from '../utils/spawn';
|
|
5
|
+
import { ErrorFactory } from '../../exceptions/ZintrustError';
|
|
6
|
+
import { existsSync, readFileSync } from '../../node-singletons/fs';
|
|
7
|
+
import * as path from 'node:path';
|
|
8
|
+
const isValidModeInput = (value) => value === 'development' ||
|
|
9
|
+
value === 'dev' ||
|
|
10
|
+
value === 'production' ||
|
|
11
|
+
value === 'pro' ||
|
|
12
|
+
value === 'prod' ||
|
|
13
|
+
value === 'testing';
|
|
14
|
+
const normalizeMode = (value) => {
|
|
15
|
+
if (value === 'production' || value === 'pro' || value === 'prod')
|
|
16
|
+
return 'production';
|
|
17
|
+
if (value === 'testing')
|
|
18
|
+
return 'testing';
|
|
19
|
+
return 'development';
|
|
20
|
+
};
|
|
21
|
+
const resolveModeFromAppMode = () => {
|
|
22
|
+
const raw = typeof process.env['APP_MODE'] === 'string' ? process.env['APP_MODE'].trim() : '';
|
|
23
|
+
const normalized = raw.toLowerCase();
|
|
24
|
+
if (normalized === 'production' || normalized === 'pro' || normalized === 'prod') {
|
|
25
|
+
return 'production';
|
|
26
|
+
}
|
|
27
|
+
// Per spec: any other APP_MODE is treated as development.
|
|
28
|
+
return 'development';
|
|
29
|
+
};
|
|
30
|
+
const resolveMode = (options) => {
|
|
31
|
+
const raw = typeof options.mode === 'string' ? options.mode.trim() : '';
|
|
32
|
+
if (raw !== '') {
|
|
33
|
+
if (isValidModeInput(raw))
|
|
34
|
+
return normalizeMode(raw);
|
|
35
|
+
throw ErrorFactory.createCliError(`Error: Invalid --mode '${raw}'. Expected one of: development, production, testing.`);
|
|
36
|
+
}
|
|
37
|
+
return resolveModeFromAppMode();
|
|
38
|
+
};
|
|
39
|
+
const resolvePort = (options) => {
|
|
40
|
+
const cliPort = typeof options.port === 'string' ? options.port.trim() : '';
|
|
41
|
+
if (cliPort !== '') {
|
|
42
|
+
const parsed = Number.parseInt(cliPort, 10);
|
|
43
|
+
if (!Number.isFinite(parsed) || parsed <= 0 || parsed >= 65536) {
|
|
44
|
+
throw ErrorFactory.createCliError(`Error: Invalid --port '${cliPort}'. Expected 1-65535.`);
|
|
45
|
+
}
|
|
46
|
+
return parsed;
|
|
47
|
+
}
|
|
48
|
+
// .env is primary (loaded by EnvFileLoader with overrideExisting=true)
|
|
49
|
+
const envPort = process.env['APP_PORT'] ?? process.env['PORT'] ?? '';
|
|
50
|
+
if (envPort === '')
|
|
51
|
+
return undefined;
|
|
52
|
+
const parsed = Number.parseInt(envPort, 10);
|
|
53
|
+
if (!Number.isFinite(parsed) || parsed <= 0 || parsed >= 65536) {
|
|
54
|
+
throw ErrorFactory.createCliError(`Error: Invalid APP_PORT/PORT '${envPort}'. Expected 1-65535.`);
|
|
55
|
+
}
|
|
56
|
+
return parsed;
|
|
57
|
+
};
|
|
58
|
+
const resolveRuntime = (options) => {
|
|
59
|
+
const raw = typeof options.runtime === 'string' ? options.runtime.trim() : '';
|
|
60
|
+
return raw === '' ? undefined : raw;
|
|
61
|
+
};
|
|
62
|
+
const hasFlag = (flag) => process.argv.includes(flag);
|
|
63
|
+
const resolveWatchPreference = (options, mode) => {
|
|
64
|
+
const hasWatch = hasFlag('--watch');
|
|
65
|
+
const hasNoWatch = hasFlag('--no-watch');
|
|
66
|
+
if (hasWatch && hasNoWatch) {
|
|
67
|
+
throw ErrorFactory.createCliError('Error: Cannot use both --watch and --no-watch.');
|
|
68
|
+
}
|
|
69
|
+
if (hasWatch)
|
|
70
|
+
return true;
|
|
71
|
+
if (hasNoWatch)
|
|
72
|
+
return false;
|
|
73
|
+
if (typeof options.watch === 'boolean')
|
|
74
|
+
return options.watch;
|
|
75
|
+
return mode === 'development';
|
|
76
|
+
};
|
|
77
|
+
const readPackageJson = (cwd) => {
|
|
78
|
+
const packagePath = path.join(cwd, 'package.json');
|
|
79
|
+
if (!existsSync(packagePath)) {
|
|
80
|
+
throw ErrorFactory.createCliError("Error: No Zintrust app found. Run 'zin new <project>' or ensure package.json exists.");
|
|
81
|
+
}
|
|
82
|
+
try {
|
|
83
|
+
const raw = readFileSync(packagePath, 'utf-8');
|
|
84
|
+
return JSON.parse(raw);
|
|
85
|
+
}
|
|
86
|
+
catch (error) {
|
|
87
|
+
throw ErrorFactory.createTryCatchError('Failed to read package.json', error);
|
|
88
|
+
}
|
|
89
|
+
};
|
|
90
|
+
const isFrameworkRepo = (packageJson) => packageJson.name === '@zintrust/core';
|
|
91
|
+
const hasDevScript = (packageJson) => {
|
|
92
|
+
const scripts = packageJson.scripts;
|
|
93
|
+
if (!scripts)
|
|
94
|
+
return false;
|
|
95
|
+
return typeof scripts['dev'] === 'string' && scripts['dev'] !== '';
|
|
96
|
+
};
|
|
97
|
+
const findWranglerConfig = (cwd) => {
|
|
98
|
+
const candidates = ['wrangler.toml', 'wrangler.json', 'wrangler.jsonc'];
|
|
99
|
+
for (const candidate of candidates) {
|
|
100
|
+
const full = path.join(cwd, candidate);
|
|
101
|
+
if (existsSync(full))
|
|
102
|
+
return full;
|
|
103
|
+
}
|
|
104
|
+
return undefined;
|
|
105
|
+
};
|
|
106
|
+
const resolveWranglerEntry = (cwd) => {
|
|
107
|
+
const entry = path.join(cwd, 'src/functions/cloudflare.ts');
|
|
108
|
+
return existsSync(entry) ? 'src/functions/cloudflare.ts' : undefined;
|
|
109
|
+
};
|
|
110
|
+
const resolveBootstrapEntryTs = (cwd) => {
|
|
111
|
+
const boot = path.join(cwd, 'src/boot/bootstrap.ts');
|
|
112
|
+
if (existsSync(boot))
|
|
113
|
+
return 'src/boot/bootstrap.ts';
|
|
114
|
+
return undefined;
|
|
115
|
+
};
|
|
116
|
+
const resolveNodeDevCommand = (cwd, packageJson) => {
|
|
117
|
+
if (isFrameworkRepo(packageJson)) {
|
|
118
|
+
const bootstrap = resolveBootstrapEntryTs(cwd);
|
|
119
|
+
return { command: 'tsx', args: ['watch', bootstrap ?? 'src/index.ts'] };
|
|
120
|
+
}
|
|
121
|
+
const bootstrap = resolveBootstrapEntryTs(cwd);
|
|
122
|
+
if (bootstrap !== undefined) {
|
|
123
|
+
return { command: 'tsx', args: ['watch', bootstrap] };
|
|
124
|
+
}
|
|
125
|
+
if (existsSync(path.join(cwd, 'src/index.ts'))) {
|
|
126
|
+
return { command: 'tsx', args: ['watch', 'src/index.ts'] };
|
|
127
|
+
}
|
|
128
|
+
// Fallback: if the app provides a dev script, run it.
|
|
129
|
+
// IMPORTANT: avoid calling `npm run dev` when the dev script itself invokes `zin`/`zintrust`
|
|
130
|
+
// (e.g. "dev": "zin s"), which would cause infinite recursion.
|
|
131
|
+
const devScript = typeof packageJson.scripts?.['dev'] === 'string' ? String(packageJson.scripts['dev']) : '';
|
|
132
|
+
const devScriptCallsZin = /\bzin(?:trust)?\b/.test(devScript);
|
|
133
|
+
if (hasDevScript(packageJson) && !devScriptCallsZin) {
|
|
134
|
+
const npm = resolveNpmPath();
|
|
135
|
+
return { command: npm, args: ['run', 'dev'] };
|
|
136
|
+
}
|
|
137
|
+
throw ErrorFactory.createCliError("Error: No entry point found. Expected 'src/index.ts' or 'src/boot/bootstrap.ts'. Ensure your project is correctly scaffolded.");
|
|
138
|
+
};
|
|
139
|
+
const resolveNodeProdCommand = (cwd) => {
|
|
140
|
+
const compiledBoot = path.join(cwd, 'dist/src/boot/bootstrap.js');
|
|
141
|
+
let compiled;
|
|
142
|
+
if (existsSync(compiledBoot)) {
|
|
143
|
+
compiled = 'dist/src/boot/bootstrap.js';
|
|
144
|
+
}
|
|
145
|
+
if (compiled === undefined) {
|
|
146
|
+
throw ErrorFactory.createCliError("Error: Compiled app not found at dist/src/boot/bootstrap.js Run 'npm run build' first.");
|
|
147
|
+
}
|
|
148
|
+
return { command: 'node', args: [compiled] };
|
|
149
|
+
};
|
|
150
|
+
const executeWranglerStart = async (cmd, cwd, port, runtime) => {
|
|
151
|
+
if (runtime !== undefined) {
|
|
152
|
+
throw ErrorFactory.createCliError('Error: --runtime is not supported with --wrangler (Wrangler controls Workers runtime).');
|
|
153
|
+
}
|
|
154
|
+
const configPath = findWranglerConfig(cwd);
|
|
155
|
+
const entry = resolveWranglerEntry(cwd);
|
|
156
|
+
if (configPath === undefined && entry === undefined) {
|
|
157
|
+
throw ErrorFactory.createCliError("Error: wrangler config not found (wrangler.toml/json). Run 'wrangler init' first.");
|
|
158
|
+
}
|
|
159
|
+
const wranglerArgs = ['dev'];
|
|
160
|
+
if (configPath === undefined && entry !== undefined) {
|
|
161
|
+
wranglerArgs.push(entry);
|
|
162
|
+
}
|
|
163
|
+
if (typeof port === 'number') {
|
|
164
|
+
wranglerArgs.push('--port', String(port));
|
|
165
|
+
}
|
|
166
|
+
cmd.info('Starting in Wrangler dev mode...');
|
|
167
|
+
const exitCode = await SpawnUtil.spawnAndWait({ command: 'wrangler', args: wranglerArgs });
|
|
168
|
+
process.exit(exitCode);
|
|
169
|
+
};
|
|
170
|
+
const executeNodeStart = async (cmd, cwd, mode, watchEnabled) => {
|
|
171
|
+
if (mode === 'testing') {
|
|
172
|
+
throw ErrorFactory.createCliError('Error: Cannot start server in testing mode. Use --force to override (not supported).');
|
|
173
|
+
}
|
|
174
|
+
if (mode === 'development') {
|
|
175
|
+
if (!watchEnabled) {
|
|
176
|
+
cmd.warn('Watch mode disabled; starting once.');
|
|
177
|
+
const bootstrap = resolveBootstrapEntryTs(cwd);
|
|
178
|
+
const args = bootstrap === undefined ? ['src/index.ts'] : [bootstrap];
|
|
179
|
+
const exitCode = await SpawnUtil.spawnAndWait({ command: 'tsx', args });
|
|
180
|
+
process.exit(exitCode);
|
|
181
|
+
}
|
|
182
|
+
const packageJson = readPackageJson(cwd);
|
|
183
|
+
const dev = resolveNodeDevCommand(cwd, packageJson);
|
|
184
|
+
cmd.info('Starting in development mode (watch enabled)...');
|
|
185
|
+
const exitCode = await SpawnUtil.spawnAndWait({ command: dev.command, args: dev.args });
|
|
186
|
+
process.exit(exitCode);
|
|
187
|
+
}
|
|
188
|
+
const prod = resolveNodeProdCommand(cwd);
|
|
189
|
+
cmd.info('Starting in production mode...');
|
|
190
|
+
const exitCode = await SpawnUtil.spawnAndWait({ command: prod.command, args: prod.args });
|
|
191
|
+
process.exit(exitCode);
|
|
192
|
+
};
|
|
193
|
+
const executeStart = async (options, cmd) => {
|
|
194
|
+
const cwd = process.cwd();
|
|
195
|
+
EnvFileLoader.ensureLoaded();
|
|
196
|
+
const mode = resolveMode(options);
|
|
197
|
+
const port = resolvePort(options);
|
|
198
|
+
const runtime = resolveRuntime(options);
|
|
199
|
+
EnvFileLoader.applyCliOverrides({ nodeEnv: mode, port, runtime });
|
|
200
|
+
if (options.wrangler === true) {
|
|
201
|
+
await executeWranglerStart(cmd, cwd, port, runtime);
|
|
202
|
+
return;
|
|
203
|
+
}
|
|
204
|
+
const watchEnabled = resolveWatchPreference(options, mode);
|
|
205
|
+
await executeNodeStart(cmd, cwd, mode, watchEnabled);
|
|
206
|
+
};
|
|
207
|
+
export const StartCommand = Object.freeze({
|
|
208
|
+
create() {
|
|
209
|
+
const addOptions = (command) => {
|
|
210
|
+
command.alias('s');
|
|
211
|
+
command
|
|
212
|
+
.option('-w, --wrangler', 'Start with Wrangler dev mode (Cloudflare Workers)')
|
|
213
|
+
.option('--watch', 'Force watch mode (Node only)')
|
|
214
|
+
.option('--no-watch', 'Disable watch mode (Node only)')
|
|
215
|
+
.option('--mode <development|production|testing>', 'Override app mode')
|
|
216
|
+
.option('--runtime <nodejs|cloudflare|lambda|deno|auto>', 'Set RUNTIME for spawned Node')
|
|
217
|
+
.option('--port <number>', 'Override server port');
|
|
218
|
+
};
|
|
219
|
+
const cmd = BaseCommand.create({
|
|
220
|
+
name: 'start',
|
|
221
|
+
description: 'Start the application (dev watch, production, or Wrangler mode)',
|
|
222
|
+
addOptions,
|
|
223
|
+
execute: async (options) => executeStart(options, cmd),
|
|
224
|
+
});
|
|
225
|
+
return cmd;
|
|
226
|
+
},
|
|
227
|
+
});
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CLI Commands Module Index
|
|
3
|
+
*/
|
|
4
|
+
export { AddCommand } from '../commands/AddCommand';
|
|
5
|
+
export { ConfigCommand } from '../commands/ConfigCommand';
|
|
6
|
+
export { DebugCommand } from '../commands/DebugCommand';
|
|
7
|
+
export { MigrateCommand } from '../commands/MigrateCommand';
|
|
8
|
+
export { NewCommand } from '../commands/NewCommand';
|
|
9
|
+
export { PrepareCommand } from '../commands/PrepareCommand';
|
|
10
|
+
export { StartCommand } from '../commands/StartCommand';
|
|
11
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AACtD,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAC5D,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC1D,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAC9D,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AACtD,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAC9D,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CLI Commands Module Index
|
|
3
|
+
*/
|
|
4
|
+
export { AddCommand } from '../commands/AddCommand';
|
|
5
|
+
export { ConfigCommand } from '../commands/ConfigCommand';
|
|
6
|
+
export { DebugCommand } from '../commands/DebugCommand';
|
|
7
|
+
export { MigrateCommand } from '../commands/MigrateCommand';
|
|
8
|
+
export { NewCommand } from '../commands/NewCommand';
|
|
9
|
+
export { PrepareCommand } from '../commands/PrepareCommand';
|
|
10
|
+
export { StartCommand } from '../commands/StartCommand';
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Configuration Manager
|
|
3
|
+
* Handles reading, writing, and managing configuration files
|
|
4
|
+
*/
|
|
5
|
+
import { ProjectConfig } from '../config/ConfigSchema';
|
|
6
|
+
export interface IConfigManager {
|
|
7
|
+
load(): Promise<ProjectConfig>;
|
|
8
|
+
save(config?: ProjectConfig): Promise<void>;
|
|
9
|
+
getConfig(): ProjectConfig;
|
|
10
|
+
get(key: string): unknown;
|
|
11
|
+
set(key: string, value: unknown): void;
|
|
12
|
+
exists(): Promise<boolean>;
|
|
13
|
+
create(initialConfig?: Partial<ProjectConfig>): Promise<void>;
|
|
14
|
+
reset(): Promise<void>;
|
|
15
|
+
merge(partial: Partial<ProjectConfig>): void;
|
|
16
|
+
export(): string;
|
|
17
|
+
getAllKeys(): string[];
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Configuration Manager
|
|
21
|
+
* Handles reading, writing, and managing configuration files
|
|
22
|
+
* Sealed namespace for immutability
|
|
23
|
+
*/
|
|
24
|
+
export declare const ConfigManager: Readonly<{
|
|
25
|
+
/**
|
|
26
|
+
* Create a new config manager instance
|
|
27
|
+
*/
|
|
28
|
+
create(configPath?: string): IConfigManager;
|
|
29
|
+
/**
|
|
30
|
+
* Create global config directory if not exists
|
|
31
|
+
*/
|
|
32
|
+
ensureGlobalConfigDir(): Promise<void>;
|
|
33
|
+
/**
|
|
34
|
+
* Get or create global config manager
|
|
35
|
+
*/
|
|
36
|
+
getGlobalConfig(): Promise<IConfigManager>;
|
|
37
|
+
/**
|
|
38
|
+
* Get or create project config manager
|
|
39
|
+
*/
|
|
40
|
+
getProjectConfig(): Promise<IConfigManager>;
|
|
41
|
+
}>;
|
|
42
|
+
//# sourceMappingURL=ConfigManager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ConfigManager.d.ts","sourceRoot":"","sources":["../../../../src/cli/config/ConfigManager.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAIL,aAAa,EAEd,MAAM,0BAA0B,CAAC;AAMlC,MAAM,WAAW,cAAc;IAC7B,IAAI,IAAI,OAAO,CAAC,aAAa,CAAC,CAAC;IAC/B,IAAI,CAAC,MAAM,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5C,SAAS,IAAI,aAAa,CAAC;IAC3B,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;IAC1B,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,IAAI,CAAC;IACvC,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;IAC3B,MAAM,CAAC,aAAa,CAAC,EAAE,OAAO,CAAC,aAAa,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9D,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACvB,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,aAAa,CAAC,GAAG,IAAI,CAAC;IAC7C,MAAM,IAAI,MAAM,CAAC;IACjB,UAAU,IAAI,MAAM,EAAE,CAAC;CACxB;AAkHD;;;;GAIG;AACH,eAAO,MAAM,aAAa;IACxB;;OAEG;wBACgB,MAAM,GAAgC,cAAc;IAqCvE;;OAEG;6BAC4B,OAAO,CAAC,IAAI,CAAC;IAS5C;;OAEG;uBACsB,OAAO,CAAC,cAAc,CAAC;IAOhD;;OAEG;wBACuB,OAAO,CAAC,cAAc,CAAC;EAKjD,CAAC"}
|
|
@@ -0,0 +1,175 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Configuration Manager
|
|
3
|
+
* Handles reading, writing, and managing configuration files
|
|
4
|
+
*/
|
|
5
|
+
import { ConfigPaths, DEFAULT_CONFIG, getConfigValue, setConfigValue, } from '../config/ConfigSchema';
|
|
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
|
+
* Deep merge helper
|
|
12
|
+
*/
|
|
13
|
+
const deepMerge = (target, source) => {
|
|
14
|
+
const result = { ...target };
|
|
15
|
+
for (const key in source) {
|
|
16
|
+
if (typeof source[key] === 'object' && source[key] !== null && !Array.isArray(source[key])) {
|
|
17
|
+
result[key] = deepMerge(target[key] ?? {}, source[key]);
|
|
18
|
+
}
|
|
19
|
+
else {
|
|
20
|
+
result[key] = source[key];
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
25
|
+
/**
|
|
26
|
+
* Load configuration from file
|
|
27
|
+
*/
|
|
28
|
+
async function loadConfig(state) {
|
|
29
|
+
try {
|
|
30
|
+
const content = await fs.readFile(state.configPath, 'utf-8');
|
|
31
|
+
state.config = JSON.parse(content);
|
|
32
|
+
return state.config;
|
|
33
|
+
}
|
|
34
|
+
catch (err) {
|
|
35
|
+
if (err.code === 'ENOENT') {
|
|
36
|
+
Logger.debug(`Config file not found at ${state.configPath}, using defaults`);
|
|
37
|
+
state.config = structuredClone(DEFAULT_CONFIG);
|
|
38
|
+
return state.config;
|
|
39
|
+
}
|
|
40
|
+
ErrorFactory.createCliError(`Failed to load config: ${err.message}`);
|
|
41
|
+
throw err;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Save configuration to file
|
|
46
|
+
*/
|
|
47
|
+
async function saveConfig(state, newConfig) {
|
|
48
|
+
const toSave = newConfig ?? state.config;
|
|
49
|
+
if (!toSave) {
|
|
50
|
+
throw ErrorFactory.createConfigError('No configuration to save');
|
|
51
|
+
}
|
|
52
|
+
try {
|
|
53
|
+
// Ensure directory exists
|
|
54
|
+
const dir = path.dirname(state.configPath);
|
|
55
|
+
if (dir !== '.') {
|
|
56
|
+
await fs.mkdir(dir, { recursive: true });
|
|
57
|
+
}
|
|
58
|
+
// Write config with nice formatting
|
|
59
|
+
await fs.writeFile(state.configPath, JSON.stringify(toSave, null, 2));
|
|
60
|
+
state.config = toSave;
|
|
61
|
+
Logger.debug(`Config saved to ${state.configPath}`);
|
|
62
|
+
}
|
|
63
|
+
catch (err) {
|
|
64
|
+
ErrorFactory.createCliError(`Failed to save config: ${err.message}`);
|
|
65
|
+
throw err;
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Get current configuration
|
|
70
|
+
*/
|
|
71
|
+
function getConfig(state) {
|
|
72
|
+
state.config ??= structuredClone(DEFAULT_CONFIG);
|
|
73
|
+
return state.config;
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Check if config file exists
|
|
77
|
+
*/
|
|
78
|
+
async function configExists(configPath) {
|
|
79
|
+
try {
|
|
80
|
+
await fs.access(configPath);
|
|
81
|
+
return true;
|
|
82
|
+
}
|
|
83
|
+
catch (error) {
|
|
84
|
+
ErrorFactory.createCliError('Config file access check failed', error);
|
|
85
|
+
return false;
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* Flatten object keys
|
|
90
|
+
*/
|
|
91
|
+
function flattenKeys(obj, prefix = '') {
|
|
92
|
+
const keys = [];
|
|
93
|
+
for (const key in obj) {
|
|
94
|
+
const fullKey = prefix ? `${prefix}.${key}` : key;
|
|
95
|
+
const value = obj[key];
|
|
96
|
+
if (typeof value === 'object' && value !== null && !Array.isArray(value)) {
|
|
97
|
+
keys.push(...flattenKeys(value, fullKey));
|
|
98
|
+
}
|
|
99
|
+
else {
|
|
100
|
+
keys.push(fullKey);
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
return keys;
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* Configuration Manager
|
|
107
|
+
* Handles reading, writing, and managing configuration files
|
|
108
|
+
* Sealed namespace for immutability
|
|
109
|
+
*/
|
|
110
|
+
export const ConfigManager = Object.freeze({
|
|
111
|
+
/**
|
|
112
|
+
* Create a new config manager instance
|
|
113
|
+
*/
|
|
114
|
+
create(configPath = ConfigPaths.PROJECT_CONFIG) {
|
|
115
|
+
const state = {
|
|
116
|
+
config: null,
|
|
117
|
+
configPath,
|
|
118
|
+
};
|
|
119
|
+
return {
|
|
120
|
+
load: async () => loadConfig(state),
|
|
121
|
+
save: async (newConfig) => saveConfig(state, newConfig),
|
|
122
|
+
getConfig: () => getConfig(state),
|
|
123
|
+
get(key) {
|
|
124
|
+
return getConfigValue(getConfig(state), key);
|
|
125
|
+
},
|
|
126
|
+
set(key, value) {
|
|
127
|
+
setConfigValue(getConfig(state), key, value);
|
|
128
|
+
},
|
|
129
|
+
exists: async () => configExists(configPath),
|
|
130
|
+
async create(initialConfig) {
|
|
131
|
+
const newConfig = { ...DEFAULT_CONFIG, ...initialConfig };
|
|
132
|
+
await saveConfig(state, newConfig);
|
|
133
|
+
},
|
|
134
|
+
async reset() {
|
|
135
|
+
state.config = structuredClone(DEFAULT_CONFIG);
|
|
136
|
+
await saveConfig(state);
|
|
137
|
+
},
|
|
138
|
+
merge(partial) {
|
|
139
|
+
const currentConfig = getConfig(state);
|
|
140
|
+
state.config = deepMerge(currentConfig, partial);
|
|
141
|
+
},
|
|
142
|
+
export: () => JSON.stringify(getConfig(state), null, 2),
|
|
143
|
+
getAllKeys: () => flattenKeys(getConfig(state)),
|
|
144
|
+
};
|
|
145
|
+
},
|
|
146
|
+
/**
|
|
147
|
+
* Create global config directory if not exists
|
|
148
|
+
*/
|
|
149
|
+
async ensureGlobalConfigDir() {
|
|
150
|
+
try {
|
|
151
|
+
await fs.mkdir(ConfigPaths.GLOBAL_DIR, { recursive: true });
|
|
152
|
+
}
|
|
153
|
+
catch (err) {
|
|
154
|
+
ErrorFactory.createCliError('Could not create global config dir', err);
|
|
155
|
+
Logger.debug(`Could not create global config dir: ${err.message}`);
|
|
156
|
+
}
|
|
157
|
+
},
|
|
158
|
+
/**
|
|
159
|
+
* Get or create global config manager
|
|
160
|
+
*/
|
|
161
|
+
async getGlobalConfig() {
|
|
162
|
+
await this.ensureGlobalConfigDir();
|
|
163
|
+
const manager = this.create(ConfigPaths.GLOBAL_CONFIG);
|
|
164
|
+
await manager.load();
|
|
165
|
+
return manager;
|
|
166
|
+
},
|
|
167
|
+
/**
|
|
168
|
+
* Get or create project config manager
|
|
169
|
+
*/
|
|
170
|
+
async getProjectConfig() {
|
|
171
|
+
const manager = this.create(ConfigPaths.PROJECT_CONFIG);
|
|
172
|
+
await manager.load();
|
|
173
|
+
return manager;
|
|
174
|
+
},
|
|
175
|
+
});
|