velocious 1.0.449 → 1.0.451

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 (636) hide show
  1. package/README.md +1 -1
  2. package/build/application.js +4 -4
  3. package/build/authorization/ability.js +8 -8
  4. package/build/authorization/base-resource.js +4 -4
  5. package/build/background-jobs/cron-expression.js +1 -1
  6. package/build/background-jobs/forked-runner-child.js +1 -1
  7. package/build/background-jobs/job-registry.js +1 -1
  8. package/build/background-jobs/job-runner.js +1 -1
  9. package/build/background-jobs/job.js +1 -1
  10. package/build/background-jobs/json-socket.js +4 -4
  11. package/build/background-jobs/main.js +21 -21
  12. package/build/background-jobs/scheduler.js +7 -7
  13. package/build/background-jobs/store.js +7 -7
  14. package/build/background-jobs/web/controller.js +2 -2
  15. package/build/background-jobs/worker.js +12 -12
  16. package/build/beacon/client.js +11 -8
  17. package/build/beacon/in-process-broker.js +2 -2
  18. package/build/beacon/in-process-client.js +2 -2
  19. package/build/beacon/server.js +3 -3
  20. package/build/cli/browser-cli.js +1 -1
  21. package/build/cli/commands/db/base-command.js +2 -2
  22. package/build/cli/index.js +2 -2
  23. package/build/cli/tenant-database-command-helper.js +3 -3
  24. package/build/cli/use-browser-cli.js +1 -1
  25. package/build/configuration-types.js +3 -1
  26. package/build/configuration.js +38 -38
  27. package/build/controller.js +8 -8
  28. package/build/current-configuration.js +1 -1
  29. package/build/database/annotations-async-hooks.js +2 -2
  30. package/build/database/annotations.js +3 -3
  31. package/build/database/drivers/base-column.js +1 -1
  32. package/build/database/drivers/base-foreign-key.js +1 -1
  33. package/build/database/drivers/base-table.js +1 -1
  34. package/build/database/drivers/base.js +10 -10
  35. package/build/database/drivers/mssql/index.js +1 -1
  36. package/build/database/drivers/mssql/table.js +1 -1
  37. package/build/database/drivers/mysql/index.js +3 -3
  38. package/build/database/drivers/mysql/query.js +1 -1
  39. package/build/database/drivers/mysql/table.js +1 -1
  40. package/build/database/drivers/pgsql/index.js +2 -2
  41. package/build/database/drivers/sqlite/base.js +16 -16
  42. package/build/database/drivers/sqlite/index.js +11 -11
  43. package/build/database/drivers/sqlite/index.native.js +1 -1
  44. package/build/database/drivers/sqlite/index.web.js +3 -3
  45. package/build/database/drivers/sqlite/query.js +1 -1
  46. package/build/database/drivers/sqlite/query.web.js +1 -1
  47. package/build/database/drivers/sqlite/sql/alter-table.js +2 -2
  48. package/build/database/drivers/sqlite/table.js +1 -1
  49. package/build/database/migrator/files-finder.js +1 -1
  50. package/build/database/migrator.js +6 -6
  51. package/build/database/pool/async-tracked-multi-connection.js +27 -27
  52. package/build/database/pool/base-methods-forward.js +4 -4
  53. package/build/database/pool/base.js +8 -8
  54. package/build/database/query/from-base.js +1 -1
  55. package/build/database/query/index.js +10 -10
  56. package/build/database/query/join-object.js +3 -3
  57. package/build/database/query/model-class-query.js +39 -39
  58. package/build/database/query/preloader/belongs-to.js +22 -22
  59. package/build/database/query/preloader/has-many.js +20 -20
  60. package/build/database/query/preloader/has-one.js +8 -8
  61. package/build/database/query/preloader/selection.js +3 -3
  62. package/build/database/query/preloader.js +8 -8
  63. package/build/database/query/query-data.js +9 -9
  64. package/build/database/query/where-model-class-hash.js +7 -7
  65. package/build/database/query/with-count.js +9 -9
  66. package/build/database/record/acts-as-list.js +15 -15
  67. package/build/database/record/attachments/handle.js +2 -2
  68. package/build/database/record/attachments/normalize-input.js +12 -12
  69. package/build/database/record/attachments/storage-drivers/s3.js +6 -6
  70. package/build/database/record/attachments/store.js +13 -13
  71. package/build/database/record/index.js +115 -121
  72. package/build/database/record/instance-relationships/base.js +11 -11
  73. package/build/database/record/instance-relationships/belongs-to.js +3 -3
  74. package/build/database/record/instance-relationships/has-many.js +8 -8
  75. package/build/database/record/instance-relationships/has-one.js +7 -7
  76. package/build/database/record/relationships/base.js +2 -2
  77. package/build/database/record/state-machine.js +7 -7
  78. package/build/database/record/validators/presence.js +1 -1
  79. package/build/database/record/validators/uniqueness.js +5 -5
  80. package/build/database/table-data/index.js +4 -4
  81. package/build/environment-handlers/base.js +2 -2
  82. package/build/environment-handlers/browser.js +7 -7
  83. package/build/environment-handlers/node/cli/commands/cli-command-context.js +1 -1
  84. package/build/environment-handlers/node/cli/commands/console.js +4 -4
  85. package/build/environment-handlers/node/cli/commands/db/schema/dump.js +1 -1
  86. package/build/environment-handlers/node/cli/commands/db/schema/load.js +3 -3
  87. package/build/environment-handlers/node/cli/commands/generate/frontend-models.js +836 -60
  88. package/build/environment-handlers/node.js +6 -6
  89. package/build/frontend-model-controller.js +81 -82
  90. package/build/frontend-model-resource/base-resource.js +78 -115
  91. package/build/frontend-models/base.js +162 -149
  92. package/build/frontend-models/clear-pending-debounced-callback.js +1 -1
  93. package/build/frontend-models/event-hook-models.js +2 -2
  94. package/build/frontend-models/outgoing-event-buffer.js +2 -2
  95. package/build/frontend-models/preloader.js +5 -5
  96. package/build/frontend-models/query.js +43 -38
  97. package/build/frontend-models/resource-definition.js +6 -6
  98. package/build/frontend-models/transport-serialization.js +11 -11
  99. package/build/frontend-models/use-destroyed-event.js +10 -10
  100. package/build/frontend-models/use-model-class-event.js +11 -11
  101. package/build/frontend-models/use-updated-event.js +11 -11
  102. package/build/frontend-models/websocket-channel.js +26 -17
  103. package/build/frontend-models/websocket-publishers.js +9 -9
  104. package/build/http-client/response.js +2 -2
  105. package/build/http-server/client/index.js +8 -8
  106. package/build/http-server/client/params-to-object.js +10 -10
  107. package/build/http-server/client/request-buffer/form-data-part.js +2 -2
  108. package/build/http-server/client/request-buffer/index.js +8 -8
  109. package/build/http-server/client/request-parser.js +3 -3
  110. package/build/http-server/client/request-runner.js +6 -6
  111. package/build/http-server/client/request-timing.js +5 -5
  112. package/build/http-server/client/request.js +1 -1
  113. package/build/http-server/client/response.js +5 -5
  114. package/build/http-server/client/websocket-request.js +4 -4
  115. package/build/http-server/client/websocket-session.js +18 -18
  116. package/build/http-server/development-reloader.js +5 -5
  117. package/build/http-server/index.js +12 -12
  118. package/build/http-server/remote-address.js +4 -4
  119. package/build/http-server/server-client.js +3 -3
  120. package/build/http-server/server-lock.js +4 -4
  121. package/build/http-server/websocket-channel-subscribers.js +3 -3
  122. package/build/http-server/websocket-channel.js +1 -1
  123. package/build/http-server/websocket-connection.js +1 -1
  124. package/build/http-server/websocket-event-log-store.js +6 -6
  125. package/build/http-server/websocket-events-host.js +2 -2
  126. package/build/http-server/worker-handler/in-process.js +7 -7
  127. package/build/http-server/worker-handler/index.js +4 -4
  128. package/build/http-server/worker-handler/worker-thread.js +3 -3
  129. package/build/logger/outputs/array-output.js +3 -3
  130. package/build/logger/outputs/console-output.js +1 -1
  131. package/build/logger/outputs/file-output.js +4 -4
  132. package/build/logger/outputs/stdout-output.js +1 -1
  133. package/build/logger.js +10 -10
  134. package/build/mailer/backends/smtp.js +3 -3
  135. package/build/mailer/base.js +8 -8
  136. package/build/mailer/delivery.js +4 -4
  137. package/build/plugins/sqljs-wasm-route-controller.js +1 -1
  138. package/build/routes/base-route.js +6 -6
  139. package/build/routes/basic-route.js +1 -1
  140. package/build/routes/hooks/frontend-model-command-route-hook.js +1 -1
  141. package/build/routes/index.js +1 -1
  142. package/build/routes/plugin-routes.js +1 -1
  143. package/build/routes/resolver.js +11 -11
  144. package/build/routes/resource-route.js +1 -1
  145. package/build/src/application.d.ts +3 -3
  146. package/build/src/application.d.ts.map +1 -1
  147. package/build/src/application.js +5 -5
  148. package/build/src/authorization/ability.d.ts +7 -7
  149. package/build/src/authorization/ability.d.ts.map +1 -1
  150. package/build/src/authorization/ability.js +9 -9
  151. package/build/src/authorization/base-resource.d.ts +1 -1
  152. package/build/src/authorization/base-resource.d.ts.map +1 -1
  153. package/build/src/authorization/base-resource.js +5 -5
  154. package/build/src/background-jobs/cron-expression.js +2 -2
  155. package/build/src/background-jobs/forked-runner-child.js +2 -2
  156. package/build/src/background-jobs/job-registry.d.ts +1 -1
  157. package/build/src/background-jobs/job-registry.d.ts.map +1 -1
  158. package/build/src/background-jobs/job-registry.js +2 -2
  159. package/build/src/background-jobs/job-runner.js +2 -2
  160. package/build/src/background-jobs/job.js +2 -2
  161. package/build/src/background-jobs/json-socket.d.ts +4 -4
  162. package/build/src/background-jobs/json-socket.d.ts.map +1 -1
  163. package/build/src/background-jobs/json-socket.js +5 -5
  164. package/build/src/background-jobs/main.d.ts +18 -18
  165. package/build/src/background-jobs/main.d.ts.map +1 -1
  166. package/build/src/background-jobs/main.js +22 -22
  167. package/build/src/background-jobs/scheduler.d.ts +5 -5
  168. package/build/src/background-jobs/scheduler.d.ts.map +1 -1
  169. package/build/src/background-jobs/scheduler.js +8 -8
  170. package/build/src/background-jobs/store.js +8 -8
  171. package/build/src/background-jobs/web/controller.js +3 -3
  172. package/build/src/background-jobs/worker.d.ts +6 -6
  173. package/build/src/background-jobs/worker.d.ts.map +1 -1
  174. package/build/src/background-jobs/worker.js +13 -13
  175. package/build/src/beacon/client.d.ts +4 -4
  176. package/build/src/beacon/client.d.ts.map +1 -1
  177. package/build/src/beacon/client.js +12 -9
  178. package/build/src/beacon/in-process-broker.d.ts.map +1 -1
  179. package/build/src/beacon/in-process-broker.js +3 -3
  180. package/build/src/beacon/in-process-client.d.ts +1 -1
  181. package/build/src/beacon/in-process-client.d.ts.map +1 -1
  182. package/build/src/beacon/in-process-client.js +3 -3
  183. package/build/src/beacon/server.d.ts +2 -2
  184. package/build/src/beacon/server.d.ts.map +1 -1
  185. package/build/src/beacon/server.js +4 -4
  186. package/build/src/cli/browser-cli.js +2 -2
  187. package/build/src/cli/commands/db/base-command.d.ts +2 -2
  188. package/build/src/cli/commands/db/base-command.d.ts.map +1 -1
  189. package/build/src/cli/commands/db/base-command.js +3 -3
  190. package/build/src/cli/index.js +3 -3
  191. package/build/src/cli/tenant-database-command-helper.d.ts +1 -1
  192. package/build/src/cli/tenant-database-command-helper.d.ts.map +1 -1
  193. package/build/src/cli/tenant-database-command-helper.js +4 -4
  194. package/build/src/cli/use-browser-cli.js +2 -2
  195. package/build/src/configuration-types.d.ts +12 -2
  196. package/build/src/configuration-types.d.ts.map +1 -1
  197. package/build/src/configuration-types.js +4 -2
  198. package/build/src/configuration.d.ts +14 -14
  199. package/build/src/configuration.d.ts.map +1 -1
  200. package/build/src/configuration.js +39 -39
  201. package/build/src/controller.js +10 -10
  202. package/build/src/current-configuration.js +2 -2
  203. package/build/src/database/annotations-async-hooks.js +3 -3
  204. package/build/src/database/annotations.d.ts.map +1 -1
  205. package/build/src/database/annotations.js +4 -4
  206. package/build/src/database/drivers/base-column.d.ts +1 -1
  207. package/build/src/database/drivers/base-column.d.ts.map +1 -1
  208. package/build/src/database/drivers/base-column.js +2 -2
  209. package/build/src/database/drivers/base-foreign-key.d.ts +1 -1
  210. package/build/src/database/drivers/base-foreign-key.d.ts.map +1 -1
  211. package/build/src/database/drivers/base-foreign-key.js +2 -2
  212. package/build/src/database/drivers/base-table.d.ts +1 -1
  213. package/build/src/database/drivers/base-table.d.ts.map +1 -1
  214. package/build/src/database/drivers/base-table.js +2 -2
  215. package/build/src/database/drivers/base.d.ts +6 -6
  216. package/build/src/database/drivers/base.d.ts.map +1 -1
  217. package/build/src/database/drivers/base.js +11 -11
  218. package/build/src/database/drivers/mssql/index.js +2 -2
  219. package/build/src/database/drivers/mssql/table.js +2 -2
  220. package/build/src/database/drivers/mysql/index.js +4 -4
  221. package/build/src/database/drivers/mysql/query.js +2 -2
  222. package/build/src/database/drivers/mysql/table.js +2 -2
  223. package/build/src/database/drivers/pgsql/index.js +3 -3
  224. package/build/src/database/drivers/sqlite/base.d.ts +3 -3
  225. package/build/src/database/drivers/sqlite/base.d.ts.map +1 -1
  226. package/build/src/database/drivers/sqlite/base.js +17 -17
  227. package/build/src/database/drivers/sqlite/index.d.ts +4 -4
  228. package/build/src/database/drivers/sqlite/index.d.ts.map +1 -1
  229. package/build/src/database/drivers/sqlite/index.js +12 -12
  230. package/build/src/database/drivers/sqlite/index.native.js +2 -2
  231. package/build/src/database/drivers/sqlite/index.web.d.ts +2 -2
  232. package/build/src/database/drivers/sqlite/index.web.d.ts.map +1 -1
  233. package/build/src/database/drivers/sqlite/index.web.js +4 -4
  234. package/build/src/database/drivers/sqlite/query.js +2 -2
  235. package/build/src/database/drivers/sqlite/query.web.js +2 -2
  236. package/build/src/database/drivers/sqlite/sql/alter-table.js +3 -3
  237. package/build/src/database/drivers/sqlite/table.js +2 -2
  238. package/build/src/database/migrator/files-finder.js +2 -2
  239. package/build/src/database/migrator.d.ts +1 -1
  240. package/build/src/database/migrator.d.ts.map +1 -1
  241. package/build/src/database/migrator.js +7 -7
  242. package/build/src/database/pool/async-tracked-multi-connection.d.ts +9 -9
  243. package/build/src/database/pool/async-tracked-multi-connection.d.ts.map +1 -1
  244. package/build/src/database/pool/async-tracked-multi-connection.js +28 -28
  245. package/build/src/database/pool/base-methods-forward.js +7 -7
  246. package/build/src/database/pool/base.d.ts +1 -1
  247. package/build/src/database/pool/base.d.ts.map +1 -1
  248. package/build/src/database/pool/base.js +9 -9
  249. package/build/src/database/query/from-base.d.ts +1 -1
  250. package/build/src/database/query/from-base.d.ts.map +1 -1
  251. package/build/src/database/query/from-base.js +2 -2
  252. package/build/src/database/query/index.d.ts +4 -4
  253. package/build/src/database/query/index.d.ts.map +1 -1
  254. package/build/src/database/query/index.js +11 -11
  255. package/build/src/database/query/join-object.js +4 -4
  256. package/build/src/database/query/model-class-query.d.ts +4 -4
  257. package/build/src/database/query/model-class-query.d.ts.map +1 -1
  258. package/build/src/database/query/model-class-query.js +40 -40
  259. package/build/src/database/query/preloader/belongs-to.js +23 -23
  260. package/build/src/database/query/preloader/has-many.js +21 -21
  261. package/build/src/database/query/preloader/has-one.js +9 -9
  262. package/build/src/database/query/preloader/selection.js +4 -4
  263. package/build/src/database/query/preloader.js +9 -9
  264. package/build/src/database/query/query-data.js +10 -10
  265. package/build/src/database/query/where-model-class-hash.js +8 -8
  266. package/build/src/database/query/with-count.js +10 -10
  267. package/build/src/database/record/acts-as-list.js +20 -20
  268. package/build/src/database/record/attachments/handle.d.ts +1 -1
  269. package/build/src/database/record/attachments/handle.d.ts.map +1 -1
  270. package/build/src/database/record/attachments/handle.js +3 -3
  271. package/build/src/database/record/attachments/normalize-input.js +15 -15
  272. package/build/src/database/record/attachments/storage-drivers/s3.js +7 -7
  273. package/build/src/database/record/attachments/store.d.ts +2 -2
  274. package/build/src/database/record/attachments/store.d.ts.map +1 -1
  275. package/build/src/database/record/attachments/store.js +14 -14
  276. package/build/src/database/record/index.d.ts +18 -25
  277. package/build/src/database/record/index.d.ts.map +1 -1
  278. package/build/src/database/record/index.js +135 -141
  279. package/build/src/database/record/instance-relationships/base.d.ts +3 -3
  280. package/build/src/database/record/instance-relationships/base.d.ts.map +1 -1
  281. package/build/src/database/record/instance-relationships/base.js +13 -13
  282. package/build/src/database/record/instance-relationships/belongs-to.js +4 -4
  283. package/build/src/database/record/instance-relationships/has-many.js +9 -9
  284. package/build/src/database/record/instance-relationships/has-one.d.ts +1 -1
  285. package/build/src/database/record/instance-relationships/has-one.d.ts.map +1 -1
  286. package/build/src/database/record/instance-relationships/has-one.js +8 -8
  287. package/build/src/database/record/relationships/base.js +4 -4
  288. package/build/src/database/record/state-machine.js +8 -8
  289. package/build/src/database/record/validators/presence.js +2 -2
  290. package/build/src/database/record/validators/uniqueness.js +6 -6
  291. package/build/src/database/table-data/index.d.ts +4 -4
  292. package/build/src/database/table-data/index.d.ts.map +1 -1
  293. package/build/src/database/table-data/index.js +5 -5
  294. package/build/src/environment-handlers/base.js +3 -3
  295. package/build/src/environment-handlers/browser.d.ts +3 -3
  296. package/build/src/environment-handlers/browser.d.ts.map +1 -1
  297. package/build/src/environment-handlers/browser.js +8 -8
  298. package/build/src/environment-handlers/node/cli/commands/cli-command-context.js +2 -2
  299. package/build/src/environment-handlers/node/cli/commands/console.d.ts.map +1 -1
  300. package/build/src/environment-handlers/node/cli/commands/console.js +5 -5
  301. package/build/src/environment-handlers/node/cli/commands/db/schema/dump.d.ts +1 -1
  302. package/build/src/environment-handlers/node/cli/commands/db/schema/dump.d.ts.map +1 -1
  303. package/build/src/environment-handlers/node/cli/commands/db/schema/dump.js +2 -2
  304. package/build/src/environment-handlers/node/cli/commands/db/schema/load.d.ts +1 -1
  305. package/build/src/environment-handlers/node/cli/commands/db/schema/load.d.ts.map +1 -1
  306. package/build/src/environment-handlers/node/cli/commands/db/schema/load.js +4 -4
  307. package/build/src/environment-handlers/node/cli/commands/generate/frontend-models.d.ts +285 -12
  308. package/build/src/environment-handlers/node/cli/commands/generate/frontend-models.d.ts.map +1 -1
  309. package/build/src/environment-handlers/node/cli/commands/generate/frontend-models.js +712 -61
  310. package/build/src/environment-handlers/node.d.ts +2 -2
  311. package/build/src/environment-handlers/node.d.ts.map +1 -1
  312. package/build/src/environment-handlers/node.js +7 -7
  313. package/build/src/frontend-model-controller.d.ts +5 -6
  314. package/build/src/frontend-model-controller.d.ts.map +1 -1
  315. package/build/src/frontend-model-controller.js +88 -89
  316. package/build/src/frontend-model-resource/base-resource.d.ts +36 -27
  317. package/build/src/frontend-model-resource/base-resource.d.ts.map +1 -1
  318. package/build/src/frontend-model-resource/base-resource.js +67 -120
  319. package/build/src/frontend-models/base.d.ts +67 -59
  320. package/build/src/frontend-models/base.d.ts.map +1 -1
  321. package/build/src/frontend-models/base.js +171 -158
  322. package/build/src/frontend-models/clear-pending-debounced-callback.js +2 -2
  323. package/build/src/frontend-models/event-hook-models.d.ts.map +1 -1
  324. package/build/src/frontend-models/event-hook-models.js +3 -3
  325. package/build/src/frontend-models/outgoing-event-buffer.d.ts +1 -1
  326. package/build/src/frontend-models/outgoing-event-buffer.d.ts.map +1 -1
  327. package/build/src/frontend-models/outgoing-event-buffer.js +3 -3
  328. package/build/src/frontend-models/preloader.js +6 -6
  329. package/build/src/frontend-models/query.d.ts +16 -8
  330. package/build/src/frontend-models/query.d.ts.map +1 -1
  331. package/build/src/frontend-models/query.js +43 -39
  332. package/build/src/frontend-models/resource-definition.js +7 -7
  333. package/build/src/frontend-models/transport-serialization.js +12 -12
  334. package/build/src/frontend-models/use-destroyed-event.d.ts.map +1 -1
  335. package/build/src/frontend-models/use-destroyed-event.js +11 -11
  336. package/build/src/frontend-models/use-model-class-event.d.ts.map +1 -1
  337. package/build/src/frontend-models/use-model-class-event.js +12 -12
  338. package/build/src/frontend-models/use-updated-event.d.ts.map +1 -1
  339. package/build/src/frontend-models/use-updated-event.js +12 -12
  340. package/build/src/frontend-models/websocket-channel.d.ts +6 -1
  341. package/build/src/frontend-models/websocket-channel.d.ts.map +1 -1
  342. package/build/src/frontend-models/websocket-channel.js +26 -18
  343. package/build/src/frontend-models/websocket-publishers.js +11 -11
  344. package/build/src/http-client/response.d.ts +2 -2
  345. package/build/src/http-client/response.d.ts.map +1 -1
  346. package/build/src/http-client/response.js +3 -3
  347. package/build/src/http-server/client/index.d.ts +1 -1
  348. package/build/src/http-server/client/index.d.ts.map +1 -1
  349. package/build/src/http-server/client/index.js +9 -9
  350. package/build/src/http-server/client/params-to-object.js +11 -11
  351. package/build/src/http-server/client/request-buffer/form-data-part.d.ts +2 -2
  352. package/build/src/http-server/client/request-buffer/form-data-part.d.ts.map +1 -1
  353. package/build/src/http-server/client/request-buffer/form-data-part.js +3 -3
  354. package/build/src/http-server/client/request-buffer/index.d.ts +4 -4
  355. package/build/src/http-server/client/request-buffer/index.d.ts.map +1 -1
  356. package/build/src/http-server/client/request-buffer/index.js +9 -9
  357. package/build/src/http-server/client/request-parser.d.ts +1 -1
  358. package/build/src/http-server/client/request-parser.d.ts.map +1 -1
  359. package/build/src/http-server/client/request-parser.js +4 -4
  360. package/build/src/http-server/client/request-runner.js +7 -7
  361. package/build/src/http-server/client/request-timing.d.ts +5 -5
  362. package/build/src/http-server/client/request-timing.d.ts.map +1 -1
  363. package/build/src/http-server/client/request-timing.js +6 -6
  364. package/build/src/http-server/client/request.js +2 -2
  365. package/build/src/http-server/client/response.d.ts +3 -3
  366. package/build/src/http-server/client/response.d.ts.map +1 -1
  367. package/build/src/http-server/client/response.js +6 -6
  368. package/build/src/http-server/client/websocket-request.d.ts +3 -3
  369. package/build/src/http-server/client/websocket-request.d.ts.map +1 -1
  370. package/build/src/http-server/client/websocket-request.js +5 -5
  371. package/build/src/http-server/client/websocket-session.d.ts +6 -6
  372. package/build/src/http-server/client/websocket-session.d.ts.map +1 -1
  373. package/build/src/http-server/client/websocket-session.js +19 -19
  374. package/build/src/http-server/development-reloader.d.ts +3 -3
  375. package/build/src/http-server/development-reloader.d.ts.map +1 -1
  376. package/build/src/http-server/development-reloader.js +6 -6
  377. package/build/src/http-server/index.d.ts +7 -7
  378. package/build/src/http-server/index.d.ts.map +1 -1
  379. package/build/src/http-server/index.js +13 -13
  380. package/build/src/http-server/remote-address.js +6 -6
  381. package/build/src/http-server/server-client.js +4 -4
  382. package/build/src/http-server/server-lock.js +5 -5
  383. package/build/src/http-server/websocket-channel-subscribers.d.ts +1 -1
  384. package/build/src/http-server/websocket-channel-subscribers.d.ts.map +1 -1
  385. package/build/src/http-server/websocket-channel-subscribers.js +4 -4
  386. package/build/src/http-server/websocket-channel.d.ts +1 -1
  387. package/build/src/http-server/websocket-channel.d.ts.map +1 -1
  388. package/build/src/http-server/websocket-channel.js +2 -2
  389. package/build/src/http-server/websocket-connection.d.ts +1 -1
  390. package/build/src/http-server/websocket-connection.d.ts.map +1 -1
  391. package/build/src/http-server/websocket-connection.js +2 -2
  392. package/build/src/http-server/websocket-event-log-store.d.ts +1 -1
  393. package/build/src/http-server/websocket-event-log-store.d.ts.map +1 -1
  394. package/build/src/http-server/websocket-event-log-store.js +7 -7
  395. package/build/src/http-server/websocket-events-host.d.ts +1 -1
  396. package/build/src/http-server/websocket-events-host.d.ts.map +1 -1
  397. package/build/src/http-server/websocket-events-host.js +3 -3
  398. package/build/src/http-server/worker-handler/in-process.d.ts +3 -3
  399. package/build/src/http-server/worker-handler/in-process.d.ts.map +1 -1
  400. package/build/src/http-server/worker-handler/in-process.js +9 -9
  401. package/build/src/http-server/worker-handler/index.d.ts +4 -4
  402. package/build/src/http-server/worker-handler/index.d.ts.map +1 -1
  403. package/build/src/http-server/worker-handler/index.js +5 -5
  404. package/build/src/http-server/worker-handler/worker-thread.d.ts +2 -2
  405. package/build/src/http-server/worker-handler/worker-thread.d.ts.map +1 -1
  406. package/build/src/http-server/worker-handler/worker-thread.js +4 -4
  407. package/build/src/logger/outputs/array-output.d.ts +3 -3
  408. package/build/src/logger/outputs/array-output.d.ts.map +1 -1
  409. package/build/src/logger/outputs/array-output.js +4 -4
  410. package/build/src/logger/outputs/console-output.d.ts +1 -1
  411. package/build/src/logger/outputs/console-output.d.ts.map +1 -1
  412. package/build/src/logger/outputs/console-output.js +2 -2
  413. package/build/src/logger/outputs/file-output.d.ts +4 -4
  414. package/build/src/logger/outputs/file-output.d.ts.map +1 -1
  415. package/build/src/logger/outputs/file-output.js +5 -5
  416. package/build/src/logger/outputs/stdout-output.d.ts.map +1 -1
  417. package/build/src/logger/outputs/stdout-output.js +2 -2
  418. package/build/src/logger.d.ts.map +1 -1
  419. package/build/src/logger.js +11 -11
  420. package/build/src/mailer/backends/smtp.d.ts.map +1 -1
  421. package/build/src/mailer/backends/smtp.js +5 -5
  422. package/build/src/mailer/base.js +11 -11
  423. package/build/src/mailer/delivery.d.ts +3 -3
  424. package/build/src/mailer/delivery.d.ts.map +1 -1
  425. package/build/src/mailer/delivery.js +5 -5
  426. package/build/src/plugins/sqljs-wasm-route-controller.js +2 -2
  427. package/build/src/routes/base-route.d.ts +6 -6
  428. package/build/src/routes/base-route.d.ts.map +1 -1
  429. package/build/src/routes/base-route.js +7 -7
  430. package/build/src/routes/basic-route.js +2 -2
  431. package/build/src/routes/hooks/frontend-model-command-route-hook.js +2 -2
  432. package/build/src/routes/index.js +2 -2
  433. package/build/src/routes/plugin-routes.js +2 -2
  434. package/build/src/routes/resolver.d.ts +1 -1
  435. package/build/src/routes/resolver.d.ts.map +1 -1
  436. package/build/src/routes/resolver.js +13 -13
  437. package/build/src/routes/resource-route.d.ts +1 -1
  438. package/build/src/routes/resource-route.d.ts.map +1 -1
  439. package/build/src/routes/resource-route.js +2 -2
  440. package/build/src/testing/browser-frontend-model-event-hook-scenarios.d.ts.map +1 -1
  441. package/build/src/testing/browser-frontend-model-event-hook-scenarios.js +8 -8
  442. package/build/src/testing/expect-utils.js +13 -13
  443. package/build/src/testing/expect.d.ts +1 -1
  444. package/build/src/testing/expect.d.ts.map +1 -1
  445. package/build/src/testing/expect.js +9 -9
  446. package/build/src/testing/test-files-finder.d.ts +8 -8
  447. package/build/src/testing/test-files-finder.d.ts.map +1 -1
  448. package/build/src/testing/test-files-finder.js +9 -9
  449. package/build/src/testing/test-filter-parser.js +3 -3
  450. package/build/src/testing/test-runner.d.ts +2 -2
  451. package/build/src/testing/test-runner.d.ts.map +1 -1
  452. package/build/src/testing/test-runner.js +17 -17
  453. package/build/src/testing/test-suite-splitter.js +2 -2
  454. package/build/src/testing/test.d.ts +2 -2
  455. package/build/src/testing/test.d.ts.map +1 -1
  456. package/build/src/testing/test.js +16 -16
  457. package/build/src/utils/backtrace-cleaner.d.ts +1 -1
  458. package/build/src/utils/backtrace-cleaner.d.ts.map +1 -1
  459. package/build/src/utils/backtrace-cleaner.js +2 -2
  460. package/build/src/utils/format-value.js +2 -2
  461. package/build/src/utils/model-scope.js +2 -2
  462. package/build/src/utils/ransack.js +27 -27
  463. package/build/src/utils/with-tracked-stack-async-hooks.js +8 -8
  464. package/build/src/utils/with-tracked-stack.js +4 -4
  465. package/build/testing/browser-frontend-model-event-hook-scenarios.js +7 -7
  466. package/build/testing/expect-utils.js +11 -11
  467. package/build/testing/expect.js +7 -7
  468. package/build/testing/test-files-finder.js +8 -8
  469. package/build/testing/test-filter-parser.js +2 -2
  470. package/build/testing/test-runner.js +16 -16
  471. package/build/testing/test-suite-splitter.js +1 -1
  472. package/build/testing/test.js +15 -15
  473. package/build/utils/backtrace-cleaner.js +1 -1
  474. package/build/utils/format-value.js +1 -1
  475. package/build/utils/model-scope.js +1 -1
  476. package/build/utils/ransack.js +26 -26
  477. package/build/utils/with-tracked-stack-async-hooks.js +7 -7
  478. package/build/utils/with-tracked-stack.js +3 -3
  479. package/package.json +2 -1
  480. package/src/application.js +4 -4
  481. package/src/authorization/ability.js +8 -8
  482. package/src/authorization/base-resource.js +4 -4
  483. package/src/background-jobs/cron-expression.js +1 -1
  484. package/src/background-jobs/forked-runner-child.js +1 -1
  485. package/src/background-jobs/job-registry.js +1 -1
  486. package/src/background-jobs/job-runner.js +1 -1
  487. package/src/background-jobs/job.js +1 -1
  488. package/src/background-jobs/json-socket.js +4 -4
  489. package/src/background-jobs/main.js +21 -21
  490. package/src/background-jobs/scheduler.js +7 -7
  491. package/src/background-jobs/store.js +7 -7
  492. package/src/background-jobs/web/controller.js +2 -2
  493. package/src/background-jobs/worker.js +12 -12
  494. package/src/beacon/client.js +11 -8
  495. package/src/beacon/in-process-broker.js +2 -2
  496. package/src/beacon/in-process-client.js +2 -2
  497. package/src/beacon/server.js +3 -3
  498. package/src/cli/browser-cli.js +1 -1
  499. package/src/cli/commands/db/base-command.js +2 -2
  500. package/src/cli/index.js +2 -2
  501. package/src/cli/tenant-database-command-helper.js +3 -3
  502. package/src/cli/use-browser-cli.js +1 -1
  503. package/src/configuration-types.js +3 -1
  504. package/src/configuration.js +38 -38
  505. package/src/controller.js +8 -8
  506. package/src/current-configuration.js +1 -1
  507. package/src/database/annotations-async-hooks.js +2 -2
  508. package/src/database/annotations.js +3 -3
  509. package/src/database/drivers/base-column.js +1 -1
  510. package/src/database/drivers/base-foreign-key.js +1 -1
  511. package/src/database/drivers/base-table.js +1 -1
  512. package/src/database/drivers/base.js +10 -10
  513. package/src/database/drivers/mssql/index.js +1 -1
  514. package/src/database/drivers/mssql/table.js +1 -1
  515. package/src/database/drivers/mysql/index.js +3 -3
  516. package/src/database/drivers/mysql/query.js +1 -1
  517. package/src/database/drivers/mysql/table.js +1 -1
  518. package/src/database/drivers/pgsql/index.js +2 -2
  519. package/src/database/drivers/sqlite/base.js +16 -16
  520. package/src/database/drivers/sqlite/index.js +11 -11
  521. package/src/database/drivers/sqlite/index.native.js +1 -1
  522. package/src/database/drivers/sqlite/index.web.js +3 -3
  523. package/src/database/drivers/sqlite/query.js +1 -1
  524. package/src/database/drivers/sqlite/query.web.js +1 -1
  525. package/src/database/drivers/sqlite/sql/alter-table.js +2 -2
  526. package/src/database/drivers/sqlite/table.js +1 -1
  527. package/src/database/migrator/files-finder.js +1 -1
  528. package/src/database/migrator.js +6 -6
  529. package/src/database/pool/async-tracked-multi-connection.js +27 -27
  530. package/src/database/pool/base-methods-forward.js +4 -4
  531. package/src/database/pool/base.js +8 -8
  532. package/src/database/query/from-base.js +1 -1
  533. package/src/database/query/index.js +10 -10
  534. package/src/database/query/join-object.js +3 -3
  535. package/src/database/query/model-class-query.js +39 -39
  536. package/src/database/query/preloader/belongs-to.js +22 -22
  537. package/src/database/query/preloader/has-many.js +20 -20
  538. package/src/database/query/preloader/has-one.js +8 -8
  539. package/src/database/query/preloader/selection.js +3 -3
  540. package/src/database/query/preloader.js +8 -8
  541. package/src/database/query/query-data.js +9 -9
  542. package/src/database/query/where-model-class-hash.js +7 -7
  543. package/src/database/query/with-count.js +9 -9
  544. package/src/database/record/acts-as-list.js +15 -15
  545. package/src/database/record/attachments/handle.js +2 -2
  546. package/src/database/record/attachments/normalize-input.js +12 -12
  547. package/src/database/record/attachments/storage-drivers/s3.js +6 -6
  548. package/src/database/record/attachments/store.js +13 -13
  549. package/src/database/record/index.js +115 -121
  550. package/src/database/record/instance-relationships/base.js +11 -11
  551. package/src/database/record/instance-relationships/belongs-to.js +3 -3
  552. package/src/database/record/instance-relationships/has-many.js +8 -8
  553. package/src/database/record/instance-relationships/has-one.js +7 -7
  554. package/src/database/record/relationships/base.js +2 -2
  555. package/src/database/record/state-machine.js +7 -7
  556. package/src/database/record/validators/presence.js +1 -1
  557. package/src/database/record/validators/uniqueness.js +5 -5
  558. package/src/database/table-data/index.js +4 -4
  559. package/src/environment-handlers/base.js +2 -2
  560. package/src/environment-handlers/browser.js +7 -7
  561. package/src/environment-handlers/node/cli/commands/cli-command-context.js +1 -1
  562. package/src/environment-handlers/node/cli/commands/console.js +4 -4
  563. package/src/environment-handlers/node/cli/commands/db/schema/dump.js +1 -1
  564. package/src/environment-handlers/node/cli/commands/db/schema/load.js +3 -3
  565. package/src/environment-handlers/node/cli/commands/generate/frontend-models.js +836 -60
  566. package/src/environment-handlers/node.js +6 -6
  567. package/src/frontend-model-controller.js +81 -82
  568. package/src/frontend-model-resource/base-resource.js +78 -115
  569. package/src/frontend-models/base.js +162 -149
  570. package/src/frontend-models/clear-pending-debounced-callback.js +1 -1
  571. package/src/frontend-models/event-hook-models.js +2 -2
  572. package/src/frontend-models/outgoing-event-buffer.js +2 -2
  573. package/src/frontend-models/preloader.js +5 -5
  574. package/src/frontend-models/query.js +43 -38
  575. package/src/frontend-models/resource-definition.js +6 -6
  576. package/src/frontend-models/transport-serialization.js +11 -11
  577. package/src/frontend-models/use-destroyed-event.js +10 -10
  578. package/src/frontend-models/use-model-class-event.js +11 -11
  579. package/src/frontend-models/use-updated-event.js +11 -11
  580. package/src/frontend-models/websocket-channel.js +26 -17
  581. package/src/frontend-models/websocket-publishers.js +9 -9
  582. package/src/http-client/response.js +2 -2
  583. package/src/http-server/client/index.js +8 -8
  584. package/src/http-server/client/params-to-object.js +10 -10
  585. package/src/http-server/client/request-buffer/form-data-part.js +2 -2
  586. package/src/http-server/client/request-buffer/index.js +8 -8
  587. package/src/http-server/client/request-parser.js +3 -3
  588. package/src/http-server/client/request-runner.js +6 -6
  589. package/src/http-server/client/request-timing.js +5 -5
  590. package/src/http-server/client/request.js +1 -1
  591. package/src/http-server/client/response.js +5 -5
  592. package/src/http-server/client/websocket-request.js +4 -4
  593. package/src/http-server/client/websocket-session.js +18 -18
  594. package/src/http-server/development-reloader.js +5 -5
  595. package/src/http-server/index.js +12 -12
  596. package/src/http-server/remote-address.js +4 -4
  597. package/src/http-server/server-client.js +3 -3
  598. package/src/http-server/server-lock.js +4 -4
  599. package/src/http-server/websocket-channel-subscribers.js +3 -3
  600. package/src/http-server/websocket-channel.js +1 -1
  601. package/src/http-server/websocket-connection.js +1 -1
  602. package/src/http-server/websocket-event-log-store.js +6 -6
  603. package/src/http-server/websocket-events-host.js +2 -2
  604. package/src/http-server/worker-handler/in-process.js +7 -7
  605. package/src/http-server/worker-handler/index.js +4 -4
  606. package/src/http-server/worker-handler/worker-thread.js +3 -3
  607. package/src/logger/outputs/array-output.js +3 -3
  608. package/src/logger/outputs/console-output.js +1 -1
  609. package/src/logger/outputs/file-output.js +4 -4
  610. package/src/logger/outputs/stdout-output.js +1 -1
  611. package/src/logger.js +10 -10
  612. package/src/mailer/backends/smtp.js +3 -3
  613. package/src/mailer/base.js +8 -8
  614. package/src/mailer/delivery.js +4 -4
  615. package/src/plugins/sqljs-wasm-route-controller.js +1 -1
  616. package/src/routes/base-route.js +6 -6
  617. package/src/routes/basic-route.js +1 -1
  618. package/src/routes/hooks/frontend-model-command-route-hook.js +1 -1
  619. package/src/routes/index.js +1 -1
  620. package/src/routes/plugin-routes.js +1 -1
  621. package/src/routes/resolver.js +11 -11
  622. package/src/routes/resource-route.js +1 -1
  623. package/src/testing/browser-frontend-model-event-hook-scenarios.js +7 -7
  624. package/src/testing/expect-utils.js +11 -11
  625. package/src/testing/expect.js +7 -7
  626. package/src/testing/test-files-finder.js +8 -8
  627. package/src/testing/test-filter-parser.js +2 -2
  628. package/src/testing/test-runner.js +16 -16
  629. package/src/testing/test-suite-splitter.js +1 -1
  630. package/src/testing/test.js +15 -15
  631. package/src/utils/backtrace-cleaner.js +1 -1
  632. package/src/utils/format-value.js +1 -1
  633. package/src/utils/model-scope.js +1 -1
  634. package/src/utils/ransack.js +26 -26
  635. package/src/utils/with-tracked-stack-async-hooks.js +7 -7
  636. package/src/utils/with-tracked-stack.js +3 -3
