velocious 1.0.449 → 1.0.450

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 (630) hide show
  1. package/build/application.js +4 -4
  2. package/build/authorization/ability.js +8 -8
  3. package/build/authorization/base-resource.js +4 -4
  4. package/build/background-jobs/cron-expression.js +1 -1
  5. package/build/background-jobs/forked-runner-child.js +1 -1
  6. package/build/background-jobs/job-registry.js +1 -1
  7. package/build/background-jobs/job-runner.js +1 -1
  8. package/build/background-jobs/job.js +1 -1
  9. package/build/background-jobs/json-socket.js +4 -4
  10. package/build/background-jobs/main.js +21 -21
  11. package/build/background-jobs/scheduler.js +7 -7
  12. package/build/background-jobs/store.js +7 -7
  13. package/build/background-jobs/web/controller.js +2 -2
  14. package/build/background-jobs/worker.js +12 -12
  15. package/build/beacon/client.js +11 -8
  16. package/build/beacon/in-process-broker.js +2 -2
  17. package/build/beacon/in-process-client.js +2 -2
  18. package/build/beacon/server.js +3 -3
  19. package/build/cli/browser-cli.js +1 -1
  20. package/build/cli/commands/db/base-command.js +2 -2
  21. package/build/cli/index.js +2 -2
  22. package/build/cli/tenant-database-command-helper.js +3 -3
  23. package/build/cli/use-browser-cli.js +1 -1
  24. package/build/configuration.js +38 -38
  25. package/build/controller.js +8 -8
  26. package/build/current-configuration.js +1 -1
  27. package/build/database/annotations-async-hooks.js +2 -2
  28. package/build/database/annotations.js +3 -3
  29. package/build/database/drivers/base-column.js +1 -1
  30. package/build/database/drivers/base-foreign-key.js +1 -1
  31. package/build/database/drivers/base-table.js +1 -1
  32. package/build/database/drivers/base.js +10 -10
  33. package/build/database/drivers/mssql/index.js +1 -1
  34. package/build/database/drivers/mssql/table.js +1 -1
  35. package/build/database/drivers/mysql/index.js +3 -3
  36. package/build/database/drivers/mysql/query.js +1 -1
  37. package/build/database/drivers/mysql/table.js +1 -1
  38. package/build/database/drivers/pgsql/index.js +2 -2
  39. package/build/database/drivers/sqlite/base.js +16 -16
  40. package/build/database/drivers/sqlite/index.js +11 -11
  41. package/build/database/drivers/sqlite/index.native.js +1 -1
  42. package/build/database/drivers/sqlite/index.web.js +3 -3
  43. package/build/database/drivers/sqlite/query.js +1 -1
  44. package/build/database/drivers/sqlite/query.web.js +1 -1
  45. package/build/database/drivers/sqlite/sql/alter-table.js +2 -2
  46. package/build/database/drivers/sqlite/table.js +1 -1
  47. package/build/database/migrator/files-finder.js +1 -1
  48. package/build/database/migrator.js +6 -6
  49. package/build/database/pool/async-tracked-multi-connection.js +27 -27
  50. package/build/database/pool/base-methods-forward.js +4 -4
  51. package/build/database/pool/base.js +8 -8
  52. package/build/database/query/from-base.js +1 -1
  53. package/build/database/query/index.js +10 -10
  54. package/build/database/query/join-object.js +3 -3
  55. package/build/database/query/model-class-query.js +39 -39
  56. package/build/database/query/preloader/belongs-to.js +22 -22
  57. package/build/database/query/preloader/has-many.js +20 -20
  58. package/build/database/query/preloader/has-one.js +8 -8
  59. package/build/database/query/preloader/selection.js +3 -3
  60. package/build/database/query/preloader.js +8 -8
  61. package/build/database/query/query-data.js +9 -9
  62. package/build/database/query/where-model-class-hash.js +7 -7
  63. package/build/database/query/with-count.js +9 -9
  64. package/build/database/record/acts-as-list.js +15 -15
  65. package/build/database/record/attachments/handle.js +2 -2
  66. package/build/database/record/attachments/normalize-input.js +12 -12
  67. package/build/database/record/attachments/storage-drivers/s3.js +6 -6
  68. package/build/database/record/attachments/store.js +13 -13
  69. package/build/database/record/index.js +115 -121
  70. package/build/database/record/instance-relationships/base.js +11 -11
  71. package/build/database/record/instance-relationships/belongs-to.js +3 -3
  72. package/build/database/record/instance-relationships/has-many.js +8 -8
  73. package/build/database/record/instance-relationships/has-one.js +7 -7
  74. package/build/database/record/relationships/base.js +2 -2
  75. package/build/database/record/state-machine.js +7 -7
  76. package/build/database/record/validators/presence.js +1 -1
  77. package/build/database/record/validators/uniqueness.js +5 -5
  78. package/build/database/table-data/index.js +4 -4
  79. package/build/environment-handlers/base.js +2 -2
  80. package/build/environment-handlers/browser.js +7 -7
  81. package/build/environment-handlers/node/cli/commands/cli-command-context.js +1 -1
  82. package/build/environment-handlers/node/cli/commands/console.js +4 -4
  83. package/build/environment-handlers/node/cli/commands/db/schema/dump.js +1 -1
  84. package/build/environment-handlers/node/cli/commands/db/schema/load.js +3 -3
  85. package/build/environment-handlers/node/cli/commands/generate/frontend-models.js +55 -17
  86. package/build/environment-handlers/node.js +6 -6
  87. package/build/frontend-model-controller.js +81 -82
  88. package/build/frontend-model-resource/base-resource.js +78 -115
  89. package/build/frontend-models/base.js +162 -149
  90. package/build/frontend-models/clear-pending-debounced-callback.js +1 -1
  91. package/build/frontend-models/event-hook-models.js +2 -2
  92. package/build/frontend-models/outgoing-event-buffer.js +2 -2
  93. package/build/frontend-models/preloader.js +5 -5
  94. package/build/frontend-models/query.js +43 -38
  95. package/build/frontend-models/resource-definition.js +6 -6
  96. package/build/frontend-models/transport-serialization.js +11 -11
  97. package/build/frontend-models/use-destroyed-event.js +10 -10
  98. package/build/frontend-models/use-model-class-event.js +11 -11
  99. package/build/frontend-models/use-updated-event.js +11 -11
  100. package/build/frontend-models/websocket-channel.js +26 -17
  101. package/build/frontend-models/websocket-publishers.js +9 -9
  102. package/build/http-client/response.js +2 -2
  103. package/build/http-server/client/index.js +8 -8
  104. package/build/http-server/client/params-to-object.js +10 -10
  105. package/build/http-server/client/request-buffer/form-data-part.js +2 -2
  106. package/build/http-server/client/request-buffer/index.js +8 -8
  107. package/build/http-server/client/request-parser.js +3 -3
  108. package/build/http-server/client/request-runner.js +6 -6
  109. package/build/http-server/client/request-timing.js +5 -5
  110. package/build/http-server/client/request.js +1 -1
  111. package/build/http-server/client/response.js +5 -5
  112. package/build/http-server/client/websocket-request.js +4 -4
  113. package/build/http-server/client/websocket-session.js +18 -18
  114. package/build/http-server/development-reloader.js +5 -5
  115. package/build/http-server/index.js +12 -12
  116. package/build/http-server/remote-address.js +4 -4
  117. package/build/http-server/server-client.js +3 -3
  118. package/build/http-server/server-lock.js +4 -4
  119. package/build/http-server/websocket-channel-subscribers.js +3 -3
  120. package/build/http-server/websocket-channel.js +1 -1
  121. package/build/http-server/websocket-connection.js +1 -1
  122. package/build/http-server/websocket-event-log-store.js +6 -6
  123. package/build/http-server/websocket-events-host.js +2 -2
  124. package/build/http-server/worker-handler/in-process.js +7 -7
  125. package/build/http-server/worker-handler/index.js +4 -4
  126. package/build/http-server/worker-handler/worker-thread.js +3 -3
  127. package/build/logger/outputs/array-output.js +3 -3
  128. package/build/logger/outputs/console-output.js +1 -1
  129. package/build/logger/outputs/file-output.js +4 -4
  130. package/build/logger/outputs/stdout-output.js +1 -1
  131. package/build/logger.js +10 -10
  132. package/build/mailer/backends/smtp.js +3 -3
  133. package/build/mailer/base.js +8 -8
  134. package/build/mailer/delivery.js +4 -4
  135. package/build/plugins/sqljs-wasm-route-controller.js +1 -1
  136. package/build/routes/base-route.js +6 -6
  137. package/build/routes/basic-route.js +1 -1
  138. package/build/routes/hooks/frontend-model-command-route-hook.js +1 -1
  139. package/build/routes/index.js +1 -1
  140. package/build/routes/plugin-routes.js +1 -1
  141. package/build/routes/resolver.js +11 -11
  142. package/build/routes/resource-route.js +1 -1
  143. package/build/src/application.d.ts +3 -3
  144. package/build/src/application.d.ts.map +1 -1
  145. package/build/src/application.js +5 -5
  146. package/build/src/authorization/ability.d.ts +7 -7
  147. package/build/src/authorization/ability.d.ts.map +1 -1
  148. package/build/src/authorization/ability.js +9 -9
  149. package/build/src/authorization/base-resource.d.ts +1 -1
  150. package/build/src/authorization/base-resource.d.ts.map +1 -1
  151. package/build/src/authorization/base-resource.js +5 -5
  152. package/build/src/background-jobs/cron-expression.js +2 -2
  153. package/build/src/background-jobs/forked-runner-child.js +2 -2
  154. package/build/src/background-jobs/job-registry.d.ts +1 -1
  155. package/build/src/background-jobs/job-registry.d.ts.map +1 -1
  156. package/build/src/background-jobs/job-registry.js +2 -2
  157. package/build/src/background-jobs/job-runner.js +2 -2
  158. package/build/src/background-jobs/job.js +2 -2
  159. package/build/src/background-jobs/json-socket.d.ts +4 -4
  160. package/build/src/background-jobs/json-socket.d.ts.map +1 -1
  161. package/build/src/background-jobs/json-socket.js +5 -5
  162. package/build/src/background-jobs/main.d.ts +18 -18
  163. package/build/src/background-jobs/main.d.ts.map +1 -1
  164. package/build/src/background-jobs/main.js +22 -22
  165. package/build/src/background-jobs/scheduler.d.ts +5 -5
  166. package/build/src/background-jobs/scheduler.d.ts.map +1 -1
  167. package/build/src/background-jobs/scheduler.js +8 -8
  168. package/build/src/background-jobs/store.js +8 -8
  169. package/build/src/background-jobs/web/controller.js +3 -3
  170. package/build/src/background-jobs/worker.d.ts +6 -6
  171. package/build/src/background-jobs/worker.d.ts.map +1 -1
  172. package/build/src/background-jobs/worker.js +13 -13
  173. package/build/src/beacon/client.d.ts +4 -4
  174. package/build/src/beacon/client.d.ts.map +1 -1
  175. package/build/src/beacon/client.js +12 -9
  176. package/build/src/beacon/in-process-broker.d.ts.map +1 -1
  177. package/build/src/beacon/in-process-broker.js +3 -3
  178. package/build/src/beacon/in-process-client.d.ts +1 -1
  179. package/build/src/beacon/in-process-client.d.ts.map +1 -1
  180. package/build/src/beacon/in-process-client.js +3 -3
  181. package/build/src/beacon/server.d.ts +2 -2
  182. package/build/src/beacon/server.d.ts.map +1 -1
  183. package/build/src/beacon/server.js +4 -4
  184. package/build/src/cli/browser-cli.js +2 -2
  185. package/build/src/cli/commands/db/base-command.d.ts +2 -2
  186. package/build/src/cli/commands/db/base-command.d.ts.map +1 -1
  187. package/build/src/cli/commands/db/base-command.js +3 -3
  188. package/build/src/cli/index.js +3 -3
  189. package/build/src/cli/tenant-database-command-helper.d.ts +1 -1
  190. package/build/src/cli/tenant-database-command-helper.d.ts.map +1 -1
  191. package/build/src/cli/tenant-database-command-helper.js +4 -4
  192. package/build/src/cli/use-browser-cli.js +2 -2
  193. package/build/src/configuration.d.ts +14 -14
  194. package/build/src/configuration.d.ts.map +1 -1
  195. package/build/src/configuration.js +39 -39
  196. package/build/src/controller.js +10 -10
  197. package/build/src/current-configuration.js +2 -2
  198. package/build/src/database/annotations-async-hooks.js +3 -3
  199. package/build/src/database/annotations.d.ts.map +1 -1
  200. package/build/src/database/annotations.js +4 -4
  201. package/build/src/database/drivers/base-column.d.ts +1 -1
  202. package/build/src/database/drivers/base-column.d.ts.map +1 -1
  203. package/build/src/database/drivers/base-column.js +2 -2
  204. package/build/src/database/drivers/base-foreign-key.d.ts +1 -1
  205. package/build/src/database/drivers/base-foreign-key.d.ts.map +1 -1
  206. package/build/src/database/drivers/base-foreign-key.js +2 -2
  207. package/build/src/database/drivers/base-table.d.ts +1 -1
  208. package/build/src/database/drivers/base-table.d.ts.map +1 -1
  209. package/build/src/database/drivers/base-table.js +2 -2
  210. package/build/src/database/drivers/base.d.ts +6 -6
  211. package/build/src/database/drivers/base.d.ts.map +1 -1
  212. package/build/src/database/drivers/base.js +11 -11
  213. package/build/src/database/drivers/mssql/index.js +2 -2
  214. package/build/src/database/drivers/mssql/table.js +2 -2
  215. package/build/src/database/drivers/mysql/index.js +4 -4
  216. package/build/src/database/drivers/mysql/query.js +2 -2
  217. package/build/src/database/drivers/mysql/table.js +2 -2
  218. package/build/src/database/drivers/pgsql/index.js +3 -3
  219. package/build/src/database/drivers/sqlite/base.d.ts +3 -3
  220. package/build/src/database/drivers/sqlite/base.d.ts.map +1 -1
  221. package/build/src/database/drivers/sqlite/base.js +17 -17
  222. package/build/src/database/drivers/sqlite/index.d.ts +4 -4
  223. package/build/src/database/drivers/sqlite/index.d.ts.map +1 -1
  224. package/build/src/database/drivers/sqlite/index.js +12 -12
  225. package/build/src/database/drivers/sqlite/index.native.js +2 -2
  226. package/build/src/database/drivers/sqlite/index.web.d.ts +2 -2
  227. package/build/src/database/drivers/sqlite/index.web.d.ts.map +1 -1
  228. package/build/src/database/drivers/sqlite/index.web.js +4 -4
  229. package/build/src/database/drivers/sqlite/query.js +2 -2
  230. package/build/src/database/drivers/sqlite/query.web.js +2 -2
  231. package/build/src/database/drivers/sqlite/sql/alter-table.js +3 -3
  232. package/build/src/database/drivers/sqlite/table.js +2 -2
  233. package/build/src/database/migrator/files-finder.js +2 -2
  234. package/build/src/database/migrator.d.ts +1 -1
  235. package/build/src/database/migrator.d.ts.map +1 -1
  236. package/build/src/database/migrator.js +7 -7
  237. package/build/src/database/pool/async-tracked-multi-connection.d.ts +9 -9
  238. package/build/src/database/pool/async-tracked-multi-connection.d.ts.map +1 -1
  239. package/build/src/database/pool/async-tracked-multi-connection.js +28 -28
  240. package/build/src/database/pool/base-methods-forward.js +7 -7
  241. package/build/src/database/pool/base.d.ts +1 -1
  242. package/build/src/database/pool/base.d.ts.map +1 -1
  243. package/build/src/database/pool/base.js +9 -9
  244. package/build/src/database/query/from-base.d.ts +1 -1
  245. package/build/src/database/query/from-base.d.ts.map +1 -1
  246. package/build/src/database/query/from-base.js +2 -2
  247. package/build/src/database/query/index.d.ts +4 -4
  248. package/build/src/database/query/index.d.ts.map +1 -1
  249. package/build/src/database/query/index.js +11 -11
  250. package/build/src/database/query/join-object.js +4 -4
  251. package/build/src/database/query/model-class-query.d.ts +4 -4
  252. package/build/src/database/query/model-class-query.d.ts.map +1 -1
  253. package/build/src/database/query/model-class-query.js +40 -40
  254. package/build/src/database/query/preloader/belongs-to.js +23 -23
  255. package/build/src/database/query/preloader/has-many.js +21 -21
  256. package/build/src/database/query/preloader/has-one.js +9 -9
  257. package/build/src/database/query/preloader/selection.js +4 -4
  258. package/build/src/database/query/preloader.js +9 -9
  259. package/build/src/database/query/query-data.js +10 -10
  260. package/build/src/database/query/where-model-class-hash.js +8 -8
  261. package/build/src/database/query/with-count.js +10 -10
  262. package/build/src/database/record/acts-as-list.js +20 -20
  263. package/build/src/database/record/attachments/handle.d.ts +1 -1
  264. package/build/src/database/record/attachments/handle.d.ts.map +1 -1
  265. package/build/src/database/record/attachments/handle.js +3 -3
  266. package/build/src/database/record/attachments/normalize-input.js +15 -15
  267. package/build/src/database/record/attachments/storage-drivers/s3.js +7 -7
  268. package/build/src/database/record/attachments/store.d.ts +2 -2
  269. package/build/src/database/record/attachments/store.d.ts.map +1 -1
  270. package/build/src/database/record/attachments/store.js +14 -14
  271. package/build/src/database/record/index.d.ts +18 -25
  272. package/build/src/database/record/index.d.ts.map +1 -1
  273. package/build/src/database/record/index.js +135 -141
  274. package/build/src/database/record/instance-relationships/base.d.ts +3 -3
  275. package/build/src/database/record/instance-relationships/base.d.ts.map +1 -1
  276. package/build/src/database/record/instance-relationships/base.js +13 -13
  277. package/build/src/database/record/instance-relationships/belongs-to.js +4 -4
  278. package/build/src/database/record/instance-relationships/has-many.js +9 -9
  279. package/build/src/database/record/instance-relationships/has-one.d.ts +1 -1
  280. package/build/src/database/record/instance-relationships/has-one.d.ts.map +1 -1
  281. package/build/src/database/record/instance-relationships/has-one.js +8 -8
  282. package/build/src/database/record/relationships/base.js +4 -4
  283. package/build/src/database/record/state-machine.js +8 -8
  284. package/build/src/database/record/validators/presence.js +2 -2
  285. package/build/src/database/record/validators/uniqueness.js +6 -6
  286. package/build/src/database/table-data/index.d.ts +4 -4
  287. package/build/src/database/table-data/index.d.ts.map +1 -1
  288. package/build/src/database/table-data/index.js +5 -5
  289. package/build/src/environment-handlers/base.js +3 -3
  290. package/build/src/environment-handlers/browser.d.ts +3 -3
  291. package/build/src/environment-handlers/browser.d.ts.map +1 -1
  292. package/build/src/environment-handlers/browser.js +8 -8
  293. package/build/src/environment-handlers/node/cli/commands/cli-command-context.js +2 -2
  294. package/build/src/environment-handlers/node/cli/commands/console.d.ts.map +1 -1
  295. package/build/src/environment-handlers/node/cli/commands/console.js +5 -5
  296. package/build/src/environment-handlers/node/cli/commands/db/schema/dump.d.ts +1 -1
  297. package/build/src/environment-handlers/node/cli/commands/db/schema/dump.d.ts.map +1 -1
  298. package/build/src/environment-handlers/node/cli/commands/db/schema/dump.js +2 -2
  299. package/build/src/environment-handlers/node/cli/commands/db/schema/load.d.ts +1 -1
  300. package/build/src/environment-handlers/node/cli/commands/db/schema/load.d.ts.map +1 -1
  301. package/build/src/environment-handlers/node/cli/commands/db/schema/load.js +4 -4
  302. package/build/src/environment-handlers/node/cli/commands/generate/frontend-models.d.ts +16 -1
  303. package/build/src/environment-handlers/node/cli/commands/generate/frontend-models.d.ts.map +1 -1
  304. package/build/src/environment-handlers/node/cli/commands/generate/frontend-models.js +51 -17
  305. package/build/src/environment-handlers/node.d.ts +2 -2
  306. package/build/src/environment-handlers/node.d.ts.map +1 -1
  307. package/build/src/environment-handlers/node.js +7 -7
  308. package/build/src/frontend-model-controller.d.ts +5 -6
  309. package/build/src/frontend-model-controller.d.ts.map +1 -1
  310. package/build/src/frontend-model-controller.js +88 -89
  311. package/build/src/frontend-model-resource/base-resource.d.ts +36 -27
  312. package/build/src/frontend-model-resource/base-resource.d.ts.map +1 -1
  313. package/build/src/frontend-model-resource/base-resource.js +67 -120
  314. package/build/src/frontend-models/base.d.ts +66 -58
  315. package/build/src/frontend-models/base.d.ts.map +1 -1
  316. package/build/src/frontend-models/base.js +171 -158
  317. package/build/src/frontend-models/clear-pending-debounced-callback.js +2 -2
  318. package/build/src/frontend-models/event-hook-models.d.ts.map +1 -1
  319. package/build/src/frontend-models/event-hook-models.js +3 -3
  320. package/build/src/frontend-models/outgoing-event-buffer.d.ts +1 -1
  321. package/build/src/frontend-models/outgoing-event-buffer.d.ts.map +1 -1
  322. package/build/src/frontend-models/outgoing-event-buffer.js +3 -3
  323. package/build/src/frontend-models/preloader.js +6 -6
  324. package/build/src/frontend-models/query.d.ts +16 -8
  325. package/build/src/frontend-models/query.d.ts.map +1 -1
  326. package/build/src/frontend-models/query.js +43 -39
  327. package/build/src/frontend-models/resource-definition.js +7 -7
  328. package/build/src/frontend-models/transport-serialization.js +12 -12
  329. package/build/src/frontend-models/use-destroyed-event.d.ts.map +1 -1
  330. package/build/src/frontend-models/use-destroyed-event.js +11 -11
  331. package/build/src/frontend-models/use-model-class-event.d.ts.map +1 -1
  332. package/build/src/frontend-models/use-model-class-event.js +12 -12
  333. package/build/src/frontend-models/use-updated-event.d.ts.map +1 -1
  334. package/build/src/frontend-models/use-updated-event.js +12 -12
  335. package/build/src/frontend-models/websocket-channel.d.ts +6 -1
  336. package/build/src/frontend-models/websocket-channel.d.ts.map +1 -1
  337. package/build/src/frontend-models/websocket-channel.js +26 -18
  338. package/build/src/frontend-models/websocket-publishers.js +11 -11
  339. package/build/src/http-client/response.d.ts +2 -2
  340. package/build/src/http-client/response.d.ts.map +1 -1
  341. package/build/src/http-client/response.js +3 -3
  342. package/build/src/http-server/client/index.d.ts +1 -1
  343. package/build/src/http-server/client/index.d.ts.map +1 -1
  344. package/build/src/http-server/client/index.js +9 -9
  345. package/build/src/http-server/client/params-to-object.js +11 -11
  346. package/build/src/http-server/client/request-buffer/form-data-part.d.ts +2 -2
  347. package/build/src/http-server/client/request-buffer/form-data-part.d.ts.map +1 -1
  348. package/build/src/http-server/client/request-buffer/form-data-part.js +3 -3
  349. package/build/src/http-server/client/request-buffer/index.d.ts +4 -4
  350. package/build/src/http-server/client/request-buffer/index.d.ts.map +1 -1
  351. package/build/src/http-server/client/request-buffer/index.js +9 -9
  352. package/build/src/http-server/client/request-parser.d.ts +1 -1
  353. package/build/src/http-server/client/request-parser.d.ts.map +1 -1
  354. package/build/src/http-server/client/request-parser.js +4 -4
  355. package/build/src/http-server/client/request-runner.js +7 -7
  356. package/build/src/http-server/client/request-timing.d.ts +5 -5
  357. package/build/src/http-server/client/request-timing.d.ts.map +1 -1
  358. package/build/src/http-server/client/request-timing.js +6 -6
  359. package/build/src/http-server/client/request.js +2 -2
  360. package/build/src/http-server/client/response.d.ts +3 -3
  361. package/build/src/http-server/client/response.d.ts.map +1 -1
  362. package/build/src/http-server/client/response.js +6 -6
  363. package/build/src/http-server/client/websocket-request.d.ts +3 -3
  364. package/build/src/http-server/client/websocket-request.d.ts.map +1 -1
  365. package/build/src/http-server/client/websocket-request.js +5 -5
  366. package/build/src/http-server/client/websocket-session.d.ts +6 -6
  367. package/build/src/http-server/client/websocket-session.d.ts.map +1 -1
  368. package/build/src/http-server/client/websocket-session.js +19 -19
  369. package/build/src/http-server/development-reloader.d.ts +3 -3
  370. package/build/src/http-server/development-reloader.d.ts.map +1 -1
  371. package/build/src/http-server/development-reloader.js +6 -6
  372. package/build/src/http-server/index.d.ts +7 -7
  373. package/build/src/http-server/index.d.ts.map +1 -1
  374. package/build/src/http-server/index.js +13 -13
  375. package/build/src/http-server/remote-address.js +6 -6
  376. package/build/src/http-server/server-client.js +4 -4
  377. package/build/src/http-server/server-lock.js +5 -5
  378. package/build/src/http-server/websocket-channel-subscribers.d.ts +1 -1
  379. package/build/src/http-server/websocket-channel-subscribers.d.ts.map +1 -1
  380. package/build/src/http-server/websocket-channel-subscribers.js +4 -4
  381. package/build/src/http-server/websocket-channel.d.ts +1 -1
  382. package/build/src/http-server/websocket-channel.d.ts.map +1 -1
  383. package/build/src/http-server/websocket-channel.js +2 -2
  384. package/build/src/http-server/websocket-connection.d.ts +1 -1
  385. package/build/src/http-server/websocket-connection.d.ts.map +1 -1
  386. package/build/src/http-server/websocket-connection.js +2 -2
  387. package/build/src/http-server/websocket-event-log-store.d.ts +1 -1
  388. package/build/src/http-server/websocket-event-log-store.d.ts.map +1 -1
  389. package/build/src/http-server/websocket-event-log-store.js +7 -7
  390. package/build/src/http-server/websocket-events-host.d.ts +1 -1
  391. package/build/src/http-server/websocket-events-host.d.ts.map +1 -1
  392. package/build/src/http-server/websocket-events-host.js +3 -3
  393. package/build/src/http-server/worker-handler/in-process.d.ts +3 -3
  394. package/build/src/http-server/worker-handler/in-process.d.ts.map +1 -1
  395. package/build/src/http-server/worker-handler/in-process.js +9 -9
  396. package/build/src/http-server/worker-handler/index.d.ts +4 -4
  397. package/build/src/http-server/worker-handler/index.d.ts.map +1 -1
  398. package/build/src/http-server/worker-handler/index.js +5 -5
  399. package/build/src/http-server/worker-handler/worker-thread.d.ts +2 -2
  400. package/build/src/http-server/worker-handler/worker-thread.d.ts.map +1 -1
  401. package/build/src/http-server/worker-handler/worker-thread.js +4 -4
  402. package/build/src/logger/outputs/array-output.d.ts +3 -3
  403. package/build/src/logger/outputs/array-output.d.ts.map +1 -1
  404. package/build/src/logger/outputs/array-output.js +4 -4
  405. package/build/src/logger/outputs/console-output.d.ts +1 -1
  406. package/build/src/logger/outputs/console-output.d.ts.map +1 -1
  407. package/build/src/logger/outputs/console-output.js +2 -2
  408. package/build/src/logger/outputs/file-output.d.ts +4 -4
  409. package/build/src/logger/outputs/file-output.d.ts.map +1 -1
  410. package/build/src/logger/outputs/file-output.js +5 -5
  411. package/build/src/logger/outputs/stdout-output.d.ts.map +1 -1
  412. package/build/src/logger/outputs/stdout-output.js +2 -2
  413. package/build/src/logger.d.ts.map +1 -1
  414. package/build/src/logger.js +11 -11
  415. package/build/src/mailer/backends/smtp.d.ts.map +1 -1
  416. package/build/src/mailer/backends/smtp.js +5 -5
  417. package/build/src/mailer/base.js +11 -11
  418. package/build/src/mailer/delivery.d.ts +3 -3
  419. package/build/src/mailer/delivery.d.ts.map +1 -1
  420. package/build/src/mailer/delivery.js +5 -5
  421. package/build/src/plugins/sqljs-wasm-route-controller.js +2 -2
  422. package/build/src/routes/base-route.d.ts +6 -6
  423. package/build/src/routes/base-route.d.ts.map +1 -1
  424. package/build/src/routes/base-route.js +7 -7
  425. package/build/src/routes/basic-route.js +2 -2
  426. package/build/src/routes/hooks/frontend-model-command-route-hook.js +2 -2
  427. package/build/src/routes/index.js +2 -2
  428. package/build/src/routes/plugin-routes.js +2 -2
  429. package/build/src/routes/resolver.d.ts +1 -1
  430. package/build/src/routes/resolver.d.ts.map +1 -1
  431. package/build/src/routes/resolver.js +13 -13
  432. package/build/src/routes/resource-route.d.ts +1 -1
  433. package/build/src/routes/resource-route.d.ts.map +1 -1
  434. package/build/src/routes/resource-route.js +2 -2
  435. package/build/src/testing/browser-frontend-model-event-hook-scenarios.d.ts.map +1 -1
  436. package/build/src/testing/browser-frontend-model-event-hook-scenarios.js +8 -8
  437. package/build/src/testing/expect-utils.js +13 -13
  438. package/build/src/testing/expect.d.ts +1 -1
  439. package/build/src/testing/expect.d.ts.map +1 -1
  440. package/build/src/testing/expect.js +9 -9
  441. package/build/src/testing/test-files-finder.d.ts +8 -8
  442. package/build/src/testing/test-files-finder.d.ts.map +1 -1
  443. package/build/src/testing/test-files-finder.js +9 -9
  444. package/build/src/testing/test-filter-parser.js +3 -3
  445. package/build/src/testing/test-runner.d.ts +2 -2
  446. package/build/src/testing/test-runner.d.ts.map +1 -1
  447. package/build/src/testing/test-runner.js +17 -17
  448. package/build/src/testing/test-suite-splitter.js +2 -2
  449. package/build/src/testing/test.d.ts +2 -2
  450. package/build/src/testing/test.d.ts.map +1 -1
  451. package/build/src/testing/test.js +16 -16
  452. package/build/src/utils/backtrace-cleaner.d.ts +1 -1
  453. package/build/src/utils/backtrace-cleaner.d.ts.map +1 -1
  454. package/build/src/utils/backtrace-cleaner.js +2 -2
  455. package/build/src/utils/format-value.js +2 -2
  456. package/build/src/utils/model-scope.js +2 -2
  457. package/build/src/utils/ransack.js +27 -27
  458. package/build/src/utils/with-tracked-stack-async-hooks.js +8 -8
  459. package/build/src/utils/with-tracked-stack.js +4 -4
  460. package/build/testing/browser-frontend-model-event-hook-scenarios.js +7 -7
  461. package/build/testing/expect-utils.js +11 -11
  462. package/build/testing/expect.js +7 -7
  463. package/build/testing/test-files-finder.js +8 -8
  464. package/build/testing/test-filter-parser.js +2 -2
  465. package/build/testing/test-runner.js +16 -16
  466. package/build/testing/test-suite-splitter.js +1 -1
  467. package/build/testing/test.js +15 -15
  468. package/build/utils/backtrace-cleaner.js +1 -1
  469. package/build/utils/format-value.js +1 -1
  470. package/build/utils/model-scope.js +1 -1
  471. package/build/utils/ransack.js +26 -26
  472. package/build/utils/with-tracked-stack-async-hooks.js +7 -7
  473. package/build/utils/with-tracked-stack.js +3 -3
  474. package/package.json +2 -1
  475. package/src/application.js +4 -4
  476. package/src/authorization/ability.js +8 -8
  477. package/src/authorization/base-resource.js +4 -4
  478. package/src/background-jobs/cron-expression.js +1 -1
  479. package/src/background-jobs/forked-runner-child.js +1 -1
  480. package/src/background-jobs/job-registry.js +1 -1
  481. package/src/background-jobs/job-runner.js +1 -1
  482. package/src/background-jobs/job.js +1 -1
  483. package/src/background-jobs/json-socket.js +4 -4
  484. package/src/background-jobs/main.js +21 -21
  485. package/src/background-jobs/scheduler.js +7 -7
  486. package/src/background-jobs/store.js +7 -7
  487. package/src/background-jobs/web/controller.js +2 -2
  488. package/src/background-jobs/worker.js +12 -12
  489. package/src/beacon/client.js +11 -8
  490. package/src/beacon/in-process-broker.js +2 -2
  491. package/src/beacon/in-process-client.js +2 -2
  492. package/src/beacon/server.js +3 -3
  493. package/src/cli/browser-cli.js +1 -1
  494. package/src/cli/commands/db/base-command.js +2 -2
  495. package/src/cli/index.js +2 -2
  496. package/src/cli/tenant-database-command-helper.js +3 -3
  497. package/src/cli/use-browser-cli.js +1 -1
  498. package/src/configuration.js +38 -38
  499. package/src/controller.js +8 -8
  500. package/src/current-configuration.js +1 -1
  501. package/src/database/annotations-async-hooks.js +2 -2
  502. package/src/database/annotations.js +3 -3
  503. package/src/database/drivers/base-column.js +1 -1
  504. package/src/database/drivers/base-foreign-key.js +1 -1
  505. package/src/database/drivers/base-table.js +1 -1
  506. package/src/database/drivers/base.js +10 -10
  507. package/src/database/drivers/mssql/index.js +1 -1
  508. package/src/database/drivers/mssql/table.js +1 -1
  509. package/src/database/drivers/mysql/index.js +3 -3
  510. package/src/database/drivers/mysql/query.js +1 -1
  511. package/src/database/drivers/mysql/table.js +1 -1
  512. package/src/database/drivers/pgsql/index.js +2 -2
  513. package/src/database/drivers/sqlite/base.js +16 -16
  514. package/src/database/drivers/sqlite/index.js +11 -11
  515. package/src/database/drivers/sqlite/index.native.js +1 -1
  516. package/src/database/drivers/sqlite/index.web.js +3 -3
  517. package/src/database/drivers/sqlite/query.js +1 -1
  518. package/src/database/drivers/sqlite/query.web.js +1 -1
  519. package/src/database/drivers/sqlite/sql/alter-table.js +2 -2
  520. package/src/database/drivers/sqlite/table.js +1 -1
  521. package/src/database/migrator/files-finder.js +1 -1
  522. package/src/database/migrator.js +6 -6
  523. package/src/database/pool/async-tracked-multi-connection.js +27 -27
  524. package/src/database/pool/base-methods-forward.js +4 -4
  525. package/src/database/pool/base.js +8 -8
  526. package/src/database/query/from-base.js +1 -1
  527. package/src/database/query/index.js +10 -10
  528. package/src/database/query/join-object.js +3 -3
  529. package/src/database/query/model-class-query.js +39 -39
  530. package/src/database/query/preloader/belongs-to.js +22 -22
  531. package/src/database/query/preloader/has-many.js +20 -20
  532. package/src/database/query/preloader/has-one.js +8 -8
  533. package/src/database/query/preloader/selection.js +3 -3
  534. package/src/database/query/preloader.js +8 -8
  535. package/src/database/query/query-data.js +9 -9
  536. package/src/database/query/where-model-class-hash.js +7 -7
  537. package/src/database/query/with-count.js +9 -9
  538. package/src/database/record/acts-as-list.js +15 -15
  539. package/src/database/record/attachments/handle.js +2 -2
  540. package/src/database/record/attachments/normalize-input.js +12 -12
  541. package/src/database/record/attachments/storage-drivers/s3.js +6 -6
  542. package/src/database/record/attachments/store.js +13 -13
  543. package/src/database/record/index.js +115 -121
  544. package/src/database/record/instance-relationships/base.js +11 -11
  545. package/src/database/record/instance-relationships/belongs-to.js +3 -3
  546. package/src/database/record/instance-relationships/has-many.js +8 -8
  547. package/src/database/record/instance-relationships/has-one.js +7 -7
  548. package/src/database/record/relationships/base.js +2 -2
  549. package/src/database/record/state-machine.js +7 -7
  550. package/src/database/record/validators/presence.js +1 -1
  551. package/src/database/record/validators/uniqueness.js +5 -5
  552. package/src/database/table-data/index.js +4 -4
  553. package/src/environment-handlers/base.js +2 -2
  554. package/src/environment-handlers/browser.js +7 -7
  555. package/src/environment-handlers/node/cli/commands/cli-command-context.js +1 -1
  556. package/src/environment-handlers/node/cli/commands/console.js +4 -4
  557. package/src/environment-handlers/node/cli/commands/db/schema/dump.js +1 -1
  558. package/src/environment-handlers/node/cli/commands/db/schema/load.js +3 -3
  559. package/src/environment-handlers/node/cli/commands/generate/frontend-models.js +55 -17
  560. package/src/environment-handlers/node.js +6 -6
  561. package/src/frontend-model-controller.js +81 -82
  562. package/src/frontend-model-resource/base-resource.js +78 -115
  563. package/src/frontend-models/base.js +162 -149
  564. package/src/frontend-models/clear-pending-debounced-callback.js +1 -1
  565. package/src/frontend-models/event-hook-models.js +2 -2
  566. package/src/frontend-models/outgoing-event-buffer.js +2 -2
  567. package/src/frontend-models/preloader.js +5 -5
  568. package/src/frontend-models/query.js +43 -38
  569. package/src/frontend-models/resource-definition.js +6 -6
  570. package/src/frontend-models/transport-serialization.js +11 -11
  571. package/src/frontend-models/use-destroyed-event.js +10 -10
  572. package/src/frontend-models/use-model-class-event.js +11 -11
  573. package/src/frontend-models/use-updated-event.js +11 -11
  574. package/src/frontend-models/websocket-channel.js +26 -17
  575. package/src/frontend-models/websocket-publishers.js +9 -9
  576. package/src/http-client/response.js +2 -2
  577. package/src/http-server/client/index.js +8 -8
  578. package/src/http-server/client/params-to-object.js +10 -10
  579. package/src/http-server/client/request-buffer/form-data-part.js +2 -2
  580. package/src/http-server/client/request-buffer/index.js +8 -8
  581. package/src/http-server/client/request-parser.js +3 -3
  582. package/src/http-server/client/request-runner.js +6 -6
  583. package/src/http-server/client/request-timing.js +5 -5
  584. package/src/http-server/client/request.js +1 -1
  585. package/src/http-server/client/response.js +5 -5
  586. package/src/http-server/client/websocket-request.js +4 -4
  587. package/src/http-server/client/websocket-session.js +18 -18
  588. package/src/http-server/development-reloader.js +5 -5
  589. package/src/http-server/index.js +12 -12
  590. package/src/http-server/remote-address.js +4 -4
  591. package/src/http-server/server-client.js +3 -3
  592. package/src/http-server/server-lock.js +4 -4
  593. package/src/http-server/websocket-channel-subscribers.js +3 -3
  594. package/src/http-server/websocket-channel.js +1 -1
  595. package/src/http-server/websocket-connection.js +1 -1
  596. package/src/http-server/websocket-event-log-store.js +6 -6
  597. package/src/http-server/websocket-events-host.js +2 -2
  598. package/src/http-server/worker-handler/in-process.js +7 -7
  599. package/src/http-server/worker-handler/index.js +4 -4
  600. package/src/http-server/worker-handler/worker-thread.js +3 -3
  601. package/src/logger/outputs/array-output.js +3 -3
  602. package/src/logger/outputs/console-output.js +1 -1
  603. package/src/logger/outputs/file-output.js +4 -4
  604. package/src/logger/outputs/stdout-output.js +1 -1
  605. package/src/logger.js +10 -10
  606. package/src/mailer/backends/smtp.js +3 -3
  607. package/src/mailer/base.js +8 -8
  608. package/src/mailer/delivery.js +4 -4
  609. package/src/plugins/sqljs-wasm-route-controller.js +1 -1
  610. package/src/routes/base-route.js +6 -6
  611. package/src/routes/basic-route.js +1 -1
  612. package/src/routes/hooks/frontend-model-command-route-hook.js +1 -1
  613. package/src/routes/index.js +1 -1
  614. package/src/routes/plugin-routes.js +1 -1
  615. package/src/routes/resolver.js +11 -11
  616. package/src/routes/resource-route.js +1 -1
  617. package/src/testing/browser-frontend-model-event-hook-scenarios.js +7 -7
  618. package/src/testing/expect-utils.js +11 -11
  619. package/src/testing/expect.js +7 -7
  620. package/src/testing/test-files-finder.js +8 -8
  621. package/src/testing/test-filter-parser.js +2 -2
  622. package/src/testing/test-runner.js +16 -16
  623. package/src/testing/test-suite-splitter.js +1 -1
  624. package/src/testing/test.js +15 -15
  625. package/src/utils/backtrace-cleaner.js +1 -1
  626. package/src/utils/format-value.js +1 -1
  627. package/src/utils/model-scope.js +1 -1
  628. package/src/utils/ransack.js +26 -26
  629. package/src/utils/with-tracked-stack-async-hooks.js +7 -7
  630. package/src/utils/with-tracked-stack.js +3 -3
