@zintrust/core 0.1.27 → 0.1.28

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.
Files changed (1499) hide show
  1. package/README.md +185 -166
  2. package/bin/z.ts +10 -0
  3. package/bin/zin.ts +10 -0
  4. package/bin/zintrust-main.ts +130 -0
  5. package/bin/zintrust-microservices.ts +199 -0
  6. package/bin/zintrust.ts +14 -0
  7. package/bin/zt.ts +10 -0
  8. package/dist/src/index.d.ts +258 -0
  9. package/dist/src/index.js +212 -0
  10. package/package.json +140 -42
  11. package/src/auth/Auth.ts +42 -0
  12. package/src/boot/Application.ts +490 -0
  13. package/src/boot/Server.ts +155 -0
  14. package/src/boot/bootstrap.ts +274 -0
  15. package/src/builder/BundleOptimizer.ts +483 -0
  16. package/src/cache/Cache.ts +185 -0
  17. package/src/cache/CacheDriver.ts +39 -0
  18. package/src/cache/CacheDriverRegistry.ts +29 -0
  19. package/src/cache/CacheRuntimeRegistration.ts +24 -0
  20. package/src/cache/drivers/KVDriver.ts +63 -0
  21. package/src/cache/drivers/KVRemoteDriver.ts +97 -0
  22. package/src/cache/drivers/MemoryDriver.ts +85 -0
  23. package/src/cache/drivers/MongoDriver.ts +96 -0
  24. package/src/cache/drivers/RedisDriver.ts +95 -0
  25. package/src/cli/BaseCommand.ts +106 -0
  26. package/src/cli/CLI.ts +280 -0
  27. package/src/cli/ErrorHandler.ts +130 -0
  28. package/src/cli/PromptHelper.ts +203 -0
  29. package/src/cli/commands/AddCommand.ts +1290 -0
  30. package/src/cli/commands/BroadcastWorkCommand.ts +20 -0
  31. package/src/cli/commands/ConfigCommand.ts +422 -0
  32. package/src/cli/commands/CreateCommand.ts +177 -0
  33. package/src/cli/commands/D1MigrateCommand.ts +98 -0
  34. package/src/cli/commands/DbSeedCommand.ts +181 -0
  35. package/src/cli/commands/DebugCommand.ts +71 -0
  36. package/src/cli/commands/FixCommand.ts +84 -0
  37. package/src/cli/commands/JwtDevCommand.ts +154 -0
  38. package/src/cli/commands/KeyGenerateCommand.ts +86 -0
  39. package/src/cli/commands/LogsCleanupCommand.ts +24 -0
  40. package/src/cli/commands/LogsCommand.ts +270 -0
  41. package/src/cli/commands/MakeMailTemplateCommand.ts +119 -0
  42. package/src/cli/commands/MakeNotificationTemplateCommand.ts +164 -0
  43. package/src/cli/commands/MigrateCommand.ts +435 -0
  44. package/src/cli/commands/MigrateWorkerCommand.ts +180 -0
  45. package/src/cli/commands/NewCommand.ts +546 -0
  46. package/src/cli/commands/NotificationWorkCommand.ts +20 -0
  47. package/src/cli/commands/PluginCommand.ts +112 -0
  48. package/src/cli/commands/PrepareCommand.ts +65 -0
  49. package/src/cli/commands/PublishCommand.ts +79 -0
  50. package/src/cli/commands/QACommand.ts +551 -0
  51. package/src/cli/commands/QueueCommand.ts +145 -0
  52. package/src/cli/commands/QueueLockCommand.ts +156 -0
  53. package/src/cli/commands/QueueWorkCommandUtils.ts +54 -0
  54. package/src/cli/commands/ResourceControlCommand.ts +49 -0
  55. package/src/cli/commands/RoutesCommand.ts +316 -0
  56. package/src/cli/commands/SecretsCommand.ts +144 -0
  57. package/src/cli/commands/SimulateCommand.ts +97 -0
  58. package/src/cli/commands/StartCommand.ts +448 -0
  59. package/src/cli/commands/TemplatesCommand.ts +72 -0
  60. package/src/cli/commands/UpgradeCommand.ts +128 -0
  61. package/src/cli/commands/WorkerCommands.ts +373 -0
  62. package/src/cli/commands/createKindWorkCommand.ts +56 -0
  63. package/src/cli/commands/index.ts +28 -0
  64. package/src/cli/commands/runner/index.ts +140 -0
  65. package/src/cli/config/ConfigManager.ts +221 -0
  66. package/src/cli/config/ConfigSchema.ts +263 -0
  67. package/src/cli/config/ConfigValidator.ts +250 -0
  68. package/src/cli/config/index.ts +21 -0
  69. package/src/cli/d1/D1SqlMigrations.ts +289 -0
  70. package/src/cli/d1/WranglerConfig.ts +146 -0
  71. package/src/cli/d1/WranglerD1.ts +28 -0
  72. package/src/cli/debug/Dashboard.ts +227 -0
  73. package/src/cli/env/EnvFileBackfill.ts +80 -0
  74. package/src/cli/index.ts +17 -0
  75. package/src/cli/logger/Logger.ts +193 -0
  76. package/src/cli/scaffolding/ControllerGenerator.ts +633 -0
  77. package/src/cli/scaffolding/FactoryGenerator.ts +430 -0
  78. package/src/cli/scaffolding/FeatureScaffolder.ts +811 -0
  79. package/src/cli/scaffolding/FileGenerator.ts +262 -0
  80. package/src/cli/scaffolding/GovernanceScaffolder.ts +392 -0
  81. package/src/cli/scaffolding/MigrationGenerator.ts +418 -0
  82. package/src/cli/scaffolding/ModelGenerator.ts +337 -0
  83. package/src/cli/scaffolding/ProjectScaffolder.ts +786 -0
  84. package/src/cli/scaffolding/RequestFactoryGenerator.ts +561 -0
  85. package/src/cli/scaffolding/ResponseFactoryGenerator.ts +394 -0
  86. package/src/cli/scaffolding/RouteGenerator.ts +450 -0
  87. package/src/cli/scaffolding/SeederGenerator.ts +428 -0
  88. package/src/cli/scaffolding/ServiceIntegrationTestGenerator.ts +317 -0
  89. package/src/cli/scaffolding/ServiceRequestFactoryGenerator.ts +485 -0
  90. package/src/cli/scaffolding/ServiceScaffolder.ts +449 -0
  91. package/src/cli/scaffolding/TemplateEngine.ts +141 -0
  92. package/src/cli/scaffolding/TemplateGenerator.ts +255 -0
  93. package/src/cli/scaffolding/WorkflowGenerator.ts +221 -0
  94. package/src/cli/scaffolding/index.ts +89 -0
  95. package/src/cli/services/VersionChecker.ts +308 -0
  96. package/src/cli/utils/DatabaseCliUtils.ts +75 -0
  97. package/src/cli/utils/DistPackager.ts +154 -0
  98. package/src/cli/utils/EnvFileLoader.ts +218 -0
  99. package/src/cli/utils/spawn.ts +116 -0
  100. package/src/cli/workers/QueueWorkRunner.ts +377 -0
  101. package/src/collections/Collection.ts +241 -0
  102. package/src/collections/index.ts +2 -0
  103. package/src/common/AwsSigV4.ts +116 -0
  104. package/src/common/ExternalServiceUtils.ts +151 -0
  105. package/src/common/HealthRoutes.ts +144 -0
  106. package/src/common/RemoteSignedJson.ts +117 -0
  107. package/src/common/index.ts +380 -0
  108. package/src/common/utility.ts +140 -0
  109. package/src/config/FileLogWriter.ts +342 -0
  110. package/src/config/SecretsManager.ts +452 -0
  111. package/src/config/StartupConfigValidator.ts +268 -0
  112. package/src/config/app.ts +229 -0
  113. package/src/config/broadcast.ts +194 -0
  114. package/src/config/cache.ts +175 -0
  115. package/src/config/cloudflare.ts +43 -0
  116. package/src/config/constants.ts +167 -0
  117. package/src/config/database.ts +344 -0
  118. package/src/config/env.ts +245 -0
  119. package/src/config/features.ts +57 -0
  120. package/src/config/index.ts +46 -0
  121. package/src/config/logger.ts +387 -0
  122. package/src/config/logging/HttpLogger.ts +121 -0
  123. package/src/config/logging/KvLogger.ts +181 -0
  124. package/src/config/logging/SlackLogger.ts +156 -0
  125. package/src/config/mail.ts +186 -0
  126. package/src/config/microservices.ts +104 -0
  127. package/src/config/middleware.ts +360 -0
  128. package/src/config/notification.ts +205 -0
  129. package/src/config/queue.ts +205 -0
  130. package/src/config/redis.ts +84 -0
  131. package/src/config/security.ts +170 -0
  132. package/src/config/startup.ts +29 -0
  133. package/src/config/storage.ts +205 -0
  134. package/src/config/type.ts +611 -0
  135. package/src/config/workers.ts +257 -0
  136. package/src/container/ServiceContainer.ts +108 -0
  137. package/src/database/Paginator.ts +141 -0
  138. package/src/database/factories/.gitkeep +0 -0
  139. package/src/database/migrations/.gitkeep +0 -0
  140. package/src/database/migrations/index.ts +2 -0
  141. package/src/database/seeders/.gitkeep +0 -0
  142. package/src/events/EventDispatcher.ts +141 -0
  143. package/src/events/index.ts +2 -0
  144. package/src/exceptions/ZintrustError.ts +290 -0
  145. package/src/functions/cloudflare.ts +28 -0
  146. package/src/functions/deno.ts +25 -0
  147. package/src/functions/lambda.ts +30 -0
  148. package/src/health/RuntimeHealthProbes.ts +75 -0
  149. package/src/health/StartupHealthChecks.ts +156 -0
  150. package/src/http/Controller.ts +64 -0
  151. package/src/http/ErrorResponse.ts +76 -0
  152. package/src/http/FileUpload.ts +194 -0
  153. package/src/http/Kernel.ts +356 -0
  154. package/src/http/Request.ts +382 -0
  155. package/src/http/RequestContext.ts +194 -0
  156. package/src/http/Response.ts +93 -0
  157. package/src/http/ValidationHelper.ts +131 -0
  158. package/src/http/error-pages/ErrorPageRenderer.ts +108 -0
  159. package/src/http/middleware/BodyParsingMiddleware.ts +294 -0
  160. package/src/http/middleware/FileUploadMiddleware.ts +91 -0
  161. package/src/http/parsers/BodyParsers.ts +188 -0
  162. package/src/http/parsers/MultipartParser.ts +211 -0
  163. package/src/http/parsers/MultipartParserRegistry.ts +54 -0
  164. package/src/http/validated.ts +55 -0
  165. package/src/index.ts +436 -0
  166. package/src/lang/lang.ts +22 -0
  167. package/src/microservices/MicroserviceBootstrap.ts +411 -0
  168. package/src/microservices/MicroserviceGenerator.ts +534 -0
  169. package/src/microservices/MicroserviceManager.ts +409 -0
  170. package/src/microservices/PostgresAdapter.ts +475 -0
  171. package/src/microservices/RequestTracingMiddleware.ts +207 -0
  172. package/src/microservices/ServiceAuthMiddleware.ts +363 -0
  173. package/src/microservices/ServiceBundler.ts +432 -0
  174. package/src/microservices/ServiceHealthMonitor.ts +512 -0
  175. package/src/middleware/AuthMiddleware.ts +29 -0
  176. package/src/middleware/CsrfMiddleware.ts +177 -0
  177. package/src/middleware/ErrorHandlerMiddleware.ts +52 -0
  178. package/src/middleware/JwtAuthMiddleware.ts +99 -0
  179. package/src/middleware/LoggingMiddleware.ts +55 -0
  180. package/src/middleware/MiddlewareStack.ts +69 -0
  181. package/src/middleware/RateLimiter.ts +338 -0
  182. package/src/middleware/SanitizeBodyMiddleware.ts +41 -0
  183. package/src/middleware/SecurityMiddleware.ts +145 -0
  184. package/src/middleware/SessionMiddleware.ts +26 -0
  185. package/src/middleware/ValidationMiddleware.ts +296 -0
  186. package/src/middleware/index.ts +11 -0
  187. package/src/migrations/MigrationDiscovery.ts +17 -0
  188. package/src/migrations/MigrationLoader.ts +59 -0
  189. package/src/migrations/MigrationLock.ts +42 -0
  190. package/src/migrations/Migrator.ts +16 -0
  191. package/src/migrations/MigratorFactory.ts +473 -0
  192. package/src/migrations/enum/index.ts +114 -0
  193. package/src/migrations/schema/Blueprint.ts +240 -0
  194. package/src/migrations/schema/Schema.ts +228 -0
  195. package/src/migrations/schema/SchemaCompiler.ts +375 -0
  196. package/src/migrations/schema/index.ts +17 -0
  197. package/src/migrations/schema/types.ts +113 -0
  198. package/src/migrations/types.ts +52 -0
  199. package/src/node-singletons/async_hooks.ts +12 -0
  200. package/src/node-singletons/child-process.ts +7 -0
  201. package/src/node-singletons/crypto.ts +21 -0
  202. package/src/node-singletons/events.ts +7 -0
  203. package/src/node-singletons/fs.ts +38 -0
  204. package/src/node-singletons/http.ts +13 -0
  205. package/src/node-singletons/index.ts +38 -0
  206. package/src/node-singletons/module.ts +12 -0
  207. package/src/node-singletons/net.ts +10 -0
  208. package/src/node-singletons/os.ts +20 -0
  209. package/src/node-singletons/path.ts +11 -0
  210. package/src/node-singletons/perf-hooks.ts +11 -0
  211. package/src/node-singletons/process.ts +58 -0
  212. package/src/node-singletons/readline.ts +12 -0
  213. package/src/node-singletons/tls.ts +10 -0
  214. package/src/node-singletons/url.ts +11 -0
  215. package/src/node-singletons/util.ts +6 -0
  216. package/src/node.ts +32 -0
  217. package/src/observability/OpenTelemetry.ts +295 -0
  218. package/src/observability/PrometheusMetrics.ts +161 -0
  219. package/src/openapi/OpenApiGenerator.ts +452 -0
  220. package/src/orm/ConnectionManager.ts +759 -0
  221. package/src/orm/Database.ts +521 -0
  222. package/src/orm/DatabaseAdapter.ts +169 -0
  223. package/src/orm/DatabaseAdapterRegistry.ts +38 -0
  224. package/src/orm/DatabaseRuntimeRegistration.ts +87 -0
  225. package/src/orm/Model.ts +1025 -0
  226. package/src/orm/QueryBuilder.ts +1492 -0
  227. package/src/orm/Relationships.ts +419 -0
  228. package/src/orm/Schema.ts +403 -0
  229. package/src/orm/SchemaCompiler.ts +160 -0
  230. package/src/orm/adapters/D1Adapter.ts +149 -0
  231. package/src/orm/adapters/D1RemoteAdapter.ts +236 -0
  232. package/src/orm/adapters/MySQLAdapter.ts +129 -0
  233. package/src/orm/adapters/PostgreSQLAdapter.ts +148 -0
  234. package/src/orm/adapters/SQLServerAdapter.ts +99 -0
  235. package/src/orm/adapters/SQLiteAdapter.ts +314 -0
  236. package/src/orm/maintenance/SqliteMaintenance.ts +22 -0
  237. package/src/orm/migrations/MigrationStore.ts +232 -0
  238. package/src/performance/Benchmark.ts +456 -0
  239. package/src/performance/CodeGenerationBenchmark.ts +338 -0
  240. package/src/performance/Optimizer.ts +846 -0
  241. package/src/performance/establish-baseline.ts +69 -0
  242. package/src/profiling/MemoryProfiler.ts +111 -0
  243. package/src/profiling/N1Detector.ts +144 -0
  244. package/src/profiling/QueryLogger.ts +233 -0
  245. package/src/profiling/RequestProfiler.ts +123 -0
  246. package/src/profiling/types.ts +86 -0
  247. package/src/routes/CoreRoutes.ts +47 -0
  248. package/src/routes/RouteRegistry.ts +106 -0
  249. package/src/routes/Router.ts +435 -0
  250. package/src/routes/common.ts +50 -0
  251. package/src/routes/doc.ts +139 -0
  252. package/src/routes/error.ts +185 -0
  253. package/src/routes/errorPages.ts +125 -0
  254. package/src/routes/health.ts +6 -0
  255. package/src/routes/metrics.ts +24 -0
  256. package/src/routes/openapi.ts +93 -0
  257. package/src/routes/publicRoot.ts +125 -0
  258. package/src/runtime/PluginAutoImports.ts +67 -0
  259. package/src/runtime/PluginManager.ts +468 -0
  260. package/src/runtime/PluginRegistry.ts +232 -0
  261. package/src/runtime/RuntimeAdapter.ts +291 -0
  262. package/src/runtime/StartupConfigFileRegistry.ts +64 -0
  263. package/src/runtime/adapters/CloudflareAdapter.ts +273 -0
  264. package/src/runtime/adapters/DenoAdapter.ts +269 -0
  265. package/src/runtime/adapters/FargateAdapter.ts +230 -0
  266. package/src/runtime/adapters/LambdaAdapter.ts +475 -0
  267. package/src/runtime/adapters/NodeServerAdapter.ts +289 -0
  268. package/src/runtime/getKernel.ts +34 -0
  269. package/src/runtime/useFileLoader.ts +234 -0
  270. package/src/scheduler/ScheduleRunner.ts +219 -0
  271. package/src/scheduler/index.ts +2 -0
  272. package/src/scheduler/types.ts +18 -0
  273. package/src/schedules/index.ts +1 -0
  274. package/src/schedules/log-cleanup.ts +21 -0
  275. package/src/scripts/GenerateEnvArtifacts.ts +203 -0
  276. package/src/scripts/TemplateImportsCheck.ts +180 -0
  277. package/src/scripts/TemplateSync.ts +489 -0
  278. package/src/security/CsrfTokenManager.ts +102 -0
  279. package/src/security/EncryptedEnvelope.ts +373 -0
  280. package/src/security/Encryptor.ts +259 -0
  281. package/src/security/Hash.ts +97 -0
  282. package/src/security/JwtManager.ts +375 -0
  283. package/src/security/PasswordResetTokenBroker.ts +193 -0
  284. package/src/security/Sanitizer.ts +614 -0
  285. package/src/security/SignedRequest.ts +315 -0
  286. package/src/security/StartupSecretValidation.ts +162 -0
  287. package/src/security/TokenRevocation.ts +64 -0
  288. package/src/security/UrlValidator.ts +57 -0
  289. package/src/security/Xss.ts +74 -0
  290. package/src/security/XssProtection.ts +396 -0
  291. package/src/seeders/SeederDiscovery.ts +22 -0
  292. package/src/seeders/SeederLoader.ts +88 -0
  293. package/src/seeders/types.ts +20 -0
  294. package/src/services/default/test/.env +19 -0
  295. package/src/services/default/users/.env +19 -0
  296. package/src/services/ecommerce/docker-compose.yml +155 -0
  297. package/src/services/ecommerce/init-db.sql +71 -0
  298. package/src/services/ecommerce/orders/service.config.json +20 -0
  299. package/src/services/ecommerce/payments/service.config.json +19 -0
  300. package/src/services/ecommerce/users/Dockerfile +57 -0
  301. package/src/services/ecommerce/users/service.config.json +20 -0
  302. package/src/session/SessionManager.ts +241 -0
  303. package/src/session/index.ts +2 -0
  304. package/src/start.ts +68 -0
  305. package/src/testing/TestEnvironment.ts +213 -0
  306. package/src/testing/TestHttp.ts +134 -0
  307. package/src/testing/index.ts +11 -0
  308. package/src/time/DateTime.ts +548 -0
  309. package/src/time/index.ts +7 -0
  310. package/src/toolkit/Secrets/EnvFile.ts +80 -0
  311. package/src/toolkit/Secrets/Manifest.ts +119 -0
  312. package/src/toolkit/Secrets/index.ts +192 -0
  313. package/src/toolkit/Secrets/providers/AwsSecretsManager.ts +189 -0
  314. package/src/toolkit/Secrets/providers/CloudflareKv.ts +94 -0
  315. package/src/tools/broadcast/Broadcast.ts +116 -0
  316. package/src/tools/broadcast/BroadcastRegistry.ts +38 -0
  317. package/src/tools/broadcast/BroadcastRuntimeRegistration.ts +31 -0
  318. package/src/tools/broadcast/drivers/BaseDriver.ts +10 -0
  319. package/src/tools/broadcast/drivers/InMemory.ts +20 -0
  320. package/src/tools/broadcast/drivers/Pusher.ts +107 -0
  321. package/src/tools/broadcast/drivers/Redis.ts +49 -0
  322. package/src/tools/broadcast/drivers/RedisHttps.ts +74 -0
  323. package/src/tools/broadcast/index.ts +8 -0
  324. package/src/tools/http/Http.ts +234 -0
  325. package/src/tools/http/HttpResponse.ts +118 -0
  326. package/src/tools/http/index.ts +11 -0
  327. package/src/tools/mail/Mail.ts +1 -0
  328. package/src/tools/mail/MailDriverRegistry.ts +34 -0
  329. package/src/tools/mail/attachments.ts +47 -0
  330. package/src/tools/mail/drivers/BaseDriver.ts +10 -0
  331. package/src/tools/mail/drivers/Mailgun.ts +130 -0
  332. package/src/tools/mail/drivers/SendGrid.ts +103 -0
  333. package/src/tools/mail/drivers/Ses.ts +179 -0
  334. package/src/tools/mail/drivers/Smtp.ts +490 -0
  335. package/src/tools/mail/index.ts +218 -0
  336. package/src/tools/mail/template-loader.ts +128 -0
  337. package/src/tools/mail/template-utils.ts +19 -0
  338. package/src/tools/mail/templates/auth-password-reset.html +231 -0
  339. package/src/tools/mail/templates/auth-welcome.html +236 -0
  340. package/src/tools/mail/templates/general.html +109 -0
  341. package/src/tools/mail/templates/index.ts +143 -0
  342. package/src/tools/mail/templates/job-completed.html +188 -0
  343. package/src/tools/mail/templates/notifications-new-comment.html +228 -0
  344. package/src/tools/mail/templates/password-reset.html +221 -0
  345. package/src/tools/mail/templates/performance-report.html +258 -0
  346. package/src/tools/mail/templates/welcome.html +187 -0
  347. package/src/tools/mail/templates/worker-alert.html +229 -0
  348. package/src/tools/mail/testing.ts +59 -0
  349. package/src/tools/notification/Driver.ts +11 -0
  350. package/src/tools/notification/Notification.ts +55 -0
  351. package/src/tools/notification/NotificationChannelRegistry.ts +46 -0
  352. package/src/tools/notification/NotificationRuntimeRegistration.ts +36 -0
  353. package/src/tools/notification/Registry.ts +35 -0
  354. package/src/tools/notification/Service.ts +136 -0
  355. package/src/tools/notification/config.ts +7 -0
  356. package/src/tools/notification/drivers/BaseDriver.ts +10 -0
  357. package/src/tools/notification/drivers/Console.ts +18 -0
  358. package/src/tools/notification/drivers/Slack.ts +42 -0
  359. package/src/tools/notification/drivers/SlackNotification.ts +17 -0
  360. package/src/tools/notification/drivers/Termii.ts +43 -0
  361. package/src/tools/notification/drivers/Twilio.ts +77 -0
  362. package/src/tools/notification/drivers/TwilioNotification.ts +19 -0
  363. package/src/tools/notification/templates/markdown/index.ts +49 -0
  364. package/src/tools/notification/templates/markdown/notifications/new-follow.md +12 -0
  365. package/src/tools/notification/templates/markdown/registry.ts +45 -0
  366. package/src/tools/notification/testing.ts +50 -0
  367. package/src/tools/notification/testingHelpers.ts +44 -0
  368. package/src/tools/queue/AdvancedQueue.ts +458 -0
  369. package/src/tools/queue/DeduplicationBuilder.ts +111 -0
  370. package/src/tools/queue/LockProvider.ts +335 -0
  371. package/src/tools/queue/Queue.ts +78 -0
  372. package/src/tools/queue/QueueExtensions.ts +161 -0
  373. package/src/tools/queue/QueueRuntimeRegistration.ts +29 -0
  374. package/src/tools/queue/drivers/Database.ts +183 -0
  375. package/src/tools/queue/drivers/InMemory.ts +64 -0
  376. package/src/tools/queue/drivers/Redis.ts +33 -0
  377. package/src/tools/queue/index.ts +28 -0
  378. package/src/tools/redis/RedisKeyManager.ts +142 -0
  379. package/src/tools/storage/LocalSignedUrl.ts +142 -0
  380. package/src/tools/storage/StorageDiskRegistry.ts +45 -0
  381. package/src/tools/storage/StorageDriverRegistry.ts +31 -0
  382. package/src/tools/storage/StorageRuntimeRegistration.ts +32 -0
  383. package/src/tools/storage/drivers/Gcs.ts +201 -0
  384. package/src/tools/storage/drivers/Local.ts +116 -0
  385. package/src/tools/storage/drivers/R2.ts +99 -0
  386. package/src/tools/storage/drivers/S3.ts +347 -0
  387. package/src/tools/storage/index.ts +217 -0
  388. package/src/tools/storage/testing.ts +80 -0
  389. package/src/tools/templates/MarkdownRenderer.ts +354 -0
  390. package/src/tools/templates/index.ts +5 -0
  391. package/src/types/Queue.ts +71 -0
  392. package/src/types/redis.d.ts +11 -0
  393. package/src/validation/ValidationError.ts +79 -0
  394. package/src/validation/Validator.ts +681 -0
  395. package/src/zintrust.plugins.ts +13 -0
  396. package/bin/z.d.ts +0 -7
  397. package/bin/z.d.ts.map +0 -1
  398. package/bin/z.js +0 -7
  399. package/bin/zin.d.ts +0 -7
  400. package/bin/zin.d.ts.map +0 -1
  401. package/bin/zin.js +0 -7
  402. package/bin/zintrust-main.d.ts +0 -9
  403. package/bin/zintrust-main.d.ts.map +0 -1
  404. package/bin/zintrust-main.js +0 -110
  405. package/bin/zintrust-microservices.d.ts +0 -7
  406. package/bin/zintrust-microservices.d.ts.map +0 -1
  407. package/bin/zintrust-microservices.js +0 -165
  408. package/bin/zintrust.d.ts +0 -10
  409. package/bin/zintrust.d.ts.map +0 -1
  410. package/bin/zintrust.js +0 -10
  411. package/bin/zt.d.ts +0 -7
  412. package/bin/zt.d.ts.map +0 -1
  413. package/bin/zt.js +0 -7
  414. package/src/auth/Auth.d.ts +0 -20
  415. package/src/auth/Auth.d.ts.map +0 -1
  416. package/src/auth/Auth.js +0 -33
  417. package/src/boot/Application.d.ts +0 -31
  418. package/src/boot/Application.d.ts.map +0 -1
  419. package/src/boot/Application.js +0 -351
  420. package/src/boot/Server.d.ts +0 -24
  421. package/src/boot/Server.d.ts.map +0 -1
  422. package/src/boot/Server.js +0 -117
  423. package/src/boot/bootstrap.d.ts +0 -7
  424. package/src/boot/bootstrap.d.ts.map +0 -1
  425. package/src/boot/bootstrap.js +0 -232
  426. package/src/builder/BundleOptimizer.d.ts +0 -42
  427. package/src/builder/BundleOptimizer.d.ts.map +0 -1
  428. package/src/builder/BundleOptimizer.js +0 -352
  429. package/src/cache/Cache.d.ts +0 -39
  430. package/src/cache/Cache.d.ts.map +0 -1
  431. package/src/cache/Cache.js +0 -142
  432. package/src/cache/CacheDriver.d.ts +0 -32
  433. package/src/cache/CacheDriver.d.ts.map +0 -1
  434. package/src/cache/CacheDriver.js +0 -6
  435. package/src/cache/CacheDriverRegistry.d.ts +0 -15
  436. package/src/cache/CacheDriverRegistry.d.ts.map +0 -1
  437. package/src/cache/CacheDriverRegistry.js +0 -19
  438. package/src/cache/CacheRuntimeRegistration.d.ts +0 -11
  439. package/src/cache/CacheRuntimeRegistration.d.ts.map +0 -1
  440. package/src/cache/CacheRuntimeRegistration.js +0 -21
  441. package/src/cache/drivers/KVDriver.d.ts +0 -12
  442. package/src/cache/drivers/KVDriver.d.ts.map +0 -1
  443. package/src/cache/drivers/KVDriver.js +0 -55
  444. package/src/cache/drivers/KVRemoteDriver.d.ts +0 -11
  445. package/src/cache/drivers/KVRemoteDriver.d.ts.map +0 -1
  446. package/src/cache/drivers/KVRemoteDriver.js +0 -70
  447. package/src/cache/drivers/MemoryDriver.d.ts +0 -12
  448. package/src/cache/drivers/MemoryDriver.d.ts.map +0 -1
  449. package/src/cache/drivers/MemoryDriver.js +0 -71
  450. package/src/cache/drivers/MongoDriver.d.ts +0 -17
  451. package/src/cache/drivers/MongoDriver.d.ts.map +0 -1
  452. package/src/cache/drivers/MongoDriver.js +0 -80
  453. package/src/cache/drivers/RedisDriver.d.ts +0 -12
  454. package/src/cache/drivers/RedisDriver.d.ts.map +0 -1
  455. package/src/cache/drivers/RedisDriver.js +0 -84
  456. package/src/cli/BaseCommand.d.ts +0 -41
  457. package/src/cli/BaseCommand.d.ts.map +0 -1
  458. package/src/cli/BaseCommand.js +0 -69
  459. package/src/cli/CLI.d.ts +0 -21
  460. package/src/cli/CLI.d.ts.map +0 -1
  461. package/src/cli/CLI.js +0 -242
  462. package/src/cli/ErrorHandler.d.ts +0 -23
  463. package/src/cli/ErrorHandler.d.ts.map +0 -1
  464. package/src/cli/ErrorHandler.js +0 -99
  465. package/src/cli/PromptHelper.d.ts +0 -47
  466. package/src/cli/PromptHelper.d.ts.map +0 -1
  467. package/src/cli/PromptHelper.js +0 -156
  468. package/src/cli/commands/AddCommand.d.ts +0 -96
  469. package/src/cli/commands/AddCommand.d.ts.map +0 -1
  470. package/src/cli/commands/AddCommand.js +0 -932
  471. package/src/cli/commands/BroadcastWorkCommand.d.ts +0 -10
  472. package/src/cli/commands/BroadcastWorkCommand.d.ts.map +0 -1
  473. package/src/cli/commands/BroadcastWorkCommand.js +0 -16
  474. package/src/cli/commands/ConfigCommand.d.ts +0 -15
  475. package/src/cli/commands/ConfigCommand.d.ts.map +0 -1
  476. package/src/cli/commands/ConfigCommand.js +0 -307
  477. package/src/cli/commands/CreateCommand.d.ts +0 -15
  478. package/src/cli/commands/CreateCommand.d.ts.map +0 -1
  479. package/src/cli/commands/CreateCommand.js +0 -143
  480. package/src/cli/commands/D1MigrateCommand.d.ts +0 -19
  481. package/src/cli/commands/D1MigrateCommand.d.ts.map +0 -1
  482. package/src/cli/commands/D1MigrateCommand.js +0 -71
  483. package/src/cli/commands/DbSeedCommand.d.ts +0 -9
  484. package/src/cli/commands/DbSeedCommand.d.ts.map +0 -1
  485. package/src/cli/commands/DbSeedCommand.js +0 -139
  486. package/src/cli/commands/DebugCommand.d.ts +0 -15
  487. package/src/cli/commands/DebugCommand.d.ts.map +0 -1
  488. package/src/cli/commands/DebugCommand.js +0 -52
  489. package/src/cli/commands/FixCommand.d.ts +0 -15
  490. package/src/cli/commands/FixCommand.d.ts.map +0 -1
  491. package/src/cli/commands/FixCommand.js +0 -68
  492. package/src/cli/commands/JwtDevCommand.d.ts +0 -8
  493. package/src/cli/commands/JwtDevCommand.d.ts.map +0 -1
  494. package/src/cli/commands/JwtDevCommand.js +0 -114
  495. package/src/cli/commands/KeyGenerateCommand.d.ts +0 -9
  496. package/src/cli/commands/KeyGenerateCommand.d.ts.map +0 -1
  497. package/src/cli/commands/KeyGenerateCommand.js +0 -76
  498. package/src/cli/commands/LogsCleanupCommand.d.ts +0 -6
  499. package/src/cli/commands/LogsCleanupCommand.d.ts.map +0 -1
  500. package/src/cli/commands/LogsCleanupCommand.js +0 -20
  501. package/src/cli/commands/LogsCommand.d.ts +0 -19
  502. package/src/cli/commands/LogsCommand.d.ts.map +0 -1
  503. package/src/cli/commands/LogsCommand.js +0 -217
  504. package/src/cli/commands/MakeMailTemplateCommand.d.ts +0 -10
  505. package/src/cli/commands/MakeMailTemplateCommand.d.ts.map +0 -1
  506. package/src/cli/commands/MakeMailTemplateCommand.js +0 -76
  507. package/src/cli/commands/MakeNotificationTemplateCommand.d.ts +0 -10
  508. package/src/cli/commands/MakeNotificationTemplateCommand.d.ts.map +0 -1
  509. package/src/cli/commands/MakeNotificationTemplateCommand.js +0 -115
  510. package/src/cli/commands/MigrateCommand.d.ts +0 -15
  511. package/src/cli/commands/MigrateCommand.d.ts.map +0 -1
  512. package/src/cli/commands/MigrateCommand.js +0 -302
  513. package/src/cli/commands/MigrateWorkerCommand.d.ts +0 -9
  514. package/src/cli/commands/MigrateWorkerCommand.d.ts.map +0 -1
  515. package/src/cli/commands/MigrateWorkerCommand.js +0 -136
  516. package/src/cli/commands/NewCommand.d.ts +0 -37
  517. package/src/cli/commands/NewCommand.d.ts.map +0 -1
  518. package/src/cli/commands/NewCommand.js +0 -408
  519. package/src/cli/commands/NotificationWorkCommand.d.ts +0 -10
  520. package/src/cli/commands/NotificationWorkCommand.d.ts.map +0 -1
  521. package/src/cli/commands/NotificationWorkCommand.js +0 -16
  522. package/src/cli/commands/PluginCommand.d.ts +0 -9
  523. package/src/cli/commands/PluginCommand.d.ts.map +0 -1
  524. package/src/cli/commands/PluginCommand.js +0 -98
  525. package/src/cli/commands/PrepareCommand.d.ts +0 -8
  526. package/src/cli/commands/PrepareCommand.d.ts.map +0 -1
  527. package/src/cli/commands/PrepareCommand.js +0 -51
  528. package/src/cli/commands/PublishCommand.d.ts +0 -5
  529. package/src/cli/commands/PublishCommand.d.ts.map +0 -1
  530. package/src/cli/commands/PublishCommand.js +0 -54
  531. package/src/cli/commands/QACommand.d.ts +0 -33
  532. package/src/cli/commands/QACommand.d.ts.map +0 -1
  533. package/src/cli/commands/QACommand.js +0 -480
  534. package/src/cli/commands/QueueCommand.d.ts +0 -10
  535. package/src/cli/commands/QueueCommand.d.ts.map +0 -1
  536. package/src/cli/commands/QueueCommand.js +0 -113
  537. package/src/cli/commands/QueueLockCommand.d.ts +0 -7
  538. package/src/cli/commands/QueueLockCommand.d.ts.map +0 -1
  539. package/src/cli/commands/QueueLockCommand.js +0 -138
  540. package/src/cli/commands/QueueWorkCommandUtils.d.ts +0 -10
  541. package/src/cli/commands/QueueWorkCommandUtils.d.ts.map +0 -1
  542. package/src/cli/commands/QueueWorkCommandUtils.js +0 -43
  543. package/src/cli/commands/ResourceControlCommand.d.ts +0 -6
  544. package/src/cli/commands/ResourceControlCommand.d.ts.map +0 -1
  545. package/src/cli/commands/ResourceControlCommand.js +0 -43
  546. package/src/cli/commands/RoutesCommand.d.ts +0 -10
  547. package/src/cli/commands/RoutesCommand.d.ts.map +0 -1
  548. package/src/cli/commands/RoutesCommand.js +0 -251
  549. package/src/cli/commands/SecretsCommand.d.ts +0 -16
  550. package/src/cli/commands/SecretsCommand.d.ts.map +0 -1
  551. package/src/cli/commands/SecretsCommand.js +0 -91
  552. package/src/cli/commands/SimulateCommand.d.ts +0 -12
  553. package/src/cli/commands/SimulateCommand.d.ts.map +0 -1
  554. package/src/cli/commands/SimulateCommand.js +0 -79
  555. package/src/cli/commands/StartCommand.d.ts +0 -5
  556. package/src/cli/commands/StartCommand.d.ts.map +0 -1
  557. package/src/cli/commands/StartCommand.js +0 -326
  558. package/src/cli/commands/TemplatesCommand.d.ts +0 -3
  559. package/src/cli/commands/TemplatesCommand.d.ts.map +0 -1
  560. package/src/cli/commands/TemplatesCommand.js +0 -65
  561. package/src/cli/commands/UpgradeCommand.d.ts +0 -16
  562. package/src/cli/commands/UpgradeCommand.d.ts.map +0 -1
  563. package/src/cli/commands/UpgradeCommand.js +0 -107
  564. package/src/cli/commands/WorkerCommands.d.ts +0 -17
  565. package/src/cli/commands/WorkerCommands.d.ts.map +0 -1
  566. package/src/cli/commands/WorkerCommands.js +0 -288
  567. package/src/cli/commands/createKindWorkCommand.d.ts +0 -9
  568. package/src/cli/commands/createKindWorkCommand.d.ts.map +0 -1
  569. package/src/cli/commands/createKindWorkCommand.js +0 -33
  570. package/src/cli/commands/index.d.ts +0 -24
  571. package/src/cli/commands/index.d.ts.map +0 -1
  572. package/src/cli/commands/index.js +0 -23
  573. package/src/cli/commands/runner/index.d.ts +0 -3
  574. package/src/cli/commands/runner/index.d.ts.map +0 -1
  575. package/src/cli/commands/runner/index.js +0 -139
  576. package/src/cli/config/ConfigManager.d.ts +0 -42
  577. package/src/cli/config/ConfigManager.d.ts.map +0 -1
  578. package/src/cli/config/ConfigManager.js +0 -175
  579. package/src/cli/config/ConfigSchema.d.ts +0 -195
  580. package/src/cli/config/ConfigSchema.d.ts.map +0 -1
  581. package/src/cli/config/ConfigSchema.js +0 -172
  582. package/src/cli/config/ConfigValidator.d.ts +0 -41
  583. package/src/cli/config/ConfigValidator.d.ts.map +0 -1
  584. package/src/cli/config/ConfigValidator.js +0 -200
  585. package/src/cli/config/index.d.ts +0 -8
  586. package/src/cli/config/index.d.ts.map +0 -1
  587. package/src/cli/config/index.js +0 -7
  588. package/src/cli/d1/D1SqlMigrations.d.ts +0 -20
  589. package/src/cli/d1/D1SqlMigrations.d.ts.map +0 -1
  590. package/src/cli/d1/D1SqlMigrations.js +0 -230
  591. package/src/cli/d1/WranglerConfig.d.ts +0 -4
  592. package/src/cli/d1/WranglerConfig.d.ts.map +0 -1
  593. package/src/cli/d1/WranglerConfig.js +0 -122
  594. package/src/cli/d1/WranglerD1.d.ts +0 -11
  595. package/src/cli/d1/WranglerD1.d.ts.map +0 -1
  596. package/src/cli/d1/WranglerD1.js +0 -16
  597. package/src/cli/debug/Dashboard.d.ts +0 -34
  598. package/src/cli/debug/Dashboard.d.ts.map +0 -1
  599. package/src/cli/debug/Dashboard.js +0 -152
  600. package/src/cli/env/EnvFileBackfill.d.ts +0 -10
  601. package/src/cli/env/EnvFileBackfill.d.ts.map +0 -1
  602. package/src/cli/env/EnvFileBackfill.js +0 -64
  603. package/src/cli/index.d.ts +0 -15
  604. package/src/cli/index.d.ts.map +0 -1
  605. package/src/cli/index.js +0 -15
  606. package/src/cli/logger/Logger.d.ts +0 -43
  607. package/src/cli/logger/Logger.d.ts.map +0 -1
  608. package/src/cli/logger/Logger.js +0 -137
  609. package/src/cli/scaffolding/ControllerGenerator.d.ts +0 -44
  610. package/src/cli/scaffolding/ControllerGenerator.d.ts.map +0 -1
  611. package/src/cli/scaffolding/ControllerGenerator.js +0 -575
  612. package/src/cli/scaffolding/FactoryGenerator.d.ts +0 -47
  613. package/src/cli/scaffolding/FactoryGenerator.d.ts.map +0 -1
  614. package/src/cli/scaffolding/FactoryGenerator.js +0 -358
  615. package/src/cli/scaffolding/FeatureScaffolder.d.ts +0 -40
  616. package/src/cli/scaffolding/FeatureScaffolder.d.ts.map +0 -1
  617. package/src/cli/scaffolding/FeatureScaffolder.js +0 -747
  618. package/src/cli/scaffolding/FileGenerator.d.ts +0 -31
  619. package/src/cli/scaffolding/FileGenerator.d.ts.map +0 -1
  620. package/src/cli/scaffolding/FileGenerator.js +0 -222
  621. package/src/cli/scaffolding/GovernanceScaffolder.d.ts +0 -23
  622. package/src/cli/scaffolding/GovernanceScaffolder.d.ts.map +0 -1
  623. package/src/cli/scaffolding/GovernanceScaffolder.js +0 -327
  624. package/src/cli/scaffolding/MigrationGenerator.d.ts +0 -45
  625. package/src/cli/scaffolding/MigrationGenerator.d.ts.map +0 -1
  626. package/src/cli/scaffolding/MigrationGenerator.js +0 -344
  627. package/src/cli/scaffolding/ModelGenerator.d.ts +0 -81
  628. package/src/cli/scaffolding/ModelGenerator.d.ts.map +0 -1
  629. package/src/cli/scaffolding/ModelGenerator.js +0 -259
  630. package/src/cli/scaffolding/ProjectScaffolder.d.ts +0 -66
  631. package/src/cli/scaffolding/ProjectScaffolder.d.ts.map +0 -1
  632. package/src/cli/scaffolding/ProjectScaffolder.js +0 -629
  633. package/src/cli/scaffolding/RequestFactoryGenerator.d.ts +0 -50
  634. package/src/cli/scaffolding/RequestFactoryGenerator.d.ts.map +0 -1
  635. package/src/cli/scaffolding/RequestFactoryGenerator.js +0 -465
  636. package/src/cli/scaffolding/ResponseFactoryGenerator.d.ts +0 -43
  637. package/src/cli/scaffolding/ResponseFactoryGenerator.d.ts.map +0 -1
  638. package/src/cli/scaffolding/ResponseFactoryGenerator.js +0 -322
  639. package/src/cli/scaffolding/RouteGenerator.d.ts +0 -66
  640. package/src/cli/scaffolding/RouteGenerator.d.ts.map +0 -1
  641. package/src/cli/scaffolding/RouteGenerator.js +0 -361
  642. package/src/cli/scaffolding/SeederGenerator.d.ts +0 -52
  643. package/src/cli/scaffolding/SeederGenerator.d.ts.map +0 -1
  644. package/src/cli/scaffolding/SeederGenerator.js +0 -334
  645. package/src/cli/scaffolding/ServiceIntegrationTestGenerator.d.ts +0 -40
  646. package/src/cli/scaffolding/ServiceIntegrationTestGenerator.d.ts.map +0 -1
  647. package/src/cli/scaffolding/ServiceIntegrationTestGenerator.js +0 -268
  648. package/src/cli/scaffolding/ServiceRequestFactoryGenerator.d.ts +0 -45
  649. package/src/cli/scaffolding/ServiceRequestFactoryGenerator.d.ts.map +0 -1
  650. package/src/cli/scaffolding/ServiceRequestFactoryGenerator.js +0 -397
  651. package/src/cli/scaffolding/ServiceScaffolder.d.ts +0 -45
  652. package/src/cli/scaffolding/ServiceScaffolder.d.ts.map +0 -1
  653. package/src/cli/scaffolding/ServiceScaffolder.js +0 -390
  654. package/src/cli/scaffolding/TemplateEngine.d.ts +0 -42
  655. package/src/cli/scaffolding/TemplateEngine.d.ts.map +0 -1
  656. package/src/cli/scaffolding/TemplateEngine.js +0 -107
  657. package/src/cli/scaffolding/TemplateGenerator.d.ts +0 -40
  658. package/src/cli/scaffolding/TemplateGenerator.d.ts.map +0 -1
  659. package/src/cli/scaffolding/TemplateGenerator.js +0 -172
  660. package/src/cli/scaffolding/WorkflowGenerator.d.ts +0 -31
  661. package/src/cli/scaffolding/WorkflowGenerator.d.ts.map +0 -1
  662. package/src/cli/scaffolding/WorkflowGenerator.js +0 -193
  663. package/src/cli/scaffolding/index.d.ts +0 -37
  664. package/src/cli/scaffolding/index.d.ts.map +0 -1
  665. package/src/cli/scaffolding/index.js +0 -20
  666. package/src/cli/services/VersionChecker.d.ts +0 -82
  667. package/src/cli/services/VersionChecker.d.ts.map +0 -1
  668. package/src/cli/services/VersionChecker.js +0 -258
  669. package/src/cli/utils/DatabaseCliUtils.d.ts +0 -20
  670. package/src/cli/utils/DatabaseCliUtils.d.ts.map +0 -1
  671. package/src/cli/utils/DatabaseCliUtils.js +0 -54
  672. package/src/cli/utils/DistPackager.d.ts +0 -8
  673. package/src/cli/utils/DistPackager.d.ts.map +0 -1
  674. package/src/cli/utils/DistPackager.js +0 -102
  675. package/src/cli/utils/EnvFileLoader.d.ts +0 -21
  676. package/src/cli/utils/EnvFileLoader.d.ts.map +0 -1
  677. package/src/cli/utils/EnvFileLoader.js +0 -166
  678. package/src/cli/utils/spawn.d.ts +0 -11
  679. package/src/cli/utils/spawn.d.ts.map +0 -1
  680. package/src/cli/utils/spawn.js +0 -92
  681. package/src/cli/workers/QueueWorkRunner.d.ts +0 -23
  682. package/src/cli/workers/QueueWorkRunner.d.ts.map +0 -1
  683. package/src/cli/workers/QueueWorkRunner.js +0 -263
  684. package/src/collections/Collection.d.ts +0 -30
  685. package/src/collections/Collection.d.ts.map +0 -1
  686. package/src/collections/Collection.js +0 -181
  687. package/src/collections/index.d.ts +0 -3
  688. package/src/collections/index.d.ts.map +0 -1
  689. package/src/collections/index.js +0 -1
  690. package/src/common/AwsSigV4.d.ts +0 -41
  691. package/src/common/AwsSigV4.d.ts.map +0 -1
  692. package/src/common/AwsSigV4.js +0 -69
  693. package/src/common/ExternalServiceUtils.d.ts +0 -63
  694. package/src/common/ExternalServiceUtils.d.ts.map +0 -1
  695. package/src/common/ExternalServiceUtils.js +0 -116
  696. package/src/common/HealthRoutes.d.ts +0 -10
  697. package/src/common/HealthRoutes.d.ts.map +0 -1
  698. package/src/common/HealthRoutes.js +0 -114
  699. package/src/common/RemoteSignedJson.d.ts +0 -21
  700. package/src/common/RemoteSignedJson.d.ts.map +0 -1
  701. package/src/common/RemoteSignedJson.js +0 -86
  702. package/src/common/index.d.ts +0 -134
  703. package/src/common/index.d.ts.map +0 -1
  704. package/src/common/index.js +0 -328
  705. package/src/common/utility.d.ts +0 -38
  706. package/src/common/utility.d.ts.map +0 -1
  707. package/src/common/utility.js +0 -101
  708. package/src/config/FileLogWriter.d.ts +0 -23
  709. package/src/config/FileLogWriter.d.ts.map +0 -1
  710. package/src/config/FileLogWriter.js +0 -273
  711. package/src/config/SecretsManager.d.ts +0 -81
  712. package/src/config/SecretsManager.d.ts.map +0 -1
  713. package/src/config/SecretsManager.js +0 -355
  714. package/src/config/StartupConfigValidator.d.ts +0 -7
  715. package/src/config/StartupConfigValidator.d.ts.map +0 -1
  716. package/src/config/StartupConfigValidator.js +0 -179
  717. package/src/config/app.d.ts +0 -62
  718. package/src/config/app.d.ts.map +0 -1
  719. package/src/config/app.js +0 -184
  720. package/src/config/broadcast.d.ts +0 -22
  721. package/src/config/broadcast.d.ts.map +0 -1
  722. package/src/config/broadcast.js +0 -138
  723. package/src/config/cache.d.ts +0 -23
  724. package/src/config/cache.d.ts.map +0 -1
  725. package/src/config/cache.js +0 -125
  726. package/src/config/cloudflare.d.ts +0 -14
  727. package/src/config/cloudflare.d.ts.map +0 -1
  728. package/src/config/cloudflare.js +0 -38
  729. package/src/config/constants.d.ts +0 -238
  730. package/src/config/constants.d.ts.map +0 -1
  731. package/src/config/constants.js +0 -145
  732. package/src/config/database.d.ts +0 -41
  733. package/src/config/database.d.ts.map +0 -1
  734. package/src/config/database.js +0 -286
  735. package/src/config/env.d.ts +0 -128
  736. package/src/config/env.d.ts.map +0 -1
  737. package/src/config/env.js +0 -220
  738. package/src/config/features.d.ts +0 -27
  739. package/src/config/features.d.ts.map +0 -1
  740. package/src/config/features.js +0 -49
  741. package/src/config/index.d.ts +0 -241
  742. package/src/config/index.d.ts.map +0 -1
  743. package/src/config/index.js +0 -41
  744. package/src/config/logger.d.ts +0 -19
  745. package/src/config/logger.d.ts.map +0 -1
  746. package/src/config/logger.js +0 -338
  747. package/src/config/logging/HttpLogger.d.ts +0 -23
  748. package/src/config/logging/HttpLogger.d.ts.map +0 -1
  749. package/src/config/logging/HttpLogger.js +0 -93
  750. package/src/config/logging/KvLogger.d.ts +0 -22
  751. package/src/config/logging/KvLogger.d.ts.map +0 -1
  752. package/src/config/logging/KvLogger.js +0 -143
  753. package/src/config/logging/SlackLogger.d.ts +0 -23
  754. package/src/config/logging/SlackLogger.d.ts.map +0 -1
  755. package/src/config/logging/SlackLogger.js +0 -119
  756. package/src/config/mail.d.ts +0 -27
  757. package/src/config/mail.d.ts.map +0 -1
  758. package/src/config/mail.js +0 -154
  759. package/src/config/microservices.d.ts +0 -88
  760. package/src/config/microservices.d.ts.map +0 -1
  761. package/src/config/microservices.js +0 -90
  762. package/src/config/middleware.d.ts +0 -48
  763. package/src/config/middleware.d.ts.map +0 -1
  764. package/src/config/middleware.js +0 -205
  765. package/src/config/notification.d.ts +0 -24
  766. package/src/config/notification.d.ts.map +0 -1
  767. package/src/config/notification.js +0 -149
  768. package/src/config/queue.d.ts +0 -57
  769. package/src/config/queue.d.ts.map +0 -1
  770. package/src/config/queue.js +0 -144
  771. package/src/config/redis.d.ts +0 -17
  772. package/src/config/redis.d.ts.map +0 -1
  773. package/src/config/redis.js +0 -54
  774. package/src/config/security.d.ts +0 -123
  775. package/src/config/security.d.ts.map +0 -1
  776. package/src/config/security.js +0 -154
  777. package/src/config/startup.d.ts +0 -25
  778. package/src/config/startup.d.ts.map +0 -1
  779. package/src/config/startup.js +0 -16
  780. package/src/config/storage.d.ts +0 -45
  781. package/src/config/storage.d.ts.map +0 -1
  782. package/src/config/storage.js +0 -161
  783. package/src/config/type.d.ts +0 -492
  784. package/src/config/type.d.ts.map +0 -1
  785. package/src/config/type.js +0 -10
  786. package/src/config/workers.d.ts +0 -13
  787. package/src/config/workers.d.ts.map +0 -1
  788. package/src/config/workers.js +0 -173
  789. package/src/container/ServiceContainer.d.ts +0 -25
  790. package/src/container/ServiceContainer.d.ts.map +0 -1
  791. package/src/container/ServiceContainer.js +0 -75
  792. package/src/database/Paginator.d.ts +0 -37
  793. package/src/database/Paginator.d.ts.map +0 -1
  794. package/src/database/Paginator.js +0 -81
  795. package/src/database/migrations/index.d.ts +0 -2
  796. package/src/database/migrations/index.d.ts.map +0 -1
  797. package/src/database/migrations/index.js +0 -2
  798. package/src/events/EventDispatcher.d.ts +0 -16
  799. package/src/events/EventDispatcher.d.ts.map +0 -1
  800. package/src/events/EventDispatcher.js +0 -92
  801. package/src/events/index.d.ts +0 -3
  802. package/src/events/index.d.ts.map +0 -1
  803. package/src/events/index.js +0 -1
  804. package/src/exceptions/ZintrustError.d.ts +0 -98
  805. package/src/exceptions/ZintrustError.d.ts.map +0 -1
  806. package/src/exceptions/ZintrustError.js +0 -170
  807. package/src/functions/cloudflare.d.ts +0 -5
  808. package/src/functions/cloudflare.d.ts.map +0 -1
  809. package/src/functions/cloudflare.js +0 -23
  810. package/src/functions/deno.d.ts +0 -3
  811. package/src/functions/deno.d.ts.map +0 -1
  812. package/src/functions/deno.js +0 -20
  813. package/src/functions/lambda.d.ts +0 -2
  814. package/src/functions/lambda.d.ts.map +0 -1
  815. package/src/functions/lambda.js +0 -26
  816. package/src/health/RuntimeHealthProbes.d.ts +0 -13
  817. package/src/health/RuntimeHealthProbes.d.ts.map +0 -1
  818. package/src/health/RuntimeHealthProbes.js +0 -62
  819. package/src/health/StartupHealthChecks.d.ts +0 -26
  820. package/src/health/StartupHealthChecks.d.ts.map +0 -1
  821. package/src/health/StartupHealthChecks.js +0 -124
  822. package/src/http/Controller.d.ts +0 -20
  823. package/src/http/Controller.d.ts.map +0 -1
  824. package/src/http/Controller.js +0 -46
  825. package/src/http/ErrorResponse.d.ts +0 -28
  826. package/src/http/ErrorResponse.d.ts.map +0 -1
  827. package/src/http/ErrorResponse.js +0 -42
  828. package/src/http/FileUpload.d.ts +0 -68
  829. package/src/http/FileUpload.d.ts.map +0 -1
  830. package/src/http/FileUpload.js +0 -120
  831. package/src/http/Kernel.d.ts +0 -29
  832. package/src/http/Kernel.d.ts.map +0 -1
  833. package/src/http/Kernel.js +0 -254
  834. package/src/http/Request.d.ts +0 -64
  835. package/src/http/Request.d.ts.map +0 -1
  836. package/src/http/Request.js +0 -237
  837. package/src/http/RequestContext.d.ts +0 -26
  838. package/src/http/RequestContext.d.ts.map +0 -1
  839. package/src/http/RequestContext.js +0 -153
  840. package/src/http/Response.d.ts +0 -32
  841. package/src/http/Response.d.ts.map +0 -1
  842. package/src/http/Response.js +0 -70
  843. package/src/http/ValidationHelper.d.ts +0 -78
  844. package/src/http/ValidationHelper.d.ts.map +0 -1
  845. package/src/http/ValidationHelper.js +0 -121
  846. package/src/http/error-pages/ErrorPageRenderer.d.ts +0 -17
  847. package/src/http/error-pages/ErrorPageRenderer.d.ts.map +0 -1
  848. package/src/http/error-pages/ErrorPageRenderer.js +0 -89
  849. package/src/http/middleware/BodyParsingMiddleware.d.ts +0 -12
  850. package/src/http/middleware/BodyParsingMiddleware.d.ts.map +0 -1
  851. package/src/http/middleware/BodyParsingMiddleware.js +0 -251
  852. package/src/http/middleware/FileUploadMiddleware.d.ts +0 -12
  853. package/src/http/middleware/FileUploadMiddleware.d.ts.map +0 -1
  854. package/src/http/middleware/FileUploadMiddleware.js +0 -74
  855. package/src/http/parsers/BodyParsers.d.ts +0 -32
  856. package/src/http/parsers/BodyParsers.d.ts.map +0 -1
  857. package/src/http/parsers/BodyParsers.js +0 -159
  858. package/src/http/parsers/MultipartParser.d.ts +0 -33
  859. package/src/http/parsers/MultipartParser.d.ts.map +0 -1
  860. package/src/http/parsers/MultipartParser.js +0 -156
  861. package/src/http/parsers/MultipartParserRegistry.d.ts +0 -34
  862. package/src/http/parsers/MultipartParserRegistry.d.ts.map +0 -1
  863. package/src/http/parsers/MultipartParserRegistry.js +0 -20
  864. package/src/http/validated.d.ts +0 -12
  865. package/src/http/validated.d.ts.map +0 -1
  866. package/src/http/validated.js +0 -41
  867. package/src/index.d.ts +0 -258
  868. package/src/index.d.ts.map +0 -1
  869. package/src/index.js +0 -212
  870. package/src/lang/lang.d.ts +0 -23
  871. package/src/lang/lang.d.ts.map +0 -1
  872. package/src/lang/lang.js +0 -22
  873. package/src/microservices/MicroserviceBootstrap.d.ts +0 -75
  874. package/src/microservices/MicroserviceBootstrap.d.ts.map +0 -1
  875. package/src/microservices/MicroserviceBootstrap.js +0 -288
  876. package/src/microservices/MicroserviceGenerator.d.ts +0 -27
  877. package/src/microservices/MicroserviceGenerator.d.ts.map +0 -1
  878. package/src/microservices/MicroserviceGenerator.js +0 -436
  879. package/src/microservices/MicroserviceManager.d.ts +0 -68
  880. package/src/microservices/MicroserviceManager.d.ts.map +0 -1
  881. package/src/microservices/MicroserviceManager.js +0 -268
  882. package/src/microservices/PostgresAdapter.d.ts +0 -90
  883. package/src/microservices/PostgresAdapter.d.ts.map +0 -1
  884. package/src/microservices/PostgresAdapter.js +0 -306
  885. package/src/microservices/RequestTracingMiddleware.d.ts +0 -41
  886. package/src/microservices/RequestTracingMiddleware.d.ts.map +0 -1
  887. package/src/microservices/RequestTracingMiddleware.js +0 -125
  888. package/src/microservices/ServiceAuthMiddleware.d.ts +0 -58
  889. package/src/microservices/ServiceAuthMiddleware.d.ts.map +0 -1
  890. package/src/microservices/ServiceAuthMiddleware.js +0 -240
  891. package/src/microservices/ServiceBundler.d.ts +0 -45
  892. package/src/microservices/ServiceBundler.d.ts.map +0 -1
  893. package/src/microservices/ServiceBundler.js +0 -299
  894. package/src/microservices/ServiceHealthMonitor.d.ts +0 -96
  895. package/src/microservices/ServiceHealthMonitor.d.ts.map +0 -1
  896. package/src/microservices/ServiceHealthMonitor.js +0 -383
  897. package/src/middleware/AuthMiddleware.d.ts +0 -10
  898. package/src/middleware/AuthMiddleware.d.ts.map +0 -1
  899. package/src/middleware/AuthMiddleware.js +0 -16
  900. package/src/middleware/CsrfMiddleware.d.ts +0 -29
  901. package/src/middleware/CsrfMiddleware.d.ts.map +0 -1
  902. package/src/middleware/CsrfMiddleware.js +0 -132
  903. package/src/middleware/ErrorHandlerMiddleware.d.ts +0 -6
  904. package/src/middleware/ErrorHandlerMiddleware.d.ts.map +0 -1
  905. package/src/middleware/ErrorHandlerMiddleware.js +0 -41
  906. package/src/middleware/JwtAuthMiddleware.d.ts +0 -11
  907. package/src/middleware/JwtAuthMiddleware.d.ts.map +0 -1
  908. package/src/middleware/JwtAuthMiddleware.js +0 -73
  909. package/src/middleware/LoggingMiddleware.d.ts +0 -9
  910. package/src/middleware/LoggingMiddleware.d.ts.map +0 -1
  911. package/src/middleware/LoggingMiddleware.js +0 -41
  912. package/src/middleware/MiddlewareStack.d.ts +0 -27
  913. package/src/middleware/MiddlewareStack.d.ts.map +0 -1
  914. package/src/middleware/MiddlewareStack.js +0 -43
  915. package/src/middleware/RateLimiter.d.ts +0 -57
  916. package/src/middleware/RateLimiter.d.ts.map +0 -1
  917. package/src/middleware/RateLimiter.js +0 -270
  918. package/src/middleware/SanitizeBodyMiddleware.d.ts +0 -12
  919. package/src/middleware/SanitizeBodyMiddleware.d.ts.map +0 -1
  920. package/src/middleware/SanitizeBodyMiddleware.js +0 -31
  921. package/src/middleware/SecurityMiddleware.d.ts +0 -33
  922. package/src/middleware/SecurityMiddleware.d.ts.map +0 -1
  923. package/src/middleware/SecurityMiddleware.js +0 -106
  924. package/src/middleware/SessionMiddleware.d.ts +0 -8
  925. package/src/middleware/SessionMiddleware.d.ts.map +0 -1
  926. package/src/middleware/SessionMiddleware.js +0 -15
  927. package/src/middleware/ValidationMiddleware.d.ts +0 -25
  928. package/src/middleware/ValidationMiddleware.d.ts.map +0 -1
  929. package/src/middleware/ValidationMiddleware.js +0 -251
  930. package/src/middleware/index.d.ts +0 -11
  931. package/src/middleware/index.d.ts.map +0 -1
  932. package/src/middleware/index.js +0 -10
  933. package/src/migrations/MigrationDiscovery.d.ts +0 -5
  934. package/src/migrations/MigrationDiscovery.d.ts.map +0 -1
  935. package/src/migrations/MigrationDiscovery.js +0 -16
  936. package/src/migrations/MigrationLoader.d.ts +0 -5
  937. package/src/migrations/MigrationLoader.d.ts.map +0 -1
  938. package/src/migrations/MigrationLoader.js +0 -43
  939. package/src/migrations/MigrationLock.d.ts +0 -4
  940. package/src/migrations/MigrationLock.d.ts.map +0 -1
  941. package/src/migrations/MigrationLock.js +0 -33
  942. package/src/migrations/Migrator.d.ts +0 -23
  943. package/src/migrations/Migrator.d.ts.map +0 -1
  944. package/src/migrations/Migrator.js +0 -4
  945. package/src/migrations/MigratorFactory.d.ts +0 -25
  946. package/src/migrations/MigratorFactory.d.ts.map +0 -1
  947. package/src/migrations/MigratorFactory.js +0 -339
  948. package/src/migrations/enum/index.d.ts +0 -93
  949. package/src/migrations/enum/index.d.ts.map +0 -1
  950. package/src/migrations/enum/index.js +0 -92
  951. package/src/migrations/schema/Blueprint.d.ts +0 -5
  952. package/src/migrations/schema/Blueprint.d.ts.map +0 -1
  953. package/src/migrations/schema/Blueprint.js +0 -191
  954. package/src/migrations/schema/Schema.d.ts +0 -8
  955. package/src/migrations/schema/Schema.d.ts.map +0 -1
  956. package/src/migrations/schema/Schema.js +0 -142
  957. package/src/migrations/schema/SchemaCompiler.d.ts +0 -20
  958. package/src/migrations/schema/SchemaCompiler.d.ts.map +0 -1
  959. package/src/migrations/schema/SchemaCompiler.js +0 -270
  960. package/src/migrations/schema/index.d.ts +0 -5
  961. package/src/migrations/schema/index.d.ts.map +0 -1
  962. package/src/migrations/schema/index.js +0 -3
  963. package/src/migrations/schema/types.d.ts +0 -87
  964. package/src/migrations/schema/types.d.ts.map +0 -1
  965. package/src/migrations/schema/types.js +0 -1
  966. package/src/migrations/types.d.ts +0 -45
  967. package/src/migrations/types.d.ts.map +0 -1
  968. package/src/migrations/types.js +0 -1
  969. package/src/node-singletons/async_hooks.d.ts +0 -9
  970. package/src/node-singletons/async_hooks.d.ts.map +0 -1
  971. package/src/node-singletons/async_hooks.js +0 -8
  972. package/src/node-singletons/child-process.d.ts +0 -7
  973. package/src/node-singletons/child-process.d.ts.map +0 -1
  974. package/src/node-singletons/child-process.js +0 -6
  975. package/src/node-singletons/crypto.d.ts +0 -7
  976. package/src/node-singletons/crypto.d.ts.map +0 -1
  977. package/src/node-singletons/crypto.js +0 -6
  978. package/src/node-singletons/events.d.ts +0 -7
  979. package/src/node-singletons/events.d.ts.map +0 -1
  980. package/src/node-singletons/events.js +0 -6
  981. package/src/node-singletons/fs.d.ts +0 -12
  982. package/src/node-singletons/fs.d.ts.map +0 -1
  983. package/src/node-singletons/fs.js +0 -14
  984. package/src/node-singletons/http.d.ts +0 -8
  985. package/src/node-singletons/http.d.ts.map +0 -1
  986. package/src/node-singletons/http.js +0 -6
  987. package/src/node-singletons/index.d.ts +0 -34
  988. package/src/node-singletons/index.d.ts.map +0 -1
  989. package/src/node-singletons/index.js +0 -35
  990. package/src/node-singletons/net.d.ts +0 -9
  991. package/src/node-singletons/net.d.ts.map +0 -1
  992. package/src/node-singletons/net.js +0 -8
  993. package/src/node-singletons/os.d.ts +0 -18
  994. package/src/node-singletons/os.d.ts.map +0 -1
  995. package/src/node-singletons/os.js +0 -17
  996. package/src/node-singletons/path.d.ts +0 -9
  997. package/src/node-singletons/path.d.ts.map +0 -1
  998. package/src/node-singletons/path.js +0 -8
  999. package/src/node-singletons/perf-hooks.d.ts +0 -9
  1000. package/src/node-singletons/perf-hooks.d.ts.map +0 -1
  1001. package/src/node-singletons/perf-hooks.js +0 -8
  1002. package/src/node-singletons/process.d.ts +0 -23
  1003. package/src/node-singletons/process.d.ts.map +0 -1
  1004. package/src/node-singletons/process.js +0 -8
  1005. package/src/node-singletons/readline.d.ts +0 -10
  1006. package/src/node-singletons/readline.d.ts.map +0 -1
  1007. package/src/node-singletons/readline.js +0 -8
  1008. package/src/node-singletons/tls.d.ts +0 -9
  1009. package/src/node-singletons/tls.d.ts.map +0 -1
  1010. package/src/node-singletons/tls.js +0 -8
  1011. package/src/node-singletons/url.d.ts +0 -9
  1012. package/src/node-singletons/url.d.ts.map +0 -1
  1013. package/src/node-singletons/url.js +0 -8
  1014. package/src/node-singletons/util.d.ts +0 -6
  1015. package/src/node-singletons/util.d.ts.map +0 -1
  1016. package/src/node-singletons/util.js +0 -5
  1017. package/src/node.d.ts +0 -9
  1018. package/src/node.d.ts.map +0 -1
  1019. package/src/node.js +0 -13
  1020. package/src/observability/OpenTelemetry.d.ts +0 -62
  1021. package/src/observability/OpenTelemetry.d.ts.map +0 -1
  1022. package/src/observability/OpenTelemetry.js +0 -167
  1023. package/src/observability/PrometheusMetrics.d.ts +0 -25
  1024. package/src/observability/PrometheusMetrics.d.ts.map +0 -1
  1025. package/src/observability/PrometheusMetrics.js +0 -114
  1026. package/src/openapi/OpenApiGenerator.d.ts +0 -68
  1027. package/src/openapi/OpenApiGenerator.d.ts.map +0 -1
  1028. package/src/openapi/OpenApiGenerator.js +0 -287
  1029. package/src/orm/ConnectionManager.d.ts +0 -125
  1030. package/src/orm/ConnectionManager.d.ts.map +0 -1
  1031. package/src/orm/ConnectionManager.js +0 -571
  1032. package/src/orm/Database.d.ts +0 -35
  1033. package/src/orm/Database.d.ts.map +0 -1
  1034. package/src/orm/Database.js +0 -350
  1035. package/src/orm/DatabaseAdapter.d.ts +0 -117
  1036. package/src/orm/DatabaseAdapter.d.ts.map +0 -1
  1037. package/src/orm/DatabaseAdapter.js +0 -57
  1038. package/src/orm/DatabaseAdapterRegistry.d.ts +0 -14
  1039. package/src/orm/DatabaseAdapterRegistry.d.ts.map +0 -1
  1040. package/src/orm/DatabaseAdapterRegistry.js +0 -21
  1041. package/src/orm/DatabaseRuntimeRegistration.d.ts +0 -17
  1042. package/src/orm/DatabaseRuntimeRegistration.d.ts.map +0 -1
  1043. package/src/orm/DatabaseRuntimeRegistration.js +0 -73
  1044. package/src/orm/Model.d.ts +0 -135
  1045. package/src/orm/Model.d.ts.map +0 -1
  1046. package/src/orm/Model.js +0 -533
  1047. package/src/orm/QueryBuilder.d.ts +0 -98
  1048. package/src/orm/QueryBuilder.d.ts.map +0 -1
  1049. package/src/orm/QueryBuilder.js +0 -1057
  1050. package/src/orm/Relationships.d.ts +0 -119
  1051. package/src/orm/Relationships.d.ts.map +0 -1
  1052. package/src/orm/Relationships.js +0 -306
  1053. package/src/orm/Schema.d.ts +0 -123
  1054. package/src/orm/Schema.d.ts.map +0 -1
  1055. package/src/orm/Schema.js +0 -169
  1056. package/src/orm/SchemaCompiler.d.ts +0 -9
  1057. package/src/orm/SchemaCompiler.d.ts.map +0 -1
  1058. package/src/orm/SchemaCompiler.js +0 -145
  1059. package/src/orm/adapters/D1Adapter.d.ts +0 -15
  1060. package/src/orm/adapters/D1Adapter.d.ts.map +0 -1
  1061. package/src/orm/adapters/D1Adapter.js +0 -132
  1062. package/src/orm/adapters/D1RemoteAdapter.d.ts +0 -11
  1063. package/src/orm/adapters/D1RemoteAdapter.d.ts.map +0 -1
  1064. package/src/orm/adapters/D1RemoteAdapter.js +0 -163
  1065. package/src/orm/adapters/MySQLAdapter.d.ts +0 -16
  1066. package/src/orm/adapters/MySQLAdapter.d.ts.map +0 -1
  1067. package/src/orm/adapters/MySQLAdapter.js +0 -109
  1068. package/src/orm/adapters/PostgreSQLAdapter.d.ts +0 -16
  1069. package/src/orm/adapters/PostgreSQLAdapter.d.ts.map +0 -1
  1070. package/src/orm/adapters/PostgreSQLAdapter.js +0 -108
  1071. package/src/orm/adapters/SQLServerAdapter.d.ts +0 -16
  1072. package/src/orm/adapters/SQLServerAdapter.d.ts.map +0 -1
  1073. package/src/orm/adapters/SQLServerAdapter.js +0 -84
  1074. package/src/orm/adapters/SQLiteAdapter.d.ts +0 -11
  1075. package/src/orm/adapters/SQLiteAdapter.d.ts.map +0 -1
  1076. package/src/orm/adapters/SQLiteAdapter.js +0 -225
  1077. package/src/orm/maintenance/SqliteMaintenance.d.ts +0 -5
  1078. package/src/orm/maintenance/SqliteMaintenance.d.ts.map +0 -1
  1079. package/src/orm/maintenance/SqliteMaintenance.js +0 -14
  1080. package/src/orm/migrations/MigrationStore.d.ts +0 -38
  1081. package/src/orm/migrations/MigrationStore.d.ts.map +0 -1
  1082. package/src/orm/migrations/MigrationStore.js +0 -157
  1083. package/src/performance/Benchmark.d.ts +0 -87
  1084. package/src/performance/Benchmark.d.ts.map +0 -1
  1085. package/src/performance/Benchmark.js +0 -307
  1086. package/src/performance/CodeGenerationBenchmark.d.ts +0 -23
  1087. package/src/performance/CodeGenerationBenchmark.d.ts.map +0 -1
  1088. package/src/performance/CodeGenerationBenchmark.js +0 -249
  1089. package/src/performance/Optimizer.d.ts +0 -100
  1090. package/src/performance/Optimizer.d.ts.map +0 -1
  1091. package/src/performance/Optimizer.js +0 -627
  1092. package/src/performance/establish-baseline.d.ts +0 -9
  1093. package/src/performance/establish-baseline.d.ts.map +0 -1
  1094. package/src/performance/establish-baseline.js +0 -55
  1095. package/src/profiling/MemoryProfiler.d.ts +0 -32
  1096. package/src/profiling/MemoryProfiler.d.ts.map +0 -1
  1097. package/src/profiling/MemoryProfiler.js +0 -84
  1098. package/src/profiling/N1Detector.d.ts +0 -16
  1099. package/src/profiling/N1Detector.d.ts.map +0 -1
  1100. package/src/profiling/N1Detector.js +0 -120
  1101. package/src/profiling/QueryLogger.d.ts +0 -107
  1102. package/src/profiling/QueryLogger.d.ts.map +0 -1
  1103. package/src/profiling/QueryLogger.js +0 -148
  1104. package/src/profiling/RequestProfiler.d.ts +0 -30
  1105. package/src/profiling/RequestProfiler.d.ts.map +0 -1
  1106. package/src/profiling/RequestProfiler.js +0 -96
  1107. package/src/profiling/types.d.ts +0 -77
  1108. package/src/profiling/types.d.ts.map +0 -1
  1109. package/src/profiling/types.js +0 -5
  1110. package/src/routes/CoreRoutes.d.ts +0 -12
  1111. package/src/routes/CoreRoutes.d.ts.map +0 -1
  1112. package/src/routes/CoreRoutes.js +0 -39
  1113. package/src/routes/RouteRegistry.d.ts +0 -39
  1114. package/src/routes/RouteRegistry.d.ts.map +0 -1
  1115. package/src/routes/RouteRegistry.js +0 -44
  1116. package/src/routes/Router.d.ts +0 -73
  1117. package/src/routes/Router.d.ts.map +0 -1
  1118. package/src/routes/Router.js +0 -250
  1119. package/src/routes/common.d.ts +0 -15
  1120. package/src/routes/common.d.ts.map +0 -1
  1121. package/src/routes/common.js +0 -47
  1122. package/src/routes/doc.d.ts +0 -27
  1123. package/src/routes/doc.d.ts.map +0 -1
  1124. package/src/routes/doc.js +0 -110
  1125. package/src/routes/error.d.ts +0 -21
  1126. package/src/routes/error.d.ts.map +0 -1
  1127. package/src/routes/error.js +0 -127
  1128. package/src/routes/errorPages.d.ts +0 -14
  1129. package/src/routes/errorPages.d.ts.map +0 -1
  1130. package/src/routes/errorPages.js +0 -103
  1131. package/src/routes/health.d.ts +0 -6
  1132. package/src/routes/health.d.ts.map +0 -1
  1133. package/src/routes/health.js +0 -5
  1134. package/src/routes/metrics.d.ts +0 -9
  1135. package/src/routes/metrics.d.ts.map +0 -1
  1136. package/src/routes/metrics.js +0 -20
  1137. package/src/routes/openapi.d.ts +0 -9
  1138. package/src/routes/openapi.d.ts.map +0 -1
  1139. package/src/routes/openapi.js +0 -76
  1140. package/src/routes/publicRoot.d.ts +0 -27
  1141. package/src/routes/publicRoot.d.ts.map +0 -1
  1142. package/src/routes/publicRoot.js +0 -112
  1143. package/src/runtime/PluginAutoImports.d.ts +0 -21
  1144. package/src/runtime/PluginAutoImports.d.ts.map +0 -1
  1145. package/src/runtime/PluginAutoImports.js +0 -53
  1146. package/src/runtime/PluginManager.d.ts +0 -28
  1147. package/src/runtime/PluginManager.d.ts.map +0 -1
  1148. package/src/runtime/PluginManager.js +0 -373
  1149. package/src/runtime/PluginRegistry.d.ts +0 -27
  1150. package/src/runtime/PluginRegistry.d.ts.map +0 -1
  1151. package/src/runtime/PluginRegistry.js +0 -183
  1152. package/src/runtime/RuntimeAdapter.d.ts +0 -126
  1153. package/src/runtime/RuntimeAdapter.d.ts.map +0 -1
  1154. package/src/runtime/RuntimeAdapter.js +0 -146
  1155. package/src/runtime/StartupConfigFileRegistry.d.ts +0 -22
  1156. package/src/runtime/StartupConfigFileRegistry.d.ts.map +0 -1
  1157. package/src/runtime/StartupConfigFileRegistry.js +0 -44
  1158. package/src/runtime/adapters/CloudflareAdapter.d.ts +0 -43
  1159. package/src/runtime/adapters/CloudflareAdapter.d.ts.map +0 -1
  1160. package/src/runtime/adapters/CloudflareAdapter.js +0 -175
  1161. package/src/runtime/adapters/DenoAdapter.d.ts +0 -30
  1162. package/src/runtime/adapters/DenoAdapter.d.ts.map +0 -1
  1163. package/src/runtime/adapters/DenoAdapter.js +0 -193
  1164. package/src/runtime/adapters/FargateAdapter.d.ts +0 -40
  1165. package/src/runtime/adapters/FargateAdapter.d.ts.map +0 -1
  1166. package/src/runtime/adapters/FargateAdapter.js +0 -157
  1167. package/src/runtime/adapters/LambdaAdapter.d.ts +0 -13
  1168. package/src/runtime/adapters/LambdaAdapter.d.ts.map +0 -1
  1169. package/src/runtime/adapters/LambdaAdapter.js +0 -306
  1170. package/src/runtime/adapters/NodeServerAdapter.d.ts +0 -16
  1171. package/src/runtime/adapters/NodeServerAdapter.d.ts.map +0 -1
  1172. package/src/runtime/adapters/NodeServerAdapter.js +0 -200
  1173. package/src/runtime/getKernel.d.ts +0 -9
  1174. package/src/runtime/getKernel.d.ts.map +0 -1
  1175. package/src/runtime/getKernel.js +0 -27
  1176. package/src/runtime/useFileLoader.d.ts +0 -26
  1177. package/src/runtime/useFileLoader.d.ts.map +0 -1
  1178. package/src/runtime/useFileLoader.js +0 -188
  1179. package/src/scheduler/ScheduleRunner.d.ts +0 -18
  1180. package/src/scheduler/ScheduleRunner.d.ts.map +0 -1
  1181. package/src/scheduler/ScheduleRunner.js +0 -155
  1182. package/src/scheduler/index.d.ts +0 -3
  1183. package/src/scheduler/index.d.ts.map +0 -1
  1184. package/src/scheduler/index.js +0 -1
  1185. package/src/scheduler/types.d.ts +0 -16
  1186. package/src/scheduler/types.d.ts.map +0 -1
  1187. package/src/scheduler/types.js +0 -4
  1188. package/src/schedules/index.d.ts +0 -2
  1189. package/src/schedules/index.d.ts.map +0 -1
  1190. package/src/schedules/index.js +0 -1
  1191. package/src/schedules/log-cleanup.d.ts +0 -4
  1192. package/src/schedules/log-cleanup.d.ts.map +0 -1
  1193. package/src/schedules/log-cleanup.js +0 -18
  1194. package/src/scripts/GenerateEnvArtifacts.d.ts +0 -13
  1195. package/src/scripts/GenerateEnvArtifacts.d.ts.map +0 -1
  1196. package/src/scripts/GenerateEnvArtifacts.js +0 -171
  1197. package/src/scripts/TemplateImportsCheck.d.ts +0 -2
  1198. package/src/scripts/TemplateImportsCheck.d.ts.map +0 -1
  1199. package/src/scripts/TemplateImportsCheck.js +0 -151
  1200. package/src/scripts/TemplateSync.d.ts +0 -7
  1201. package/src/scripts/TemplateSync.d.ts.map +0 -1
  1202. package/src/scripts/TemplateSync.js +0 -399
  1203. package/src/security/CsrfTokenManager.d.ts +0 -28
  1204. package/src/security/CsrfTokenManager.d.ts.map +0 -1
  1205. package/src/security/CsrfTokenManager.js +0 -78
  1206. package/src/security/EncryptedEnvelope.d.ts +0 -77
  1207. package/src/security/EncryptedEnvelope.d.ts.map +0 -1
  1208. package/src/security/EncryptedEnvelope.js +0 -256
  1209. package/src/security/Encryptor.d.ts +0 -15
  1210. package/src/security/Encryptor.d.ts.map +0 -1
  1211. package/src/security/Encryptor.js +0 -199
  1212. package/src/security/Hash.d.ts +0 -14
  1213. package/src/security/Hash.d.ts.map +0 -1
  1214. package/src/security/Hash.js +0 -81
  1215. package/src/security/JwtManager.d.ts +0 -42
  1216. package/src/security/JwtManager.d.ts.map +0 -1
  1217. package/src/security/JwtManager.js +0 -262
  1218. package/src/security/PasswordResetTokenBroker.d.ts +0 -39
  1219. package/src/security/PasswordResetTokenBroker.d.ts.map +0 -1
  1220. package/src/security/PasswordResetTokenBroker.js +0 -131
  1221. package/src/security/Sanitizer.d.ts +0 -76
  1222. package/src/security/Sanitizer.d.ts.map +0 -1
  1223. package/src/security/Sanitizer.js +0 -412
  1224. package/src/security/SignedRequest.d.ts +0 -53
  1225. package/src/security/SignedRequest.d.ts.map +0 -1
  1226. package/src/security/SignedRequest.js +0 -172
  1227. package/src/security/StartupSecretValidation.d.ts +0 -20
  1228. package/src/security/StartupSecretValidation.d.ts.map +0 -1
  1229. package/src/security/StartupSecretValidation.js +0 -139
  1230. package/src/security/TokenRevocation.d.ts +0 -7
  1231. package/src/security/TokenRevocation.d.ts.map +0 -1
  1232. package/src/security/TokenRevocation.js +0 -57
  1233. package/src/security/UrlValidator.d.ts +0 -20
  1234. package/src/security/UrlValidator.d.ts.map +0 -1
  1235. package/src/security/UrlValidator.js +0 -41
  1236. package/src/security/Xss.d.ts +0 -14
  1237. package/src/security/Xss.d.ts.map +0 -1
  1238. package/src/security/Xss.js +0 -57
  1239. package/src/security/XssProtection.d.ts +0 -24
  1240. package/src/security/XssProtection.d.ts.map +0 -1
  1241. package/src/security/XssProtection.js +0 -324
  1242. package/src/seeders/SeederDiscovery.d.ts +0 -5
  1243. package/src/seeders/SeederDiscovery.d.ts.map +0 -1
  1244. package/src/seeders/SeederDiscovery.js +0 -21
  1245. package/src/seeders/SeederLoader.d.ts +0 -5
  1246. package/src/seeders/SeederLoader.d.ts.map +0 -1
  1247. package/src/seeders/SeederLoader.js +0 -60
  1248. package/src/seeders/types.d.ts +0 -18
  1249. package/src/seeders/types.d.ts.map +0 -1
  1250. package/src/seeders/types.js +0 -1
  1251. package/src/session/SessionManager.d.ts +0 -39
  1252. package/src/session/SessionManager.d.ts.map +0 -1
  1253. package/src/session/SessionManager.js +0 -149
  1254. package/src/session/index.d.ts +0 -3
  1255. package/src/session/index.d.ts.map +0 -1
  1256. package/src/session/index.js +0 -1
  1257. package/src/start.d.ts +0 -21
  1258. package/src/start.d.ts.map +0 -1
  1259. package/src/start.js +0 -59
  1260. package/src/templates/TemplateRegistry.d.ts +0 -40
  1261. package/src/templates/TemplateRegistry.d.ts.map +0 -1
  1262. package/src/templates/TemplateRegistry.js +0 -78
  1263. package/src/testing/TestEnvironment.d.ts +0 -40
  1264. package/src/testing/TestEnvironment.d.ts.map +0 -1
  1265. package/src/testing/TestEnvironment.js +0 -141
  1266. package/src/testing/TestHttp.d.ts +0 -29
  1267. package/src/testing/TestHttp.d.ts.map +0 -1
  1268. package/src/testing/TestHttp.js +0 -96
  1269. package/src/testing/index.d.ts +0 -5
  1270. package/src/testing/index.d.ts.map +0 -1
  1271. package/src/testing/index.js +0 -2
  1272. package/src/time/DateTime.d.ts +0 -181
  1273. package/src/time/DateTime.d.ts.map +0 -1
  1274. package/src/time/DateTime.js +0 -300
  1275. package/src/time/index.d.ts +0 -7
  1276. package/src/time/index.d.ts.map +0 -1
  1277. package/src/time/index.js +0 -5
  1278. package/src/toolkit/Secrets/EnvFile.d.ts +0 -15
  1279. package/src/toolkit/Secrets/EnvFile.d.ts.map +0 -1
  1280. package/src/toolkit/Secrets/EnvFile.js +0 -63
  1281. package/src/toolkit/Secrets/Manifest.d.ts +0 -24
  1282. package/src/toolkit/Secrets/Manifest.d.ts.map +0 -1
  1283. package/src/toolkit/Secrets/Manifest.js +0 -71
  1284. package/src/toolkit/Secrets/index.d.ts +0 -42
  1285. package/src/toolkit/Secrets/index.d.ts.map +0 -1
  1286. package/src/toolkit/Secrets/index.js +0 -123
  1287. package/src/toolkit/Secrets/providers/AwsSecretsManager.d.ts +0 -14
  1288. package/src/toolkit/Secrets/providers/AwsSecretsManager.d.ts.map +0 -1
  1289. package/src/toolkit/Secrets/providers/AwsSecretsManager.js +0 -132
  1290. package/src/toolkit/Secrets/providers/CloudflareKv.d.ts +0 -9
  1291. package/src/toolkit/Secrets/providers/CloudflareKv.d.ts.map +0 -1
  1292. package/src/toolkit/Secrets/providers/CloudflareKv.js +0 -74
  1293. package/src/tools/broadcast/Broadcast.d.ts +0 -17
  1294. package/src/tools/broadcast/Broadcast.d.ts.map +0 -1
  1295. package/src/tools/broadcast/Broadcast.js +0 -84
  1296. package/src/tools/broadcast/BroadcastRegistry.d.ts +0 -15
  1297. package/src/tools/broadcast/BroadcastRegistry.d.ts.map +0 -1
  1298. package/src/tools/broadcast/BroadcastRegistry.js +0 -29
  1299. package/src/tools/broadcast/BroadcastRuntimeRegistration.d.ts +0 -11
  1300. package/src/tools/broadcast/BroadcastRuntimeRegistration.d.ts.map +0 -1
  1301. package/src/tools/broadcast/BroadcastRuntimeRegistration.js +0 -23
  1302. package/src/tools/broadcast/drivers/BaseDriver.d.ts +0 -5
  1303. package/src/tools/broadcast/drivers/BaseDriver.d.ts.map +0 -1
  1304. package/src/tools/broadcast/drivers/BaseDriver.js +0 -8
  1305. package/src/tools/broadcast/drivers/InMemory.d.ts +0 -18
  1306. package/src/tools/broadcast/drivers/InMemory.d.ts.map +0 -1
  1307. package/src/tools/broadcast/drivers/InMemory.js +0 -16
  1308. package/src/tools/broadcast/drivers/Pusher.d.ts +0 -8
  1309. package/src/tools/broadcast/drivers/Pusher.d.ts.map +0 -1
  1310. package/src/tools/broadcast/drivers/Pusher.js +0 -75
  1311. package/src/tools/broadcast/drivers/Redis.d.ts +0 -19
  1312. package/src/tools/broadcast/drivers/Redis.d.ts.map +0 -1
  1313. package/src/tools/broadcast/drivers/Redis.js +0 -25
  1314. package/src/tools/broadcast/drivers/RedisHttps.d.ts +0 -14
  1315. package/src/tools/broadcast/drivers/RedisHttps.d.ts.map +0 -1
  1316. package/src/tools/broadcast/drivers/RedisHttps.js +0 -50
  1317. package/src/tools/broadcast/index.d.ts +0 -9
  1318. package/src/tools/broadcast/index.d.ts.map +0 -1
  1319. package/src/tools/broadcast/index.js +0 -8
  1320. package/src/tools/http/Http.d.ts +0 -49
  1321. package/src/tools/http/Http.d.ts.map +0 -1
  1322. package/src/tools/http/Http.js +0 -173
  1323. package/src/tools/http/HttpResponse.d.ts +0 -32
  1324. package/src/tools/http/HttpResponse.d.ts.map +0 -1
  1325. package/src/tools/http/HttpResponse.js +0 -80
  1326. package/src/tools/http/index.d.ts +0 -15
  1327. package/src/tools/http/index.d.ts.map +0 -1
  1328. package/src/tools/http/index.js +0 -9
  1329. package/src/tools/mail/Mail.d.ts +0 -2
  1330. package/src/tools/mail/Mail.d.ts.map +0 -1
  1331. package/src/tools/mail/Mail.js +0 -1
  1332. package/src/tools/mail/MailDriverRegistry.d.ts +0 -18
  1333. package/src/tools/mail/MailDriverRegistry.d.ts.map +0 -1
  1334. package/src/tools/mail/MailDriverRegistry.js +0 -23
  1335. package/src/tools/mail/attachments.d.ts +0 -23
  1336. package/src/tools/mail/attachments.d.ts.map +0 -1
  1337. package/src/tools/mail/attachments.js +0 -26
  1338. package/src/tools/mail/drivers/BaseDriver.d.ts +0 -5
  1339. package/src/tools/mail/drivers/BaseDriver.d.ts.map +0 -1
  1340. package/src/tools/mail/drivers/BaseDriver.js +0 -8
  1341. package/src/tools/mail/drivers/Mailgun.d.ts +0 -31
  1342. package/src/tools/mail/drivers/Mailgun.d.ts.map +0 -1
  1343. package/src/tools/mail/drivers/Mailgun.js +0 -81
  1344. package/src/tools/mail/drivers/SendGrid.d.ts +0 -29
  1345. package/src/tools/mail/drivers/SendGrid.d.ts.map +0 -1
  1346. package/src/tools/mail/drivers/SendGrid.js +0 -58
  1347. package/src/tools/mail/drivers/Ses.d.ts +0 -24
  1348. package/src/tools/mail/drivers/Ses.d.ts.map +0 -1
  1349. package/src/tools/mail/drivers/Ses.js +0 -117
  1350. package/src/tools/mail/drivers/Smtp.d.ts +0 -38
  1351. package/src/tools/mail/drivers/Smtp.d.ts.map +0 -1
  1352. package/src/tools/mail/drivers/Smtp.js +0 -349
  1353. package/src/tools/mail/index.d.ts +0 -40
  1354. package/src/tools/mail/index.d.ts.map +0 -1
  1355. package/src/tools/mail/index.js +0 -129
  1356. package/src/tools/mail/template-loader.d.ts +0 -10
  1357. package/src/tools/mail/template-loader.d.ts.map +0 -1
  1358. package/src/tools/mail/template-loader.js +0 -101
  1359. package/src/tools/mail/template-utils.d.ts +0 -10
  1360. package/src/tools/mail/template-utils.d.ts.map +0 -1
  1361. package/src/tools/mail/template-utils.js +0 -16
  1362. package/src/tools/mail/templates/index.d.ts +0 -57
  1363. package/src/tools/mail/templates/index.d.ts.map +0 -1
  1364. package/src/tools/mail/templates/index.js +0 -104
  1365. package/src/tools/mail/testing.d.ts +0 -41
  1366. package/src/tools/mail/testing.d.ts.map +0 -1
  1367. package/src/tools/mail/testing.js +0 -34
  1368. package/src/tools/notification/Driver.d.ts +0 -11
  1369. package/src/tools/notification/Driver.d.ts.map +0 -1
  1370. package/src/tools/notification/Driver.js +0 -1
  1371. package/src/tools/notification/Notification.d.ts +0 -24
  1372. package/src/tools/notification/Notification.d.ts.map +0 -1
  1373. package/src/tools/notification/Notification.js +0 -35
  1374. package/src/tools/notification/NotificationChannelRegistry.d.ts +0 -15
  1375. package/src/tools/notification/NotificationChannelRegistry.d.ts.map +0 -1
  1376. package/src/tools/notification/NotificationChannelRegistry.js +0 -36
  1377. package/src/tools/notification/NotificationRuntimeRegistration.d.ts +0 -13
  1378. package/src/tools/notification/NotificationRuntimeRegistration.d.ts.map +0 -1
  1379. package/src/tools/notification/NotificationRuntimeRegistration.js +0 -25
  1380. package/src/tools/notification/Registry.d.ts +0 -10
  1381. package/src/tools/notification/Registry.d.ts.map +0 -1
  1382. package/src/tools/notification/Registry.js +0 -26
  1383. package/src/tools/notification/Service.d.ts +0 -7
  1384. package/src/tools/notification/Service.d.ts.map +0 -1
  1385. package/src/tools/notification/Service.js +0 -91
  1386. package/src/tools/notification/config.d.ts +0 -5
  1387. package/src/tools/notification/config.d.ts.map +0 -1
  1388. package/src/tools/notification/config.js +0 -5
  1389. package/src/tools/notification/drivers/BaseDriver.d.ts +0 -5
  1390. package/src/tools/notification/drivers/BaseDriver.d.ts.map +0 -1
  1391. package/src/tools/notification/drivers/BaseDriver.js +0 -8
  1392. package/src/tools/notification/drivers/Console.d.ts +0 -7
  1393. package/src/tools/notification/drivers/Console.d.ts.map +0 -1
  1394. package/src/tools/notification/drivers/Console.js +0 -13
  1395. package/src/tools/notification/drivers/Slack.d.ts +0 -16
  1396. package/src/tools/notification/drivers/Slack.d.ts.map +0 -1
  1397. package/src/tools/notification/drivers/Slack.js +0 -24
  1398. package/src/tools/notification/drivers/SlackNotification.d.ts +0 -8
  1399. package/src/tools/notification/drivers/SlackNotification.d.ts.map +0 -1
  1400. package/src/tools/notification/drivers/SlackNotification.js +0 -13
  1401. package/src/tools/notification/drivers/Termii.d.ts +0 -10
  1402. package/src/tools/notification/drivers/Termii.d.ts.map +0 -1
  1403. package/src/tools/notification/drivers/Termii.js +0 -36
  1404. package/src/tools/notification/drivers/Twilio.d.ts +0 -21
  1405. package/src/tools/notification/drivers/Twilio.d.ts.map +0 -1
  1406. package/src/tools/notification/drivers/Twilio.js +0 -48
  1407. package/src/tools/notification/drivers/TwilioNotification.d.ts +0 -8
  1408. package/src/tools/notification/drivers/TwilioNotification.d.ts.map +0 -1
  1409. package/src/tools/notification/drivers/TwilioNotification.js +0 -13
  1410. package/src/tools/notification/templates/markdown/index.d.ts +0 -15
  1411. package/src/tools/notification/templates/markdown/index.d.ts.map +0 -1
  1412. package/src/tools/notification/templates/markdown/index.js +0 -38
  1413. package/src/tools/notification/templates/markdown/registry.d.ts +0 -15
  1414. package/src/tools/notification/templates/markdown/registry.d.ts.map +0 -1
  1415. package/src/tools/notification/templates/markdown/registry.js +0 -36
  1416. package/src/tools/notification/testing.d.ts +0 -19
  1417. package/src/tools/notification/testing.d.ts.map +0 -1
  1418. package/src/tools/notification/testing.js +0 -35
  1419. package/src/tools/notification/testingHelpers.d.ts +0 -12
  1420. package/src/tools/notification/testingHelpers.d.ts.map +0 -1
  1421. package/src/tools/notification/testingHelpers.js +0 -32
  1422. package/src/tools/queue/AdvancedQueue.d.ts +0 -19
  1423. package/src/tools/queue/AdvancedQueue.d.ts.map +0 -1
  1424. package/src/tools/queue/AdvancedQueue.js +0 -352
  1425. package/src/tools/queue/DeduplicationBuilder.d.ts +0 -20
  1426. package/src/tools/queue/DeduplicationBuilder.d.ts.map +0 -1
  1427. package/src/tools/queue/DeduplicationBuilder.js +0 -77
  1428. package/src/tools/queue/LockProvider.d.ts +0 -22
  1429. package/src/tools/queue/LockProvider.d.ts.map +0 -1
  1430. package/src/tools/queue/LockProvider.js +0 -282
  1431. package/src/tools/queue/Queue.d.ts +0 -24
  1432. package/src/tools/queue/Queue.d.ts.map +0 -1
  1433. package/src/tools/queue/Queue.js +0 -43
  1434. package/src/tools/queue/QueueExtensions.d.ts +0 -46
  1435. package/src/tools/queue/QueueExtensions.d.ts.map +0 -1
  1436. package/src/tools/queue/QueueExtensions.js +0 -129
  1437. package/src/tools/queue/QueueRuntimeRegistration.d.ts +0 -11
  1438. package/src/tools/queue/QueueRuntimeRegistration.d.ts.map +0 -1
  1439. package/src/tools/queue/QueueRuntimeRegistration.js +0 -25
  1440. package/src/tools/queue/drivers/Database.d.ts +0 -23
  1441. package/src/tools/queue/drivers/Database.d.ts.map +0 -1
  1442. package/src/tools/queue/drivers/Database.js +0 -123
  1443. package/src/tools/queue/drivers/InMemory.d.ts +0 -10
  1444. package/src/tools/queue/drivers/InMemory.d.ts.map +0 -1
  1445. package/src/tools/queue/drivers/InMemory.js +0 -55
  1446. package/src/tools/queue/drivers/Redis.d.ts +0 -10
  1447. package/src/tools/queue/drivers/Redis.d.ts.map +0 -1
  1448. package/src/tools/queue/drivers/Redis.js +0 -26
  1449. package/src/tools/queue/index.d.ts +0 -9
  1450. package/src/tools/queue/index.d.ts.map +0 -1
  1451. package/src/tools/queue/index.js +0 -7
  1452. package/src/tools/redis/RedisKeyManager.d.ts +0 -64
  1453. package/src/tools/redis/RedisKeyManager.d.ts.map +0 -1
  1454. package/src/tools/redis/RedisKeyManager.js +0 -124
  1455. package/src/tools/storage/LocalSignedUrl.d.ts +0 -12
  1456. package/src/tools/storage/LocalSignedUrl.d.ts.map +0 -1
  1457. package/src/tools/storage/LocalSignedUrl.js +0 -108
  1458. package/src/tools/storage/StorageDiskRegistry.d.ts +0 -14
  1459. package/src/tools/storage/StorageDiskRegistry.d.ts.map +0 -1
  1460. package/src/tools/storage/StorageDiskRegistry.js +0 -36
  1461. package/src/tools/storage/StorageDriverRegistry.d.ts +0 -16
  1462. package/src/tools/storage/StorageDriverRegistry.d.ts.map +0 -1
  1463. package/src/tools/storage/StorageDriverRegistry.js +0 -20
  1464. package/src/tools/storage/StorageRuntimeRegistration.d.ts +0 -10
  1465. package/src/tools/storage/StorageRuntimeRegistration.d.ts.map +0 -1
  1466. package/src/tools/storage/StorageRuntimeRegistration.js +0 -21
  1467. package/src/tools/storage/drivers/Gcs.d.ts +0 -20
  1468. package/src/tools/storage/drivers/Gcs.d.ts.map +0 -1
  1469. package/src/tools/storage/drivers/Gcs.js +0 -152
  1470. package/src/tools/storage/drivers/Local.d.ts +0 -18
  1471. package/src/tools/storage/drivers/Local.d.ts.map +0 -1
  1472. package/src/tools/storage/drivers/Local.js +0 -89
  1473. package/src/tools/storage/drivers/R2.d.ts +0 -20
  1474. package/src/tools/storage/drivers/R2.d.ts.map +0 -1
  1475. package/src/tools/storage/drivers/R2.js +0 -73
  1476. package/src/tools/storage/drivers/S3.d.ts +0 -26
  1477. package/src/tools/storage/drivers/S3.d.ts.map +0 -1
  1478. package/src/tools/storage/drivers/S3.js +0 -259
  1479. package/src/tools/storage/index.d.ts +0 -21
  1480. package/src/tools/storage/index.d.ts.map +0 -1
  1481. package/src/tools/storage/index.js +0 -150
  1482. package/src/tools/storage/testing.d.ts +0 -23
  1483. package/src/tools/storage/testing.d.ts.map +0 -1
  1484. package/src/tools/storage/testing.js +0 -53
  1485. package/src/tools/templates/MarkdownRenderer.d.ts +0 -14
  1486. package/src/tools/templates/MarkdownRenderer.d.ts.map +0 -1
  1487. package/src/tools/templates/MarkdownRenderer.js +0 -300
  1488. package/src/tools/templates/index.d.ts +0 -5
  1489. package/src/tools/templates/index.d.ts.map +0 -1
  1490. package/src/tools/templates/index.js +0 -4
  1491. package/src/types/Queue.d.ts +0 -62
  1492. package/src/types/Queue.d.ts.map +0 -1
  1493. package/src/types/Queue.js +0 -5
  1494. package/src/validation/ValidationError.d.ts +0 -42
  1495. package/src/validation/ValidationError.d.ts.map +0 -1
  1496. package/src/validation/ValidationError.js +0 -55
  1497. package/src/validation/Validator.d.ts +0 -93
  1498. package/src/validation/Validator.d.ts.map +0 -1
  1499. package/src/validation/Validator.js +0 -492
