@zintrust/core 0.1.26 → 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 (1521) 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 -43
  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/templates/project/basic/app/Controllers/AuthController.ts.tpl +21 -22
  306. package/src/testing/TestEnvironment.ts +213 -0
  307. package/src/testing/TestHttp.ts +134 -0
  308. package/src/testing/index.ts +11 -0
  309. package/src/time/DateTime.ts +548 -0
  310. package/src/time/index.ts +7 -0
  311. package/src/toolkit/Secrets/EnvFile.ts +80 -0
  312. package/src/toolkit/Secrets/Manifest.ts +119 -0
  313. package/src/toolkit/Secrets/index.ts +192 -0
  314. package/src/toolkit/Secrets/providers/AwsSecretsManager.ts +189 -0
  315. package/src/toolkit/Secrets/providers/CloudflareKv.ts +94 -0
  316. package/src/tools/broadcast/Broadcast.ts +116 -0
  317. package/src/tools/broadcast/BroadcastRegistry.ts +38 -0
  318. package/src/tools/broadcast/BroadcastRuntimeRegistration.ts +31 -0
  319. package/src/tools/broadcast/drivers/BaseDriver.ts +10 -0
  320. package/src/tools/broadcast/drivers/InMemory.ts +20 -0
  321. package/src/tools/broadcast/drivers/Pusher.ts +107 -0
  322. package/src/tools/broadcast/drivers/Redis.ts +49 -0
  323. package/src/tools/broadcast/drivers/RedisHttps.ts +74 -0
  324. package/src/tools/broadcast/index.ts +8 -0
  325. package/src/tools/http/Http.ts +234 -0
  326. package/src/tools/http/HttpResponse.ts +118 -0
  327. package/src/tools/http/index.ts +11 -0
  328. package/src/tools/mail/Mail.ts +1 -0
  329. package/src/tools/mail/MailDriverRegistry.ts +34 -0
  330. package/src/tools/mail/attachments.ts +47 -0
  331. package/src/tools/mail/drivers/BaseDriver.ts +10 -0
  332. package/src/tools/mail/drivers/Mailgun.ts +130 -0
  333. package/src/tools/mail/drivers/SendGrid.ts +103 -0
  334. package/src/tools/mail/drivers/Ses.ts +179 -0
  335. package/src/tools/mail/drivers/Smtp.ts +490 -0
  336. package/src/tools/mail/index.ts +218 -0
  337. package/src/tools/mail/template-loader.ts +128 -0
  338. package/src/tools/mail/template-utils.ts +19 -0
  339. package/src/tools/mail/templates/auth-password-reset.html +231 -0
  340. package/src/tools/mail/templates/auth-welcome.html +236 -0
  341. package/src/tools/mail/templates/general.html +109 -0
  342. package/src/tools/mail/templates/index.ts +143 -0
  343. package/src/tools/mail/templates/job-completed.html +188 -0
  344. package/src/tools/mail/templates/notifications-new-comment.html +228 -0
  345. package/src/tools/mail/templates/password-reset.html +221 -0
  346. package/src/tools/mail/templates/performance-report.html +258 -0
  347. package/src/tools/mail/templates/welcome.html +187 -0
  348. package/src/tools/mail/templates/worker-alert.html +229 -0
  349. package/src/tools/mail/testing.ts +59 -0
  350. package/src/tools/notification/Driver.ts +11 -0
  351. package/src/tools/notification/Notification.ts +55 -0
  352. package/src/tools/notification/NotificationChannelRegistry.ts +46 -0
  353. package/src/tools/notification/NotificationRuntimeRegistration.ts +36 -0
  354. package/src/tools/notification/Registry.ts +35 -0
  355. package/src/tools/notification/Service.ts +136 -0
  356. package/src/tools/notification/config.ts +7 -0
  357. package/src/tools/notification/drivers/BaseDriver.ts +10 -0
  358. package/src/tools/notification/drivers/Console.ts +18 -0
  359. package/src/tools/notification/drivers/Slack.ts +42 -0
  360. package/src/tools/notification/drivers/SlackNotification.ts +17 -0
  361. package/src/tools/notification/drivers/Termii.ts +43 -0
  362. package/src/tools/notification/drivers/Twilio.ts +77 -0
  363. package/src/tools/notification/drivers/TwilioNotification.ts +19 -0
  364. package/src/tools/notification/templates/markdown/index.ts +49 -0
  365. package/src/tools/notification/templates/markdown/notifications/new-follow.md +12 -0
  366. package/src/tools/notification/templates/markdown/registry.ts +45 -0
  367. package/src/tools/notification/testing.ts +50 -0
  368. package/src/tools/notification/testingHelpers.ts +44 -0
  369. package/src/tools/queue/AdvancedQueue.ts +458 -0
  370. package/src/tools/queue/DeduplicationBuilder.ts +111 -0
  371. package/src/tools/queue/LockProvider.ts +335 -0
  372. package/src/tools/queue/Queue.ts +78 -0
  373. package/src/tools/queue/QueueExtensions.ts +161 -0
  374. package/src/tools/queue/QueueRuntimeRegistration.ts +29 -0
  375. package/src/tools/queue/drivers/Database.ts +183 -0
  376. package/src/tools/queue/drivers/InMemory.ts +64 -0
  377. package/src/tools/queue/drivers/Redis.ts +33 -0
  378. package/src/tools/queue/index.ts +28 -0
  379. package/src/tools/redis/RedisKeyManager.ts +142 -0
  380. package/src/tools/storage/LocalSignedUrl.ts +142 -0
  381. package/src/tools/storage/StorageDiskRegistry.ts +45 -0
  382. package/src/tools/storage/StorageDriverRegistry.ts +31 -0
  383. package/src/tools/storage/StorageRuntimeRegistration.ts +32 -0
  384. package/src/tools/storage/drivers/Gcs.ts +201 -0
  385. package/src/tools/storage/drivers/Local.ts +116 -0
  386. package/src/tools/storage/drivers/R2.ts +99 -0
  387. package/src/tools/storage/drivers/S3.ts +347 -0
  388. package/src/tools/storage/index.ts +217 -0
  389. package/src/tools/storage/testing.ts +80 -0
  390. package/src/tools/templates/MarkdownRenderer.ts +354 -0
  391. package/src/tools/templates/index.ts +5 -0
  392. package/src/types/Queue.ts +71 -0
  393. package/src/types/redis.d.ts +11 -0
  394. package/src/validation/ValidationError.ts +79 -0
  395. package/src/validation/Validator.ts +681 -0
  396. package/src/zintrust.plugins.ts +13 -0
  397. package/bin/z.d.ts +0 -7
  398. package/bin/z.d.ts.map +0 -1
  399. package/bin/z.js +0 -7
  400. package/bin/zin.d.ts +0 -7
  401. package/bin/zin.d.ts.map +0 -1
  402. package/bin/zin.js +0 -7
  403. package/bin/zintrust-main.d.ts +0 -9
  404. package/bin/zintrust-main.d.ts.map +0 -1
  405. package/bin/zintrust-main.js +0 -110
  406. package/bin/zintrust-microservices.d.ts +0 -7
  407. package/bin/zintrust-microservices.d.ts.map +0 -1
  408. package/bin/zintrust-microservices.js +0 -165
  409. package/bin/zintrust.d.ts +0 -10
  410. package/bin/zintrust.d.ts.map +0 -1
  411. package/bin/zintrust.js +0 -10
  412. package/bin/zt.d.ts +0 -7
  413. package/bin/zt.d.ts.map +0 -1
  414. package/bin/zt.js +0 -7
  415. package/routes/api.d.ts +0 -7
  416. package/routes/api.d.ts.map +0 -1
  417. package/routes/api.js +0 -115
  418. package/routes/broadcast.d.ts +0 -9
  419. package/routes/broadcast.d.ts.map +0 -1
  420. package/routes/broadcast.js +0 -27
  421. package/routes/health.d.ts +0 -6
  422. package/routes/health.d.ts.map +0 -1
  423. package/routes/health.js +0 -5
  424. package/routes/metrics.d.ts +0 -9
  425. package/routes/metrics.d.ts.map +0 -1
  426. package/routes/metrics.js +0 -20
  427. package/routes/openapi.d.ts +0 -9
  428. package/routes/openapi.d.ts.map +0 -1
  429. package/routes/openapi.js +0 -76
  430. package/routes/storage.d.ts +0 -4
  431. package/routes/storage.d.ts.map +0 -1
  432. package/routes/storage.js +0 -35
  433. package/src/auth/Auth.d.ts +0 -20
  434. package/src/auth/Auth.d.ts.map +0 -1
  435. package/src/auth/Auth.js +0 -33
  436. package/src/boot/Application.d.ts +0 -31
  437. package/src/boot/Application.d.ts.map +0 -1
  438. package/src/boot/Application.js +0 -351
  439. package/src/boot/Server.d.ts +0 -24
  440. package/src/boot/Server.d.ts.map +0 -1
  441. package/src/boot/Server.js +0 -117
  442. package/src/boot/bootstrap.d.ts +0 -7
  443. package/src/boot/bootstrap.d.ts.map +0 -1
  444. package/src/boot/bootstrap.js +0 -232
  445. package/src/builder/BundleOptimizer.d.ts +0 -42
  446. package/src/builder/BundleOptimizer.d.ts.map +0 -1
  447. package/src/builder/BundleOptimizer.js +0 -352
  448. package/src/cache/Cache.d.ts +0 -39
  449. package/src/cache/Cache.d.ts.map +0 -1
  450. package/src/cache/Cache.js +0 -142
  451. package/src/cache/CacheDriver.d.ts +0 -32
  452. package/src/cache/CacheDriver.d.ts.map +0 -1
  453. package/src/cache/CacheDriver.js +0 -6
  454. package/src/cache/CacheDriverRegistry.d.ts +0 -15
  455. package/src/cache/CacheDriverRegistry.d.ts.map +0 -1
  456. package/src/cache/CacheDriverRegistry.js +0 -19
  457. package/src/cache/CacheRuntimeRegistration.d.ts +0 -11
  458. package/src/cache/CacheRuntimeRegistration.d.ts.map +0 -1
  459. package/src/cache/CacheRuntimeRegistration.js +0 -21
  460. package/src/cache/drivers/KVDriver.d.ts +0 -12
  461. package/src/cache/drivers/KVDriver.d.ts.map +0 -1
  462. package/src/cache/drivers/KVDriver.js +0 -55
  463. package/src/cache/drivers/KVRemoteDriver.d.ts +0 -11
  464. package/src/cache/drivers/KVRemoteDriver.d.ts.map +0 -1
  465. package/src/cache/drivers/KVRemoteDriver.js +0 -70
  466. package/src/cache/drivers/MemoryDriver.d.ts +0 -12
  467. package/src/cache/drivers/MemoryDriver.d.ts.map +0 -1
  468. package/src/cache/drivers/MemoryDriver.js +0 -71
  469. package/src/cache/drivers/MongoDriver.d.ts +0 -17
  470. package/src/cache/drivers/MongoDriver.d.ts.map +0 -1
  471. package/src/cache/drivers/MongoDriver.js +0 -80
  472. package/src/cache/drivers/RedisDriver.d.ts +0 -12
  473. package/src/cache/drivers/RedisDriver.d.ts.map +0 -1
  474. package/src/cache/drivers/RedisDriver.js +0 -84
  475. package/src/cli/BaseCommand.d.ts +0 -41
  476. package/src/cli/BaseCommand.d.ts.map +0 -1
  477. package/src/cli/BaseCommand.js +0 -69
  478. package/src/cli/CLI.d.ts +0 -21
  479. package/src/cli/CLI.d.ts.map +0 -1
  480. package/src/cli/CLI.js +0 -242
  481. package/src/cli/ErrorHandler.d.ts +0 -23
  482. package/src/cli/ErrorHandler.d.ts.map +0 -1
  483. package/src/cli/ErrorHandler.js +0 -99
  484. package/src/cli/PromptHelper.d.ts +0 -47
  485. package/src/cli/PromptHelper.d.ts.map +0 -1
  486. package/src/cli/PromptHelper.js +0 -156
  487. package/src/cli/commands/AddCommand.d.ts +0 -96
  488. package/src/cli/commands/AddCommand.d.ts.map +0 -1
  489. package/src/cli/commands/AddCommand.js +0 -932
  490. package/src/cli/commands/BroadcastWorkCommand.d.ts +0 -10
  491. package/src/cli/commands/BroadcastWorkCommand.d.ts.map +0 -1
  492. package/src/cli/commands/BroadcastWorkCommand.js +0 -16
  493. package/src/cli/commands/ConfigCommand.d.ts +0 -15
  494. package/src/cli/commands/ConfigCommand.d.ts.map +0 -1
  495. package/src/cli/commands/ConfigCommand.js +0 -307
  496. package/src/cli/commands/CreateCommand.d.ts +0 -15
  497. package/src/cli/commands/CreateCommand.d.ts.map +0 -1
  498. package/src/cli/commands/CreateCommand.js +0 -143
  499. package/src/cli/commands/D1MigrateCommand.d.ts +0 -19
  500. package/src/cli/commands/D1MigrateCommand.d.ts.map +0 -1
  501. package/src/cli/commands/D1MigrateCommand.js +0 -71
  502. package/src/cli/commands/DbSeedCommand.d.ts +0 -9
  503. package/src/cli/commands/DbSeedCommand.d.ts.map +0 -1
  504. package/src/cli/commands/DbSeedCommand.js +0 -139
  505. package/src/cli/commands/DebugCommand.d.ts +0 -15
  506. package/src/cli/commands/DebugCommand.d.ts.map +0 -1
  507. package/src/cli/commands/DebugCommand.js +0 -52
  508. package/src/cli/commands/FixCommand.d.ts +0 -15
  509. package/src/cli/commands/FixCommand.d.ts.map +0 -1
  510. package/src/cli/commands/FixCommand.js +0 -68
  511. package/src/cli/commands/JwtDevCommand.d.ts +0 -8
  512. package/src/cli/commands/JwtDevCommand.d.ts.map +0 -1
  513. package/src/cli/commands/JwtDevCommand.js +0 -114
  514. package/src/cli/commands/KeyGenerateCommand.d.ts +0 -9
  515. package/src/cli/commands/KeyGenerateCommand.d.ts.map +0 -1
  516. package/src/cli/commands/KeyGenerateCommand.js +0 -76
  517. package/src/cli/commands/LogsCleanupCommand.d.ts +0 -6
  518. package/src/cli/commands/LogsCleanupCommand.d.ts.map +0 -1
  519. package/src/cli/commands/LogsCleanupCommand.js +0 -20
  520. package/src/cli/commands/LogsCommand.d.ts +0 -19
  521. package/src/cli/commands/LogsCommand.d.ts.map +0 -1
  522. package/src/cli/commands/LogsCommand.js +0 -217
  523. package/src/cli/commands/MakeMailTemplateCommand.d.ts +0 -10
  524. package/src/cli/commands/MakeMailTemplateCommand.d.ts.map +0 -1
  525. package/src/cli/commands/MakeMailTemplateCommand.js +0 -76
  526. package/src/cli/commands/MakeNotificationTemplateCommand.d.ts +0 -10
  527. package/src/cli/commands/MakeNotificationTemplateCommand.d.ts.map +0 -1
  528. package/src/cli/commands/MakeNotificationTemplateCommand.js +0 -115
  529. package/src/cli/commands/MigrateCommand.d.ts +0 -15
  530. package/src/cli/commands/MigrateCommand.d.ts.map +0 -1
  531. package/src/cli/commands/MigrateCommand.js +0 -302
  532. package/src/cli/commands/MigrateWorkerCommand.d.ts +0 -9
  533. package/src/cli/commands/MigrateWorkerCommand.d.ts.map +0 -1
  534. package/src/cli/commands/MigrateWorkerCommand.js +0 -136
  535. package/src/cli/commands/NewCommand.d.ts +0 -37
  536. package/src/cli/commands/NewCommand.d.ts.map +0 -1
  537. package/src/cli/commands/NewCommand.js +0 -408
  538. package/src/cli/commands/NotificationWorkCommand.d.ts +0 -10
  539. package/src/cli/commands/NotificationWorkCommand.d.ts.map +0 -1
  540. package/src/cli/commands/NotificationWorkCommand.js +0 -16
  541. package/src/cli/commands/PluginCommand.d.ts +0 -9
  542. package/src/cli/commands/PluginCommand.d.ts.map +0 -1
  543. package/src/cli/commands/PluginCommand.js +0 -98
  544. package/src/cli/commands/PrepareCommand.d.ts +0 -8
  545. package/src/cli/commands/PrepareCommand.d.ts.map +0 -1
  546. package/src/cli/commands/PrepareCommand.js +0 -51
  547. package/src/cli/commands/PublishCommand.d.ts +0 -5
  548. package/src/cli/commands/PublishCommand.d.ts.map +0 -1
  549. package/src/cli/commands/PublishCommand.js +0 -54
  550. package/src/cli/commands/QACommand.d.ts +0 -33
  551. package/src/cli/commands/QACommand.d.ts.map +0 -1
  552. package/src/cli/commands/QACommand.js +0 -480
  553. package/src/cli/commands/QueueCommand.d.ts +0 -10
  554. package/src/cli/commands/QueueCommand.d.ts.map +0 -1
  555. package/src/cli/commands/QueueCommand.js +0 -113
  556. package/src/cli/commands/QueueLockCommand.d.ts +0 -7
  557. package/src/cli/commands/QueueLockCommand.d.ts.map +0 -1
  558. package/src/cli/commands/QueueLockCommand.js +0 -138
  559. package/src/cli/commands/QueueWorkCommandUtils.d.ts +0 -10
  560. package/src/cli/commands/QueueWorkCommandUtils.d.ts.map +0 -1
  561. package/src/cli/commands/QueueWorkCommandUtils.js +0 -43
  562. package/src/cli/commands/ResourceControlCommand.d.ts +0 -6
  563. package/src/cli/commands/ResourceControlCommand.d.ts.map +0 -1
  564. package/src/cli/commands/ResourceControlCommand.js +0 -43
  565. package/src/cli/commands/RoutesCommand.d.ts +0 -10
  566. package/src/cli/commands/RoutesCommand.d.ts.map +0 -1
  567. package/src/cli/commands/RoutesCommand.js +0 -242
  568. package/src/cli/commands/SecretsCommand.d.ts +0 -16
  569. package/src/cli/commands/SecretsCommand.d.ts.map +0 -1
  570. package/src/cli/commands/SecretsCommand.js +0 -91
  571. package/src/cli/commands/SimulateCommand.d.ts +0 -12
  572. package/src/cli/commands/SimulateCommand.d.ts.map +0 -1
  573. package/src/cli/commands/SimulateCommand.js +0 -79
  574. package/src/cli/commands/StartCommand.d.ts +0 -5
  575. package/src/cli/commands/StartCommand.d.ts.map +0 -1
  576. package/src/cli/commands/StartCommand.js +0 -326
  577. package/src/cli/commands/TemplatesCommand.d.ts +0 -3
  578. package/src/cli/commands/TemplatesCommand.d.ts.map +0 -1
  579. package/src/cli/commands/TemplatesCommand.js +0 -65
  580. package/src/cli/commands/UpgradeCommand.d.ts +0 -16
  581. package/src/cli/commands/UpgradeCommand.d.ts.map +0 -1
  582. package/src/cli/commands/UpgradeCommand.js +0 -107
  583. package/src/cli/commands/WorkerCommands.d.ts +0 -17
  584. package/src/cli/commands/WorkerCommands.d.ts.map +0 -1
  585. package/src/cli/commands/WorkerCommands.js +0 -288
  586. package/src/cli/commands/createKindWorkCommand.d.ts +0 -9
  587. package/src/cli/commands/createKindWorkCommand.d.ts.map +0 -1
  588. package/src/cli/commands/createKindWorkCommand.js +0 -33
  589. package/src/cli/commands/index.d.ts +0 -24
  590. package/src/cli/commands/index.d.ts.map +0 -1
  591. package/src/cli/commands/index.js +0 -23
  592. package/src/cli/commands/runner/index.d.ts +0 -3
  593. package/src/cli/commands/runner/index.d.ts.map +0 -1
  594. package/src/cli/commands/runner/index.js +0 -139
  595. package/src/cli/config/ConfigManager.d.ts +0 -42
  596. package/src/cli/config/ConfigManager.d.ts.map +0 -1
  597. package/src/cli/config/ConfigManager.js +0 -175
  598. package/src/cli/config/ConfigSchema.d.ts +0 -195
  599. package/src/cli/config/ConfigSchema.d.ts.map +0 -1
  600. package/src/cli/config/ConfigSchema.js +0 -172
  601. package/src/cli/config/ConfigValidator.d.ts +0 -41
  602. package/src/cli/config/ConfigValidator.d.ts.map +0 -1
  603. package/src/cli/config/ConfigValidator.js +0 -200
  604. package/src/cli/config/index.d.ts +0 -8
  605. package/src/cli/config/index.d.ts.map +0 -1
  606. package/src/cli/config/index.js +0 -7
  607. package/src/cli/d1/D1SqlMigrations.d.ts +0 -20
  608. package/src/cli/d1/D1SqlMigrations.d.ts.map +0 -1
  609. package/src/cli/d1/D1SqlMigrations.js +0 -230
  610. package/src/cli/d1/WranglerConfig.d.ts +0 -4
  611. package/src/cli/d1/WranglerConfig.d.ts.map +0 -1
  612. package/src/cli/d1/WranglerConfig.js +0 -122
  613. package/src/cli/d1/WranglerD1.d.ts +0 -11
  614. package/src/cli/d1/WranglerD1.d.ts.map +0 -1
  615. package/src/cli/d1/WranglerD1.js +0 -16
  616. package/src/cli/debug/Dashboard.d.ts +0 -34
  617. package/src/cli/debug/Dashboard.d.ts.map +0 -1
  618. package/src/cli/debug/Dashboard.js +0 -152
  619. package/src/cli/env/EnvFileBackfill.d.ts +0 -10
  620. package/src/cli/env/EnvFileBackfill.d.ts.map +0 -1
  621. package/src/cli/env/EnvFileBackfill.js +0 -64
  622. package/src/cli/index.d.ts +0 -15
  623. package/src/cli/index.d.ts.map +0 -1
  624. package/src/cli/index.js +0 -15
  625. package/src/cli/logger/Logger.d.ts +0 -43
  626. package/src/cli/logger/Logger.d.ts.map +0 -1
  627. package/src/cli/logger/Logger.js +0 -137
  628. package/src/cli/scaffolding/ControllerGenerator.d.ts +0 -44
  629. package/src/cli/scaffolding/ControllerGenerator.d.ts.map +0 -1
  630. package/src/cli/scaffolding/ControllerGenerator.js +0 -575
  631. package/src/cli/scaffolding/FactoryGenerator.d.ts +0 -47
  632. package/src/cli/scaffolding/FactoryGenerator.d.ts.map +0 -1
  633. package/src/cli/scaffolding/FactoryGenerator.js +0 -358
  634. package/src/cli/scaffolding/FeatureScaffolder.d.ts +0 -40
  635. package/src/cli/scaffolding/FeatureScaffolder.d.ts.map +0 -1
  636. package/src/cli/scaffolding/FeatureScaffolder.js +0 -747
  637. package/src/cli/scaffolding/FileGenerator.d.ts +0 -31
  638. package/src/cli/scaffolding/FileGenerator.d.ts.map +0 -1
  639. package/src/cli/scaffolding/FileGenerator.js +0 -222
  640. package/src/cli/scaffolding/GovernanceScaffolder.d.ts +0 -23
  641. package/src/cli/scaffolding/GovernanceScaffolder.d.ts.map +0 -1
  642. package/src/cli/scaffolding/GovernanceScaffolder.js +0 -327
  643. package/src/cli/scaffolding/MigrationGenerator.d.ts +0 -45
  644. package/src/cli/scaffolding/MigrationGenerator.d.ts.map +0 -1
  645. package/src/cli/scaffolding/MigrationGenerator.js +0 -344
  646. package/src/cli/scaffolding/ModelGenerator.d.ts +0 -81
  647. package/src/cli/scaffolding/ModelGenerator.d.ts.map +0 -1
  648. package/src/cli/scaffolding/ModelGenerator.js +0 -259
  649. package/src/cli/scaffolding/ProjectScaffolder.d.ts +0 -66
  650. package/src/cli/scaffolding/ProjectScaffolder.d.ts.map +0 -1
  651. package/src/cli/scaffolding/ProjectScaffolder.js +0 -629
  652. package/src/cli/scaffolding/RequestFactoryGenerator.d.ts +0 -50
  653. package/src/cli/scaffolding/RequestFactoryGenerator.d.ts.map +0 -1
  654. package/src/cli/scaffolding/RequestFactoryGenerator.js +0 -465
  655. package/src/cli/scaffolding/ResponseFactoryGenerator.d.ts +0 -43
  656. package/src/cli/scaffolding/ResponseFactoryGenerator.d.ts.map +0 -1
  657. package/src/cli/scaffolding/ResponseFactoryGenerator.js +0 -322
  658. package/src/cli/scaffolding/RouteGenerator.d.ts +0 -66
  659. package/src/cli/scaffolding/RouteGenerator.d.ts.map +0 -1
  660. package/src/cli/scaffolding/RouteGenerator.js +0 -361
  661. package/src/cli/scaffolding/SeederGenerator.d.ts +0 -52
  662. package/src/cli/scaffolding/SeederGenerator.d.ts.map +0 -1
  663. package/src/cli/scaffolding/SeederGenerator.js +0 -334
  664. package/src/cli/scaffolding/ServiceIntegrationTestGenerator.d.ts +0 -40
  665. package/src/cli/scaffolding/ServiceIntegrationTestGenerator.d.ts.map +0 -1
  666. package/src/cli/scaffolding/ServiceIntegrationTestGenerator.js +0 -268
  667. package/src/cli/scaffolding/ServiceRequestFactoryGenerator.d.ts +0 -45
  668. package/src/cli/scaffolding/ServiceRequestFactoryGenerator.d.ts.map +0 -1
  669. package/src/cli/scaffolding/ServiceRequestFactoryGenerator.js +0 -397
  670. package/src/cli/scaffolding/ServiceScaffolder.d.ts +0 -45
  671. package/src/cli/scaffolding/ServiceScaffolder.d.ts.map +0 -1
  672. package/src/cli/scaffolding/ServiceScaffolder.js +0 -390
  673. package/src/cli/scaffolding/TemplateEngine.d.ts +0 -42
  674. package/src/cli/scaffolding/TemplateEngine.d.ts.map +0 -1
  675. package/src/cli/scaffolding/TemplateEngine.js +0 -107
  676. package/src/cli/scaffolding/TemplateGenerator.d.ts +0 -40
  677. package/src/cli/scaffolding/TemplateGenerator.d.ts.map +0 -1
  678. package/src/cli/scaffolding/TemplateGenerator.js +0 -172
  679. package/src/cli/scaffolding/WorkflowGenerator.d.ts +0 -31
  680. package/src/cli/scaffolding/WorkflowGenerator.d.ts.map +0 -1
  681. package/src/cli/scaffolding/WorkflowGenerator.js +0 -193
  682. package/src/cli/scaffolding/index.d.ts +0 -37
  683. package/src/cli/scaffolding/index.d.ts.map +0 -1
  684. package/src/cli/scaffolding/index.js +0 -20
  685. package/src/cli/services/VersionChecker.d.ts +0 -53
  686. package/src/cli/services/VersionChecker.d.ts.map +0 -1
  687. package/src/cli/services/VersionChecker.js +0 -180
  688. package/src/cli/utils/DatabaseCliUtils.d.ts +0 -20
  689. package/src/cli/utils/DatabaseCliUtils.d.ts.map +0 -1
  690. package/src/cli/utils/DatabaseCliUtils.js +0 -54
  691. package/src/cli/utils/DistPackager.d.ts +0 -8
  692. package/src/cli/utils/DistPackager.d.ts.map +0 -1
  693. package/src/cli/utils/DistPackager.js +0 -102
  694. package/src/cli/utils/EnvFileLoader.d.ts +0 -21
  695. package/src/cli/utils/EnvFileLoader.d.ts.map +0 -1
  696. package/src/cli/utils/EnvFileLoader.js +0 -166
  697. package/src/cli/utils/spawn.d.ts +0 -11
  698. package/src/cli/utils/spawn.d.ts.map +0 -1
  699. package/src/cli/utils/spawn.js +0 -92
  700. package/src/cli/workers/QueueWorkRunner.d.ts +0 -23
  701. package/src/cli/workers/QueueWorkRunner.d.ts.map +0 -1
  702. package/src/cli/workers/QueueWorkRunner.js +0 -263
  703. package/src/collections/Collection.d.ts +0 -30
  704. package/src/collections/Collection.d.ts.map +0 -1
  705. package/src/collections/Collection.js +0 -146
  706. package/src/collections/index.d.ts +0 -3
  707. package/src/collections/index.d.ts.map +0 -1
  708. package/src/collections/index.js +0 -1
  709. package/src/common/AwsSigV4.d.ts +0 -41
  710. package/src/common/AwsSigV4.d.ts.map +0 -1
  711. package/src/common/AwsSigV4.js +0 -69
  712. package/src/common/ExternalServiceUtils.d.ts +0 -63
  713. package/src/common/ExternalServiceUtils.d.ts.map +0 -1
  714. package/src/common/ExternalServiceUtils.js +0 -116
  715. package/src/common/HealthRoutes.d.ts +0 -10
  716. package/src/common/HealthRoutes.d.ts.map +0 -1
  717. package/src/common/HealthRoutes.js +0 -114
  718. package/src/common/RemoteSignedJson.d.ts +0 -21
  719. package/src/common/RemoteSignedJson.d.ts.map +0 -1
  720. package/src/common/RemoteSignedJson.js +0 -86
  721. package/src/common/index.d.ts +0 -134
  722. package/src/common/index.d.ts.map +0 -1
  723. package/src/common/index.js +0 -328
  724. package/src/common/utility.d.ts +0 -38
  725. package/src/common/utility.d.ts.map +0 -1
  726. package/src/common/utility.js +0 -101
  727. package/src/config/FileLogWriter.d.ts +0 -23
  728. package/src/config/FileLogWriter.d.ts.map +0 -1
  729. package/src/config/FileLogWriter.js +0 -273
  730. package/src/config/SecretsManager.d.ts +0 -81
  731. package/src/config/SecretsManager.d.ts.map +0 -1
  732. package/src/config/SecretsManager.js +0 -355
  733. package/src/config/StartupConfigValidator.d.ts +0 -7
  734. package/src/config/StartupConfigValidator.d.ts.map +0 -1
  735. package/src/config/StartupConfigValidator.js +0 -179
  736. package/src/config/app.d.ts +0 -62
  737. package/src/config/app.d.ts.map +0 -1
  738. package/src/config/app.js +0 -184
  739. package/src/config/broadcast.d.ts +0 -22
  740. package/src/config/broadcast.d.ts.map +0 -1
  741. package/src/config/broadcast.js +0 -138
  742. package/src/config/cache.d.ts +0 -23
  743. package/src/config/cache.d.ts.map +0 -1
  744. package/src/config/cache.js +0 -125
  745. package/src/config/cloudflare.d.ts +0 -14
  746. package/src/config/cloudflare.d.ts.map +0 -1
  747. package/src/config/cloudflare.js +0 -38
  748. package/src/config/constants.d.ts +0 -238
  749. package/src/config/constants.d.ts.map +0 -1
  750. package/src/config/constants.js +0 -145
  751. package/src/config/database.d.ts +0 -41
  752. package/src/config/database.d.ts.map +0 -1
  753. package/src/config/database.js +0 -286
  754. package/src/config/env.d.ts +0 -128
  755. package/src/config/env.d.ts.map +0 -1
  756. package/src/config/env.js +0 -220
  757. package/src/config/features.d.ts +0 -27
  758. package/src/config/features.d.ts.map +0 -1
  759. package/src/config/features.js +0 -49
  760. package/src/config/index.d.ts +0 -241
  761. package/src/config/index.d.ts.map +0 -1
  762. package/src/config/index.js +0 -41
  763. package/src/config/logger.d.ts +0 -19
  764. package/src/config/logger.d.ts.map +0 -1
  765. package/src/config/logger.js +0 -338
  766. package/src/config/logging/HttpLogger.d.ts +0 -23
  767. package/src/config/logging/HttpLogger.d.ts.map +0 -1
  768. package/src/config/logging/HttpLogger.js +0 -93
  769. package/src/config/logging/KvLogger.d.ts +0 -22
  770. package/src/config/logging/KvLogger.d.ts.map +0 -1
  771. package/src/config/logging/KvLogger.js +0 -143
  772. package/src/config/logging/SlackLogger.d.ts +0 -23
  773. package/src/config/logging/SlackLogger.d.ts.map +0 -1
  774. package/src/config/logging/SlackLogger.js +0 -119
  775. package/src/config/mail.d.ts +0 -27
  776. package/src/config/mail.d.ts.map +0 -1
  777. package/src/config/mail.js +0 -154
  778. package/src/config/microservices.d.ts +0 -88
  779. package/src/config/microservices.d.ts.map +0 -1
  780. package/src/config/microservices.js +0 -90
  781. package/src/config/middleware.d.ts +0 -48
  782. package/src/config/middleware.d.ts.map +0 -1
  783. package/src/config/middleware.js +0 -205
  784. package/src/config/notification.d.ts +0 -24
  785. package/src/config/notification.d.ts.map +0 -1
  786. package/src/config/notification.js +0 -149
  787. package/src/config/queue.d.ts +0 -57
  788. package/src/config/queue.d.ts.map +0 -1
  789. package/src/config/queue.js +0 -144
  790. package/src/config/redis.d.ts +0 -17
  791. package/src/config/redis.d.ts.map +0 -1
  792. package/src/config/redis.js +0 -54
  793. package/src/config/security.d.ts +0 -123
  794. package/src/config/security.d.ts.map +0 -1
  795. package/src/config/security.js +0 -154
  796. package/src/config/startup.d.ts +0 -25
  797. package/src/config/startup.d.ts.map +0 -1
  798. package/src/config/startup.js +0 -16
  799. package/src/config/storage.d.ts +0 -45
  800. package/src/config/storage.d.ts.map +0 -1
  801. package/src/config/storage.js +0 -161
  802. package/src/config/type.d.ts +0 -492
  803. package/src/config/type.d.ts.map +0 -1
  804. package/src/config/type.js +0 -10
  805. package/src/config/workers.d.ts +0 -13
  806. package/src/config/workers.d.ts.map +0 -1
  807. package/src/config/workers.js +0 -173
  808. package/src/container/ServiceContainer.d.ts +0 -25
  809. package/src/container/ServiceContainer.d.ts.map +0 -1
  810. package/src/container/ServiceContainer.js +0 -75
  811. package/src/database/Paginator.d.ts +0 -37
  812. package/src/database/Paginator.d.ts.map +0 -1
  813. package/src/database/Paginator.js +0 -81
  814. package/src/database/migrations/index.d.ts +0 -2
  815. package/src/database/migrations/index.d.ts.map +0 -1
  816. package/src/database/migrations/index.js +0 -2
  817. package/src/events/EventDispatcher.d.ts +0 -16
  818. package/src/events/EventDispatcher.d.ts.map +0 -1
  819. package/src/events/EventDispatcher.js +0 -92
  820. package/src/events/index.d.ts +0 -3
  821. package/src/events/index.d.ts.map +0 -1
  822. package/src/events/index.js +0 -1
  823. package/src/exceptions/ZintrustError.d.ts +0 -98
  824. package/src/exceptions/ZintrustError.d.ts.map +0 -1
  825. package/src/exceptions/ZintrustError.js +0 -170
  826. package/src/functions/cloudflare.d.ts +0 -5
  827. package/src/functions/cloudflare.d.ts.map +0 -1
  828. package/src/functions/cloudflare.js +0 -23
  829. package/src/functions/deno.d.ts +0 -3
  830. package/src/functions/deno.d.ts.map +0 -1
  831. package/src/functions/deno.js +0 -20
  832. package/src/functions/lambda.d.ts +0 -2
  833. package/src/functions/lambda.d.ts.map +0 -1
  834. package/src/functions/lambda.js +0 -26
  835. package/src/health/RuntimeHealthProbes.d.ts +0 -13
  836. package/src/health/RuntimeHealthProbes.d.ts.map +0 -1
  837. package/src/health/RuntimeHealthProbes.js +0 -62
  838. package/src/health/StartupHealthChecks.d.ts +0 -26
  839. package/src/health/StartupHealthChecks.d.ts.map +0 -1
  840. package/src/health/StartupHealthChecks.js +0 -124
  841. package/src/http/Controller.d.ts +0 -20
  842. package/src/http/Controller.d.ts.map +0 -1
  843. package/src/http/Controller.js +0 -46
  844. package/src/http/ErrorResponse.d.ts +0 -28
  845. package/src/http/ErrorResponse.d.ts.map +0 -1
  846. package/src/http/ErrorResponse.js +0 -42
  847. package/src/http/FileUpload.d.ts +0 -68
  848. package/src/http/FileUpload.d.ts.map +0 -1
  849. package/src/http/FileUpload.js +0 -120
  850. package/src/http/Kernel.d.ts +0 -29
  851. package/src/http/Kernel.d.ts.map +0 -1
  852. package/src/http/Kernel.js +0 -254
  853. package/src/http/Request.d.ts +0 -64
  854. package/src/http/Request.d.ts.map +0 -1
  855. package/src/http/Request.js +0 -237
  856. package/src/http/RequestContext.d.ts +0 -26
  857. package/src/http/RequestContext.d.ts.map +0 -1
  858. package/src/http/RequestContext.js +0 -153
  859. package/src/http/Response.d.ts +0 -32
  860. package/src/http/Response.d.ts.map +0 -1
  861. package/src/http/Response.js +0 -70
  862. package/src/http/ValidationHelper.d.ts +0 -78
  863. package/src/http/ValidationHelper.d.ts.map +0 -1
  864. package/src/http/ValidationHelper.js +0 -121
  865. package/src/http/error-pages/ErrorPageRenderer.d.ts +0 -17
  866. package/src/http/error-pages/ErrorPageRenderer.d.ts.map +0 -1
  867. package/src/http/error-pages/ErrorPageRenderer.js +0 -89
  868. package/src/http/middleware/BodyParsingMiddleware.d.ts +0 -12
  869. package/src/http/middleware/BodyParsingMiddleware.d.ts.map +0 -1
  870. package/src/http/middleware/BodyParsingMiddleware.js +0 -251
  871. package/src/http/middleware/FileUploadMiddleware.d.ts +0 -12
  872. package/src/http/middleware/FileUploadMiddleware.d.ts.map +0 -1
  873. package/src/http/middleware/FileUploadMiddleware.js +0 -74
  874. package/src/http/parsers/BodyParsers.d.ts +0 -32
  875. package/src/http/parsers/BodyParsers.d.ts.map +0 -1
  876. package/src/http/parsers/BodyParsers.js +0 -159
  877. package/src/http/parsers/MultipartParser.d.ts +0 -33
  878. package/src/http/parsers/MultipartParser.d.ts.map +0 -1
  879. package/src/http/parsers/MultipartParser.js +0 -156
  880. package/src/http/parsers/MultipartParserRegistry.d.ts +0 -34
  881. package/src/http/parsers/MultipartParserRegistry.d.ts.map +0 -1
  882. package/src/http/parsers/MultipartParserRegistry.js +0 -20
  883. package/src/http/validated.d.ts +0 -12
  884. package/src/http/validated.d.ts.map +0 -1
  885. package/src/http/validated.js +0 -41
  886. package/src/index.d.ts +0 -258
  887. package/src/index.d.ts.map +0 -1
  888. package/src/index.js +0 -212
  889. package/src/lang/lang.d.ts +0 -23
  890. package/src/lang/lang.d.ts.map +0 -1
  891. package/src/lang/lang.js +0 -22
  892. package/src/microservices/MicroserviceBootstrap.d.ts +0 -75
  893. package/src/microservices/MicroserviceBootstrap.d.ts.map +0 -1
  894. package/src/microservices/MicroserviceBootstrap.js +0 -288
  895. package/src/microservices/MicroserviceGenerator.d.ts +0 -27
  896. package/src/microservices/MicroserviceGenerator.d.ts.map +0 -1
  897. package/src/microservices/MicroserviceGenerator.js +0 -436
  898. package/src/microservices/MicroserviceManager.d.ts +0 -68
  899. package/src/microservices/MicroserviceManager.d.ts.map +0 -1
  900. package/src/microservices/MicroserviceManager.js +0 -268
  901. package/src/microservices/PostgresAdapter.d.ts +0 -90
  902. package/src/microservices/PostgresAdapter.d.ts.map +0 -1
  903. package/src/microservices/PostgresAdapter.js +0 -306
  904. package/src/microservices/RequestTracingMiddleware.d.ts +0 -41
  905. package/src/microservices/RequestTracingMiddleware.d.ts.map +0 -1
  906. package/src/microservices/RequestTracingMiddleware.js +0 -125
  907. package/src/microservices/ServiceAuthMiddleware.d.ts +0 -58
  908. package/src/microservices/ServiceAuthMiddleware.d.ts.map +0 -1
  909. package/src/microservices/ServiceAuthMiddleware.js +0 -240
  910. package/src/microservices/ServiceBundler.d.ts +0 -45
  911. package/src/microservices/ServiceBundler.d.ts.map +0 -1
  912. package/src/microservices/ServiceBundler.js +0 -299
  913. package/src/microservices/ServiceHealthMonitor.d.ts +0 -96
  914. package/src/microservices/ServiceHealthMonitor.d.ts.map +0 -1
  915. package/src/microservices/ServiceHealthMonitor.js +0 -383
  916. package/src/middleware/AuthMiddleware.d.ts +0 -10
  917. package/src/middleware/AuthMiddleware.d.ts.map +0 -1
  918. package/src/middleware/AuthMiddleware.js +0 -16
  919. package/src/middleware/CsrfMiddleware.d.ts +0 -29
  920. package/src/middleware/CsrfMiddleware.d.ts.map +0 -1
  921. package/src/middleware/CsrfMiddleware.js +0 -132
  922. package/src/middleware/ErrorHandlerMiddleware.d.ts +0 -6
  923. package/src/middleware/ErrorHandlerMiddleware.d.ts.map +0 -1
  924. package/src/middleware/ErrorHandlerMiddleware.js +0 -41
  925. package/src/middleware/JwtAuthMiddleware.d.ts +0 -11
  926. package/src/middleware/JwtAuthMiddleware.d.ts.map +0 -1
  927. package/src/middleware/JwtAuthMiddleware.js +0 -73
  928. package/src/middleware/LoggingMiddleware.d.ts +0 -9
  929. package/src/middleware/LoggingMiddleware.d.ts.map +0 -1
  930. package/src/middleware/LoggingMiddleware.js +0 -41
  931. package/src/middleware/MiddlewareStack.d.ts +0 -27
  932. package/src/middleware/MiddlewareStack.d.ts.map +0 -1
  933. package/src/middleware/MiddlewareStack.js +0 -43
  934. package/src/middleware/RateLimiter.d.ts +0 -57
  935. package/src/middleware/RateLimiter.d.ts.map +0 -1
  936. package/src/middleware/RateLimiter.js +0 -270
  937. package/src/middleware/SanitizeBodyMiddleware.d.ts +0 -12
  938. package/src/middleware/SanitizeBodyMiddleware.d.ts.map +0 -1
  939. package/src/middleware/SanitizeBodyMiddleware.js +0 -31
  940. package/src/middleware/SecurityMiddleware.d.ts +0 -33
  941. package/src/middleware/SecurityMiddleware.d.ts.map +0 -1
  942. package/src/middleware/SecurityMiddleware.js +0 -106
  943. package/src/middleware/SessionMiddleware.d.ts +0 -8
  944. package/src/middleware/SessionMiddleware.d.ts.map +0 -1
  945. package/src/middleware/SessionMiddleware.js +0 -15
  946. package/src/middleware/ValidationMiddleware.d.ts +0 -25
  947. package/src/middleware/ValidationMiddleware.d.ts.map +0 -1
  948. package/src/middleware/ValidationMiddleware.js +0 -251
  949. package/src/middleware/index.d.ts +0 -11
  950. package/src/middleware/index.d.ts.map +0 -1
  951. package/src/middleware/index.js +0 -10
  952. package/src/migrations/MigrationDiscovery.d.ts +0 -5
  953. package/src/migrations/MigrationDiscovery.d.ts.map +0 -1
  954. package/src/migrations/MigrationDiscovery.js +0 -16
  955. package/src/migrations/MigrationLoader.d.ts +0 -5
  956. package/src/migrations/MigrationLoader.d.ts.map +0 -1
  957. package/src/migrations/MigrationLoader.js +0 -43
  958. package/src/migrations/MigrationLock.d.ts +0 -4
  959. package/src/migrations/MigrationLock.d.ts.map +0 -1
  960. package/src/migrations/MigrationLock.js +0 -33
  961. package/src/migrations/Migrator.d.ts +0 -23
  962. package/src/migrations/Migrator.d.ts.map +0 -1
  963. package/src/migrations/Migrator.js +0 -4
  964. package/src/migrations/MigratorFactory.d.ts +0 -25
  965. package/src/migrations/MigratorFactory.d.ts.map +0 -1
  966. package/src/migrations/MigratorFactory.js +0 -339
  967. package/src/migrations/enum/index.d.ts +0 -93
  968. package/src/migrations/enum/index.d.ts.map +0 -1
  969. package/src/migrations/enum/index.js +0 -92
  970. package/src/migrations/schema/Blueprint.d.ts +0 -5
  971. package/src/migrations/schema/Blueprint.d.ts.map +0 -1
  972. package/src/migrations/schema/Blueprint.js +0 -191
  973. package/src/migrations/schema/Schema.d.ts +0 -8
  974. package/src/migrations/schema/Schema.d.ts.map +0 -1
  975. package/src/migrations/schema/Schema.js +0 -142
  976. package/src/migrations/schema/SchemaCompiler.d.ts +0 -20
  977. package/src/migrations/schema/SchemaCompiler.d.ts.map +0 -1
  978. package/src/migrations/schema/SchemaCompiler.js +0 -270
  979. package/src/migrations/schema/index.d.ts +0 -5
  980. package/src/migrations/schema/index.d.ts.map +0 -1
  981. package/src/migrations/schema/index.js +0 -3
  982. package/src/migrations/schema/types.d.ts +0 -87
  983. package/src/migrations/schema/types.d.ts.map +0 -1
  984. package/src/migrations/schema/types.js +0 -1
  985. package/src/migrations/types.d.ts +0 -45
  986. package/src/migrations/types.d.ts.map +0 -1
  987. package/src/migrations/types.js +0 -1
  988. package/src/node-singletons/async_hooks.d.ts +0 -9
  989. package/src/node-singletons/async_hooks.d.ts.map +0 -1
  990. package/src/node-singletons/async_hooks.js +0 -8
  991. package/src/node-singletons/child-process.d.ts +0 -7
  992. package/src/node-singletons/child-process.d.ts.map +0 -1
  993. package/src/node-singletons/child-process.js +0 -6
  994. package/src/node-singletons/crypto.d.ts +0 -7
  995. package/src/node-singletons/crypto.d.ts.map +0 -1
  996. package/src/node-singletons/crypto.js +0 -6
  997. package/src/node-singletons/events.d.ts +0 -7
  998. package/src/node-singletons/events.d.ts.map +0 -1
  999. package/src/node-singletons/events.js +0 -6
  1000. package/src/node-singletons/fs.d.ts +0 -12
  1001. package/src/node-singletons/fs.d.ts.map +0 -1
  1002. package/src/node-singletons/fs.js +0 -14
  1003. package/src/node-singletons/http.d.ts +0 -8
  1004. package/src/node-singletons/http.d.ts.map +0 -1
  1005. package/src/node-singletons/http.js +0 -6
  1006. package/src/node-singletons/index.d.ts +0 -34
  1007. package/src/node-singletons/index.d.ts.map +0 -1
  1008. package/src/node-singletons/index.js +0 -35
  1009. package/src/node-singletons/net.d.ts +0 -9
  1010. package/src/node-singletons/net.d.ts.map +0 -1
  1011. package/src/node-singletons/net.js +0 -8
  1012. package/src/node-singletons/os.d.ts +0 -18
  1013. package/src/node-singletons/os.d.ts.map +0 -1
  1014. package/src/node-singletons/os.js +0 -17
  1015. package/src/node-singletons/path.d.ts +0 -9
  1016. package/src/node-singletons/path.d.ts.map +0 -1
  1017. package/src/node-singletons/path.js +0 -8
  1018. package/src/node-singletons/perf-hooks.d.ts +0 -9
  1019. package/src/node-singletons/perf-hooks.d.ts.map +0 -1
  1020. package/src/node-singletons/perf-hooks.js +0 -8
  1021. package/src/node-singletons/process.d.ts +0 -23
  1022. package/src/node-singletons/process.d.ts.map +0 -1
  1023. package/src/node-singletons/process.js +0 -8
  1024. package/src/node-singletons/readline.d.ts +0 -10
  1025. package/src/node-singletons/readline.d.ts.map +0 -1
  1026. package/src/node-singletons/readline.js +0 -8
  1027. package/src/node-singletons/tls.d.ts +0 -9
  1028. package/src/node-singletons/tls.d.ts.map +0 -1
  1029. package/src/node-singletons/tls.js +0 -8
  1030. package/src/node-singletons/url.d.ts +0 -9
  1031. package/src/node-singletons/url.d.ts.map +0 -1
  1032. package/src/node-singletons/url.js +0 -8
  1033. package/src/node-singletons/util.d.ts +0 -6
  1034. package/src/node-singletons/util.d.ts.map +0 -1
  1035. package/src/node-singletons/util.js +0 -5
  1036. package/src/node.d.ts +0 -9
  1037. package/src/node.d.ts.map +0 -1
  1038. package/src/node.js +0 -13
  1039. package/src/observability/OpenTelemetry.d.ts +0 -62
  1040. package/src/observability/OpenTelemetry.d.ts.map +0 -1
  1041. package/src/observability/OpenTelemetry.js +0 -167
  1042. package/src/observability/PrometheusMetrics.d.ts +0 -25
  1043. package/src/observability/PrometheusMetrics.d.ts.map +0 -1
  1044. package/src/observability/PrometheusMetrics.js +0 -114
  1045. package/src/openapi/OpenApiGenerator.d.ts +0 -68
  1046. package/src/openapi/OpenApiGenerator.d.ts.map +0 -1
  1047. package/src/openapi/OpenApiGenerator.js +0 -287
  1048. package/src/orm/ConnectionManager.d.ts +0 -125
  1049. package/src/orm/ConnectionManager.d.ts.map +0 -1
  1050. package/src/orm/ConnectionManager.js +0 -571
  1051. package/src/orm/Database.d.ts +0 -35
  1052. package/src/orm/Database.d.ts.map +0 -1
  1053. package/src/orm/Database.js +0 -350
  1054. package/src/orm/DatabaseAdapter.d.ts +0 -117
  1055. package/src/orm/DatabaseAdapter.d.ts.map +0 -1
  1056. package/src/orm/DatabaseAdapter.js +0 -57
  1057. package/src/orm/DatabaseAdapterRegistry.d.ts +0 -14
  1058. package/src/orm/DatabaseAdapterRegistry.d.ts.map +0 -1
  1059. package/src/orm/DatabaseAdapterRegistry.js +0 -21
  1060. package/src/orm/DatabaseRuntimeRegistration.d.ts +0 -17
  1061. package/src/orm/DatabaseRuntimeRegistration.d.ts.map +0 -1
  1062. package/src/orm/DatabaseRuntimeRegistration.js +0 -73
  1063. package/src/orm/Model.d.ts +0 -135
  1064. package/src/orm/Model.d.ts.map +0 -1
  1065. package/src/orm/Model.js +0 -533
  1066. package/src/orm/QueryBuilder.d.ts +0 -98
  1067. package/src/orm/QueryBuilder.d.ts.map +0 -1
  1068. package/src/orm/QueryBuilder.js +0 -1057
  1069. package/src/orm/Relationships.d.ts +0 -119
  1070. package/src/orm/Relationships.d.ts.map +0 -1
  1071. package/src/orm/Relationships.js +0 -306
  1072. package/src/orm/Schema.d.ts +0 -123
  1073. package/src/orm/Schema.d.ts.map +0 -1
  1074. package/src/orm/Schema.js +0 -169
  1075. package/src/orm/SchemaCompiler.d.ts +0 -9
  1076. package/src/orm/SchemaCompiler.d.ts.map +0 -1
  1077. package/src/orm/SchemaCompiler.js +0 -145
  1078. package/src/orm/adapters/D1Adapter.d.ts +0 -15
  1079. package/src/orm/adapters/D1Adapter.d.ts.map +0 -1
  1080. package/src/orm/adapters/D1Adapter.js +0 -132
  1081. package/src/orm/adapters/D1RemoteAdapter.d.ts +0 -11
  1082. package/src/orm/adapters/D1RemoteAdapter.d.ts.map +0 -1
  1083. package/src/orm/adapters/D1RemoteAdapter.js +0 -163
  1084. package/src/orm/adapters/MySQLAdapter.d.ts +0 -16
  1085. package/src/orm/adapters/MySQLAdapter.d.ts.map +0 -1
  1086. package/src/orm/adapters/MySQLAdapter.js +0 -109
  1087. package/src/orm/adapters/PostgreSQLAdapter.d.ts +0 -16
  1088. package/src/orm/adapters/PostgreSQLAdapter.d.ts.map +0 -1
  1089. package/src/orm/adapters/PostgreSQLAdapter.js +0 -108
  1090. package/src/orm/adapters/SQLServerAdapter.d.ts +0 -16
  1091. package/src/orm/adapters/SQLServerAdapter.d.ts.map +0 -1
  1092. package/src/orm/adapters/SQLServerAdapter.js +0 -84
  1093. package/src/orm/adapters/SQLiteAdapter.d.ts +0 -11
  1094. package/src/orm/adapters/SQLiteAdapter.d.ts.map +0 -1
  1095. package/src/orm/adapters/SQLiteAdapter.js +0 -225
  1096. package/src/orm/maintenance/SqliteMaintenance.d.ts +0 -5
  1097. package/src/orm/maintenance/SqliteMaintenance.d.ts.map +0 -1
  1098. package/src/orm/maintenance/SqliteMaintenance.js +0 -14
  1099. package/src/orm/migrations/MigrationStore.d.ts +0 -38
  1100. package/src/orm/migrations/MigrationStore.d.ts.map +0 -1
  1101. package/src/orm/migrations/MigrationStore.js +0 -157
  1102. package/src/performance/Benchmark.d.ts +0 -87
  1103. package/src/performance/Benchmark.d.ts.map +0 -1
  1104. package/src/performance/Benchmark.js +0 -307
  1105. package/src/performance/CodeGenerationBenchmark.d.ts +0 -23
  1106. package/src/performance/CodeGenerationBenchmark.d.ts.map +0 -1
  1107. package/src/performance/CodeGenerationBenchmark.js +0 -249
  1108. package/src/performance/Optimizer.d.ts +0 -100
  1109. package/src/performance/Optimizer.d.ts.map +0 -1
  1110. package/src/performance/Optimizer.js +0 -627
  1111. package/src/performance/establish-baseline.d.ts +0 -9
  1112. package/src/performance/establish-baseline.d.ts.map +0 -1
  1113. package/src/performance/establish-baseline.js +0 -55
  1114. package/src/profiling/MemoryProfiler.d.ts +0 -32
  1115. package/src/profiling/MemoryProfiler.d.ts.map +0 -1
  1116. package/src/profiling/MemoryProfiler.js +0 -84
  1117. package/src/profiling/N1Detector.d.ts +0 -16
  1118. package/src/profiling/N1Detector.d.ts.map +0 -1
  1119. package/src/profiling/N1Detector.js +0 -120
  1120. package/src/profiling/QueryLogger.d.ts +0 -107
  1121. package/src/profiling/QueryLogger.d.ts.map +0 -1
  1122. package/src/profiling/QueryLogger.js +0 -148
  1123. package/src/profiling/RequestProfiler.d.ts +0 -30
  1124. package/src/profiling/RequestProfiler.d.ts.map +0 -1
  1125. package/src/profiling/RequestProfiler.js +0 -96
  1126. package/src/profiling/types.d.ts +0 -77
  1127. package/src/profiling/types.d.ts.map +0 -1
  1128. package/src/profiling/types.js +0 -5
  1129. package/src/routes/api.d.ts +0 -2
  1130. package/src/routes/api.d.ts.map +0 -1
  1131. package/src/routes/api.js +0 -1
  1132. package/src/routes/broadcast.d.ts +0 -2
  1133. package/src/routes/broadcast.d.ts.map +0 -1
  1134. package/src/routes/broadcast.js +0 -1
  1135. package/src/routes/metrics.d.ts +0 -2
  1136. package/src/routes/metrics.d.ts.map +0 -1
  1137. package/src/routes/metrics.js +0 -1
  1138. package/src/routes/storage.d.ts +0 -2
  1139. package/src/routes/storage.d.ts.map +0 -1
  1140. package/src/routes/storage.js +0 -1
  1141. package/src/routing/CoreRoutes.d.ts +0 -12
  1142. package/src/routing/CoreRoutes.d.ts.map +0 -1
  1143. package/src/routing/CoreRoutes.js +0 -37
  1144. package/src/routing/RouteRegistry.d.ts +0 -39
  1145. package/src/routing/RouteRegistry.d.ts.map +0 -1
  1146. package/src/routing/RouteRegistry.js +0 -44
  1147. package/src/routing/Router.d.ts +0 -73
  1148. package/src/routing/Router.d.ts.map +0 -1
  1149. package/src/routing/Router.js +0 -250
  1150. package/src/routing/common.d.ts +0 -15
  1151. package/src/routing/common.d.ts.map +0 -1
  1152. package/src/routing/common.js +0 -47
  1153. package/src/routing/doc.d.ts +0 -27
  1154. package/src/routing/doc.d.ts.map +0 -1
  1155. package/src/routing/doc.js +0 -110
  1156. package/src/routing/error.d.ts +0 -21
  1157. package/src/routing/error.d.ts.map +0 -1
  1158. package/src/routing/error.js +0 -127
  1159. package/src/routing/errorPages.d.ts +0 -14
  1160. package/src/routing/errorPages.d.ts.map +0 -1
  1161. package/src/routing/errorPages.js +0 -103
  1162. package/src/routing/publicRoot.d.ts +0 -27
  1163. package/src/routing/publicRoot.d.ts.map +0 -1
  1164. package/src/routing/publicRoot.js +0 -112
  1165. package/src/runtime/PluginAutoImports.d.ts +0 -21
  1166. package/src/runtime/PluginAutoImports.d.ts.map +0 -1
  1167. package/src/runtime/PluginAutoImports.js +0 -63
  1168. package/src/runtime/PluginManager.d.ts +0 -28
  1169. package/src/runtime/PluginManager.d.ts.map +0 -1
  1170. package/src/runtime/PluginManager.js +0 -373
  1171. package/src/runtime/PluginRegistry.d.ts +0 -27
  1172. package/src/runtime/PluginRegistry.d.ts.map +0 -1
  1173. package/src/runtime/PluginRegistry.js +0 -183
  1174. package/src/runtime/RuntimeAdapter.d.ts +0 -126
  1175. package/src/runtime/RuntimeAdapter.d.ts.map +0 -1
  1176. package/src/runtime/RuntimeAdapter.js +0 -146
  1177. package/src/runtime/StartupConfigFileRegistry.d.ts +0 -22
  1178. package/src/runtime/StartupConfigFileRegistry.d.ts.map +0 -1
  1179. package/src/runtime/StartupConfigFileRegistry.js +0 -44
  1180. package/src/runtime/adapters/CloudflareAdapter.d.ts +0 -43
  1181. package/src/runtime/adapters/CloudflareAdapter.d.ts.map +0 -1
  1182. package/src/runtime/adapters/CloudflareAdapter.js +0 -175
  1183. package/src/runtime/adapters/DenoAdapter.d.ts +0 -30
  1184. package/src/runtime/adapters/DenoAdapter.d.ts.map +0 -1
  1185. package/src/runtime/adapters/DenoAdapter.js +0 -193
  1186. package/src/runtime/adapters/FargateAdapter.d.ts +0 -40
  1187. package/src/runtime/adapters/FargateAdapter.d.ts.map +0 -1
  1188. package/src/runtime/adapters/FargateAdapter.js +0 -157
  1189. package/src/runtime/adapters/LambdaAdapter.d.ts +0 -13
  1190. package/src/runtime/adapters/LambdaAdapter.d.ts.map +0 -1
  1191. package/src/runtime/adapters/LambdaAdapter.js +0 -306
  1192. package/src/runtime/adapters/NodeServerAdapter.d.ts +0 -16
  1193. package/src/runtime/adapters/NodeServerAdapter.d.ts.map +0 -1
  1194. package/src/runtime/adapters/NodeServerAdapter.js +0 -200
  1195. package/src/runtime/getKernel.d.ts +0 -9
  1196. package/src/runtime/getKernel.d.ts.map +0 -1
  1197. package/src/runtime/getKernel.js +0 -27
  1198. package/src/runtime/useFileLoader.d.ts +0 -26
  1199. package/src/runtime/useFileLoader.d.ts.map +0 -1
  1200. package/src/runtime/useFileLoader.js +0 -188
  1201. package/src/scheduler/ScheduleRunner.d.ts +0 -18
  1202. package/src/scheduler/ScheduleRunner.d.ts.map +0 -1
  1203. package/src/scheduler/ScheduleRunner.js +0 -155
  1204. package/src/scheduler/index.d.ts +0 -3
  1205. package/src/scheduler/index.d.ts.map +0 -1
  1206. package/src/scheduler/index.js +0 -1
  1207. package/src/scheduler/types.d.ts +0 -16
  1208. package/src/scheduler/types.d.ts.map +0 -1
  1209. package/src/scheduler/types.js +0 -4
  1210. package/src/schedules/index.d.ts +0 -2
  1211. package/src/schedules/index.d.ts.map +0 -1
  1212. package/src/schedules/index.js +0 -1
  1213. package/src/schedules/log-cleanup.d.ts +0 -4
  1214. package/src/schedules/log-cleanup.d.ts.map +0 -1
  1215. package/src/schedules/log-cleanup.js +0 -18
  1216. package/src/scripts/GenerateEnvArtifacts.d.ts +0 -13
  1217. package/src/scripts/GenerateEnvArtifacts.d.ts.map +0 -1
  1218. package/src/scripts/GenerateEnvArtifacts.js +0 -171
  1219. package/src/scripts/TemplateImportsCheck.d.ts +0 -2
  1220. package/src/scripts/TemplateImportsCheck.d.ts.map +0 -1
  1221. package/src/scripts/TemplateImportsCheck.js +0 -151
  1222. package/src/scripts/TemplateSync.d.ts +0 -7
  1223. package/src/scripts/TemplateSync.d.ts.map +0 -1
  1224. package/src/scripts/TemplateSync.js +0 -399
  1225. package/src/security/CsrfTokenManager.d.ts +0 -28
  1226. package/src/security/CsrfTokenManager.d.ts.map +0 -1
  1227. package/src/security/CsrfTokenManager.js +0 -78
  1228. package/src/security/EncryptedEnvelope.d.ts +0 -77
  1229. package/src/security/EncryptedEnvelope.d.ts.map +0 -1
  1230. package/src/security/EncryptedEnvelope.js +0 -256
  1231. package/src/security/Encryptor.d.ts +0 -15
  1232. package/src/security/Encryptor.d.ts.map +0 -1
  1233. package/src/security/Encryptor.js +0 -199
  1234. package/src/security/Hash.d.ts +0 -14
  1235. package/src/security/Hash.d.ts.map +0 -1
  1236. package/src/security/Hash.js +0 -81
  1237. package/src/security/JwtManager.d.ts +0 -42
  1238. package/src/security/JwtManager.d.ts.map +0 -1
  1239. package/src/security/JwtManager.js +0 -262
  1240. package/src/security/PasswordResetTokenBroker.d.ts +0 -39
  1241. package/src/security/PasswordResetTokenBroker.d.ts.map +0 -1
  1242. package/src/security/PasswordResetTokenBroker.js +0 -131
  1243. package/src/security/Sanitizer.d.ts +0 -76
  1244. package/src/security/Sanitizer.d.ts.map +0 -1
  1245. package/src/security/Sanitizer.js +0 -412
  1246. package/src/security/SignedRequest.d.ts +0 -53
  1247. package/src/security/SignedRequest.d.ts.map +0 -1
  1248. package/src/security/SignedRequest.js +0 -172
  1249. package/src/security/StartupSecretValidation.d.ts +0 -20
  1250. package/src/security/StartupSecretValidation.d.ts.map +0 -1
  1251. package/src/security/StartupSecretValidation.js +0 -139
  1252. package/src/security/TokenRevocation.d.ts +0 -7
  1253. package/src/security/TokenRevocation.d.ts.map +0 -1
  1254. package/src/security/TokenRevocation.js +0 -57
  1255. package/src/security/UrlValidator.d.ts +0 -20
  1256. package/src/security/UrlValidator.d.ts.map +0 -1
  1257. package/src/security/UrlValidator.js +0 -41
  1258. package/src/security/Xss.d.ts +0 -14
  1259. package/src/security/Xss.d.ts.map +0 -1
  1260. package/src/security/Xss.js +0 -57
  1261. package/src/security/XssProtection.d.ts +0 -24
  1262. package/src/security/XssProtection.d.ts.map +0 -1
  1263. package/src/security/XssProtection.js +0 -324
  1264. package/src/seeders/SeederDiscovery.d.ts +0 -5
  1265. package/src/seeders/SeederDiscovery.d.ts.map +0 -1
  1266. package/src/seeders/SeederDiscovery.js +0 -21
  1267. package/src/seeders/SeederLoader.d.ts +0 -5
  1268. package/src/seeders/SeederLoader.d.ts.map +0 -1
  1269. package/src/seeders/SeederLoader.js +0 -60
  1270. package/src/seeders/types.d.ts +0 -18
  1271. package/src/seeders/types.d.ts.map +0 -1
  1272. package/src/seeders/types.js +0 -1
  1273. package/src/session/SessionManager.d.ts +0 -39
  1274. package/src/session/SessionManager.d.ts.map +0 -1
  1275. package/src/session/SessionManager.js +0 -149
  1276. package/src/session/index.d.ts +0 -3
  1277. package/src/session/index.d.ts.map +0 -1
  1278. package/src/session/index.js +0 -1
  1279. package/src/start.d.ts +0 -21
  1280. package/src/start.d.ts.map +0 -1
  1281. package/src/start.js +0 -59
  1282. package/src/templates/TemplateRegistry.d.ts +0 -40
  1283. package/src/templates/TemplateRegistry.d.ts.map +0 -1
  1284. package/src/templates/TemplateRegistry.js +0 -78
  1285. package/src/testing/TestEnvironment.d.ts +0 -40
  1286. package/src/testing/TestEnvironment.d.ts.map +0 -1
  1287. package/src/testing/TestEnvironment.js +0 -141
  1288. package/src/testing/TestHttp.d.ts +0 -29
  1289. package/src/testing/TestHttp.d.ts.map +0 -1
  1290. package/src/testing/TestHttp.js +0 -96
  1291. package/src/testing/index.d.ts +0 -5
  1292. package/src/testing/index.d.ts.map +0 -1
  1293. package/src/testing/index.js +0 -2
  1294. package/src/time/DateTime.d.ts +0 -181
  1295. package/src/time/DateTime.d.ts.map +0 -1
  1296. package/src/time/DateTime.js +0 -300
  1297. package/src/time/index.d.ts +0 -7
  1298. package/src/time/index.d.ts.map +0 -1
  1299. package/src/time/index.js +0 -5
  1300. package/src/toolkit/Secrets/EnvFile.d.ts +0 -15
  1301. package/src/toolkit/Secrets/EnvFile.d.ts.map +0 -1
  1302. package/src/toolkit/Secrets/EnvFile.js +0 -63
  1303. package/src/toolkit/Secrets/Manifest.d.ts +0 -24
  1304. package/src/toolkit/Secrets/Manifest.d.ts.map +0 -1
  1305. package/src/toolkit/Secrets/Manifest.js +0 -71
  1306. package/src/toolkit/Secrets/index.d.ts +0 -42
  1307. package/src/toolkit/Secrets/index.d.ts.map +0 -1
  1308. package/src/toolkit/Secrets/index.js +0 -123
  1309. package/src/toolkit/Secrets/providers/AwsSecretsManager.d.ts +0 -14
  1310. package/src/toolkit/Secrets/providers/AwsSecretsManager.d.ts.map +0 -1
  1311. package/src/toolkit/Secrets/providers/AwsSecretsManager.js +0 -132
  1312. package/src/toolkit/Secrets/providers/CloudflareKv.d.ts +0 -9
  1313. package/src/toolkit/Secrets/providers/CloudflareKv.d.ts.map +0 -1
  1314. package/src/toolkit/Secrets/providers/CloudflareKv.js +0 -74
  1315. package/src/tools/broadcast/Broadcast.d.ts +0 -17
  1316. package/src/tools/broadcast/Broadcast.d.ts.map +0 -1
  1317. package/src/tools/broadcast/Broadcast.js +0 -84
  1318. package/src/tools/broadcast/BroadcastRegistry.d.ts +0 -15
  1319. package/src/tools/broadcast/BroadcastRegistry.d.ts.map +0 -1
  1320. package/src/tools/broadcast/BroadcastRegistry.js +0 -29
  1321. package/src/tools/broadcast/BroadcastRuntimeRegistration.d.ts +0 -11
  1322. package/src/tools/broadcast/BroadcastRuntimeRegistration.d.ts.map +0 -1
  1323. package/src/tools/broadcast/BroadcastRuntimeRegistration.js +0 -23
  1324. package/src/tools/broadcast/drivers/BaseDriver.d.ts +0 -5
  1325. package/src/tools/broadcast/drivers/BaseDriver.d.ts.map +0 -1
  1326. package/src/tools/broadcast/drivers/BaseDriver.js +0 -8
  1327. package/src/tools/broadcast/drivers/InMemory.d.ts +0 -18
  1328. package/src/tools/broadcast/drivers/InMemory.d.ts.map +0 -1
  1329. package/src/tools/broadcast/drivers/InMemory.js +0 -16
  1330. package/src/tools/broadcast/drivers/Pusher.d.ts +0 -8
  1331. package/src/tools/broadcast/drivers/Pusher.d.ts.map +0 -1
  1332. package/src/tools/broadcast/drivers/Pusher.js +0 -75
  1333. package/src/tools/broadcast/drivers/Redis.d.ts +0 -19
  1334. package/src/tools/broadcast/drivers/Redis.d.ts.map +0 -1
  1335. package/src/tools/broadcast/drivers/Redis.js +0 -25
  1336. package/src/tools/broadcast/drivers/RedisHttps.d.ts +0 -14
  1337. package/src/tools/broadcast/drivers/RedisHttps.d.ts.map +0 -1
  1338. package/src/tools/broadcast/drivers/RedisHttps.js +0 -50
  1339. package/src/tools/broadcast/index.d.ts +0 -9
  1340. package/src/tools/broadcast/index.d.ts.map +0 -1
  1341. package/src/tools/broadcast/index.js +0 -8
  1342. package/src/tools/http/Http.d.ts +0 -49
  1343. package/src/tools/http/Http.d.ts.map +0 -1
  1344. package/src/tools/http/Http.js +0 -173
  1345. package/src/tools/http/HttpResponse.d.ts +0 -32
  1346. package/src/tools/http/HttpResponse.d.ts.map +0 -1
  1347. package/src/tools/http/HttpResponse.js +0 -80
  1348. package/src/tools/http/index.d.ts +0 -15
  1349. package/src/tools/http/index.d.ts.map +0 -1
  1350. package/src/tools/http/index.js +0 -9
  1351. package/src/tools/mail/Mail.d.ts +0 -2
  1352. package/src/tools/mail/Mail.d.ts.map +0 -1
  1353. package/src/tools/mail/Mail.js +0 -1
  1354. package/src/tools/mail/MailDriverRegistry.d.ts +0 -18
  1355. package/src/tools/mail/MailDriverRegistry.d.ts.map +0 -1
  1356. package/src/tools/mail/MailDriverRegistry.js +0 -23
  1357. package/src/tools/mail/attachments.d.ts +0 -23
  1358. package/src/tools/mail/attachments.d.ts.map +0 -1
  1359. package/src/tools/mail/attachments.js +0 -26
  1360. package/src/tools/mail/drivers/BaseDriver.d.ts +0 -5
  1361. package/src/tools/mail/drivers/BaseDriver.d.ts.map +0 -1
  1362. package/src/tools/mail/drivers/BaseDriver.js +0 -8
  1363. package/src/tools/mail/drivers/Mailgun.d.ts +0 -31
  1364. package/src/tools/mail/drivers/Mailgun.d.ts.map +0 -1
  1365. package/src/tools/mail/drivers/Mailgun.js +0 -81
  1366. package/src/tools/mail/drivers/SendGrid.d.ts +0 -29
  1367. package/src/tools/mail/drivers/SendGrid.d.ts.map +0 -1
  1368. package/src/tools/mail/drivers/SendGrid.js +0 -58
  1369. package/src/tools/mail/drivers/Ses.d.ts +0 -24
  1370. package/src/tools/mail/drivers/Ses.d.ts.map +0 -1
  1371. package/src/tools/mail/drivers/Ses.js +0 -117
  1372. package/src/tools/mail/drivers/Smtp.d.ts +0 -38
  1373. package/src/tools/mail/drivers/Smtp.d.ts.map +0 -1
  1374. package/src/tools/mail/drivers/Smtp.js +0 -349
  1375. package/src/tools/mail/index.d.ts +0 -40
  1376. package/src/tools/mail/index.d.ts.map +0 -1
  1377. package/src/tools/mail/index.js +0 -129
  1378. package/src/tools/mail/template-loader.d.ts +0 -10
  1379. package/src/tools/mail/template-loader.d.ts.map +0 -1
  1380. package/src/tools/mail/template-loader.js +0 -101
  1381. package/src/tools/mail/template-utils.d.ts +0 -10
  1382. package/src/tools/mail/template-utils.d.ts.map +0 -1
  1383. package/src/tools/mail/template-utils.js +0 -16
  1384. package/src/tools/mail/templates/index.d.ts +0 -57
  1385. package/src/tools/mail/templates/index.d.ts.map +0 -1
  1386. package/src/tools/mail/templates/index.js +0 -104
  1387. package/src/tools/mail/testing.d.ts +0 -41
  1388. package/src/tools/mail/testing.d.ts.map +0 -1
  1389. package/src/tools/mail/testing.js +0 -34
  1390. package/src/tools/notification/Driver.d.ts +0 -11
  1391. package/src/tools/notification/Driver.d.ts.map +0 -1
  1392. package/src/tools/notification/Driver.js +0 -1
  1393. package/src/tools/notification/Notification.d.ts +0 -24
  1394. package/src/tools/notification/Notification.d.ts.map +0 -1
  1395. package/src/tools/notification/Notification.js +0 -35
  1396. package/src/tools/notification/NotificationChannelRegistry.d.ts +0 -15
  1397. package/src/tools/notification/NotificationChannelRegistry.d.ts.map +0 -1
  1398. package/src/tools/notification/NotificationChannelRegistry.js +0 -36
  1399. package/src/tools/notification/NotificationRuntimeRegistration.d.ts +0 -13
  1400. package/src/tools/notification/NotificationRuntimeRegistration.d.ts.map +0 -1
  1401. package/src/tools/notification/NotificationRuntimeRegistration.js +0 -25
  1402. package/src/tools/notification/Registry.d.ts +0 -10
  1403. package/src/tools/notification/Registry.d.ts.map +0 -1
  1404. package/src/tools/notification/Registry.js +0 -26
  1405. package/src/tools/notification/Service.d.ts +0 -7
  1406. package/src/tools/notification/Service.d.ts.map +0 -1
  1407. package/src/tools/notification/Service.js +0 -91
  1408. package/src/tools/notification/config.d.ts +0 -5
  1409. package/src/tools/notification/config.d.ts.map +0 -1
  1410. package/src/tools/notification/config.js +0 -5
  1411. package/src/tools/notification/drivers/BaseDriver.d.ts +0 -5
  1412. package/src/tools/notification/drivers/BaseDriver.d.ts.map +0 -1
  1413. package/src/tools/notification/drivers/BaseDriver.js +0 -8
  1414. package/src/tools/notification/drivers/Console.d.ts +0 -7
  1415. package/src/tools/notification/drivers/Console.d.ts.map +0 -1
  1416. package/src/tools/notification/drivers/Console.js +0 -13
  1417. package/src/tools/notification/drivers/Slack.d.ts +0 -16
  1418. package/src/tools/notification/drivers/Slack.d.ts.map +0 -1
  1419. package/src/tools/notification/drivers/Slack.js +0 -24
  1420. package/src/tools/notification/drivers/SlackNotification.d.ts +0 -8
  1421. package/src/tools/notification/drivers/SlackNotification.d.ts.map +0 -1
  1422. package/src/tools/notification/drivers/SlackNotification.js +0 -13
  1423. package/src/tools/notification/drivers/Termii.d.ts +0 -10
  1424. package/src/tools/notification/drivers/Termii.d.ts.map +0 -1
  1425. package/src/tools/notification/drivers/Termii.js +0 -36
  1426. package/src/tools/notification/drivers/Twilio.d.ts +0 -21
  1427. package/src/tools/notification/drivers/Twilio.d.ts.map +0 -1
  1428. package/src/tools/notification/drivers/Twilio.js +0 -48
  1429. package/src/tools/notification/drivers/TwilioNotification.d.ts +0 -8
  1430. package/src/tools/notification/drivers/TwilioNotification.d.ts.map +0 -1
  1431. package/src/tools/notification/drivers/TwilioNotification.js +0 -13
  1432. package/src/tools/notification/templates/markdown/index.d.ts +0 -15
  1433. package/src/tools/notification/templates/markdown/index.d.ts.map +0 -1
  1434. package/src/tools/notification/templates/markdown/index.js +0 -38
  1435. package/src/tools/notification/templates/markdown/registry.d.ts +0 -15
  1436. package/src/tools/notification/templates/markdown/registry.d.ts.map +0 -1
  1437. package/src/tools/notification/templates/markdown/registry.js +0 -36
  1438. package/src/tools/notification/testing.d.ts +0 -19
  1439. package/src/tools/notification/testing.d.ts.map +0 -1
  1440. package/src/tools/notification/testing.js +0 -35
  1441. package/src/tools/notification/testingHelpers.d.ts +0 -12
  1442. package/src/tools/notification/testingHelpers.d.ts.map +0 -1
  1443. package/src/tools/notification/testingHelpers.js +0 -32
  1444. package/src/tools/queue/AdvancedQueue.d.ts +0 -19
  1445. package/src/tools/queue/AdvancedQueue.d.ts.map +0 -1
  1446. package/src/tools/queue/AdvancedQueue.js +0 -352
  1447. package/src/tools/queue/DeduplicationBuilder.d.ts +0 -20
  1448. package/src/tools/queue/DeduplicationBuilder.d.ts.map +0 -1
  1449. package/src/tools/queue/DeduplicationBuilder.js +0 -77
  1450. package/src/tools/queue/LockProvider.d.ts +0 -22
  1451. package/src/tools/queue/LockProvider.d.ts.map +0 -1
  1452. package/src/tools/queue/LockProvider.js +0 -282
  1453. package/src/tools/queue/Queue.d.ts +0 -24
  1454. package/src/tools/queue/Queue.d.ts.map +0 -1
  1455. package/src/tools/queue/Queue.js +0 -43
  1456. package/src/tools/queue/QueueExtensions.d.ts +0 -46
  1457. package/src/tools/queue/QueueExtensions.d.ts.map +0 -1
  1458. package/src/tools/queue/QueueExtensions.js +0 -129
  1459. package/src/tools/queue/QueueRuntimeRegistration.d.ts +0 -11
  1460. package/src/tools/queue/QueueRuntimeRegistration.d.ts.map +0 -1
  1461. package/src/tools/queue/QueueRuntimeRegistration.js +0 -25
  1462. package/src/tools/queue/drivers/Database.d.ts +0 -23
  1463. package/src/tools/queue/drivers/Database.d.ts.map +0 -1
  1464. package/src/tools/queue/drivers/Database.js +0 -123
  1465. package/src/tools/queue/drivers/InMemory.d.ts +0 -10
  1466. package/src/tools/queue/drivers/InMemory.d.ts.map +0 -1
  1467. package/src/tools/queue/drivers/InMemory.js +0 -55
  1468. package/src/tools/queue/drivers/Redis.d.ts +0 -10
  1469. package/src/tools/queue/drivers/Redis.d.ts.map +0 -1
  1470. package/src/tools/queue/drivers/Redis.js +0 -26
  1471. package/src/tools/queue/index.d.ts +0 -9
  1472. package/src/tools/queue/index.d.ts.map +0 -1
  1473. package/src/tools/queue/index.js +0 -7
  1474. package/src/tools/redis/RedisKeyManager.d.ts +0 -64
  1475. package/src/tools/redis/RedisKeyManager.d.ts.map +0 -1
  1476. package/src/tools/redis/RedisKeyManager.js +0 -124
  1477. package/src/tools/storage/LocalSignedUrl.d.ts +0 -12
  1478. package/src/tools/storage/LocalSignedUrl.d.ts.map +0 -1
  1479. package/src/tools/storage/LocalSignedUrl.js +0 -108
  1480. package/src/tools/storage/StorageDiskRegistry.d.ts +0 -14
  1481. package/src/tools/storage/StorageDiskRegistry.d.ts.map +0 -1
  1482. package/src/tools/storage/StorageDiskRegistry.js +0 -36
  1483. package/src/tools/storage/StorageDriverRegistry.d.ts +0 -16
  1484. package/src/tools/storage/StorageDriverRegistry.d.ts.map +0 -1
  1485. package/src/tools/storage/StorageDriverRegistry.js +0 -20
  1486. package/src/tools/storage/StorageRuntimeRegistration.d.ts +0 -10
  1487. package/src/tools/storage/StorageRuntimeRegistration.d.ts.map +0 -1
  1488. package/src/tools/storage/StorageRuntimeRegistration.js +0 -21
  1489. package/src/tools/storage/drivers/Gcs.d.ts +0 -20
  1490. package/src/tools/storage/drivers/Gcs.d.ts.map +0 -1
  1491. package/src/tools/storage/drivers/Gcs.js +0 -152
  1492. package/src/tools/storage/drivers/Local.d.ts +0 -18
  1493. package/src/tools/storage/drivers/Local.d.ts.map +0 -1
  1494. package/src/tools/storage/drivers/Local.js +0 -89
  1495. package/src/tools/storage/drivers/R2.d.ts +0 -20
  1496. package/src/tools/storage/drivers/R2.d.ts.map +0 -1
  1497. package/src/tools/storage/drivers/R2.js +0 -73
  1498. package/src/tools/storage/drivers/S3.d.ts +0 -26
  1499. package/src/tools/storage/drivers/S3.d.ts.map +0 -1
  1500. package/src/tools/storage/drivers/S3.js +0 -259
  1501. package/src/tools/storage/index.d.ts +0 -21
  1502. package/src/tools/storage/index.d.ts.map +0 -1
  1503. package/src/tools/storage/index.js +0 -150
  1504. package/src/tools/storage/testing.d.ts +0 -23
  1505. package/src/tools/storage/testing.d.ts.map +0 -1
  1506. package/src/tools/storage/testing.js +0 -53
  1507. package/src/tools/templates/MarkdownRenderer.d.ts +0 -14
  1508. package/src/tools/templates/MarkdownRenderer.d.ts.map +0 -1
  1509. package/src/tools/templates/MarkdownRenderer.js +0 -300
  1510. package/src/tools/templates/index.d.ts +0 -5
  1511. package/src/tools/templates/index.d.ts.map +0 -1
  1512. package/src/tools/templates/index.js +0 -4
  1513. package/src/types/Queue.d.ts +0 -62
  1514. package/src/types/Queue.d.ts.map +0 -1
  1515. package/src/types/Queue.js +0 -5
  1516. package/src/validation/ValidationError.d.ts +0 -42
  1517. package/src/validation/ValidationError.d.ts.map +0 -1
  1518. package/src/validation/ValidationError.js +0 -55
  1519. package/src/validation/Validator.d.ts +0 -93
  1520. package/src/validation/Validator.d.ts.map +0 -1
  1521. 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
+ });