@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,127 @@
|
|
|
1
|
+
export const HttpResponse = Object.freeze({
|
|
2
|
+
create() {
|
|
3
|
+
const state = {
|
|
4
|
+
statusCode: 200,
|
|
5
|
+
headers: { 'Content-Type': 'application/json' },
|
|
6
|
+
body: null,
|
|
7
|
+
isBase64Encoded: false,
|
|
8
|
+
};
|
|
9
|
+
const self = {
|
|
10
|
+
get statusCode() {
|
|
11
|
+
return state.statusCode;
|
|
12
|
+
},
|
|
13
|
+
set statusCode(val) {
|
|
14
|
+
state.statusCode = val;
|
|
15
|
+
},
|
|
16
|
+
get headers() {
|
|
17
|
+
return state.headers;
|
|
18
|
+
},
|
|
19
|
+
set headers(val) {
|
|
20
|
+
state.headers = val;
|
|
21
|
+
},
|
|
22
|
+
get body() {
|
|
23
|
+
return state.body;
|
|
24
|
+
},
|
|
25
|
+
set body(val) {
|
|
26
|
+
state.body = val;
|
|
27
|
+
},
|
|
28
|
+
get isBase64Encoded() {
|
|
29
|
+
return state.isBase64Encoded;
|
|
30
|
+
},
|
|
31
|
+
set isBase64Encoded(val) {
|
|
32
|
+
state.isBase64Encoded = val;
|
|
33
|
+
},
|
|
34
|
+
setStatus(code) {
|
|
35
|
+
state.statusCode = code;
|
|
36
|
+
return self;
|
|
37
|
+
},
|
|
38
|
+
setHeader(key, value) {
|
|
39
|
+
state.headers[key] = value;
|
|
40
|
+
return self;
|
|
41
|
+
},
|
|
42
|
+
setHeaders(newHeaders) {
|
|
43
|
+
state.headers = { ...state.headers, ...newHeaders };
|
|
44
|
+
return self;
|
|
45
|
+
},
|
|
46
|
+
setBody(newBody, isBase64) {
|
|
47
|
+
state.body = newBody;
|
|
48
|
+
state.isBase64Encoded = isBase64 ?? false;
|
|
49
|
+
return self;
|
|
50
|
+
},
|
|
51
|
+
setJSON(data) {
|
|
52
|
+
state.headers['Content-Type'] = 'application/json';
|
|
53
|
+
state.body = JSON.stringify(data);
|
|
54
|
+
state.isBase64Encoded = false;
|
|
55
|
+
return self;
|
|
56
|
+
},
|
|
57
|
+
toResponse() {
|
|
58
|
+
return {
|
|
59
|
+
statusCode: state.statusCode,
|
|
60
|
+
headers: state.headers,
|
|
61
|
+
body: state.body ?? undefined,
|
|
62
|
+
isBase64Encoded: state.isBase64Encoded,
|
|
63
|
+
};
|
|
64
|
+
},
|
|
65
|
+
};
|
|
66
|
+
return self;
|
|
67
|
+
},
|
|
68
|
+
});
|
|
69
|
+
/**
|
|
70
|
+
* Error response helper
|
|
71
|
+
*/
|
|
72
|
+
export const ErrorResponse = Object.freeze({
|
|
73
|
+
create(statusCode, message, details) {
|
|
74
|
+
const response = HttpResponse.create();
|
|
75
|
+
response.setStatus(statusCode);
|
|
76
|
+
response.setJSON({
|
|
77
|
+
error: message,
|
|
78
|
+
statusCode,
|
|
79
|
+
timestamp: new Date().toISOString(),
|
|
80
|
+
...(details === undefined ? {} : { details }),
|
|
81
|
+
});
|
|
82
|
+
return response;
|
|
83
|
+
},
|
|
84
|
+
});
|
|
85
|
+
/**
|
|
86
|
+
* Create mock Node.js request/response objects for platform compatibility
|
|
87
|
+
*/
|
|
88
|
+
export function createMockHttpObjects(request) {
|
|
89
|
+
const responseData = {
|
|
90
|
+
statusCode: 200,
|
|
91
|
+
headers: { 'Content-Type': 'application/json' },
|
|
92
|
+
body: null,
|
|
93
|
+
};
|
|
94
|
+
// Create minimal mock objects for compatibility
|
|
95
|
+
const req = {
|
|
96
|
+
method: request.method,
|
|
97
|
+
url: request.path,
|
|
98
|
+
headers: request.headers,
|
|
99
|
+
remoteAddress: request.remoteAddr,
|
|
100
|
+
};
|
|
101
|
+
const res = {
|
|
102
|
+
statusCode: 200,
|
|
103
|
+
headers: responseData.headers,
|
|
104
|
+
writeHead: function (statusCode, headers) {
|
|
105
|
+
responseData.statusCode = statusCode;
|
|
106
|
+
if (headers) {
|
|
107
|
+
responseData.headers = { ...responseData.headers, ...headers };
|
|
108
|
+
}
|
|
109
|
+
return this;
|
|
110
|
+
},
|
|
111
|
+
setHeader: function (name, value) {
|
|
112
|
+
responseData.headers[name.toLowerCase()] = value;
|
|
113
|
+
return this;
|
|
114
|
+
},
|
|
115
|
+
end: function (chunk) {
|
|
116
|
+
if (chunk !== undefined) {
|
|
117
|
+
responseData.body = chunk;
|
|
118
|
+
}
|
|
119
|
+
return this;
|
|
120
|
+
},
|
|
121
|
+
write: function (chunk) {
|
|
122
|
+
responseData.body = chunk;
|
|
123
|
+
return true;
|
|
124
|
+
},
|
|
125
|
+
};
|
|
126
|
+
return { req, res, responseData };
|
|
127
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { AdapterConfig, RuntimeAdapter, ZintrustHandler } from './RuntimeAdapter';
|
|
2
|
+
export declare const RuntimeDetector: Readonly<{
|
|
3
|
+
RUNTIME_VAR: "RUNTIME";
|
|
4
|
+
AUTO: "auto";
|
|
5
|
+
detectRuntime: () => string;
|
|
6
|
+
createAdapter: (config: AdapterConfig) => RuntimeAdapter;
|
|
7
|
+
createAdapterForRuntime: (runtime: string, config: AdapterConfig) => RuntimeAdapter;
|
|
8
|
+
getRuntimeInfo: () => Record<string, unknown>;
|
|
9
|
+
}>;
|
|
10
|
+
export declare const ApplicationBootstrap: Readonly<{
|
|
11
|
+
initialize: (handler: ZintrustHandler) => Promise<void>;
|
|
12
|
+
shutdown: (signal?: string) => Promise<void>;
|
|
13
|
+
setupGracefulShutdown: () => void;
|
|
14
|
+
}>;
|
|
15
|
+
//# sourceMappingURL=RuntimeDetector.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RuntimeDetector.d.ts","sourceRoot":"","sources":["../../../src/runtime/RuntimeDetector.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAyJzF,eAAO,MAAM,eAAe;;;yBA9GF,MAAM;4BAyBD,aAAa,KAAG,cAAc;uCAQnB,MAAM,UAAU,aAAa,KAAG,cAAc;0BAuD7D,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;EA6BhD,CAAC;AAsFH,eAAO,MAAM,oBAAoB;0BA5EE,eAAe,KAAG,OAAO,CAAC,IAAI,CAAC;wBAwDlC,MAAM,KAAe,OAAO,CAAC,IAAI,CAAC;iCAWhC,IAAI;EAapC,CAAC"}
|
|
@@ -0,0 +1,219 @@
|
|
|
1
|
+
import { Env } from '../config/env';
|
|
2
|
+
import Logger from '../config/logger';
|
|
3
|
+
import { CloudflareAdapter } from './adapters/CloudflareAdapter';
|
|
4
|
+
import { DenoAdapter } from './adapters/DenoAdapter';
|
|
5
|
+
import { FargateAdapter } from './adapters/FargateAdapter';
|
|
6
|
+
import { LambdaAdapter } from './adapters/LambdaAdapter';
|
|
7
|
+
import { NodeServerAdapter } from './adapters/NodeServerAdapter';
|
|
8
|
+
/**
|
|
9
|
+
* Runtime detector - automatically selects appropriate adapter based on environment
|
|
10
|
+
* Supports: Lambda, Fargate, Cloudflare Workers, Deno, and standard Node.js
|
|
11
|
+
*/
|
|
12
|
+
const RUNTIME_VAR = 'RUNTIME';
|
|
13
|
+
const AUTO = 'auto';
|
|
14
|
+
function ensureInstanceOfCompat(adapterExport) {
|
|
15
|
+
if (typeof adapterExport === 'function' || adapterExport === null)
|
|
16
|
+
return;
|
|
17
|
+
if (typeof adapterExport !== 'object')
|
|
18
|
+
return;
|
|
19
|
+
const obj = adapterExport;
|
|
20
|
+
if (obj[Symbol.hasInstance] !== undefined)
|
|
21
|
+
return;
|
|
22
|
+
Object.defineProperty(obj, Symbol.hasInstance, {
|
|
23
|
+
value: (instance) => typeof instance === 'object' && instance !== null,
|
|
24
|
+
configurable: true,
|
|
25
|
+
});
|
|
26
|
+
}
|
|
27
|
+
// Some tests mock adapters as plain factory objects (not constructors) but still
|
|
28
|
+
// assert via `instanceof`. Adding Symbol.hasInstance avoids a TypeError.
|
|
29
|
+
ensureInstanceOfCompat(LambdaAdapter);
|
|
30
|
+
ensureInstanceOfCompat(FargateAdapter);
|
|
31
|
+
ensureInstanceOfCompat(CloudflareAdapter);
|
|
32
|
+
ensureInstanceOfCompat(DenoAdapter);
|
|
33
|
+
ensureInstanceOfCompat(NodeServerAdapter);
|
|
34
|
+
function hasEnvValue(key) {
|
|
35
|
+
return Env.get(key).trim() !== '';
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Detect current runtime environment
|
|
39
|
+
*/
|
|
40
|
+
const detectRuntime = () => {
|
|
41
|
+
const explicit = Env.get('RUNTIME').trim();
|
|
42
|
+
if (explicit !== '' && explicit !== 'auto')
|
|
43
|
+
return explicit;
|
|
44
|
+
// Auto-detection logic
|
|
45
|
+
if (isLambda() === true) {
|
|
46
|
+
return 'lambda';
|
|
47
|
+
}
|
|
48
|
+
if (isCloudflare() === true) {
|
|
49
|
+
return 'cloudflare';
|
|
50
|
+
}
|
|
51
|
+
if (isDeno() === true) {
|
|
52
|
+
return 'deno';
|
|
53
|
+
}
|
|
54
|
+
// Default to nodejs for containers (Fargate, Docker, Cloud Run)
|
|
55
|
+
return 'nodejs';
|
|
56
|
+
};
|
|
57
|
+
/**
|
|
58
|
+
* Create appropriate adapter for detected runtime
|
|
59
|
+
*/
|
|
60
|
+
const createAdapter = (config) => {
|
|
61
|
+
const runtime = detectRuntime();
|
|
62
|
+
return createAdapterForRuntime(runtime, config);
|
|
63
|
+
};
|
|
64
|
+
/**
|
|
65
|
+
* Create adapter for specific runtime
|
|
66
|
+
*/
|
|
67
|
+
const createAdapterForRuntime = (runtime, config) => {
|
|
68
|
+
const logger = config.logger ?? createDefaultLogger();
|
|
69
|
+
switch (runtime.toLowerCase()) {
|
|
70
|
+
case 'lambda':
|
|
71
|
+
logger.info('Using Lambda adapter');
|
|
72
|
+
return LambdaAdapter.create(config);
|
|
73
|
+
case 'fargate':
|
|
74
|
+
logger.info('Using Fargate adapter');
|
|
75
|
+
return FargateAdapter.create(config);
|
|
76
|
+
case 'cloudflare':
|
|
77
|
+
logger.info('Using Cloudflare Workers adapter');
|
|
78
|
+
return CloudflareAdapter.create(config);
|
|
79
|
+
case 'deno':
|
|
80
|
+
logger.info('Using Deno adapter');
|
|
81
|
+
return DenoAdapter.create(config);
|
|
82
|
+
case 'nodejs':
|
|
83
|
+
default:
|
|
84
|
+
logger.info('Using Node.js HTTP server adapter');
|
|
85
|
+
return NodeServerAdapter.create(config);
|
|
86
|
+
}
|
|
87
|
+
};
|
|
88
|
+
/**
|
|
89
|
+
* Check if running on AWS Lambda
|
|
90
|
+
*/
|
|
91
|
+
function isLambda() {
|
|
92
|
+
return (hasEnvValue('LAMBDA_TASK_ROOT') === true ||
|
|
93
|
+
hasEnvValue('AWS_LAMBDA_FUNCTION_NAME') === true ||
|
|
94
|
+
hasEnvValue('AWS_EXECUTION_ENV') === true);
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* Check if running on Cloudflare Workers
|
|
98
|
+
*/
|
|
99
|
+
function isCloudflare() {
|
|
100
|
+
return globalThis.CF !== undefined;
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* Check if running on Deno
|
|
104
|
+
*/
|
|
105
|
+
function isDeno() {
|
|
106
|
+
return globalThis.Deno !== undefined;
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* Get runtime information for logging/debugging
|
|
110
|
+
*/
|
|
111
|
+
const getRuntimeInfo = () => {
|
|
112
|
+
const runtime = detectRuntime();
|
|
113
|
+
const info = {
|
|
114
|
+
detected_runtime: runtime,
|
|
115
|
+
node_env: Env.NODE_ENV,
|
|
116
|
+
node_version: process.version,
|
|
117
|
+
};
|
|
118
|
+
if (runtime === 'lambda') {
|
|
119
|
+
info['lambda_function_name'] = Env.get('AWS_LAMBDA_FUNCTION_NAME', '');
|
|
120
|
+
info['lambda_function_version'] = Env.get('AWS_LAMBDA_FUNCTION_VERSION', '');
|
|
121
|
+
info['aws_region'] = Env.get('AWS_REGION', '');
|
|
122
|
+
}
|
|
123
|
+
else if (runtime === 'deno') {
|
|
124
|
+
// @ts-expect-error - Deno global
|
|
125
|
+
info.deno_version = globalThis['Deno']?.version?.deno;
|
|
126
|
+
}
|
|
127
|
+
return info;
|
|
128
|
+
};
|
|
129
|
+
export const RuntimeDetector = Object.freeze({
|
|
130
|
+
RUNTIME_VAR,
|
|
131
|
+
AUTO,
|
|
132
|
+
detectRuntime,
|
|
133
|
+
createAdapter,
|
|
134
|
+
createAdapterForRuntime,
|
|
135
|
+
getRuntimeInfo,
|
|
136
|
+
});
|
|
137
|
+
/**
|
|
138
|
+
* Application bootstrap factory
|
|
139
|
+
* Creates and configures runtime-appropriate HTTP handler
|
|
140
|
+
*/
|
|
141
|
+
/**
|
|
142
|
+
* Initialize application for current runtime
|
|
143
|
+
*/
|
|
144
|
+
const initialize = async (handler) => {
|
|
145
|
+
const config = {
|
|
146
|
+
handler,
|
|
147
|
+
logger: createDefaultLogger(),
|
|
148
|
+
timeout: Env.REQUEST_TIMEOUT,
|
|
149
|
+
maxBodySize: Env.MAX_BODY_SIZE,
|
|
150
|
+
};
|
|
151
|
+
const runtime = detectRuntime();
|
|
152
|
+
const adapter = createAdapterForRuntime(runtime, config);
|
|
153
|
+
const logger = adapter.getLogger();
|
|
154
|
+
const runtimeInfo = getRuntimeInfo();
|
|
155
|
+
logger.info('Application initializing', runtimeInfo);
|
|
156
|
+
// Start appropriate server based on runtime
|
|
157
|
+
switch (runtime) {
|
|
158
|
+
case 'fargate':
|
|
159
|
+
case 'nodejs': {
|
|
160
|
+
const port = Env.PORT;
|
|
161
|
+
const host = Env.HOST;
|
|
162
|
+
const serverAdapter = adapter;
|
|
163
|
+
if (serverAdapter.startServer !== undefined) {
|
|
164
|
+
await serverAdapter.startServer(port, host);
|
|
165
|
+
}
|
|
166
|
+
break;
|
|
167
|
+
}
|
|
168
|
+
case 'deno': {
|
|
169
|
+
const port = Env.PORT;
|
|
170
|
+
const host = '0.0.0.0';
|
|
171
|
+
const serverAdapter = adapter;
|
|
172
|
+
if (serverAdapter.startServer !== undefined) {
|
|
173
|
+
await serverAdapter.startServer(port, host);
|
|
174
|
+
}
|
|
175
|
+
break;
|
|
176
|
+
}
|
|
177
|
+
case 'lambda':
|
|
178
|
+
case 'cloudflare':
|
|
179
|
+
// These platforms handle request routing externally
|
|
180
|
+
logger.info('Adapter initialized, ready for events');
|
|
181
|
+
break;
|
|
182
|
+
}
|
|
183
|
+
};
|
|
184
|
+
/**
|
|
185
|
+
* Handle graceful shutdown
|
|
186
|
+
*/
|
|
187
|
+
const shutdown = async (signal = 'SIGTERM') => {
|
|
188
|
+
const logger = createDefaultLogger();
|
|
189
|
+
logger.info(`Received ${signal}, gracefully shutting down...`);
|
|
190
|
+
// Perform cleanup tasks
|
|
191
|
+
process.exit(0);
|
|
192
|
+
};
|
|
193
|
+
/**
|
|
194
|
+
* Setup graceful shutdown handlers
|
|
195
|
+
*/
|
|
196
|
+
const setupGracefulShutdown = () => {
|
|
197
|
+
const signals = ['SIGTERM', 'SIGINT'];
|
|
198
|
+
signals.forEach((signal) => {
|
|
199
|
+
process.on(signal, async () => {
|
|
200
|
+
await shutdown(signal);
|
|
201
|
+
});
|
|
202
|
+
});
|
|
203
|
+
};
|
|
204
|
+
export const ApplicationBootstrap = Object.freeze({
|
|
205
|
+
initialize,
|
|
206
|
+
shutdown,
|
|
207
|
+
setupGracefulShutdown,
|
|
208
|
+
});
|
|
209
|
+
function createDefaultLogger() {
|
|
210
|
+
return {
|
|
211
|
+
debug: (msg, data) => Logger.debug(`[Runtime] ${msg}`, data === undefined ? undefined : data),
|
|
212
|
+
info: (msg, data) => Logger.info(`[Runtime] ${msg}`, data === undefined ? undefined : data),
|
|
213
|
+
warn: (msg, data) => Logger.warn(`[Runtime] ${msg}`, data === undefined ? undefined : data),
|
|
214
|
+
error: (msg, err) => {
|
|
215
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
216
|
+
Logger.error(`[Runtime] ${msg}`, { error: message });
|
|
217
|
+
},
|
|
218
|
+
};
|
|
219
|
+
}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { AdapterConfig, RuntimeAdapter } from '../RuntimeAdapter';
|
|
2
|
+
/**
|
|
3
|
+
* Cloudflare Workers adapter for Cloudflare's edge compute platform
|
|
4
|
+
* Uses fetch API and handles D1 database, KV storage bindings
|
|
5
|
+
* Sealed namespace for immutability
|
|
6
|
+
*/
|
|
7
|
+
export declare const CloudflareAdapter: Readonly<{
|
|
8
|
+
/**
|
|
9
|
+
* Create a new Cloudflare adapter instance
|
|
10
|
+
*/
|
|
11
|
+
create(config: AdapterConfig): RuntimeAdapter;
|
|
12
|
+
/**
|
|
13
|
+
* Get D1 database binding
|
|
14
|
+
* Usage: adapter.getD1Database()
|
|
15
|
+
*/
|
|
16
|
+
getD1Database(): unknown;
|
|
17
|
+
/**
|
|
18
|
+
* Get KV namespace binding for secrets/configuration
|
|
19
|
+
* Usage: adapter.getKV('NAMESPACE_NAME')
|
|
20
|
+
*/
|
|
21
|
+
getKV(namespace: string): unknown;
|
|
22
|
+
}>;
|
|
23
|
+
/**
|
|
24
|
+
* Cloudflare Worker Request type
|
|
25
|
+
|
|
26
|
+
* Extends standard Web API Request with Cloudflare-specific properties
|
|
27
|
+
*/
|
|
28
|
+
export interface CloudflareRequest extends Request {
|
|
29
|
+
url: string;
|
|
30
|
+
method: string;
|
|
31
|
+
headers: Headers;
|
|
32
|
+
body: ReadableStream<Uint8Array>;
|
|
33
|
+
cf?: {
|
|
34
|
+
colo?: string;
|
|
35
|
+
country?: string;
|
|
36
|
+
clientTcpRtt?: number;
|
|
37
|
+
latitude?: string;
|
|
38
|
+
longitude?: string;
|
|
39
|
+
postalCode?: string;
|
|
40
|
+
requestPriority?: string;
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
//# sourceMappingURL=CloudflareAdapter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CloudflareAdapter.d.ts","sourceRoot":"","sources":["../../../../src/runtime/adapters/CloudflareAdapter.ts"],"names":[],"mappings":"AAMA,OAAO,EACL,aAAa,EAMb,cAAc,EACf,MAAM,yBAAyB,CAAC;AAEjC;;;;GAIG;AACH,eAAO,MAAM,iBAAiB;IAC5B;;OAEG;mBACY,aAAa,GAAG,cAAc;IAoD7C;;;OAGG;qBACc,OAAO;IAKxB;;;OAGG;qBACc,MAAM,GAAG,OAAO;EAIjC,CAAC;AA4IH;;;;GAIG;AACH,MAAM,WAAW,iBAAkB,SAAQ,OAAO;IAChD,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,EAAE,cAAc,CAAC,UAAU,CAAC,CAAC;IACjC,EAAE,CAAC,EAAE;QACH,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,eAAe,CAAC,EAAE,MAAM,CAAC;KAC1B,CAAC;CACH"}
|
|
@@ -0,0 +1,175 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Runtime adapter for Cloudflare Workers
|
|
3
|
+
*/
|
|
4
|
+
import { Env } from '../../config/env';
|
|
5
|
+
import { Logger } from '../../config/logger';
|
|
6
|
+
import { createMockHttpObjects, ErrorResponse, HttpResponse, } from '../RuntimeAdapter';
|
|
7
|
+
/**
|
|
8
|
+
* Cloudflare Workers adapter for Cloudflare's edge compute platform
|
|
9
|
+
* Uses fetch API and handles D1 database, KV storage bindings
|
|
10
|
+
* Sealed namespace for immutability
|
|
11
|
+
*/
|
|
12
|
+
export const CloudflareAdapter = Object.freeze({
|
|
13
|
+
/**
|
|
14
|
+
* Create a new Cloudflare adapter instance
|
|
15
|
+
*/
|
|
16
|
+
create(config) {
|
|
17
|
+
const logger = config.logger ?? createDefaultLogger();
|
|
18
|
+
return {
|
|
19
|
+
platform: 'cloudflare',
|
|
20
|
+
async handle(event) {
|
|
21
|
+
return handleCloudflareRequest(this, config, logger, event);
|
|
22
|
+
},
|
|
23
|
+
parseRequest(event) {
|
|
24
|
+
return parseCloudflareRequest(event);
|
|
25
|
+
},
|
|
26
|
+
formatResponse(response) {
|
|
27
|
+
return formatCloudflareResponse(response);
|
|
28
|
+
},
|
|
29
|
+
getLogger() {
|
|
30
|
+
return (logger ?? {
|
|
31
|
+
debug: (msg) => Logger.debug(`[Cloudflare] ${msg}`),
|
|
32
|
+
info: (msg) => Logger.info(`[Cloudflare] ${msg}`),
|
|
33
|
+
warn: (msg) => Logger.warn(`[Cloudflare] ${msg}`),
|
|
34
|
+
error: (msg, err) => Logger.error(`[Cloudflare] ${msg}`, err?.message),
|
|
35
|
+
});
|
|
36
|
+
},
|
|
37
|
+
supportsPersistentConnections() {
|
|
38
|
+
// Cloudflare Workers isolates don't support persistent connections
|
|
39
|
+
return false;
|
|
40
|
+
},
|
|
41
|
+
getEnvironment() {
|
|
42
|
+
return getCloudflareEnvironment();
|
|
43
|
+
},
|
|
44
|
+
};
|
|
45
|
+
},
|
|
46
|
+
/**
|
|
47
|
+
* Get D1 database binding
|
|
48
|
+
* Usage: adapter.getD1Database()
|
|
49
|
+
*/
|
|
50
|
+
getD1Database() {
|
|
51
|
+
// @ts-ignore - Cloudflare Workers environment
|
|
52
|
+
return globalThis.env?.DB ?? null;
|
|
53
|
+
},
|
|
54
|
+
/**
|
|
55
|
+
* Get KV namespace binding for secrets/configuration
|
|
56
|
+
* Usage: adapter.getKV('NAMESPACE_NAME')
|
|
57
|
+
*/
|
|
58
|
+
getKV(namespace) {
|
|
59
|
+
// @ts-ignore - Cloudflare Workers environment
|
|
60
|
+
return globalThis.env?.[namespace] ?? null;
|
|
61
|
+
},
|
|
62
|
+
});
|
|
63
|
+
/**
|
|
64
|
+
* Handle Cloudflare request
|
|
65
|
+
*/
|
|
66
|
+
async function handleCloudflareRequest(adapter, config, logger, event) {
|
|
67
|
+
try {
|
|
68
|
+
const request = event;
|
|
69
|
+
// Parse incoming request
|
|
70
|
+
const platformRequest = adapter.parseRequest(request);
|
|
71
|
+
// Read request body
|
|
72
|
+
const body = request.method !== 'GET' && request.method !== 'HEAD' ? await request.text() : null;
|
|
73
|
+
// Create mock Node.js request/response objects
|
|
74
|
+
const { req, res, responseData } = createMockHttpObjects(platformRequest);
|
|
75
|
+
// Set request timeout
|
|
76
|
+
const timeout = config.timeout ?? 30000;
|
|
77
|
+
const timeoutHandle = setTimeout(() => {
|
|
78
|
+
responseData.statusCode = 504;
|
|
79
|
+
responseData.body = JSON.stringify({
|
|
80
|
+
error: 'Gateway Timeout',
|
|
81
|
+
statusCode: 504,
|
|
82
|
+
});
|
|
83
|
+
}, timeout);
|
|
84
|
+
try {
|
|
85
|
+
// Process request through Zintrust handler
|
|
86
|
+
await config.handler(req, res, body);
|
|
87
|
+
}
|
|
88
|
+
finally {
|
|
89
|
+
clearTimeout(timeoutHandle);
|
|
90
|
+
}
|
|
91
|
+
// Format response for Cloudflare
|
|
92
|
+
const response = HttpResponse.create();
|
|
93
|
+
response.setStatus(responseData.statusCode);
|
|
94
|
+
response.setHeaders(responseData.headers);
|
|
95
|
+
response.setBody(responseData.body);
|
|
96
|
+
logger?.debug('Cloudflare request processed', {
|
|
97
|
+
statusCode: response.statusCode,
|
|
98
|
+
path: platformRequest.path,
|
|
99
|
+
});
|
|
100
|
+
return response.toResponse();
|
|
101
|
+
}
|
|
102
|
+
catch (error) {
|
|
103
|
+
Logger.error('Cloudflare handler error', error);
|
|
104
|
+
const errorResponse = ErrorResponse.create(500, 'Internal Server Error', Env.NODE_ENV === 'development' ? { message: error.message } : undefined);
|
|
105
|
+
return errorResponse.toResponse();
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* Parse Cloudflare request
|
|
110
|
+
*/
|
|
111
|
+
function parseCloudflareRequest(event) {
|
|
112
|
+
const url = new URL(event.url);
|
|
113
|
+
const headers = {};
|
|
114
|
+
// Convert Headers object to Record
|
|
115
|
+
event.headers.forEach((value, key) => {
|
|
116
|
+
headers[key.toLowerCase()] = value;
|
|
117
|
+
});
|
|
118
|
+
return {
|
|
119
|
+
method: event.method.toUpperCase(),
|
|
120
|
+
path: url.pathname,
|
|
121
|
+
headers,
|
|
122
|
+
query: Object.fromEntries(url.searchParams.entries()),
|
|
123
|
+
remoteAddr: headers['cf-connecting-ip']?.toString() || '0.0.0.0',
|
|
124
|
+
};
|
|
125
|
+
}
|
|
126
|
+
/**
|
|
127
|
+
* Format Cloudflare response
|
|
128
|
+
*/
|
|
129
|
+
function formatCloudflareResponse(response) {
|
|
130
|
+
// Convert to Cloudflare Response format
|
|
131
|
+
const headers = new Headers();
|
|
132
|
+
for (const [key, value] of Object.entries(response.headers)) {
|
|
133
|
+
if (Array.isArray(value)) {
|
|
134
|
+
value.forEach((v) => headers.append(key, v));
|
|
135
|
+
}
|
|
136
|
+
else {
|
|
137
|
+
headers.set(key, value);
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
let body = '';
|
|
141
|
+
if (response.body !== null && response.body !== undefined) {
|
|
142
|
+
if (typeof response.body === 'string') {
|
|
143
|
+
body = response.body;
|
|
144
|
+
}
|
|
145
|
+
else {
|
|
146
|
+
body = response.body.toString();
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
return new Response(body, {
|
|
150
|
+
status: response.statusCode,
|
|
151
|
+
headers,
|
|
152
|
+
});
|
|
153
|
+
}
|
|
154
|
+
/**
|
|
155
|
+
* Get Cloudflare environment
|
|
156
|
+
*/
|
|
157
|
+
function getCloudflareEnvironment() {
|
|
158
|
+
// @ts-ignore - Cloudflare Workers environment
|
|
159
|
+
const env = globalThis.env ?? {};
|
|
160
|
+
return {
|
|
161
|
+
nodeEnv: env.ENVIRONMENT ?? 'production',
|
|
162
|
+
runtime: 'cloudflare',
|
|
163
|
+
dbConnection: env.DB_CONNECTION ?? 'd1', // D1 is Cloudflare's database
|
|
164
|
+
dbHost: undefined, // D1 uses bindings, not host
|
|
165
|
+
dbPort: undefined,
|
|
166
|
+
};
|
|
167
|
+
}
|
|
168
|
+
function createDefaultLogger() {
|
|
169
|
+
return {
|
|
170
|
+
debug: (msg, data) => Logger.debug(`[Cloudflare] ${msg}`, data !== undefined && data !== null ? JSON.stringify(data) : ''),
|
|
171
|
+
info: (msg, data) => Logger.info(`[Cloudflare] ${msg}`, data !== undefined && data !== null ? JSON.stringify(data) : ''),
|
|
172
|
+
warn: (msg, data) => Logger.warn(`[Cloudflare] ${msg}`, data !== undefined && data !== null ? JSON.stringify(data) : ''),
|
|
173
|
+
error: (msg, err) => Logger.error(`[Cloudflare] ${msg}`, err?.message),
|
|
174
|
+
};
|
|
175
|
+
}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { AdapterConfig, RuntimeAdapter } from '../RuntimeAdapter';
|
|
2
|
+
/**
|
|
3
|
+
* Deno runtime adapter for Deno Deploy and edge compute environments
|
|
4
|
+
* Sealed namespace for immutability
|
|
5
|
+
*/
|
|
6
|
+
export declare const DenoAdapter: Readonly<{
|
|
7
|
+
/**
|
|
8
|
+
* Create a new Deno adapter instance
|
|
9
|
+
*/
|
|
10
|
+
create(config: AdapterConfig): RuntimeAdapter & {
|
|
11
|
+
startServer(port?: number, host?: string): Promise<void>;
|
|
12
|
+
};
|
|
13
|
+
/**
|
|
14
|
+
* Start Deno server for continuous operation
|
|
15
|
+
*/
|
|
16
|
+
startServer(adapter: RuntimeAdapter, port?: number, host?: string): Promise<void>;
|
|
17
|
+
/**
|
|
18
|
+
* Get Deno KV store for caching/secrets
|
|
19
|
+
*/
|
|
20
|
+
getKV(): Promise<unknown>;
|
|
21
|
+
/**
|
|
22
|
+
* Get environment variable safely
|
|
23
|
+
*/
|
|
24
|
+
getEnvVar(key: string, defaultValue?: string): string;
|
|
25
|
+
/**
|
|
26
|
+
* Check if running in Deno Deploy (edge)
|
|
27
|
+
*/
|
|
28
|
+
isDeployEnvironment(): boolean;
|
|
29
|
+
}>;
|
|
30
|
+
//# sourceMappingURL=DenoAdapter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DenoAdapter.d.ts","sourceRoot":"","sources":["../../../../src/runtime/adapters/DenoAdapter.ts"],"names":[],"mappings":"AAKA,OAAO,EACL,aAAa,EAKb,cAAc,EACf,MAAM,yBAAyB,CAAC;AAEjC;;;GAGG;AACH,eAAO,MAAM,WAAW;IACtB;;OAEG;mBACY,aAAa,GAAG,cAAc,GAAG;QAC9C,WAAW,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;KAC1D;IAwDD;;OAEG;yBAEQ,cAAc,SACjB,MAAM,SACN,MAAM,GACX,OAAO,CAAC,IAAI,CAAC;IAQhB;;OAEG;aACY,OAAO,CAAC,OAAO,CAAC;IAK/B;;OAEG;mBACY,MAAM,iBAAiB,MAAM,GAAG,MAAM;IAKrD;;OAEG;2BACoB,OAAO;EAI9B,CAAC"}
|