@@ -0,0 +1,1492 @@
1
+ /**
2
+ * QueryBuilder - Type-Safe Query Builder
3
+ * Build queries without raw SQL
4
+ */
5
+
6
+ import type { PaginationQuery, Paginator } from '@database/Paginator';
7
+ import { createPaginator } from '@database/Paginator';
8
+ import { ErrorFactory } from '@exceptions/ZintrustError';
9
+ import type { IDatabase } from '@orm/Database';
10
+ import type { IModel } from '@orm/Model';
11
+ import type { IRelationship } from '@orm/Relationships';
12
+
13
+ export interface WhereClause {
14
+ column: string;
15
+ operator: string;
16
+ value: unknown;
17
+ }
18
+
19
+ /**
20
+ * Result returned from INSERT operations
21
+ * Provides access to the created record ID, affected rows count, and the full record if available
22
+ */
23
+ export interface InsertResult {
24
+ id: string | number | bigint | null;
25
+ affectedRows: number;
26
+ insertedRecords?: Record<string, unknown>[];
27
+ }
28
+
29
+ export type SoftDeleteMode = 'exclude' | 'include' | 'only';
30
+
31
+ export interface QueryBuilderOptions {
32
+ softDeleteColumn?: string;
33
+ softDeleteMode?: SoftDeleteMode;
34
+ }
35
+
36
+ export interface PaginationOptions {
37
+ baseUrl?: string;
38
+ query?: PaginationQuery;
39
+ }
40
+
41
+ export type EagerLoadConstraint = (builder: IQueryBuilder) => IQueryBuilder;
42
+ export type EagerLoadConstraints = Record<string, EagerLoadConstraint>;
43
+
44
+ export interface IQueryBuilder {
45
+ select(...columns: string[]): IQueryBuilder;
46
+ selectAs(column: string, alias: string): IQueryBuilder;
47
+ max(column: string, alias?: string): IQueryBuilder;
48
+ where(column: string, operator: string | number | boolean | null, value?: unknown): IQueryBuilder;
49
+ andWhere(column: string, operator: string, value?: unknown): IQueryBuilder;
50
+ orWhere(column: string, operator: string, value?: unknown): IQueryBuilder;
51
+ whereIn(column: string, values: unknown[]): IQueryBuilder;
52
+ whereNotIn(column: string, values: unknown[]): IQueryBuilder;
53
+ withTrashed(): IQueryBuilder;
54
+ onlyTrashed(): IQueryBuilder;
55
+ withoutTrashed(): IQueryBuilder;
56
+ join(table: string, on: string): IQueryBuilder;
57
+ leftJoin(table: string, on: string): IQueryBuilder;
58
+ orderBy(column: string, direction?: 'ASC' | 'DESC'): IQueryBuilder;
59
+ limit(count: number): IQueryBuilder;
60
+ offset(count: number): IQueryBuilder;
61
+ getWhereClauses(): WhereClause[];
62
+ getSelectColumns(): string[];
63
+ getTable(): string;
64
+ getLimit(): number | undefined;
65
+ getOffset(): number | undefined;
66
+ getOrderBy(): { column: string; direction: 'ASC' | 'DESC' } | undefined;
67
+ getJoins(): Array<{ table: string; on: string }>;
68
+ isReadOperation(): boolean;
69
+ toSQL(): string;
70
+ getParameters(): unknown[];
71
+ first<T>(): Promise<T | null>;
72
+ firstOrFail<T>(message?: string): Promise<T>;
73
+ get<T>(): Promise<T[]>;
74
+ raw<T>(): Promise<T[]>;
75
+ paginate<T>(page: number, perPage: number, options?: PaginationOptions): Promise<Paginator<T>>;
76
+
77
+ with(relation: string | EagerLoadConstraints): IQueryBuilder;
78
+ withCount(relation: string): IQueryBuilder;
79
+ load(models: IModel[], relation: string, constraint?: EagerLoadConstraint): Promise<void>;
80
+ loadCount(models: IModel[], relation: string): Promise<void>;
81
+
82
+ insert(values: Record<string, unknown> | Array<Record<string, unknown>>): Promise<InsertResult>;
83
+ update(values: Record<string, unknown>): Promise<void>;
84
+ delete(): Promise<void>;
85
+ }
86
+
87
+ interface QueryState {
88
+ tableName: string;
89
+ whereConditions: WhereClause[];
90
+ selectColumns: string[];
91
+ limitValue?: number;
92
+ offsetValue?: number;
93
+ orderByClauses: Array<{ column: string; direction: 'ASC' | 'DESC' }>;
94
+ joins: Array<{ table: string; on: string }>;
95
+ softDelete?: { column: string; mode: SoftDeleteMode };
96
+ eagerLoads: string[];
97
+ eagerLoadConstraints: EagerLoadConstraints;
98
+ eagerLoadCounts: string[];
99
+ dialect?: string;
100
+ }
101
+
102
+ /**
103
+ * Escape SQL identifier
104
+ */
105
+ type IdentifierQuote = {
106
+ open: string;
107
+ close: string;
108
+ escape: (raw: string) => string;
109
+ };
110
+
111
+ const getIdentifierQuote = (dialect?: string): IdentifierQuote => {
112
+ const d = (dialect ?? '').toLowerCase();
113
+
114
+ if (d === 'mysql') {
115
+ return {
116
+ open: '`',
117
+ close: '`',
118
+ escape: (raw) => raw.replaceAll('`', '``'),
119
+ };
120
+ }
121
+
122
+ if (d === 'sqlserver') {
123
+ return {
124
+ open: '[',
125
+ close: ']',
126
+ escape: (raw) => raw.replaceAll(']', ']]'),
127
+ };
128
+ }
129
+
130
+ // sqlite/postgresql/d1/d1-remote: standard SQL double-quote identifiers.
131
+ return {
132
+ open: '"',
133
+ close: '"',
134
+ escape: (raw) => raw.replaceAll('"', '""'),
135
+ };
136
+ };
137
+
138
+ const escapeIdentifier = (id: string, dialect?: string): string => {
139
+ const q = getIdentifierQuote(dialect);
140
+ return id
141
+ .split('.')
142
+ .map((part) => `${q.open}${q.escape(part)}${q.close}`)
143
+ .join('.');
144
+ };
145
+
146
+ const SAFE_IDENTIFIER_PATH = /^[A-Za-z_]\w*(?:\.[A-Za-z_]\w*)*$/;
147
+ const SAFE_IDENTIFIER = /^[A-Za-z_]\w*$/;
148
+
149
+ const assertSafeIdentifierPath = (id: string, label: string): void => {
150
+ const trimmed = id.trim();
151
+ if (trimmed.length === 0) {
152
+ throw ErrorFactory.createDatabaseError(`Empty SQL identifier for ${label}`);
153
+ }
154
+ if (!SAFE_IDENTIFIER_PATH.test(trimmed)) {
155
+ throw ErrorFactory.createDatabaseError(`Unsafe SQL identifier for ${label}`);
156
+ }
157
+ };
158
+
159
+ const assertSafeIdentifier = (id: string, label: string): void => {
160
+ const trimmed = id.trim();
161
+ if (trimmed.length === 0) {
162
+ throw ErrorFactory.createDatabaseError(`Empty SQL identifier for ${label}`);
163
+ }
164
+ if (!SAFE_IDENTIFIER.test(trimmed)) {
165
+ throw ErrorFactory.createDatabaseError(`Unsafe SQL identifier for ${label}`);
166
+ }
167
+ };
168
+
169
+ const normalizeOrderDirection = (direction?: string): 'ASC' | 'DESC' => {
170
+ if (direction === undefined || direction === null) return 'ASC';
171
+ const trimmed = String(direction).trim();
172
+ if (trimmed.length === 0) return 'ASC';
173
+ const normalized = trimmed.toUpperCase();
174
+ if (normalized === 'ASC' || normalized === 'DESC') return normalized;
175
+ throw ErrorFactory.createDatabaseError('Unsafe ORDER BY direction');
176
+ };
177
+
178
+ const normalizeOperator = (operator: string): string => operator.trim().toUpperCase();
179
+
180
+ const ALLOWED_OPERATORS = new Set([
181
+ '=',
182
+ '!=',
183
+ '<>',
184
+ '<',
185
+ '<=',
186
+ '>',
187
+ '>=',
188
+ 'LIKE',
189
+ 'NOT LIKE',
190
+ 'ILIKE',
191
+ 'NOT ILIKE',
192
+ 'IN',
193
+ 'NOT IN',
194
+ 'BETWEEN',
195
+ 'NOT BETWEEN',
196
+ 'IS',
197
+ 'IS NOT',
198
+ ]);
199
+
200
+ const assertSafeOperator = (operator: string): string => {
201
+ const normalized = normalizeOperator(operator);
202
+ if (!ALLOWED_OPERATORS.has(normalized)) {
203
+ throw ErrorFactory.createDatabaseError('Unsafe SQL operator');
204
+ }
205
+ return normalized;
206
+ };
207
+
208
+ const assertSafeLimitOffset = (value: number, label: string): void => {
209
+ if (!Number.isFinite(value) || !Number.isInteger(value) || value < 0) {
210
+ throw ErrorFactory.createDatabaseError(`Unsafe ${label} value`);
211
+ }
212
+ };
213
+
214
+ const isNumericLiteral = (value: string): boolean => {
215
+ // Strict, injection-resistant numeric literal allow-list.
216
+ // Allows: 0, 1, 1.5, 0001
217
+ // Disallows: 1e3, 1;DROP, 1 as ok
218
+ return /^(?:0|[1-9]\d*)(?:\.\d+)?$/.test(value);
219
+ };
220
+
221
+ type SupportedAggregateFn = 'MAX' | 'MIN' | 'COUNT' | 'SUM' | 'AVG';
222
+
223
+ const ALLOWED_AGGREGATES = new Set<SupportedAggregateFn>(['MAX', 'MIN', 'COUNT', 'SUM', 'AVG']);
224
+
225
+ const tryParseAggregateSelectExpr = (
226
+ raw: string
227
+ ): { kind: 'aggregate'; fn: SupportedAggregateFn; arg: string; alias?: string } | null => {
228
+ // Aggregate functions: MAX(col) [AS alias]
229
+ // Capture content greedily to avoid ReDoS from overlapping whitespace patterns (S5852)
230
+ const agg = /^(MAX|MIN|COUNT|SUM|AVG)\(([^)]+)\)(?: AS (\S+))?$/i.exec(raw);
231
+ if (agg === null) return null;
232
+
233
+ const fn = agg[1]?.toUpperCase() as SupportedAggregateFn;
234
+ const arg = (agg[2] ?? '').trim();
235
+ const alias = (agg[3] ?? '').trim();
236
+
237
+ if (!ALLOWED_AGGREGATES.has(fn)) return null;
238
+ if (arg !== '*') {
239
+ assertSafeIdentifierPath(arg, 'aggregate argument');
240
+ }
241
+ if (alias.length > 0) {
242
+ assertSafeIdentifier(alias, 'aggregate alias');
243
+ }
244
+
245
+ return { kind: 'aggregate', fn, arg, alias: alias.length > 0 ? alias : undefined };
246
+ };
247
+
248
+ const tryParseColumnAliasSelectExpr = (
249
+ raw: string
250
+ ): { kind: 'column'; column: string; alias: string } | null => {
251
+ // Column alias: col [AS alias]
252
+ // Avoid catastrophic backtracking by using a linear-time separator scan.
253
+ const upperRaw = raw.toUpperCase();
254
+ const asIndex = upperRaw.indexOf(' AS ');
255
+ if (asIndex === -1) return null;
256
+
257
+ const asSeparator = { index: asIndex, 0: raw.slice(asIndex, asIndex + 4) };
258
+ const col = raw.slice(0, asSeparator.index).trim();
259
+ const alias = raw.slice(asSeparator.index + asSeparator[0].length).trim();
260
+
261
+ // Alias must be a single token (no whitespace).
262
+ if (col.length === 0 || alias.length === 0 || /\s/.test(alias)) return null;
263
+
264
+ assertSafeIdentifierPath(col, 'select column');
265
+ assertSafeIdentifier(alias, 'select alias');
266
+ return { kind: 'column', column: col, alias };
267
+ };
268
+
269
+ const tryParseSelectExpr = (
270
+ expr: string
271
+ ):
272
+ | { kind: 'all' }
273
+ | { kind: 'literal'; value: string }
274
+ | { kind: 'column'; column: string; alias?: string }
275
+ | { kind: 'aggregate'; fn: SupportedAggregateFn; arg: string; alias?: string }
276
+ | null => {
277
+ const raw = expr.trim();
278
+ if (raw.length === 0) {
279
+ throw ErrorFactory.createDatabaseError('Empty SQL identifier for select column');
280
+ }
281
+ if (raw === '*') return { kind: 'all' };
282
+ if (isNumericLiteral(raw)) return { kind: 'literal', value: raw };
283
+
284
+ const aggregate = tryParseAggregateSelectExpr(raw);
285
+ if (aggregate !== null) return aggregate;
286
+
287
+ const aliased = tryParseColumnAliasSelectExpr(raw);
288
+ if (aliased !== null) return aliased;
289
+
290
+ // Plain identifier path
291
+ assertSafeIdentifierPath(raw, 'select column');
292
+ return { kind: 'column', column: raw };
293
+ };
294
+
295
+ /**
296
+ * Build SELECT clause
297
+ */
298
+ const formatSelectExpr = (
299
+ parsed:
300
+ | { kind: 'all' }
301
+ | { kind: 'literal'; value: string }
302
+ | { kind: 'column'; column: string; alias?: string }
303
+ | { kind: 'aggregate'; fn: SupportedAggregateFn; arg: string; alias?: string },
304
+ dialect?: string
305
+ ): string => {
306
+ if (parsed.kind === 'all') return '*';
307
+ if (parsed.kind === 'literal') return parsed.value;
308
+
309
+ if (parsed.kind === 'aggregate') {
310
+ const argSql = parsed.arg === '*' ? '*' : escapeIdentifier(parsed.arg, dialect);
311
+ const base = `${parsed.fn}(${argSql})`;
312
+ const alias = typeof parsed.alias === 'string' && parsed.alias.length > 0 ? parsed.alias : null;
313
+ return alias === null ? base : `${base} AS ${escapeIdentifier(alias, dialect)}`;
314
+ }
315
+
316
+ const base = escapeIdentifier(parsed.column, dialect);
317
+ const alias = typeof parsed.alias === 'string' && parsed.alias.length > 0 ? parsed.alias : null;
318
+ return alias === null ? base : `${base} AS ${escapeIdentifier(alias, dialect)}`;
319
+ };
320
+
321
+ const buildSelectClause = (columns: string[], dialect?: string): string => {
322
+ const out: string[] = [];
323
+ for (const c of columns) {
324
+ const parsed = tryParseSelectExpr(String(c));
325
+ if (parsed === null) continue;
326
+
327
+ out.push(formatSelectExpr(parsed, dialect));
328
+ }
329
+
330
+ return out.join(', ');
331
+ };
332
+
333
+ const compileWhere = (
334
+ conditions: WhereClause[],
335
+ dialect?: string
336
+ ): {
337
+ sql: string;
338
+ parameters: unknown[];
339
+ } => {
340
+ if (conditions.length === 0) return { sql: '', parameters: [] };
341
+
342
+ const parameters: unknown[] = [];
343
+ const clauses = conditions.map((clause) => {
344
+ assertSafeIdentifierPath(clause.column, 'where column');
345
+ const operator = assertSafeOperator(clause.operator);
346
+ const columnSql = escapeIdentifier(clause.column, dialect);
347
+
348
+ if (operator === 'IN' || operator === 'NOT IN') {
349
+ if (!Array.isArray(clause.value) || clause.value.length === 0) {
350
+ throw ErrorFactory.createDatabaseError('IN operator requires a non-empty array');
351
+ }
352
+ const values = clause.value as unknown[];
353
+ const placeholders = values.map(() => '?').join(', ');
354
+ for (const v of values) parameters.push(v);
355
+ return `${columnSql} ${operator} (${placeholders})`;
356
+ }
357
+
358
+ if (operator === 'BETWEEN' || operator === 'NOT BETWEEN') {
359
+ if (!Array.isArray(clause.value) || clause.value.length !== 2) {
360
+ throw ErrorFactory.createDatabaseError('BETWEEN operator requires a 2-item array');
361
+ }
362
+ const range = clause.value as unknown[];
363
+ parameters.push(range[0], range[1]);
364
+ return `${columnSql} ${operator} ? AND ?`;
365
+ }
366
+
367
+ if (operator === 'IS' || operator === 'IS NOT') {
368
+ if (clause.value === null || clause.value === undefined) {
369
+ return `${columnSql} ${operator} NULL`;
370
+ }
371
+ parameters.push(clause.value);
372
+ return `${columnSql} ${operator} ?`;
373
+ }
374
+
375
+ parameters.push(clause.value);
376
+ return `${columnSql} ${operator} ?`;
377
+ });
378
+
379
+ return { sql: ` WHERE ${clauses.join(' AND ')}`, parameters };
380
+ };
381
+
382
+ const buildSoftDeleteWhereClause = (column: string, mode: SoftDeleteMode): WhereClause | null => {
383
+ const col = column.trim();
384
+ if (col.length === 0) return null;
385
+ assertSafeIdentifierPath(col, 'soft delete column');
386
+
387
+ if (mode === 'include') return null;
388
+ if (mode === 'only') return { column: col, operator: 'IS NOT', value: null };
389
+ return { column: col, operator: 'IS', value: null };
390
+ };
391
+
392
+ const getEffectiveWhereConditions = (state: QueryState): WhereClause[] => {
393
+ if (state.softDelete === undefined) return state.whereConditions;
394
+
395
+ const clause = buildSoftDeleteWhereClause(state.softDelete.column, state.softDelete.mode);
396
+ if (clause === null) return state.whereConditions;
397
+
398
+ return [...state.whereConditions, clause];
399
+ };
400
+
401
+ /**
402
+ * Build ORDER BY clause
403
+ */
404
+ const buildOrderByClause = (
405
+ orderByClauses: Array<{ column: string; direction: 'ASC' | 'DESC' }>,
406
+ dialect?: string
407
+ ): string => {
408
+ if (orderByClauses.length === 0) return '';
409
+
410
+ const parts = orderByClauses.map((orderBy) => {
411
+ const col = orderBy.column.trim();
412
+ let columnSql = col;
413
+
414
+ if (!isNumericLiteral(col)) {
415
+ assertSafeIdentifierPath(col, 'order by column');
416
+ columnSql = escapeIdentifier(col, dialect);
417
+ }
418
+
419
+ const dir = normalizeOrderDirection(orderBy.direction);
420
+ return `${columnSql} ${dir}`;
421
+ });
422
+
423
+ return ` ORDER BY ${parts.join(', ')}`;
424
+ };
425
+
426
+ /**
427
+ * Build LIMIT and OFFSET clause
428
+ */
429
+ const buildLimitOffsetClause = (limit?: number, offset?: number): string => {
430
+ let sql = '';
431
+ if (limit !== undefined && limit !== null) {
432
+ assertSafeLimitOffset(limit, 'LIMIT');
433
+ sql += ` LIMIT ${limit}`;
434
+ }
435
+ if (offset !== undefined && offset !== null) {
436
+ assertSafeLimitOffset(offset, 'OFFSET');
437
+ sql += ` OFFSET ${offset}`;
438
+ }
439
+ return sql;
440
+ };
441
+
442
+ const buildSelectQuery = (state: QueryState): { sql: string; parameters: unknown[] } => {
443
+ if (state.tableName.length > 0) {
444
+ assertSafeIdentifierPath(state.tableName, 'table name');
445
+ }
446
+
447
+ const columns = buildSelectClause(state.selectColumns, state.dialect);
448
+ const fromClause =
449
+ state.tableName.length > 0 ? ` FROM ${escapeIdentifier(state.tableName, state.dialect)}` : '';
450
+ const where = compileWhere(getEffectiveWhereConditions(state), state.dialect);
451
+ const sql = `SELECT ${columns}${fromClause}${where.sql}${buildOrderByClause(
452
+ state.orderByClauses,
453
+ state.dialect
454
+ )}${buildLimitOffsetClause(state.limitValue, state.offsetValue)}`;
455
+ return { sql, parameters: where.parameters };
456
+ };
457
+
458
+ const buildCountQuery = (state: QueryState): { sql: string; parameters: unknown[] } => {
459
+ if (state.tableName.length > 0) {
460
+ assertSafeIdentifierPath(state.tableName, 'table name');
461
+ }
462
+
463
+ const fromClause =
464
+ state.tableName.length > 0 ? ` FROM ${escapeIdentifier(state.tableName, state.dialect)}` : '';
465
+ const where = compileWhere(getEffectiveWhereConditions(state), state.dialect);
466
+ const sql = `SELECT COUNT(*) AS total${fromClause}${where.sql}`;
467
+ return { sql, parameters: where.parameters };
468
+ };
469
+
470
+ const applyWhereCondition = (
471
+ state: QueryState,
472
+ column: string,
473
+ operator: string | number | boolean | null,
474
+ value?: unknown
475
+ ): void => {
476
+ const col = String(column).trim();
477
+ assertSafeIdentifierPath(col, 'where column');
478
+
479
+ let op: string;
480
+ let val: unknown;
481
+
482
+ // Shorthand: where('id', 123)
483
+ if (value === undefined) {
484
+ op = '=';
485
+ val = operator;
486
+ } else {
487
+ if (typeof operator !== 'string') {
488
+ throw ErrorFactory.createDatabaseError('Unsafe SQL operator');
489
+ }
490
+ op = assertSafeOperator(operator);
491
+ val = value;
492
+ }
493
+
494
+ state.whereConditions.push({ column: col, operator: op, value: val });
495
+ };
496
+
497
+ const applyOrderByClause = (state: QueryState, column: string, direction?: string): void => {
498
+ const col = String(column).trim();
499
+ if (!isNumericLiteral(col)) {
500
+ assertSafeIdentifierPath(col, 'order by column');
501
+ }
502
+ const dir = normalizeOrderDirection(direction);
503
+ state.orderByClauses.push({ column: col, direction: dir });
504
+ };
505
+
506
+ const applyLimit = (state: QueryState, count: number): void => {
507
+ assertSafeLimitOffset(count, 'LIMIT');
508
+ state.limitValue = count;
509
+ };
510
+
511
+ const applyOffset = (state: QueryState, count: number): void => {
512
+ assertSafeLimitOffset(count, 'OFFSET');
513
+ state.offsetValue = count;
514
+ };
515
+
516
+ /**
517
+ * Execute query and return first result
518
+ */
519
+ async function executeFirst<T>(builder: IQueryBuilder, db?: IDatabase): Promise<T | null> {
520
+ if (!db) throw ErrorFactory.createDatabaseError('Database instance not provided to QueryBuilder');
521
+ builder.limit(1);
522
+ const results = (await db.query(
523
+ builder.toSQL(),
524
+ builder.getParameters(),
525
+ builder.isReadOperation()
526
+ )) as T[];
527
+ return results[0] ?? null;
528
+ }
529
+
530
+ async function executeFirstOrFail<T>(
531
+ builder: IQueryBuilder,
532
+ db: IDatabase | undefined,
533
+ message?: string
534
+ ): Promise<T> {
535
+ const result = await executeFirst<T>(builder, db);
536
+ if (result === null) throw ErrorFactory.createNotFoundError(message ?? 'Resource not found');
537
+ return result;
538
+ }
539
+
540
+ const compileInsert = (
541
+ tableName: string,
542
+ values: Record<string, unknown> | Array<Record<string, unknown>>,
543
+ dialect?: string
544
+ ): { sql: string; parameters: unknown[] } => {
545
+ const items = Array.isArray(values) ? values : [values];
546
+ if (items.length === 0) {
547
+ throw ErrorFactory.createDatabaseError('INSERT requires at least one column');
548
+ }
549
+
550
+ // Use keys from the first item
551
+ const keys = Object.keys(items[0] ?? {});
552
+ if (keys.length === 0) {
553
+ throw ErrorFactory.createDatabaseError('INSERT requires at least one column');
554
+ }
555
+
556
+ assertSafeIdentifierPath(tableName, 'table name');
557
+ for (const key of keys) assertSafeIdentifier(key, 'insert column');
558
+
559
+ const colsSql = keys.map((k) => escapeIdentifier(k, dialect)).join(', ');
560
+
561
+ // Single row or multi-row placeholders
562
+ const rowPlaceholders = `(${keys.map(() => '?').join(', ')})`;
563
+ const placeholders = items.map(() => rowPlaceholders).join(', ');
564
+
565
+ const parameters: unknown[] = [];
566
+ for (const item of items) {
567
+ for (const key of keys) {
568
+ parameters.push(item[key]);
569
+ }
570
+ }
571
+
572
+ const sql = `INSERT INTO ${escapeIdentifier(tableName, dialect)} (${colsSql}) VALUES ${placeholders}`;
573
+ return { sql, parameters };
574
+ };
575
+
576
+ const compileUpdate = (
577
+ tableName: string,
578
+ values: Record<string, unknown>,
579
+ conditions: WhereClause[],
580
+ dialect?: string
581
+ ): { sql: string; parameters: unknown[] } => {
582
+ const keys = Object.keys(values);
583
+ if (keys.length === 0) {
584
+ throw ErrorFactory.createDatabaseError('UPDATE requires at least one column');
585
+ }
586
+ if (conditions.length === 0) {
587
+ throw ErrorFactory.createDatabaseError('UPDATE requires at least one WHERE clause');
588
+ }
589
+
590
+ assertSafeIdentifierPath(tableName, 'table name');
591
+ for (const key of keys) assertSafeIdentifier(key, 'update column');
592
+
593
+ const setSql = keys.map((k) => `${escapeIdentifier(k, dialect)} = ?`).join(', ');
594
+ const setParams = keys.map((k) => values[k]);
595
+ const where = compileWhere(conditions, dialect);
596
+ const sql = `UPDATE ${escapeIdentifier(tableName, dialect)} SET ${setSql}${where.sql}`;
597
+ return { sql, parameters: [...setParams, ...where.parameters] };
598
+ };
599
+
600
+ const compileDelete = (
601
+ tableName: string,
602
+ conditions: WhereClause[],
603
+ dialect?: string
604
+ ): { sql: string; parameters: unknown[] } => {
605
+ if (conditions.length === 0) {
606
+ throw ErrorFactory.createDatabaseError('DELETE requires at least one WHERE clause');
607
+ }
608
+ assertSafeIdentifierPath(tableName, 'table name');
609
+ const where = compileWhere(conditions, dialect);
610
+ const sql = `DELETE FROM ${escapeIdentifier(tableName, dialect)}${where.sql}`;
611
+ return { sql, parameters: where.parameters };
612
+ };
613
+
614
+ /**
615
+ * Execute query and return all results
616
+ */
617
+ async function executeGet<T>(builder: IQueryBuilder, db?: IDatabase): Promise<T[]> {
618
+ if (!db) throw ErrorFactory.createDatabaseError('Database instance not provided to QueryBuilder');
619
+ return (await db.query(
620
+ builder.toSQL(),
621
+ builder.getParameters(),
622
+ builder.isReadOperation()
623
+ )) as T[];
624
+ }
625
+
626
+ const normalizePaginationValue = (value: number, label: string): number => {
627
+ const n = Math.trunc(value);
628
+ if (!Number.isFinite(n) || n <= 0) {
629
+ throw ErrorFactory.createValidationError(`${label} must be a positive integer`);
630
+ }
631
+ return n;
632
+ };
633
+
634
+ async function executePaginate<T>(
635
+ builder: IQueryBuilder,
636
+ state: QueryState,
637
+ db: IDatabase | undefined,
638
+ page: number,
639
+ perPage: number,
640
+ options?: PaginationOptions
641
+ ): Promise<Paginator<T>> {
642
+ if (!db) throw ErrorFactory.createDatabaseError('Database instance not provided to QueryBuilder');
643
+
644
+ const safePage = normalizePaginationValue(page, 'page');
645
+ const safePerPage = normalizePaginationValue(perPage, 'perPage');
646
+
647
+ const countQuery = buildCountQuery(state);
648
+ const countRows = (await db.query(countQuery.sql, countQuery.parameters, true)) as Array<
649
+ Record<string, unknown>
650
+ >;
651
+
652
+ const rawTotal = countRows.at(0)?.['total'];
653
+ const total = typeof rawTotal === 'bigint' ? Number(rawTotal) : Number(rawTotal ?? 0);
654
+ const sanitizedTotal = Number.isFinite(total) && total > 0 ? total : 0;
655
+
656
+ const offset = (safePage - 1) * safePerPage;
657
+ const prevLimit = state.limitValue;
658
+ const prevOffset = state.offsetValue;
659
+ state.limitValue = safePerPage;
660
+ state.offsetValue = offset;
661
+
662
+ const items = await executeGet<T>(builder, db);
663
+
664
+ state.limitValue = prevLimit;
665
+ state.offsetValue = prevOffset;
666
+
667
+ return createPaginator({
668
+ items,
669
+ total: sanitizedTotal,
670
+ perPage: safePerPage,
671
+ currentPage: safePage,
672
+ baseUrl: options?.baseUrl,
673
+ query: options?.query,
674
+ });
675
+ }
676
+
677
+ /**
678
+ * Create the builder object
679
+ */
680
+ function attachSelectMethods(builder: IQueryBuilder, state: QueryState): void {
681
+ const clearDefaultStar = (): void => {
682
+ if (state.selectColumns.length === 1 && state.selectColumns[0] === '*')
683
+ state.selectColumns = [];
684
+ };
685
+
686
+ builder.select = (...columns) => {
687
+ state.selectColumns = columns.length > 0 ? columns : ['*'];
688
+ return builder;
689
+ };
690
+ builder.selectAs = (column, alias) => {
691
+ const col = String(column).trim();
692
+ const a = String(alias).trim();
693
+ assertSafeIdentifierPath(col, 'select column');
694
+ assertSafeIdentifier(a, 'select alias');
695
+ clearDefaultStar();
696
+ state.selectColumns.push(`${col} AS ${a}`);
697
+ return builder;
698
+ };
699
+ builder.max = (column, alias = 'max') => {
700
+ const col = String(column).trim();
701
+ const a = String(alias).trim();
702
+ assertSafeIdentifierPath(col, 'aggregate argument');
703
+ assertSafeIdentifier(a, 'aggregate alias');
704
+ clearDefaultStar();
705
+ state.selectColumns.push(`MAX(${col}) AS ${a}`);
706
+ return builder;
707
+ };
708
+ }
709
+
710
+ function attachWhereMethods(builder: IQueryBuilder, state: QueryState): void {
711
+ builder.where = (column, operator, value) => {
712
+ applyWhereCondition(state, column, operator, value);
713
+ return builder;
714
+ };
715
+ builder.andWhere = (column, operator, value) => builder.where(column, operator, value);
716
+ builder.orWhere = (column, operator, value) => builder.where(column, operator, value);
717
+ builder.whereIn = (column, values) => {
718
+ builder.where(column, 'IN', values);
719
+ return builder;
720
+ };
721
+ builder.whereNotIn = (column, values) => {
722
+ builder.where(column, 'NOT IN', values);
723
+ return builder;
724
+ };
725
+ }
726
+
727
+ function attachSoftDeleteMethods(builder: IQueryBuilder, state: QueryState): void {
728
+ builder.withTrashed = () => {
729
+ if (state.softDelete === undefined) {
730
+ state.softDelete = { column: 'deleted_at', mode: 'include' };
731
+ } else {
732
+ state.softDelete.mode = 'include';
733
+ }
734
+ return builder;
735
+ };
736
+ builder.onlyTrashed = () => {
737
+ if (state.softDelete === undefined) {
738
+ state.softDelete = { column: 'deleted_at', mode: 'only' };
739
+ } else {
740
+ state.softDelete.mode = 'only';
741
+ }
742
+ return builder;
743
+ };
744
+ builder.withoutTrashed = () => {
745
+ if (state.softDelete === undefined) {
746
+ state.softDelete = { column: 'deleted_at', mode: 'exclude' };
747
+ } else {
748
+ state.softDelete.mode = 'exclude';
749
+ }
750
+ return builder;
751
+ };
752
+ }
753
+
754
+ function attachJoinOrderPagingMethods(builder: IQueryBuilder, state: QueryState): void {
755
+ builder.join = (tableJoin, on) => {
756
+ state.joins.push({ table: tableJoin, on });
757
+ return builder;
758
+ };
759
+ builder.leftJoin = (tableJoin, on) => builder.join(tableJoin, on);
760
+ builder.orderBy = (column, direction = 'ASC') => {
761
+ applyOrderByClause(state, column, direction);
762
+ return builder;
763
+ };
764
+ builder.limit = (count) => {
765
+ applyLimit(state, count);
766
+ return builder;
767
+ };
768
+ builder.offset = (count) => {
769
+ applyOffset(state, count);
770
+ return builder;
771
+ };
772
+ }
773
+
774
+ function attachIntrospectionMethods(builder: IQueryBuilder, state: QueryState): void {
775
+ builder.getWhereClauses = () => state.whereConditions;
776
+ builder.getSelectColumns = () => state.selectColumns;
777
+ builder.getTable = () => state.tableName;
778
+ builder.getLimit = () => state.limitValue;
779
+ builder.getOffset = () => state.offsetValue;
780
+ builder.getOrderBy = () => state.orderByClauses.at(-1);
781
+ builder.getJoins = () => state.joins;
782
+ builder.isReadOperation = () => true;
783
+ builder.toSQL = () => buildSelectQuery(state).sql;
784
+ builder.getParameters = () => buildSelectQuery(state).parameters;
785
+ // Internal method for eager loading distribution
786
+ (builder as unknown as { getEagerLoads: () => string[] }).getEagerLoads = () => state.eagerLoads;
787
+ (
788
+ builder as unknown as { getEagerLoadConstraints: () => EagerLoadConstraints }
789
+ ).getEagerLoadConstraints = () => state.eagerLoadConstraints;
790
+ (builder as unknown as { getEagerLoadCounts: () => string[] }).getEagerLoadCounts = () =>
791
+ state.eagerLoadCounts;
792
+ }
793
+
794
+ function attachReadExecutionMethods(
795
+ builder: IQueryBuilder,
796
+ state: QueryState,
797
+ db?: IDatabase
798
+ ): void {
799
+ builder.first = async <T>() => executeFirst<T>(builder, db);
800
+ builder.firstOrFail = async <T>(message?: string) => executeFirstOrFail<T>(builder, db, message);
801
+ builder.get = async <T>() => executeGet<T>(builder, db);
802
+ builder.paginate = async <T>(
803
+ page: number,
804
+ perPage: number,
805
+ options: PaginationOptions | undefined
806
+ ) => executePaginate<T>(builder, state, db, page, perPage, options);
807
+ // raw just returns results without any hydration logic in callers
808
+ builder.raw = async <T>() => executeGet<T>(builder, db);
809
+ }
810
+
811
+ const isNonEmptyString = (value: unknown): value is string =>
812
+ typeof value === 'string' && value.length > 0;
813
+
814
+ const isKeyValue = (value: unknown): value is string | number =>
815
+ typeof value === 'string' || typeof value === 'number';
816
+
817
+ const getModelIds = (models: IModel[], key: string): Array<string | number> =>
818
+ models.map((model) => model.getAttribute(key)).filter(isKeyValue);
819
+
820
+ const applyConstraint = (query: IQueryBuilder, constraint?: EagerLoadConstraint): IQueryBuilder => {
821
+ if (typeof constraint === 'function') {
822
+ return constraint(query) ?? query;
823
+ }
824
+ return query;
825
+ };
826
+
827
+ /**
828
+ * Load relationship counts for a collection of models
829
+ */
830
+ async function loadCounts(models: IModel[], relation: string, db?: IDatabase): Promise<void> {
831
+ if (models.length === 0 || !db) return;
832
+
833
+ const firstModel = models[0] as unknown as Record<string, () => IRelationship>;
834
+ if (typeof firstModel[relation] !== 'function') return;
835
+
836
+ const rel = firstModel[relation]();
837
+ if (rel === null || rel === undefined) return;
838
+
839
+ const relType = rel.type;
840
+
841
+ // Only hasMany and belongsToMany support counts
842
+ if (relType !== 'hasMany' && relType !== 'belongsToMany') {
843
+ return;
844
+ }
845
+
846
+ const foreignKey = rel.foreignKey;
847
+ const localKey = rel.localKey;
848
+
849
+ const ids = getModelIds(models, localKey);
850
+
851
+ if (ids.length === 0) return;
852
+
853
+ const dialect = typeof db.getType === 'function' ? db.getType() : undefined;
854
+
855
+ const queryCounts = async (
856
+ sql: string,
857
+ params: unknown[]
858
+ ): Promise<Map<string | number, number>> => {
859
+ const results = (await db.query(sql, params, true)) as Array<{
860
+ key: string | number;
861
+ count: number | bigint;
862
+ }>;
863
+ const map = new Map<string | number, number>();
864
+ for (const row of results) {
865
+ let count: number;
866
+ if (typeof row.count === 'bigint') {
867
+ count = Number(row.count);
868
+ } else if (typeof row.count === 'number') {
869
+ count = row.count;
870
+ } else {
871
+ count = Number(row.count ?? 0);
872
+ }
873
+ map.set(row.key, count);
874
+ }
875
+ return map;
876
+ };
877
+
878
+ const setCountsOnModels = (countMap: Map<string | number, number>): void => {
879
+ for (const model of models) {
880
+ const modelId = model.getAttribute(localKey);
881
+ if (isKeyValue(modelId)) {
882
+ const count = countMap.get(modelId) ?? 0;
883
+ model.setAttribute(`${relation}_count`, count);
884
+ } else {
885
+ model.setAttribute(`${relation}_count`, 0);
886
+ }
887
+ }
888
+ };
889
+
890
+ if (relType === 'hasMany') {
891
+ const relatedModel = rel.related as unknown as { query(): IQueryBuilder };
892
+ if (typeof relatedModel?.query !== 'function') return;
893
+
894
+ const tempQuery = relatedModel.query();
895
+ const relatedTable = tempQuery.getTable();
896
+
897
+ const sql = `SELECT ${escapeIdentifier(foreignKey, dialect)} as key, COUNT(*) as count FROM ${escapeIdentifier(
898
+ relatedTable,
899
+ dialect
900
+ )} WHERE ${escapeIdentifier(foreignKey, dialect)} IN (${ids.map(() => '?').join(',')}) GROUP BY ${escapeIdentifier(
901
+ foreignKey,
902
+ dialect
903
+ )}`;
904
+
905
+ const countMap = await queryCounts(sql, ids);
906
+ setCountsOnModels(countMap);
907
+ return;
908
+ }
909
+
910
+ // belongsToMany
911
+ const throughTable = rel.throughTable;
912
+ const relatedKey = rel.relatedKey;
913
+ if (!isNonEmptyString(throughTable) || !isNonEmptyString(relatedKey)) return;
914
+
915
+ const sql = `SELECT ${escapeIdentifier(foreignKey, dialect)} as key, COUNT(*) as count FROM ${escapeIdentifier(
916
+ throughTable,
917
+ dialect
918
+ )} WHERE ${escapeIdentifier(foreignKey, dialect)} IN (${ids.map(() => '?').join(',')}) GROUP BY ${escapeIdentifier(
919
+ foreignKey,
920
+ dialect
921
+ )}`;
922
+
923
+ const countMap = await queryCounts(sql, ids);
924
+ setCountsOnModels(countMap);
925
+ }
926
+
927
+ const getRelationFromModels = (models: IModel[], relation: string): IRelationship | null => {
928
+ const firstModel = models[0] as unknown as Record<string, () => IRelationship>;
929
+ const relationFactory = firstModel?.[relation];
930
+ if (typeof relationFactory !== 'function') return null;
931
+ const rel = relationFactory();
932
+ return rel ?? null;
933
+ };
934
+
935
+ const assignMorphToGroup = (
936
+ modelsByType: Map<string, IModel[]>,
937
+ type: string,
938
+ model: IModel
939
+ ): void => {
940
+ const existing = modelsByType.get(type);
941
+ if (existing) {
942
+ existing.push(model);
943
+ } else {
944
+ modelsByType.set(type, [model]);
945
+ }
946
+ };
947
+
948
+ const getModelTable = (model: IModel): string | null => {
949
+ const tableGetter = (model as unknown as { getTable?: () => string }).getTable;
950
+ if (typeof tableGetter !== 'function') return null;
951
+ const table = tableGetter();
952
+ return isNonEmptyString(table) ? table : null;
953
+ };
954
+
955
+ const buildSingleMap = (results: IModel[], key: string): Map<string | number, IModel> => {
956
+ const map = new Map<string | number, IModel>();
957
+ for (const result of results) {
958
+ const resultId = result.getAttribute(key);
959
+ if (isKeyValue(resultId)) {
960
+ map.set(resultId, result);
961
+ }
962
+ }
963
+ return map;
964
+ };
965
+
966
+ const buildBucketMap = (results: IModel[], key: string): Map<string | number, IModel[]> => {
967
+ const buckets = new Map<string | number, IModel[]>();
968
+ for (const result of results) {
969
+ const resultId = result.getAttribute(key);
970
+ if (isKeyValue(resultId)) {
971
+ const existing = buckets.get(resultId) ?? [];
972
+ existing.push(result);
973
+ buckets.set(resultId, existing);
974
+ }
975
+ }
976
+ return buckets;
977
+ };
978
+
979
+ const setRelationsFromBuckets = (
980
+ models: IModel[],
981
+ relation: string,
982
+ localKey: string,
983
+ buckets: Map<string | number, IModel[]>,
984
+ isMany: boolean
985
+ ): void => {
986
+ for (const model of models) {
987
+ const modelId = model.getAttribute(localKey);
988
+ if (!isKeyValue(modelId)) {
989
+ model.setRelation(relation, isMany ? [] : null);
990
+ continue;
991
+ }
992
+
993
+ const bucket = buckets.get(modelId) ?? [];
994
+ if (isMany) {
995
+ model.setRelation(relation, bucket);
996
+ } else {
997
+ model.setRelation(relation, bucket[0] ?? null);
998
+ }
999
+ }
1000
+ };
1001
+
1002
+ const buildParentToThroughIds = (
1003
+ throughResults: IModel[],
1004
+ throughForeignKey: string,
1005
+ secondLocalKey: string
1006
+ ): Map<string | number, Array<string | number>> => {
1007
+ const parentToThroughIds = new Map<string | number, Array<string | number>>();
1008
+ for (const throughItem of throughResults) {
1009
+ const parentId = throughItem.getAttribute(throughForeignKey);
1010
+ const throughId = throughItem.getAttribute(secondLocalKey);
1011
+ if (isKeyValue(parentId) && isKeyValue(throughId)) {
1012
+ const existing = parentToThroughIds.get(parentId) ?? [];
1013
+ existing.push(throughId);
1014
+ parentToThroughIds.set(parentId, existing);
1015
+ }
1016
+ }
1017
+ return parentToThroughIds;
1018
+ };
1019
+
1020
+ const collectThroughRelated = (
1021
+ throughIds: Array<string | number>,
1022
+ relatedBuckets: Map<string | number, IModel[]>
1023
+ ): IModel[] => {
1024
+ const aggregated: IModel[] = [];
1025
+ for (const throughId of throughIds) {
1026
+ const bucket = relatedBuckets.get(throughId);
1027
+ if (bucket !== undefined) {
1028
+ aggregated.push(...bucket);
1029
+ }
1030
+ }
1031
+ return aggregated;
1032
+ };
1033
+
1034
+ const setThroughRelations = (
1035
+ models: IModel[],
1036
+ relation: string,
1037
+ localKey: string,
1038
+ parentToThroughIds: Map<string | number, Array<string | number>>,
1039
+ relatedBuckets: Map<string | number, IModel[]>,
1040
+ isMany: boolean
1041
+ ): void => {
1042
+ for (const model of models) {
1043
+ const modelId = model.getAttribute(localKey);
1044
+ if (!isKeyValue(modelId)) {
1045
+ model.setRelation(relation, isMany ? [] : null);
1046
+ continue;
1047
+ }
1048
+
1049
+ const throughIds = parentToThroughIds.get(modelId) ?? [];
1050
+ if (throughIds.length === 0) {
1051
+ model.setRelation(relation, isMany ? [] : null);
1052
+ continue;
1053
+ }
1054
+
1055
+ const aggregated = collectThroughRelated(throughIds, relatedBuckets);
1056
+ if (isMany) {
1057
+ model.setRelation(relation, aggregated);
1058
+ } else {
1059
+ model.setRelation(relation, aggregated[0] ?? null);
1060
+ }
1061
+ }
1062
+ };
1063
+
1064
+ const buildMorphToGroups = (models: IModel[], morphType: string): Map<string, IModel[]> => {
1065
+ const modelsByType = new Map<string, IModel[]>();
1066
+ for (const model of models) {
1067
+ const type = model.getAttribute(morphType);
1068
+ if (isNonEmptyString(type)) {
1069
+ assignMorphToGroup(modelsByType, type, model);
1070
+ }
1071
+ }
1072
+ return modelsByType;
1073
+ };
1074
+
1075
+ const setMorphToRelations = (
1076
+ models: IModel[],
1077
+ relation: string,
1078
+ morphId: string,
1079
+ relatedMap: Map<string | number, IModel>
1080
+ ): void => {
1081
+ for (const model of models) {
1082
+ const modelId = model.getAttribute(morphId);
1083
+ if (isKeyValue(modelId)) {
1084
+ model.setRelation(relation, relatedMap.get(modelId) ?? null);
1085
+ } else {
1086
+ model.setRelation(relation, null);
1087
+ }
1088
+ }
1089
+ };
1090
+
1091
+ const loadMorphToGroup = async (
1092
+ relation: string,
1093
+ morphId: string,
1094
+ modelsOfType: IModel[],
1095
+ relatedModel: { query: () => IQueryBuilder },
1096
+ constraint?: EagerLoadConstraint
1097
+ ): Promise<void> => {
1098
+ const ids = getModelIds(modelsOfType, morphId);
1099
+ if (ids.length === 0) return;
1100
+
1101
+ const relatedQuery = applyConstraint(relatedModel.query(), constraint);
1102
+
1103
+ const relatedResults = await relatedQuery.whereIn('id', ids).get<IModel>();
1104
+ const relatedMap = buildSingleMap(relatedResults, 'id');
1105
+ setMorphToRelations(modelsOfType, relation, morphId, relatedMap);
1106
+ };
1107
+
1108
+ const loadMorphToRelation = async (
1109
+ models: IModel[],
1110
+ relation: string,
1111
+ rel: IRelationship,
1112
+ constraint?: EagerLoadConstraint
1113
+ ): Promise<boolean> => {
1114
+ if (rel.type !== 'morphTo') return false;
1115
+
1116
+ const morphType = rel.morphType;
1117
+ const morphId = rel.morphId;
1118
+ const morphMap = rel.morphMap;
1119
+
1120
+ if (
1121
+ !isNonEmptyString(morphType) ||
1122
+ !isNonEmptyString(morphId) ||
1123
+ morphMap === null ||
1124
+ morphMap === undefined
1125
+ ) {
1126
+ return true;
1127
+ }
1128
+
1129
+ const modelsByType = buildMorphToGroups(models, morphType);
1130
+
1131
+ const tasks = [...modelsByType.entries()].map(async ([type, modelsOfType]) => {
1132
+ const relatedModel = morphMap[type] as unknown as { query(): IQueryBuilder } | undefined;
1133
+ if (relatedModel === undefined || typeof relatedModel.query !== 'function') {
1134
+ return Promise.resolve(); //NOSONAR
1135
+ }
1136
+
1137
+ return loadMorphToGroup(relation, morphId, modelsOfType, relatedModel, constraint);
1138
+ });
1139
+
1140
+ await Promise.all(tasks);
1141
+
1142
+ return true;
1143
+ };
1144
+
1145
+ const prepareMorphOneMany = (
1146
+ models: IModel[],
1147
+ rel: IRelationship,
1148
+ localKey: string | undefined,
1149
+ morphId: string | undefined,
1150
+ morphType: string | undefined
1151
+ ): {
1152
+ proceed: boolean;
1153
+ ids?: Array<string | number>;
1154
+ relatedModel?: { query?: () => IQueryBuilder };
1155
+ tableName?: string;
1156
+ } => {
1157
+ if (!isNonEmptyString(morphType) || !isNonEmptyString(morphId) || !isNonEmptyString(localKey)) {
1158
+ return { proceed: false };
1159
+ }
1160
+
1161
+ const ids = getModelIds(models, localKey);
1162
+ if (ids.length === 0) return { proceed: false };
1163
+
1164
+ const relatedModel = rel.related as unknown as { query?: () => IQueryBuilder };
1165
+ if (typeof relatedModel.query !== 'function') return { proceed: false };
1166
+
1167
+ const tableName = getModelTable(models[0]);
1168
+ if (tableName === null) return { proceed: false };
1169
+
1170
+ return { proceed: true, ids, relatedModel, tableName };
1171
+ };
1172
+
1173
+ const loadMorphOneManyRelation = async (
1174
+ models: IModel[],
1175
+ relation: string,
1176
+ rel: IRelationship,
1177
+ constraint?: EagerLoadConstraint
1178
+ ): Promise<boolean> => {
1179
+ if (rel.type !== 'morphOne' && rel.type !== 'morphMany') return false;
1180
+
1181
+ const morphType = rel.morphType;
1182
+ const morphId = rel.morphId;
1183
+ const localKey = rel.localKey;
1184
+
1185
+ const prep = prepareMorphOneMany(models, rel, localKey, morphId, morphType);
1186
+ if (
1187
+ !prep.proceed ||
1188
+ prep.ids === undefined ||
1189
+ prep.relatedModel === undefined ||
1190
+ prep.tableName === undefined ||
1191
+ !isNonEmptyString(morphType) ||
1192
+ !isNonEmptyString(morphId) ||
1193
+ !isNonEmptyString(localKey)
1194
+ ) {
1195
+ return true;
1196
+ }
1197
+
1198
+ const ids = prep.ids;
1199
+ const relatedModel = prep.relatedModel as { query(): IQueryBuilder };
1200
+ const tableName = prep.tableName;
1201
+
1202
+ const relatedQuery = applyConstraint(relatedModel.query(), constraint)
1203
+ .where(morphType, '=', tableName)
1204
+ .whereIn(morphId, ids);
1205
+
1206
+ const relatedResults = await relatedQuery.get<IModel>();
1207
+ const relatedBuckets = buildBucketMap(relatedResults, morphId);
1208
+ const isMany = rel.type === 'morphMany';
1209
+ setRelationsFromBuckets(models, relation, localKey, relatedBuckets, isMany);
1210
+
1211
+ return true;
1212
+ };
1213
+
1214
+ const loadThroughRelation = async (
1215
+ models: IModel[],
1216
+ relation: string,
1217
+ rel: IRelationship,
1218
+ constraint?: EagerLoadConstraint
1219
+ ): Promise<boolean> => {
1220
+ if (rel.type !== 'hasOneThrough' && rel.type !== 'hasManyThrough') return false;
1221
+
1222
+ const through = rel.through;
1223
+ const throughForeignKey = rel.throughForeignKey;
1224
+ const secondLocalKey = rel.secondLocalKey;
1225
+ const foreignKey = rel.foreignKey;
1226
+ const localKey = rel.localKey;
1227
+
1228
+ if (
1229
+ through === undefined ||
1230
+ through === null ||
1231
+ !isNonEmptyString(throughForeignKey) ||
1232
+ !isNonEmptyString(secondLocalKey) ||
1233
+ !isNonEmptyString(foreignKey) ||
1234
+ !isNonEmptyString(localKey)
1235
+ ) {
1236
+ return true;
1237
+ }
1238
+
1239
+ const ids = getModelIds(models, localKey);
1240
+ if (ids.length === 0) return true;
1241
+
1242
+ const throughModel = through as unknown as {
1243
+ query(): IQueryBuilder;
1244
+ getTable?: () => string;
1245
+ };
1246
+ const relatedModel = rel.related as unknown as {
1247
+ query(): IQueryBuilder;
1248
+ getTable?: () => string;
1249
+ };
1250
+
1251
+ if (
1252
+ typeof throughModel.getTable !== 'function' ||
1253
+ typeof relatedModel.query !== 'function' ||
1254
+ typeof relatedModel.getTable !== 'function'
1255
+ ) {
1256
+ return true;
1257
+ }
1258
+
1259
+ const throughTable = throughModel.getTable();
1260
+ const relatedTable = relatedModel.getTable();
1261
+ if (!isNonEmptyString(throughTable) || !isNonEmptyString(relatedTable)) return true;
1262
+
1263
+ let relatedQuery = relatedModel.query();
1264
+ relatedQuery = applyConstraint(relatedQuery, constraint);
1265
+
1266
+ relatedQuery = relatedQuery
1267
+ .join(throughTable, `${relatedTable}.${foreignKey} = ${throughTable}.${secondLocalKey}`)
1268
+ .whereIn(`${throughTable}.${throughForeignKey}`, ids);
1269
+
1270
+ const relatedResults = await relatedQuery.get<IModel>();
1271
+
1272
+ const throughQuery = throughModel.query().whereIn(throughForeignKey, ids);
1273
+ const throughResults = await throughQuery.get<IModel>();
1274
+
1275
+ const parentToThroughIds = buildParentToThroughIds(
1276
+ throughResults,
1277
+ throughForeignKey,
1278
+ secondLocalKey
1279
+ );
1280
+
1281
+ const relatedBuckets = buildBucketMap(relatedResults, foreignKey);
1282
+
1283
+ const isMany = rel.type === 'hasManyThrough';
1284
+ setThroughRelations(models, relation, localKey, parentToThroughIds, relatedBuckets, isMany);
1285
+
1286
+ return true;
1287
+ };
1288
+
1289
+ const loadStandardRelation = async (
1290
+ models: IModel[],
1291
+ relation: string,
1292
+ rel: IRelationship,
1293
+ constraint?: EagerLoadConstraint
1294
+ ): Promise<boolean> => {
1295
+ const related = (rel as unknown as { related?: unknown }).related;
1296
+ if (related === null || related === undefined) return false;
1297
+
1298
+ const foreignKey = rel.foreignKey;
1299
+ const localKey = rel.localKey;
1300
+ if (!isNonEmptyString(foreignKey) || !isNonEmptyString(localKey)) return false;
1301
+
1302
+ const ids = getModelIds(models, localKey);
1303
+ if (ids.length === 0) return true;
1304
+
1305
+ const relatedModel = rel.related as unknown as { query(): IQueryBuilder };
1306
+ if (typeof relatedModel.query !== 'function') return false;
1307
+
1308
+ const relatedQuery = applyConstraint(relatedModel.query(), constraint);
1309
+ const relatedResults = await relatedQuery.whereIn(foreignKey, ids).get<IModel>();
1310
+ const relatedBuckets = buildBucketMap(relatedResults, foreignKey);
1311
+ const isMany = rel.type === 'hasMany' || rel.type === 'belongsToMany';
1312
+ setRelationsFromBuckets(models, relation, localKey, relatedBuckets, isMany);
1313
+
1314
+ return true;
1315
+ };
1316
+
1317
+ const loadRelation = async (
1318
+ models: IModel[],
1319
+ relation: string,
1320
+ constraint?: EagerLoadConstraint
1321
+ ): Promise<void> => {
1322
+ if (models.length === 0) return;
1323
+ const rel = getRelationFromModels(models, relation);
1324
+ if (!rel) return;
1325
+
1326
+ const type = rel.type;
1327
+ if (type === 'morphTo') {
1328
+ await loadMorphToRelation(models, relation, rel, constraint);
1329
+ return;
1330
+ }
1331
+ if (type === 'morphOne' || type === 'morphMany') {
1332
+ await loadMorphOneManyRelation(models, relation, rel, constraint);
1333
+ return;
1334
+ }
1335
+ if (type === 'hasOneThrough' || type === 'hasManyThrough') {
1336
+ await loadThroughRelation(models, relation, rel, constraint);
1337
+ return;
1338
+ }
1339
+ await loadStandardRelation(models, relation, rel, constraint);
1340
+ };
1341
+
1342
+ function attachRelationshipMethods(
1343
+ builder: IQueryBuilder,
1344
+ state: QueryState,
1345
+ db?: IDatabase
1346
+ ): void {
1347
+ builder.with = (relation: string | EagerLoadConstraints) => {
1348
+ if (typeof relation === 'string') {
1349
+ state.eagerLoads.push(relation);
1350
+ return builder;
1351
+ }
1352
+
1353
+ for (const [name, constraint] of Object.entries(relation)) {
1354
+ if (state.eagerLoads.includes(name) === false) {
1355
+ state.eagerLoads.push(name);
1356
+ }
1357
+ state.eagerLoadConstraints[name] = constraint;
1358
+ }
1359
+
1360
+ return builder;
1361
+ };
1362
+
1363
+ builder.withCount = (relation: string) => {
1364
+ state.eagerLoadCounts.push(relation);
1365
+ return builder;
1366
+ };
1367
+
1368
+ builder.load = async (models: IModel[], relation: string, constraint?: EagerLoadConstraint) => {
1369
+ await loadRelation(models, relation, constraint);
1370
+ };
1371
+
1372
+ builder.loadCount = async (models: IModel[], relation: string) => {
1373
+ await loadCounts(models, relation, db);
1374
+ };
1375
+ }
1376
+
1377
+ function attachWriteMethods(builder: IQueryBuilder, state: QueryState, db?: IDatabase): void {
1378
+ const ensureDb = (): IDatabase => {
1379
+ if (!db)
1380
+ throw ErrorFactory.createDatabaseError('Database instance not provided to QueryBuilder');
1381
+ return db;
1382
+ };
1383
+
1384
+ builder.insert = async (values) => {
1385
+ const currentDb = ensureDb();
1386
+ const tableName = state.tableName.trim();
1387
+ if (tableName.length === 0)
1388
+ throw ErrorFactory.createDatabaseError('INSERT requires a table name');
1389
+ const compiled = compileInsert(tableName, values, state.dialect);
1390
+ const items = Array.isArray(values) ? values : [values];
1391
+
1392
+ const result = await currentDb.execute(compiled.sql, compiled.parameters, false);
1393
+
1394
+ // Return InsertResult with metadata
1395
+ // Note: lastInsertId typically only available for single-row inserts in most databases
1396
+ // For multi-row inserts, use the insertedRecords array
1397
+ return {
1398
+ id:
1399
+ (result.lastInsertId as string | number | bigint) ??
1400
+ (items.length === 1 ? ((items[0]?.['id'] as string | number | null) ?? null) : null),
1401
+ affectedRows: result.rowCount,
1402
+ insertedRecords: items,
1403
+ };
1404
+ };
1405
+ builder.update = async (values) => {
1406
+ const currentDb = ensureDb();
1407
+ const tableName = state.tableName.trim();
1408
+ if (tableName.length === 0)
1409
+ throw ErrorFactory.createDatabaseError('UPDATE requires a table name');
1410
+ const compiled = compileUpdate(tableName, values, state.whereConditions, state.dialect);
1411
+ await currentDb.query(compiled.sql, compiled.parameters, false);
1412
+ };
1413
+ builder.delete = async () => {
1414
+ const currentDb = ensureDb();
1415
+ const tableName = state.tableName.trim();
1416
+ if (tableName.length === 0)
1417
+ throw ErrorFactory.createDatabaseError('DELETE requires a table name');
1418
+ const compiled = compileDelete(tableName, state.whereConditions, state.dialect);
1419
+ await currentDb.query(compiled.sql, compiled.parameters, false);
1420
+ };
1421
+ }
1422
+
1423
+ function createBuilder(state: QueryState, db?: IDatabase): IQueryBuilder {
1424
+ const builder = {} as IQueryBuilder;
1425
+
1426
+ attachSelectMethods(builder, state);
1427
+ attachWhereMethods(builder, state);
1428
+ attachSoftDeleteMethods(builder, state);
1429
+ attachJoinOrderPagingMethods(builder, state);
1430
+ attachIntrospectionMethods(builder, state);
1431
+ attachReadExecutionMethods(builder, state, db);
1432
+ attachRelationshipMethods(builder, state, db);
1433
+ attachWriteMethods(builder, state, db);
1434
+
1435
+ return builder;
1436
+ }
1437
+
1438
+ /**
1439
+ * QueryBuilder - Type-Safe Query Builder
1440
+ * Sealed namespace object following Pattern 2
1441
+ *
1442
+ * @see FRAMEWORK_REFACTOR_FUNCTION_PATTERN.md for Pattern 2 details
1443
+ */
1444
+ export const QueryBuilder = Object.freeze({
1445
+ /**
1446
+ * Create a new query builder instance
1447
+ */
1448
+ create(
1449
+ tableOrDb: string | IDatabase,
1450
+ db?: IDatabase,
1451
+ options: QueryBuilderOptions = {}
1452
+ ): IQueryBuilder {
1453
+ const hasTable = typeof tableOrDb === 'string';
1454
+ const tableName = hasTable ? String(tableOrDb).trim() : '';
1455
+ const database = hasTable ? db : tableOrDb;
1456
+
1457
+ if (tableName.length > 0) {
1458
+ assertSafeIdentifierPath(tableName, 'table name');
1459
+ }
1460
+ const state: QueryState = {
1461
+ tableName,
1462
+ whereConditions: [],
1463
+ selectColumns: ['*'],
1464
+ orderByClauses: [],
1465
+ joins: [],
1466
+ eagerLoads: [],
1467
+ eagerLoadConstraints: {},
1468
+ eagerLoadCounts: [],
1469
+ dialect: typeof database?.getType === 'function' ? database.getType() : undefined,
1470
+ };
1471
+
1472
+ if (options.softDeleteColumn !== undefined && options.softDeleteColumn.trim().length > 0) {
1473
+ state.softDelete = {
1474
+ column: options.softDeleteColumn.trim(),
1475
+ mode: options.softDeleteMode ?? 'exclude',
1476
+ };
1477
+ }
1478
+
1479
+ return createBuilder(state, database);
1480
+ },
1481
+
1482
+ /**
1483
+ * Ping the database connection.
1484
+ *
1485
+ * This is intentionally a tiny, dependency-free check that can be reused by
1486
+ * health/readiness endpoints without embedding SQL in route handlers.
1487
+ */
1488
+ async ping(db: IDatabase): Promise<void> {
1489
+ // Use the QueryBuilder itself to avoid embedding raw SQL at call sites.
1490
+ await QueryBuilder.create('', db).select('1').get();
1491
+ },
1492
+ });