@zintrust/core 0.1.19 → 0.1.20
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/README.md +10 -10
- package/bin/zintrust-main.d.ts.map +1 -1
- package/bin/zintrust-main.js +9 -0
- package/package.json +2 -2
- package/public/error-pages/404.html +145 -0
- package/public/error-pages/500.html +266 -0
- package/public/error-pages/error.css +628 -0
- package/public/error-pages/error.js +428 -0
- package/public/zintrust.svg +30 -0
- package/routes/api.d.ts.map +1 -1
- package/routes/api.js +41 -17
- package/routes/metrics.d.ts +9 -0
- package/routes/metrics.d.ts.map +1 -0
- package/routes/metrics.js +20 -0
- package/routes/openapi.d.ts +9 -0
- package/routes/openapi.d.ts.map +1 -0
- package/routes/openapi.js +76 -0
- package/src/boot/Application.d.ts +2 -2
- package/src/boot/Application.d.ts.map +1 -1
- package/src/boot/Application.js +18 -3
- package/src/boot/Server.d.ts +3 -2
- package/src/boot/Server.d.ts.map +1 -1
- package/src/boot/Server.js +39 -165
- package/src/cache/Cache.d.ts +1 -1
- package/src/cache/Cache.d.ts.map +1 -1
- package/src/cache/CacheDriver.d.ts +4 -0
- package/src/cache/CacheDriver.d.ts.map +1 -1
- package/src/cache/drivers/KVDriver.d.ts +1 -1
- package/src/cache/drivers/KVDriver.d.ts.map +1 -1
- package/src/cache/drivers/MemoryDriver.d.ts +1 -1
- package/src/cache/drivers/MemoryDriver.d.ts.map +1 -1
- package/src/cache/drivers/MemoryDriver.js +16 -0
- package/src/cache/drivers/MongoDriver.d.ts +1 -1
- package/src/cache/drivers/MongoDriver.d.ts.map +1 -1
- package/src/cache/drivers/RedisDriver.d.ts +1 -1
- package/src/cache/drivers/RedisDriver.d.ts.map +1 -1
- package/src/cli/CLI.d.ts.map +1 -1
- package/src/cli/CLI.js +10 -4
- package/src/cli/commands/AddCommand.d.ts +2 -2
- package/src/cli/commands/AddCommand.d.ts.map +1 -1
- package/src/cli/commands/AddCommand.js +135 -58
- package/src/cli/commands/ConfigCommand.d.ts +1 -1
- package/src/cli/commands/ConfigCommand.d.ts.map +1 -1
- package/src/cli/commands/CreateCommand.d.ts +15 -0
- package/src/cli/commands/CreateCommand.d.ts.map +1 -0
- package/src/cli/commands/CreateCommand.js +143 -0
- package/src/cli/commands/D1MigrateCommand.d.ts +1 -1
- package/src/cli/commands/D1MigrateCommand.d.ts.map +1 -1
- package/src/cli/commands/D1MigrateCommand.js +16 -20
- package/src/cli/commands/DbSeedCommand.d.ts +9 -0
- package/src/cli/commands/DbSeedCommand.d.ts.map +1 -0
- package/src/cli/commands/DbSeedCommand.js +171 -0
- package/src/cli/commands/DebugCommand.d.ts +1 -1
- package/src/cli/commands/DebugCommand.d.ts.map +1 -1
- package/src/cli/commands/FixCommand.d.ts +1 -1
- package/src/cli/commands/FixCommand.d.ts.map +1 -1
- package/src/cli/commands/JwtDevCommand.d.ts +8 -0
- package/src/cli/commands/JwtDevCommand.d.ts.map +1 -0
- package/src/cli/commands/JwtDevCommand.js +114 -0
- package/src/cli/commands/KeyGenerateCommand.d.ts +1 -1
- package/src/cli/commands/KeyGenerateCommand.d.ts.map +1 -1
- package/src/cli/commands/LogsCommand.d.ts +2 -2
- package/src/cli/commands/LogsCommand.d.ts.map +1 -1
- package/src/cli/commands/LogsCommand.js +36 -2
- package/src/cli/commands/MakeMailTemplateCommand.d.ts +1 -1
- package/src/cli/commands/MakeMailTemplateCommand.d.ts.map +1 -1
- package/src/cli/commands/MakeNotificationTemplateCommand.d.ts +1 -1
- package/src/cli/commands/MakeNotificationTemplateCommand.d.ts.map +1 -1
- package/src/cli/commands/MigrateCommand.d.ts +1 -1
- package/src/cli/commands/MigrateCommand.d.ts.map +1 -1
- package/src/cli/commands/MigrateCommand.js +291 -35
- package/src/cli/commands/NewCommand.d.ts +1 -1
- package/src/cli/commands/NewCommand.d.ts.map +1 -1
- package/src/cli/commands/NewCommand.js +12 -4
- package/src/cli/commands/PluginCommand.d.ts +1 -1
- package/src/cli/commands/PluginCommand.d.ts.map +1 -1
- package/src/cli/commands/PrepareCommand.d.ts +1 -1
- package/src/cli/commands/PrepareCommand.d.ts.map +1 -1
- package/src/cli/commands/QACommand.d.ts +2 -2
- package/src/cli/commands/QACommand.d.ts.map +1 -1
- package/src/cli/commands/RoutesCommand.d.ts +10 -0
- package/src/cli/commands/RoutesCommand.d.ts.map +1 -0
- package/src/cli/commands/RoutesCommand.js +242 -0
- package/src/cli/commands/SimulateCommand.d.ts +1 -1
- package/src/cli/commands/SimulateCommand.d.ts.map +1 -1
- package/src/cli/commands/index.d.ts +3 -0
- package/src/cli/commands/index.d.ts.map +1 -1
- package/src/cli/commands/index.js +3 -0
- package/src/cli/config/ConfigManager.d.ts +1 -1
- package/src/cli/config/ConfigManager.d.ts.map +1 -1
- package/src/cli/config/ConfigValidator.d.ts +1 -1
- package/src/cli/config/ConfigValidator.d.ts.map +1 -1
- package/src/cli/config/ConfigValidator.js +1 -1
- package/src/cli/d1/D1SqlMigrations.d.ts +20 -0
- package/src/cli/d1/D1SqlMigrations.d.ts.map +1 -0
- package/src/cli/d1/D1SqlMigrations.js +224 -0
- package/src/cli/d1/WranglerConfig.d.ts +4 -0
- package/src/cli/d1/WranglerConfig.d.ts.map +1 -0
- package/src/cli/d1/WranglerConfig.js +122 -0
- package/src/cli/d1/WranglerD1.d.ts +11 -0
- package/src/cli/d1/WranglerD1.d.ts.map +1 -0
- package/src/cli/d1/WranglerD1.js +16 -0
- package/src/cli/scaffolding/ControllerGenerator.d.ts.map +1 -1
- package/src/cli/scaffolding/ControllerGenerator.js +72 -22
- package/src/cli/scaffolding/FactoryGenerator.d.ts.map +1 -1
- package/src/cli/scaffolding/FactoryGenerator.js +3 -1
- package/src/cli/scaffolding/GovernanceScaffolder.d.ts +23 -0
- package/src/cli/scaffolding/GovernanceScaffolder.d.ts.map +1 -0
- package/src/cli/scaffolding/GovernanceScaffolder.js +327 -0
- package/src/cli/scaffolding/MigrationGenerator.d.ts +10 -0
- package/src/cli/scaffolding/MigrationGenerator.d.ts.map +1 -1
- package/src/cli/scaffolding/MigrationGenerator.js +137 -51
- package/src/cli/scaffolding/ProjectScaffolder.d.ts.map +1 -1
- package/src/cli/scaffolding/ProjectScaffolder.js +36 -4
- package/src/cli/scaffolding/RouteGenerator.d.ts.map +1 -1
- package/src/cli/scaffolding/RouteGenerator.js +79 -43
- package/src/cli/scaffolding/SeederGenerator.d.ts +5 -0
- package/src/cli/scaffolding/SeederGenerator.d.ts.map +1 -1
- package/src/cli/scaffolding/SeederGenerator.js +63 -15
- package/src/cli/scaffolding/ServiceScaffolder.d.ts.map +1 -1
- package/src/cli/scaffolding/ServiceScaffolder.js +24 -3
- package/src/cli/scaffolding/index.d.ts +2 -0
- package/src/cli/scaffolding/index.d.ts.map +1 -1
- package/src/cli/scaffolding/index.js +1 -0
- package/src/common/index.d.ts +8 -0
- package/src/common/index.d.ts.map +1 -1
- package/src/common/index.js +28 -0
- package/src/common/utility.d.ts +38 -0
- package/src/common/utility.d.ts.map +1 -0
- package/src/common/utility.js +101 -0
- package/src/config/FileLogWriter.d.ts +2 -1
- package/src/config/FileLogWriter.d.ts.map +1 -1
- package/src/config/FileLogWriter.js +83 -2
- package/src/config/app.d.ts.map +1 -1
- package/src/config/app.js +3 -1
- package/src/config/broadcast.d.ts +1 -1
- package/src/config/broadcast.d.ts.map +1 -1
- package/src/config/cache.d.ts +1 -1
- package/src/config/cache.d.ts.map +1 -1
- package/src/config/cloudflare.d.ts +1 -1
- package/src/config/cloudflare.d.ts.map +1 -1
- package/src/config/database.d.ts +1 -1
- package/src/config/database.d.ts.map +1 -1
- package/src/config/database.js +92 -6
- package/src/config/env.d.ts +6 -0
- package/src/config/env.d.ts.map +1 -1
- package/src/config/env.js +7 -0
- package/src/config/index.d.ts +1 -1
- package/src/config/logging/KvLogger.js +1 -1
- package/src/config/logging/SlackLogger.js +2 -2
- package/src/config/middleware.d.ts +20 -1
- package/src/config/middleware.d.ts.map +1 -1
- package/src/config/middleware.js +135 -3
- package/src/config/security.d.ts +1 -1
- package/src/config/security.js +1 -1
- package/src/config/type.d.ts +1 -1
- package/src/config/type.d.ts.map +1 -1
- package/src/events/EventDispatcher.d.ts.map +1 -1
- package/src/events/EventDispatcher.js +6 -4
- package/src/exceptions/ZintrustError.d.ts +7 -0
- package/src/exceptions/ZintrustError.d.ts.map +1 -1
- package/src/exceptions/ZintrustError.js +56 -0
- package/src/features/Auth.d.ts +1 -1
- package/src/features/Auth.d.ts.map +1 -1
- package/src/features/Auth.js +3 -3
- package/src/features/Queue.js +1 -1
- package/src/functions/cloudflare.d.ts.map +1 -1
- package/src/functions/cloudflare.js +3 -14
- package/src/functions/deno.d.ts.map +1 -1
- package/src/functions/deno.js +3 -14
- package/src/functions/lambda.d.ts.map +1 -1
- package/src/functions/lambda.js +3 -14
- package/src/health/StartupHealthChecks.js +1 -1
- package/src/http/Controller.d.ts +2 -2
- package/src/http/Controller.d.ts.map +1 -1
- package/src/http/FileUpload.d.ts +68 -0
- package/src/http/FileUpload.d.ts.map +1 -0
- package/src/http/FileUpload.js +120 -0
- package/src/http/Kernel.d.ts +5 -5
- package/src/http/Kernel.d.ts.map +1 -1
- package/src/http/Kernel.js +139 -23
- package/src/http/Request.d.ts +20 -1
- package/src/http/Request.d.ts.map +1 -1
- package/src/http/Request.js +23 -0
- package/src/http/RequestContext.d.ts +6 -0
- package/src/http/RequestContext.d.ts.map +1 -1
- package/src/http/RequestContext.js +77 -1
- package/src/http/Response.d.ts +1 -1
- package/src/http/Response.d.ts.map +1 -1
- package/src/http/ValidationHelper.d.ts +78 -0
- package/src/http/ValidationHelper.d.ts.map +1 -0
- package/src/http/ValidationHelper.js +121 -0
- package/src/http/error-pages/ErrorPageRenderer.d.ts +17 -0
- package/src/http/error-pages/ErrorPageRenderer.d.ts.map +1 -0
- package/src/http/error-pages/ErrorPageRenderer.js +88 -0
- package/src/http/middleware/BodyParsingMiddleware.d.ts +12 -0
- package/src/http/middleware/BodyParsingMiddleware.d.ts.map +1 -0
- package/src/http/middleware/BodyParsingMiddleware.js +251 -0
- package/src/http/middleware/FileUploadMiddleware.d.ts +12 -0
- package/src/http/middleware/FileUploadMiddleware.d.ts.map +1 -0
- package/src/http/middleware/FileUploadMiddleware.js +74 -0
- package/src/http/parsers/BodyParsers.d.ts +32 -0
- package/src/http/parsers/BodyParsers.d.ts.map +1 -0
- package/src/http/parsers/BodyParsers.js +159 -0
- package/src/http/parsers/MultipartParser.d.ts +33 -0
- package/src/http/parsers/MultipartParser.d.ts.map +1 -0
- package/src/http/parsers/MultipartParser.js +129 -0
- package/src/http/parsers/MultipartParserRegistry.d.ts +34 -0
- package/src/http/parsers/MultipartParserRegistry.d.ts.map +1 -0
- package/src/http/parsers/MultipartParserRegistry.js +20 -0
- package/src/http/validated.d.ts +12 -0
- package/src/http/validated.d.ts.map +1 -0
- package/src/http/validated.js +41 -0
- package/src/index.d.ts +64 -7
- package/src/index.d.ts.map +1 -1
- package/src/index.js +59 -5
- package/src/microservices/RequestTracingMiddleware.d.ts +2 -2
- package/src/microservices/RequestTracingMiddleware.d.ts.map +1 -1
- package/src/microservices/RequestTracingMiddleware.js +3 -0
- package/src/microservices/ServiceAuthMiddleware.d.ts +2 -2
- package/src/microservices/ServiceAuthMiddleware.d.ts.map +1 -1
- package/src/middleware/AuthMiddleware.d.ts +10 -0
- package/src/middleware/AuthMiddleware.d.ts.map +1 -0
- package/src/middleware/AuthMiddleware.js +16 -0
- package/src/middleware/CsrfMiddleware.d.ts +11 -1
- package/src/middleware/CsrfMiddleware.d.ts.map +1 -1
- package/src/middleware/CsrfMiddleware.js +33 -0
- package/src/middleware/JwtAuthMiddleware.d.ts +11 -0
- package/src/middleware/JwtAuthMiddleware.d.ts.map +1 -0
- package/src/middleware/JwtAuthMiddleware.js +73 -0
- package/src/middleware/LoggingMiddleware.d.ts.map +1 -1
- package/src/middleware/LoggingMiddleware.js +8 -3
- package/src/middleware/MiddlewareStack.d.ts +2 -2
- package/src/middleware/MiddlewareStack.d.ts.map +1 -1
- package/src/middleware/RateLimiter.d.ts +2 -2
- package/src/middleware/RateLimiter.d.ts.map +1 -1
- package/src/middleware/SanitizeBodyMiddleware.d.ts +12 -0
- package/src/middleware/SanitizeBodyMiddleware.d.ts.map +1 -0
- package/src/middleware/SanitizeBodyMiddleware.js +31 -0
- package/src/middleware/SecurityMiddleware.d.ts +1 -1
- package/src/middleware/SecurityMiddleware.d.ts.map +1 -1
- package/src/middleware/SessionMiddleware.d.ts +1 -1
- package/src/middleware/SessionMiddleware.d.ts.map +1 -1
- package/src/middleware/ValidationMiddleware.d.ts +25 -0
- package/src/middleware/ValidationMiddleware.d.ts.map +1 -0
- package/src/middleware/ValidationMiddleware.js +251 -0
- package/src/migrations/MigrationDiscovery.d.ts +5 -0
- package/src/migrations/MigrationDiscovery.d.ts.map +1 -0
- package/src/migrations/MigrationDiscovery.js +16 -0
- package/src/migrations/MigrationLoader.d.ts +5 -0
- package/src/migrations/MigrationLoader.d.ts.map +1 -0
- package/src/migrations/MigrationLoader.js +43 -0
- package/src/migrations/MigrationLock.d.ts +4 -0
- package/src/migrations/MigrationLock.d.ts.map +1 -0
- package/src/migrations/MigrationLock.js +33 -0
- package/src/migrations/Migrator.d.ts +23 -0
- package/src/migrations/Migrator.d.ts.map +1 -0
- package/src/migrations/Migrator.js +4 -0
- package/src/migrations/MigratorFactory.d.ts +25 -0
- package/src/migrations/MigratorFactory.d.ts.map +1 -0
- package/src/migrations/MigratorFactory.js +323 -0
- package/src/migrations/schema/Blueprint.d.ts +5 -0
- package/src/migrations/schema/Blueprint.d.ts.map +1 -0
- package/src/migrations/schema/Blueprint.js +189 -0
- package/src/migrations/schema/Schema.d.ts +8 -0
- package/src/migrations/schema/Schema.d.ts.map +1 -0
- package/src/migrations/schema/Schema.js +141 -0
- package/src/migrations/schema/SchemaCompiler.d.ts +20 -0
- package/src/migrations/schema/SchemaCompiler.d.ts.map +1 -0
- package/src/migrations/schema/SchemaCompiler.js +262 -0
- package/src/migrations/schema/index.d.ts +5 -0
- package/src/migrations/schema/index.d.ts.map +1 -0
- package/src/migrations/schema/index.js +3 -0
- package/src/migrations/schema/types.d.ts +86 -0
- package/src/migrations/schema/types.d.ts.map +1 -0
- package/src/migrations/schema/types.js +1 -0
- package/src/migrations/types.d.ts +45 -0
- package/src/migrations/types.d.ts.map +1 -0
- package/src/migrations/types.js +1 -0
- package/src/node-singletons/crypto.d.ts +1 -1
- package/src/node-singletons/crypto.d.ts.map +1 -1
- package/src/node-singletons/crypto.js +1 -1
- package/src/node-singletons/fs.d.ts +2 -2
- package/src/node-singletons/fs.d.ts.map +1 -1
- package/src/node-singletons/fs.js +1 -1
- package/src/node-singletons/util.d.ts +6 -0
- package/src/node-singletons/util.d.ts.map +1 -0
- package/src/node-singletons/util.js +5 -0
- package/src/node.d.ts +3 -1
- package/src/node.d.ts.map +1 -1
- package/src/node.js +6 -2
- package/src/observability/OpenTelemetry.d.ts +62 -0
- package/src/observability/OpenTelemetry.d.ts.map +1 -0
- package/src/observability/OpenTelemetry.js +167 -0
- package/src/observability/PrometheusMetrics.d.ts +25 -0
- package/src/observability/PrometheusMetrics.d.ts.map +1 -0
- package/src/observability/PrometheusMetrics.js +114 -0
- package/src/openapi/OpenApiGenerator.d.ts +68 -0
- package/src/openapi/OpenApiGenerator.d.ts.map +1 -0
- package/src/openapi/OpenApiGenerator.js +287 -0
- package/src/orm/Database.d.ts +4 -2
- package/src/orm/Database.d.ts.map +1 -1
- package/src/orm/Database.js +142 -29
- package/src/orm/DatabaseAdapter.d.ts +13 -0
- package/src/orm/DatabaseAdapter.d.ts.map +1 -1
- package/src/orm/DatabaseAdapterRegistry.d.ts.map +1 -1
- package/src/orm/DatabaseAdapterRegistry.js +3 -1
- package/src/orm/Model.d.ts +30 -2
- package/src/orm/Model.d.ts.map +1 -1
- package/src/orm/Model.js +255 -62
- package/src/orm/QueryBuilder.d.ts +22 -1
- package/src/orm/QueryBuilder.d.ts.map +1 -1
- package/src/orm/QueryBuilder.js +405 -99
- package/src/orm/Relationships.d.ts +7 -1
- package/src/orm/Relationships.d.ts.map +1 -1
- package/src/orm/Relationships.js +18 -0
- package/src/orm/SchemaCompiler.d.ts +9 -0
- package/src/orm/SchemaCompiler.d.ts.map +1 -0
- package/src/orm/SchemaCompiler.js +145 -0
- package/src/orm/adapters/D1Adapter.d.ts +1 -1
- package/src/orm/adapters/D1Adapter.d.ts.map +1 -1
- package/src/orm/adapters/MySQLAdapter.d.ts +1 -1
- package/src/orm/adapters/MySQLAdapter.d.ts.map +1 -1
- package/src/orm/adapters/MySQLAdapter.js +88 -69
- package/src/orm/adapters/PostgreSQLAdapter.d.ts +1 -1
- package/src/orm/adapters/PostgreSQLAdapter.d.ts.map +1 -1
- package/src/orm/adapters/PostgreSQLAdapter.js +88 -69
- package/src/orm/adapters/SQLServerAdapter.d.ts +1 -1
- package/src/orm/adapters/SQLServerAdapter.d.ts.map +1 -1
- package/src/orm/adapters/SQLiteAdapter.d.ts +1 -1
- package/src/orm/adapters/SQLiteAdapter.d.ts.map +1 -1
- package/src/orm/adapters/SQLiteAdapter.js +58 -2
- package/src/orm/maintenance/SqliteMaintenance.d.ts +5 -0
- package/src/orm/maintenance/SqliteMaintenance.d.ts.map +1 -0
- package/src/orm/maintenance/SqliteMaintenance.js +14 -0
- package/src/orm/migrations/MigrationStore.d.ts +38 -0
- package/src/orm/migrations/MigrationStore.d.ts.map +1 -0
- package/src/orm/migrations/MigrationStore.js +157 -0
- package/src/performance/CodeGenerationBenchmark.d.ts.map +1 -1
- package/src/performance/Optimizer.d.ts +1 -0
- package/src/performance/Optimizer.d.ts.map +1 -1
- package/src/performance/Optimizer.js +37 -3
- package/src/profiling/MemoryProfiler.d.ts +1 -1
- package/src/profiling/MemoryProfiler.d.ts.map +1 -1
- package/src/profiling/N1Detector.d.ts +1 -1
- package/src/profiling/N1Detector.d.ts.map +1 -1
- package/src/profiling/QueryLogger.d.ts +1 -1
- package/src/profiling/QueryLogger.d.ts.map +1 -1
- package/src/profiling/RequestProfiler.d.ts +3 -3
- package/src/profiling/RequestProfiler.d.ts.map +1 -1
- package/src/routes/metrics.d.ts +2 -0
- package/src/routes/metrics.d.ts.map +1 -0
- package/src/routes/metrics.js +1 -0
- package/src/routing/CoreRoutes.d.ts +12 -0
- package/src/routing/CoreRoutes.d.ts.map +1 -0
- package/src/routing/CoreRoutes.js +151 -0
- package/src/routing/RouteRegistry.d.ts +39 -0
- package/src/routing/RouteRegistry.d.ts.map +1 -0
- package/src/routing/RouteRegistry.js +44 -0
- package/src/routing/Router.d.ts +26 -9
- package/src/routing/Router.d.ts.map +1 -1
- package/src/routing/Router.js +79 -35
- package/src/routing/common.d.ts +15 -0
- package/src/routing/common.d.ts.map +1 -0
- package/src/routing/common.js +47 -0
- package/src/routing/doc.d.ts +28 -0
- package/src/routing/doc.d.ts.map +1 -0
- package/src/routing/doc.js +95 -0
- package/src/routing/error.d.ts +21 -0
- package/src/routing/error.d.ts.map +1 -0
- package/src/routing/error.js +126 -0
- package/src/routing/errorPages.d.ts +14 -0
- package/src/routing/errorPages.d.ts.map +1 -0
- package/src/routing/errorPages.js +103 -0
- package/src/routing/publicRoot.d.ts +18 -0
- package/src/routing/publicRoot.d.ts.map +1 -0
- package/src/routing/publicRoot.js +49 -0
- package/src/runtime/PluginAutoImports.d.ts +21 -0
- package/src/runtime/PluginAutoImports.d.ts.map +1 -0
- package/src/runtime/PluginAutoImports.js +59 -0
- package/src/runtime/PluginManager.d.ts +1 -5
- package/src/runtime/PluginManager.d.ts.map +1 -1
- package/src/runtime/PluginManager.js +25 -18
- package/src/runtime/RuntimeDetector.d.ts +1 -1
- package/src/runtime/RuntimeDetector.d.ts.map +1 -1
- package/src/runtime/adapters/CloudflareAdapter.d.ts +1 -1
- package/src/runtime/adapters/CloudflareAdapter.d.ts.map +1 -1
- package/src/runtime/adapters/CloudflareAdapter.js +1 -1
- package/src/runtime/adapters/DenoAdapter.d.ts +1 -1
- package/src/runtime/adapters/DenoAdapter.d.ts.map +1 -1
- package/src/runtime/adapters/DenoAdapter.js +1 -1
- package/src/runtime/adapters/LambdaAdapter.d.ts +1 -1
- package/src/runtime/adapters/LambdaAdapter.d.ts.map +1 -1
- package/src/runtime/adapters/LambdaAdapter.js +1 -1
- package/src/runtime/adapters/NodeServerAdapter.d.ts +1 -1
- package/src/runtime/adapters/NodeServerAdapter.d.ts.map +1 -1
- package/src/runtime/getKernel.d.ts +9 -0
- package/src/runtime/getKernel.d.ts.map +1 -0
- package/src/runtime/getKernel.js +27 -0
- package/src/scripts/TemplateImportsCheck.js +40 -0
- package/src/scripts/TemplateSync.js +86 -20
- package/src/security/Encryptor.d.ts.map +1 -1
- package/src/security/Encryptor.js +64 -7
- package/src/security/JwtManager.d.ts +1 -0
- package/src/security/JwtManager.d.ts.map +1 -1
- package/src/security/JwtManager.js +33 -0
- package/src/security/Sanitizer.d.ts +76 -0
- package/src/security/Sanitizer.d.ts.map +1 -0
- package/src/security/Sanitizer.js +412 -0
- package/src/security/TokenRevocation.d.ts +7 -0
- package/src/security/TokenRevocation.d.ts.map +1 -0
- package/src/security/TokenRevocation.js +57 -0
- package/src/seeders/SeederDiscovery.d.ts +5 -0
- package/src/seeders/SeederDiscovery.d.ts.map +1 -0
- package/src/seeders/SeederDiscovery.js +21 -0
- package/src/seeders/SeederLoader.d.ts +5 -0
- package/src/seeders/SeederLoader.d.ts.map +1 -0
- package/src/seeders/SeederLoader.js +60 -0
- package/src/seeders/types.d.ts +18 -0
- package/src/seeders/types.d.ts.map +1 -0
- package/src/seeders/types.js +1 -0
- package/src/session/SessionManager.js +1 -1
- package/src/templates/adapters/MySQLAdapter.ts.tpl +109 -85
- package/src/templates/adapters/PostgreSQLAdapter.ts.tpl +129 -88
- package/src/templates/adapters/SQLServerAdapter.ts.tpl +5 -9
- package/src/templates/adapters/SQLiteAdapter.ts.tpl +78 -11
- package/src/templates/features/Queue.ts.tpl +3 -2
- package/src/templates/project/basic/app/Controllers/AuthController.ts.tpl +217 -0
- package/src/templates/project/basic/app/Controllers/UserController.ts.tpl +1 -12
- package/src/templates/project/basic/app/Types/controller.ts.tpl +46 -0
- package/src/templates/project/basic/config/FileLogWriter.ts.tpl +5 -236
- package/src/templates/project/basic/config/SecretsManager.ts.tpl +10 -447
- package/src/templates/project/basic/config/StartupConfigValidator.ts.tpl +9 -268
- package/src/templates/project/basic/config/app.ts.tpl +13 -153
- package/src/templates/project/basic/config/broadcast.ts.tpl +15 -128
- package/src/templates/project/basic/config/cache.ts.tpl +15 -91
- package/src/templates/project/basic/config/cloudflare.ts.tpl +4 -39
- package/src/templates/project/basic/config/constants.ts.tpl +9 -65
- package/src/templates/project/basic/config/database.ts.tpl +29 -122
- package/src/templates/project/basic/config/env.ts.tpl +5 -169
- package/src/templates/project/basic/config/features.ts.tpl +6 -54
- package/src/templates/project/basic/config/index.ts.tpl +8 -23
- package/src/templates/project/basic/config/mail.ts.tpl +15 -114
- package/src/templates/project/basic/config/microservices.ts.tpl +11 -97
- package/src/templates/project/basic/config/middleware.ts.tpl +25 -43
- package/src/templates/project/basic/config/notification.ts.tpl +14 -126
- package/src/templates/project/basic/config/queue.ts.tpl +16 -79
- package/src/templates/project/basic/config/security.ts.tpl +11 -163
- package/src/templates/project/basic/config/startup.ts.tpl +10 -21
- package/src/templates/project/basic/config/storage.ts.tpl +15 -132
- package/src/templates/project/basic/config/type.ts.tpl +33 -451
- package/src/templates/project/basic/database/factories/UserFactory.ts.tpl +80 -0
- package/src/templates/project/basic/database/migrations/create_tasks_table.ts.tpl +28 -0
- package/src/templates/project/basic/database/migrations/create_users_table.ts.tpl +29 -0
- package/src/templates/project/basic/database/seeders/DatabaseSeeder.ts.tpl +19 -0
- package/src/templates/project/basic/database/seeders/UserSeeder.ts.tpl +18 -0
- package/src/templates/project/basic/database/seeders/index.ts.tpl +2 -0
- package/src/templates/project/basic/routes/api.ts.tpl +71 -33
- package/src/templates/project/basic/routes/metrics.ts.tpl +22 -0
- package/src/templates/project/basic/tsconfig.json.tpl +12 -11
- package/src/testing/TestEnvironment.d.ts +40 -0
- package/src/testing/TestEnvironment.d.ts.map +1 -0
- package/src/testing/TestEnvironment.js +141 -0
- package/src/testing/TestHttp.d.ts +29 -0
- package/src/testing/TestHttp.d.ts.map +1 -0
- package/src/testing/TestHttp.js +96 -0
- package/src/testing/index.d.ts +5 -0
- package/src/testing/index.d.ts.map +1 -0
- package/src/testing/index.js +2 -0
- package/src/time/DateTime.d.ts +181 -0
- package/src/time/DateTime.d.ts.map +1 -0
- package/src/time/DateTime.js +300 -0
- package/src/time/index.d.ts +7 -0
- package/src/time/index.d.ts.map +1 -0
- package/src/time/index.js +5 -0
- package/src/tools/http/Http.d.ts.map +1 -1
- package/src/tools/http/Http.js +4 -0
- package/src/tools/mail/drivers/Smtp.js +1 -1
- package/src/tools/queue/drivers/InMemory.d.ts +1 -1
- package/src/tools/queue/drivers/InMemory.d.ts.map +1 -1
- package/src/tools/queue/drivers/InMemory.js +1 -1
- package/src/tools/queue/drivers/Redis.d.ts +1 -1
- package/src/tools/queue/drivers/Redis.d.ts.map +1 -1
- package/src/tools/queue/drivers/Redis.js +1 -1
- package/src/validation/ValidationError.d.ts.map +1 -1
- package/src/validation/ValidationError.js +4 -2
- package/src/validation/Validator.d.ts +49 -16
- package/src/validation/Validator.d.ts.map +1 -1
- package/src/validation/Validator.js +307 -5
- package/src/common/uuid.d.ts +0 -3
- package/src/common/uuid.d.ts.map +0 -1
- package/src/common/uuid.js +0 -30
- package/src/templates/project/basic/.env.example.tpl +0 -74
- package/src/templates/project/basic/.env.tpl +0 -166
- package/src/templates/project/basic/database/migrations/index.ts.tpl +0 -2
|
@@ -1,99 +1,23 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Cache Configuration
|
|
3
|
-
*
|
|
4
|
-
*
|
|
2
|
+
* Cache Configuration (template)
|
|
3
|
+
*
|
|
4
|
+
* Keep this file declarative:
|
|
5
|
+
* - Core owns env parsing/default logic.
|
|
6
|
+
* - Projects can override values by editing `drivers` and `cacheConfigObj`.
|
|
5
7
|
*/
|
|
6
8
|
|
|
7
|
-
import
|
|
8
|
-
import { ErrorFactory , Env} from '@zintrust/core';
|
|
9
|
+
import { cacheConfig as coreCacheConfig } from '@zintrust/core';
|
|
9
10
|
|
|
10
|
-
|
|
11
|
-
const selected = String(name ?? config.default).trim();
|
|
12
|
-
const storeName = selected === 'default' ? String(config.default).trim() : selected;
|
|
13
|
-
const isExplicitSelection =
|
|
14
|
-
name !== undefined && String(name).trim().length > 0 && String(name).trim() !== 'default';
|
|
11
|
+
type CacheConfigShape = typeof coreCacheConfig;
|
|
15
12
|
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
}
|
|
13
|
+
export const drivers = {
|
|
14
|
+
...coreCacheConfig.drivers,
|
|
15
|
+
} satisfies CacheConfigShape['drivers'];
|
|
20
16
|
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
17
|
+
export const cacheConfigObj = {
|
|
18
|
+
...coreCacheConfig,
|
|
19
|
+
drivers,
|
|
20
|
+
} satisfies CacheConfigShape;
|
|
24
21
|
|
|
25
|
-
|
|
26
|
-
throw ErrorFactory.createConfigError('No cache stores are configured');
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
throw ErrorFactory.createConfigError(
|
|
30
|
-
`Cache default store not configured: ${storeName || '<empty>'}`
|
|
31
|
-
);
|
|
32
|
-
};
|
|
33
|
-
|
|
34
|
-
const cacheConfigObj = {
|
|
35
|
-
/**
|
|
36
|
-
* Default cache driver
|
|
37
|
-
*/
|
|
38
|
-
default: (() => {
|
|
39
|
-
const envConnection = Env.get('CACHE_CONNECTION', '').trim();
|
|
40
|
-
|
|
41
|
-
const envDriver =
|
|
42
|
-
typeof (Env as unknown as { CACHE_DRIVER?: unknown }).CACHE_DRIVER === 'string'
|
|
43
|
-
? String((Env as unknown as { CACHE_DRIVER?: unknown }).CACHE_DRIVER)
|
|
44
|
-
: Env.get('CACHE_DRIVER', 'memory');
|
|
45
|
-
|
|
46
|
-
const selected = envConnection.length > 0 ? envConnection : String(envDriver ?? 'memory');
|
|
47
|
-
return selected.trim().toLowerCase();
|
|
48
|
-
})(),
|
|
49
|
-
|
|
50
|
-
/**
|
|
51
|
-
* Cache drivers
|
|
52
|
-
*/
|
|
53
|
-
drivers: {
|
|
54
|
-
memory: {
|
|
55
|
-
driver: 'memory' as const,
|
|
56
|
-
ttl: Env.getInt('CACHE_MEMORY_TTL', 3600),
|
|
57
|
-
},
|
|
58
|
-
redis: {
|
|
59
|
-
driver: 'redis' as const,
|
|
60
|
-
host: Env.get('REDIS_HOST', 'localhost'),
|
|
61
|
-
port: Env.getInt('REDIS_PORT', 6379),
|
|
62
|
-
ttl: Env.getInt('CACHE_REDIS_TTL', 3600),
|
|
63
|
-
},
|
|
64
|
-
mongodb: {
|
|
65
|
-
driver: 'mongodb' as const,
|
|
66
|
-
uri: Env.get('MONGO_URI'),
|
|
67
|
-
db: Env.get('MONGO_DB', 'zintrust_cache'),
|
|
68
|
-
ttl: Env.getInt('CACHE_MONGO_TTL', 3600),
|
|
69
|
-
},
|
|
70
|
-
kv: {
|
|
71
|
-
driver: 'kv' as const,
|
|
72
|
-
ttl: Env.getInt('CACHE_KV_TTL', 3600),
|
|
73
|
-
},
|
|
74
|
-
'kv-remote': {
|
|
75
|
-
driver: 'kv-remote' as const,
|
|
76
|
-
ttl: Env.getInt('CACHE_KV_TTL', 3600),
|
|
77
|
-
},
|
|
78
|
-
},
|
|
79
|
-
|
|
80
|
-
/**
|
|
81
|
-
* Get cache driver config
|
|
82
|
-
*/
|
|
83
|
-
getDriver(name?: string): CacheDriverConfig {
|
|
84
|
-
return getCacheDriver(this, name);
|
|
85
|
-
},
|
|
86
|
-
|
|
87
|
-
/**
|
|
88
|
-
* Key prefix for all cache keys
|
|
89
|
-
*/
|
|
90
|
-
keyPrefix: Env.get('CACHE_KEY_PREFIX', 'zintrust:'),
|
|
91
|
-
|
|
92
|
-
/**
|
|
93
|
-
* Default cache TTL (seconds)
|
|
94
|
-
*/
|
|
95
|
-
ttl: Env.getInt('CACHE_DEFAULT_TTL', 3600),
|
|
96
|
-
};
|
|
97
|
-
|
|
98
|
-
export const cacheConfig = Object.freeze(cacheConfigObj);
|
|
22
|
+
export const cacheConfig = cacheConfigObj;
|
|
99
23
|
export type CacheConfig = typeof cacheConfig;
|
|
@@ -1,43 +1,8 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Cloudflare Workers
|
|
2
|
+
* Cloudflare Workers helpers (template)
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
4
|
+
* Keep this file declarative:
|
|
5
|
+
* - Core owns runtime-specific binding logic.
|
|
6
6
|
*/
|
|
7
7
|
|
|
8
|
-
|
|
9
|
-
import type { DatabaseConfig, ID1Database } from '@zintrust/core';
|
|
10
|
-
|
|
11
|
-
const getWorkersEnv = (): WorkersEnv | null => {
|
|
12
|
-
const env = (globalThis as unknown as { env?: unknown }).env;
|
|
13
|
-
if (env === undefined || env === null) return null;
|
|
14
|
-
if (typeof env !== 'object') return null;
|
|
15
|
-
return env as WorkersEnv;
|
|
16
|
-
};
|
|
17
|
-
|
|
18
|
-
const getD1Binding = (config: DatabaseConfig): ID1Database | null => {
|
|
19
|
-
if (config.d1 !== undefined && config.d1 !== null) return config.d1;
|
|
20
|
-
|
|
21
|
-
const env = getWorkersEnv();
|
|
22
|
-
const envDb = env === null ? undefined : (env['DB'] as ID1Database | undefined);
|
|
23
|
-
if (envDb !== undefined) return envDb;
|
|
24
|
-
|
|
25
|
-
const globalDb = (globalThis as unknown as { DB?: ID1Database }).DB;
|
|
26
|
-
if (globalDb !== undefined) return globalDb;
|
|
27
|
-
|
|
28
|
-
return null;
|
|
29
|
-
};
|
|
30
|
-
|
|
31
|
-
const getKVBinding = (bindingName = 'CACHE'): KVNamespace | null => {
|
|
32
|
-
const env = getWorkersEnv();
|
|
33
|
-
if (env === null) return null;
|
|
34
|
-
|
|
35
|
-
const kv = env[bindingName] as KVNamespace | undefined;
|
|
36
|
-
return kv ?? null;
|
|
37
|
-
};
|
|
38
|
-
|
|
39
|
-
export const Cloudflare = Object.freeze({
|
|
40
|
-
getWorkersEnv,
|
|
41
|
-
getD1Binding,
|
|
42
|
-
getKVBinding,
|
|
43
|
-
});
|
|
8
|
+
export { Cloudflare } from '@zintrust/core';
|
|
@@ -1,70 +1,14 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Framework Constants
|
|
3
|
-
*
|
|
4
|
-
*
|
|
2
|
+
* Framework Constants (template)
|
|
3
|
+
*
|
|
4
|
+
* Keep this file declarative:
|
|
5
|
+
* - Core owns canonical constants.
|
|
5
6
|
*/
|
|
6
7
|
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
X_TRACE_ID: 'X-Trace-Id',
|
|
12
|
-
X_SERVICE_CALL: 'X-Service-Call',
|
|
13
|
-
X_POWERED_BY: 'X-Powered-By',
|
|
14
|
-
X_CONTENT_TYPE_OPTIONS: 'X-Content-Type-Options',
|
|
15
|
-
X_FRAME_OPTIONS: 'X-Frame-Options',
|
|
16
|
-
X_XSS_PROTECTION: 'X-XSS-Protection',
|
|
17
|
-
REFERRER_POLICY: 'Referrer-Policy',
|
|
18
|
-
CONTENT_SECURITY_POLICY: 'Content-Security-Policy',
|
|
19
|
-
} as const;
|
|
20
|
-
|
|
21
|
-
const MIME_TYPES = {
|
|
22
|
-
JSON: 'application/json',
|
|
23
|
-
HTML: 'text/html',
|
|
24
|
-
TEXT: 'text/plain',
|
|
25
|
-
JS: 'text/javascript',
|
|
26
|
-
CSS: 'text/css',
|
|
27
|
-
PNG: 'image/png',
|
|
28
|
-
JPG: 'image/jpg',
|
|
29
|
-
GIF: 'image/gif',
|
|
30
|
-
SVG: 'image/svg+xml',
|
|
31
|
-
WAV: 'audio/wav',
|
|
32
|
-
MP4: 'video/mp4',
|
|
33
|
-
WOFF: 'application/font-woff',
|
|
34
|
-
TTF: 'application/font-ttf',
|
|
35
|
-
EOT: 'application/vnd.ms-fontobject',
|
|
36
|
-
OTF: 'application/font-otf',
|
|
37
|
-
WASM: 'application/wasm',
|
|
38
|
-
} as const;
|
|
39
|
-
|
|
40
|
-
const ENV_KEYS = {
|
|
41
|
-
NODE_ENV: 'NODE_ENV',
|
|
42
|
-
PORT: 'PORT',
|
|
43
|
-
HOST: 'HOST',
|
|
44
|
-
APP_NAME: 'APP_NAME',
|
|
45
|
-
DB_CONNECTION: 'DB_CONNECTION',
|
|
46
|
-
DB_HOST: 'DB_HOST',
|
|
47
|
-
DB_PORT: 'DB_PORT',
|
|
48
|
-
DB_DATABASE: 'DB_DATABASE',
|
|
49
|
-
DB_USERNAME: 'DB_USERNAME',
|
|
50
|
-
DB_PASSWORD: 'DB_PASSWORD', // NOSONARQUBE
|
|
51
|
-
} as const;
|
|
52
|
-
|
|
53
|
-
const DEFAULTS = {
|
|
54
|
-
CONNECTION: 'default',
|
|
55
|
-
DOMAIN: 'default',
|
|
56
|
-
NAMESPACE: 'default',
|
|
57
|
-
} as const;
|
|
58
|
-
|
|
59
|
-
/**
|
|
60
|
-
* Constants namespace - sealed for immutability
|
|
61
|
-
*/
|
|
62
|
-
export const Constants = Object.freeze({
|
|
8
|
+
export {
|
|
9
|
+
Constants,
|
|
10
|
+
DEFAULTS,
|
|
11
|
+
ENV_KEYS,
|
|
63
12
|
HTTP_HEADERS,
|
|
64
13
|
MIME_TYPES,
|
|
65
|
-
|
|
66
|
-
DEFAULTS,
|
|
67
|
-
});
|
|
68
|
-
|
|
69
|
-
// Re-export for backward compatibility
|
|
70
|
-
export { DEFAULTS, ENV_KEYS, HTTP_HEADERS, MIME_TYPES };
|
|
14
|
+
} from '@zintrust/core';
|
|
@@ -1,131 +1,38 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Database Configuration
|
|
3
|
-
*
|
|
4
|
-
*
|
|
2
|
+
* Database Configuration (template)
|
|
3
|
+
*
|
|
4
|
+
* This file is intentionally kept simple and editable:
|
|
5
|
+
* - Developers can add/remove connections in `connections`.
|
|
6
|
+
* - Developers can edit `databaseConfigObj` to customize behavior.
|
|
7
|
+
*
|
|
8
|
+
* Core owns the default logic (sqlite path/name resolution, env handling, etc.).
|
|
5
9
|
*/
|
|
6
10
|
|
|
7
|
-
import {
|
|
8
|
-
import type { DatabaseConfigShape,
|
|
9
|
-
import { ErrorFactory } from '@zintrust/core';
|
|
11
|
+
import { databaseConfig as coreDatabaseConfig } from '@zintrust/core';
|
|
12
|
+
import type { DatabaseConfigShape, DatabaseConnections } from '@zintrust/core';
|
|
10
13
|
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
throw ErrorFactory.createConfigError(`Database connection not configured: ${value}`);
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
return hasOwn(connections, 'sqlite') ? 'sqlite' : (Object.keys(connections)[0] ?? 'sqlite');
|
|
26
|
-
};
|
|
27
|
-
|
|
28
|
-
const getDatabaseConnection = (config: DatabaseConfigShape): DatabaseConnectionConfig => {
|
|
29
|
-
const connName = config.default;
|
|
30
|
-
const resolved = config.connections[connName];
|
|
31
|
-
if (resolved !== undefined) return resolved;
|
|
32
|
-
|
|
33
|
-
// Backwards-compatible fallback.
|
|
34
|
-
const sqliteFallback = config.connections['sqlite'];
|
|
35
|
-
if (sqliteFallback !== undefined) return sqliteFallback;
|
|
36
|
-
|
|
37
|
-
const first = Object.values(config.connections)[0];
|
|
38
|
-
if (first !== undefined) return first;
|
|
39
|
-
|
|
40
|
-
throw ErrorFactory.createConfigError(
|
|
41
|
-
`No database connections are configured (default='${connName}').`
|
|
42
|
-
);
|
|
43
|
-
};
|
|
44
|
-
|
|
45
|
-
const connections = {
|
|
46
|
-
sqlite: {
|
|
47
|
-
driver: 'sqlite' as const,
|
|
48
|
-
database: Env.DB_DATABASE,
|
|
49
|
-
migrations: 'database/migrations',
|
|
50
|
-
},
|
|
51
|
-
d1: {
|
|
52
|
-
driver: 'd1' as const,
|
|
53
|
-
},
|
|
54
|
-
'd1-remote': {
|
|
55
|
-
driver: 'd1-remote' as const,
|
|
56
|
-
},
|
|
57
|
-
postgresql: {
|
|
58
|
-
driver: 'postgresql' as const,
|
|
59
|
-
host: Env.DB_HOST,
|
|
60
|
-
port: Env.DB_PORT,
|
|
61
|
-
database: Env.DB_DATABASE,
|
|
62
|
-
username: Env.DB_USERNAME,
|
|
63
|
-
password: Env.DB_PASSWORD,
|
|
64
|
-
ssl: Env.getBool('DB_SSL', false),
|
|
65
|
-
pooling: {
|
|
66
|
-
enabled: Env.getBool('DB_POOLING', true),
|
|
67
|
-
min: Env.getInt('DB_POOL_MIN', 5),
|
|
68
|
-
max: Env.getInt('DB_POOL_MAX', 20),
|
|
69
|
-
idleTimeout: Env.getInt('DB_IDLE_TIMEOUT', 30000),
|
|
70
|
-
connectionTimeout: Env.getInt('DB_CONNECTION_TIMEOUT', 10000),
|
|
71
|
-
},
|
|
72
|
-
},
|
|
73
|
-
mysql: {
|
|
74
|
-
driver: 'mysql' as const,
|
|
75
|
-
host: Env.DB_HOST,
|
|
76
|
-
port: Env.DB_PORT,
|
|
77
|
-
database: Env.DB_DATABASE,
|
|
78
|
-
username: Env.DB_USERNAME,
|
|
79
|
-
password: Env.DB_PASSWORD,
|
|
80
|
-
pooling: {
|
|
81
|
-
enabled: Env.getBool('DB_POOLING', true),
|
|
82
|
-
min: Env.getInt('DB_POOL_MIN', 5),
|
|
83
|
-
max: Env.getInt('DB_POOL_MAX', 20),
|
|
84
|
-
},
|
|
85
|
-
},
|
|
14
|
+
/**
|
|
15
|
+
* Editable connections map.
|
|
16
|
+
*
|
|
17
|
+
* Defaults are sourced from core so you inherit framework-safe behavior.
|
|
18
|
+
*/
|
|
19
|
+
export const connections = {
|
|
20
|
+
sqlite: coreDatabaseConfig.connections.sqlite,
|
|
21
|
+
d1: coreDatabaseConfig.connections.d1,
|
|
22
|
+
'd1-remote': coreDatabaseConfig.connections['d1-remote'],
|
|
23
|
+
postgresql: coreDatabaseConfig.connections.postgresql,
|
|
24
|
+
mysql: coreDatabaseConfig.connections.mysql,
|
|
86
25
|
} satisfies DatabaseConnections;
|
|
87
26
|
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
* Database connections
|
|
96
|
-
*/
|
|
27
|
+
/**
|
|
28
|
+
* Editable database config object.
|
|
29
|
+
*
|
|
30
|
+
* You can override any top-level keys from core, while keeping core defaults.
|
|
31
|
+
*/
|
|
32
|
+
export const databaseConfigObj = {
|
|
33
|
+
...coreDatabaseConfig,
|
|
97
34
|
connections,
|
|
35
|
+
} satisfies DatabaseConfigShape;
|
|
98
36
|
|
|
99
|
-
|
|
100
|
-
* Get current connection config
|
|
101
|
-
*/
|
|
102
|
-
getConnection(this: DatabaseConfigShape): DatabaseConnectionConfig {
|
|
103
|
-
return getDatabaseConnection(this);
|
|
104
|
-
},
|
|
105
|
-
|
|
106
|
-
/**
|
|
107
|
-
* Enable query logging
|
|
108
|
-
*/
|
|
109
|
-
logging: {
|
|
110
|
-
enabled: Env.DEBUG,
|
|
111
|
-
level: Env.get('DB_LOG_LEVEL', 'debug'),
|
|
112
|
-
},
|
|
113
|
-
|
|
114
|
-
/**
|
|
115
|
-
* Migration settings
|
|
116
|
-
*/
|
|
117
|
-
migrations: {
|
|
118
|
-
directory: 'database/migrations',
|
|
119
|
-
extension: Env.get('DB_MIGRATION_EXT', '.ts'),
|
|
120
|
-
},
|
|
121
|
-
|
|
122
|
-
/**
|
|
123
|
-
* Seeding settings
|
|
124
|
-
*/
|
|
125
|
-
seeders: {
|
|
126
|
-
directory: 'database/seeders',
|
|
127
|
-
},
|
|
128
|
-
};
|
|
129
|
-
|
|
130
|
-
export const databaseConfig = Object.freeze(databaseConfigObj);
|
|
37
|
+
export const databaseConfig = databaseConfigObj;
|
|
131
38
|
export type DatabaseConfig = typeof databaseConfig;
|
|
@@ -1,173 +1,9 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Environment Configuration
|
|
3
|
-
* Type-safe access to environment variables
|
|
2
|
+
* Environment Configuration (template)
|
|
4
3
|
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
4
|
+
* Keep this file declarative:
|
|
5
|
+
* - Core owns env parsing/default logic.
|
|
6
|
+
* - Projects should import `Env` from here (re-exported from core).
|
|
7
7
|
*/
|
|
8
8
|
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
const getProcessLike = (): ProcessLike | undefined => {
|
|
12
|
-
return typeof process === 'undefined' ? undefined : (process as unknown as ProcessLike);
|
|
13
|
-
};
|
|
14
|
-
|
|
15
|
-
const dirnameFromExecPath = (execPath: string, platform?: string): string => {
|
|
16
|
-
const separator = platform === 'win32' ? '\\' : '/';
|
|
17
|
-
const lastSep = execPath.lastIndexOf(separator);
|
|
18
|
-
if (lastSep <= 0) return '';
|
|
19
|
-
return execPath.slice(0, lastSep);
|
|
20
|
-
};
|
|
21
|
-
|
|
22
|
-
// Private helper functions
|
|
23
|
-
const get = (key: string, defaultValue?: string): string => {
|
|
24
|
-
const proc = getProcessLike();
|
|
25
|
-
const env = proc?.env ?? {};
|
|
26
|
-
return env[key] ?? defaultValue ?? '';
|
|
27
|
-
};
|
|
28
|
-
|
|
29
|
-
const getInt = (key: string, defaultValue?: number): number => {
|
|
30
|
-
const proc = getProcessLike();
|
|
31
|
-
const env = proc?.env ?? {};
|
|
32
|
-
const value = env[key];
|
|
33
|
-
if (value === undefined || value === null) return defaultValue ?? 0;
|
|
34
|
-
if (typeof value === 'string' && value.trim() === '') return defaultValue ?? 0;
|
|
35
|
-
return Number.parseInt(value, 10);
|
|
36
|
-
};
|
|
37
|
-
|
|
38
|
-
const getBool = (key: string, defaultValue?: boolean): boolean => {
|
|
39
|
-
const proc = getProcessLike();
|
|
40
|
-
const env = proc?.env ?? {};
|
|
41
|
-
const value = env[key];
|
|
42
|
-
if (value === undefined || value === null) return defaultValue ?? false;
|
|
43
|
-
return value.toLowerCase() === 'true' || value === '1';
|
|
44
|
-
};
|
|
45
|
-
|
|
46
|
-
const getDefaultLogLevel = (): 'debug' | 'info' | 'warn' | 'error' => {
|
|
47
|
-
const NODE_ENV_VALUE = get('NODE_ENV', 'development');
|
|
48
|
-
if (NODE_ENV_VALUE === 'production') return 'info';
|
|
49
|
-
if (NODE_ENV_VALUE === 'testing') return 'error';
|
|
50
|
-
return 'debug';
|
|
51
|
-
};
|
|
52
|
-
|
|
53
|
-
// Sealed namespace with all environment configuration
|
|
54
|
-
export const Env = Object.freeze({
|
|
55
|
-
// Helper functions
|
|
56
|
-
get,
|
|
57
|
-
getInt,
|
|
58
|
-
getBool,
|
|
59
|
-
|
|
60
|
-
// Core
|
|
61
|
-
NODE_ENV: get('NODE_ENV', 'development'),
|
|
62
|
-
// Prefer PORT, fallback to APP_PORT for compatibility
|
|
63
|
-
PORT: getInt('PORT', getInt('APP_PORT', 3000)),
|
|
64
|
-
HOST: get('HOST', 'localhost'),
|
|
65
|
-
APP_NAME: get('APP_NAME', 'ZinTrust'),
|
|
66
|
-
APP_KEY: get('APP_KEY', ''),
|
|
67
|
-
// Optional key rotation support (comma-separated or JSON array of keys)
|
|
68
|
-
APP_PREVIOUS_KEYS: get('APP_PREVIOUS_KEYS', ''),
|
|
69
|
-
|
|
70
|
-
// Database
|
|
71
|
-
DB_CONNECTION: get('DB_CONNECTION', 'sqlite'),
|
|
72
|
-
DB_HOST: get('DB_HOST', 'localhost'),
|
|
73
|
-
DB_PORT: getInt('DB_PORT', 5432),
|
|
74
|
-
// Accept DB_PATH as an alias for sqlite file path (many env templates use it).
|
|
75
|
-
DB_DATABASE: get('DB_DATABASE', get('DB_PATH', 'zintrust')),
|
|
76
|
-
DB_USERNAME: get('DB_USERNAME', 'postgres'),
|
|
77
|
-
DB_PASSWORD: get('DB_PASSWORD', ''),
|
|
78
|
-
DB_READ_HOSTS: get('DB_READ_HOSTS', ''),
|
|
79
|
-
|
|
80
|
-
// Cloudflare
|
|
81
|
-
D1_DATABASE_ID: get('D1_DATABASE_ID'),
|
|
82
|
-
KV_NAMESPACE_ID: get('KV_NAMESPACE_ID'),
|
|
83
|
-
|
|
84
|
-
// Cloudflare proxy services (D1/KV outside Cloudflare)
|
|
85
|
-
D1_REMOTE_URL: get('D1_REMOTE_URL', ''),
|
|
86
|
-
D1_REMOTE_KEY_ID: get('D1_REMOTE_KEY_ID', ''),
|
|
87
|
-
D1_REMOTE_SECRET: get('D1_REMOTE_SECRET', ''),
|
|
88
|
-
D1_REMOTE_MODE: get('D1_REMOTE_MODE', 'registry'),
|
|
89
|
-
|
|
90
|
-
KV_REMOTE_URL: get('KV_REMOTE_URL', ''),
|
|
91
|
-
KV_REMOTE_KEY_ID: get('KV_REMOTE_KEY_ID', ''),
|
|
92
|
-
KV_REMOTE_SECRET: get('KV_REMOTE_SECRET', ''),
|
|
93
|
-
KV_REMOTE_NAMESPACE: get('KV_REMOTE_NAMESPACE', ''),
|
|
94
|
-
|
|
95
|
-
// Proxy client tuning
|
|
96
|
-
ZT_PROXY_SIGNING_WINDOW_MS: getInt('ZT_PROXY_SIGNING_WINDOW_MS', 60000),
|
|
97
|
-
ZT_PROXY_TIMEOUT_MS: getInt('ZT_PROXY_TIMEOUT_MS', 30000),
|
|
98
|
-
|
|
99
|
-
// Cache
|
|
100
|
-
CACHE_DRIVER: get('CACHE_DRIVER', 'memory'),
|
|
101
|
-
REDIS_HOST: get('REDIS_HOST', 'localhost'),
|
|
102
|
-
REDIS_PORT: getInt('REDIS_PORT', 6379),
|
|
103
|
-
REDIS_PASSWORD: get('REDIS_PASSWORD', ''),
|
|
104
|
-
MONGO_URI: get('MONGO_URI'),
|
|
105
|
-
MONGO_DB: get('MONGO_DB', 'zintrust_cache'),
|
|
106
|
-
|
|
107
|
-
// AWS
|
|
108
|
-
AWS_REGION: get('AWS_REGION', 'us-east-1'),
|
|
109
|
-
AWS_LAMBDA_FUNCTION_NAME: get('AWS_LAMBDA_FUNCTION_NAME'),
|
|
110
|
-
AWS_LAMBDA_FUNCTION_VERSION: get('AWS_LAMBDA_FUNCTION_VERSION'),
|
|
111
|
-
AWS_EXECUTION_ENV: get('AWS_EXECUTION_ENV'),
|
|
112
|
-
LAMBDA_TASK_ROOT: get('LAMBDA_TASK_ROOT'),
|
|
113
|
-
|
|
114
|
-
// Microservices
|
|
115
|
-
MICROSERVICES: get('MICROSERVICES'),
|
|
116
|
-
SERVICES: get('SERVICES'),
|
|
117
|
-
MICROSERVICES_TRACING: getBool('MICROSERVICES_TRACING'),
|
|
118
|
-
MICROSERVICES_TRACING_RATE: Number.parseFloat(get('MICROSERVICES_TRACING_RATE', '1.0')),
|
|
119
|
-
DATABASE_ISOLATION: get('DATABASE_ISOLATION', 'shared'),
|
|
120
|
-
SERVICE_API_KEY: get('SERVICE_API_KEY'),
|
|
121
|
-
SERVICE_JWT_SECRET: get('SERVICE_JWT_SECRET'),
|
|
122
|
-
|
|
123
|
-
// Security
|
|
124
|
-
DEBUG: getBool('DEBUG', false),
|
|
125
|
-
ENABLE_MICROSERVICES: getBool('ENABLE_MICROSERVICES', false),
|
|
126
|
-
TOKEN_TTL: getInt('TOKEN_TTL', 3600000),
|
|
127
|
-
TOKEN_LENGTH: getInt('TOKEN_LENGTH', 32),
|
|
128
|
-
|
|
129
|
-
// Encryption interop
|
|
130
|
-
ENCRYPTION_CIPHER: get('ENCRYPTION_CIPHER', ''),
|
|
131
|
-
|
|
132
|
-
// Deployment
|
|
133
|
-
ENVIRONMENT: get('ENVIRONMENT', 'development'),
|
|
134
|
-
REQUEST_TIMEOUT: getInt('REQUEST_TIMEOUT', 30000),
|
|
135
|
-
MAX_BODY_SIZE: getInt('MAX_BODY_SIZE', 10485760),
|
|
136
|
-
SHUTDOWN_TIMEOUT: getInt('SHUTDOWN_TIMEOUT', 10000),
|
|
137
|
-
|
|
138
|
-
// Logging
|
|
139
|
-
LOG_LEVEL: get('LOG_LEVEL', getDefaultLogLevel()) as 'debug' | 'info' | 'warn' | 'error',
|
|
140
|
-
LOG_FORMAT: get('LOG_FORMAT', 'text'),
|
|
141
|
-
DISABLE_LOGGING: getBool('DISABLE_LOGGING', false),
|
|
142
|
-
LOG_HTTP_REQUEST: getBool('LOG_HTTP_REQUEST', false),
|
|
143
|
-
LOG_TO_FILE: getBool('LOG_TO_FILE', false),
|
|
144
|
-
LOG_ROTATION_SIZE: getInt('LOG_ROTATION_SIZE', 10485760),
|
|
145
|
-
LOG_ROTATION_DAYS: getInt('LOG_ROTATION_DAYS', 7),
|
|
146
|
-
|
|
147
|
-
// Paths (safely constructed for Node.js environments)
|
|
148
|
-
NODE_BIN_DIR: (() => {
|
|
149
|
-
try {
|
|
150
|
-
const proc = getProcessLike();
|
|
151
|
-
if (proc?.execPath === null || proc?.execPath === undefined) return '';
|
|
152
|
-
return dirnameFromExecPath(proc.execPath, proc.platform);
|
|
153
|
-
} catch {
|
|
154
|
-
// Fallback for non-Node environments
|
|
155
|
-
return '';
|
|
156
|
-
}
|
|
157
|
-
})(),
|
|
158
|
-
SAFE_PATH: (() => {
|
|
159
|
-
try {
|
|
160
|
-
const proc = getProcessLike();
|
|
161
|
-
if (proc?.execPath === null || proc?.execPath === undefined) return '';
|
|
162
|
-
|
|
163
|
-
const binDir = dirnameFromExecPath(proc.execPath, proc.platform);
|
|
164
|
-
if (proc.platform === 'win32') {
|
|
165
|
-
return [String.raw`C:\Windows\System32`, String.raw`C:\Windows`, binDir].join(';');
|
|
166
|
-
}
|
|
167
|
-
return ['/usr/bin', '/bin', '/usr/sbin', '/sbin', binDir].join(':');
|
|
168
|
-
} catch {
|
|
169
|
-
// Fallback for non-Node environments
|
|
170
|
-
return '';
|
|
171
|
-
}
|
|
172
|
-
})(),
|
|
173
|
-
});
|
|
9
|
+
export { Env } from '@zintrust/core';
|
|
@@ -1,57 +1,9 @@
|
|
|
1
|
-
import { Env } from '@zintrust/core';
|
|
2
|
-
import { Logger } from '@zintrust/core';
|
|
3
|
-
|
|
4
|
-
/**
|
|
5
|
-
* Feature Flags State
|
|
6
|
-
* Internal state managed by the module
|
|
7
|
-
*/
|
|
8
|
-
let _rawQueryEnabled = false;
|
|
9
|
-
|
|
10
1
|
/**
|
|
11
|
-
* Feature Flags
|
|
12
|
-
*
|
|
2
|
+
* Feature Flags (template)
|
|
3
|
+
*
|
|
4
|
+
* Keep this file declarative:
|
|
5
|
+
* - Core owns runtime feature flag behavior.
|
|
13
6
|
*/
|
|
14
|
-
export const FeatureFlags = Object.freeze({
|
|
15
|
-
/**
|
|
16
|
-
* Initialize all feature flags from environment
|
|
17
|
-
* Called once during application bootstrap
|
|
18
|
-
*/
|
|
19
|
-
initialize(): void {
|
|
20
|
-
_rawQueryEnabled = Env.get('USE_RAW_QRY') === 'true';
|
|
21
|
-
|
|
22
|
-
if (_rawQueryEnabled) {
|
|
23
|
-
Logger.warn(
|
|
24
|
-
'⚠️ FEATURE FLAG ENABLED: Raw SQL Queries are now available via adapter.rawQuery()'
|
|
25
|
-
);
|
|
26
|
-
Logger.warn('⚠️ This bypasses QueryBuilder safety - use only when necessary');
|
|
27
|
-
Logger.warn('⚠️ Ensure parameters are properly bound to prevent SQL injection');
|
|
28
|
-
} else {
|
|
29
|
-
Logger.info('🔒 Raw SQL Queries are DISABLED (default, recommended for production)');
|
|
30
|
-
}
|
|
31
|
-
},
|
|
32
|
-
|
|
33
|
-
/**
|
|
34
|
-
* Check if raw queries are enabled
|
|
35
|
-
* Returns cached flag value (no environment lookup)
|
|
36
|
-
*/
|
|
37
|
-
isRawQueryEnabled(): boolean {
|
|
38
|
-
return _rawQueryEnabled;
|
|
39
|
-
},
|
|
40
|
-
|
|
41
|
-
/**
|
|
42
|
-
* Reset flags (primarily for testing)
|
|
43
|
-
*/
|
|
44
|
-
reset(): void {
|
|
45
|
-
_rawQueryEnabled = false;
|
|
46
|
-
},
|
|
47
|
-
|
|
48
|
-
/**
|
|
49
|
-
* Set raw query enabled state
|
|
50
|
-
* Primarily for testing to avoid 'as any' type casting
|
|
51
|
-
*/
|
|
52
|
-
setRawQueryEnabled(enabled: boolean): void {
|
|
53
|
-
_rawQueryEnabled = enabled;
|
|
54
|
-
},
|
|
55
|
-
});
|
|
56
7
|
|
|
57
|
-
export
|
|
8
|
+
export { FeatureFlags } from '@zintrust/core';
|
|
9
|
+
export { FeatureFlags as default } from '@zintrust/core';
|