@zintrust/core 0.1.28 → 0.1.29

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