@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,122 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Unified Secrets Management Layer
|
|
3
|
+
* Abstracts secrets retrieval across different cloud platforms
|
|
4
|
+
* Supports: AWS Secrets Manager, Parameter Store, Cloudflare KV, Deno env
|
|
5
|
+
*/
|
|
6
|
+
export interface CloudflareKV {
|
|
7
|
+
get(key: string): Promise<string | null>;
|
|
8
|
+
put(key: string, value: string, options?: {
|
|
9
|
+
expirationTtl?: number;
|
|
10
|
+
}): Promise<void>;
|
|
11
|
+
delete(key: string): Promise<void>;
|
|
12
|
+
list(options?: {
|
|
13
|
+
prefix?: string;
|
|
14
|
+
}): Promise<{
|
|
15
|
+
keys: {
|
|
16
|
+
name: string;
|
|
17
|
+
}[];
|
|
18
|
+
}>;
|
|
19
|
+
}
|
|
20
|
+
export interface SecretConfig {
|
|
21
|
+
platform: 'aws' | 'cloudflare' | 'deno' | 'local';
|
|
22
|
+
region?: string;
|
|
23
|
+
kv?: CloudflareKV;
|
|
24
|
+
}
|
|
25
|
+
export interface SecretValue {
|
|
26
|
+
key: string;
|
|
27
|
+
value: string;
|
|
28
|
+
expiresAt?: number;
|
|
29
|
+
rotationEnabled?: boolean;
|
|
30
|
+
}
|
|
31
|
+
interface SecretsManagerInstance {
|
|
32
|
+
getSecret(key: string, options?: GetSecretOptions): Promise<string>;
|
|
33
|
+
setSecret(key: string, value: string, options?: SetSecretOptions): Promise<void>;
|
|
34
|
+
deleteSecret(key: string): Promise<void>;
|
|
35
|
+
rotateSecret(key: string): Promise<void>;
|
|
36
|
+
listSecrets(pattern?: string): Promise<string[]>;
|
|
37
|
+
clearCache(key?: string): void;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* SecretsManager - Unified interface for retrieving secrets
|
|
41
|
+
* Sealed namespace for immutability
|
|
42
|
+
*/
|
|
43
|
+
export declare const SecretsManager: Readonly<{
|
|
44
|
+
/**
|
|
45
|
+
* Get or create singleton instance
|
|
46
|
+
*/
|
|
47
|
+
getInstance(config?: SecretConfig): SecretsManagerInstance;
|
|
48
|
+
/**
|
|
49
|
+
* Get secret value from appropriate backend
|
|
50
|
+
*/
|
|
51
|
+
getSecret(key: string, options?: GetSecretOptions): Promise<string>;
|
|
52
|
+
/**
|
|
53
|
+
* Set secret value
|
|
54
|
+
*/
|
|
55
|
+
setSecret(key: string, value: string, options?: SetSecretOptions): Promise<void>;
|
|
56
|
+
/**
|
|
57
|
+
* Delete secret
|
|
58
|
+
*/
|
|
59
|
+
deleteSecret(key: string): Promise<void>;
|
|
60
|
+
/**
|
|
61
|
+
* Rotate secret (trigger new secret generation)
|
|
62
|
+
*/
|
|
63
|
+
rotateSecret(key: string): Promise<void>;
|
|
64
|
+
/**
|
|
65
|
+
* Get all secrets matching pattern
|
|
66
|
+
*/
|
|
67
|
+
listSecrets(pattern?: string): Promise<string[]>;
|
|
68
|
+
/**
|
|
69
|
+
* Clear cache (useful after rotation)
|
|
70
|
+
*/
|
|
71
|
+
clearCache(key?: string): void;
|
|
72
|
+
}>;
|
|
73
|
+
/**
|
|
74
|
+
* Predefined secret keys
|
|
75
|
+
* Sealed namespace for immutability
|
|
76
|
+
*/
|
|
77
|
+
export declare const SECRETS: Readonly<{
|
|
78
|
+
readonly DB_USERNAME: "db/username";
|
|
79
|
+
readonly DB_PASSWORD: "db/password";
|
|
80
|
+
readonly DB_HOST: "db/host";
|
|
81
|
+
readonly DB_PORT: "db/port";
|
|
82
|
+
readonly DB_DATABASE: "db/database";
|
|
83
|
+
readonly JWT_SECRET: "jwt/secret";
|
|
84
|
+
readonly JWT_REFRESH_SECRET: "jwt/refresh-secret";
|
|
85
|
+
readonly ENCRYPTION_KEY: "encryption/key";
|
|
86
|
+
readonly ENCRYPTION_IV: "encryption/iv";
|
|
87
|
+
readonly STRIPE_API_KEY: "stripe/api-key";
|
|
88
|
+
readonly STRIPE_WEBHOOK_SECRET: "stripe/webhook-secret";
|
|
89
|
+
readonly SENDGRID_API_KEY: "sendgrid/api-key";
|
|
90
|
+
readonly GITHUB_TOKEN: "github/token";
|
|
91
|
+
readonly SESSION_SECRET: "session/secret";
|
|
92
|
+
readonly CSRF_SECRET: "csrf/secret";
|
|
93
|
+
}>;
|
|
94
|
+
export interface GetSecretOptions {
|
|
95
|
+
cacheTtl?: number;
|
|
96
|
+
throwIfMissing?: boolean;
|
|
97
|
+
}
|
|
98
|
+
export interface SetSecretOptions {
|
|
99
|
+
expirationTtl?: number;
|
|
100
|
+
metadata?: Record<string, unknown>;
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* Helper to get database credentials using secrets manager
|
|
104
|
+
*/
|
|
105
|
+
export declare function getDatabaseCredentials(): Promise<DatabaseCredentials>;
|
|
106
|
+
/**
|
|
107
|
+
* Helper to get JWT secrets
|
|
108
|
+
*/
|
|
109
|
+
export declare function getJwtSecrets(): Promise<JwtSecrets>;
|
|
110
|
+
export interface DatabaseCredentials {
|
|
111
|
+
username: string;
|
|
112
|
+
password: string;
|
|
113
|
+
host: string;
|
|
114
|
+
port: number;
|
|
115
|
+
database: string;
|
|
116
|
+
}
|
|
117
|
+
export interface JwtSecrets {
|
|
118
|
+
secret: string;
|
|
119
|
+
refreshSecret: string;
|
|
120
|
+
}
|
|
121
|
+
export {};
|
|
122
|
+
//# sourceMappingURL=SecretsManager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SecretsManager.d.ts","sourceRoot":"","sources":["../../../src/config/SecretsManager.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH,MAAM,WAAW,YAAY;IAC3B,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IACzC,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;QAAE,aAAa,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACrF,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACnC,IAAI,CAAC,OAAO,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC;QAAE,IAAI,EAAE;YAAE,IAAI,EAAE,MAAM,CAAA;SAAE,EAAE,CAAA;KAAE,CAAC,CAAC;CAC5E;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,KAAK,GAAG,YAAY,GAAG,MAAM,GAAG,OAAO,CAAC;IAClD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,EAAE,CAAC,EAAE,YAAY,CAAC;CACnB;AAED,MAAM,WAAW,WAAW;IAC1B,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAID,UAAU,sBAAsB;IAC9B,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,gBAAgB,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IACpE,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACjF,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACzC,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACzC,WAAW,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IACjD,UAAU,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAChC;AA+QD;;;GAGG;AACH,eAAO,MAAM,cAAc;IACzB;;OAEG;yBACkB,YAAY,GAAG,sBAAsB;IAY1D;;OAEG;mBACkB,MAAM,YAAY,gBAAgB,GAAG,OAAO,CAAC,MAAM,CAAC;IAIzE;;OAEG;mBACkB,MAAM,SAAS,MAAM,YAAY,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC;IAItF;;OAEG;sBACqB,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAI9C;;OAEG;sBACqB,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAI9C;;OAEG;0BACyB,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAItD;;OAEG;qBACc,MAAM,GAAG,IAAI;EAG9B,CAAC;AAEH;;;GAGG;AACH,eAAO,MAAM,OAAO;;;;;;;;;;;;;;;;EA0BT,CAAC;AAEZ,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED,MAAM,WAAW,gBAAgB;IAC/B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAED;;GAEG;AACH,wBAAsB,sBAAsB,IAAI,OAAO,CAAC,mBAAmB,CAAC,CAU3E;AAED;;GAEG;AACH,wBAAsB,aAAa,IAAI,OAAO,CAAC,UAAU,CAAC,CAOzD;AAED,MAAM,WAAW,mBAAmB;IAClC,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,aAAa,EAAE,MAAM,CAAC;CACvB"}
|
|
@@ -0,0 +1,328 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Unified Secrets Management Layer
|
|
3
|
+
* Abstracts secrets retrieval across different cloud platforms
|
|
4
|
+
* Supports: AWS Secrets Manager, Parameter Store, Cloudflare KV, Deno env
|
|
5
|
+
*/
|
|
6
|
+
import { Logger } from './logger';
|
|
7
|
+
import { ErrorFactory } from '../exceptions/ZintrustError';
|
|
8
|
+
let instance;
|
|
9
|
+
/**
|
|
10
|
+
* Get secret value from appropriate backend
|
|
11
|
+
*/
|
|
12
|
+
async function runGetSecret(config, cache, key, options) {
|
|
13
|
+
// Check cache first
|
|
14
|
+
const cached = cache.get(key);
|
|
15
|
+
if (cached !== undefined && cached.expiresAt > Date.now()) {
|
|
16
|
+
return cached.value;
|
|
17
|
+
}
|
|
18
|
+
let value;
|
|
19
|
+
switch (config.platform) {
|
|
20
|
+
case 'aws':
|
|
21
|
+
value = await getFromAWSSecretsManager(key);
|
|
22
|
+
break;
|
|
23
|
+
case 'cloudflare':
|
|
24
|
+
value = await getFromCloudflareKV(config, key);
|
|
25
|
+
break;
|
|
26
|
+
case 'deno':
|
|
27
|
+
value = await getFromDenoEnv(key);
|
|
28
|
+
break;
|
|
29
|
+
case 'local':
|
|
30
|
+
default:
|
|
31
|
+
value = await getFromEnv(key);
|
|
32
|
+
}
|
|
33
|
+
// Cache the value
|
|
34
|
+
const ttl = options?.cacheTtl ?? 3600000; // 1 hour default
|
|
35
|
+
cache.set(key, {
|
|
36
|
+
value,
|
|
37
|
+
expiresAt: Date.now() + ttl,
|
|
38
|
+
});
|
|
39
|
+
return value;
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Set secret value
|
|
43
|
+
*/
|
|
44
|
+
async function runSetSecret(config, cache, key, value, options) {
|
|
45
|
+
switch (config.platform) {
|
|
46
|
+
case 'aws':
|
|
47
|
+
await setInAWSSecretsManager(key, value, options);
|
|
48
|
+
break;
|
|
49
|
+
case 'cloudflare':
|
|
50
|
+
await setInCloudflareKV(config, key, value, options);
|
|
51
|
+
break;
|
|
52
|
+
case 'deno':
|
|
53
|
+
throw ErrorFactory.createConfigError('Cannot set secrets in Deno environment');
|
|
54
|
+
case 'local':
|
|
55
|
+
default:
|
|
56
|
+
throw ErrorFactory.createConfigError('Cannot set secrets in local environment');
|
|
57
|
+
}
|
|
58
|
+
// Invalidate cache
|
|
59
|
+
cache.delete(key);
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Delete secret
|
|
63
|
+
*/
|
|
64
|
+
async function runDeleteSecret(config, cache, key) {
|
|
65
|
+
switch (config.platform) {
|
|
66
|
+
case 'aws':
|
|
67
|
+
await deleteFromAWSSecretsManager(key);
|
|
68
|
+
break;
|
|
69
|
+
case 'cloudflare':
|
|
70
|
+
await deleteFromCloudflareKV(config, key);
|
|
71
|
+
break;
|
|
72
|
+
case 'deno':
|
|
73
|
+
case 'local':
|
|
74
|
+
default:
|
|
75
|
+
throw ErrorFactory.createConfigError('Cannot delete secrets in this environment');
|
|
76
|
+
}
|
|
77
|
+
// Invalidate cache
|
|
78
|
+
cache.delete(key);
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* SecretsManager implementation
|
|
82
|
+
* Refactored to Functional Object pattern
|
|
83
|
+
*/
|
|
84
|
+
const SecretsManagerImpl = {
|
|
85
|
+
/**
|
|
86
|
+
* Create a new secrets manager instance
|
|
87
|
+
*/
|
|
88
|
+
create(config) {
|
|
89
|
+
const cache = new Map();
|
|
90
|
+
return {
|
|
91
|
+
/**
|
|
92
|
+
* Get secret value from appropriate backend
|
|
93
|
+
*/
|
|
94
|
+
async getSecret(key, options) {
|
|
95
|
+
return runGetSecret(config, cache, key, options);
|
|
96
|
+
},
|
|
97
|
+
/**
|
|
98
|
+
* Set secret value
|
|
99
|
+
*/
|
|
100
|
+
async setSecret(key, value, options) {
|
|
101
|
+
return runSetSecret(config, cache, key, value, options);
|
|
102
|
+
},
|
|
103
|
+
/**
|
|
104
|
+
* Delete secret
|
|
105
|
+
*/
|
|
106
|
+
async deleteSecret(key) {
|
|
107
|
+
return runDeleteSecret(config, cache, key);
|
|
108
|
+
},
|
|
109
|
+
/**
|
|
110
|
+
* Rotate secret (trigger new secret generation)
|
|
111
|
+
*/
|
|
112
|
+
async rotateSecret(_key) {
|
|
113
|
+
if (config.platform === 'aws') {
|
|
114
|
+
// AWS Secrets Manager supports automatic rotation
|
|
115
|
+
throw ErrorFactory.createConfigError('Secret rotation not implemented');
|
|
116
|
+
}
|
|
117
|
+
throw ErrorFactory.createConfigError('Secret rotation not supported on this platform');
|
|
118
|
+
},
|
|
119
|
+
/**
|
|
120
|
+
* Get all secrets matching pattern
|
|
121
|
+
*/
|
|
122
|
+
async listSecrets(pattern) {
|
|
123
|
+
switch (config.platform) {
|
|
124
|
+
case 'aws':
|
|
125
|
+
return listFromAWSSecretsManager(pattern);
|
|
126
|
+
case 'cloudflare':
|
|
127
|
+
return listFromCloudflareKV(config, pattern);
|
|
128
|
+
case 'deno':
|
|
129
|
+
case 'local':
|
|
130
|
+
default:
|
|
131
|
+
return [];
|
|
132
|
+
}
|
|
133
|
+
},
|
|
134
|
+
/**
|
|
135
|
+
* Clear cache (useful after rotation)
|
|
136
|
+
*/
|
|
137
|
+
clearCache(key) {
|
|
138
|
+
if (key === undefined) {
|
|
139
|
+
cache.clear();
|
|
140
|
+
}
|
|
141
|
+
else {
|
|
142
|
+
cache.delete(key);
|
|
143
|
+
}
|
|
144
|
+
},
|
|
145
|
+
};
|
|
146
|
+
},
|
|
147
|
+
};
|
|
148
|
+
/**
|
|
149
|
+
* AWS Secrets Manager integration
|
|
150
|
+
*/
|
|
151
|
+
async function getFromAWSSecretsManager(key) {
|
|
152
|
+
try {
|
|
153
|
+
Logger.debug(`[AWS] Getting secret: ${key}`);
|
|
154
|
+
throw ErrorFactory.createConfigError('AWS SDK not available in core - use wrapper module');
|
|
155
|
+
}
|
|
156
|
+
catch (error) {
|
|
157
|
+
throw ErrorFactory.createTryCatchError(`Failed to retrieve secret from AWS: ${error.message}`, error);
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
async function setInAWSSecretsManager(key, _value, _options) {
|
|
161
|
+
Logger.info(`[AWS] Setting secret: ${key}`);
|
|
162
|
+
throw ErrorFactory.createConfigError('AWS SDK not available in core - use wrapper module');
|
|
163
|
+
}
|
|
164
|
+
async function deleteFromAWSSecretsManager(key) {
|
|
165
|
+
Logger.info(`[AWS] Deleting secret: ${key}`);
|
|
166
|
+
throw ErrorFactory.createConfigError('AWS SDK not available in core - use wrapper module');
|
|
167
|
+
}
|
|
168
|
+
async function listFromAWSSecretsManager(pattern) {
|
|
169
|
+
Logger.info(`[AWS] Listing secrets with pattern: ${pattern ?? '*'}`);
|
|
170
|
+
return [];
|
|
171
|
+
}
|
|
172
|
+
/**
|
|
173
|
+
* Cloudflare KV integration
|
|
174
|
+
*/
|
|
175
|
+
async function getFromCloudflareKV(config, key) {
|
|
176
|
+
if (config.kv === undefined) {
|
|
177
|
+
throw ErrorFactory.createConfigError('Cloudflare KV namespace not configured');
|
|
178
|
+
}
|
|
179
|
+
const value = await config.kv.get(key);
|
|
180
|
+
if (value === null || value === '') {
|
|
181
|
+
throw ErrorFactory.createNotFoundError(`Secret not found: ${key}`, { key });
|
|
182
|
+
}
|
|
183
|
+
return value;
|
|
184
|
+
}
|
|
185
|
+
async function setInCloudflareKV(config, key, value, options) {
|
|
186
|
+
if (config.kv === undefined) {
|
|
187
|
+
throw ErrorFactory.createConfigError('Cloudflare KV namespace not configured');
|
|
188
|
+
}
|
|
189
|
+
const ttl = options?.expirationTtl;
|
|
190
|
+
await config.kv.put(key, value, { expirationTtl: ttl });
|
|
191
|
+
}
|
|
192
|
+
async function deleteFromCloudflareKV(config, key) {
|
|
193
|
+
if (config.kv === undefined) {
|
|
194
|
+
throw ErrorFactory.createConfigError('Cloudflare KV namespace not configured');
|
|
195
|
+
}
|
|
196
|
+
await config.kv.delete(key);
|
|
197
|
+
}
|
|
198
|
+
async function listFromCloudflareKV(config, pattern) {
|
|
199
|
+
if (config.kv === undefined) {
|
|
200
|
+
throw ErrorFactory.createConfigError('Cloudflare KV namespace not configured');
|
|
201
|
+
}
|
|
202
|
+
const result = await config.kv.list({ prefix: pattern });
|
|
203
|
+
return result.keys.map((k) => k.name);
|
|
204
|
+
}
|
|
205
|
+
/**
|
|
206
|
+
* Deno environment integration
|
|
207
|
+
*/
|
|
208
|
+
async function getFromDenoEnv(key) {
|
|
209
|
+
const value = globalThis['Deno']?.env?.get?.(key);
|
|
210
|
+
if (value === undefined || value === null || value === '') {
|
|
211
|
+
throw ErrorFactory.createNotFoundError(`Secret not found: ${key}`, { key });
|
|
212
|
+
}
|
|
213
|
+
return value;
|
|
214
|
+
}
|
|
215
|
+
/**
|
|
216
|
+
* Local environment variables (Node.js)
|
|
217
|
+
*/
|
|
218
|
+
async function getFromEnv(key) {
|
|
219
|
+
const value = process.env[key];
|
|
220
|
+
if (value === undefined || value === null || value === '') {
|
|
221
|
+
throw ErrorFactory.createNotFoundError(`Secret not found: ${key}`, { key });
|
|
222
|
+
}
|
|
223
|
+
return value;
|
|
224
|
+
}
|
|
225
|
+
/**
|
|
226
|
+
* SecretsManager - Unified interface for retrieving secrets
|
|
227
|
+
* Sealed namespace for immutability
|
|
228
|
+
*/
|
|
229
|
+
export const SecretsManager = Object.freeze({
|
|
230
|
+
/**
|
|
231
|
+
* Get or create singleton instance
|
|
232
|
+
*/
|
|
233
|
+
getInstance(config) {
|
|
234
|
+
if (instance === undefined && config !== undefined) {
|
|
235
|
+
instance = SecretsManagerImpl.create(config);
|
|
236
|
+
}
|
|
237
|
+
if (instance === undefined) {
|
|
238
|
+
throw ErrorFactory.createConfigError('SecretsManager not initialized. Call getInstance(config) first.');
|
|
239
|
+
}
|
|
240
|
+
return instance;
|
|
241
|
+
},
|
|
242
|
+
/**
|
|
243
|
+
* Get secret value from appropriate backend
|
|
244
|
+
*/
|
|
245
|
+
async getSecret(key, options) {
|
|
246
|
+
return this.getInstance().getSecret(key, options);
|
|
247
|
+
},
|
|
248
|
+
/**
|
|
249
|
+
* Set secret value
|
|
250
|
+
*/
|
|
251
|
+
async setSecret(key, value, options) {
|
|
252
|
+
return this.getInstance().setSecret(key, value, options);
|
|
253
|
+
},
|
|
254
|
+
/**
|
|
255
|
+
* Delete secret
|
|
256
|
+
*/
|
|
257
|
+
async deleteSecret(key) {
|
|
258
|
+
return this.getInstance().deleteSecret(key);
|
|
259
|
+
},
|
|
260
|
+
/**
|
|
261
|
+
* Rotate secret (trigger new secret generation)
|
|
262
|
+
*/
|
|
263
|
+
async rotateSecret(key) {
|
|
264
|
+
return this.getInstance().rotateSecret(key);
|
|
265
|
+
},
|
|
266
|
+
/**
|
|
267
|
+
* Get all secrets matching pattern
|
|
268
|
+
*/
|
|
269
|
+
async listSecrets(pattern) {
|
|
270
|
+
return this.getInstance().listSecrets(pattern);
|
|
271
|
+
},
|
|
272
|
+
/**
|
|
273
|
+
* Clear cache (useful after rotation)
|
|
274
|
+
*/
|
|
275
|
+
clearCache(key) {
|
|
276
|
+
this.getInstance().clearCache(key);
|
|
277
|
+
},
|
|
278
|
+
});
|
|
279
|
+
/**
|
|
280
|
+
* Predefined secret keys
|
|
281
|
+
* Sealed namespace for immutability
|
|
282
|
+
*/
|
|
283
|
+
export const SECRETS = Object.freeze({
|
|
284
|
+
// Database credentials
|
|
285
|
+
DB_USERNAME: 'db/username',
|
|
286
|
+
// Secret identifier only (not a credential value)
|
|
287
|
+
DB_PASSWORD: 'db/password', // NOSONAR (typescript:S2068) - secret key name, not hardcoded password
|
|
288
|
+
DB_HOST: 'db/host',
|
|
289
|
+
DB_PORT: 'db/port',
|
|
290
|
+
DB_DATABASE: 'db/database',
|
|
291
|
+
// API keys
|
|
292
|
+
JWT_SECRET: 'jwt/secret',
|
|
293
|
+
JWT_REFRESH_SECRET: 'jwt/refresh-secret',
|
|
294
|
+
// Encryption
|
|
295
|
+
ENCRYPTION_KEY: 'encryption/key',
|
|
296
|
+
ENCRYPTION_IV: 'encryption/iv',
|
|
297
|
+
// Third-party APIs
|
|
298
|
+
STRIPE_API_KEY: 'stripe/api-key',
|
|
299
|
+
STRIPE_WEBHOOK_SECRET: 'stripe/webhook-secret',
|
|
300
|
+
SENDGRID_API_KEY: 'sendgrid/api-key',
|
|
301
|
+
GITHUB_TOKEN: 'github/token',
|
|
302
|
+
// Session/CSRF
|
|
303
|
+
SESSION_SECRET: 'session/secret',
|
|
304
|
+
CSRF_SECRET: 'csrf/secret',
|
|
305
|
+
});
|
|
306
|
+
/**
|
|
307
|
+
* Helper to get database credentials using secrets manager
|
|
308
|
+
*/
|
|
309
|
+
export async function getDatabaseCredentials() {
|
|
310
|
+
const manager = SecretsManager.getInstance();
|
|
311
|
+
return {
|
|
312
|
+
username: await manager.getSecret(SECRETS.DB_USERNAME),
|
|
313
|
+
password: await manager.getSecret(SECRETS.DB_PASSWORD),
|
|
314
|
+
host: await manager.getSecret(SECRETS.DB_HOST),
|
|
315
|
+
port: Number.parseInt(await manager.getSecret(SECRETS.DB_PORT), 10),
|
|
316
|
+
database: await manager.getSecret(SECRETS.DB_DATABASE),
|
|
317
|
+
};
|
|
318
|
+
}
|
|
319
|
+
/**
|
|
320
|
+
* Helper to get JWT secrets
|
|
321
|
+
*/
|
|
322
|
+
export async function getJwtSecrets() {
|
|
323
|
+
const manager = SecretsManager.getInstance();
|
|
324
|
+
return {
|
|
325
|
+
secret: await manager.getSecret(SECRETS.JWT_SECRET),
|
|
326
|
+
refreshSecret: await manager.getSecret(SECRETS.JWT_REFRESH_SECRET),
|
|
327
|
+
};
|
|
328
|
+
}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Application Configuration
|
|
3
|
+
* Core application settings
|
|
4
|
+
* Sealed namespace for immutability
|
|
5
|
+
*/
|
|
6
|
+
declare const getSafeEnv: () => NodeJS.ProcessEnv;
|
|
7
|
+
export declare const appConfig: Readonly<{
|
|
8
|
+
/**
|
|
9
|
+
* Application name
|
|
10
|
+
*/
|
|
11
|
+
readonly name: string;
|
|
12
|
+
/**
|
|
13
|
+
* Application environment
|
|
14
|
+
*/
|
|
15
|
+
readonly environment: "development" | "production" | "testing";
|
|
16
|
+
/**
|
|
17
|
+
* Application port
|
|
18
|
+
*/
|
|
19
|
+
readonly port: number;
|
|
20
|
+
/**
|
|
21
|
+
* Application host
|
|
22
|
+
*/
|
|
23
|
+
readonly host: string;
|
|
24
|
+
/**
|
|
25
|
+
* Is development environment
|
|
26
|
+
*/
|
|
27
|
+
readonly isDevelopment: () => boolean;
|
|
28
|
+
/**
|
|
29
|
+
* Is production environment
|
|
30
|
+
*/
|
|
31
|
+
readonly isProduction: () => boolean;
|
|
32
|
+
/**
|
|
33
|
+
* Is testing environment
|
|
34
|
+
*/
|
|
35
|
+
readonly isTesting: () => boolean;
|
|
36
|
+
/**
|
|
37
|
+
* Application debug mode
|
|
38
|
+
*/
|
|
39
|
+
readonly debug: boolean;
|
|
40
|
+
/**
|
|
41
|
+
* Application timezone
|
|
42
|
+
*/
|
|
43
|
+
readonly timezone: string;
|
|
44
|
+
/**
|
|
45
|
+
* Request timeout (milliseconds)
|
|
46
|
+
*/
|
|
47
|
+
readonly requestTimeout: number;
|
|
48
|
+
/**
|
|
49
|
+
* Max request body size
|
|
50
|
+
*/
|
|
51
|
+
readonly maxBodySize: string;
|
|
52
|
+
readonly getSafeEnv: () => NodeJS.ProcessEnv;
|
|
53
|
+
}>;
|
|
54
|
+
export { getSafeEnv };
|
|
55
|
+
export type AppConfig = typeof appConfig;
|
|
56
|
+
//# sourceMappingURL=app.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"app.d.ts","sourceRoot":"","sources":["../../../src/config/app.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,QAAA,MAAM,UAAU,QAAO,MAAM,CAAC,UAkB7B,CAAC;AAmEF,eAAO,MAAM,SAAS;IAhEpB;;OAEG;;IAGH;;OAEG;0BAC0B,aAAa,GAAG,YAAY,GAAG,SAAS;IAErE;;OAEG;;IAGH;;OAEG;;IAGH;;OAEG;kCACc,OAAO;IAIxB;;OAEG;iCACa,OAAO;IAIvB;;OAEG;8BACU,OAAO;IAIpB;;OAEG;;IAGH;;OAEG;;IAGH;;OAEG;;IAGH;;OAEG;;+BA/EkB,MAAM,CAAC,UAAU;EAqFY,CAAC;AACrD,OAAO,EAAE,UAAU,EAAE,CAAC;AAEtB,MAAM,MAAM,SAAS,GAAG,OAAO,SAAS,CAAC"}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Application Configuration
|
|
3
|
+
* Core application settings
|
|
4
|
+
* Sealed namespace for immutability
|
|
5
|
+
*/
|
|
6
|
+
import { Env } from './env';
|
|
7
|
+
const getSafeEnv = () => {
|
|
8
|
+
const baseEnv = typeof process === 'undefined' ? {} : process.env;
|
|
9
|
+
return {
|
|
10
|
+
...baseEnv,
|
|
11
|
+
// Ensure required keys exist (env.d.ts augments ProcessEnv with required fields)
|
|
12
|
+
NODE_ENV: baseEnv.NODE_ENV ?? Env.NODE_ENV,
|
|
13
|
+
USE_RAW_QRY: baseEnv.USE_RAW_QRY ?? (Env.get('USE_RAW_QRY') || undefined),
|
|
14
|
+
SERVICE_API_KEY: baseEnv.SERVICE_API_KEY ?? Env.get('SERVICE_API_KEY', ''),
|
|
15
|
+
SERVICE_JWT_SECRET: baseEnv.SERVICE_JWT_SECRET ?? Env.get('SERVICE_JWT_SECRET', ''),
|
|
16
|
+
BASE_URL: baseEnv.BASE_URL ?? Env.get('BASE_URL', ''),
|
|
17
|
+
MODE: baseEnv.MODE ?? Env.get('MODE', ''),
|
|
18
|
+
// Hardening for child-process usage
|
|
19
|
+
PATH: Env.SAFE_PATH,
|
|
20
|
+
npm_config_scripts_prepend_node_path: 'true',
|
|
21
|
+
};
|
|
22
|
+
};
|
|
23
|
+
const appConfigObj = {
|
|
24
|
+
/**
|
|
25
|
+
* Application name
|
|
26
|
+
*/
|
|
27
|
+
name: Env.APP_NAME,
|
|
28
|
+
/**
|
|
29
|
+
* Application environment
|
|
30
|
+
*/
|
|
31
|
+
environment: Env.NODE_ENV,
|
|
32
|
+
/**
|
|
33
|
+
* Application port
|
|
34
|
+
*/
|
|
35
|
+
port: Env.PORT,
|
|
36
|
+
/**
|
|
37
|
+
* Application host
|
|
38
|
+
*/
|
|
39
|
+
host: Env.HOST,
|
|
40
|
+
/**
|
|
41
|
+
* Is development environment
|
|
42
|
+
*/
|
|
43
|
+
isDevelopment() {
|
|
44
|
+
return this.environment === 'development';
|
|
45
|
+
},
|
|
46
|
+
/**
|
|
47
|
+
* Is production environment
|
|
48
|
+
*/
|
|
49
|
+
isProduction() {
|
|
50
|
+
return this.environment === 'production';
|
|
51
|
+
},
|
|
52
|
+
/**
|
|
53
|
+
* Is testing environment
|
|
54
|
+
*/
|
|
55
|
+
isTesting() {
|
|
56
|
+
return this.environment === 'testing';
|
|
57
|
+
},
|
|
58
|
+
/**
|
|
59
|
+
* Application debug mode
|
|
60
|
+
*/
|
|
61
|
+
debug: Env.DEBUG,
|
|
62
|
+
/**
|
|
63
|
+
* Application timezone
|
|
64
|
+
*/
|
|
65
|
+
timezone: Env.get('APP_TIMEZONE', 'UTC'),
|
|
66
|
+
/**
|
|
67
|
+
* Request timeout (milliseconds)
|
|
68
|
+
*/
|
|
69
|
+
requestTimeout: Env.getInt('REQUEST_TIMEOUT', 30000),
|
|
70
|
+
/**
|
|
71
|
+
* Max request body size
|
|
72
|
+
*/
|
|
73
|
+
maxBodySize: Env.get('MAX_BODY_SIZE', '10mb'),
|
|
74
|
+
getSafeEnv,
|
|
75
|
+
};
|
|
76
|
+
export const appConfig = Object.freeze(appConfigObj);
|
|
77
|
+
export { getSafeEnv };
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Cache Configuration
|
|
3
|
+
* Caching drivers and settings
|
|
4
|
+
* Sealed namespace for immutability
|
|
5
|
+
*/
|
|
6
|
+
type MemoryCacheDriverConfig = {
|
|
7
|
+
driver: 'memory';
|
|
8
|
+
ttl: number;
|
|
9
|
+
};
|
|
10
|
+
type RedisCacheDriverConfig = {
|
|
11
|
+
driver: 'redis';
|
|
12
|
+
host: string;
|
|
13
|
+
port: number;
|
|
14
|
+
password: string | undefined;
|
|
15
|
+
database: number;
|
|
16
|
+
ttl: number;
|
|
17
|
+
};
|
|
18
|
+
type MemcachedCacheDriverConfig = {
|
|
19
|
+
driver: 'memcached';
|
|
20
|
+
servers: string[];
|
|
21
|
+
ttl: number;
|
|
22
|
+
};
|
|
23
|
+
type FileCacheDriverConfig = {
|
|
24
|
+
driver: 'file';
|
|
25
|
+
path: string;
|
|
26
|
+
ttl: number;
|
|
27
|
+
};
|
|
28
|
+
type CacheDriverConfig = MemoryCacheDriverConfig | RedisCacheDriverConfig | MemcachedCacheDriverConfig | FileCacheDriverConfig;
|
|
29
|
+
export declare const cacheConfig: Readonly<{
|
|
30
|
+
/**
|
|
31
|
+
* Default cache driver
|
|
32
|
+
*/
|
|
33
|
+
default: string;
|
|
34
|
+
/**
|
|
35
|
+
* Cache drivers
|
|
36
|
+
*/
|
|
37
|
+
drivers: {
|
|
38
|
+
memory: {
|
|
39
|
+
driver: "memory";
|
|
40
|
+
ttl: number;
|
|
41
|
+
};
|
|
42
|
+
redis: {
|
|
43
|
+
driver: "redis";
|
|
44
|
+
host: string;
|
|
45
|
+
port: number;
|
|
46
|
+
password: string;
|
|
47
|
+
database: number;
|
|
48
|
+
ttl: number;
|
|
49
|
+
};
|
|
50
|
+
memcached: {
|
|
51
|
+
driver: "memcached";
|
|
52
|
+
servers: string[];
|
|
53
|
+
ttl: number;
|
|
54
|
+
};
|
|
55
|
+
file: {
|
|
56
|
+
driver: "file";
|
|
57
|
+
path: string;
|
|
58
|
+
ttl: number;
|
|
59
|
+
};
|
|
60
|
+
};
|
|
61
|
+
/**
|
|
62
|
+
* Get cache driver config
|
|
63
|
+
*/
|
|
64
|
+
getDriver(): CacheDriverConfig;
|
|
65
|
+
/**
|
|
66
|
+
* Key prefix for all cache keys
|
|
67
|
+
*/
|
|
68
|
+
keyPrefix: string;
|
|
69
|
+
/**
|
|
70
|
+
* Default cache TTL (seconds)
|
|
71
|
+
*/
|
|
72
|
+
ttl: number;
|
|
73
|
+
}>;
|
|
74
|
+
export type CacheConfig = typeof cacheConfig;
|
|
75
|
+
export {};
|
|
76
|
+
//# sourceMappingURL=cache.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cache.d.ts","sourceRoot":"","sources":["../../../src/config/cache.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,KAAK,uBAAuB,GAAG;IAC7B,MAAM,EAAE,QAAQ,CAAC;IACjB,GAAG,EAAE,MAAM,CAAC;CACb,CAAC;AAEF,KAAK,sBAAsB,GAAG;IAC5B,MAAM,EAAE,OAAO,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7B,QAAQ,EAAE,MAAM,CAAC;IACjB,GAAG,EAAE,MAAM,CAAC;CACb,CAAC;AAEF,KAAK,0BAA0B,GAAG;IAChC,MAAM,EAAE,WAAW,CAAC;IACpB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,GAAG,EAAE,MAAM,CAAC;CACb,CAAC;AAEF,KAAK,qBAAqB,GAAG;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;CACb,CAAC;AAEF,KAAK,iBAAiB,GAClB,uBAAuB,GACvB,sBAAsB,GACtB,0BAA0B,GAC1B,qBAAqB,CAAC;AA6E1B,eAAO,MAAM,WAAW;IAnDtB;;OAEG;;IAGH;;OAEG;;;;;;;;;;;;;;;;;;;;;;;;;IA0BH;;OAEG;iBACU,iBAAiB;IAI9B;;OAEG;;IAGH;;OAEG;;EAImD,CAAC;AACzD,MAAM,MAAM,WAAW,GAAG,OAAO,WAAW,CAAC"}
|