@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
|
+
import { Env } from '../config/env';
|
|
2
|
+
import { Logger } from '../config/logger';
|
|
3
|
+
import * as crypto from '../node-singletons/crypto';
|
|
4
|
+
/**
|
|
5
|
+
* Trace logger for structured logging
|
|
6
|
+
*/
|
|
7
|
+
export const TraceLogger = Object.freeze({
|
|
8
|
+
/**
|
|
9
|
+
* Create a new trace logger instance
|
|
10
|
+
*/
|
|
11
|
+
create(traceId, serviceName) {
|
|
12
|
+
return {
|
|
13
|
+
info(message, data) {
|
|
14
|
+
Logger.info(`[${traceId}] ${serviceName} INFO: ${message}`, data ?? '');
|
|
15
|
+
},
|
|
16
|
+
warn(message, data) {
|
|
17
|
+
Logger.warn(`[${traceId}] ${serviceName} WARN: ${message}`, data ?? '');
|
|
18
|
+
},
|
|
19
|
+
error(message, data) {
|
|
20
|
+
Logger.error(`[${traceId}] ${serviceName} ERROR: ${message}`, data ?? '');
|
|
21
|
+
},
|
|
22
|
+
debug(message, data) {
|
|
23
|
+
if (Env.get('DEBUG') !== undefined && Env.get('DEBUG') !== '') {
|
|
24
|
+
Logger.debug(`[${traceId}] ${serviceName} DEBUG: ${message}`, data ?? '');
|
|
25
|
+
}
|
|
26
|
+
},
|
|
27
|
+
};
|
|
28
|
+
},
|
|
29
|
+
});
|
|
30
|
+
/**
|
|
31
|
+
* Generate unique trace ID
|
|
32
|
+
*/
|
|
33
|
+
function generateTraceId() {
|
|
34
|
+
return `${Date.now()}-${crypto.randomBytes(8).toString('hex')}`;
|
|
35
|
+
}
|
|
36
|
+
function shouldSampleRequest(samplingRate) {
|
|
37
|
+
if (samplingRate >= 1)
|
|
38
|
+
return true;
|
|
39
|
+
if (samplingRate <= 0)
|
|
40
|
+
return false;
|
|
41
|
+
const scale = 1_000_000;
|
|
42
|
+
const value = crypto.randomInt(0, scale) / scale;
|
|
43
|
+
return value <= samplingRate;
|
|
44
|
+
}
|
|
45
|
+
function createTracingMiddleware(serviceName, enabled, samplingRate) {
|
|
46
|
+
return async (req, res, next) => {
|
|
47
|
+
if (enabled === false || shouldSampleRequest(samplingRate) === false) {
|
|
48
|
+
return next();
|
|
49
|
+
}
|
|
50
|
+
// Check for existing trace ID (from parent service)
|
|
51
|
+
const traceIdHeader = req.getHeader('x-trace-id');
|
|
52
|
+
const traceId = (typeof traceIdHeader === 'string' ? traceIdHeader : '') || generateTraceId();
|
|
53
|
+
const parentServiceIdHeader = req.getHeader('x-parent-service-id');
|
|
54
|
+
const parentServiceId = typeof parentServiceIdHeader === 'string' ? parentServiceIdHeader : undefined;
|
|
55
|
+
const depthHeader = req.getHeader('x-trace-depth');
|
|
56
|
+
const depth = Number.parseInt((typeof depthHeader === 'string' ? depthHeader : '') || '0');
|
|
57
|
+
// Store trace context in request
|
|
58
|
+
const traceContext = {
|
|
59
|
+
traceId,
|
|
60
|
+
parentServiceId,
|
|
61
|
+
depth,
|
|
62
|
+
startTime: Date.now(),
|
|
63
|
+
serviceName,
|
|
64
|
+
};
|
|
65
|
+
req.context = Object.keys(req.context).length > 0 ? req.context : {};
|
|
66
|
+
req.context['trace'] = traceContext;
|
|
67
|
+
req.context['traceLogger'] = TraceLogger.create(traceId, serviceName);
|
|
68
|
+
// Attach trace headers to response
|
|
69
|
+
res.setHeader('x-trace-id', traceId);
|
|
70
|
+
res.setHeader('x-trace-service', serviceName);
|
|
71
|
+
res.setHeader('x-trace-depth', depth.toString());
|
|
72
|
+
// Log request start
|
|
73
|
+
const method = req.getMethod();
|
|
74
|
+
const path = req.getPath();
|
|
75
|
+
Logger.info(`[TRACE ${traceId}] ${serviceName} ${method} ${path} (depth: ${depth}) ` +
|
|
76
|
+
(parentServiceId === undefined ? '' : `(from: ${parentServiceId})`));
|
|
77
|
+
// Track response timing
|
|
78
|
+
const startTime = Date.now();
|
|
79
|
+
const originalJson = res.json.bind(res);
|
|
80
|
+
res.json = function (data) {
|
|
81
|
+
const duration = Date.now() - startTime;
|
|
82
|
+
Logger.info(`[TRACE ${traceId}] ${serviceName} ${method} ${path} ${res.getStatus()} (${duration}ms)`);
|
|
83
|
+
return originalJson(data);
|
|
84
|
+
};
|
|
85
|
+
await next();
|
|
86
|
+
};
|
|
87
|
+
}
|
|
88
|
+
function createInjectHeaders(serviceName) {
|
|
89
|
+
return (headers = {}, traceId) => {
|
|
90
|
+
const depthHeader = headers['x-trace-depth'];
|
|
91
|
+
const newDepth = Number.parseInt(depthHeader ?? '0') + 1;
|
|
92
|
+
return {
|
|
93
|
+
...headers,
|
|
94
|
+
'x-trace-id': traceId ?? crypto.randomBytes(8).toString('hex'),
|
|
95
|
+
'x-parent-service-id': serviceName,
|
|
96
|
+
'x-trace-depth': newDepth.toString(),
|
|
97
|
+
};
|
|
98
|
+
};
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* Request Tracing Middleware
|
|
102
|
+
* Enables request tracking across microservices for debugging and observability
|
|
103
|
+
*/
|
|
104
|
+
export function RequestTracingMiddlewareFactory() {
|
|
105
|
+
return {
|
|
106
|
+
/**
|
|
107
|
+
* Middleware to add request tracing
|
|
108
|
+
*/
|
|
109
|
+
middleware(serviceName, enabled = true, samplingRate = 1) {
|
|
110
|
+
return createTracingMiddleware(serviceName, enabled, samplingRate);
|
|
111
|
+
},
|
|
112
|
+
/**
|
|
113
|
+
* Middleware to inject trace headers into outgoing service calls
|
|
114
|
+
*/
|
|
115
|
+
injectHeaders(serviceName, _targetServiceName) {
|
|
116
|
+
return createInjectHeaders(serviceName);
|
|
117
|
+
},
|
|
118
|
+
};
|
|
119
|
+
}
|
|
120
|
+
export const RequestTracingMiddleware = RequestTracingMiddlewareFactory();
|
|
121
|
+
export const middleware = (serviceName, enabled = true, samplingRate = 1) => RequestTracingMiddleware.middleware(serviceName, enabled, samplingRate);
|
|
122
|
+
export default RequestTracingMiddleware;
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import { IRequest } from '../http/Request';
|
|
2
|
+
import { IResponse } from '../http/Response';
|
|
3
|
+
export type NextFunction = (error?: Error) => void | Promise<void>;
|
|
4
|
+
/**
|
|
5
|
+
* Service-to-service authentication strategies
|
|
6
|
+
*/
|
|
7
|
+
export type AuthStrategy = 'api-key' | 'jwt' | 'none' | 'custom';
|
|
8
|
+
export interface AuthContext {
|
|
9
|
+
isServiceCall: boolean;
|
|
10
|
+
serviceName?: string;
|
|
11
|
+
strategy: AuthStrategy;
|
|
12
|
+
authenticated: boolean;
|
|
13
|
+
}
|
|
14
|
+
export interface IApiKeyAuth {
|
|
15
|
+
verify(token: string): boolean;
|
|
16
|
+
generate(): string;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* API Key Authentication
|
|
20
|
+
*/
|
|
21
|
+
export declare const ApiKeyAuth: Readonly<{
|
|
22
|
+
/**
|
|
23
|
+
* Create a new API key auth instance
|
|
24
|
+
*/
|
|
25
|
+
create(apiKey?: string): IApiKeyAuth;
|
|
26
|
+
}>;
|
|
27
|
+
export interface IJwtAuth {
|
|
28
|
+
sign(payload: Record<string, unknown>, expiresIn?: string): string;
|
|
29
|
+
verify(token: string): Record<string, unknown> | null;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* JWT Authentication
|
|
33
|
+
*/
|
|
34
|
+
export declare const JwtAuth: Readonly<{
|
|
35
|
+
/**
|
|
36
|
+
* Create a new JWT auth instance
|
|
37
|
+
*/
|
|
38
|
+
create(secret?: string): IJwtAuth;
|
|
39
|
+
}>;
|
|
40
|
+
export interface ICustomAuth {
|
|
41
|
+
verify(token: string): boolean;
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Custom Authentication (developer-defined)
|
|
45
|
+
*/
|
|
46
|
+
export declare const CustomAuth: Readonly<{
|
|
47
|
+
/**
|
|
48
|
+
* Create a new custom auth instance
|
|
49
|
+
*/
|
|
50
|
+
create(validator: (token: string) => boolean): ICustomAuth;
|
|
51
|
+
}>;
|
|
52
|
+
export interface IServiceAuthMiddleware {
|
|
53
|
+
registerCustomAuth(validator: (token: string) => boolean): void;
|
|
54
|
+
middleware(strategy: AuthStrategy): (req: IRequest, res: IResponse, next: NextFunction) => void | Promise<void>;
|
|
55
|
+
}
|
|
56
|
+
export declare const ServiceAuthMiddleware: Readonly<IServiceAuthMiddleware>;
|
|
57
|
+
export default ServiceAuthMiddleware;
|
|
58
|
+
//# sourceMappingURL=ServiceAuthMiddleware.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ServiceAuthMiddleware.d.ts","sourceRoot":"","sources":["../../../src/microservices/ServiceAuthMiddleware.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAI3C,MAAM,MAAM,YAAY,GAAG,CAAC,KAAK,CAAC,EAAE,KAAK,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;AAEnE;;GAEG;AACH,MAAM,MAAM,YAAY,GAAG,SAAS,GAAG,KAAK,GAAG,MAAM,GAAG,QAAQ,CAAC;AAEjE,MAAM,WAAW,WAAW;IAC1B,aAAa,EAAE,OAAO,CAAC;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,YAAY,CAAC;IACvB,aAAa,EAAE,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,WAAW;IAC1B,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC;IAC/B,QAAQ,IAAI,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,eAAO,MAAM,UAAU;IACrB;;OAEG;oBACa,MAAM,GAAG,WAAW;EA6BpC,CAAC;AAEH,MAAM,WAAW,QAAQ;IACvB,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACnE,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;CACvD;AAED;;GAEG;AACH,eAAO,MAAM,OAAO;IAClB;;OAEG;oBACa,MAAM,GAAG,QAAQ;EAyDjC,CAAC;AAEH,MAAM,WAAW,WAAW;IAC1B,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC;CAChC;AAED;;GAEG;AACH,eAAO,MAAM,UAAU;IACrB;;OAEG;sBACe,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,GAAG,WAAW;EAO1D,CAAC;AAEH,MAAM,WAAW,sBAAsB;IACrC,kBAAkB,CAAC,SAAS,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,GAAG,IAAI,CAAC;IAChE,UAAU,CACR,QAAQ,EAAE,YAAY,GACrB,CAAC,GAAG,EAAE,QAAQ,EAAE,GAAG,EAAE,SAAS,EAAE,IAAI,EAAE,YAAY,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAChF;AAwMD,eAAO,MAAM,qBAAqB,kCAA+C,CAAC;AAElF,eAAe,qBAAqB,CAAC"}
|
|
@@ -0,0 +1,240 @@
|
|
|
1
|
+
import { Env } from '../config/env';
|
|
2
|
+
import { Logger } from '../config/logger';
|
|
3
|
+
import * as crypto from '../node-singletons/crypto';
|
|
4
|
+
/**
|
|
5
|
+
* API Key Authentication
|
|
6
|
+
*/
|
|
7
|
+
export const ApiKeyAuth = Object.freeze({
|
|
8
|
+
/**
|
|
9
|
+
* Create a new API key auth instance
|
|
10
|
+
*/
|
|
11
|
+
create(apiKey) {
|
|
12
|
+
const generateSecureApiKeyDefault = () => {
|
|
13
|
+
return crypto.randomBytes(32).toString('hex');
|
|
14
|
+
};
|
|
15
|
+
const getApiKey = () => {
|
|
16
|
+
const envKey = Env.get('SERVICE_API_KEY');
|
|
17
|
+
const secureDefault = generateSecureApiKeyDefault();
|
|
18
|
+
if (envKey === undefined || envKey === secureDefault) {
|
|
19
|
+
Logger.warn('⚠️ WARNING: Using generated default API key. Set SERVICE_API_KEY environment variable in production!');
|
|
20
|
+
return secureDefault;
|
|
21
|
+
}
|
|
22
|
+
return envKey;
|
|
23
|
+
};
|
|
24
|
+
const key = apiKey ?? getApiKey();
|
|
25
|
+
return {
|
|
26
|
+
verify(token) {
|
|
27
|
+
return token === key;
|
|
28
|
+
},
|
|
29
|
+
generate() {
|
|
30
|
+
return crypto.randomBytes(32).toString('hex');
|
|
31
|
+
},
|
|
32
|
+
};
|
|
33
|
+
},
|
|
34
|
+
});
|
|
35
|
+
/**
|
|
36
|
+
* JWT Authentication
|
|
37
|
+
*/
|
|
38
|
+
export const JwtAuth = Object.freeze({
|
|
39
|
+
/**
|
|
40
|
+
* Create a new JWT auth instance
|
|
41
|
+
*/
|
|
42
|
+
create(secret) {
|
|
43
|
+
const generateSecureJwtDefault = () => {
|
|
44
|
+
return crypto.randomBytes(32).toString('hex');
|
|
45
|
+
};
|
|
46
|
+
const getJwtSecret = () => {
|
|
47
|
+
const envSecret = Env.get('SERVICE_JWT_SECRET');
|
|
48
|
+
const secureDefault = generateSecureJwtDefault();
|
|
49
|
+
if (envSecret === undefined || envSecret === secureDefault) {
|
|
50
|
+
Logger.warn('⚠️ WARNING: Using generated default JWT secret. Set SERVICE_JWT_SECRET environment variable in production!');
|
|
51
|
+
return secureDefault;
|
|
52
|
+
}
|
|
53
|
+
return envSecret;
|
|
54
|
+
};
|
|
55
|
+
const jwtSecret = secret ?? getJwtSecret();
|
|
56
|
+
return {
|
|
57
|
+
sign(payload, _expiresIn = '1h') {
|
|
58
|
+
// Simplified JWT (in production, use jsonwebtoken library)
|
|
59
|
+
const header = Buffer.from(JSON.stringify({ alg: 'HS256', typ: 'JWT' })).toString('base64');
|
|
60
|
+
const body = Buffer.from(JSON.stringify({ ...payload, iat: Date.now() })).toString('base64');
|
|
61
|
+
const signature = crypto
|
|
62
|
+
.createHmac('sha256', jwtSecret)
|
|
63
|
+
.update(`${header}.${body}`)
|
|
64
|
+
.digest('base64');
|
|
65
|
+
return `${header}.${body}.${signature}`;
|
|
66
|
+
},
|
|
67
|
+
verify(token) {
|
|
68
|
+
try {
|
|
69
|
+
const parts = token.split('.');
|
|
70
|
+
if (parts.length !== 3)
|
|
71
|
+
return null;
|
|
72
|
+
const [header, body, signature] = parts;
|
|
73
|
+
const expectedSignature = crypto
|
|
74
|
+
.createHmac('sha256', jwtSecret)
|
|
75
|
+
.update(`${header}.${body}`)
|
|
76
|
+
.digest('base64');
|
|
77
|
+
if (signature !== expectedSignature) {
|
|
78
|
+
return null;
|
|
79
|
+
}
|
|
80
|
+
return JSON.parse(Buffer.from(body, 'base64').toString());
|
|
81
|
+
}
|
|
82
|
+
catch (error) {
|
|
83
|
+
Logger.error('JWT verification failed', error);
|
|
84
|
+
return null;
|
|
85
|
+
}
|
|
86
|
+
},
|
|
87
|
+
};
|
|
88
|
+
},
|
|
89
|
+
});
|
|
90
|
+
/**
|
|
91
|
+
* Custom Authentication (developer-defined)
|
|
92
|
+
*/
|
|
93
|
+
export const CustomAuth = Object.freeze({
|
|
94
|
+
/**
|
|
95
|
+
* Create a new custom auth instance
|
|
96
|
+
*/
|
|
97
|
+
create(validator) {
|
|
98
|
+
return {
|
|
99
|
+
verify(token) {
|
|
100
|
+
return validator(token);
|
|
101
|
+
},
|
|
102
|
+
};
|
|
103
|
+
},
|
|
104
|
+
});
|
|
105
|
+
/**
|
|
106
|
+
* Create initial authentication context
|
|
107
|
+
*/
|
|
108
|
+
const createAuthContext = (strategy) => {
|
|
109
|
+
return {
|
|
110
|
+
isServiceCall: false,
|
|
111
|
+
strategy,
|
|
112
|
+
authenticated: strategy === 'none',
|
|
113
|
+
};
|
|
114
|
+
};
|
|
115
|
+
/**
|
|
116
|
+
* Attach context to request and proceed to next middleware
|
|
117
|
+
*/
|
|
118
|
+
const attachContextAndNext = (req, context, next) => {
|
|
119
|
+
req.context ??= {};
|
|
120
|
+
req.context['serviceAuth'] = context;
|
|
121
|
+
return next();
|
|
122
|
+
};
|
|
123
|
+
/**
|
|
124
|
+
* Finalize successful service authentication
|
|
125
|
+
*/
|
|
126
|
+
const finalizeServiceAuth = (req, context, next) => {
|
|
127
|
+
context.authenticated = true;
|
|
128
|
+
context.isServiceCall = true;
|
|
129
|
+
return attachContextAndNext(req, context, next);
|
|
130
|
+
};
|
|
131
|
+
/**
|
|
132
|
+
* Parse authorization header
|
|
133
|
+
*/
|
|
134
|
+
const parseAuthHeader = (req) => {
|
|
135
|
+
const authHeader = req.getHeader('authorization');
|
|
136
|
+
if (authHeader === undefined || typeof authHeader !== 'string') {
|
|
137
|
+
return null;
|
|
138
|
+
}
|
|
139
|
+
const parts = authHeader.split(' ');
|
|
140
|
+
if (parts.length !== 2) {
|
|
141
|
+
return null;
|
|
142
|
+
}
|
|
143
|
+
const scheme = parts[0];
|
|
144
|
+
const token = parts[1];
|
|
145
|
+
if (!scheme || !token) {
|
|
146
|
+
return null;
|
|
147
|
+
}
|
|
148
|
+
return { scheme, token };
|
|
149
|
+
};
|
|
150
|
+
/**
|
|
151
|
+
* Verify API Key strategy
|
|
152
|
+
*/
|
|
153
|
+
const verifyApiKeyStrategy = (apiKeyAuth, scheme, token) => {
|
|
154
|
+
if (scheme !== 'Bearer' || apiKeyAuth.verify(token) === false) {
|
|
155
|
+
return { authenticated: false, status: 403, error: 'Invalid API key' };
|
|
156
|
+
}
|
|
157
|
+
return { authenticated: true };
|
|
158
|
+
};
|
|
159
|
+
/**
|
|
160
|
+
* Verify JWT strategy
|
|
161
|
+
*/
|
|
162
|
+
const verifyJwtStrategy = (jwtAuth, scheme, token, context) => {
|
|
163
|
+
if (scheme !== 'Bearer') {
|
|
164
|
+
return {
|
|
165
|
+
authenticated: false,
|
|
166
|
+
status: 401,
|
|
167
|
+
error: 'Invalid authorization scheme',
|
|
168
|
+
};
|
|
169
|
+
}
|
|
170
|
+
const payload = jwtAuth.verify(token);
|
|
171
|
+
if (payload === null) {
|
|
172
|
+
return { authenticated: false, status: 403, error: 'Invalid JWT token' };
|
|
173
|
+
}
|
|
174
|
+
const serviceName = payload['serviceName'];
|
|
175
|
+
context.serviceName = typeof serviceName === 'string' ? serviceName : '';
|
|
176
|
+
return { authenticated: true };
|
|
177
|
+
};
|
|
178
|
+
/**
|
|
179
|
+
* Verify Custom strategy
|
|
180
|
+
*/
|
|
181
|
+
const verifyCustomStrategy = (customValidator, token) => {
|
|
182
|
+
if (customValidator === null || customValidator(token) === false) {
|
|
183
|
+
return { authenticated: false, status: 403, error: 'Authentication failed' };
|
|
184
|
+
}
|
|
185
|
+
return { authenticated: true };
|
|
186
|
+
};
|
|
187
|
+
/**
|
|
188
|
+
* Verify authentication strategy
|
|
189
|
+
*/
|
|
190
|
+
const verifyStrategy = (strategy, auth, context, deps) => {
|
|
191
|
+
switch (strategy) {
|
|
192
|
+
case 'api-key':
|
|
193
|
+
return verifyApiKeyStrategy(deps.apiKeyAuth, auth.scheme, auth.token);
|
|
194
|
+
case 'jwt':
|
|
195
|
+
return verifyJwtStrategy(deps.jwtAuth, auth.scheme, auth.token, context);
|
|
196
|
+
case 'custom':
|
|
197
|
+
return verifyCustomStrategy(deps.customValidator, auth.token);
|
|
198
|
+
default:
|
|
199
|
+
return { authenticated: false, status: 401, error: 'Unsupported strategy' };
|
|
200
|
+
}
|
|
201
|
+
};
|
|
202
|
+
const createServiceAuthMiddleware = () => {
|
|
203
|
+
const defaultApiKeyAuth = ApiKeyAuth.create();
|
|
204
|
+
const defaultJwtAuth = JwtAuth.create();
|
|
205
|
+
let customValidator = null;
|
|
206
|
+
return {
|
|
207
|
+
/**
|
|
208
|
+
* Register custom auth validator
|
|
209
|
+
*/
|
|
210
|
+
registerCustomAuth(validator) {
|
|
211
|
+
customValidator = validator;
|
|
212
|
+
},
|
|
213
|
+
/**
|
|
214
|
+
* Middleware to authenticate service-to-service calls
|
|
215
|
+
*/
|
|
216
|
+
middleware(strategy) {
|
|
217
|
+
return async (req, res, next) => {
|
|
218
|
+
const context = createAuthContext(strategy);
|
|
219
|
+
if (strategy === 'none') {
|
|
220
|
+
return attachContextAndNext(req, context, next);
|
|
221
|
+
}
|
|
222
|
+
const auth = parseAuthHeader(req);
|
|
223
|
+
if (auth === null) {
|
|
224
|
+
return res.setStatus(401).json({ error: 'Missing or invalid authorization header' });
|
|
225
|
+
}
|
|
226
|
+
const result = verifyStrategy(strategy, auth, context, {
|
|
227
|
+
apiKeyAuth: defaultApiKeyAuth,
|
|
228
|
+
jwtAuth: defaultJwtAuth,
|
|
229
|
+
customValidator,
|
|
230
|
+
});
|
|
231
|
+
if (!result.authenticated) {
|
|
232
|
+
return res.setStatus(result.status ?? 401).json({ error: result.error });
|
|
233
|
+
}
|
|
234
|
+
return finalizeServiceAuth(req, context, next);
|
|
235
|
+
};
|
|
236
|
+
},
|
|
237
|
+
};
|
|
238
|
+
};
|
|
239
|
+
export const ServiceAuthMiddleware = Object.freeze(createServiceAuthMiddleware());
|
|
240
|
+
export default ServiceAuthMiddleware;
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Service Bundler - Creates optimized, independent microservice packages
|
|
3
|
+
* Target: Each service < 1MB for serverless deployment
|
|
4
|
+
*/
|
|
5
|
+
export interface BundleConfig {
|
|
6
|
+
serviceName: string;
|
|
7
|
+
domain: string;
|
|
8
|
+
outputDir: string;
|
|
9
|
+
targetSize?: number;
|
|
10
|
+
includeTests?: boolean;
|
|
11
|
+
includeDocs?: boolean;
|
|
12
|
+
}
|
|
13
|
+
export interface BundleResult {
|
|
14
|
+
serviceName: string;
|
|
15
|
+
sizeBytes: number;
|
|
16
|
+
sizeMB: number;
|
|
17
|
+
files: number;
|
|
18
|
+
location: string;
|
|
19
|
+
optimized: boolean;
|
|
20
|
+
}
|
|
21
|
+
export interface IServiceBundler {
|
|
22
|
+
bundleService(config: BundleConfig): Promise<BundleResult>;
|
|
23
|
+
bundleAll(domain: string, services: string[], outputDir?: string): Promise<BundleResult[]>;
|
|
24
|
+
createServiceImage(serviceName: string, domain: string, registry?: string): Promise<string>;
|
|
25
|
+
}
|
|
26
|
+
export interface IServiceBundlerManager {
|
|
27
|
+
getInstance(): IServiceBundler;
|
|
28
|
+
bundleService(config: BundleConfig): Promise<BundleResult>;
|
|
29
|
+
bundleAll(domain: string, services: string[], outputDir?: string): Promise<BundleResult[]>;
|
|
30
|
+
createServiceImage(serviceName: string, domain: string, registry?: string): Promise<string>;
|
|
31
|
+
create(): IServiceBundler;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Service bundler for independent deployment
|
|
35
|
+
*/
|
|
36
|
+
export declare const ServiceBundler: IServiceBundlerManager;
|
|
37
|
+
/**
|
|
38
|
+
* CLI command to bundle services
|
|
39
|
+
*/
|
|
40
|
+
export declare function bundleServices(domain: string, services: string): Promise<void>;
|
|
41
|
+
export declare const bundleService: (config: BundleConfig) => Promise<BundleResult>;
|
|
42
|
+
export declare const bundleAll: (domain: string, services: string[], outputDir?: string) => Promise<BundleResult[]>;
|
|
43
|
+
export declare const createServiceImage: (serviceName: string, domain: string, registry?: string) => Promise<string>;
|
|
44
|
+
export default ServiceBundler;
|
|
45
|
+
//# sourceMappingURL=ServiceBundler.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ServiceBundler.d.ts","sourceRoot":"","sources":["../../../src/microservices/ServiceBundler.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAMH,MAAM,WAAW,YAAY;IAC3B,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED,MAAM,WAAW,YAAY;IAC3B,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,eAAe;IAC9B,aAAa,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;IAC3D,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC;IAC3F,kBAAkB,CAAC,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;CAC7F;AAED,MAAM,WAAW,sBAAsB;IACrC,WAAW,IAAI,eAAe,CAAC;IAC/B,aAAa,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;IAC3D,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC;IAC3F,kBAAkB,CAAC,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAC5F,MAAM,IAAI,eAAe,CAAC;CAC3B;AAED;;GAEG;AACH,eAAO,MAAM,cAAc,wBAiEvB,CAAC;AA+RL;;GAEG;AACH,wBAAsB,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAcpF;AAED,eAAO,MAAM,aAAa,GAAU,QAAQ,YAAY,KAAG,OAAO,CAAC,YAAY,CAC3B,CAAC;AACrD,eAAO,MAAM,SAAS,GACpB,QAAQ,MAAM,EACd,UAAU,MAAM,EAAE,EAClB,YAAY,MAAM,KACjB,OAAO,CAAC,YAAY,EAAE,CAAwE,CAAC;AAClG,eAAO,MAAM,kBAAkB,GAC7B,aAAa,MAAM,EACnB,QAAQ,MAAM,EACd,WAAW,MAAM,KAChB,OAAO,CAAC,MAAM,CAC+D,CAAC;AAEjF,eAAe,cAAc,CAAC"}
|