@@ -8,7 +8,7 @@
8
8
  export default function clearPendingDebouncedCallback(callback) {
9
9
  const callbackWithClear = /**
10
10
  * Narrows the runtime value to the documented type.
11
- @type {{clear?: ?}} */ (callback)
11
+ * @type {{clear?: ?}} */ (callback)
12
12
 
13
13
  if (typeof callbackWithClear.clear === "function") {
14
14
  callbackWithClear.clear()
@@ -2,11 +2,11 @@
2
2
 
3
3
  /**
4
4
  * FrontendModelInstance type.
5
- @typedef {import("./base.js").default} FrontendModelInstance */
5
+ * @typedef {import("./base.js").default} FrontendModelInstance */
6
6
 
7
7
  /**
8
8
  * Model dependency ids.
9
- @type {WeakMap<FrontendModelInstance, number>} */
9
+ * @type {WeakMap<FrontendModelInstance, number>} */
10
10
  const modelDependencyIds = new WeakMap()
11
11
  let nextModelDependencyId = 1
12
12
 
@@ -11,7 +11,7 @@ const MAX_BUFFERED_OUTGOING_EVENTS = 50
11
11
 
12
12
  /**
13
13
  * Buffer.
14
- @type {BufferedOutgoingEvent[]} */
14
+ * @type {BufferedOutgoingEvent[]} */
15
15
  let buffer = []
16
16
 
17
17
  /**
@@ -37,7 +37,7 @@ export function drainBufferedOutgoingEvents() {
37
37
 
38
38
  /**
39
39
  * Runs the clearBufferedOutgoingEvents helper.
40
- @returns {void} */
40
+ * @returns {void} */
41
41
  export function clearBufferedOutgoingEvents() {
42
42
  buffer = []
43
43
  }
@@ -24,15 +24,15 @@ export default class FrontendModelPreloader {
24
24
 
25
25
  const modelClass = /**
26
26
  * Narrows the runtime value to the documented type.
27
- @type {import("./base.js").FrontendModelClass} */ (models[0].constructor)
27
+ * @type {import("./base.js").FrontendModelClass} */ (models[0].constructor)
28
28
  const isQuery = Boolean(queryOrSpec) && typeof queryOrSpec === "object" && "_preload" in queryOrSpec
29
29
  const query = isQuery
30
30
  ? /**
31
31
  * Narrows the runtime value to the documented type.
32
- @type {import("./query.js").default<import("./base.js").FrontendModelClass>} */ (queryOrSpec)
32
+ * @type {import("./query.js").default<import("./base.js").FrontendModelClass>} */ (queryOrSpec)
33
33
  : modelClass.preload(/**
34
34
  * Narrows the runtime value to the documented type.
35
- @type {?} */ (queryOrSpec))
35
+ * @type {?} */ (queryOrSpec))
36
36
 
37
37
  const topLevelRelationships = Object.keys(query._preload)
38
38
 
@@ -60,7 +60,7 @@ export default class FrontendModelPreloader {
60
60
 
61
61
  /**
62
62
  * Reloaded by id.
63
- @type {Map<string, import("./base.js").default>} */
63
+ * @type {Map<string, import("./base.js").default>} */
64
64
  const reloadedById = new Map()
65
65
 
66
66
  for (const reloadedModel of reloaded) {
@@ -165,6 +165,6 @@ export default class FrontendModelPreloader {
165
165
  if (!subPreload || typeof subPreload !== "object") return null
166
166
  if (Object.keys(subPreload).length === 0) return null
167
167
 
168
- return /** Narrows the runtime value to the documented type. @type {import("../database/query/index.js").NestedPreloadRecord} */ (subPreload)
168
+ return /** @type {import("../database/query/index.js").NestedPreloadRecord} */ (subPreload)
169
169
  }
170
170
  }
@@ -17,6 +17,10 @@ import isPlainObject from "../utils/plain-object.js"
17
17
  * FrontendModelTransportValue type.
18
18
  * @typedef {null | boolean | number | string | object} FrontendModelTransportValue
19
19
  */
20
+ /**
21
+ * FrontendModelAttributeValue type.
22
+ * @typedef {import("./base.js").FrontendModelAttributeValue} FrontendModelAttributeValue
23
+ */
20
24
  /**
21
25
  * Defines this typedef.
22
26
  * @typedef {{attributeName: string, relationshipName: string, where?: Record<string, FrontendModelTransportValue>}} FrontendModelWithCountPayloadEntry
@@ -89,7 +93,7 @@ export function normalizePreload(preload) {
89
93
  if (Array.isArray(preload)) {
90
94
  /**
91
95
  * Normalized.
92
- @type {import("../database/query/index.js").NestedPreloadRecord} */
96
+ * @type {import("../database/query/index.js").NestedPreloadRecord} */
93
97
  const normalized = {}
94
98
 
95
99
  for (const entry of preload) {
@@ -115,7 +119,7 @@ export function normalizePreload(preload) {
115
119
 
116
120
  /**
117
121
  * Normalized.
118
- @type {import("../database/query/index.js").NestedPreloadRecord} */
122
+ * @type {import("../database/query/index.js").NestedPreloadRecord} */
119
123
  const normalized = {}
120
124
 
121
125
  for (const [relationshipName, relationshipPreload] of Object.entries(preload)) {
@@ -177,7 +181,7 @@ function normalizeWithCountFrontend(spec) {
177
181
  if (isPlainObject(value)) {
178
182
  const options = /**
179
183
  * Narrows the runtime value to the documented type.
180
- @type {{relationship?: string, where?: Record<string, ?>}} */ (value)
184
+ * @type {{relationship?: string, where?: Record<string, ?>}} */ (value)
181
185
  entries.push({
182
186
  attributeName: key,
183
187
  relationshipName: options.relationship || key,
@@ -228,7 +232,7 @@ function normalizeAbilitiesSpec(spec, rootModelClass) {
228
232
 
229
233
  /**
230
234
  * Entries.
231
- @type {Array<{modelName: string, actions: string[]}>} */
235
+ * @type {Array<{modelName: string, actions: string[]}>} */
232
236
  const entries = []
233
237
 
234
238
  for (const [modelName, actions] of Object.entries(spec)) {
@@ -280,10 +284,10 @@ function mergePreloadRecord(targetPreload, incomingPreload) {
280
284
  mergePreloadRecord(
281
285
  /**
282
286
  * Narrows the runtime value to the documented type.
283
- @type {import("../database/query/index.js").NestedPreloadRecord} */ (existingValue),
287
+ * @type {import("../database/query/index.js").NestedPreloadRecord} */ (existingValue),
284
288
  /**
285
289
  * Narrows the runtime value to the documented type.
286
- @type {import("../database/query/index.js").NestedPreloadRecord} */ (incomingValue)
290
+ * @type {import("../database/query/index.js").NestedPreloadRecord} */ (incomingValue)
287
291
  )
288
292
  continue
289
293
  }
@@ -325,7 +329,7 @@ function normalizeSelect(select, rootModelName = null) {
325
329
 
326
330
  /**
327
331
  * Normalized.
328
- @type {Record<string, string[]>} */
332
+ * @type {Record<string, string[]>} */
329
333
  const normalized = {}
330
334
 
331
335
  for (const [modelName, selection] of Object.entries(select)) {
@@ -378,14 +382,14 @@ export function normalizeSearchOperator(operator) {
378
382
  }
379
383
  const normalizedOperator = operatorAliases[/**
380
384
  * Narrows the runtime value to the documented type.
381
- @type {"<" | "<=" | ">" | ">="} */ (operator)] || operator
385
+ * @type {"<" | "<=" | ">" | ">="} */ (operator)] || operator
382
386
  const supportedOperators = new Set(["eq", "like", "notEq", "gt", "gteq", "lt", "lteq"])
383
387
 
384
388
  if (!supportedOperators.has(normalizedOperator)) {
385
389
  throw new Error(`search operator must be one of: eq, like, notEq, gt, gteq, lt, lteq, >, >=, <, <= (got: ${operator})`)
386
390
  }
387
391
 
388
- return /** Narrows the runtime value to the documented type. @type {"eq" | "like" | "notEq" | "gt" | "gteq" | "lt" | "lteq"} */ (normalizedOperator)
392
+ return /** @type {"eq" | "like" | "notEq" | "gt" | "gteq" | "lt" | "lteq"} */ (normalizedOperator)
389
393
  }
390
394
 
391
395
  /**
@@ -434,7 +438,7 @@ export function normalizeJoins(joins) {
434
438
  if (Array.isArray(joins)) {
435
439
  /**
436
440
  * Normalized.
437
- @type {Record<string, ?>} */
441
+ * @type {Record<string, ?>} */
438
442
  const normalized = {}
439
443
 
440
444
  for (const joinEntry of joins) {
@@ -454,7 +458,7 @@ export function normalizeJoins(joins) {
454
458
 
455
459
  /**
456
460
  * Normalized.
457
- @type {Record<string, ?>} */
461
+ * @type {Record<string, ?>} */
458
462
  const normalized = {}
459
463
 
460
464
  for (const [relationshipName, relationshipJoin] of Object.entries(joins)) {
@@ -627,7 +631,7 @@ function parseSortTuple(sortValue, path = []) {
627
631
  function normalizeSortObject(sortValue, path) {
628
632
  /**
629
633
  * Normalized sorts.
630
- @type {FrontendModelSort[]} */
634
+ * @type {FrontendModelSort[]} */
631
635
  const normalizedSorts = []
632
636
 
633
637
  for (const [sortKey, sortEntry] of Object.entries(sortValue)) {
@@ -702,7 +706,7 @@ export function normalizeSort(sort) {
702
706
  if (Array.isArray(sort)) {
703
707
  /**
704
708
  * Normalized.
705
- @type {FrontendModelSort[]} */
709
+ * @type {FrontendModelSort[]} */
706
710
  const normalized = []
707
711
 
708
712
  for (const sortEntry of sort) {
@@ -784,7 +788,7 @@ function columnPathDescriptor(value) {
784
788
  function normalizeColumnProjectionObject(value, path, parseString, label) {
785
789
  /**
786
790
  * Normalized.
787
- @type {T[]} */
791
+ * @type {T[]} */
788
792
  const normalized = []
789
793
 
790
794
  for (const [projectionKey, projectionEntry] of Object.entries(value)) {
@@ -846,7 +850,7 @@ export function normalizeGroup(group) {
846
850
  if (Array.isArray(group)) {
847
851
  /**
848
852
  * Normalized.
849
- @type {FrontendModelGroup[]} */
853
+ * @type {FrontendModelGroup[]} */
850
854
  const normalized = []
851
855
 
852
856
  for (const groupEntry of group) {
@@ -922,7 +926,7 @@ export function normalizePluck(pluck) {
922
926
  if (Array.isArray(pluck)) {
923
927
  /**
924
928
  * Normalized.
925
- @type {FrontendModelPluck[]} */
929
+ * @type {FrontendModelPluck[]} */
926
930
  const normalized = []
927
931
 
928
932
  for (const pluckEntry of pluck) {
@@ -961,7 +965,7 @@ export function normalizePluck(pluck) {
961
965
  function frontendModelResourceAttributes(modelClass) {
962
966
  const resourceConfig = /**
963
967
  * Narrows the runtime value to the documented type.
964
- @type {Record<string, ?>} */ (modelClass.resourceConfig())
968
+ * @type {Record<string, ?>} */ (modelClass.resourceConfig())
965
969
  const attributes = resourceConfig.attributes
966
970
 
967
971
  if (Array.isArray(attributes)) {
@@ -1080,19 +1084,19 @@ function reverseSortDirection(direction) {
1080
1084
  export default class FrontendModelQuery {
1081
1085
  /**
1082
1086
  * Ransack.
1083
- @type {Record<string, ?>[]} */
1087
+ * @type {Record<string, ?>[]} */
1084
1088
  _ransack = []
1085
1089
  /**
1086
1090
  * Searches.
1087
- @type {FrontendModelSearch[]} */
1091
+ * @type {FrontendModelSearch[]} */
1088
1092
  _searches = []
1089
1093
  /**
1090
1094
  * Sort.
1091
- @type {FrontendModelSort[]} */
1095
+ * @type {FrontendModelSort[]} */
1092
1096
  _sort = []
1093
1097
  /**
1094
1098
  * Group.
1095
- @type {FrontendModelGroup[]} */
1099
+ * @type {FrontendModelGroup[]} */
1096
1100
  _group = []
1097
1101
 
1098
1102
  /**
@@ -1109,11 +1113,11 @@ export default class FrontendModelQuery {
1109
1113
  this._searches = []
1110
1114
  /**
1111
1115
  * Narrows the runtime value to the documented type.
1112
- @type {Record<string, string[]>} */
1116
+ * @type {Record<string, string[]>} */
1113
1117
  this._select = {}
1114
1118
  /**
1115
1119
  * Narrows the runtime value to the documented type.
1116
- @type {Record<string, string[]>} */
1120
+ * @type {Record<string, string[]>} */
1117
1121
  this._selectsExtra = {}
1118
1122
  this._sort = []
1119
1123
  this._group = []
@@ -1124,11 +1128,11 @@ export default class FrontendModelQuery {
1124
1128
  this._perPage = null
1125
1129
  /**
1126
1130
  * Narrows the runtime value to the documented type.
1127
- @type {Array<{attributeName: string, relationshipName: string, where?: Record<string, ?>}>} */
1131
+ * @type {Array<{attributeName: string, relationshipName: string, where?: Record<string, ?>}>} */
1128
1132
  this._withCount = []
1129
1133
  /**
1130
1134
  * Narrows the runtime value to the documented type.
1131
- @type {Array<string | Record<string, ?>>} */
1135
+ * @type {Array<string | Record<string, ?>>} */
1132
1136
  this._queryData = []
1133
1137
  /**
1134
1138
  * Per-record ability spec. Normalized to a list of
@@ -1231,7 +1235,7 @@ export default class FrontendModelQuery {
1231
1235
 
1232
1236
  this._queryData.push(/**
1233
1237
  * Narrows the runtime value to the documented type.
1234
- @type {?} */ (spec))
1238
+ * @type {?} */ (spec))
1235
1239
 
1236
1240
  return this
1237
1241
  }
@@ -1268,7 +1272,7 @@ export default class FrontendModelQuery {
1268
1272
 
1269
1273
  const scopedQuery = /**
1270
1274
  * Narrows the runtime value to the documented type.
1271
- @type {this | void} */ (scopeDescriptor.callback({
1275
+ * @type {this | void} */ (scopeDescriptor.callback({
1272
1276
  driver: null,
1273
1277
  modelClass: this.modelClass,
1274
1278
  query: this,
@@ -1312,7 +1316,7 @@ export default class FrontendModelQuery {
1312
1316
  const rootModelName = this.modelClass.getModelName()
1313
1317
  const selectMap = /**
1314
1318
  * Narrows the runtime value to the documented type.
1315
- @type {Record<string, string[]>} */ (this._select)
1319
+ * @type {Record<string, string[]>} */ (this._select)
1316
1320
  const existingRootAttributes = selectMap[rootModelName]
1317
1321
 
1318
1322
  if (!existingRootAttributes) {
@@ -1520,7 +1524,7 @@ export default class FrontendModelQuery {
1520
1524
  clone() {
1521
1525
  const newQuery = /**
1522
1526
  * Narrows the runtime value to the documented type.
1523
- @type {FrontendModelQuery<T>} */ (new FrontendModelQuery({
1527
+ * @type {FrontendModelQuery<T>} */ (new FrontendModelQuery({
1524
1528
  modelClass: this.modelClass,
1525
1529
  preload: normalizePreload(this._preload)
1526
1530
  }))
@@ -1763,7 +1767,7 @@ export default class FrontendModelQuery {
1763
1767
  paginationPayload() {
1764
1768
  /**
1765
1769
  * Payload.
1766
- @type {Record<string, ?>} */
1770
+ * @type {Record<string, ?>} */
1767
1771
  const payload = {}
1768
1772
 
1769
1773
  if (this._limit !== null) payload.limit = this._limit
@@ -1782,7 +1786,7 @@ export default class FrontendModelQuery {
1782
1786
  assertEventQuerySupported() {
1783
1787
  /**
1784
1788
  * Unsupported options.
1785
- @type {string[]} */
1789
+ * @type {string[]} */
1786
1790
  const unsupportedOptions = []
1787
1791
 
1788
1792
  if (this._sort.length > 0) unsupportedOptions.push("sort")
@@ -1872,7 +1876,7 @@ export default class FrontendModelQuery {
1872
1876
  const modelsData = Array.isArray(response.models) ? response.models : []
1873
1877
  /**
1874
1878
  * Models.
1875
- @type {InstanceType<T>[]} */
1879
+ * @type {InstanceType<T>[]} */
1876
1880
  const models = modelsData.map((model) => this.modelClass.instantiateFromResponse(model))
1877
1881
 
1878
1882
  // Share a single cohort reference across every sibling so auto-batch-preload
@@ -1881,7 +1885,7 @@ export default class FrontendModelQuery {
1881
1885
  for (const model of models) {
1882
1886
  /**
1883
1887
  * Narrows the runtime value to the documented type.
1884
- @type {?} */ (model)._loadCohort = models
1888
+ * @type {?} */ (model)._loadCohort = models
1885
1889
  }
1886
1890
 
1887
1891
  return models
@@ -2094,7 +2098,9 @@ export default class FrontendModelQuery {
2094
2098
 
2095
2099
  if (model) return model
2096
2100
 
2097
- return /** Narrows the runtime value to the documented type. @type {InstanceType<T>} */ (new this.modelClass(normalizedConditions))
2101
+ const ModelClass = /** @type {new (attributes?: Record<string, FrontendModelAttributeValue>) => InstanceType<T>} */ (/** @type {unknown} */ (this.modelClass))
2102
+
2103
+ return new ModelClass(/** @type {Record<string, FrontendModelAttributeValue>} */ (normalizedConditions))
2098
2104
  }
2099
2105
 
2100
2106
  /**
@@ -2109,9 +2115,8 @@ export default class FrontendModelQuery {
2109
2115
 
2110
2116
  if (model) return model
2111
2117
 
2112
- const newModel = /**
2113
- * Narrows the runtime value to the documented type.
2114
- @type {InstanceType<T>} */ (new this.modelClass(normalizedConditions))
2118
+ const ModelClass = /** @type {new (attributes?: Record<string, FrontendModelAttributeValue>) => InstanceType<T>} */ (/** @type {unknown} */ (this.modelClass))
2119
+ const newModel = new ModelClass(/** @type {Record<string, FrontendModelAttributeValue>} */ (normalizedConditions))
2115
2120
 
2116
2121
  if (callback) {
2117
2122
  await callback(newModel)
@@ -2226,7 +2231,7 @@ function frontendModelEventQuery(modelClass, options = {}) {
2226
2231
 
2227
2232
  const optionsObject = /**
2228
2233
  * Narrows the runtime value to the documented type.
2229
- @type {FrontendModelEventOptionsObject} */ (options)
2234
+ * @type {FrontendModelEventOptionsObject} */ (options)
2230
2235
  const query = frontendModelEventQueryFromOptionsObject(modelClass, optionsObject)
2231
2236
 
2232
2237
  applyFrontendModelProjectionOptions(query, optionsObject)
@@ -61,7 +61,7 @@ export function frontendModelResourceConfigurationFromDefinition(resourceDefinit
61
61
  function normalizeFrontendModelResourceConfiguration(resourceConfiguration) {
62
62
  const restArgs = /**
63
63
  * Narrows the runtime value to the documented type.
64
- @type {Record<string, ?>} */ ({...resourceConfiguration})
64
+ * @type {Record<string, ?>} */ ({...resourceConfiguration})
65
65
 
66
66
  for (const key of [
67
67
  "abilities",
@@ -120,7 +120,7 @@ function normalizeFrontendModelResourceAbilities(abilities) {
120
120
 
121
121
  /**
122
122
  * Normalized.
123
- @type {Record<string, string>} */
123
+ * @type {Record<string, string>} */
124
124
  const normalized = {}
125
125
 
126
126
  if (abilities.includes("create")) normalized.create = "create"
@@ -206,7 +206,7 @@ function normalizeFrontendModelBuiltInCommands({commandDefaults, commandsConfig,
206
206
 
207
207
  /**
208
208
  * Normalized commands.
209
- @type {Record<string, string>} */
209
+ * @type {Record<string, string>} */
210
210
  const normalizedCommands = {}
211
211
 
212
212
  for (const commandType of commandsConfig) {
@@ -244,7 +244,7 @@ function normalizeFrontendModelCustomCommands({commandsConfig, modelName}) {
244
244
 
245
245
  /**
246
246
  * Normalized commands.
247
- @type {Record<string, string>} */
247
+ * @type {Record<string, string>} */
248
248
  const normalizedCommands = {}
249
249
 
250
250
  for (const methodName of commandsConfig) {
@@ -302,12 +302,12 @@ export function frontendModelActionForCommand({commandName, modelName, resourceD
302
302
  commandName: configuredCommandName,
303
303
  commandType: /**
304
304
  * Narrows the runtime value to the documented type.
305
- @type {"attach" | "create" | "destroy" | "download" | "find" | "index" | "update" | "url"} */ (action),
305
+ * @type {"attach" | "create" | "destroy" | "download" | "find" | "index" | "update" | "url"} */ (action),
306
306
  modelName
307
307
  })
308
308
 
309
309
  if (commandName === validatedCommandName) {
310
- return /** Narrows the runtime value to the documented type. @type {"attach" | "create" | "destroy" | "download" | "find" | "index" | "update" | "url"} */ (action)
310
+ return /** @type {"attach" | "create" | "destroy" | "download" | "find" | "index" | "update" | "url"} */ (action)
311
311
  }
312
312
  }
313
313
 
@@ -139,7 +139,7 @@ export function isBackendModelInstance(value) {
139
139
 
140
140
  const candidate = /**
141
141
  * Narrows the runtime value to the documented type.
142
- @type {Record<string, ?>} */ (value)
142
+ * @type {Record<string, ?>} */ (value)
143
143
 
144
144
  return (
145
145
  typeof candidate.attributes === "function"
@@ -195,12 +195,12 @@ function serializeFrontendModelTransportValueInternal(value, seenModels) {
195
195
 
196
196
  /**
197
197
  * Serialized model.
198
- @type {Record<string, ?>} */
198
+ * @type {Record<string, ?>} */
199
199
  const serializedModel = {
200
200
  [TYPE_KEY]: TYPE_FRONTEND_MODEL,
201
201
  attributes: /**
202
202
  * Narrows the runtime value to the documented type.
203
- @type {Record<string, ?>} */ (serializeFrontendModelTransportValueInternal(modelAttributes, seenModels)),
203
+ * @type {Record<string, ?>} */ (serializeFrontendModelTransportValueInternal(modelAttributes, seenModels)),
204
204
  modelName
205
205
  }
206
206
 
@@ -212,7 +212,7 @@ function serializeFrontendModelTransportValueInternal(value, seenModels) {
212
212
 
213
213
  /**
214
214
  * Preloaded relationships.
215
- @type {Record<string, ?>} */
215
+ * @type {Record<string, ?>} */
216
216
  const preloadedRelationships = {}
217
217
  const relationshipsMap = value.getModelClass().getRelationshipsMap()
218
218
 
@@ -241,7 +241,7 @@ function serializeFrontendModelTransportValueInternal(value, seenModels) {
241
241
  if (isPlainObject(value)) {
242
242
  /**
243
243
  * Serialized.
244
- @type {Record<string, ?>} */
244
+ * @type {Record<string, ?>} */
245
245
  const serialized = {}
246
246
 
247
247
  for (const [key, nestedValue] of Object.entries(value)) {
@@ -262,11 +262,11 @@ function serializeFrontendModelTransportValueInternal(value, seenModels) {
262
262
  function deserializeFrontendModelMarker(marker) {
263
263
  const attributes = /**
264
264
  * Narrows the runtime value to the documented type.
265
- @type {Record<string, ?>} */ (deserializeFrontendModelTransportValue(marker.attributes))
265
+ * @type {Record<string, ?>} */ (deserializeFrontendModelTransportValue(marker.attributes))
266
266
  const preloadedRelationships = isPlainObject(marker.preloadedRelationships)
267
267
  ? /**
268
268
  * Narrows the runtime value to the documented type.
269
- @type {Record<string, ?>} */ (deserializeFrontendModelTransportValue(marker.preloadedRelationships))
269
+ * @type {Record<string, ?>} */ (deserializeFrontendModelTransportValue(marker.preloadedRelationships))
270
270
  : {}
271
271
  const modelClass = resolveFrontendModelClass(marker.modelName)
272
272
 
@@ -320,7 +320,7 @@ export function deserializeFrontendModelTransportValue(value) {
320
320
  if (isDateMarker(value)) {
321
321
  const dateValue = /**
322
322
  * Narrows the runtime value to the documented type.
323
- @type {{value: string}} */ (value).value
323
+ * @type {{value: string}} */ (value).value
324
324
 
325
325
  return new Date(dateValue)
326
326
  }
@@ -328,7 +328,7 @@ export function deserializeFrontendModelTransportValue(value) {
328
328
  if (isBigIntMarker(value)) {
329
329
  const bigintValue = /**
330
330
  * Narrows the runtime value to the documented type.
331
- @type {{value: string}} */ (value).value
331
+ * @type {{value: string}} */ (value).value
332
332
 
333
333
  return BigInt(bigintValue)
334
334
  }
@@ -336,7 +336,7 @@ export function deserializeFrontendModelTransportValue(value) {
336
336
  if (isNonFiniteNumberMarker(value)) {
337
337
  const numberValue = /**
338
338
  * Narrows the runtime value to the documented type.
339
- @type {{value: string}} */ (value).value
339
+ * @type {{value: string}} */ (value).value
340
340
 
341
341
  if (numberValue === NUMBER_NAN) return Number.NaN
342
342
  if (numberValue === NUMBER_POSITIVE_INFINITY) return Number.POSITIVE_INFINITY
@@ -355,7 +355,7 @@ export function deserializeFrontendModelTransportValue(value) {
355
355
  if (isPlainObject(value)) {
356
356
  /**
357
357
  * Deserialized.
358
- @type {Record<string, ?>} */
358
+ * @type {Record<string, ?>} */
359
359
  const deserialized = {}
360
360
 
361
361
  for (const [key, nestedValue] of Object.entries(value)) {
@@ -9,25 +9,25 @@ import useModelClassEvent from "./use-model-class-event.js"
9
9
 
10
10
  /**
11
11
  * FrontendModelClass type.
12
- @typedef {import("./base.js").FrontendModelClass} FrontendModelClass */
12
+ * @typedef {import("./base.js").FrontendModelClass} FrontendModelClass */
13
13
  /**
14
14
  * FrontendModelInstance type.
15
- @typedef {import("./base.js").default} FrontendModelInstance */
15
+ * @typedef {import("./base.js").default} FrontendModelInstance */
16
16
  /**
17
17
  * FrontendModelClassDestroyEventPayload type.
18
- @typedef {import("./use-model-class-event.js").FrontendModelDestroyEventPayload} FrontendModelClassDestroyEventPayload */
18
+ * @typedef {import("./use-model-class-event.js").FrontendModelDestroyEventPayload} FrontendModelClassDestroyEventPayload */
19
19
  /**
20
20
  * Defines this typedef.
21
- @typedef {{id: string}} FrontendModelInstanceDestroyEventPayload */
21
+ * @typedef {{id: string}} FrontendModelInstanceDestroyEventPayload */
22
22
  /**
23
23
  * FrontendModelDestroyEventPayload type.
24
- @typedef {FrontendModelClassDestroyEventPayload | FrontendModelInstanceDestroyEventPayload} FrontendModelDestroyEventPayload */
24
+ * @typedef {FrontendModelClassDestroyEventPayload | FrontendModelInstanceDestroyEventPayload} FrontendModelDestroyEventPayload */
25
25
  /**
26
26
  * UseDestroyedEventOptions type.
27
- @typedef {import("./use-model-class-event.js").UseModelClassEventOptions} UseDestroyedEventOptions */
27
+ * @typedef {import("./use-model-class-event.js").UseModelClassEventOptions} UseDestroyedEventOptions */
28
28
  /**
29
29
  * FrontendModelDestroyEventCallback type.
30
- @typedef {(payload: FrontendModelDestroyEventPayload) => void} FrontendModelDestroyEventCallback */
30
+ * @typedef {(payload: FrontendModelDestroyEventPayload) => void} FrontendModelDestroyEventCallback */
31
31
 
32
32
  /**
33
33
  * Runs assert no unknown options.
@@ -94,7 +94,7 @@ function useInstanceDestroyedEvent(modelOrModels, callback, options) {
94
94
  const eventCallback = useMemo(() => {
95
95
  const wrappedCallback = (/**
96
96
  * Narrows the runtime value to the documented type.
97
- @type {FrontendModelInstanceDestroyEventPayload} */ payload) => {
97
+ * @type {FrontendModelInstanceDestroyEventPayload} */ payload) => {
98
98
  if (activeRef.current) callbackRef.current(payload)
99
99
  }
100
100
 
@@ -113,11 +113,11 @@ function useInstanceDestroyedEvent(modelOrModels, callback, options) {
113
113
  let closed = false
114
114
  /**
115
115
  * Unsubscribe callbacks.
116
- @type {Array<() => void>} */
116
+ * @type {Array<() => void>} */
117
117
  const unsubscribeCallbacks = []
118
118
  const subscriptionCallback = (/**
119
119
  * Narrows the runtime value to the documented type.
120
- @type {FrontendModelInstanceDestroyEventPayload} */ payload) => {
120
+ * @type {FrontendModelInstanceDestroyEventPayload} */ payload) => {
121
121
  if (!closed) eventCallback(payload)
122
122
  }
123
123
 
@@ -7,28 +7,28 @@ import clearPendingDebouncedCallback from "./clear-pending-debounced-callback.js
7
7
 
8
8
  /**
9
9
  * FrontendModelClass type.
10
- @typedef {import("./base.js").FrontendModelClass} FrontendModelClass */
10
+ * @typedef {import("./base.js").FrontendModelClass} FrontendModelClass */
11
11
  /**
12
12
  * FrontendModelInstance type.
13
- @typedef {InstanceType<FrontendModelClass>} FrontendModelInstance */
13
+ * @typedef {InstanceType<FrontendModelClass>} FrontendModelInstance */
14
14
  /**
15
15
  * FrontendModelClassEventName type.
16
- @typedef {"create" | "update" | "destroy"} FrontendModelClassEventName */
16
+ * @typedef {"create" | "update" | "destroy"} FrontendModelClassEventName */
17
17
  /**
18
18
  * Defines this typedef.
19
- @typedef {{id: string, model: FrontendModelInstance}} FrontendModelCreateUpdateEventPayload */
19
+ * @typedef {{id: string, model: FrontendModelInstance}} FrontendModelCreateUpdateEventPayload */
20
20
  /**
21
21
  * Defines this typedef.
22
- @typedef {{id: string}} FrontendModelDestroyEventPayload */
22
+ * @typedef {{id: string}} FrontendModelDestroyEventPayload */
23
23
  /**
24
24
  * FrontendModelClassEventPayload type.
25
- @typedef {FrontendModelCreateUpdateEventPayload | FrontendModelDestroyEventPayload} FrontendModelClassEventPayload */
25
+ * @typedef {FrontendModelCreateUpdateEventPayload | FrontendModelDestroyEventPayload} FrontendModelClassEventPayload */
26
26
  /**
27
27
  * FrontendModelClassEventCallback type.
28
- @typedef {(payload: FrontendModelClassEventPayload) => void} FrontendModelClassEventCallback */
28
+ * @typedef {(payload: FrontendModelClassEventPayload) => void} FrontendModelClassEventCallback */
29
29
  /**
30
30
  * Defines this typedef.
31
- @typedef {{active?: boolean, debounce?: boolean | number, onConnected?: () => void} & import("./query.js").FrontendModelEventOptionsObject} UseModelClassEventOptions */
31
+ * @typedef {{active?: boolean, debounce?: boolean | number, onConnected?: () => void} & import("./query.js").FrontendModelEventOptionsObject} UseModelClassEventOptions */
32
32
 
33
33
  /**
34
34
  * Runs assert no unknown options.
@@ -113,7 +113,7 @@ export default function useModelClassEvent(modelClass, eventOrEvents, callback,
113
113
  const eventCallback = useMemo(() => {
114
114
  const wrappedCallback = (/**
115
115
  * Narrows the runtime value to the documented type.
116
- @type {FrontendModelClassEventPayload} */ payload) => {
116
+ * @type {FrontendModelClassEventPayload} */ payload) => {
117
117
  if (activeRef.current) callbackRef.current(payload)
118
118
  }
119
119
 
@@ -129,11 +129,11 @@ export default function useModelClassEvent(modelClass, eventOrEvents, callback,
129
129
  let closed = false
130
130
  /**
131
131
  * Unsubscribe callbacks.
132
- @type {Array<() => void>} */
132
+ * @type {Array<() => void>} */
133
133
  const unsubscribeCallbacks = []
134
134
  const subscriptionCallback = (/**
135
135
  * Narrows the runtime value to the documented type.
136
- @type {FrontendModelClassEventPayload} */ payload) => {
136
+ * @type {FrontendModelClassEventPayload} */ payload) => {
137
137
  if (!closed) eventCallback(payload)
138
138
  }
139
139