@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,77 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Logger utility - Central logging configuration
|
|
3
|
+
* Sealed namespace pattern - all exports through Logger namespace
|
|
4
|
+
* Replaces console.* calls throughout the codebase
|
|
5
|
+
*/
|
|
6
|
+
import { Env } from './env';
|
|
7
|
+
const isDevelopment = Env.NODE_ENV === 'development' || Env.NODE_ENV === undefined;
|
|
8
|
+
const isProduction = Env.NODE_ENV === 'production';
|
|
9
|
+
/**
|
|
10
|
+
* Helper to extract error message from unknown error type
|
|
11
|
+
*/
|
|
12
|
+
const getErrorMessage = (error) => {
|
|
13
|
+
if (error === undefined) {
|
|
14
|
+
return '';
|
|
15
|
+
}
|
|
16
|
+
if (error instanceof Error) {
|
|
17
|
+
return error.message;
|
|
18
|
+
}
|
|
19
|
+
return String(error);
|
|
20
|
+
};
|
|
21
|
+
// Private helper functions
|
|
22
|
+
const logDebug = (message, data, category) => {
|
|
23
|
+
String(category);
|
|
24
|
+
if (isDevelopment) {
|
|
25
|
+
console.debug(`[DEBUG] ${message}`, data ?? ''); // eslint-disable-line no-console
|
|
26
|
+
}
|
|
27
|
+
};
|
|
28
|
+
const logInfo = (message, data, category) => {
|
|
29
|
+
String(category);
|
|
30
|
+
console.log(`[INFO] ${message}`, data ?? ''); // eslint-disable-line no-console
|
|
31
|
+
};
|
|
32
|
+
const logWarn = (message, data, category) => {
|
|
33
|
+
String(category);
|
|
34
|
+
console.warn(`[WARN] ${message}`, data ?? ''); // eslint-disable-line no-console
|
|
35
|
+
};
|
|
36
|
+
const logError = (message, error, category) => {
|
|
37
|
+
const errorMessage = getErrorMessage(error);
|
|
38
|
+
String(category);
|
|
39
|
+
console.error(`[ERROR] ${message}`, errorMessage); // eslint-disable-line no-console
|
|
40
|
+
};
|
|
41
|
+
const logFatal = (message, error, category) => {
|
|
42
|
+
const errorMessage = getErrorMessage(error);
|
|
43
|
+
String(category);
|
|
44
|
+
console.error(`[FATAL] ${message}`, errorMessage); // eslint-disable-line no-console
|
|
45
|
+
if (isProduction && typeof process !== 'undefined') {
|
|
46
|
+
process.exit(1);
|
|
47
|
+
}
|
|
48
|
+
};
|
|
49
|
+
const createLoggerScope = (scope) => {
|
|
50
|
+
return {
|
|
51
|
+
debug(message, data) {
|
|
52
|
+
logDebug(`[${scope}] ${message}`, data, scope);
|
|
53
|
+
},
|
|
54
|
+
info(message, data) {
|
|
55
|
+
logInfo(`[${scope}] ${message}`, data, scope);
|
|
56
|
+
},
|
|
57
|
+
warn(message, data) {
|
|
58
|
+
logWarn(`[${scope}] ${message}`, data, scope);
|
|
59
|
+
},
|
|
60
|
+
error(message, error) {
|
|
61
|
+
logError(`[${scope}] ${message}`, error, scope);
|
|
62
|
+
},
|
|
63
|
+
fatal(message, error) {
|
|
64
|
+
logFatal(`[${scope}] ${message}`, error, scope);
|
|
65
|
+
},
|
|
66
|
+
};
|
|
67
|
+
};
|
|
68
|
+
// Sealed namespace with all logger functionality
|
|
69
|
+
export const Logger = Object.freeze({
|
|
70
|
+
debug: logDebug,
|
|
71
|
+
info: logInfo,
|
|
72
|
+
warn: logWarn,
|
|
73
|
+
error: logError,
|
|
74
|
+
fatal: logFatal,
|
|
75
|
+
scope: createLoggerScope,
|
|
76
|
+
});
|
|
77
|
+
export default Logger;
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Microservices Configuration
|
|
3
|
+
* Microservices architecture and service discovery settings
|
|
4
|
+
* Sealed namespace for immutability
|
|
5
|
+
*/
|
|
6
|
+
export declare const microservicesConfig: Readonly<{
|
|
7
|
+
/**
|
|
8
|
+
* Enable microservices mode
|
|
9
|
+
*/
|
|
10
|
+
readonly enabled: boolean;
|
|
11
|
+
/**
|
|
12
|
+
* Enabled services (comma-separated)
|
|
13
|
+
*/
|
|
14
|
+
readonly services: string[];
|
|
15
|
+
/**
|
|
16
|
+
* Service discovery
|
|
17
|
+
*/
|
|
18
|
+
readonly discovery: {
|
|
19
|
+
readonly type: "filesystem" | "consul" | "etcd";
|
|
20
|
+
readonly servicesPath: string;
|
|
21
|
+
readonly refreshInterval: number;
|
|
22
|
+
};
|
|
23
|
+
/**
|
|
24
|
+
* Service Registry
|
|
25
|
+
*/
|
|
26
|
+
readonly registry: {
|
|
27
|
+
readonly host: string;
|
|
28
|
+
readonly port: number;
|
|
29
|
+
readonly deregisterCriticalServiceAfter: string;
|
|
30
|
+
};
|
|
31
|
+
/**
|
|
32
|
+
* Service Authentication
|
|
33
|
+
*/
|
|
34
|
+
readonly auth: {
|
|
35
|
+
readonly strategy: "api-key" | "jwt" | "none" | "custom";
|
|
36
|
+
readonly apiKey: string;
|
|
37
|
+
readonly jwtSecret: string;
|
|
38
|
+
};
|
|
39
|
+
/**
|
|
40
|
+
* Request Tracing
|
|
41
|
+
*/
|
|
42
|
+
readonly tracing: {
|
|
43
|
+
readonly enabled: boolean;
|
|
44
|
+
readonly samplingRate: number;
|
|
45
|
+
readonly exportInterval: number;
|
|
46
|
+
readonly jaegerEndpoint: string;
|
|
47
|
+
};
|
|
48
|
+
/**
|
|
49
|
+
* Database Isolation
|
|
50
|
+
*/
|
|
51
|
+
readonly database: {
|
|
52
|
+
readonly isolation: "shared" | "isolated";
|
|
53
|
+
readonly schema: string;
|
|
54
|
+
};
|
|
55
|
+
/**
|
|
56
|
+
* Service Health Check
|
|
57
|
+
*/
|
|
58
|
+
readonly healthCheck: {
|
|
59
|
+
readonly enabled: boolean;
|
|
60
|
+
readonly interval: number;
|
|
61
|
+
readonly timeout: number;
|
|
62
|
+
readonly unhealthyThreshold: number;
|
|
63
|
+
readonly healthyThreshold: number;
|
|
64
|
+
};
|
|
65
|
+
/**
|
|
66
|
+
* Service Communication
|
|
67
|
+
*/
|
|
68
|
+
readonly communication: {
|
|
69
|
+
readonly timeout: number;
|
|
70
|
+
readonly retries: number;
|
|
71
|
+
readonly retryDelay: number;
|
|
72
|
+
readonly circuitBreaker: {
|
|
73
|
+
readonly enabled: boolean;
|
|
74
|
+
readonly threshold: number;
|
|
75
|
+
readonly timeout: number;
|
|
76
|
+
};
|
|
77
|
+
};
|
|
78
|
+
/**
|
|
79
|
+
* Service Mesh (Istio/Linkerd support)
|
|
80
|
+
*/
|
|
81
|
+
readonly mesh: {
|
|
82
|
+
readonly enabled: boolean;
|
|
83
|
+
readonly type: "istio" | "linkerd";
|
|
84
|
+
readonly namespace: string;
|
|
85
|
+
};
|
|
86
|
+
}>;
|
|
87
|
+
export type MicroservicesConfig = typeof microservicesConfig;
|
|
88
|
+
//# sourceMappingURL=microservices.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"microservices.d.ts","sourceRoot":"","sources":["../../../src/config/microservices.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAiGH,eAAO,MAAM,mBAAmB;IA5F9B;;OAEG;;IAGH;;OAEG;;IAKH;;OAEG;;uBAEwD,YAAY,GAAG,QAAQ,GAAG,MAAM;;;;IAK3F;;OAEG;;;;;;IAOH;;OAEG;;2BAEqD,SAAS,GAAG,KAAK,GAAG,MAAM,GAAG,QAAQ;;;;IAK7F;;OAEG;;;;;;;IAQH;;OAEG;;4BAEqD,QAAQ,GAAG,UAAU;;;IAI7E;;OAEG;;;;;;;;IASH;;OAEG;;;;;;;;;;;IAYH;;OAEG;;;uBAG8C,OAAO,GAAG,SAAS;;;EAKE,CAAC;AAEzE,MAAM,MAAM,mBAAmB,GAAG,OAAO,mBAAmB,CAAC"}
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Microservices Configuration
|
|
3
|
+
* Microservices architecture and service discovery settings
|
|
4
|
+
* Sealed namespace for immutability
|
|
5
|
+
*/
|
|
6
|
+
import { Env } from './env';
|
|
7
|
+
const microservicesConfigObj = {
|
|
8
|
+
/**
|
|
9
|
+
* Enable microservices mode
|
|
10
|
+
*/
|
|
11
|
+
enabled: Env.getBool('MICROSERVICES', false),
|
|
12
|
+
/**
|
|
13
|
+
* Enabled services (comma-separated)
|
|
14
|
+
*/
|
|
15
|
+
services: Env.get('SERVICES', '')
|
|
16
|
+
.split(',')
|
|
17
|
+
.filter((s) => s.trim()),
|
|
18
|
+
/**
|
|
19
|
+
* Service discovery
|
|
20
|
+
*/
|
|
21
|
+
discovery: {
|
|
22
|
+
type: Env.get('SERVICE_DISCOVERY_TYPE', 'filesystem'),
|
|
23
|
+
servicesPath: Env.get('SERVICES_PATH', 'services'),
|
|
24
|
+
refreshInterval: Env.getInt('SERVICE_DISCOVERY_REFRESH_INTERVAL', 30000),
|
|
25
|
+
},
|
|
26
|
+
/**
|
|
27
|
+
* Service Registry
|
|
28
|
+
*/
|
|
29
|
+
registry: {
|
|
30
|
+
host: Env.get('SERVICE_REGISTRY_HOST', 'localhost'),
|
|
31
|
+
port: Env.getInt('SERVICE_REGISTRY_PORT', 8500),
|
|
32
|
+
deregisterCriticalServiceAfter: Env.get('SERVICE_DEREGISTER_CRITICAL_AFTER', '30s'),
|
|
33
|
+
},
|
|
34
|
+
/**
|
|
35
|
+
* Service Authentication
|
|
36
|
+
*/
|
|
37
|
+
auth: {
|
|
38
|
+
strategy: Env.get('SERVICE_AUTH_STRATEGY', 'none'),
|
|
39
|
+
apiKey: Env.get('SERVICE_API_KEY'),
|
|
40
|
+
jwtSecret: Env.get('SERVICE_JWT_SECRET'),
|
|
41
|
+
},
|
|
42
|
+
/**
|
|
43
|
+
* Request Tracing
|
|
44
|
+
*/
|
|
45
|
+
tracing: {
|
|
46
|
+
enabled: Env.getBool('MICROSERVICES_TRACING', false),
|
|
47
|
+
samplingRate: Env.getInt('MICROSERVICES_TRACING_RATE', 100) / 100,
|
|
48
|
+
exportInterval: Env.getInt('TRACING_EXPORT_INTERVAL', 10000),
|
|
49
|
+
jaegerEndpoint: Env.get('JAEGER_AGENT_HOST', 'localhost'),
|
|
50
|
+
},
|
|
51
|
+
/**
|
|
52
|
+
* Database Isolation
|
|
53
|
+
*/
|
|
54
|
+
database: {
|
|
55
|
+
isolation: Env.get('DATABASE_ISOLATION', 'shared'),
|
|
56
|
+
schema: Env.get('DATABASE_SCHEMA_PREFIX', 'microservice'),
|
|
57
|
+
},
|
|
58
|
+
/**
|
|
59
|
+
* Service Health Check
|
|
60
|
+
*/
|
|
61
|
+
healthCheck: {
|
|
62
|
+
enabled: Env.getBool('SERVICE_HEALTH_CHECK_ENABLED', true),
|
|
63
|
+
interval: Env.getInt('SERVICE_HEALTH_CHECK_INTERVAL', 30000),
|
|
64
|
+
timeout: Env.getInt('SERVICE_HEALTH_CHECK_TIMEOUT', 5000),
|
|
65
|
+
unhealthyThreshold: Env.getInt('SERVICE_UNHEALTHY_THRESHOLD', 3),
|
|
66
|
+
healthyThreshold: Env.getInt('SERVICE_HEALTHY_THRESHOLD', 2),
|
|
67
|
+
},
|
|
68
|
+
/**
|
|
69
|
+
* Service Communication
|
|
70
|
+
*/
|
|
71
|
+
communication: {
|
|
72
|
+
timeout: Env.getInt('SERVICE_CALL_TIMEOUT', 30000),
|
|
73
|
+
retries: Env.getInt('SERVICE_CALL_RETRIES', 3),
|
|
74
|
+
retryDelay: Env.getInt('SERVICE_CALL_RETRY_DELAY', 1000),
|
|
75
|
+
circuitBreaker: {
|
|
76
|
+
enabled: Env.getBool('CIRCUIT_BREAKER_ENABLED', true),
|
|
77
|
+
threshold: Env.getInt('CIRCUIT_BREAKER_THRESHOLD', 5),
|
|
78
|
+
timeout: Env.getInt('CIRCUIT_BREAKER_TIMEOUT', 60000),
|
|
79
|
+
},
|
|
80
|
+
},
|
|
81
|
+
/**
|
|
82
|
+
* Service Mesh (Istio/Linkerd support)
|
|
83
|
+
*/
|
|
84
|
+
mesh: {
|
|
85
|
+
enabled: Env.getBool('SERVICE_MESH_ENABLED', false),
|
|
86
|
+
type: Env.get('SERVICE_MESH_TYPE', 'istio'),
|
|
87
|
+
namespace: Env.get('SERVICE_MESH_NAMESPACE', 'default'),
|
|
88
|
+
},
|
|
89
|
+
};
|
|
90
|
+
export const microservicesConfig = Object.freeze(microservicesConfigObj);
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Queue Configuration
|
|
3
|
+
* Background job and message queue settings
|
|
4
|
+
* Sealed namespace for immutability
|
|
5
|
+
*/
|
|
6
|
+
type QueueDriverName = 'sync' | 'database' | 'redis' | 'rabbitmq' | 'sqs';
|
|
7
|
+
type SyncQueueDriverConfig = {
|
|
8
|
+
driver: 'sync';
|
|
9
|
+
};
|
|
10
|
+
type DatabaseQueueDriverConfig = {
|
|
11
|
+
driver: 'database';
|
|
12
|
+
table: string;
|
|
13
|
+
connection: string;
|
|
14
|
+
};
|
|
15
|
+
type RedisQueueDriverConfig = {
|
|
16
|
+
driver: 'redis';
|
|
17
|
+
host: string;
|
|
18
|
+
port: number;
|
|
19
|
+
password?: string;
|
|
20
|
+
database: number;
|
|
21
|
+
};
|
|
22
|
+
type RabbitMqQueueDriverConfig = {
|
|
23
|
+
driver: 'rabbitmq';
|
|
24
|
+
host: string;
|
|
25
|
+
port: number;
|
|
26
|
+
username: string;
|
|
27
|
+
password: string;
|
|
28
|
+
vhost: string;
|
|
29
|
+
};
|
|
30
|
+
type SqsQueueDriverConfig = {
|
|
31
|
+
driver: 'sqs';
|
|
32
|
+
key?: string;
|
|
33
|
+
secret?: string;
|
|
34
|
+
region: string;
|
|
35
|
+
queueUrl?: string;
|
|
36
|
+
};
|
|
37
|
+
type QueueDriversConfig = {
|
|
38
|
+
sync: SyncQueueDriverConfig;
|
|
39
|
+
database: DatabaseQueueDriverConfig;
|
|
40
|
+
redis: RedisQueueDriverConfig;
|
|
41
|
+
rabbitmq: RabbitMqQueueDriverConfig;
|
|
42
|
+
sqs: SqsQueueDriverConfig;
|
|
43
|
+
};
|
|
44
|
+
export declare const queueConfig: Readonly<{
|
|
45
|
+
/**
|
|
46
|
+
* Default queue driver
|
|
47
|
+
*/
|
|
48
|
+
default: QueueDriverName;
|
|
49
|
+
/**
|
|
50
|
+
* Queue drivers
|
|
51
|
+
*/
|
|
52
|
+
drivers: {
|
|
53
|
+
sync: {
|
|
54
|
+
driver: "sync";
|
|
55
|
+
};
|
|
56
|
+
database: {
|
|
57
|
+
driver: "database";
|
|
58
|
+
table: string;
|
|
59
|
+
connection: string;
|
|
60
|
+
};
|
|
61
|
+
redis: {
|
|
62
|
+
driver: "redis";
|
|
63
|
+
host: string;
|
|
64
|
+
port: number;
|
|
65
|
+
password: string;
|
|
66
|
+
database: number;
|
|
67
|
+
};
|
|
68
|
+
rabbitmq: {
|
|
69
|
+
driver: "rabbitmq";
|
|
70
|
+
host: string;
|
|
71
|
+
port: number;
|
|
72
|
+
username: string;
|
|
73
|
+
password: string;
|
|
74
|
+
vhost: string;
|
|
75
|
+
};
|
|
76
|
+
sqs: {
|
|
77
|
+
driver: "sqs";
|
|
78
|
+
key: string;
|
|
79
|
+
secret: string;
|
|
80
|
+
region: string;
|
|
81
|
+
queueUrl: string;
|
|
82
|
+
};
|
|
83
|
+
};
|
|
84
|
+
/**
|
|
85
|
+
* Get queue driver config
|
|
86
|
+
*/
|
|
87
|
+
getDriver(): QueueDriversConfig[QueueDriverName];
|
|
88
|
+
/**
|
|
89
|
+
* Failed jobs table
|
|
90
|
+
*/
|
|
91
|
+
failed: {
|
|
92
|
+
database: string;
|
|
93
|
+
table: string;
|
|
94
|
+
};
|
|
95
|
+
/**
|
|
96
|
+
* Job processing
|
|
97
|
+
*/
|
|
98
|
+
processing: {
|
|
99
|
+
timeout: number;
|
|
100
|
+
retries: number;
|
|
101
|
+
backoff: number;
|
|
102
|
+
workers: number;
|
|
103
|
+
};
|
|
104
|
+
}>;
|
|
105
|
+
export type QueueConfig = typeof queueConfig;
|
|
106
|
+
export {};
|
|
107
|
+
//# sourceMappingURL=queue.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"queue.d.ts","sourceRoot":"","sources":["../../../src/config/queue.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,KAAK,eAAe,GAAG,MAAM,GAAG,UAAU,GAAG,OAAO,GAAG,UAAU,GAAG,KAAK,CAAC;AAE1E,KAAK,qBAAqB,GAAG;IAC3B,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,KAAK,yBAAyB,GAAG;IAC/B,MAAM,EAAE,UAAU,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,KAAK,sBAAsB,GAAG;IAC5B,MAAM,EAAE,OAAO,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF,KAAK,yBAAyB,GAAG;IAC/B,MAAM,EAAE,UAAU,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,KAAK,oBAAoB,GAAG;IAC1B,MAAM,EAAE,KAAK,CAAC;IACd,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,KAAK,kBAAkB,GAAG;IACxB,IAAI,EAAE,qBAAqB,CAAC;IAC5B,QAAQ,EAAE,yBAAyB,CAAC;IACpC,KAAK,EAAE,sBAAsB,CAAC;IAC9B,QAAQ,EAAE,yBAAyB,CAAC;IACpC,GAAG,EAAE,oBAAoB,CAAC;CAC3B,CAAC;AAgFF,eAAO,MAAM,WAAW;IAnEtB;;OAEG;aACyC,eAAe;IAE3D;;OAEG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAkCH;;OAEG;iBACU,kBAAkB,CAAC,eAAe,CAAC;IAIhD;;OAEG;;;;;IAMH;;OAEG;;;;;;;EASmD,CAAC;AAEzD,MAAM,MAAM,WAAW,GAAG,OAAO,WAAW,CAAC"}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Queue Configuration
|
|
3
|
+
* Background job and message queue settings
|
|
4
|
+
* Sealed namespace for immutability
|
|
5
|
+
*/
|
|
6
|
+
import { Env } from './env';
|
|
7
|
+
const getQueueDriver = (config) => {
|
|
8
|
+
const driverName = config.default;
|
|
9
|
+
return config.drivers[driverName];
|
|
10
|
+
};
|
|
11
|
+
const queueConfigObj = {
|
|
12
|
+
/**
|
|
13
|
+
* Default queue driver
|
|
14
|
+
*/
|
|
15
|
+
default: Env.get('QUEUE_DRIVER', 'sync'),
|
|
16
|
+
/**
|
|
17
|
+
* Queue drivers
|
|
18
|
+
*/
|
|
19
|
+
drivers: {
|
|
20
|
+
sync: {
|
|
21
|
+
driver: 'sync',
|
|
22
|
+
},
|
|
23
|
+
database: {
|
|
24
|
+
driver: 'database',
|
|
25
|
+
table: Env.get('QUEUE_TABLE', 'jobs'),
|
|
26
|
+
connection: Env.get('QUEUE_DB_CONNECTION', 'default'),
|
|
27
|
+
},
|
|
28
|
+
redis: {
|
|
29
|
+
driver: 'redis',
|
|
30
|
+
host: Env.get('REDIS_HOST', 'localhost'),
|
|
31
|
+
port: Env.getInt('REDIS_PORT', 6379),
|
|
32
|
+
password: Env.get('REDIS_PASSWORD'),
|
|
33
|
+
database: Env.getInt('REDIS_QUEUE_DB', 1),
|
|
34
|
+
},
|
|
35
|
+
rabbitmq: {
|
|
36
|
+
driver: 'rabbitmq',
|
|
37
|
+
host: Env.get('RABBITMQ_HOST', 'localhost'),
|
|
38
|
+
port: Env.getInt('RABBITMQ_PORT', 5672),
|
|
39
|
+
username: Env.get('RABBITMQ_USER', 'guest'),
|
|
40
|
+
password: Env.get('RABBITMQ_PASSWORD', 'guest'),
|
|
41
|
+
vhost: Env.get('RABBITMQ_VHOST', '/'),
|
|
42
|
+
},
|
|
43
|
+
sqs: {
|
|
44
|
+
driver: 'sqs',
|
|
45
|
+
key: Env.get('AWS_ACCESS_KEY_ID'),
|
|
46
|
+
secret: Env.get('AWS_SECRET_ACCESS_KEY'),
|
|
47
|
+
region: Env.AWS_REGION,
|
|
48
|
+
queueUrl: Env.get('AWS_SQS_QUEUE_URL'),
|
|
49
|
+
},
|
|
50
|
+
},
|
|
51
|
+
/**
|
|
52
|
+
* Get queue driver config
|
|
53
|
+
*/
|
|
54
|
+
getDriver() {
|
|
55
|
+
return getQueueDriver(this);
|
|
56
|
+
},
|
|
57
|
+
/**
|
|
58
|
+
* Failed jobs table
|
|
59
|
+
*/
|
|
60
|
+
failed: {
|
|
61
|
+
database: Env.get('FAILED_JOBS_DB_CONNECTION', 'default'),
|
|
62
|
+
table: Env.get('FAILED_JOBS_TABLE', 'failed_jobs'),
|
|
63
|
+
},
|
|
64
|
+
/**
|
|
65
|
+
* Job processing
|
|
66
|
+
*/
|
|
67
|
+
processing: {
|
|
68
|
+
timeout: Env.getInt('QUEUE_JOB_TIMEOUT', 60),
|
|
69
|
+
retries: Env.getInt('QUEUE_JOB_RETRIES', 3),
|
|
70
|
+
backoff: Env.getInt('QUEUE_JOB_BACKOFF', 0),
|
|
71
|
+
workers: Env.getInt('QUEUE_WORKERS', 1),
|
|
72
|
+
},
|
|
73
|
+
};
|
|
74
|
+
export const queueConfig = Object.freeze(queueConfigObj);
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Security Configuration
|
|
3
|
+
* JWT, CSRF, encryption and other security settings
|
|
4
|
+
* Sealed namespace for immutability
|
|
5
|
+
*/
|
|
6
|
+
export declare const securityConfig: Readonly<{
|
|
7
|
+
/**
|
|
8
|
+
* JWT Configuration
|
|
9
|
+
*/
|
|
10
|
+
readonly jwt: {
|
|
11
|
+
readonly enabled: boolean;
|
|
12
|
+
readonly secret: string;
|
|
13
|
+
readonly algorithm: "HS256" | "HS512" | "RS256";
|
|
14
|
+
readonly expiresIn: string;
|
|
15
|
+
readonly refreshExpiresIn: string;
|
|
16
|
+
readonly issuer: string;
|
|
17
|
+
readonly audience: string;
|
|
18
|
+
};
|
|
19
|
+
/**
|
|
20
|
+
* CSRF Protection
|
|
21
|
+
*/
|
|
22
|
+
readonly csrf: {
|
|
23
|
+
readonly enabled: boolean;
|
|
24
|
+
readonly headerName: string;
|
|
25
|
+
readonly tokenName: string;
|
|
26
|
+
readonly cookieName: string;
|
|
27
|
+
readonly cookieHttpOnly: boolean;
|
|
28
|
+
readonly cookieSecure: boolean;
|
|
29
|
+
readonly cookieSameSite: "strict" | "lax" | "none";
|
|
30
|
+
};
|
|
31
|
+
/**
|
|
32
|
+
* Encryption
|
|
33
|
+
*/
|
|
34
|
+
readonly encryption: {
|
|
35
|
+
readonly algorithm: string;
|
|
36
|
+
readonly key: string;
|
|
37
|
+
};
|
|
38
|
+
/**
|
|
39
|
+
* API Key Authentication
|
|
40
|
+
*/
|
|
41
|
+
readonly apiKey: {
|
|
42
|
+
readonly enabled: boolean;
|
|
43
|
+
readonly headerName: string;
|
|
44
|
+
readonly secret: string;
|
|
45
|
+
};
|
|
46
|
+
/**
|
|
47
|
+
* CORS Configuration
|
|
48
|
+
*/
|
|
49
|
+
readonly cors: {
|
|
50
|
+
readonly enabled: boolean;
|
|
51
|
+
readonly origins: string[];
|
|
52
|
+
readonly methods: string[];
|
|
53
|
+
readonly allowedHeaders: string[];
|
|
54
|
+
readonly exposedHeaders: string[];
|
|
55
|
+
readonly credentials: boolean;
|
|
56
|
+
readonly maxAge: number;
|
|
57
|
+
};
|
|
58
|
+
/**
|
|
59
|
+
* Rate Limiting
|
|
60
|
+
*/
|
|
61
|
+
readonly rateLimit: {
|
|
62
|
+
readonly enabled: boolean;
|
|
63
|
+
readonly windowMs: number;
|
|
64
|
+
readonly maxRequests: number;
|
|
65
|
+
readonly message: string;
|
|
66
|
+
};
|
|
67
|
+
/**
|
|
68
|
+
* XSS Protection
|
|
69
|
+
*/
|
|
70
|
+
readonly xss: {
|
|
71
|
+
readonly enabled: boolean;
|
|
72
|
+
readonly reportUri: string;
|
|
73
|
+
};
|
|
74
|
+
/**
|
|
75
|
+
* Helmet Security Headers
|
|
76
|
+
*/
|
|
77
|
+
readonly helmet: {
|
|
78
|
+
readonly enabled: boolean;
|
|
79
|
+
readonly contentSecurityPolicy: boolean;
|
|
80
|
+
readonly hsts: {
|
|
81
|
+
readonly enabled: boolean;
|
|
82
|
+
readonly maxAge: number;
|
|
83
|
+
readonly includeSubDomains: boolean;
|
|
84
|
+
};
|
|
85
|
+
};
|
|
86
|
+
/**
|
|
87
|
+
* Session Configuration
|
|
88
|
+
*/
|
|
89
|
+
readonly session: {
|
|
90
|
+
readonly name: string;
|
|
91
|
+
readonly secret: string;
|
|
92
|
+
readonly expiresIn: number;
|
|
93
|
+
readonly secure: boolean;
|
|
94
|
+
readonly httpOnly: boolean;
|
|
95
|
+
readonly sameSite: "strict" | "lax" | "none";
|
|
96
|
+
};
|
|
97
|
+
/**
|
|
98
|
+
* Password settings
|
|
99
|
+
*/
|
|
100
|
+
readonly password: {
|
|
101
|
+
readonly minLength: number;
|
|
102
|
+
readonly requireUppercase: boolean;
|
|
103
|
+
readonly requireNumbers: boolean;
|
|
104
|
+
readonly requireSpecialChars: boolean;
|
|
105
|
+
readonly bcryptRounds: number;
|
|
106
|
+
};
|
|
107
|
+
}>;
|
|
108
|
+
//# sourceMappingURL=security.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"security.d.ts","sourceRoot":"","sources":["../../../src/config/security.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAgJH,eAAO,MAAM,cAAc;IAtHzB;;OAEG;;;yBAGa,MAAM;4BAQ4B,OAAO,GAAG,OAAO,GAAG,OAAO;;;;;;IAO7E;;OAEG;;;;;;;;iCAQ6D,QAAQ,GAAG,KAAK,GAAG,MAAM;;IAGzF;;OAEG;;;;;IAMH;;OAEG;;;;;;IAOH;;OAEG;;;;;;;;;;IAWH;;OAEG;;;;;;;IAQH;;OAEG;;;;;IAMH;;OAEG;;;;;;;;;;IAWH;;OAEG;;;;;;;2BAOmD,QAAQ,GAAG,KAAK,GAAG,MAAM;;IAG/E;;OAEG;;;;;;;;EAUyD,CAAC"}
|
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Security Configuration
|
|
3
|
+
* JWT, CSRF, encryption and other security settings
|
|
4
|
+
* Sealed namespace for immutability
|
|
5
|
+
*/
|
|
6
|
+
import { Env } from './env';
|
|
7
|
+
import { Logger } from './logger';
|
|
8
|
+
import { ErrorFactory } from '../exceptions/ZintrustError';
|
|
9
|
+
/**
|
|
10
|
+
* Helper to warn about missing secrets
|
|
11
|
+
*/
|
|
12
|
+
function warnMissingSecret(secretName) {
|
|
13
|
+
Logger.error(`❌ CRITICAL: ${secretName} environment variable is not set!`);
|
|
14
|
+
Logger.error('⚠️ Application may not function correctly. Set this in production immediately.');
|
|
15
|
+
const nodeEnv = Env.get('NODE_ENV', 'development');
|
|
16
|
+
if (nodeEnv === 'production') {
|
|
17
|
+
throw ErrorFactory.createConfigError(`Missing required secret: ${secretName}`, { secretName });
|
|
18
|
+
}
|
|
19
|
+
// In non-production environments, allow the app/CLI to start while still warning loudly.
|
|
20
|
+
// This is intentionally predictable for local development and test tooling.
|
|
21
|
+
return 'dev-unsafe-jwt-secret';
|
|
22
|
+
}
|
|
23
|
+
let cachedJwtSecret;
|
|
24
|
+
const securityConfigObj = {
|
|
25
|
+
/**
|
|
26
|
+
* JWT Configuration
|
|
27
|
+
*/
|
|
28
|
+
jwt: {
|
|
29
|
+
enabled: Env.getBool('JWT_ENABLED', true),
|
|
30
|
+
get secret() {
|
|
31
|
+
if (cachedJwtSecret !== undefined)
|
|
32
|
+
return cachedJwtSecret;
|
|
33
|
+
const isEnabled = Env.getBool('JWT_ENABLED', true);
|
|
34
|
+
cachedJwtSecret = isEnabled
|
|
35
|
+
? Env.get('JWT_SECRET') || warnMissingSecret('JWT_SECRET')
|
|
36
|
+
: Env.get('JWT_SECRET') || '';
|
|
37
|
+
return cachedJwtSecret;
|
|
38
|
+
},
|
|
39
|
+
algorithm: Env.get('JWT_ALGORITHM', 'HS256'),
|
|
40
|
+
expiresIn: Env.get('JWT_EXPIRES_IN', '1h'),
|
|
41
|
+
refreshExpiresIn: Env.get('JWT_REFRESH_EXPIRES_IN', '7d'),
|
|
42
|
+
issuer: Env.get('JWT_ISSUER', 'zintrust'),
|
|
43
|
+
audience: Env.get('JWT_AUDIENCE', 'zintrust-api'),
|
|
44
|
+
},
|
|
45
|
+
/**
|
|
46
|
+
* CSRF Protection
|
|
47
|
+
*/
|
|
48
|
+
csrf: {
|
|
49
|
+
enabled: Env.getBool('CSRF_ENABLED', true),
|
|
50
|
+
headerName: Env.get('CSRF_HEADER_NAME', 'x-csrf-token'),
|
|
51
|
+
tokenName: Env.get('CSRF_TOKEN_NAME', '_csrf'),
|
|
52
|
+
cookieName: Env.get('CSRF_COOKIE_NAME', 'XSRF-TOKEN'),
|
|
53
|
+
cookieHttpOnly: Env.getBool('CSRF_COOKIE_HTTP_ONLY', true),
|
|
54
|
+
cookieSecure: Env.getBool('CSRF_COOKIE_SECURE', true),
|
|
55
|
+
cookieSameSite: Env.get('CSRF_COOKIE_SAME_SITE', 'strict'),
|
|
56
|
+
},
|
|
57
|
+
/**
|
|
58
|
+
* Encryption
|
|
59
|
+
*/
|
|
60
|
+
encryption: {
|
|
61
|
+
algorithm: Env.get('ENCRYPTION_ALGORITHM', 'aes-256-cbc'),
|
|
62
|
+
key: Env.get('ENCRYPTION_KEY', 'your-encryption-key'),
|
|
63
|
+
},
|
|
64
|
+
/**
|
|
65
|
+
* API Key Authentication
|
|
66
|
+
*/
|
|
67
|
+
apiKey: {
|
|
68
|
+
enabled: Env.getBool('API_KEY_ENABLED', true),
|
|
69
|
+
headerName: Env.get('API_KEY_HEADER', 'x-api-key'),
|
|
70
|
+
secret: Env.get('API_KEY_SECRET'),
|
|
71
|
+
},
|
|
72
|
+
/**
|
|
73
|
+
* CORS Configuration
|
|
74
|
+
*/
|
|
75
|
+
cors: {
|
|
76
|
+
enabled: Env.getBool('CORS_ENABLED', true),
|
|
77
|
+
origins: Env.get('CORS_ORIGINS', '*').split(','),
|
|
78
|
+
methods: Env.get('CORS_METHODS', 'GET,POST,PUT,PATCH,DELETE').split(','),
|
|
79
|
+
allowedHeaders: Env.get('CORS_ALLOWED_HEADERS', 'Content-Type,Authorization').split(','),
|
|
80
|
+
exposedHeaders: Env.get('CORS_EXPOSED_HEADERS', '').split(','),
|
|
81
|
+
credentials: Env.getBool('CORS_CREDENTIALS', false),
|
|
82
|
+
maxAge: Env.getInt('CORS_MAX_AGE', 86400),
|
|
83
|
+
},
|
|
84
|
+
/**
|
|
85
|
+
* Rate Limiting
|
|
86
|
+
*/
|
|
87
|
+
rateLimit: {
|
|
88
|
+
enabled: Env.getBool('RATE_LIMIT_ENABLED', true),
|
|
89
|
+
windowMs: Env.getInt('RATE_LIMIT_WINDOW_MS', 900000), // 15 minutes
|
|
90
|
+
maxRequests: Env.getInt('RATE_LIMIT_MAX_REQUESTS', 100),
|
|
91
|
+
message: Env.get('RATE_LIMIT_MESSAGE', 'Too many requests, please try again later'),
|
|
92
|
+
},
|
|
93
|
+
/**
|
|
94
|
+
* XSS Protection
|
|
95
|
+
*/
|
|
96
|
+
xss: {
|
|
97
|
+
enabled: Env.getBool('XSS_ENABLED', true),
|
|
98
|
+
reportUri: Env.get('XSS_REPORT_URI'),
|
|
99
|
+
},
|
|
100
|
+
/**
|
|
101
|
+
* Helmet Security Headers
|
|
102
|
+
*/
|
|
103
|
+
helmet: {
|
|
104
|
+
enabled: Env.getBool('HELMET_ENABLED', true),
|
|
105
|
+
contentSecurityPolicy: Env.getBool('CSP_ENABLED', true),
|
|
106
|
+
hsts: {
|
|
107
|
+
enabled: Env.getBool('HSTS_ENABLED', true),
|
|
108
|
+
maxAge: Env.getInt('HSTS_MAX_AGE', 31536000),
|
|
109
|
+
includeSubDomains: Env.getBool('HSTS_INCLUDE_SUBDOMAINS', true),
|
|
110
|
+
},
|
|
111
|
+
},
|
|
112
|
+
/**
|
|
113
|
+
* Session Configuration
|
|
114
|
+
*/
|
|
115
|
+
session: {
|
|
116
|
+
name: Env.get('SESSION_NAME', 'zintrust_session'),
|
|
117
|
+
secret: Env.get('SESSION_SECRET', 'your-session-secret'),
|
|
118
|
+
expiresIn: Env.getInt('SESSION_EXPIRES_IN', 1800000), // 30 minutes
|
|
119
|
+
secure: Env.getBool('SESSION_SECURE', true),
|
|
120
|
+
httpOnly: Env.getBool('SESSION_HTTP_ONLY', true),
|
|
121
|
+
sameSite: Env.get('SESSION_SAME_SITE', 'strict'),
|
|
122
|
+
},
|
|
123
|
+
/**
|
|
124
|
+
* Password settings
|
|
125
|
+
*/
|
|
126
|
+
password: {
|
|
127
|
+
minLength: Env.getInt('PASSWORD_MIN_LENGTH', 8),
|
|
128
|
+
requireUppercase: Env.getBool('PASSWORD_REQUIRE_UPPERCASE', true),
|
|
129
|
+
requireNumbers: Env.getBool('PASSWORD_REQUIRE_NUMBERS', true),
|
|
130
|
+
requireSpecialChars: Env.getBool('PASSWORD_REQUIRE_SPECIAL_CHARS', true),
|
|
131
|
+
bcryptRounds: Env.getInt('BCRYPT_ROUNDS', 10),
|
|
132
|
+
},
|
|
133
|
+
};
|
|
134
|
+
export const securityConfig = Object.freeze(securityConfigObj);
|