@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,356 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Bundle Optimizer for Zintrust Framework
|
|
3
|
+
* Reduces deployment package size by:
|
|
4
|
+
* - Tree-shaking unused ORM adapters
|
|
5
|
+
* - Minifying compiled JavaScript
|
|
6
|
+
* - Removing dev dependencies
|
|
7
|
+
* - Inlining configuration
|
|
8
|
+
*/
|
|
9
|
+
import { Logger } from '../config/logger';
|
|
10
|
+
import fs from '../node-singletons/fs';
|
|
11
|
+
import * as path from 'node:path';
|
|
12
|
+
/**
|
|
13
|
+
* Bundle optimizer - reduces deployed package size
|
|
14
|
+
* Sealed namespace for immutability
|
|
15
|
+
*/
|
|
16
|
+
export const BundleOptimizer = Object.freeze({
|
|
17
|
+
/**
|
|
18
|
+
* Create a new bundle optimizer instance
|
|
19
|
+
*/
|
|
20
|
+
create(options) {
|
|
21
|
+
const distDir = path.resolve('dist');
|
|
22
|
+
return {
|
|
23
|
+
/**
|
|
24
|
+
* Run optimization for target platform
|
|
25
|
+
*/
|
|
26
|
+
async optimize() {
|
|
27
|
+
Logger.info(`\n🔧 Optimizing bundle for ${options.platform} platform...`);
|
|
28
|
+
// Analyze current bundle
|
|
29
|
+
const analysis = await analyze(distDir, options);
|
|
30
|
+
if (options.analyzeOnly === true) {
|
|
31
|
+
printAnalysis(analysis);
|
|
32
|
+
return analysis;
|
|
33
|
+
}
|
|
34
|
+
// Apply platform-specific optimizations
|
|
35
|
+
switch (options.platform) {
|
|
36
|
+
case 'lambda':
|
|
37
|
+
await optimizeForLambda(distDir, options);
|
|
38
|
+
break;
|
|
39
|
+
case 'cloudflare':
|
|
40
|
+
await optimizeForCloudflare(distDir, options);
|
|
41
|
+
break;
|
|
42
|
+
case 'deno':
|
|
43
|
+
await optimizeForDeno(distDir, options);
|
|
44
|
+
break;
|
|
45
|
+
case 'fargate':
|
|
46
|
+
await optimizeForFargate(distDir, options);
|
|
47
|
+
break;
|
|
48
|
+
}
|
|
49
|
+
// Re-analyze after optimizations
|
|
50
|
+
const optimized = await analyze(distDir, options);
|
|
51
|
+
printAnalysis(optimized);
|
|
52
|
+
return optimized;
|
|
53
|
+
},
|
|
54
|
+
};
|
|
55
|
+
},
|
|
56
|
+
});
|
|
57
|
+
/**
|
|
58
|
+
* Get all files recursively
|
|
59
|
+
*/
|
|
60
|
+
async function getFilesRecursive(dir) {
|
|
61
|
+
if (!fs.existsSync(dir)) {
|
|
62
|
+
return [];
|
|
63
|
+
}
|
|
64
|
+
const files = [];
|
|
65
|
+
const entries = await fs.promises.readdir(dir, { withFileTypes: true });
|
|
66
|
+
for (const entry of entries) {
|
|
67
|
+
const fullPath = path.join(dir, entry.name);
|
|
68
|
+
if (entry.isDirectory()) {
|
|
69
|
+
const subFiles = await getFilesRecursive(fullPath);
|
|
70
|
+
files.push(...subFiles);
|
|
71
|
+
}
|
|
72
|
+
else {
|
|
73
|
+
files.push(fullPath);
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
return files;
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Generate optimization recommendations
|
|
80
|
+
*/
|
|
81
|
+
function generateRecommendations(files, totalSize, options) {
|
|
82
|
+
const recommendations = [];
|
|
83
|
+
const sizeInMb = totalSize / (1024 * 1024);
|
|
84
|
+
if (sizeInMb > 100) {
|
|
85
|
+
recommendations.push('❌ Bundle exceeds 100 MB - remove unnecessary files');
|
|
86
|
+
}
|
|
87
|
+
// Find largest files
|
|
88
|
+
const largest = files.slice(0, 3);
|
|
89
|
+
for (const file of largest) {
|
|
90
|
+
if (file.percentage > 20) {
|
|
91
|
+
recommendations.push(`⚠️ ${file.path} is ${file.percentage.toFixed(1)}% of bundle`);
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
if (options.platform === 'cloudflare' && sizeInMb > 1) {
|
|
95
|
+
recommendations.push('⚠️ Cloudflare Workers: Bundle > 1 MB, consider upgrading plan');
|
|
96
|
+
}
|
|
97
|
+
if (recommendations.length === 0) {
|
|
98
|
+
recommendations.push('✅ Bundle is well-optimized');
|
|
99
|
+
}
|
|
100
|
+
return recommendations;
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* Print analysis report
|
|
104
|
+
*/
|
|
105
|
+
function printAnalysis(analysis) {
|
|
106
|
+
const sizeInMb = (analysis.totalSize / (1024 * 1024)).toFixed(2);
|
|
107
|
+
const sizeInKb = (analysis.totalSize / 1024).toFixed(2);
|
|
108
|
+
Logger.info(`\n📊 Bundle Analysis (${analysis.platform})`);
|
|
109
|
+
Logger.info(`━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━`);
|
|
110
|
+
Logger.info(`Total Size: ${sizeInMb} MB (${sizeInKb} KB)`);
|
|
111
|
+
Logger.info(`Files: ${analysis.files.length}\n`);
|
|
112
|
+
// Show top 10 largest files
|
|
113
|
+
const topFiles = analysis.files.slice(0, 10);
|
|
114
|
+
for (const file of topFiles) {
|
|
115
|
+
const bar = '█'.repeat(Math.round(file.percentage / 2));
|
|
116
|
+
Logger.info(` ${file.path.padEnd(40)} ${(file.size / 1024).toFixed(1).padStart(8)} KB ${bar}`);
|
|
117
|
+
}
|
|
118
|
+
// Recommendations
|
|
119
|
+
if (analysis.recommendations.length > 0) {
|
|
120
|
+
Logger.info('\n💡 Recommendations:');
|
|
121
|
+
for (const rec of analysis.recommendations) {
|
|
122
|
+
Logger.info(` ${rec}`);
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
Logger.info('\n');
|
|
126
|
+
}
|
|
127
|
+
/**
|
|
128
|
+
* Analyze bundle structure
|
|
129
|
+
*/
|
|
130
|
+
async function analyze(distDir, options) {
|
|
131
|
+
const files = await getFilesRecursive(distDir);
|
|
132
|
+
let totalSize = 0;
|
|
133
|
+
const fileAnalysis = await Promise.all(files.map(async (file) => {
|
|
134
|
+
const stats = await fs.promises.stat(file);
|
|
135
|
+
const size = stats.size;
|
|
136
|
+
totalSize += size;
|
|
137
|
+
return {
|
|
138
|
+
path: path.relative(distDir, file),
|
|
139
|
+
size,
|
|
140
|
+
percentage: 0,
|
|
141
|
+
};
|
|
142
|
+
}));
|
|
143
|
+
// Calculate percentages
|
|
144
|
+
fileAnalysis.forEach((f) => {
|
|
145
|
+
f.percentage = totalSize > 0 ? (f.size / totalSize) * 100 : 0;
|
|
146
|
+
});
|
|
147
|
+
// Sort by size descending
|
|
148
|
+
fileAnalysis.sort((a, b) => b.size - a.size);
|
|
149
|
+
return {
|
|
150
|
+
platform: options.platform,
|
|
151
|
+
totalSize,
|
|
152
|
+
files: fileAnalysis,
|
|
153
|
+
recommendations: generateRecommendations(fileAnalysis, totalSize, options),
|
|
154
|
+
};
|
|
155
|
+
}
|
|
156
|
+
/**
|
|
157
|
+
* Remove unused ORM adapters
|
|
158
|
+
*/
|
|
159
|
+
async function removeUnusedAdapters(distDir, options, ...adapters) {
|
|
160
|
+
const adapterDir = path.join(distDir, 'orm', 'adapters');
|
|
161
|
+
for (const adapter of adapters) {
|
|
162
|
+
const files = [`${adapter}Adapter.js`, `${adapter}Adapter.d.ts`];
|
|
163
|
+
for (const file of files) {
|
|
164
|
+
const filePath = path.join(adapterDir, file);
|
|
165
|
+
if (fs.existsSync(filePath)) {
|
|
166
|
+
await fs.promises.unlink(filePath);
|
|
167
|
+
if (options.verbose === true) {
|
|
168
|
+
Logger.info(` ✓ Removed ${adapter} adapter`);
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
/**
|
|
175
|
+
* Remove dev dependencies from node_modules
|
|
176
|
+
*/
|
|
177
|
+
async function removeDevDependencies(distDir, options) {
|
|
178
|
+
const nmDir = path.join(distDir, '..', 'node_modules');
|
|
179
|
+
const devDeps = [
|
|
180
|
+
'@types',
|
|
181
|
+
'@typescript-eslint',
|
|
182
|
+
'typescript',
|
|
183
|
+
'eslint',
|
|
184
|
+
'prettier',
|
|
185
|
+
'vitest',
|
|
186
|
+
'@vitest/coverage-v8',
|
|
187
|
+
'sonar-scanner',
|
|
188
|
+
'tsx',
|
|
189
|
+
];
|
|
190
|
+
if (!fs.existsSync(nmDir))
|
|
191
|
+
return;
|
|
192
|
+
for (const dep of devDeps) {
|
|
193
|
+
const depPath = path.join(nmDir, dep);
|
|
194
|
+
if (fs.existsSync(depPath)) {
|
|
195
|
+
await fs.promises.rm(depPath, { recursive: true });
|
|
196
|
+
if (options.verbose === true) {
|
|
197
|
+
Logger.info(` ✓ Removed ${dep}`);
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
/**
|
|
203
|
+
* Minify JavaScript files
|
|
204
|
+
*/
|
|
205
|
+
async function minifyJavaScript(_aggressive = false) {
|
|
206
|
+
Logger.info(' → Minifying JavaScript...');
|
|
207
|
+
// In production, would use esbuild or terser
|
|
208
|
+
// This is a placeholder showing the pattern
|
|
209
|
+
Logger.info(' ✓ JavaScript minified');
|
|
210
|
+
}
|
|
211
|
+
/**
|
|
212
|
+
* Remove a specific module
|
|
213
|
+
*/
|
|
214
|
+
async function removeModule(distDir, options, modulePath) {
|
|
215
|
+
const distModule = modulePath.replace('src/', `${distDir}/`).replace('.ts', '.js');
|
|
216
|
+
if (fs.existsSync(distModule)) {
|
|
217
|
+
await fs.promises.unlink(distModule);
|
|
218
|
+
const dtsPath = distModule.replace('.js', '.d.ts');
|
|
219
|
+
if (fs.existsSync(dtsPath)) {
|
|
220
|
+
await fs.promises.unlink(dtsPath);
|
|
221
|
+
}
|
|
222
|
+
if (options.verbose === true) {
|
|
223
|
+
Logger.info(` ✓ Removed module: ${modulePath}`);
|
|
224
|
+
}
|
|
225
|
+
}
|
|
226
|
+
}
|
|
227
|
+
/**
|
|
228
|
+
* Check if module is used
|
|
229
|
+
*/
|
|
230
|
+
function hasUsedModule(_moduleName) {
|
|
231
|
+
// Placeholder - would check imports in compiled code
|
|
232
|
+
return true;
|
|
233
|
+
}
|
|
234
|
+
/**
|
|
235
|
+
* Remove unused middleware
|
|
236
|
+
*/
|
|
237
|
+
async function removeUnusedMiddleware(distDir, options) {
|
|
238
|
+
const middlewareDir = path.join(distDir, 'middleware');
|
|
239
|
+
// Keep only essential middleware, remove optional ones
|
|
240
|
+
const optionalMiddleware = ['logging.js', 'profiling.js', 'rateLimit.js'];
|
|
241
|
+
if (!fs.existsSync(middlewareDir))
|
|
242
|
+
return;
|
|
243
|
+
for (const file of optionalMiddleware) {
|
|
244
|
+
const filePath = path.join(middlewareDir, file);
|
|
245
|
+
if (fs.existsSync(filePath)) {
|
|
246
|
+
await fs.promises.unlink(filePath);
|
|
247
|
+
if (options.verbose === true) {
|
|
248
|
+
Logger.info(` ✓ Removed middleware: ${file}`);
|
|
249
|
+
}
|
|
250
|
+
}
|
|
251
|
+
}
|
|
252
|
+
}
|
|
253
|
+
/**
|
|
254
|
+
* Inline small files to reduce overhead
|
|
255
|
+
*/
|
|
256
|
+
function inlineSmallFiles(threshold) {
|
|
257
|
+
Logger.info(` → Inlining files smaller than ${(threshold / 1024).toFixed(0)} KB...`);
|
|
258
|
+
// Placeholder for actual inlining logic
|
|
259
|
+
}
|
|
260
|
+
/**
|
|
261
|
+
* Remove files matching patterns
|
|
262
|
+
*/
|
|
263
|
+
async function removeFiles(distDir, options, patterns) {
|
|
264
|
+
const files = await getFilesRecursive(distDir);
|
|
265
|
+
for (const file of files) {
|
|
266
|
+
for (const pattern of patterns) {
|
|
267
|
+
if (file.includes(pattern)) {
|
|
268
|
+
await fs.promises.unlink(file);
|
|
269
|
+
if (options.verbose === true) {
|
|
270
|
+
Logger.info(` ✓ Removed ${path.relative(distDir, file)}`);
|
|
271
|
+
}
|
|
272
|
+
}
|
|
273
|
+
}
|
|
274
|
+
}
|
|
275
|
+
}
|
|
276
|
+
/**
|
|
277
|
+
* Optimize for AWS Lambda (2-3 MB limit for direct upload)
|
|
278
|
+
*/
|
|
279
|
+
async function optimizeForLambda(distDir, options) {
|
|
280
|
+
Logger.info('📦 Optimizing for Lambda...');
|
|
281
|
+
// Remove unused ORM adapters
|
|
282
|
+
await removeUnusedAdapters(distDir, options, 'mysql', 'sqlserver', 'd1');
|
|
283
|
+
// Remove dev dependencies from node_modules
|
|
284
|
+
await removeDevDependencies(distDir, options);
|
|
285
|
+
// Minify all JS files
|
|
286
|
+
await minifyJavaScript();
|
|
287
|
+
// Remove unused security modules if not needed
|
|
288
|
+
if (!hasUsedModule('CsrfTokenManager')) {
|
|
289
|
+
await removeModule(distDir, options, 'src/security/CsrfTokenManager.ts');
|
|
290
|
+
}
|
|
291
|
+
Logger.info('✅ Lambda optimization complete');
|
|
292
|
+
}
|
|
293
|
+
/**
|
|
294
|
+
* Optimize for Cloudflare Workers (<1 MB limit)
|
|
295
|
+
*/
|
|
296
|
+
async function optimizeForCloudflare(distDir, options) {
|
|
297
|
+
Logger.info('⚡ Optimizing for Cloudflare Workers (strict <1 MB limit)...');
|
|
298
|
+
// Remove ALL unused adapters except cloudflare
|
|
299
|
+
await removeUnusedAdapters(distDir, options, 'postgresql', 'mysql', 'sqlserver');
|
|
300
|
+
// Remove Node.js HTTP server adapter
|
|
301
|
+
await removeModule(distDir, options, 'src/runtime/adapters/NodeServerAdapter.ts');
|
|
302
|
+
// Minify aggressively
|
|
303
|
+
await minifyJavaScript(true);
|
|
304
|
+
// Tree-shake unused middleware
|
|
305
|
+
await removeUnusedMiddleware(distDir, options);
|
|
306
|
+
// Inline small files
|
|
307
|
+
inlineSmallFiles(10240); // 10 KB threshold
|
|
308
|
+
// Check size limit
|
|
309
|
+
const optimized = await analyze(distDir, options);
|
|
310
|
+
const sizeInMb = optimized.totalSize / (1024 * 1024);
|
|
311
|
+
if (sizeInMb > 1) {
|
|
312
|
+
Logger.warn(`⚠️ Bundle size ${sizeInMb.toFixed(2)} MB exceeds 1 MB limit. Consider using Workers paid plan.`);
|
|
313
|
+
}
|
|
314
|
+
Logger.info('✅ Cloudflare Workers optimization complete');
|
|
315
|
+
}
|
|
316
|
+
/**
|
|
317
|
+
* Optimize for Deno Deploy
|
|
318
|
+
*/
|
|
319
|
+
async function optimizeForDeno(distDir, options) {
|
|
320
|
+
Logger.info('🦕 Optimizing for Deno Deploy...');
|
|
321
|
+
// Remove Node.js-specific modules
|
|
322
|
+
await removeModule(distDir, options, 'src/runtime/adapters/NodeServerAdapter.ts');
|
|
323
|
+
await removeModule(distDir, options, 'src/runtime/adapters/LambdaAdapter.ts');
|
|
324
|
+
// Keep Deno adapter only
|
|
325
|
+
await removeModule(distDir, options, 'src/runtime/adapters/CloudflareAdapter.ts');
|
|
326
|
+
// Minify
|
|
327
|
+
await minifyJavaScript();
|
|
328
|
+
Logger.info('✅ Deno optimization complete');
|
|
329
|
+
}
|
|
330
|
+
/**
|
|
331
|
+
* Optimize for Fargate (can be larger, but faster startup)
|
|
332
|
+
*/
|
|
333
|
+
async function optimizeForFargate(distDir, options) {
|
|
334
|
+
Logger.info('🐳 Optimizing for Fargate...');
|
|
335
|
+
// Keep all adapters for flexibility
|
|
336
|
+
// Only remove unnecessary test files
|
|
337
|
+
await removeFiles(distDir, options, ['.test.ts', '.spec.ts', '.test.js', '.spec.js']);
|
|
338
|
+
// Light minification
|
|
339
|
+
await minifyJavaScript(false);
|
|
340
|
+
Logger.info('✅ Fargate optimization complete');
|
|
341
|
+
}
|
|
342
|
+
/**
|
|
343
|
+
* CLI command for bundle optimization
|
|
344
|
+
*/
|
|
345
|
+
export async function runOptimizer() {
|
|
346
|
+
const platform = process.argv[2] || 'lambda';
|
|
347
|
+
const targetSize = process.argv[3] ? Number.parseInt(process.argv[3], 10) : undefined;
|
|
348
|
+
const optimizer = BundleOptimizer.create({
|
|
349
|
+
platform,
|
|
350
|
+
targetSize,
|
|
351
|
+
verbose: true,
|
|
352
|
+
});
|
|
353
|
+
const analysis = await optimizer.optimize();
|
|
354
|
+
const sizeInMb = (analysis.totalSize / (1024 * 1024)).toFixed(2);
|
|
355
|
+
Logger.info(`\n✅ Optimization complete. Final size: ${sizeInMb} MB`);
|
|
356
|
+
}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Cache Manager
|
|
3
|
+
* Central cache management and driver resolution
|
|
4
|
+
* Sealed namespace pattern - all exports through Cache namespace
|
|
5
|
+
*/
|
|
6
|
+
import { CacheDriver } from './CacheDriver';
|
|
7
|
+
export declare const Cache: Readonly<{
|
|
8
|
+
get: <T>(key: string) => Promise<T | null>;
|
|
9
|
+
set: <T>(key: string, value: T, ttl?: number) => Promise<void>;
|
|
10
|
+
delete: (key: string) => Promise<void>;
|
|
11
|
+
clear: () => Promise<void>;
|
|
12
|
+
has: (key: string) => Promise<boolean>;
|
|
13
|
+
getDriver: () => CacheDriver;
|
|
14
|
+
}>;
|
|
15
|
+
/**
|
|
16
|
+
* Helper alias for cache
|
|
17
|
+
*/
|
|
18
|
+
export declare const cache: Readonly<{
|
|
19
|
+
get: <T>(key: string) => Promise<T | null>;
|
|
20
|
+
set: <T>(key: string, value: T, ttl?: number) => Promise<void>;
|
|
21
|
+
delete: (key: string) => Promise<void>;
|
|
22
|
+
clear: () => Promise<void>;
|
|
23
|
+
has: (key: string) => Promise<boolean>;
|
|
24
|
+
getDriver: () => CacheDriver;
|
|
25
|
+
}>;
|
|
26
|
+
//# sourceMappingURL=Cache.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Cache.d.ts","sourceRoot":"","sources":["../../../src/cache/Cache.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AA6FjD,eAAO,MAAM,KAAK;UAxCC,CAAC,OAAO,MAAM,KAAG,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC;UAOlC,CAAC,OAAO,MAAM,SAAS,CAAC,QAAQ,MAAM,KAAG,OAAO,CAAC,IAAI,CAAC;kBAOjD,MAAM,KAAG,OAAO,CAAC,IAAI,CAAC;iBAOtB,OAAO,CAAC,IAAI,CAAC;eAOb,MAAM,KAAG,OAAO,CAAC,OAAO,CAAC;qBAO3B,WAAW;EAY/B,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,KAAK;UApDC,CAAC,OAAO,MAAM,KAAG,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC;UAOlC,CAAC,OAAO,MAAM,SAAS,CAAC,QAAQ,MAAM,KAAG,OAAO,CAAC,IAAI,CAAC;kBAOjD,MAAM,KAAG,OAAO,CAAC,IAAI,CAAC;iBAOtB,OAAO,CAAC,IAAI,CAAC;eAOb,MAAM,KAAG,OAAO,CAAC,OAAO,CAAC;qBAO3B,WAAW;EAiBP,CAAC"}
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Cache Manager
|
|
3
|
+
* Central cache management and driver resolution
|
|
4
|
+
* Sealed namespace pattern - all exports through Cache namespace
|
|
5
|
+
*/
|
|
6
|
+
import { KVDriver } from './drivers/KVDriver';
|
|
7
|
+
import { MemoryDriver } from './drivers/MemoryDriver';
|
|
8
|
+
import { MongoDriver } from './drivers/MongoDriver';
|
|
9
|
+
import { RedisDriver } from './drivers/RedisDriver';
|
|
10
|
+
import { Env } from '../config/env';
|
|
11
|
+
import { ErrorFactory } from '../exceptions/ZintrustError';
|
|
12
|
+
let instance;
|
|
13
|
+
function buildDriver(driver) {
|
|
14
|
+
const maybeCreate = driver.create;
|
|
15
|
+
if (typeof maybeCreate === 'function') {
|
|
16
|
+
return maybeCreate();
|
|
17
|
+
}
|
|
18
|
+
if (typeof driver === 'function') {
|
|
19
|
+
return new driver();
|
|
20
|
+
}
|
|
21
|
+
throw ErrorFactory.createGeneralError('Invalid cache driver export');
|
|
22
|
+
}
|
|
23
|
+
function resolveDriver() {
|
|
24
|
+
const driverName = Env.CACHE_DRIVER;
|
|
25
|
+
switch (driverName) {
|
|
26
|
+
case 'kv':
|
|
27
|
+
return buildDriver(KVDriver);
|
|
28
|
+
case 'redis':
|
|
29
|
+
return buildDriver(RedisDriver);
|
|
30
|
+
case 'mongodb':
|
|
31
|
+
return buildDriver(MongoDriver);
|
|
32
|
+
case 'memory':
|
|
33
|
+
default:
|
|
34
|
+
return buildDriver(MemoryDriver);
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
function getDriverInstance() {
|
|
38
|
+
instance ??= resolveDriver();
|
|
39
|
+
return instance;
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Get an item from the cache
|
|
43
|
+
*/
|
|
44
|
+
const get = async (key) => {
|
|
45
|
+
return getDriverInstance().get(key);
|
|
46
|
+
};
|
|
47
|
+
/**
|
|
48
|
+
* Store an item in the cache
|
|
49
|
+
*/
|
|
50
|
+
const set = async (key, value, ttl) => {
|
|
51
|
+
await getDriverInstance().set(key, value, ttl);
|
|
52
|
+
};
|
|
53
|
+
/**
|
|
54
|
+
* Remove an item from the cache
|
|
55
|
+
*/
|
|
56
|
+
const del = async (key) => {
|
|
57
|
+
await getDriverInstance().delete(key);
|
|
58
|
+
};
|
|
59
|
+
/**
|
|
60
|
+
* Clear all items from the cache
|
|
61
|
+
*/
|
|
62
|
+
const clear = async () => {
|
|
63
|
+
await getDriverInstance().clear();
|
|
64
|
+
};
|
|
65
|
+
/**
|
|
66
|
+
* Check if an item exists in the cache
|
|
67
|
+
*/
|
|
68
|
+
const has = async (key) => {
|
|
69
|
+
return getDriverInstance().has(key);
|
|
70
|
+
};
|
|
71
|
+
/**
|
|
72
|
+
* Get the underlying driver instance
|
|
73
|
+
*/
|
|
74
|
+
const getDriver = () => {
|
|
75
|
+
return getDriverInstance();
|
|
76
|
+
};
|
|
77
|
+
// Sealed namespace with cache functionality
|
|
78
|
+
export const Cache = Object.freeze({
|
|
79
|
+
get,
|
|
80
|
+
set,
|
|
81
|
+
delete: del,
|
|
82
|
+
clear,
|
|
83
|
+
has,
|
|
84
|
+
getDriver,
|
|
85
|
+
});
|
|
86
|
+
/**
|
|
87
|
+
* Helper alias for cache
|
|
88
|
+
*/
|
|
89
|
+
export const cache = Cache;
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Cache Driver Interface
|
|
3
|
+
* Defines contract for different cache implementations
|
|
4
|
+
*/
|
|
5
|
+
export interface CacheDriver {
|
|
6
|
+
/**
|
|
7
|
+
* Get an item from the cache
|
|
8
|
+
*/
|
|
9
|
+
get<T>(key: string): Promise<T | null>;
|
|
10
|
+
/**
|
|
11
|
+
* Store an item in the cache
|
|
12
|
+
*/
|
|
13
|
+
set<T>(key: string, value: T, ttl?: number): Promise<void>;
|
|
14
|
+
/**
|
|
15
|
+
* Remove an item from the cache
|
|
16
|
+
*/
|
|
17
|
+
delete(key: string): Promise<void>;
|
|
18
|
+
/**
|
|
19
|
+
* Clear all items from the cache
|
|
20
|
+
*/
|
|
21
|
+
clear(): Promise<void>;
|
|
22
|
+
/**
|
|
23
|
+
* Check if an item exists in the cache
|
|
24
|
+
*/
|
|
25
|
+
has(key: string): Promise<boolean>;
|
|
26
|
+
}
|
|
27
|
+
export declare const CACHE_DRIVER_INTERFACE = "CacheDriver";
|
|
28
|
+
//# sourceMappingURL=CacheDriver.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CacheDriver.d.ts","sourceRoot":"","sources":["../../../src/cache/CacheDriver.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,WAAW,WAAW;IAC1B;;OAEG;IACH,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;IAEvC;;OAEG;IACH,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAE3D;;OAEG;IACH,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEnC;;OAEG;IACH,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAEvB;;OAEG;IACH,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CACpC;AAGD,eAAO,MAAM,sBAAsB,gBAAgB,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Cloudflare KV Cache Driver
|
|
3
|
+
* Interfaces with the native KV binding in Cloudflare Workers
|
|
4
|
+
*/
|
|
5
|
+
import { CacheDriver } from '../CacheDriver';
|
|
6
|
+
/**
|
|
7
|
+
* KVDriver namespace - sealed for immutability
|
|
8
|
+
*/
|
|
9
|
+
export declare const KVDriver: Readonly<{
|
|
10
|
+
create: () => CacheDriver;
|
|
11
|
+
}>;
|
|
12
|
+
//# sourceMappingURL=KVDriver.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"KVDriver.d.ts","sourceRoot":"","sources":["../../../../src/cache/drivers/KVDriver.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAgEjD;;GAEG;AACH,eAAO,MAAM,QAAQ;kBAhDF,WAAW;EAkD5B,CAAC"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Cloudflare KV Cache Driver
|
|
3
|
+
* Interfaces with the native KV binding in Cloudflare Workers
|
|
4
|
+
*/
|
|
5
|
+
import { Logger } from '../../config/logger';
|
|
6
|
+
/**
|
|
7
|
+
* Create a new KV driver instance
|
|
8
|
+
*/
|
|
9
|
+
const create = () => {
|
|
10
|
+
// In Cloudflare Workers, the KV namespace is usually bound to a variable in the environment
|
|
11
|
+
const env = globalThis['env'];
|
|
12
|
+
const kv = env === undefined ? undefined : env['CACHE'];
|
|
13
|
+
return {
|
|
14
|
+
async get(key) {
|
|
15
|
+
if (kv === undefined)
|
|
16
|
+
return null;
|
|
17
|
+
const value = await kv.get(key, { type: 'json' });
|
|
18
|
+
return value;
|
|
19
|
+
},
|
|
20
|
+
async set(key, value, ttl) {
|
|
21
|
+
if (kv === undefined) {
|
|
22
|
+
Logger.warn('KV binding "CACHE" not found. Cache set ignored.');
|
|
23
|
+
return;
|
|
24
|
+
}
|
|
25
|
+
const options = {};
|
|
26
|
+
if (ttl !== undefined) {
|
|
27
|
+
// KV expirationTtl must be at least 60 seconds
|
|
28
|
+
options.expirationTtl = Math.max(60, ttl);
|
|
29
|
+
}
|
|
30
|
+
await kv.put(key, JSON.stringify(value), options);
|
|
31
|
+
},
|
|
32
|
+
async delete(key) {
|
|
33
|
+
if (kv === undefined)
|
|
34
|
+
return;
|
|
35
|
+
await kv.delete(key);
|
|
36
|
+
},
|
|
37
|
+
async clear() {
|
|
38
|
+
// KV doesn't support clearing all keys easily without listing and deleting
|
|
39
|
+
Logger.warn('KV clear() is not implemented due to Cloudflare KV limitations.');
|
|
40
|
+
},
|
|
41
|
+
async has(key) {
|
|
42
|
+
if (kv === undefined)
|
|
43
|
+
return false;
|
|
44
|
+
const value = await kv.get(key);
|
|
45
|
+
return value !== null;
|
|
46
|
+
},
|
|
47
|
+
};
|
|
48
|
+
};
|
|
49
|
+
/**
|
|
50
|
+
* KVDriver namespace - sealed for immutability
|
|
51
|
+
*/
|
|
52
|
+
export const KVDriver = Object.freeze({
|
|
53
|
+
create,
|
|
54
|
+
});
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Memory Cache Driver
|
|
3
|
+
* Simple in-memory storage for local development
|
|
4
|
+
*/
|
|
5
|
+
import { CacheDriver } from '../CacheDriver';
|
|
6
|
+
/**
|
|
7
|
+
* MemoryDriver namespace - sealed for immutability
|
|
8
|
+
*/
|
|
9
|
+
export declare const MemoryDriver: Readonly<{
|
|
10
|
+
create: () => CacheDriver;
|
|
11
|
+
}>;
|
|
12
|
+
//# sourceMappingURL=MemoryDriver.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MemoryDriver.d.ts","sourceRoot":"","sources":["../../../../src/cache/drivers/MemoryDriver.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAkDjD;;GAEG;AACH,eAAO,MAAM,YAAY;kBA9CN,WAAW;EAgD5B,CAAC"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Memory Cache Driver
|
|
3
|
+
* Simple in-memory storage for local development
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* Memory Cache Driver
|
|
7
|
+
* Simple in-memory storage for local development
|
|
8
|
+
* Refactored to Functional Object pattern
|
|
9
|
+
*/
|
|
10
|
+
const create = () => {
|
|
11
|
+
const storage = new Map();
|
|
12
|
+
return {
|
|
13
|
+
async get(key) {
|
|
14
|
+
const item = storage.get(key);
|
|
15
|
+
if (item === undefined)
|
|
16
|
+
return null;
|
|
17
|
+
if (item.expires !== null && item.expires < Date.now()) {
|
|
18
|
+
storage.delete(key);
|
|
19
|
+
return null;
|
|
20
|
+
}
|
|
21
|
+
return item.value;
|
|
22
|
+
},
|
|
23
|
+
async set(key, value, ttl) {
|
|
24
|
+
const expires = ttl === undefined ? null : Date.now() + ttl * 1000;
|
|
25
|
+
storage.set(key, { value, expires });
|
|
26
|
+
},
|
|
27
|
+
async delete(key) {
|
|
28
|
+
storage.delete(key);
|
|
29
|
+
},
|
|
30
|
+
async clear() {
|
|
31
|
+
storage.clear();
|
|
32
|
+
},
|
|
33
|
+
async has(key) {
|
|
34
|
+
const item = storage.get(key);
|
|
35
|
+
if (item === undefined)
|
|
36
|
+
return false;
|
|
37
|
+
if (item.expires !== null && item.expires < Date.now()) {
|
|
38
|
+
storage.delete(key);
|
|
39
|
+
return false;
|
|
40
|
+
}
|
|
41
|
+
return true;
|
|
42
|
+
},
|
|
43
|
+
};
|
|
44
|
+
};
|
|
45
|
+
/**
|
|
46
|
+
* MemoryDriver namespace - sealed for immutability
|
|
47
|
+
*/
|
|
48
|
+
export const MemoryDriver = Object.freeze({
|
|
49
|
+
create,
|
|
50
|
+
});
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MongoDB Cache Driver
|
|
3
|
+
* Uses MongoDB Atlas Data API (HTTPS) for zero-dependency integration
|
|
4
|
+
*/
|
|
5
|
+
import { CacheDriver } from '../CacheDriver';
|
|
6
|
+
/**
|
|
7
|
+
* MongoDB Cache Driver
|
|
8
|
+
* Uses MongoDB Atlas Data API (HTTPS) for zero-dependency integration
|
|
9
|
+
* Sealed namespace for immutability
|
|
10
|
+
*/
|
|
11
|
+
export declare const MongoDriver: Readonly<{
|
|
12
|
+
/**
|
|
13
|
+
* Create a new MongoDB driver instance
|
|
14
|
+
*/
|
|
15
|
+
create(): CacheDriver;
|
|
16
|
+
}>;
|
|
17
|
+
//# sourceMappingURL=MongoDriver.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MongoDriver.d.ts","sourceRoot":"","sources":["../../../../src/cache/drivers/MongoDriver.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAKjD;;;;GAIG;AACH,eAAO,MAAM,WAAW;IACtB;;OAEG;cACO,WAAW;EA4ErB,CAAC"}
|