@@ -35,11 +35,11 @@ export default class VelociousDatabaseQueryPreloaderBelongsTo {
35
35
 
36
36
  /**
37
37
  * Satisfied targets.
38
- @type {import("../../record/index.js").default[]} */
38
+ * @type {import("../../record/index.js").default[]} */
39
39
  const satisfiedTargets = []
40
40
  /**
41
41
  * Models to load.
42
- @type {import("../../record/index.js").default[]} */
42
+ * @type {import("../../record/index.js").default[]} */
43
43
  const modelsToLoad = []
44
44
 
45
45
  for (const model of this.models) {
@@ -48,7 +48,7 @@ export default class VelociousDatabaseQueryPreloaderBelongsTo {
48
48
  if (this.selection.isSatisfied({instanceRelationship, targetModelClass, mappingColumns: [primaryKey]})) {
49
49
  const loaded = /**
50
50
  * Narrows the runtime value to the documented type.
51
- @type {import("../../record/index.js").default | undefined} */ (instanceRelationship.getLoadedOrUndefined())
51
+ * @type {import("../../record/index.js").default | undefined} */ (instanceRelationship.getLoadedOrUndefined())
52
52
 
53
53
  if (loaded) satisfiedTargets.push(loaded)
54
54
  } else {
@@ -60,13 +60,13 @@ export default class VelociousDatabaseQueryPreloaderBelongsTo {
60
60
 
61
61
  /**
62
62
  * Foreign key values.
63
- @type {Array<number | string>} */
63
+ * @type {Array<number | string>} */
64
64
  const foreignKeyValues = []
65
65
 
66
66
  for (const model of modelsToLoad) {
67
67
  const foreignKeyValue = /**
68
68
  * Narrows the runtime value to the documented type.
69
- @type {string | number | null | undefined} */ (model.readColumn(foreignKey))
69
+ * @type {string | number | null | undefined} */ (model.readColumn(foreignKey))
70
70
 
71
71
  // Skip null/undefined foreign keys: a belongsTo with no foreign key has no
72
72
  // target, and including them would serialize to e.g. `IN (null)` which
@@ -78,12 +78,12 @@ export default class VelociousDatabaseQueryPreloaderBelongsTo {
78
78
 
79
79
  /**
80
80
  * Target models by id.
81
- @type {Record<string, import("../../record/index.js").default>} */
81
+ * @type {Record<string, import("../../record/index.js").default>} */
82
82
  const targetModelsById = {}
83
83
 
84
84
  /**
85
85
  * Target models.
86
- @type {import("../../record/index.js").default[]} */
86
+ * @type {import("../../record/index.js").default[]} */
87
87
  let targetModels = []
88
88
 
89
89
  // Only query when at least one model has a non-null foreign key.
@@ -92,7 +92,7 @@ export default class VelociousDatabaseQueryPreloaderBelongsTo {
92
92
 
93
93
  /**
94
94
  * Where args.
95
- @type {Record<string, string | number | Array<string | number>>} */
95
+ * @type {Record<string, string | number | Array<string | number>>} */
96
96
  const whereArgs = {}
97
97
 
98
98
  whereArgs[primaryKey] = foreignKeyValues
@@ -108,7 +108,7 @@ export default class VelociousDatabaseQueryPreloaderBelongsTo {
108
108
  for (const targetModel of targetModels) {
109
109
  const primaryKeyValue = /**
110
110
  * Narrows the runtime value to the documented type.
111
- @type {string | number} */ (targetModel.readColumn(primaryKey))
111
+ * @type {string | number} */ (targetModel.readColumn(primaryKey))
112
112
 
113
113
  targetModelsById[primaryKeyValue] = targetModel
114
114
  }
@@ -118,7 +118,7 @@ export default class VelociousDatabaseQueryPreloaderBelongsTo {
118
118
  for (const model of modelsToLoad) {
119
119
  const foreignKeyValue = /**
120
120
  * Narrows the runtime value to the documented type.
121
- @type {string | number} */ (model.readColumn(foreignKey))
121
+ * @type {string | number} */ (model.readColumn(foreignKey))
122
122
  const targetModel = targetModelsById[foreignKeyValue]
123
123
  const modelRelationship = model.getRelationshipByName(relationshipName)
124
124
 
@@ -144,37 +144,37 @@ export default class VelociousDatabaseQueryPreloaderBelongsTo {
144
144
 
145
145
  /**
146
146
  * Model meta.
147
- @type {{foreignKeyValue: number | string | undefined, model: import("../../record/index.js").default, targetType: string | undefined}[]} */
147
+ * @type {{foreignKeyValue: number | string | undefined, model: import("../../record/index.js").default, targetType: string | undefined}[]} */
148
148
  const modelMeta = []
149
149
 
150
150
  /**
151
151
  * Satisfied targets.
152
- @type {import("../../record/index.js").default[]} */
152
+ * @type {import("../../record/index.js").default[]} */
153
153
  const satisfiedTargets = []
154
154
 
155
155
  /**
156
156
  * Target models by class name.
157
- @type {Record<string, import("../../record/index.js").default[]>} */
157
+ * @type {Record<string, import("../../record/index.js").default[]>} */
158
158
  const targetModelsByClassName = {}
159
159
 
160
160
  for (const model of this.models) {
161
161
  const targetType = /**
162
162
  * Narrows the runtime value to the documented type.
163
- @type {string | undefined} */ (model.readColumn(typeColumn))
163
+ * @type {string | undefined} */ (model.readColumn(typeColumn))
164
164
  const instanceRelationship = model.getRelationshipByName(relationshipName)
165
165
  const targetModelClass = targetType ? configuration.getModelClass(targetType) : undefined
166
166
 
167
167
  if (targetModelClass && this.selection.isSatisfied({instanceRelationship, targetModelClass, mappingColumns: [primaryKey]})) {
168
168
  const loaded = /**
169
169
  * Narrows the runtime value to the documented type.
170
- @type {import("../../record/index.js").default | undefined} */ (instanceRelationship.getLoadedOrUndefined())
170
+ * @type {import("../../record/index.js").default | undefined} */ (instanceRelationship.getLoadedOrUndefined())
171
171
 
172
172
  if (loaded) {
173
173
  satisfiedTargets.push(loaded)
174
174
 
175
175
  const className = /**
176
176
  * Narrows the runtime value to the documented type.
177
- @type {typeof import("../../record/index.js").default} */ (loaded.constructor).getModelName()
177
+ * @type {typeof import("../../record/index.js").default} */ (loaded.constructor).getModelName()
178
178
 
179
179
  if (!targetModelsByClassName[className]) targetModelsByClassName[className] = []
180
180
  targetModelsByClassName[className].push(loaded)
@@ -186,7 +186,7 @@ export default class VelociousDatabaseQueryPreloaderBelongsTo {
186
186
  modelMeta.push({
187
187
  foreignKeyValue: /**
188
188
  * Narrows the runtime value to the documented type.
189
- @type {string | number | undefined} */ (model.readColumn(foreignKey)),
189
+ * @type {string | number | undefined} */ (model.readColumn(foreignKey)),
190
190
  model,
191
191
  targetType
192
192
  })
@@ -194,7 +194,7 @@ export default class VelociousDatabaseQueryPreloaderBelongsTo {
194
194
 
195
195
  /**
196
196
  * Foreign key values by type.
197
- @type {Record<string, Array<number | string>>} */
197
+ * @type {Record<string, Array<number | string>>} */
198
198
  const foreignKeyValuesByType = {}
199
199
 
200
200
  for (const meta of modelMeta) {
@@ -207,12 +207,12 @@ export default class VelociousDatabaseQueryPreloaderBelongsTo {
207
207
 
208
208
  /**
209
209
  * Target models by type and id.
210
- @type {Record<string, Record<number | string, import("../../record/index.js").default>>} */
210
+ * @type {Record<string, Record<number | string, import("../../record/index.js").default>>} */
211
211
  const targetModelsByTypeAndId = {}
212
212
 
213
213
  /**
214
214
  * Target models.
215
- @type {import("../../record/index.js").default[]} */
215
+ * @type {import("../../record/index.js").default[]} */
216
216
  const targetModels = []
217
217
 
218
218
  for (const targetType in foreignKeyValuesByType) {
@@ -222,7 +222,7 @@ export default class VelociousDatabaseQueryPreloaderBelongsTo {
222
222
 
223
223
  /**
224
224
  * Where args.
225
- @type {Record<string, string | number | Array<string | number>>} */
225
+ * @type {Record<string, string | number | Array<string | number>>} */
226
226
  const whereArgs = {}
227
227
 
228
228
  whereArgs[primaryKey] = foreignKeyValuesByType[targetType]
@@ -246,7 +246,7 @@ export default class VelociousDatabaseQueryPreloaderBelongsTo {
246
246
  for (const targetModel of foundTargetModels) {
247
247
  const primaryKeyValue = /**
248
248
  * Narrows the runtime value to the documented type.
249
- @type {string | number} */ (targetModel.readColumn(primaryKey))
249
+ * @type {string | number} */ (targetModel.readColumn(primaryKey))
250
250
 
251
251
  targetModelsByTypeAndId[targetType][primaryKeyValue] = targetModel
252
252
  }
@@ -72,11 +72,11 @@ export default class VelociousDatabaseQueryPreloaderHasMany {
72
72
  const relationshipName = this.relationship.getRelationshipName()
73
73
  /**
74
74
  * Models to load.
75
- @type {import("../../record/index.js").default[]} */
75
+ * @type {import("../../record/index.js").default[]} */
76
76
  const modelsToLoad = []
77
77
  /**
78
78
  * Satisfied targets.
79
- @type {import("../../record/index.js").default[]} */
79
+ * @type {import("../../record/index.js").default[]} */
80
80
  const satisfiedTargets = []
81
81
 
82
82
  for (const model of this.models) {
@@ -107,7 +107,7 @@ export default class VelociousDatabaseQueryPreloaderHasMany {
107
107
 
108
108
  const throughRelationshipName = /**
109
109
  * Narrows the runtime value to the documented type.
110
- @type {string} */ (this.relationship.through)
110
+ * @type {string} */ (this.relationship.through)
111
111
  const parentModelClass = this.relationship.getModelClass()
112
112
  const throughRelationship = parentModelClass.getRelationshipByName(throughRelationshipName)
113
113
  const throughModelClass = throughRelationship.getTargetModelClass()
@@ -132,23 +132,23 @@ export default class VelociousDatabaseQueryPreloaderHasMany {
132
132
 
133
133
  /**
134
134
  * Models primary key values.
135
- @type {Array<number | string>} */
135
+ * @type {Array<number | string>} */
136
136
  const modelsPrimaryKeyValues = []
137
137
 
138
138
  /**
139
139
  * Models by primary key value.
140
- @type {Record<number | string, Array<import("../../record/index.js").default>>} */
140
+ * @type {Record<number | string, Array<import("../../record/index.js").default>>} */
141
141
  const modelsByPrimaryKeyValue = {}
142
142
 
143
143
  /**
144
144
  * Preload collections.
145
- @type {Record<number | string, Array<import("../../record/index.js").default>>} */
145
+ * @type {Record<number | string, Array<import("../../record/index.js").default>>} */
146
146
  const preloadCollections = {}
147
147
 
148
148
  for (const model of modelsToLoad) {
149
149
  const primaryKeyValue = /**
150
150
  * Narrows the runtime value to the documented type.
151
- @type {string | number} */ (model.readColumn(primaryKey))
151
+ * @type {string | number} */ (model.readColumn(primaryKey))
152
152
 
153
153
  preloadCollections[primaryKeyValue] = []
154
154
 
@@ -165,21 +165,21 @@ export default class VelociousDatabaseQueryPreloaderHasMany {
165
165
 
166
166
  /**
167
167
  * Parent to target ids.
168
- @type {Record<string | number, Array<string | number>>} */
168
+ * @type {Record<string | number, Array<string | number>>} */
169
169
  const parentToTargetIds = {}
170
170
 
171
171
  /**
172
172
  * All target ids.
173
- @type {Set<string | number>} */
173
+ * @type {Set<string | number>} */
174
174
  const allTargetIds = new Set()
175
175
 
176
176
  for (const throughModel of throughModels) {
177
177
  const parentId = /**
178
178
  * Narrows the runtime value to the documented type.
179
- @type {string | number} */ (throughModel.readColumn(throughForeignKey))
179
+ * @type {string | number} */ (throughModel.readColumn(throughForeignKey))
180
180
  const throughId = /**
181
181
  * Narrows the runtime value to the documented type.
182
- @type {string | number} */ (throughModel.readColumn(throughModelClass.primaryKey()))
182
+ * @type {string | number} */ (throughModel.readColumn(throughModelClass.primaryKey()))
183
183
 
184
184
  if (!(parentId in parentToTargetIds)) parentToTargetIds[parentId] = []
185
185
 
@@ -190,7 +190,7 @@ export default class VelociousDatabaseQueryPreloaderHasMany {
190
190
  // Step 2: Load target models by the foreign key that points to the through table
191
191
  /**
192
192
  * Target models.
193
- @type {import("../../record/index.js").default[]} */
193
+ * @type {import("../../record/index.js").default[]} */
194
194
  let targetModels = []
195
195
 
196
196
  if (allTargetIds.size > 0) {
@@ -204,13 +204,13 @@ export default class VelociousDatabaseQueryPreloaderHasMany {
204
204
  // Step 3: Index target models by their foreign key (maps to through model ID)
205
205
  /**
206
206
  * Target models by foreign key.
207
- @type {Record<string | number, Array<import("../../record/index.js").default>>} */
207
+ * @type {Record<string | number, Array<import("../../record/index.js").default>>} */
208
208
  const targetModelsByForeignKey = {}
209
209
 
210
210
  for (const targetModel of targetModels) {
211
211
  const fkValue = /**
212
212
  * Narrows the runtime value to the documented type.
213
- @type {string | number} */ (targetModel.readColumn(targetForeignKey))
213
+ * @type {string | number} */ (targetModel.readColumn(targetForeignKey))
214
214
 
215
215
  if (!(fkValue in targetModelsByForeignKey)) targetModelsByForeignKey[fkValue] = []
216
216
 
@@ -270,23 +270,23 @@ export default class VelociousDatabaseQueryPreloaderHasMany {
270
270
 
271
271
  /**
272
272
  * Models primary key values.
273
- @type {Array<number | string>} */
273
+ * @type {Array<number | string>} */
274
274
  const modelsPrimaryKeyValues = []
275
275
 
276
276
  /**
277
277
  * Models by primary key value.
278
- @type {Record<number | string, Array<import("../../record/index.js").default>>} */
278
+ * @type {Record<number | string, Array<import("../../record/index.js").default>>} */
279
279
  const modelsByPrimaryKeyValue = {}
280
280
 
281
281
  /**
282
282
  * Preload collections.
283
- @type {Record<number | string, Array<import("../../record/index.js").default>>} */
283
+ * @type {Record<number | string, Array<import("../../record/index.js").default>>} */
284
284
  const preloadCollections = {}
285
285
 
286
286
  for (const model of modelsToLoad) {
287
287
  const primaryKeyValue = /**
288
288
  * Narrows the runtime value to the documented type.
289
- @type {string | number} */ (model.readColumn(primaryKey))
289
+ * @type {string | number} */ (model.readColumn(primaryKey))
290
290
 
291
291
  preloadCollections[primaryKeyValue] = []
292
292
 
@@ -298,7 +298,7 @@ export default class VelociousDatabaseQueryPreloaderHasMany {
298
298
 
299
299
  /**
300
300
  * Where args.
301
- @type {Record<string, string | number | Array<string | number>>} */
301
+ * @type {Record<string, string | number | Array<string | number>>} */
302
302
  const whereArgs = {}
303
303
 
304
304
  whereArgs[foreignKey] = modelsPrimaryKeyValues
@@ -321,7 +321,7 @@ export default class VelociousDatabaseQueryPreloaderHasMany {
321
321
  for (const targetModel of targetModels) {
322
322
  const foreignKeyValue = /**
323
323
  * Narrows the runtime value to the documented type.
324
- @type {string | number} */ (targetModel.readColumn(foreignKey))
324
+ * @type {string | number} */ (targetModel.readColumn(foreignKey))
325
325
 
326
326
  preloadCollections[foreignKeyValue].push(targetModel)
327
327
  }
@@ -23,12 +23,12 @@ export default class VelociousDatabaseQueryPreloaderHasOne {
23
23
  async run() {
24
24
  /**
25
25
  * Models primary key values.
26
- @type {Array<number | string>} */
26
+ * @type {Array<number | string>} */
27
27
  const modelsPrimaryKeyValues = []
28
28
 
29
29
  /**
30
30
  * Models by primary key value.
31
- @type {Record<number | string, Array<import("../../record/index.js").default>>} */
31
+ * @type {Record<number | string, Array<import("../../record/index.js").default>>} */
32
32
  const modelsByPrimaryKeyValue = {}
33
33
 
34
34
  const foreignKey = this.relationship.getForeignKey()
@@ -41,12 +41,12 @@ export default class VelociousDatabaseQueryPreloaderHasOne {
41
41
 
42
42
  /**
43
43
  * Preload collections.
44
- @type {Record<number | string, import("../../record/index.js").default | undefined>} */
44
+ * @type {Record<number | string, import("../../record/index.js").default | undefined>} */
45
45
  const preloadCollections = {}
46
46
 
47
47
  /**
48
48
  * Satisfied targets.
49
- @type {import("../../record/index.js").default[]} */
49
+ * @type {import("../../record/index.js").default[]} */
50
50
  const satisfiedTargets = []
51
51
 
52
52
  for (const model of this.models) {
@@ -55,7 +55,7 @@ export default class VelociousDatabaseQueryPreloaderHasOne {
55
55
  if (this.selection.isSatisfied({instanceRelationship, targetModelClass, mappingColumns: [foreignKey]})) {
56
56
  const loaded = /**
57
57
  * Narrows the runtime value to the documented type.
58
- @type {import("../../record/index.js").default | undefined} */ (instanceRelationship.getLoadedOrUndefined())
58
+ * @type {import("../../record/index.js").default | undefined} */ (instanceRelationship.getLoadedOrUndefined())
59
59
 
60
60
  if (loaded) satisfiedTargets.push(loaded)
61
61
  continue
@@ -63,7 +63,7 @@ export default class VelociousDatabaseQueryPreloaderHasOne {
63
63
 
64
64
  const primaryKeyValue = /**
65
65
  * Narrows the runtime value to the documented type.
66
- @type {string | number} */ (model.readColumn(primaryKey))
66
+ * @type {string | number} */ (model.readColumn(primaryKey))
67
67
 
68
68
  preloadCollections[primaryKeyValue] = undefined
69
69
 
@@ -77,7 +77,7 @@ export default class VelociousDatabaseQueryPreloaderHasOne {
77
77
 
78
78
  /**
79
79
  * Where args.
80
- @type {Record<string, string | number | Array<string | number>>} */
80
+ * @type {Record<string, string | number | Array<string | number>>} */
81
81
  const whereArgs = {}
82
82
 
83
83
  whereArgs[foreignKey] = modelsPrimaryKeyValues
@@ -101,7 +101,7 @@ export default class VelociousDatabaseQueryPreloaderHasOne {
101
101
  for (const targetModel of targetModels) {
102
102
  const foreignKeyValue = /**
103
103
  * Narrows the runtime value to the documented type.
104
- @type {string | number} */ (targetModel.readColumn(foreignKey))
104
+ * @type {string | number} */ (targetModel.readColumn(foreignKey))
105
105
 
106
106
  preloadCollections[foreignKeyValue] = targetModel
107
107
  }
@@ -70,13 +70,13 @@ export default class VelociousDatabaseQueryPreloaderSelection {
70
70
  if (narrowing) {
71
71
  const selects = [...new Set([...narrowing, ...mappingColumns, ...(extra || [])])]
72
72
 
73
- return /** Narrows the runtime value to the documented type. @type {T} */ (query.select(selects))
73
+ return /** @type {T} */ (query.select(selects))
74
74
  }
75
75
 
76
76
  if (extra) {
77
77
  const allColumns = `${query.driver.quoteTable(targetModelClass.tableName())}.*`
78
78
 
79
- return /** Narrows the runtime value to the documented type. @type {T} */ (query.select([allColumns, ...extra]))
79
+ return /** @type {T} */ (query.select([allColumns, ...extra]))
80
80
  }
81
81
 
82
82
  return query
@@ -129,7 +129,7 @@ export default class VelociousDatabaseQueryPreloaderSelection {
129
129
  const extra = this._extraFor(targetModelClass)
130
130
  /**
131
131
  * Columns.
132
- @type {string[]} */
132
+ * @type {string[]} */
133
133
  const columns = []
134
134
 
135
135
  if (narrowing) {
@@ -21,7 +21,7 @@ function normalizeNestedPreload(preload) {
21
21
  if (Array.isArray(preload)) {
22
22
  /**
23
23
  * Result.
24
- @type {import("../query/index.js").NestedPreloadRecord} */
24
+ * @type {import("../query/index.js").NestedPreloadRecord} */
25
25
  const result = {}
26
26
 
27
27
  for (const entry of preload) {
@@ -50,7 +50,7 @@ function normalizeNestedPreload(preload) {
50
50
  if (preload && typeof preload == "object") {
51
51
  /**
52
52
  * Result.
53
- @type {import("../query/index.js").NestedPreloadRecord} */
53
+ * @type {import("../query/index.js").NestedPreloadRecord} */
54
54
  const result = {}
55
55
 
56
56
  for (const [key, value] of Object.entries(preload)) {
@@ -90,17 +90,17 @@ export default class VelociousDatabaseQueryPreloader {
90
90
 
91
91
  const modelClass = /**
92
92
  * Narrows the runtime value to the documented type.
93
- @type {typeof import("../record/index.js").default} */ (models[0].constructor)
93
+ * @type {typeof import("../record/index.js").default} */ (models[0].constructor)
94
94
  const isQuery = Boolean(queryOrSpec) && typeof queryOrSpec == "object" && "_preload" in queryOrSpec
95
95
  // Reuse the query builder's preload/select normalization for raw specs
96
96
  // instead of duplicating it here.
97
97
  const query = isQuery
98
98
  ? /**
99
99
  * Narrows the runtime value to the documented type.
100
- @type {import("./model-class-query.js").default} */ (queryOrSpec)
100
+ * @type {import("./model-class-query.js").default} */ (queryOrSpec)
101
101
  : modelClass.preload(/**
102
102
  * Narrows the runtime value to the documented type.
103
- @type {?} */ (queryOrSpec))
103
+ * @type {?} */ (queryOrSpec))
104
104
 
105
105
  const preloader = new VelociousDatabaseQueryPreloader({
106
106
  modelClass,
@@ -143,21 +143,21 @@ export default class VelociousDatabaseQueryPreloader {
143
143
  if (relationship.getType() == "belongsTo") {
144
144
  const belongsToRelationship = /**
145
145
  * Narrows the runtime value to the documented type.
146
- @type {import("../record/relationships/belongs-to.js").default} */ (relationship)
146
+ * @type {import("../record/relationships/belongs-to.js").default} */ (relationship)
147
147
  const hasManyPreloader = new BelongsToPreloader({models: this.models, relationship: belongsToRelationship, selection: this.selection})
148
148
 
149
149
  preloadResult = await hasManyPreloader.run()
150
150
  } else if (relationship.getType() == "hasMany") {
151
151
  const hasManyRelationship = /**
152
152
  * Narrows the runtime value to the documented type.
153
- @type {import("../record/relationships/has-many.js").default} */ (relationship)
153
+ * @type {import("../record/relationships/has-many.js").default} */ (relationship)
154
154
  const hasManyPreloader = new HasManyPreloader({models: this.models, relationship: hasManyRelationship, selection: this.selection})
155
155
 
156
156
  preloadResult = await hasManyPreloader.run()
157
157
  } else if (relationship.getType() == "hasOne") {
158
158
  const hasOneRelationship = /**
159
159
  * Narrows the runtime value to the documented type.
160
- @type {import("../record/relationships/has-one.js").default} */ (relationship)
160
+ * @type {import("../record/relationships/has-one.js").default} */ (relationship)
161
161
  const hasOnePreloader = new HasOnePreloader({models: this.models, relationship: hasOneRelationship, selection: this.selection})
162
162
 
163
163
  preloadResult = await hasOnePreloader.run()
@@ -59,7 +59,7 @@ export function normalizeQueryDataSpec(spec, chain = []) {
59
59
  if (Array.isArray(spec)) {
60
60
  /**
61
61
  * Entries.
62
- @type {QueryDataEntry[]} */
62
+ * @type {QueryDataEntry[]} */
63
63
  const entries = []
64
64
 
65
65
  for (const item of spec) {
@@ -71,7 +71,7 @@ export function normalizeQueryDataSpec(spec, chain = []) {
71
71
  if (isPlainObject(item)) {
72
72
  for (const nested of normalizeQueryDataSpec(/**
73
73
  * Narrows the runtime value to the documented type.
74
- @type {?} */ (item), chain)) {
74
+ * @type {?} */ (item), chain)) {
75
75
  entries.push(nested)
76
76
  }
77
77
  continue
@@ -86,7 +86,7 @@ export function normalizeQueryDataSpec(spec, chain = []) {
86
86
  if (isPlainObject(spec)) {
87
87
  /**
88
88
  * Entries.
89
- @type {QueryDataEntry[]} */
89
+ * @type {QueryDataEntry[]} */
90
90
  const entries = []
91
91
 
92
92
  for (const [key, value] of Object.entries(spec)) {
@@ -100,7 +100,7 @@ export function normalizeQueryDataSpec(spec, chain = []) {
100
100
  if (typeof value === "string" || Array.isArray(value) || isPlainObject(value)) {
101
101
  for (const nested of normalizeQueryDataSpec(/**
102
102
  * Narrows the runtime value to the documented type.
103
- @type {?} */ (value), [...chain, key])) {
103
+ * @type {?} */ (value), [...chain, key])) {
104
104
  entries.push(nested)
105
105
  }
106
106
  continue
@@ -128,7 +128,7 @@ function buildNestedJoinDescriptor(chain) {
128
128
 
129
129
  /**
130
130
  * Obj.
131
- @type {Record<string, ?>} */
131
+ * @type {Record<string, ?>} */
132
132
  const obj = {}
133
133
  let cursor = obj
134
134
 
@@ -195,7 +195,7 @@ export async function runQueryData({rootModelClass, rootModels, entries}) {
195
195
  const primaryKey = rootModelClass.primaryKey()
196
196
  const rootIds = rootModels.map((model) => /**
197
197
  * Narrows the runtime value to the documented type.
198
- @type {string | number} */ (model.readColumn(primaryKey)))
198
+ * @type {string | number} */ (model.readColumn(primaryKey)))
199
199
 
200
200
  for (const entry of entries) {
201
201
  await runEntry({entry, primaryKey, rootIds, rootModelClass, rootModels})
@@ -239,7 +239,7 @@ async function runEntry({entry, primaryKey, rootIds, rootModelClass, rootModels}
239
239
 
240
240
  /**
241
241
  * Root where.
242
- @type {Record<string, ?>} */
242
+ * @type {Record<string, ?>} */
243
243
  const rootWhere = {}
244
244
  rootWhere[primaryKey] = rootIds
245
245
  query.where(rootWhere)
@@ -272,7 +272,7 @@ async function runEntry({entry, primaryKey, rootIds, rootModelClass, rootModels}
272
272
 
273
273
  const rows = /**
274
274
  * Narrows the runtime value to the documented type.
275
- @type {Array<Record<string, ?>>} */ (await query._executeQuery())
275
+ * @type {Array<Record<string, ?>>} */ (await query._executeQuery())
276
276
  const byParent = new Map()
277
277
 
278
278
  for (const row of rows) {
@@ -286,7 +286,7 @@ async function runEntry({entry, primaryKey, rootIds, rootModelClass, rootModels}
286
286
  for (const model of rootModels) {
287
287
  const modelId = /**
288
288
  * Narrows the runtime value to the documented type.
289
- @type {string | number} */ (model.readColumn(primaryKey))
289
+ * @type {string | number} */ (model.readColumn(primaryKey))
290
290
  // Driver-type tolerance: MySQL can return PKs as strings even when
291
291
  // the column is numeric. Fall back to a string lookup so results
292
292
  // still land on the right model.
@@ -25,10 +25,10 @@ function normalizeRelationshipWhereOperator(operator) {
25
25
  ">=": "gteq"
26
26
  }
27
27
 
28
- return /** Narrows the runtime value to the documented type. @type {"eq" | "notEq" | "gt" | "gteq" | "lt" | "lteq" | "like"} */ (
28
+ return /** @type {"eq" | "notEq" | "gt" | "gteq" | "lt" | "lteq" | "like"} */ (
29
29
  operatorAliases[/**
30
30
  * Narrows the runtime value to the documented type.
31
- @type {"<" | "<=" | ">" | ">="} */ (operator)] || operator
31
+ * @type {"<" | "<=" | ">" | ">="} */ (operator)] || operator
32
32
  )
33
33
  }
34
34
 
@@ -68,7 +68,7 @@ export default class VelociousDatabaseQueryWhereModelClassHash extends WhereBase
68
68
 
69
69
  const modelQuery = /**
70
70
  * Narrows the runtime value to the documented type.
71
- @type {import("./model-class-query.js").default} */ (this.query)
71
+ * @type {import("./model-class-query.js").default} */ (this.query)
72
72
  const baseTableName = this.qualifyBaseTable
73
73
  ? modelQuery.getTableReferenceForJoin()
74
74
  : undefined
@@ -136,7 +136,7 @@ export default class VelociousDatabaseQueryWhereModelClassHash extends WhereBase
136
136
 
137
137
  /**
138
138
  * Normalized.
139
- @type {Array<[string, "eq" | "notEq" | "gt" | "gteq" | "lt" | "lteq" | "like", unknown]>} */
139
+ * @type {Array<[string, "eq" | "notEq" | "gt" | "gteq" | "lt" | "lteq" | "like", unknown]>} */
140
140
  const normalized = []
141
141
  /**
142
142
  * Add condition.
@@ -146,7 +146,7 @@ export default class VelociousDatabaseQueryWhereModelClassHash extends WhereBase
146
146
  if (this._isRelationshipWhereOperatorTuple(conditionValue)) {
147
147
  const tuple = /**
148
148
  * Narrows the runtime value to the documented type.
149
- @type {[string, "eq" | "notEq" | "gt" | "gteq" | "lt" | "lteq" | "like" | ">" | ">=" | "<" | "<=", unknown, ...Array<unknown>]} */ (conditionValue)
149
+ * @type {[string, "eq" | "notEq" | "gt" | "gteq" | "lt" | "lteq" | "like" | ">" | ">=" | "<" | "<=", unknown, ...Array<unknown>]} */ (conditionValue)
150
150
  const normalizedOperator = normalizeRelationshipWhereOperator(tuple[1])
151
151
 
152
152
  normalized.push([
@@ -395,7 +395,7 @@ export default class VelociousDatabaseQueryWhereModelClassHash extends WhereBase
395
395
  const options = this.getOptions()
396
396
  const modelQuery = /**
397
397
  * Narrows the runtime value to the documented type.
398
- @type {import("./model-class-query.js").default} */ (this.query)
398
+ * @type {import("./model-class-query.js").default} */ (this.query)
399
399
  let sql = ""
400
400
 
401
401
  for (const whereKey in hash) {
@@ -443,7 +443,7 @@ export default class VelociousDatabaseQueryWhereModelClassHash extends WhereBase
443
443
 
444
444
  const nestedHash = /**
445
445
  * Narrows the runtime value to the documented type.
446
- @type {WhereHash} */ (whereValue)
446
+ * @type {WhereHash} */ (whereValue)
447
447
  const nestedPath = path.concat([whereKey])
448
448
  const nestedTableName = modelQuery.getTableReferenceForJoin(...nestedPath)
449
449