@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,396 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Performance Optimizations for Code Generation
|
|
3
|
+
* Implements caching, lazy-loading, and parallel generation
|
|
4
|
+
*/
|
|
5
|
+
import { Logger } from '../config/logger';
|
|
6
|
+
import { ErrorFactory } from '../exceptions/ZintrustError';
|
|
7
|
+
import { fs } from '../node-singletons/index.js';
|
|
8
|
+
import * as path from 'node:path';
|
|
9
|
+
/**
|
|
10
|
+
* Generation Cache - Cache generated code to avoid re-generating identical code
|
|
11
|
+
* Sealed namespace for immutability
|
|
12
|
+
*/
|
|
13
|
+
export const GenerationCache = Object.freeze({
|
|
14
|
+
/**
|
|
15
|
+
* Create a new generation cache instance
|
|
16
|
+
*/
|
|
17
|
+
create(cacheDir = path.join(process.cwd(), '.gen-cache'), ttlMs = 3600000) {
|
|
18
|
+
const state = {
|
|
19
|
+
cache: new Map(),
|
|
20
|
+
cacheDir,
|
|
21
|
+
ttlMs,
|
|
22
|
+
};
|
|
23
|
+
// Initialize
|
|
24
|
+
loadFromDisk(state);
|
|
25
|
+
// Active cleanup every 10 minutes
|
|
26
|
+
state.cleanupInterval = setInterval(() => {
|
|
27
|
+
const now = Date.now();
|
|
28
|
+
for (const [key, entry] of state.cache.entries()) {
|
|
29
|
+
if (now - entry.timestamp > state.ttlMs) {
|
|
30
|
+
state.cache.delete(key);
|
|
31
|
+
// Also try to delete from disk
|
|
32
|
+
const file = path.join(state.cacheDir, `${key}.json`);
|
|
33
|
+
if (fs.existsSync(file)) {
|
|
34
|
+
fs.unlinkSync(file);
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
}, 600000);
|
|
39
|
+
return {
|
|
40
|
+
/**
|
|
41
|
+
* Get from cache
|
|
42
|
+
*/
|
|
43
|
+
get(type, params) {
|
|
44
|
+
const key = getCacheKey(type, params);
|
|
45
|
+
const entry = state.cache.get(key);
|
|
46
|
+
if (entry === undefined)
|
|
47
|
+
return null;
|
|
48
|
+
// Check TTL
|
|
49
|
+
if (Date.now() - entry.timestamp > state.ttlMs) {
|
|
50
|
+
state.cache.delete(key);
|
|
51
|
+
const file = path.join(state.cacheDir, `${key}.json`);
|
|
52
|
+
if (fs.existsSync(file)) {
|
|
53
|
+
fs.unlinkSync(file);
|
|
54
|
+
}
|
|
55
|
+
return null;
|
|
56
|
+
}
|
|
57
|
+
return entry.code;
|
|
58
|
+
},
|
|
59
|
+
/**
|
|
60
|
+
* Set in cache
|
|
61
|
+
*/
|
|
62
|
+
set(type, params, code) {
|
|
63
|
+
const key = getCacheKey(type, params);
|
|
64
|
+
state.cache.set(key, {
|
|
65
|
+
code,
|
|
66
|
+
timestamp: Date.now(),
|
|
67
|
+
});
|
|
68
|
+
},
|
|
69
|
+
/**
|
|
70
|
+
* Save cache to disk
|
|
71
|
+
*/
|
|
72
|
+
save() {
|
|
73
|
+
saveCacheToDisk(state);
|
|
74
|
+
},
|
|
75
|
+
/**
|
|
76
|
+
* Clear cache
|
|
77
|
+
*/
|
|
78
|
+
clear() {
|
|
79
|
+
if (state.cleanupInterval) {
|
|
80
|
+
clearInterval(state.cleanupInterval);
|
|
81
|
+
}
|
|
82
|
+
clearCache(state);
|
|
83
|
+
},
|
|
84
|
+
/**
|
|
85
|
+
* Get cache statistics
|
|
86
|
+
*/
|
|
87
|
+
getStats() {
|
|
88
|
+
return getCacheStats(state);
|
|
89
|
+
},
|
|
90
|
+
};
|
|
91
|
+
},
|
|
92
|
+
});
|
|
93
|
+
/**
|
|
94
|
+
* Save cache to disk
|
|
95
|
+
*/
|
|
96
|
+
function saveCacheToDisk(state) {
|
|
97
|
+
if (fs.existsSync(state.cacheDir) === false) {
|
|
98
|
+
fs.mkdirSync(state.cacheDir, { recursive: true });
|
|
99
|
+
}
|
|
100
|
+
for (const [key, entry] of state.cache.entries()) {
|
|
101
|
+
const file = path.join(state.cacheDir, `${key}.json`);
|
|
102
|
+
fs.writeFileSync(file, JSON.stringify(entry, null, 2));
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* Clear cache
|
|
107
|
+
*/
|
|
108
|
+
function clearCache(state) {
|
|
109
|
+
state.cache.clear();
|
|
110
|
+
if (fs.existsSync(state.cacheDir) === true) {
|
|
111
|
+
fs.rmSync(state.cacheDir, { recursive: true });
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* Get cache statistics
|
|
116
|
+
*/
|
|
117
|
+
function getCacheStats(state) {
|
|
118
|
+
let diskUsage = 0;
|
|
119
|
+
if (fs.existsSync(state.cacheDir) === true) {
|
|
120
|
+
const files = fs.readdirSync(state.cacheDir);
|
|
121
|
+
for (const file of files) {
|
|
122
|
+
const stats = fs.statSync(path.join(state.cacheDir, file));
|
|
123
|
+
diskUsage += stats.size;
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
return {
|
|
127
|
+
size: diskUsage,
|
|
128
|
+
entries: state.cache.size,
|
|
129
|
+
diskUsage: formatBytes(diskUsage),
|
|
130
|
+
keys: Array.from(state.cache.keys()),
|
|
131
|
+
};
|
|
132
|
+
}
|
|
133
|
+
/**
|
|
134
|
+
* Format bytes as human-readable
|
|
135
|
+
*/
|
|
136
|
+
function formatBytes(bytes) {
|
|
137
|
+
const units = ['B', 'KB', 'MB'];
|
|
138
|
+
let size = bytes;
|
|
139
|
+
let i = 0;
|
|
140
|
+
while (size > 1024 && i < units.length - 1) {
|
|
141
|
+
size /= 1024;
|
|
142
|
+
i++;
|
|
143
|
+
}
|
|
144
|
+
return `${size.toFixed(2)} ${units[i]}`;
|
|
145
|
+
}
|
|
146
|
+
/**
|
|
147
|
+
* Get cache key from params
|
|
148
|
+
*/
|
|
149
|
+
function getCacheKey(type, params) {
|
|
150
|
+
// Use a more efficient key generation
|
|
151
|
+
const paramStr = JSON.stringify(params);
|
|
152
|
+
// Simple hash-like string for the key
|
|
153
|
+
let hash = 0;
|
|
154
|
+
for (let i = 0; i < paramStr.length; i++) {
|
|
155
|
+
const char = paramStr.codePointAt(i);
|
|
156
|
+
hash = (hash << 5) - hash + (char ?? 0);
|
|
157
|
+
hash = toInt32(hash); // Convert to 32bit integer
|
|
158
|
+
}
|
|
159
|
+
return `${type}:${hash.toString(36)}:${Buffer.from(paramStr.slice(0, 32)).toString('base64')}`;
|
|
160
|
+
}
|
|
161
|
+
/**
|
|
162
|
+
* Convert a number to a signed 32-bit integer (equivalent to JS ToInt32)
|
|
163
|
+
*/
|
|
164
|
+
function toInt32(value) {
|
|
165
|
+
const truncated = Math.trunc(value);
|
|
166
|
+
const uint32 = ((truncated % 4294967296) + 4294967296) % 4294967296;
|
|
167
|
+
return uint32 > 2147483647 ? uint32 - 4294967296 : uint32;
|
|
168
|
+
}
|
|
169
|
+
/**
|
|
170
|
+
* Load cache from disk
|
|
171
|
+
*/
|
|
172
|
+
function loadFromDisk(state) {
|
|
173
|
+
if (fs.existsSync(state.cacheDir) === true) {
|
|
174
|
+
try {
|
|
175
|
+
const files = fs.readdirSync(state.cacheDir);
|
|
176
|
+
for (const file of files) {
|
|
177
|
+
if (file.endsWith('.json') === true) {
|
|
178
|
+
const content = fs.readFileSync(path.join(state.cacheDir, file), 'utf-8');
|
|
179
|
+
const data = JSON.parse(content);
|
|
180
|
+
state.cache.set(file.replace('.json', ''), data);
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
catch (err) {
|
|
185
|
+
Logger.error(`Failed to load cache from disk: ${err instanceof Error ? err.message : String(err)}`);
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
/**
|
|
190
|
+
* Lazy Module Loader - Load dependencies only when needed
|
|
191
|
+
* Sealed namespace for immutability
|
|
192
|
+
*/
|
|
193
|
+
export const LazyLoader = Object.freeze({
|
|
194
|
+
/**
|
|
195
|
+
* Create a new lazy loader instance
|
|
196
|
+
*/
|
|
197
|
+
create() {
|
|
198
|
+
const modules = new Map();
|
|
199
|
+
return {
|
|
200
|
+
/**
|
|
201
|
+
* Lazy load a module
|
|
202
|
+
*/
|
|
203
|
+
async load(modulePath) {
|
|
204
|
+
const cached = modules.get(modulePath);
|
|
205
|
+
if (cached !== undefined) {
|
|
206
|
+
return cached;
|
|
207
|
+
}
|
|
208
|
+
try {
|
|
209
|
+
const module = await import(modulePath);
|
|
210
|
+
modules.set(modulePath, module);
|
|
211
|
+
return module;
|
|
212
|
+
}
|
|
213
|
+
catch (err) {
|
|
214
|
+
throw ErrorFactory.createTryCatchError(`Failed to load module: ${modulePath}`, err);
|
|
215
|
+
}
|
|
216
|
+
},
|
|
217
|
+
/**
|
|
218
|
+
* Preload modules
|
|
219
|
+
*/
|
|
220
|
+
async preload(modulePaths) {
|
|
221
|
+
await Promise.all(modulePaths.map(async (path) => this.load(path)));
|
|
222
|
+
},
|
|
223
|
+
/**
|
|
224
|
+
* Clear loaded modules
|
|
225
|
+
*/
|
|
226
|
+
clear() {
|
|
227
|
+
modules.clear();
|
|
228
|
+
},
|
|
229
|
+
};
|
|
230
|
+
},
|
|
231
|
+
});
|
|
232
|
+
/**
|
|
233
|
+
* Parallel Generator - Run multiple generators in parallel
|
|
234
|
+
*/
|
|
235
|
+
/**
|
|
236
|
+
* Run generators in parallel batches
|
|
237
|
+
*/
|
|
238
|
+
export async function runBatch(generators, batchSize = 3) {
|
|
239
|
+
const results = [];
|
|
240
|
+
for (let i = 0; i < generators.length; i += batchSize) {
|
|
241
|
+
const batch = generators.slice(i, i + batchSize);
|
|
242
|
+
const batchResults = await Promise.all(batch.map(async (gen) => gen()));
|
|
243
|
+
results.push(...batchResults);
|
|
244
|
+
}
|
|
245
|
+
return results;
|
|
246
|
+
}
|
|
247
|
+
/**
|
|
248
|
+
* Run all generators in parallel
|
|
249
|
+
*/
|
|
250
|
+
export async function runAll(generators) {
|
|
251
|
+
return Promise.all(generators.map(async (gen) => gen()));
|
|
252
|
+
}
|
|
253
|
+
export const ParallelGenerator = Object.freeze({
|
|
254
|
+
runBatch,
|
|
255
|
+
runAll,
|
|
256
|
+
});
|
|
257
|
+
/**
|
|
258
|
+
* Memoize - Cache function results based on arguments
|
|
259
|
+
*/
|
|
260
|
+
/**
|
|
261
|
+
* Create a memoized version of a function
|
|
262
|
+
*/
|
|
263
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
264
|
+
export function createMemoized(fn, options = {}) {
|
|
265
|
+
const cache = new Map();
|
|
266
|
+
return ((...args) => {
|
|
267
|
+
const key = options.keyGenerator === undefined ? JSON.stringify(args) : options.keyGenerator(args);
|
|
268
|
+
const entry = cache.get(key);
|
|
269
|
+
if (entry !== undefined) {
|
|
270
|
+
if (options.ttl === undefined || Date.now() - entry.timestamp < options.ttl) {
|
|
271
|
+
return entry.result;
|
|
272
|
+
}
|
|
273
|
+
cache.delete(key);
|
|
274
|
+
}
|
|
275
|
+
const result = fn(...args);
|
|
276
|
+
cache.set(key, { result, timestamp: Date.now() });
|
|
277
|
+
return result;
|
|
278
|
+
});
|
|
279
|
+
}
|
|
280
|
+
export const Memoize = Object.freeze({
|
|
281
|
+
create: createMemoized,
|
|
282
|
+
});
|
|
283
|
+
/**
|
|
284
|
+
* Performance Optimizer - Wrapper for optimizations
|
|
285
|
+
* Sealed namespace for immutability
|
|
286
|
+
*/
|
|
287
|
+
export const PerformanceOptimizer = Object.freeze({
|
|
288
|
+
/**
|
|
289
|
+
* Create a new performance optimizer instance
|
|
290
|
+
*/
|
|
291
|
+
create() {
|
|
292
|
+
const cache = GenerationCache.create();
|
|
293
|
+
const lazyLoader = LazyLoader.create();
|
|
294
|
+
const stats = {
|
|
295
|
+
cacheHits: 0,
|
|
296
|
+
cacheMisses: 0,
|
|
297
|
+
parallelRuns: 0,
|
|
298
|
+
savedTime: 0,
|
|
299
|
+
};
|
|
300
|
+
return {
|
|
301
|
+
/**
|
|
302
|
+
* Generate with caching
|
|
303
|
+
*/
|
|
304
|
+
async generateWithCache(type, params, generatorFn) {
|
|
305
|
+
return generateWithCache(cache, stats, type, params, generatorFn);
|
|
306
|
+
},
|
|
307
|
+
/**
|
|
308
|
+
* Generate multiple in parallel
|
|
309
|
+
*/
|
|
310
|
+
async generateInParallel(generators, batchSize) {
|
|
311
|
+
return generateInParallel(stats, generators, batchSize);
|
|
312
|
+
},
|
|
313
|
+
/**
|
|
314
|
+
* Preload modules
|
|
315
|
+
*/
|
|
316
|
+
async preloadModules(paths) {
|
|
317
|
+
await lazyLoader.preload(paths);
|
|
318
|
+
},
|
|
319
|
+
/**
|
|
320
|
+
* Get optimization statistics
|
|
321
|
+
*/
|
|
322
|
+
getStats() {
|
|
323
|
+
return getOptimizerStats(cache, stats);
|
|
324
|
+
},
|
|
325
|
+
/**
|
|
326
|
+
* Save cache to disk
|
|
327
|
+
*/
|
|
328
|
+
saveCache() {
|
|
329
|
+
cache.save();
|
|
330
|
+
},
|
|
331
|
+
/**
|
|
332
|
+
* Clear everything
|
|
333
|
+
*/
|
|
334
|
+
clear() {
|
|
335
|
+
resetOptimizer(cache, lazyLoader, stats);
|
|
336
|
+
},
|
|
337
|
+
};
|
|
338
|
+
},
|
|
339
|
+
});
|
|
340
|
+
/**
|
|
341
|
+
* Reset optimizer state
|
|
342
|
+
*/
|
|
343
|
+
function resetOptimizer(cache, lazyLoader, stats) {
|
|
344
|
+
cache.clear();
|
|
345
|
+
lazyLoader.clear();
|
|
346
|
+
stats.cacheHits = 0;
|
|
347
|
+
stats.cacheMisses = 0;
|
|
348
|
+
stats.parallelRuns = 0;
|
|
349
|
+
stats.savedTime = 0;
|
|
350
|
+
}
|
|
351
|
+
/**
|
|
352
|
+
* Generate multiple in parallel
|
|
353
|
+
*/
|
|
354
|
+
async function generateInParallel(stats, generators, batchSize) {
|
|
355
|
+
stats.parallelRuns++;
|
|
356
|
+
if (batchSize !== undefined) {
|
|
357
|
+
return ParallelGenerator.runBatch(generators, batchSize);
|
|
358
|
+
}
|
|
359
|
+
return ParallelGenerator.runAll(generators);
|
|
360
|
+
}
|
|
361
|
+
/**
|
|
362
|
+
* Generate with caching
|
|
363
|
+
*/
|
|
364
|
+
async function generateWithCache(cache, stats, type, params, generatorFn) {
|
|
365
|
+
// Try cache
|
|
366
|
+
const cached = cache.get(type, params);
|
|
367
|
+
if (cached !== null) {
|
|
368
|
+
stats.cacheHits++;
|
|
369
|
+
return JSON.parse(cached);
|
|
370
|
+
}
|
|
371
|
+
// Generate
|
|
372
|
+
const startTime = performance.now();
|
|
373
|
+
const result = await generatorFn();
|
|
374
|
+
const duration = performance.now() - startTime;
|
|
375
|
+
// Cache result
|
|
376
|
+
cache.set(type, params, JSON.stringify(result));
|
|
377
|
+
stats.cacheMisses++;
|
|
378
|
+
stats.savedTime += duration;
|
|
379
|
+
return result;
|
|
380
|
+
}
|
|
381
|
+
/**
|
|
382
|
+
* Get optimization statistics
|
|
383
|
+
*/
|
|
384
|
+
function getOptimizerStats(cache, stats) {
|
|
385
|
+
const total = stats.cacheHits + stats.cacheMisses;
|
|
386
|
+
const hitRate = total > 0 ? (stats.cacheHits / total) * 100 : 0;
|
|
387
|
+
return {
|
|
388
|
+
cacheHits: stats.cacheHits,
|
|
389
|
+
cacheMisses: stats.cacheMisses,
|
|
390
|
+
hitRate: `${hitRate.toFixed(1)}%`,
|
|
391
|
+
parallelRuns: stats.parallelRuns,
|
|
392
|
+
estimatedSavedTime: `${stats.savedTime.toFixed(2)}ms`,
|
|
393
|
+
cacheStatus: cache.getStats(),
|
|
394
|
+
};
|
|
395
|
+
}
|
|
396
|
+
export default PerformanceOptimizer;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Establish Performance Baseline
|
|
3
|
+
* Run all code generator benchmarks and save baseline metrics
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* Run baseline and save results
|
|
7
|
+
*/
|
|
8
|
+
export declare function establishBaseline(): Promise<void>;
|
|
9
|
+
//# sourceMappingURL=establish-baseline.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"establish-baseline.d.ts","sourceRoot":"","sources":["../../../src/performance/establish-baseline.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAQH;;GAEG;AACH,wBAAsB,iBAAiB,IAAI,OAAO,CAAC,IAAI,CAAC,CAYvD"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Establish Performance Baseline
|
|
3
|
+
* Run all code generator benchmarks and save baseline metrics
|
|
4
|
+
*/
|
|
5
|
+
import { Logger } from '../config/logger';
|
|
6
|
+
import { fs } from '../node-singletons/index.js';
|
|
7
|
+
import { fileURLToPath } from '../node-singletons/url';
|
|
8
|
+
import { CodeGenerationBenchmark } from './CodeGenerationBenchmark';
|
|
9
|
+
import * as path from 'node:path';
|
|
10
|
+
/**
|
|
11
|
+
* Run baseline and save results
|
|
12
|
+
*/
|
|
13
|
+
export async function establishBaseline() {
|
|
14
|
+
Logger.info('📊 Establishing Performance Baseline...');
|
|
15
|
+
const benchmark = CodeGenerationBenchmark();
|
|
16
|
+
await benchmark.runAll();
|
|
17
|
+
// Save baseline
|
|
18
|
+
const baselineFile = path.join(process.cwd(), 'performance-baseline.json');
|
|
19
|
+
benchmark.exportResults(baselineFile);
|
|
20
|
+
Logger.info('✅ Baseline established and saved to performance-baseline.json');
|
|
21
|
+
Logger.info('📈 Next: Run optimizations and compare results');
|
|
22
|
+
}
|
|
23
|
+
function isMainModuleEsm() {
|
|
24
|
+
try {
|
|
25
|
+
const entry = process.argv[1];
|
|
26
|
+
if (entry === undefined || entry === '')
|
|
27
|
+
return false;
|
|
28
|
+
const currentFilePath = fileURLToPath(new URL(import.meta.url));
|
|
29
|
+
// Use realpathSync to handle symlinks (common on macOS /var -> /private/var)
|
|
30
|
+
if (!('realpathSync' in fs)) {
|
|
31
|
+
return path.resolve(entry) === path.resolve(currentFilePath);
|
|
32
|
+
}
|
|
33
|
+
try {
|
|
34
|
+
const realpathSync = fs
|
|
35
|
+
.realpathSync;
|
|
36
|
+
return realpathSync(entry) === realpathSync(currentFilePath);
|
|
37
|
+
}
|
|
38
|
+
catch (err) {
|
|
39
|
+
Logger.error('realpathSync failed, falling back to path.resolve', err);
|
|
40
|
+
return path.resolve(entry) === path.resolve(currentFilePath);
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
catch (err) {
|
|
44
|
+
Logger.error('❌ Baseline failed:', err);
|
|
45
|
+
return false;
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
const isMainModule = globalThis.__ZINTRUST_ESTABLISH_BASELINE_MAIN__ ??
|
|
49
|
+
isMainModuleEsm();
|
|
50
|
+
if (isMainModule) {
|
|
51
|
+
await establishBaseline().catch((err) => {
|
|
52
|
+
Logger.error('❌ Baseline failed:', err);
|
|
53
|
+
process.exit(1);
|
|
54
|
+
});
|
|
55
|
+
}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Memory Profiler
|
|
3
|
+
* Tracks heap memory usage and garbage collection events
|
|
4
|
+
*/
|
|
5
|
+
import { MemoryDelta, MemorySnapshot } from './types';
|
|
6
|
+
export interface IMemoryProfiler {
|
|
7
|
+
start(): void;
|
|
8
|
+
end(): MemorySnapshot;
|
|
9
|
+
delta(): MemoryDelta;
|
|
10
|
+
getStartSnapshot(): MemorySnapshot | null;
|
|
11
|
+
getEndSnapshot(): MemorySnapshot | null;
|
|
12
|
+
getReport(): string;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* MemoryProfiler captures memory usage before and after request execution
|
|
16
|
+
* Sealed namespace for immutability
|
|
17
|
+
*/
|
|
18
|
+
export declare const MemoryProfiler: Readonly<{
|
|
19
|
+
/**
|
|
20
|
+
* Create a new memory profiler instance
|
|
21
|
+
*/
|
|
22
|
+
create(): IMemoryProfiler;
|
|
23
|
+
/**
|
|
24
|
+
* Format memory value as human-readable string
|
|
25
|
+
*/
|
|
26
|
+
formatBytes(bytes: number): string;
|
|
27
|
+
}>;
|
|
28
|
+
/**
|
|
29
|
+
* Format memory value as human-readable string
|
|
30
|
+
*/
|
|
31
|
+
export declare function formatBytes(bytes: number): string;
|
|
32
|
+
//# sourceMappingURL=MemoryProfiler.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MemoryProfiler.d.ts","sourceRoot":"","sources":["../../../src/profiling/MemoryProfiler.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAE/D,MAAM,WAAW,eAAe;IAC9B,KAAK,IAAI,IAAI,CAAC;IACd,GAAG,IAAI,cAAc,CAAC;IACtB,KAAK,IAAI,WAAW,CAAC;IACrB,gBAAgB,IAAI,cAAc,GAAG,IAAI,CAAC;IAC1C,cAAc,IAAI,cAAc,GAAG,IAAI,CAAC;IACxC,SAAS,IAAI,MAAM,CAAC;CACrB;AAED;;;GAGG;AACH,eAAO,MAAM,cAAc;IACzB;;OAEG;cACO,eAAe;IAmEzB;;OAEG;uBACgB,MAAM,GAAG,MAAM;EAGlC,CAAC;AAEH;;GAEG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAQjD"}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Memory Profiler
|
|
3
|
+
* Tracks heap memory usage and garbage collection events
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* MemoryProfiler captures memory usage before and after request execution
|
|
7
|
+
* Sealed namespace for immutability
|
|
8
|
+
*/
|
|
9
|
+
export const MemoryProfiler = Object.freeze({
|
|
10
|
+
/**
|
|
11
|
+
* Create a new memory profiler instance
|
|
12
|
+
*/
|
|
13
|
+
create() {
|
|
14
|
+
let startSnapshot = null;
|
|
15
|
+
let endSnapshot = null;
|
|
16
|
+
const captureSnapshot = () => {
|
|
17
|
+
const mem = process.memoryUsage();
|
|
18
|
+
return {
|
|
19
|
+
heapUsed: mem.heapUsed,
|
|
20
|
+
heapTotal: mem.heapTotal,
|
|
21
|
+
external: mem.external,
|
|
22
|
+
rss: mem.rss,
|
|
23
|
+
timestamp: new Date(),
|
|
24
|
+
};
|
|
25
|
+
};
|
|
26
|
+
const delta = () => {
|
|
27
|
+
if (!startSnapshot || !endSnapshot) {
|
|
28
|
+
return { heapUsed: 0, heapTotal: 0, external: 0, rss: 0 };
|
|
29
|
+
}
|
|
30
|
+
return {
|
|
31
|
+
heapUsed: endSnapshot.heapUsed - startSnapshot.heapUsed,
|
|
32
|
+
heapTotal: endSnapshot.heapTotal - startSnapshot.heapTotal,
|
|
33
|
+
external: endSnapshot.external - startSnapshot.external,
|
|
34
|
+
rss: endSnapshot.rss - startSnapshot.rss,
|
|
35
|
+
};
|
|
36
|
+
};
|
|
37
|
+
const profiler = {
|
|
38
|
+
start() {
|
|
39
|
+
if (globalThis.gc)
|
|
40
|
+
globalThis.gc();
|
|
41
|
+
startSnapshot = captureSnapshot();
|
|
42
|
+
endSnapshot = null;
|
|
43
|
+
},
|
|
44
|
+
end() {
|
|
45
|
+
endSnapshot = captureSnapshot();
|
|
46
|
+
return endSnapshot;
|
|
47
|
+
},
|
|
48
|
+
delta,
|
|
49
|
+
getStartSnapshot() {
|
|
50
|
+
return startSnapshot;
|
|
51
|
+
},
|
|
52
|
+
getEndSnapshot() {
|
|
53
|
+
return endSnapshot;
|
|
54
|
+
},
|
|
55
|
+
getReport() {
|
|
56
|
+
if (!startSnapshot || !endSnapshot) {
|
|
57
|
+
return 'Memory profiling not started or completed';
|
|
58
|
+
}
|
|
59
|
+
const d = delta();
|
|
60
|
+
const lines = ['Memory Profile Report:'];
|
|
61
|
+
lines.push(` Heap Used: ${formatBytes(d.heapUsed)}`, ` Heap Total: ${formatBytes(d.heapTotal)}`, ` External: ${formatBytes(d.external)}`, ` RSS: ${formatBytes(d.rss)}`);
|
|
62
|
+
return lines.join('\n');
|
|
63
|
+
},
|
|
64
|
+
};
|
|
65
|
+
return profiler;
|
|
66
|
+
},
|
|
67
|
+
/**
|
|
68
|
+
* Format memory value as human-readable string
|
|
69
|
+
*/
|
|
70
|
+
formatBytes(bytes) {
|
|
71
|
+
return formatBytes(bytes);
|
|
72
|
+
},
|
|
73
|
+
});
|
|
74
|
+
/**
|
|
75
|
+
* Format memory value as human-readable string
|
|
76
|
+
*/
|
|
77
|
+
export function formatBytes(bytes) {
|
|
78
|
+
if (bytes === 0)
|
|
79
|
+
return '0 B';
|
|
80
|
+
const k = 1024;
|
|
81
|
+
const sizes = ['B', 'KB', 'MB', 'GB'];
|
|
82
|
+
const i = Math.floor(Math.log(Math.abs(bytes)) / Math.log(k));
|
|
83
|
+
return `${(bytes / Math.pow(k, i)).toFixed(2)} ${sizes[i]}`;
|
|
84
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* N+1 Query Pattern Detector
|
|
3
|
+
* Analyzes query logs to identify N+1 patterns
|
|
4
|
+
*/
|
|
5
|
+
import { IN1Detector } from './types';
|
|
6
|
+
/**\n * N1Detector analyzes query logs to identify N+1 patterns
|
|
7
|
+
* Groups identical queries and flags those executed 5+ times as critical
|
|
8
|
+
* Sealed namespace for immutability
|
|
9
|
+
*/
|
|
10
|
+
export declare const N1Detector: Readonly<{
|
|
11
|
+
/**
|
|
12
|
+
* Create a new N1Detector instance
|
|
13
|
+
*/
|
|
14
|
+
create(): IN1Detector;
|
|
15
|
+
}>;
|
|
16
|
+
//# sourceMappingURL=N1Detector.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"N1Detector.d.ts","sourceRoot":"","sources":["../../../src/profiling/N1Detector.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,WAAW,EAA4B,MAAM,kBAAkB,CAAC;AAEzE;;;GAGG;AACH,eAAO,MAAM,UAAU;IACrB;;OAEG;cACO,WAAW;EAiCrB,CAAC"}
|