@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,62 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Cache Configuration
|
|
3
|
+
* Caching drivers and settings
|
|
4
|
+
* Sealed namespace for immutability
|
|
5
|
+
*/
|
|
6
|
+
import { Env } from './env';
|
|
7
|
+
const getCacheDriver = (config) => {
|
|
8
|
+
const defaultDriver = config.default;
|
|
9
|
+
if (Object.prototype.hasOwnProperty.call(config.drivers, defaultDriver)) {
|
|
10
|
+
const driverName = defaultDriver;
|
|
11
|
+
return config.drivers[driverName];
|
|
12
|
+
}
|
|
13
|
+
return config.drivers.memory;
|
|
14
|
+
};
|
|
15
|
+
const cacheConfigObj = {
|
|
16
|
+
/**
|
|
17
|
+
* Default cache driver
|
|
18
|
+
*/
|
|
19
|
+
default: Env.get('CACHE_DRIVER', 'memory'),
|
|
20
|
+
/**
|
|
21
|
+
* Cache drivers
|
|
22
|
+
*/
|
|
23
|
+
drivers: {
|
|
24
|
+
memory: {
|
|
25
|
+
driver: 'memory',
|
|
26
|
+
ttl: Env.getInt('CACHE_MEMORY_TTL', 3600),
|
|
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_DB', 0),
|
|
34
|
+
ttl: Env.getInt('CACHE_REDIS_TTL', 3600),
|
|
35
|
+
},
|
|
36
|
+
memcached: {
|
|
37
|
+
driver: 'memcached',
|
|
38
|
+
servers: Env.get('MEMCACHED_SERVERS', 'localhost:11211').split(','),
|
|
39
|
+
ttl: Env.getInt('CACHE_MEMCACHED_TTL', 3600),
|
|
40
|
+
},
|
|
41
|
+
file: {
|
|
42
|
+
driver: 'file',
|
|
43
|
+
path: Env.get('CACHE_FILE_PATH', 'storage/cache'),
|
|
44
|
+
ttl: Env.getInt('CACHE_FILE_TTL', 3600),
|
|
45
|
+
},
|
|
46
|
+
},
|
|
47
|
+
/**
|
|
48
|
+
* Get cache driver config
|
|
49
|
+
*/
|
|
50
|
+
getDriver() {
|
|
51
|
+
return getCacheDriver(this);
|
|
52
|
+
},
|
|
53
|
+
/**
|
|
54
|
+
* Key prefix for all cache keys
|
|
55
|
+
*/
|
|
56
|
+
keyPrefix: Env.get('CACHE_KEY_PREFIX', 'zintrust:'),
|
|
57
|
+
/**
|
|
58
|
+
* Default cache TTL (seconds)
|
|
59
|
+
*/
|
|
60
|
+
ttl: Env.getInt('CACHE_DEFAULT_TTL', 3600),
|
|
61
|
+
};
|
|
62
|
+
export const cacheConfig = Object.freeze(cacheConfigObj);
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Framework Constants
|
|
3
|
+
* Centralized string literals to prevent duplication (SonarQube S1192)
|
|
4
|
+
* Sealed namespace for immutability
|
|
5
|
+
*/
|
|
6
|
+
declare const HTTP_HEADERS: {
|
|
7
|
+
readonly CONTENT_TYPE: "Content-Type";
|
|
8
|
+
readonly ACCEPT: "Accept";
|
|
9
|
+
readonly AUTHORIZATION: "Authorization";
|
|
10
|
+
readonly X_TRACE_ID: "X-Trace-Id";
|
|
11
|
+
readonly X_SERVICE_CALL: "X-Service-Call";
|
|
12
|
+
readonly X_POWERED_BY: "X-Powered-By";
|
|
13
|
+
readonly X_CONTENT_TYPE_OPTIONS: "X-Content-Type-Options";
|
|
14
|
+
readonly X_FRAME_OPTIONS: "X-Frame-Options";
|
|
15
|
+
readonly X_XSS_PROTECTION: "X-XSS-Protection";
|
|
16
|
+
readonly REFERRER_POLICY: "Referrer-Policy";
|
|
17
|
+
readonly CONTENT_SECURITY_POLICY: "Content-Security-Policy";
|
|
18
|
+
};
|
|
19
|
+
declare const MIME_TYPES: {
|
|
20
|
+
readonly JSON: "application/json";
|
|
21
|
+
readonly HTML: "text/html";
|
|
22
|
+
readonly TEXT: "text/plain";
|
|
23
|
+
readonly JS: "text/javascript";
|
|
24
|
+
readonly CSS: "text/css";
|
|
25
|
+
readonly PNG: "image/png";
|
|
26
|
+
readonly JPG: "image/jpg";
|
|
27
|
+
readonly GIF: "image/gif";
|
|
28
|
+
readonly SVG: "image/svg+xml";
|
|
29
|
+
readonly WAV: "audio/wav";
|
|
30
|
+
readonly MP4: "video/mp4";
|
|
31
|
+
readonly WOFF: "application/font-woff";
|
|
32
|
+
readonly TTF: "application/font-ttf";
|
|
33
|
+
readonly EOT: "application/vnd.ms-fontobject";
|
|
34
|
+
readonly OTF: "application/font-otf";
|
|
35
|
+
readonly WASM: "application/wasm";
|
|
36
|
+
};
|
|
37
|
+
declare const ENV_KEYS: {
|
|
38
|
+
readonly NODE_ENV: "NODE_ENV";
|
|
39
|
+
readonly PORT: "PORT";
|
|
40
|
+
readonly HOST: "HOST";
|
|
41
|
+
readonly APP_NAME: "APP_NAME";
|
|
42
|
+
readonly DB_CONNECTION: "DB_CONNECTION";
|
|
43
|
+
readonly DB_HOST: "DB_HOST";
|
|
44
|
+
readonly DB_PORT: "DB_PORT";
|
|
45
|
+
readonly DB_DATABASE: "DB_DATABASE";
|
|
46
|
+
readonly DB_USERNAME: "DB_USERNAME";
|
|
47
|
+
readonly DB_PASSWORD: "DB_PASSWORD";
|
|
48
|
+
};
|
|
49
|
+
declare const DEFAULTS: {
|
|
50
|
+
readonly CONNECTION: "default";
|
|
51
|
+
readonly DOMAIN: "default";
|
|
52
|
+
readonly NAMESPACE: "default";
|
|
53
|
+
};
|
|
54
|
+
/**
|
|
55
|
+
* Constants namespace - sealed for immutability
|
|
56
|
+
*/
|
|
57
|
+
export declare const Constants: Readonly<{
|
|
58
|
+
HTTP_HEADERS: {
|
|
59
|
+
readonly CONTENT_TYPE: "Content-Type";
|
|
60
|
+
readonly ACCEPT: "Accept";
|
|
61
|
+
readonly AUTHORIZATION: "Authorization";
|
|
62
|
+
readonly X_TRACE_ID: "X-Trace-Id";
|
|
63
|
+
readonly X_SERVICE_CALL: "X-Service-Call";
|
|
64
|
+
readonly X_POWERED_BY: "X-Powered-By";
|
|
65
|
+
readonly X_CONTENT_TYPE_OPTIONS: "X-Content-Type-Options";
|
|
66
|
+
readonly X_FRAME_OPTIONS: "X-Frame-Options";
|
|
67
|
+
readonly X_XSS_PROTECTION: "X-XSS-Protection";
|
|
68
|
+
readonly REFERRER_POLICY: "Referrer-Policy";
|
|
69
|
+
readonly CONTENT_SECURITY_POLICY: "Content-Security-Policy";
|
|
70
|
+
};
|
|
71
|
+
MIME_TYPES: {
|
|
72
|
+
readonly JSON: "application/json";
|
|
73
|
+
readonly HTML: "text/html";
|
|
74
|
+
readonly TEXT: "text/plain";
|
|
75
|
+
readonly JS: "text/javascript";
|
|
76
|
+
readonly CSS: "text/css";
|
|
77
|
+
readonly PNG: "image/png";
|
|
78
|
+
readonly JPG: "image/jpg";
|
|
79
|
+
readonly GIF: "image/gif";
|
|
80
|
+
readonly SVG: "image/svg+xml";
|
|
81
|
+
readonly WAV: "audio/wav";
|
|
82
|
+
readonly MP4: "video/mp4";
|
|
83
|
+
readonly WOFF: "application/font-woff";
|
|
84
|
+
readonly TTF: "application/font-ttf";
|
|
85
|
+
readonly EOT: "application/vnd.ms-fontobject";
|
|
86
|
+
readonly OTF: "application/font-otf";
|
|
87
|
+
readonly WASM: "application/wasm";
|
|
88
|
+
};
|
|
89
|
+
ENV_KEYS: {
|
|
90
|
+
readonly NODE_ENV: "NODE_ENV";
|
|
91
|
+
readonly PORT: "PORT";
|
|
92
|
+
readonly HOST: "HOST";
|
|
93
|
+
readonly APP_NAME: "APP_NAME";
|
|
94
|
+
readonly DB_CONNECTION: "DB_CONNECTION";
|
|
95
|
+
readonly DB_HOST: "DB_HOST";
|
|
96
|
+
readonly DB_PORT: "DB_PORT";
|
|
97
|
+
readonly DB_DATABASE: "DB_DATABASE";
|
|
98
|
+
readonly DB_USERNAME: "DB_USERNAME";
|
|
99
|
+
readonly DB_PASSWORD: "DB_PASSWORD";
|
|
100
|
+
};
|
|
101
|
+
DEFAULTS: {
|
|
102
|
+
readonly CONNECTION: "default";
|
|
103
|
+
readonly DOMAIN: "default";
|
|
104
|
+
readonly NAMESPACE: "default";
|
|
105
|
+
};
|
|
106
|
+
}>;
|
|
107
|
+
export { DEFAULTS, ENV_KEYS, HTTP_HEADERS, MIME_TYPES };
|
|
108
|
+
//# sourceMappingURL=constants.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../src/config/constants.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,QAAA,MAAM,YAAY;;;;;;;;;;;;CAYR,CAAC;AAEX,QAAA,MAAM,UAAU;;;;;;;;;;;;;;;;;CAiBN,CAAC;AAEX,QAAA,MAAM,QAAQ;;;;;;;;;;;CAWJ,CAAC;AAEX,QAAA,MAAM,QAAQ;;;;CAIJ,CAAC;AAEX;;GAEG;AACH,eAAO,MAAM,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAKpB,CAAC;AAGH,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,YAAY,EAAE,UAAU,EAAE,CAAC"}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Framework Constants
|
|
3
|
+
* Centralized string literals to prevent duplication (SonarQube S1192)
|
|
4
|
+
* Sealed namespace for immutability
|
|
5
|
+
*/
|
|
6
|
+
const HTTP_HEADERS = {
|
|
7
|
+
CONTENT_TYPE: 'Content-Type',
|
|
8
|
+
ACCEPT: 'Accept',
|
|
9
|
+
AUTHORIZATION: 'Authorization',
|
|
10
|
+
X_TRACE_ID: 'X-Trace-Id',
|
|
11
|
+
X_SERVICE_CALL: 'X-Service-Call',
|
|
12
|
+
X_POWERED_BY: 'X-Powered-By',
|
|
13
|
+
X_CONTENT_TYPE_OPTIONS: 'X-Content-Type-Options',
|
|
14
|
+
X_FRAME_OPTIONS: 'X-Frame-Options',
|
|
15
|
+
X_XSS_PROTECTION: 'X-XSS-Protection',
|
|
16
|
+
REFERRER_POLICY: 'Referrer-Policy',
|
|
17
|
+
CONTENT_SECURITY_POLICY: 'Content-Security-Policy',
|
|
18
|
+
};
|
|
19
|
+
const MIME_TYPES = {
|
|
20
|
+
JSON: 'application/json',
|
|
21
|
+
HTML: 'text/html',
|
|
22
|
+
TEXT: 'text/plain',
|
|
23
|
+
JS: 'text/javascript',
|
|
24
|
+
CSS: 'text/css',
|
|
25
|
+
PNG: 'image/png',
|
|
26
|
+
JPG: 'image/jpg',
|
|
27
|
+
GIF: 'image/gif',
|
|
28
|
+
SVG: 'image/svg+xml',
|
|
29
|
+
WAV: 'audio/wav',
|
|
30
|
+
MP4: 'video/mp4',
|
|
31
|
+
WOFF: 'application/font-woff',
|
|
32
|
+
TTF: 'application/font-ttf',
|
|
33
|
+
EOT: 'application/vnd.ms-fontobject',
|
|
34
|
+
OTF: 'application/font-otf',
|
|
35
|
+
WASM: 'application/wasm',
|
|
36
|
+
};
|
|
37
|
+
const ENV_KEYS = {
|
|
38
|
+
NODE_ENV: 'NODE_ENV',
|
|
39
|
+
PORT: 'PORT',
|
|
40
|
+
HOST: 'HOST',
|
|
41
|
+
APP_NAME: 'APP_NAME',
|
|
42
|
+
DB_CONNECTION: 'DB_CONNECTION',
|
|
43
|
+
DB_HOST: 'DB_HOST',
|
|
44
|
+
DB_PORT: 'DB_PORT',
|
|
45
|
+
DB_DATABASE: 'DB_DATABASE',
|
|
46
|
+
DB_USERNAME: 'DB_USERNAME',
|
|
47
|
+
DB_PASSWORD: 'DB_PASSWORD', // NOSONARQUBE
|
|
48
|
+
};
|
|
49
|
+
const DEFAULTS = {
|
|
50
|
+
CONNECTION: 'default',
|
|
51
|
+
DOMAIN: 'default',
|
|
52
|
+
NAMESPACE: 'default',
|
|
53
|
+
};
|
|
54
|
+
/**
|
|
55
|
+
* Constants namespace - sealed for immutability
|
|
56
|
+
*/
|
|
57
|
+
export const Constants = Object.freeze({
|
|
58
|
+
HTTP_HEADERS,
|
|
59
|
+
MIME_TYPES,
|
|
60
|
+
ENV_KEYS,
|
|
61
|
+
DEFAULTS,
|
|
62
|
+
});
|
|
63
|
+
// Re-export for backward compatibility
|
|
64
|
+
export { DEFAULTS, ENV_KEYS, HTTP_HEADERS, MIME_TYPES };
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Database Configuration
|
|
3
|
+
* Database connections and pooling settings
|
|
4
|
+
* Sealed namespace for immutability
|
|
5
|
+
*/
|
|
6
|
+
type SqliteConnectionConfig = {
|
|
7
|
+
driver: 'sqlite';
|
|
8
|
+
database: string;
|
|
9
|
+
migrations: string;
|
|
10
|
+
};
|
|
11
|
+
type PostgresqlConnectionConfig = {
|
|
12
|
+
driver: 'postgresql';
|
|
13
|
+
host: string;
|
|
14
|
+
port: number;
|
|
15
|
+
database: string;
|
|
16
|
+
username: string;
|
|
17
|
+
password: string;
|
|
18
|
+
ssl: boolean;
|
|
19
|
+
pooling: {
|
|
20
|
+
enabled: boolean;
|
|
21
|
+
min: number;
|
|
22
|
+
max: number;
|
|
23
|
+
idleTimeout: number;
|
|
24
|
+
connectionTimeout: number;
|
|
25
|
+
};
|
|
26
|
+
};
|
|
27
|
+
type MysqlConnectionConfig = {
|
|
28
|
+
driver: 'mysql';
|
|
29
|
+
host: string;
|
|
30
|
+
port: number;
|
|
31
|
+
database: string;
|
|
32
|
+
username: string;
|
|
33
|
+
password: string;
|
|
34
|
+
pooling: {
|
|
35
|
+
enabled: boolean;
|
|
36
|
+
min: number;
|
|
37
|
+
max: number;
|
|
38
|
+
};
|
|
39
|
+
};
|
|
40
|
+
type DatabaseConnections = {
|
|
41
|
+
sqlite: SqliteConnectionConfig;
|
|
42
|
+
postgresql: PostgresqlConnectionConfig;
|
|
43
|
+
mysql: MysqlConnectionConfig;
|
|
44
|
+
};
|
|
45
|
+
type DatabaseConnectionName = keyof DatabaseConnections;
|
|
46
|
+
type DatabaseConnectionConfig = DatabaseConnections[DatabaseConnectionName];
|
|
47
|
+
type DatabaseConfigShape = {
|
|
48
|
+
default: DatabaseConnectionName;
|
|
49
|
+
connections: DatabaseConnections;
|
|
50
|
+
};
|
|
51
|
+
export declare const databaseConfig: Readonly<{
|
|
52
|
+
/**
|
|
53
|
+
* Default database connection
|
|
54
|
+
*/
|
|
55
|
+
default: keyof DatabaseConnections;
|
|
56
|
+
/**
|
|
57
|
+
* Database connections
|
|
58
|
+
*/
|
|
59
|
+
connections: {
|
|
60
|
+
sqlite: {
|
|
61
|
+
driver: "sqlite";
|
|
62
|
+
database: string;
|
|
63
|
+
migrations: string;
|
|
64
|
+
};
|
|
65
|
+
postgresql: {
|
|
66
|
+
driver: "postgresql";
|
|
67
|
+
host: string;
|
|
68
|
+
port: number;
|
|
69
|
+
database: string;
|
|
70
|
+
username: string;
|
|
71
|
+
password: string;
|
|
72
|
+
ssl: boolean;
|
|
73
|
+
pooling: {
|
|
74
|
+
enabled: boolean;
|
|
75
|
+
min: number;
|
|
76
|
+
max: number;
|
|
77
|
+
idleTimeout: number;
|
|
78
|
+
connectionTimeout: number;
|
|
79
|
+
};
|
|
80
|
+
};
|
|
81
|
+
mysql: {
|
|
82
|
+
driver: "mysql";
|
|
83
|
+
host: string;
|
|
84
|
+
port: number;
|
|
85
|
+
database: string;
|
|
86
|
+
username: string;
|
|
87
|
+
password: string;
|
|
88
|
+
pooling: {
|
|
89
|
+
enabled: boolean;
|
|
90
|
+
min: number;
|
|
91
|
+
max: number;
|
|
92
|
+
};
|
|
93
|
+
};
|
|
94
|
+
};
|
|
95
|
+
/**
|
|
96
|
+
* Get current connection config
|
|
97
|
+
*/
|
|
98
|
+
getConnection(this: DatabaseConfigShape): DatabaseConnectionConfig;
|
|
99
|
+
/**
|
|
100
|
+
* Enable query logging
|
|
101
|
+
*/
|
|
102
|
+
logging: {
|
|
103
|
+
enabled: boolean;
|
|
104
|
+
level: string;
|
|
105
|
+
};
|
|
106
|
+
/**
|
|
107
|
+
* Migration settings
|
|
108
|
+
*/
|
|
109
|
+
migrations: {
|
|
110
|
+
directory: string;
|
|
111
|
+
extension: string;
|
|
112
|
+
};
|
|
113
|
+
/**
|
|
114
|
+
* Seeding settings
|
|
115
|
+
*/
|
|
116
|
+
seeders: {
|
|
117
|
+
directory: string;
|
|
118
|
+
};
|
|
119
|
+
}>;
|
|
120
|
+
export type DatabaseConfig = typeof databaseConfig;
|
|
121
|
+
export {};
|
|
122
|
+
//# sourceMappingURL=database.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"database.d.ts","sourceRoot":"","sources":["../../../src/config/database.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,KAAK,sBAAsB,GAAG;IAC5B,MAAM,EAAE,QAAQ,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,KAAK,0BAA0B,GAAG;IAChC,MAAM,EAAE,YAAY,CAAC;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,GAAG,EAAE,OAAO,CAAC;IACb,OAAO,EAAE;QACP,OAAO,EAAE,OAAO,CAAC;QACjB,GAAG,EAAE,MAAM,CAAC;QACZ,GAAG,EAAE,MAAM,CAAC;QACZ,WAAW,EAAE,MAAM,CAAC;QACpB,iBAAiB,EAAE,MAAM,CAAC;KAC3B,CAAC;CACH,CAAC;AAEF,KAAK,qBAAqB,GAAG;IAC3B,MAAM,EAAE,OAAO,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE;QACP,OAAO,EAAE,OAAO,CAAC;QACjB,GAAG,EAAE,MAAM,CAAC;QACZ,GAAG,EAAE,MAAM,CAAC;KACb,CAAC;CACH,CAAC;AAEF,KAAK,mBAAmB,GAAG;IACzB,MAAM,EAAE,sBAAsB,CAAC;IAC/B,UAAU,EAAE,0BAA0B,CAAC;IACvC,KAAK,EAAE,qBAAqB,CAAC;CAC9B,CAAC;AAEF,KAAK,sBAAsB,GAAG,MAAM,mBAAmB,CAAC;AACxD,KAAK,wBAAwB,GAAG,mBAAmB,CAAC,sBAAsB,CAAC,CAAC;AAE5E,KAAK,mBAAmB,GAAG;IACzB,OAAO,EAAE,sBAAsB,CAAC;IAChC,WAAW,EAAE,mBAAmB,CAAC;CAClC,CAAC;AA6FF,eAAO,MAAM,cAAc;IA5EzB;;OAEG;;IAGH;;OAEG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAsCH;;OAEG;wBACiB,mBAAmB,GAAG,wBAAwB;IAIlE;;OAEG;;;;;IAMH;;OAEG;;;;;IAMH;;OAEG;;;;EAMyD,CAAC;AAC/D,MAAM,MAAM,cAAc,GAAG,OAAO,cAAc,CAAC"}
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Database Configuration
|
|
3
|
+
* Database connections and pooling settings
|
|
4
|
+
* Sealed namespace for immutability
|
|
5
|
+
*/
|
|
6
|
+
import { Env } from './env';
|
|
7
|
+
const isDatabaseConnectionName = (value) => {
|
|
8
|
+
return value === 'sqlite' || value === 'postgresql' || value === 'mysql';
|
|
9
|
+
};
|
|
10
|
+
const getDefaultConnection = () => {
|
|
11
|
+
const value = Env.DB_CONNECTION;
|
|
12
|
+
return isDatabaseConnectionName(value) ? value : 'sqlite';
|
|
13
|
+
};
|
|
14
|
+
const getDatabaseConnection = (config) => {
|
|
15
|
+
const connName = config.default;
|
|
16
|
+
return config.connections[connName];
|
|
17
|
+
};
|
|
18
|
+
const databaseConfigObj = {
|
|
19
|
+
/**
|
|
20
|
+
* Default database connection
|
|
21
|
+
*/
|
|
22
|
+
default: getDefaultConnection(),
|
|
23
|
+
/**
|
|
24
|
+
* Database connections
|
|
25
|
+
*/
|
|
26
|
+
connections: {
|
|
27
|
+
sqlite: {
|
|
28
|
+
driver: 'sqlite',
|
|
29
|
+
database: Env.DB_DATABASE,
|
|
30
|
+
migrations: 'database/migrations',
|
|
31
|
+
},
|
|
32
|
+
postgresql: {
|
|
33
|
+
driver: 'postgresql',
|
|
34
|
+
host: Env.DB_HOST,
|
|
35
|
+
port: Env.DB_PORT,
|
|
36
|
+
database: Env.DB_DATABASE,
|
|
37
|
+
username: Env.DB_USERNAME,
|
|
38
|
+
password: Env.DB_PASSWORD,
|
|
39
|
+
ssl: Env.getBool('DB_SSL', false),
|
|
40
|
+
pooling: {
|
|
41
|
+
enabled: Env.getBool('DB_POOLING', true),
|
|
42
|
+
min: Env.getInt('DB_POOL_MIN', 5),
|
|
43
|
+
max: Env.getInt('DB_POOL_MAX', 20),
|
|
44
|
+
idleTimeout: Env.getInt('DB_IDLE_TIMEOUT', 30000),
|
|
45
|
+
connectionTimeout: Env.getInt('DB_CONNECTION_TIMEOUT', 10000),
|
|
46
|
+
},
|
|
47
|
+
},
|
|
48
|
+
mysql: {
|
|
49
|
+
driver: 'mysql',
|
|
50
|
+
host: Env.DB_HOST,
|
|
51
|
+
port: Env.DB_PORT,
|
|
52
|
+
database: Env.DB_DATABASE,
|
|
53
|
+
username: Env.DB_USERNAME,
|
|
54
|
+
password: Env.DB_PASSWORD,
|
|
55
|
+
pooling: {
|
|
56
|
+
enabled: Env.getBool('DB_POOLING', true),
|
|
57
|
+
min: Env.getInt('DB_POOL_MIN', 5),
|
|
58
|
+
max: Env.getInt('DB_POOL_MAX', 20),
|
|
59
|
+
},
|
|
60
|
+
},
|
|
61
|
+
},
|
|
62
|
+
/**
|
|
63
|
+
* Get current connection config
|
|
64
|
+
*/
|
|
65
|
+
getConnection() {
|
|
66
|
+
return getDatabaseConnection(this);
|
|
67
|
+
},
|
|
68
|
+
/**
|
|
69
|
+
* Enable query logging
|
|
70
|
+
*/
|
|
71
|
+
logging: {
|
|
72
|
+
enabled: Env.DEBUG,
|
|
73
|
+
level: Env.get('DB_LOG_LEVEL', 'debug'),
|
|
74
|
+
},
|
|
75
|
+
/**
|
|
76
|
+
* Migration settings
|
|
77
|
+
*/
|
|
78
|
+
migrations: {
|
|
79
|
+
directory: 'database/migrations',
|
|
80
|
+
extension: Env.get('DB_MIGRATION_EXT', '.ts'),
|
|
81
|
+
},
|
|
82
|
+
/**
|
|
83
|
+
* Seeding settings
|
|
84
|
+
*/
|
|
85
|
+
seeders: {
|
|
86
|
+
directory: 'database/seeders',
|
|
87
|
+
},
|
|
88
|
+
};
|
|
89
|
+
export const databaseConfig = Object.freeze(databaseConfigObj);
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Environment Configuration
|
|
3
|
+
* Type-safe access to environment variables
|
|
4
|
+
*
|
|
5
|
+
* Sealed namespace pattern - all exports through Env namespace
|
|
6
|
+
* Safe for both Node.js and serverless runtimes (Cloudflare Workers, Deno, Lambda)
|
|
7
|
+
*/
|
|
8
|
+
export declare const Env: Readonly<{
|
|
9
|
+
get: (key: string, defaultValue?: string) => string;
|
|
10
|
+
getInt: (key: string, defaultValue?: number) => number;
|
|
11
|
+
getBool: (key: string, defaultValue?: boolean) => boolean;
|
|
12
|
+
NODE_ENV: string;
|
|
13
|
+
PORT: number;
|
|
14
|
+
HOST: string;
|
|
15
|
+
APP_NAME: string;
|
|
16
|
+
APP_KEY: string;
|
|
17
|
+
DB_CONNECTION: string;
|
|
18
|
+
DB_HOST: string;
|
|
19
|
+
DB_PORT: number;
|
|
20
|
+
DB_DATABASE: string;
|
|
21
|
+
DB_USERNAME: string;
|
|
22
|
+
DB_PASSWORD: string;
|
|
23
|
+
DB_READ_HOSTS: string;
|
|
24
|
+
D1_DATABASE_ID: string;
|
|
25
|
+
KV_NAMESPACE_ID: string;
|
|
26
|
+
CACHE_DRIVER: string;
|
|
27
|
+
REDIS_HOST: string;
|
|
28
|
+
REDIS_PORT: number;
|
|
29
|
+
REDIS_PASSWORD: string;
|
|
30
|
+
MONGO_URI: string;
|
|
31
|
+
MONGO_DB: string;
|
|
32
|
+
AWS_REGION: string;
|
|
33
|
+
AWS_LAMBDA_FUNCTION_NAME: string;
|
|
34
|
+
AWS_LAMBDA_FUNCTION_VERSION: string;
|
|
35
|
+
AWS_EXECUTION_ENV: string;
|
|
36
|
+
LAMBDA_TASK_ROOT: string;
|
|
37
|
+
MICROSERVICES: string;
|
|
38
|
+
SERVICES: string;
|
|
39
|
+
MICROSERVICES_TRACING: boolean;
|
|
40
|
+
MICROSERVICES_TRACING_RATE: number;
|
|
41
|
+
DATABASE_ISOLATION: string;
|
|
42
|
+
SERVICE_API_KEY: string;
|
|
43
|
+
SERVICE_JWT_SECRET: string;
|
|
44
|
+
DEBUG: boolean;
|
|
45
|
+
ENABLE_MICROSERVICES: boolean;
|
|
46
|
+
TOKEN_TTL: number;
|
|
47
|
+
TOKEN_LENGTH: number;
|
|
48
|
+
ENVIRONMENT: string;
|
|
49
|
+
REQUEST_TIMEOUT: number;
|
|
50
|
+
MAX_BODY_SIZE: number;
|
|
51
|
+
LOG_LEVEL: "debug" | "info" | "warn" | "error";
|
|
52
|
+
DISABLE_LOGGING: boolean;
|
|
53
|
+
NODE_BIN_DIR: string;
|
|
54
|
+
SAFE_PATH: string;
|
|
55
|
+
}>;
|
|
56
|
+
//# sourceMappingURL=env.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"env.d.ts","sourceRoot":"","sources":["../../../src/config/env.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAkDH,eAAO,MAAM,GAAG;eA9BE,MAAM,iBAAiB,MAAM,KAAG,MAAM;kBAMnC,MAAM,iBAAiB,MAAM,KAAG,MAAM;mBAQrC,MAAM,iBAAiB,OAAO,KAAG,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;eA8EP,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO;;;;EA6BxF,CAAC"}
|
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Environment Configuration
|
|
3
|
+
* Type-safe access to environment variables
|
|
4
|
+
*
|
|
5
|
+
* Sealed namespace pattern - all exports through Env namespace
|
|
6
|
+
* Safe for both Node.js and serverless runtimes (Cloudflare Workers, Deno, Lambda)
|
|
7
|
+
*/
|
|
8
|
+
const getProcessLike = () => {
|
|
9
|
+
return typeof process === 'undefined' ? undefined : process;
|
|
10
|
+
};
|
|
11
|
+
const dirnameFromExecPath = (execPath, platform) => {
|
|
12
|
+
const separator = platform === 'win32' ? '\\' : '/';
|
|
13
|
+
const lastSep = execPath.lastIndexOf(separator);
|
|
14
|
+
if (lastSep <= 0)
|
|
15
|
+
return '';
|
|
16
|
+
return execPath.slice(0, lastSep);
|
|
17
|
+
};
|
|
18
|
+
// Private helper functions
|
|
19
|
+
const get = (key, defaultValue) => {
|
|
20
|
+
const proc = getProcessLike();
|
|
21
|
+
const env = proc?.env ?? {};
|
|
22
|
+
return env[key] ?? defaultValue ?? '';
|
|
23
|
+
};
|
|
24
|
+
const getInt = (key, defaultValue) => {
|
|
25
|
+
const proc = getProcessLike();
|
|
26
|
+
const env = proc?.env ?? {};
|
|
27
|
+
const value = env[key];
|
|
28
|
+
if (value === undefined || value === null)
|
|
29
|
+
return defaultValue ?? 0;
|
|
30
|
+
return Number.parseInt(value, 10);
|
|
31
|
+
};
|
|
32
|
+
const getBool = (key, defaultValue) => {
|
|
33
|
+
const proc = getProcessLike();
|
|
34
|
+
const env = proc?.env ?? {};
|
|
35
|
+
const value = env[key];
|
|
36
|
+
if (value === undefined || value === null)
|
|
37
|
+
return defaultValue ?? false;
|
|
38
|
+
return value.toLowerCase() === 'true' || value === '1';
|
|
39
|
+
};
|
|
40
|
+
const getDefaultLogLevel = () => {
|
|
41
|
+
const NODE_ENV_VALUE = get('NODE_ENV', 'development');
|
|
42
|
+
if (NODE_ENV_VALUE === 'production')
|
|
43
|
+
return 'info';
|
|
44
|
+
if (NODE_ENV_VALUE === 'testing')
|
|
45
|
+
return 'error';
|
|
46
|
+
return 'debug';
|
|
47
|
+
};
|
|
48
|
+
// Sealed namespace with all environment configuration
|
|
49
|
+
export const Env = Object.freeze({
|
|
50
|
+
// Helper functions
|
|
51
|
+
get,
|
|
52
|
+
getInt,
|
|
53
|
+
getBool,
|
|
54
|
+
// Core
|
|
55
|
+
NODE_ENV: get('NODE_ENV', 'development'),
|
|
56
|
+
PORT: getInt('APP_PORT', 3000),
|
|
57
|
+
HOST: get('HOST', 'localhost'),
|
|
58
|
+
APP_NAME: get('APP_NAME', 'ZinTrust'),
|
|
59
|
+
APP_KEY: get('APP_KEY', ''),
|
|
60
|
+
// Database
|
|
61
|
+
DB_CONNECTION: get('DB_CONNECTION', 'sqlite'),
|
|
62
|
+
DB_HOST: get('DB_HOST', 'localhost'),
|
|
63
|
+
DB_PORT: getInt('DB_PORT', 5432),
|
|
64
|
+
DB_DATABASE: get('DB_DATABASE', 'zintrust'),
|
|
65
|
+
DB_USERNAME: get('DB_USERNAME', 'postgres'),
|
|
66
|
+
DB_PASSWORD: get('DB_PASSWORD', ''),
|
|
67
|
+
DB_READ_HOSTS: get('DB_READ_HOSTS', ''),
|
|
68
|
+
// Cloudflare
|
|
69
|
+
D1_DATABASE_ID: get('D1_DATABASE_ID'),
|
|
70
|
+
KV_NAMESPACE_ID: get('KV_NAMESPACE_ID'),
|
|
71
|
+
// Cache
|
|
72
|
+
CACHE_DRIVER: get('CACHE_DRIVER', 'memory'),
|
|
73
|
+
REDIS_HOST: get('REDIS_HOST', 'localhost'),
|
|
74
|
+
REDIS_PORT: getInt('REDIS_PORT', 6379),
|
|
75
|
+
REDIS_PASSWORD: get('REDIS_PASSWORD', ''),
|
|
76
|
+
MONGO_URI: get('MONGO_URI'),
|
|
77
|
+
MONGO_DB: get('MONGO_DB', 'zintrust_cache'),
|
|
78
|
+
// AWS
|
|
79
|
+
AWS_REGION: get('AWS_REGION', 'us-east-1'),
|
|
80
|
+
AWS_LAMBDA_FUNCTION_NAME: get('AWS_LAMBDA_FUNCTION_NAME'),
|
|
81
|
+
AWS_LAMBDA_FUNCTION_VERSION: get('AWS_LAMBDA_FUNCTION_VERSION'),
|
|
82
|
+
AWS_EXECUTION_ENV: get('AWS_EXECUTION_ENV'),
|
|
83
|
+
LAMBDA_TASK_ROOT: get('LAMBDA_TASK_ROOT'),
|
|
84
|
+
// Microservices
|
|
85
|
+
MICROSERVICES: get('MICROSERVICES'),
|
|
86
|
+
SERVICES: get('SERVICES'),
|
|
87
|
+
MICROSERVICES_TRACING: getBool('MICROSERVICES_TRACING'),
|
|
88
|
+
MICROSERVICES_TRACING_RATE: Number.parseFloat(get('MICROSERVICES_TRACING_RATE', '1.0')),
|
|
89
|
+
DATABASE_ISOLATION: get('DATABASE_ISOLATION', 'shared'),
|
|
90
|
+
SERVICE_API_KEY: get('SERVICE_API_KEY'),
|
|
91
|
+
SERVICE_JWT_SECRET: get('SERVICE_JWT_SECRET'),
|
|
92
|
+
// Security
|
|
93
|
+
DEBUG: getBool('DEBUG', false),
|
|
94
|
+
ENABLE_MICROSERVICES: getBool('ENABLE_MICROSERVICES', false),
|
|
95
|
+
TOKEN_TTL: getInt('TOKEN_TTL', 3600000),
|
|
96
|
+
TOKEN_LENGTH: getInt('TOKEN_LENGTH', 32),
|
|
97
|
+
// Deployment
|
|
98
|
+
ENVIRONMENT: get('ENVIRONMENT', 'development'),
|
|
99
|
+
REQUEST_TIMEOUT: getInt('REQUEST_TIMEOUT', 30000),
|
|
100
|
+
MAX_BODY_SIZE: getInt('MAX_BODY_SIZE', 10485760),
|
|
101
|
+
// Logging
|
|
102
|
+
LOG_LEVEL: get('LOG_LEVEL', getDefaultLogLevel()),
|
|
103
|
+
DISABLE_LOGGING: getBool('DISABLE_LOGGING', false),
|
|
104
|
+
// Paths (safely constructed for Node.js environments)
|
|
105
|
+
NODE_BIN_DIR: (() => {
|
|
106
|
+
try {
|
|
107
|
+
const proc = getProcessLike();
|
|
108
|
+
if (proc?.execPath === null || proc?.execPath === undefined)
|
|
109
|
+
return '';
|
|
110
|
+
return dirnameFromExecPath(proc.execPath, proc.platform);
|
|
111
|
+
}
|
|
112
|
+
catch {
|
|
113
|
+
// Fallback for non-Node environments
|
|
114
|
+
return '';
|
|
115
|
+
}
|
|
116
|
+
})(),
|
|
117
|
+
SAFE_PATH: (() => {
|
|
118
|
+
try {
|
|
119
|
+
const proc = getProcessLike();
|
|
120
|
+
if (proc?.execPath === null || proc?.execPath === undefined)
|
|
121
|
+
return '';
|
|
122
|
+
const binDir = dirnameFromExecPath(proc.execPath, proc.platform);
|
|
123
|
+
if (proc.platform === 'win32') {
|
|
124
|
+
return [String.raw `C:\Windows\System32`, String.raw `C:\Windows`, binDir].join(';');
|
|
125
|
+
}
|
|
126
|
+
return ['/usr/bin', '/bin', '/usr/sbin', '/sbin', binDir].join(':');
|
|
127
|
+
}
|
|
128
|
+
catch {
|
|
129
|
+
// Fallback for non-Node environments
|
|
130
|
+
return '';
|
|
131
|
+
}
|
|
132
|
+
})(),
|
|
133
|
+
});
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Feature Flags - Controls access to advanced/experimental features
|
|
3
|
+
* Sealed namespace for immutability
|
|
4
|
+
*/
|
|
5
|
+
export declare const FeatureFlags: Readonly<{
|
|
6
|
+
/**
|
|
7
|
+
* Initialize all feature flags from environment
|
|
8
|
+
* Called once during application bootstrap
|
|
9
|
+
*/
|
|
10
|
+
initialize(): void;
|
|
11
|
+
/**
|
|
12
|
+
* Check if raw queries are enabled
|
|
13
|
+
* Returns cached flag value (no environment lookup)
|
|
14
|
+
*/
|
|
15
|
+
isRawQueryEnabled(): boolean;
|
|
16
|
+
/**
|
|
17
|
+
* Reset flags (primarily for testing)
|
|
18
|
+
*/
|
|
19
|
+
reset(): void;
|
|
20
|
+
/**
|
|
21
|
+
* Set raw query enabled state
|
|
22
|
+
* Primarily for testing to avoid 'as any' type casting
|
|
23
|
+
*/
|
|
24
|
+
setRawQueryEnabled(enabled: boolean): void;
|
|
25
|
+
}>;
|
|
26
|
+
export default FeatureFlags;
|
|
27
|
+
//# sourceMappingURL=features.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"features.d.ts","sourceRoot":"","sources":["../../../src/config/features.ts"],"names":[],"mappings":"AASA;;;GAGG;AACH,eAAO,MAAM,YAAY;IACvB;;;OAGG;kBACW,IAAI;IAclB;;;OAGG;yBACkB,OAAO;IAI5B;;OAEG;aACM,IAAI;IAIb;;;OAGG;gCACyB,OAAO,GAAG,IAAI;EAG1C,CAAC;AAEH,eAAe,YAAY,CAAC"}
|