velocious 1.0.577 → 1.0.579

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 (1676) hide show
  1. package/README.md +12 -6
  2. package/build/application.js +3 -3
  3. package/build/authorization/ability.js +6 -6
  4. package/build/authorization/base-resource.js +1 -1
  5. package/build/background-jobs/client.js +2 -2
  6. package/build/background-jobs/forked-runner-child.js +4 -4
  7. package/build/background-jobs/job-runner.js +2 -2
  8. package/build/background-jobs/job.js +6 -6
  9. package/build/background-jobs/json-socket.js +1 -1
  10. package/build/background-jobs/main.js +13 -13
  11. package/build/background-jobs/normalize-error.js +2 -2
  12. package/build/background-jobs/pooled-runner-child.js +3 -3
  13. package/build/background-jobs/scheduler.js +1 -1
  14. package/build/background-jobs/status-reporter.js +2 -2
  15. package/build/background-jobs/store.js +23 -23
  16. package/build/background-jobs/types.js +6 -6
  17. package/build/background-jobs/web/controller.js +6 -6
  18. package/build/background-jobs/web/counts-channel.js +1 -1
  19. package/build/background-jobs/worker.js +8 -8
  20. package/build/beacon/client.js +3 -3
  21. package/build/beacon/in-process-client.js +3 -3
  22. package/build/beacon/types.js +1 -1
  23. package/build/cli/base-command.js +1 -1
  24. package/build/cli/commands/console.js +1 -1
  25. package/build/cli/commands/db/schema/dump.js +1 -1
  26. package/build/cli/commands/db/schema/load.js +1 -1
  27. package/build/cli/commands/db/seed.js +1 -1
  28. package/build/cli/commands/generate/frontend-models.js +1 -1
  29. package/build/cli/commands/lint/relationships.js +1 -1
  30. package/build/cli/commands/run-script.js +1 -1
  31. package/build/cli/commands/runner.js +1 -1
  32. package/build/cli/index.js +2 -2
  33. package/build/cli/tenant-database-command-helper.js +2 -2
  34. package/build/configuration-types.js +48 -47
  35. package/build/configuration.js +150 -65
  36. package/build/controller.js +11 -8
  37. package/build/current.js +2 -2
  38. package/build/database/annotations-async-hooks.js +3 -3
  39. package/build/database/annotations.js +1 -1
  40. package/build/database/drivers/base-column.js +1 -1
  41. package/build/database/drivers/base-foreign-key.js +1 -1
  42. package/build/database/drivers/base-table.js +1 -1
  43. package/build/database/drivers/base.js +18 -18
  44. package/build/database/drivers/mssql/column.js +1 -1
  45. package/build/database/drivers/mssql/index.js +2 -2
  46. package/build/database/drivers/mssql/options.js +1 -1
  47. package/build/database/drivers/mssql/structure-sql.js +1 -1
  48. package/build/database/drivers/mssql/table.js +1 -1
  49. package/build/database/drivers/mysql/column.js +1 -1
  50. package/build/database/drivers/mysql/index.js +4 -4
  51. package/build/database/drivers/mysql/options.js +1 -1
  52. package/build/database/drivers/mysql/query.js +7 -7
  53. package/build/database/drivers/mysql/structure-sql.js +71 -10
  54. package/build/database/drivers/pgsql/column.js +1 -1
  55. package/build/database/drivers/pgsql/index.js +6 -6
  56. package/build/database/drivers/pgsql/structure-sql.js +1 -1
  57. package/build/database/drivers/sqlite/base.js +7 -7
  58. package/build/database/drivers/sqlite/column.js +1 -1
  59. package/build/database/drivers/sqlite/connection-sql-js.js +1 -1
  60. package/build/database/drivers/sqlite/foreign-key.js +1 -1
  61. package/build/database/drivers/sqlite/index.js +1 -1
  62. package/build/database/drivers/sqlite/index.native.js +2 -2
  63. package/build/database/drivers/sqlite/index.web.js +2 -2
  64. package/build/database/drivers/sqlite/query.js +2 -2
  65. package/build/database/drivers/sqlite/query.native.js +2 -2
  66. package/build/database/drivers/sqlite/query.web.js +2 -2
  67. package/build/database/drivers/sqlite/table-rebuilder.js +1 -1
  68. package/build/database/migration/index.js +2 -2
  69. package/build/database/migrator/types.js +2 -2
  70. package/build/database/operation.js +59 -6
  71. package/build/database/pool/async-tracked-multi-connection.js +75 -24
  72. package/build/database/pool/base-methods-forward.js +2 -2
  73. package/build/database/pool/base.js +48 -17
  74. package/build/database/pool/single-multi-use.js +501 -103
  75. package/build/database/query/delete-base.js +1 -1
  76. package/build/database/query/index.js +3 -3
  77. package/build/database/query/insert-base.js +4 -4
  78. package/build/database/query/model-class-query.js +39 -39
  79. package/build/database/query/preloader/belongs-to.js +2 -2
  80. package/build/database/query/preloader/ensure-model-class-initialized.js +3 -2
  81. package/build/database/query/preloader/has-many.js +3 -3
  82. package/build/database/query/preloader/has-one.js +1 -1
  83. package/build/database/query/preloader.js +9 -2
  84. package/build/database/query/query-data.js +7 -7
  85. package/build/database/query/update-base.js +3 -3
  86. package/build/database/query/upsert-base.js +2 -2
  87. package/build/database/query/where-model-class-hash.js +13 -13
  88. package/build/database/query/with-count.js +12 -12
  89. package/build/database/query-parser/options.js +2 -2
  90. package/build/database/query-parser/select-parser.js +1 -1
  91. package/build/database/record/acts-as-list.js +2 -2
  92. package/build/database/record/attachments/handle.js +6 -6
  93. package/build/database/record/attachments/normalize-input.js +11 -11
  94. package/build/database/record/attachments/storage-drivers/filesystem.js +1 -1
  95. package/build/database/record/attachments/storage-drivers/native.js +5 -5
  96. package/build/database/record/attachments/storage-drivers/s3.js +10 -10
  97. package/build/database/record/attachments/store.js +24 -20
  98. package/build/database/record/auditing.js +123 -29
  99. package/build/database/record/counter-cache-magnitude.js +11 -11
  100. package/build/database/record/index.js +227 -174
  101. package/build/database/record/instance-relationships/base.js +4 -4
  102. package/build/database/record/instance-relationships/belongs-to.js +1 -1
  103. package/build/database/record/instance-relationships/has-many.js +3 -3
  104. package/build/database/record/instance-relationships/has-one.js +1 -1
  105. package/build/database/record/record-not-found-error.js +1 -0
  106. package/build/database/record/relationships/base.js +22 -0
  107. package/build/database/record/state-machine.js +6 -6
  108. package/build/database/record/validators/base.js +1 -1
  109. package/build/database/structure-sql-loader.js +3 -3
  110. package/build/database/table-data/table-column.js +3 -3
  111. package/build/database/use-live-query.js +3 -3
  112. package/build/environment-handlers/base.js +56 -37
  113. package/build/environment-handlers/browser.js +1 -1
  114. package/build/environment-handlers/node/cli/commands/console.js +4 -4
  115. package/build/environment-handlers/node/cli/commands/db/seed.js +2 -2
  116. package/build/environment-handlers/node/cli/commands/generate/base-models.js +1 -1
  117. package/build/environment-handlers/node/cli/commands/run-script.js +2 -2
  118. package/build/environment-handlers/node/cli/commands/runner.js +2 -2
  119. package/build/environment-handlers/node/cli/commands/server.js +1 -1
  120. package/build/environment-handlers/node.js +36 -36
  121. package/build/error-logger.js +2 -2
  122. package/build/error-reporting/request-details.js +32 -32
  123. package/build/frontend-model-controller.js +215 -213
  124. package/build/frontend-model-resource/base-resource.js +44 -44
  125. package/build/frontend-model-resource/velocious-attachment-resource.js +1 -1
  126. package/build/frontend-models/base.js +146 -142
  127. package/build/frontend-models/clear-pending-debounced-callback.js +2 -2
  128. package/build/frontend-models/model-registry.js +4 -4
  129. package/build/frontend-models/outgoing-event-buffer.js +1 -1
  130. package/build/frontend-models/preloader.js +1 -1
  131. package/build/frontend-models/query.js +60 -60
  132. package/build/frontend-models/resource-definition.js +9 -9
  133. package/build/frontend-models/transport-serialization.js +27 -27
  134. package/build/frontend-models/websocket-channel.js +4 -4
  135. package/build/frontend-models/websocket-publishers.js +1 -1
  136. package/build/http-client/request.js +1 -1
  137. package/build/http-client/response.js +1 -1
  138. package/build/http-server/client/index.js +4 -4
  139. package/build/http-server/client/params-to-object.js +16 -16
  140. package/build/http-server/client/request-buffer/index.js +5 -2
  141. package/build/http-server/client/request-parser.js +2 -2
  142. package/build/http-server/client/request-runner.js +2 -2
  143. package/build/http-server/client/request.js +2 -2
  144. package/build/http-server/client/websocket-request.js +6 -6
  145. package/build/http-server/client/websocket-session.js +28 -28
  146. package/build/http-server/cookie.js +2 -2
  147. package/build/http-server/development-reloader.js +1 -1
  148. package/build/http-server/index.js +5 -5
  149. package/build/http-server/remote-address.js +1 -1
  150. package/build/http-server/server-lock.js +4 -4
  151. package/build/http-server/websocket-channel-subscribers.js +4 -4
  152. package/build/http-server/websocket-channel.js +1 -1
  153. package/build/http-server/websocket-connection.js +3 -3
  154. package/build/http-server/websocket-event-log-store.js +9 -9
  155. package/build/http-server/websocket-events-host.js +7 -7
  156. package/build/http-server/websocket-events.js +4 -4
  157. package/build/http-server/worker-handler/channel-subscriber-dispatch.js +1 -1
  158. package/build/http-server/worker-handler/in-process.js +5 -5
  159. package/build/http-server/worker-handler/index.js +10 -10
  160. package/build/http-server/worker-handler/worker-thread.js +8 -8
  161. package/build/index.d.ts.map +1 -1
  162. package/build/logger/base-logger.js +1 -1
  163. package/build/logger.js +12 -12
  164. package/build/mailer/backends/smtp.js +3 -3
  165. package/build/mailer/base.js +14 -14
  166. package/build/mailer/delivery.js +3 -3
  167. package/build/mailer/index.js +1 -1
  168. package/build/mailer.js +1 -1
  169. package/build/plugins/sqljs-wasm-route-controller.js +1 -1
  170. package/build/record-payload-values.js +3 -3
  171. package/build/routes/base-route.js +5 -5
  172. package/build/routes/basic-route.js +4 -4
  173. package/build/routes/get-route.js +2 -2
  174. package/build/routes/hooks/frontend-model-command-route-hook.js +1 -1
  175. package/build/routes/index.js +3 -3
  176. package/build/routes/namespace-route.js +1 -1
  177. package/build/routes/plugin-routes.js +1 -1
  178. package/build/routes/post-route.js +2 -2
  179. package/build/routes/resolver.js +5 -5
  180. package/build/routes/resource-route.js +1 -1
  181. package/build/src/application.d.ts +26 -29
  182. package/build/src/application.d.ts.map +1 -1
  183. package/build/src/application.js +4 -4
  184. package/build/src/authorization/ability.d.ts +47 -53
  185. package/build/src/authorization/ability.d.ts.map +1 -1
  186. package/build/src/authorization/ability.js +7 -7
  187. package/build/src/authorization/base-resource.d.ts +13 -13
  188. package/build/src/authorization/base-resource.d.ts.map +1 -1
  189. package/build/src/authorization/base-resource.js +2 -2
  190. package/build/src/background-jobs/client.d.ts +9 -9
  191. package/build/src/background-jobs/client.d.ts.map +1 -1
  192. package/build/src/background-jobs/client.js +3 -3
  193. package/build/src/background-jobs/cron-expression.d.ts +25 -16
  194. package/build/src/background-jobs/cron-expression.d.ts.map +1 -1
  195. package/build/src/background-jobs/forked-runner-child.js +5 -5
  196. package/build/src/background-jobs/job-record.d.ts +4 -3
  197. package/build/src/background-jobs/job-record.d.ts.map +1 -1
  198. package/build/src/background-jobs/job-registry.d.ts +6 -6
  199. package/build/src/background-jobs/job-registry.d.ts.map +1 -1
  200. package/build/src/background-jobs/job-runner.d.ts +9 -9
  201. package/build/src/background-jobs/job-runner.d.ts.map +1 -1
  202. package/build/src/background-jobs/job-runner.js +3 -3
  203. package/build/src/background-jobs/job.d.ts +14 -14
  204. package/build/src/background-jobs/job.d.ts.map +1 -1
  205. package/build/src/background-jobs/job.js +7 -7
  206. package/build/src/background-jobs/json-socket.d.ts +9 -10
  207. package/build/src/background-jobs/json-socket.d.ts.map +1 -1
  208. package/build/src/background-jobs/json-socket.js +2 -2
  209. package/build/src/background-jobs/main.d.ts +56 -59
  210. package/build/src/background-jobs/main.d.ts.map +1 -1
  211. package/build/src/background-jobs/main.js +14 -14
  212. package/build/src/background-jobs/normalize-error.d.ts +2 -2
  213. package/build/src/background-jobs/normalize-error.d.ts.map +1 -1
  214. package/build/src/background-jobs/normalize-error.js +3 -3
  215. package/build/src/background-jobs/pooled-runner-child.js +4 -4
  216. package/build/src/background-jobs/runner-graceful-shutdown.d.ts +7 -12
  217. package/build/src/background-jobs/runner-graceful-shutdown.d.ts.map +1 -1
  218. package/build/src/background-jobs/runner-process-title.d.ts.map +1 -1
  219. package/build/src/background-jobs/scheduler.d.ts +41 -41
  220. package/build/src/background-jobs/scheduler.d.ts.map +1 -1
  221. package/build/src/background-jobs/scheduler.js +2 -2
  222. package/build/src/background-jobs/socket-request.d.ts +14 -14
  223. package/build/src/background-jobs/socket-request.d.ts.map +1 -1
  224. package/build/src/background-jobs/status-reporter.d.ts +28 -28
  225. package/build/src/background-jobs/status-reporter.d.ts.map +1 -1
  226. package/build/src/background-jobs/status-reporter.js +3 -3
  227. package/build/src/background-jobs/store.d.ts +100 -103
  228. package/build/src/background-jobs/store.d.ts.map +1 -1
  229. package/build/src/background-jobs/store.js +24 -24
  230. package/build/src/background-jobs/types.d.ts +124 -124
  231. package/build/src/background-jobs/types.d.ts.map +1 -1
  232. package/build/src/background-jobs/types.js +7 -7
  233. package/build/src/background-jobs/web/authorization.d.ts +2 -2
  234. package/build/src/background-jobs/web/authorization.d.ts.map +1 -1
  235. package/build/src/background-jobs/web/controller.d.ts +13 -13
  236. package/build/src/background-jobs/web/controller.d.ts.map +1 -1
  237. package/build/src/background-jobs/web/controller.js +7 -7
  238. package/build/src/background-jobs/web/counts-channel.d.ts +8 -8
  239. package/build/src/background-jobs/web/counts-channel.d.ts.map +1 -1
  240. package/build/src/background-jobs/web/counts-channel.js +2 -2
  241. package/build/src/background-jobs/web/index.d.ts +4 -4
  242. package/build/src/background-jobs/web/index.d.ts.map +1 -1
  243. package/build/src/background-jobs/web/path-matcher.d.ts +18 -13
  244. package/build/src/background-jobs/web/path-matcher.d.ts.map +1 -1
  245. package/build/src/background-jobs/web/registry.d.ts +21 -24
  246. package/build/src/background-jobs/web/registry.d.ts.map +1 -1
  247. package/build/src/background-jobs/worker.d.ts +74 -77
  248. package/build/src/background-jobs/worker.d.ts.map +1 -1
  249. package/build/src/background-jobs/worker.js +9 -9
  250. package/build/src/beacon/client.d.ts +30 -34
  251. package/build/src/beacon/client.d.ts.map +1 -1
  252. package/build/src/beacon/client.js +4 -4
  253. package/build/src/beacon/in-process-broker.d.ts +6 -9
  254. package/build/src/beacon/in-process-broker.d.ts.map +1 -1
  255. package/build/src/beacon/in-process-client.d.ts +17 -21
  256. package/build/src/beacon/in-process-client.d.ts.map +1 -1
  257. package/build/src/beacon/in-process-client.js +4 -4
  258. package/build/src/beacon/server.d.ts +15 -15
  259. package/build/src/beacon/server.d.ts.map +1 -1
  260. package/build/src/beacon/types.d.ts +21 -46
  261. package/build/src/beacon/types.d.ts.map +1 -1
  262. package/build/src/beacon/types.js +2 -2
  263. package/build/src/cli/base-command.d.ts +25 -28
  264. package/build/src/cli/base-command.d.ts.map +1 -1
  265. package/build/src/cli/base-command.js +2 -2
  266. package/build/src/cli/browser-cli.d.ts +1 -1
  267. package/build/src/cli/browser-cli.d.ts.map +1 -1
  268. package/build/src/cli/commands/background-jobs-main.d.ts +2 -1
  269. package/build/src/cli/commands/background-jobs-main.d.ts.map +1 -1
  270. package/build/src/cli/commands/background-jobs-runner.d.ts +2 -1
  271. package/build/src/cli/commands/background-jobs-runner.d.ts.map +1 -1
  272. package/build/src/cli/commands/background-jobs-worker.d.ts +2 -1
  273. package/build/src/cli/commands/background-jobs-worker.d.ts.map +1 -1
  274. package/build/src/cli/commands/beacon.d.ts +2 -1
  275. package/build/src/cli/commands/beacon.d.ts.map +1 -1
  276. package/build/src/cli/commands/console.d.ts +6 -1
  277. package/build/src/cli/commands/console.d.ts.map +1 -1
  278. package/build/src/cli/commands/console.js +2 -2
  279. package/build/src/cli/commands/db/base-command.d.ts +1 -1
  280. package/build/src/cli/commands/db/base-command.d.ts.map +1 -1
  281. package/build/src/cli/commands/db/create.d.ts +1 -1
  282. package/build/src/cli/commands/db/create.d.ts.map +1 -1
  283. package/build/src/cli/commands/db/drop.d.ts +1 -1
  284. package/build/src/cli/commands/db/drop.d.ts.map +1 -1
  285. package/build/src/cli/commands/db/migrate.d.ts +1 -1
  286. package/build/src/cli/commands/db/migrate.d.ts.map +1 -1
  287. package/build/src/cli/commands/db/reset.d.ts +1 -1
  288. package/build/src/cli/commands/db/reset.d.ts.map +1 -1
  289. package/build/src/cli/commands/db/rollback.d.ts +1 -1
  290. package/build/src/cli/commands/db/rollback.d.ts.map +1 -1
  291. package/build/src/cli/commands/db/schema/dump.d.ts +6 -1
  292. package/build/src/cli/commands/db/schema/dump.d.ts.map +1 -1
  293. package/build/src/cli/commands/db/schema/dump.js +2 -2
  294. package/build/src/cli/commands/db/schema/load.d.ts +6 -1
  295. package/build/src/cli/commands/db/schema/load.d.ts.map +1 -1
  296. package/build/src/cli/commands/db/schema/load.js +2 -2
  297. package/build/src/cli/commands/db/seed.d.ts +6 -1
  298. package/build/src/cli/commands/db/seed.d.ts.map +1 -1
  299. package/build/src/cli/commands/db/seed.js +2 -2
  300. package/build/src/cli/commands/db/tenants/check.d.ts +1 -1
  301. package/build/src/cli/commands/db/tenants/check.d.ts.map +1 -1
  302. package/build/src/cli/commands/db/tenants/create.d.ts +1 -1
  303. package/build/src/cli/commands/db/tenants/create.d.ts.map +1 -1
  304. package/build/src/cli/commands/db/tenants/drop.d.ts +1 -1
  305. package/build/src/cli/commands/db/tenants/drop.d.ts.map +1 -1
  306. package/build/src/cli/commands/db/tenants/migrate.d.ts +1 -1
  307. package/build/src/cli/commands/db/tenants/migrate.d.ts.map +1 -1
  308. package/build/src/cli/commands/destroy/migration.d.ts +2 -1
  309. package/build/src/cli/commands/destroy/migration.d.ts.map +1 -1
  310. package/build/src/cli/commands/generate/base-models.d.ts +2 -1
  311. package/build/src/cli/commands/generate/base-models.d.ts.map +1 -1
  312. package/build/src/cli/commands/generate/frontend-models.d.ts +6 -1
  313. package/build/src/cli/commands/generate/frontend-models.d.ts.map +1 -1
  314. package/build/src/cli/commands/generate/frontend-models.js +2 -2
  315. package/build/src/cli/commands/generate/migration.d.ts +2 -1
  316. package/build/src/cli/commands/generate/migration.d.ts.map +1 -1
  317. package/build/src/cli/commands/generate/model.d.ts +2 -1
  318. package/build/src/cli/commands/generate/model.d.ts.map +1 -1
  319. package/build/src/cli/commands/init.d.ts +4 -2
  320. package/build/src/cli/commands/init.d.ts.map +1 -1
  321. package/build/src/cli/commands/lint/relationships.d.ts +6 -1
  322. package/build/src/cli/commands/lint/relationships.d.ts.map +1 -1
  323. package/build/src/cli/commands/lint/relationships.js +2 -2
  324. package/build/src/cli/commands/routes.d.ts +2 -1
  325. package/build/src/cli/commands/routes.d.ts.map +1 -1
  326. package/build/src/cli/commands/run-script.d.ts +6 -1
  327. package/build/src/cli/commands/run-script.d.ts.map +1 -1
  328. package/build/src/cli/commands/run-script.js +2 -2
  329. package/build/src/cli/commands/runner.d.ts +6 -1
  330. package/build/src/cli/commands/runner.d.ts.map +1 -1
  331. package/build/src/cli/commands/runner.js +2 -2
  332. package/build/src/cli/commands/server.d.ts +2 -1
  333. package/build/src/cli/commands/server.d.ts.map +1 -1
  334. package/build/src/cli/commands/test.d.ts +2 -1
  335. package/build/src/cli/commands/test.d.ts.map +1 -1
  336. package/build/src/cli/index.d.ts +20 -20
  337. package/build/src/cli/index.d.ts.map +1 -1
  338. package/build/src/cli/index.js +3 -3
  339. package/build/src/cli/tenant-database-command-helper.d.ts +13 -13
  340. package/build/src/cli/tenant-database-command-helper.d.ts.map +1 -1
  341. package/build/src/cli/tenant-database-command-helper.js +3 -3
  342. package/build/src/cli/use-browser-cli.d.ts +1 -1
  343. package/build/src/cli/use-browser-cli.d.ts.map +1 -1
  344. package/build/src/configuration-resolver.d.ts +1 -1
  345. package/build/src/configuration-resolver.d.ts.map +1 -1
  346. package/build/src/configuration-types.d.ts +947 -1038
  347. package/build/src/configuration-types.d.ts.map +1 -1
  348. package/build/src/configuration-types.js +49 -48
  349. package/build/src/configuration.d.ts +145 -139
  350. package/build/src/configuration.d.ts.map +1 -1
  351. package/build/src/configuration.js +149 -66
  352. package/build/src/controller.d.ts +37 -35
  353. package/build/src/controller.d.ts.map +1 -1
  354. package/build/src/controller.js +11 -9
  355. package/build/src/current-configuration.d.ts +5 -4
  356. package/build/src/current-configuration.d.ts.map +1 -1
  357. package/build/src/current.d.ts +3 -3
  358. package/build/src/current.d.ts.map +1 -1
  359. package/build/src/current.js +3 -3
  360. package/build/src/database/advisory-lock-runner.d.ts +61 -60
  361. package/build/src/database/advisory-lock-runner.d.ts.map +1 -1
  362. package/build/src/database/annotations-async-hooks.js +4 -4
  363. package/build/src/database/annotations.d.ts +4 -6
  364. package/build/src/database/annotations.d.ts.map +1 -1
  365. package/build/src/database/annotations.js +2 -2
  366. package/build/src/database/column-types.d.ts +1 -1
  367. package/build/src/database/column-types.d.ts.map +1 -1
  368. package/build/src/database/datetime-storage.d.ts +6 -6
  369. package/build/src/database/datetime-storage.d.ts.map +1 -1
  370. package/build/src/database/drivers/base-column.d.ts +3 -3
  371. package/build/src/database/drivers/base-column.d.ts.map +1 -1
  372. package/build/src/database/drivers/base-column.js +2 -2
  373. package/build/src/database/drivers/base-columns-index.d.ts +2 -2
  374. package/build/src/database/drivers/base-columns-index.d.ts.map +1 -1
  375. package/build/src/database/drivers/base-foreign-key.d.ts +7 -7
  376. package/build/src/database/drivers/base-foreign-key.d.ts.map +1 -1
  377. package/build/src/database/drivers/base-foreign-key.js +2 -2
  378. package/build/src/database/drivers/base-table.d.ts +3 -3
  379. package/build/src/database/drivers/base-table.d.ts.map +1 -1
  380. package/build/src/database/drivers/base-table.js +2 -2
  381. package/build/src/database/drivers/base.d.ts +297 -342
  382. package/build/src/database/drivers/base.d.ts.map +1 -1
  383. package/build/src/database/drivers/base.js +19 -19
  384. package/build/src/database/drivers/index-metadata.d.ts +15 -18
  385. package/build/src/database/drivers/index-metadata.d.ts.map +1 -1
  386. package/build/src/database/drivers/mssql/column.d.ts +10 -5
  387. package/build/src/database/drivers/mssql/column.d.ts.map +1 -1
  388. package/build/src/database/drivers/mssql/column.js +2 -2
  389. package/build/src/database/drivers/mssql/columns-index.d.ts +30 -22
  390. package/build/src/database/drivers/mssql/columns-index.d.ts.map +1 -1
  391. package/build/src/database/drivers/mssql/connect-connection.d.ts.map +1 -1
  392. package/build/src/database/drivers/mssql/foreign-key.d.ts +1 -1
  393. package/build/src/database/drivers/mssql/foreign-key.d.ts.map +1 -1
  394. package/build/src/database/drivers/mssql/index.d.ts +250 -9
  395. package/build/src/database/drivers/mssql/index.d.ts.map +1 -1
  396. package/build/src/database/drivers/mssql/index.js +3 -3
  397. package/build/src/database/drivers/mssql/options.d.ts +31 -1
  398. package/build/src/database/drivers/mssql/options.d.ts.map +1 -1
  399. package/build/src/database/drivers/mssql/options.js +2 -2
  400. package/build/src/database/drivers/mssql/query-parser.d.ts +1 -1
  401. package/build/src/database/drivers/mssql/query-parser.d.ts.map +1 -1
  402. package/build/src/database/drivers/mssql/sql/alter-table.d.ts +1 -1
  403. package/build/src/database/drivers/mssql/sql/alter-table.d.ts.map +1 -1
  404. package/build/src/database/drivers/mssql/sql/create-database.d.ts +3 -2
  405. package/build/src/database/drivers/mssql/sql/create-database.d.ts.map +1 -1
  406. package/build/src/database/drivers/mssql/sql/create-index.d.ts +1 -1
  407. package/build/src/database/drivers/mssql/sql/create-index.d.ts.map +1 -1
  408. package/build/src/database/drivers/mssql/sql/create-table.d.ts +1 -1
  409. package/build/src/database/drivers/mssql/sql/create-table.d.ts.map +1 -1
  410. package/build/src/database/drivers/mssql/sql/delete.d.ts +1 -1
  411. package/build/src/database/drivers/mssql/sql/delete.d.ts.map +1 -1
  412. package/build/src/database/drivers/mssql/sql/drop-database.d.ts +14 -1
  413. package/build/src/database/drivers/mssql/sql/drop-database.d.ts.map +1 -1
  414. package/build/src/database/drivers/mssql/sql/drop-table.d.ts +1 -1
  415. package/build/src/database/drivers/mssql/sql/drop-table.d.ts.map +1 -1
  416. package/build/src/database/drivers/mssql/sql/insert.d.ts +1 -1
  417. package/build/src/database/drivers/mssql/sql/insert.d.ts.map +1 -1
  418. package/build/src/database/drivers/mssql/sql/remove-index.d.ts +1 -1
  419. package/build/src/database/drivers/mssql/sql/remove-index.d.ts.map +1 -1
  420. package/build/src/database/drivers/mssql/sql/update.d.ts +1 -1
  421. package/build/src/database/drivers/mssql/sql/update.d.ts.map +1 -1
  422. package/build/src/database/drivers/mssql/sql/upsert.d.ts +1 -1
  423. package/build/src/database/drivers/mssql/sql/upsert.d.ts.map +1 -1
  424. package/build/src/database/drivers/mssql/structure-sql.d.ts +3 -3
  425. package/build/src/database/drivers/mssql/structure-sql.d.ts.map +1 -1
  426. package/build/src/database/drivers/mssql/structure-sql.js +2 -2
  427. package/build/src/database/drivers/mssql/table.d.ts +39 -29
  428. package/build/src/database/drivers/mssql/table.d.ts.map +1 -1
  429. package/build/src/database/drivers/mssql/table.js +2 -2
  430. package/build/src/database/drivers/mysql/column.d.ts +10 -6
  431. package/build/src/database/drivers/mysql/column.d.ts.map +1 -1
  432. package/build/src/database/drivers/mysql/column.js +2 -2
  433. package/build/src/database/drivers/mysql/columns-index.d.ts +3 -1
  434. package/build/src/database/drivers/mysql/columns-index.d.ts.map +1 -1
  435. package/build/src/database/drivers/mysql/foreign-key.d.ts +1 -1
  436. package/build/src/database/drivers/mysql/foreign-key.d.ts.map +1 -1
  437. package/build/src/database/drivers/mysql/index.d.ts +225 -6
  438. package/build/src/database/drivers/mysql/index.d.ts.map +1 -1
  439. package/build/src/database/drivers/mysql/index.js +5 -5
  440. package/build/src/database/drivers/mysql/options.d.ts +7 -1
  441. package/build/src/database/drivers/mysql/options.d.ts.map +1 -1
  442. package/build/src/database/drivers/mysql/options.js +2 -2
  443. package/build/src/database/drivers/mysql/query-parser.d.ts +1 -1
  444. package/build/src/database/drivers/mysql/query-parser.d.ts.map +1 -1
  445. package/build/src/database/drivers/mysql/query-stream.d.ts.map +1 -1
  446. package/build/src/database/drivers/mysql/query.d.ts +2 -2
  447. package/build/src/database/drivers/mysql/query.d.ts.map +1 -1
  448. package/build/src/database/drivers/mysql/query.js +8 -8
  449. package/build/src/database/drivers/mysql/sql/alter-table.d.ts +12 -1
  450. package/build/src/database/drivers/mysql/sql/alter-table.d.ts.map +1 -1
  451. package/build/src/database/drivers/mysql/sql/create-database.d.ts +6 -1
  452. package/build/src/database/drivers/mysql/sql/create-database.d.ts.map +1 -1
  453. package/build/src/database/drivers/mysql/sql/create-index.d.ts +1 -1
  454. package/build/src/database/drivers/mysql/sql/create-index.d.ts.map +1 -1
  455. package/build/src/database/drivers/mysql/sql/create-table.d.ts +1 -1
  456. package/build/src/database/drivers/mysql/sql/create-table.d.ts.map +1 -1
  457. package/build/src/database/drivers/mysql/sql/delete.d.ts +1 -1
  458. package/build/src/database/drivers/mysql/sql/delete.d.ts.map +1 -1
  459. package/build/src/database/drivers/mysql/sql/drop-database.d.ts +1 -1
  460. package/build/src/database/drivers/mysql/sql/drop-database.d.ts.map +1 -1
  461. package/build/src/database/drivers/mysql/sql/drop-table.d.ts +1 -1
  462. package/build/src/database/drivers/mysql/sql/drop-table.d.ts.map +1 -1
  463. package/build/src/database/drivers/mysql/sql/insert.d.ts +1 -1
  464. package/build/src/database/drivers/mysql/sql/insert.d.ts.map +1 -1
  465. package/build/src/database/drivers/mysql/sql/remove-index.d.ts +1 -1
  466. package/build/src/database/drivers/mysql/sql/remove-index.d.ts.map +1 -1
  467. package/build/src/database/drivers/mysql/sql/update.d.ts +1 -1
  468. package/build/src/database/drivers/mysql/sql/update.d.ts.map +1 -1
  469. package/build/src/database/drivers/mysql/sql/upsert.d.ts +1 -1
  470. package/build/src/database/drivers/mysql/sql/upsert.d.ts.map +1 -1
  471. package/build/src/database/drivers/mysql/structure-sql.d.ts +14 -3
  472. package/build/src/database/drivers/mysql/structure-sql.d.ts.map +1 -1
  473. package/build/src/database/drivers/mysql/structure-sql.js +62 -11
  474. package/build/src/database/drivers/mysql/table.d.ts +11 -6
  475. package/build/src/database/drivers/mysql/table.d.ts.map +1 -1
  476. package/build/src/database/drivers/pgsql/column.d.ts +10 -5
  477. package/build/src/database/drivers/pgsql/column.d.ts.map +1 -1
  478. package/build/src/database/drivers/pgsql/column.js +2 -2
  479. package/build/src/database/drivers/pgsql/columns-index.d.ts +30 -22
  480. package/build/src/database/drivers/pgsql/columns-index.d.ts.map +1 -1
  481. package/build/src/database/drivers/pgsql/foreign-key.d.ts +1 -1
  482. package/build/src/database/drivers/pgsql/foreign-key.d.ts.map +1 -1
  483. package/build/src/database/drivers/pgsql/index.d.ts +157 -6
  484. package/build/src/database/drivers/pgsql/index.d.ts.map +1 -1
  485. package/build/src/database/drivers/pgsql/index.js +7 -7
  486. package/build/src/database/drivers/pgsql/options.d.ts +1 -1
  487. package/build/src/database/drivers/pgsql/options.d.ts.map +1 -1
  488. package/build/src/database/drivers/pgsql/query-parser.d.ts +1 -1
  489. package/build/src/database/drivers/pgsql/query-parser.d.ts.map +1 -1
  490. package/build/src/database/drivers/pgsql/sql/alter-table.d.ts +1 -1
  491. package/build/src/database/drivers/pgsql/sql/alter-table.d.ts.map +1 -1
  492. package/build/src/database/drivers/pgsql/sql/create-database.d.ts +2 -1
  493. package/build/src/database/drivers/pgsql/sql/create-database.d.ts.map +1 -1
  494. package/build/src/database/drivers/pgsql/sql/create-index.d.ts +1 -1
  495. package/build/src/database/drivers/pgsql/sql/create-index.d.ts.map +1 -1
  496. package/build/src/database/drivers/pgsql/sql/create-table.d.ts +1 -1
  497. package/build/src/database/drivers/pgsql/sql/create-table.d.ts.map +1 -1
  498. package/build/src/database/drivers/pgsql/sql/delete.d.ts +1 -1
  499. package/build/src/database/drivers/pgsql/sql/delete.d.ts.map +1 -1
  500. package/build/src/database/drivers/pgsql/sql/drop-database.d.ts +1 -1
  501. package/build/src/database/drivers/pgsql/sql/drop-database.d.ts.map +1 -1
  502. package/build/src/database/drivers/pgsql/sql/drop-table.d.ts +1 -1
  503. package/build/src/database/drivers/pgsql/sql/drop-table.d.ts.map +1 -1
  504. package/build/src/database/drivers/pgsql/sql/insert.d.ts +1 -1
  505. package/build/src/database/drivers/pgsql/sql/insert.d.ts.map +1 -1
  506. package/build/src/database/drivers/pgsql/sql/remove-index.d.ts +1 -1
  507. package/build/src/database/drivers/pgsql/sql/remove-index.d.ts.map +1 -1
  508. package/build/src/database/drivers/pgsql/sql/update.d.ts +1 -1
  509. package/build/src/database/drivers/pgsql/sql/update.d.ts.map +1 -1
  510. package/build/src/database/drivers/pgsql/sql/upsert.d.ts +1 -1
  511. package/build/src/database/drivers/pgsql/sql/upsert.d.ts.map +1 -1
  512. package/build/src/database/drivers/pgsql/structure-sql.d.ts +3 -3
  513. package/build/src/database/drivers/pgsql/structure-sql.d.ts.map +1 -1
  514. package/build/src/database/drivers/pgsql/structure-sql.js +2 -2
  515. package/build/src/database/drivers/pgsql/table.d.ts +33 -31
  516. package/build/src/database/drivers/pgsql/table.d.ts.map +1 -1
  517. package/build/src/database/drivers/sqlite/base.d.ts +162 -12
  518. package/build/src/database/drivers/sqlite/base.d.ts.map +1 -1
  519. package/build/src/database/drivers/sqlite/base.js +8 -8
  520. package/build/src/database/drivers/sqlite/column.d.ts +12 -6
  521. package/build/src/database/drivers/sqlite/column.d.ts.map +1 -1
  522. package/build/src/database/drivers/sqlite/column.js +2 -2
  523. package/build/src/database/drivers/sqlite/columns-index.d.ts +5 -1
  524. package/build/src/database/drivers/sqlite/columns-index.d.ts.map +1 -1
  525. package/build/src/database/drivers/sqlite/connection-sql-js.d.ts +9 -9
  526. package/build/src/database/drivers/sqlite/connection-sql-js.d.ts.map +1 -1
  527. package/build/src/database/drivers/sqlite/connection-sql-js.js +2 -2
  528. package/build/src/database/drivers/sqlite/foreign-key.d.ts +5 -4
  529. package/build/src/database/drivers/sqlite/foreign-key.d.ts.map +1 -1
  530. package/build/src/database/drivers/sqlite/foreign-key.js +2 -2
  531. package/build/src/database/drivers/sqlite/index.d.ts +53 -3
  532. package/build/src/database/drivers/sqlite/index.d.ts.map +1 -1
  533. package/build/src/database/drivers/sqlite/index.js +2 -2
  534. package/build/src/database/drivers/sqlite/index.native.d.ts +13 -5
  535. package/build/src/database/drivers/sqlite/index.native.d.ts.map +1 -1
  536. package/build/src/database/drivers/sqlite/index.native.js +3 -3
  537. package/build/src/database/drivers/sqlite/index.web.d.ts +48 -14
  538. package/build/src/database/drivers/sqlite/index.web.d.ts.map +1 -1
  539. package/build/src/database/drivers/sqlite/index.web.js +3 -3
  540. package/build/src/database/drivers/sqlite/options.d.ts +1 -1
  541. package/build/src/database/drivers/sqlite/options.d.ts.map +1 -1
  542. package/build/src/database/drivers/sqlite/query-parser.d.ts +1 -1
  543. package/build/src/database/drivers/sqlite/query-parser.d.ts.map +1 -1
  544. package/build/src/database/drivers/sqlite/query.d.ts +2 -2
  545. package/build/src/database/drivers/sqlite/query.d.ts.map +1 -1
  546. package/build/src/database/drivers/sqlite/query.js +3 -3
  547. package/build/src/database/drivers/sqlite/query.native.d.ts +4 -4
  548. package/build/src/database/drivers/sqlite/query.native.d.ts.map +1 -1
  549. package/build/src/database/drivers/sqlite/query.native.js +3 -3
  550. package/build/src/database/drivers/sqlite/query.web.d.ts +2 -2
  551. package/build/src/database/drivers/sqlite/query.web.d.ts.map +1 -1
  552. package/build/src/database/drivers/sqlite/query.web.js +3 -3
  553. package/build/src/database/drivers/sqlite/sql/alter-table.d.ts +19 -4
  554. package/build/src/database/drivers/sqlite/sql/alter-table.d.ts.map +1 -1
  555. package/build/src/database/drivers/sqlite/sql/create-index.d.ts +1 -1
  556. package/build/src/database/drivers/sqlite/sql/create-index.d.ts.map +1 -1
  557. package/build/src/database/drivers/sqlite/sql/create-table.d.ts +1 -1
  558. package/build/src/database/drivers/sqlite/sql/create-table.d.ts.map +1 -1
  559. package/build/src/database/drivers/sqlite/sql/delete.d.ts +1 -1
  560. package/build/src/database/drivers/sqlite/sql/delete.d.ts.map +1 -1
  561. package/build/src/database/drivers/sqlite/sql/drop-table.d.ts +1 -1
  562. package/build/src/database/drivers/sqlite/sql/drop-table.d.ts.map +1 -1
  563. package/build/src/database/drivers/sqlite/sql/insert.d.ts +1 -1
  564. package/build/src/database/drivers/sqlite/sql/insert.d.ts.map +1 -1
  565. package/build/src/database/drivers/sqlite/sql/remove-index.d.ts +1 -1
  566. package/build/src/database/drivers/sqlite/sql/remove-index.d.ts.map +1 -1
  567. package/build/src/database/drivers/sqlite/sql/update.d.ts +1 -1
  568. package/build/src/database/drivers/sqlite/sql/update.d.ts.map +1 -1
  569. package/build/src/database/drivers/sqlite/sql/upsert.d.ts +1 -1
  570. package/build/src/database/drivers/sqlite/sql/upsert.d.ts.map +1 -1
  571. package/build/src/database/drivers/sqlite/structure-sql.d.ts +1 -1
  572. package/build/src/database/drivers/sqlite/structure-sql.d.ts.map +1 -1
  573. package/build/src/database/drivers/sqlite/table-rebuilder.d.ts +5 -5
  574. package/build/src/database/drivers/sqlite/table-rebuilder.d.ts.map +1 -1
  575. package/build/src/database/drivers/sqlite/table-rebuilder.js +2 -2
  576. package/build/src/database/drivers/sqlite/table.d.ts +15 -5
  577. package/build/src/database/drivers/sqlite/table.d.ts.map +1 -1
  578. package/build/src/database/drivers/sqlite/web-persistence.d.ts +28 -34
  579. package/build/src/database/drivers/sqlite/web-persistence.d.ts.map +1 -1
  580. package/build/src/database/drivers/structure-sql/utils.d.ts +2 -2
  581. package/build/src/database/drivers/structure-sql/utils.d.ts.map +1 -1
  582. package/build/src/database/handler.d.ts.map +1 -1
  583. package/build/src/database/initializer-from-require-context.d.ts +18 -16
  584. package/build/src/database/initializer-from-require-context.d.ts.map +1 -1
  585. package/build/src/database/live-query.d.ts +13 -24
  586. package/build/src/database/live-query.d.ts.map +1 -1
  587. package/build/src/database/migration/index.d.ts +146 -169
  588. package/build/src/database/migration/index.d.ts.map +1 -1
  589. package/build/src/database/migration/index.js +3 -3
  590. package/build/src/database/migrations-ledger.d.ts.map +1 -1
  591. package/build/src/database/migrator/files-finder.d.ts +1 -1
  592. package/build/src/database/migrator/files-finder.d.ts.map +1 -1
  593. package/build/src/database/migrator/types.d.ts +26 -2
  594. package/build/src/database/migrator/types.d.ts.map +1 -1
  595. package/build/src/database/migrator/types.js +24 -1
  596. package/build/src/database/migrator.d.ts +10 -10
  597. package/build/src/database/migrator.d.ts.map +1 -1
  598. package/build/src/database/operation-connection.d.ts +3 -3
  599. package/build/src/database/operation-connection.d.ts.map +1 -1
  600. package/build/src/database/operation-lease.d.ts +4 -4
  601. package/build/src/database/operation-lease.d.ts.map +1 -1
  602. package/build/src/database/operation.d.ts +38 -7
  603. package/build/src/database/operation.d.ts.map +1 -1
  604. package/build/src/database/operation.js +55 -8
  605. package/build/src/database/pool/async-tracked-multi-connection.d.ts +174 -79
  606. package/build/src/database/pool/async-tracked-multi-connection.d.ts.map +1 -1
  607. package/build/src/database/pool/async-tracked-multi-connection.js +70 -25
  608. package/build/src/database/pool/base-methods-forward.d.ts.map +1 -1
  609. package/build/src/database/pool/base-methods-forward.js +3 -3
  610. package/build/src/database/pool/base.d.ts +93 -71
  611. package/build/src/database/pool/base.d.ts.map +1 -1
  612. package/build/src/database/pool/base.js +47 -17
  613. package/build/src/database/pool/single-multi-use.d.ts +243 -10
  614. package/build/src/database/pool/single-multi-use.d.ts.map +1 -1
  615. package/build/src/database/pool/single-multi-use.js +467 -103
  616. package/build/src/database/query/alter-table-base.d.ts +8 -3
  617. package/build/src/database/query/alter-table-base.d.ts.map +1 -1
  618. package/build/src/database/query/base.d.ts +3 -3
  619. package/build/src/database/query/base.d.ts.map +1 -1
  620. package/build/src/database/query/create-database-base.d.ts +28 -22
  621. package/build/src/database/query/create-database-base.d.ts.map +1 -1
  622. package/build/src/database/query/create-index-base.d.ts +32 -30
  623. package/build/src/database/query/create-index-base.d.ts.map +1 -1
  624. package/build/src/database/query/create-table-base.d.ts +7 -7
  625. package/build/src/database/query/create-table-base.d.ts.map +1 -1
  626. package/build/src/database/query/delete-base.d.ts +5 -5
  627. package/build/src/database/query/delete-base.d.ts.map +1 -1
  628. package/build/src/database/query/delete-base.js +2 -2
  629. package/build/src/database/query/drop-database-base.d.ts +22 -18
  630. package/build/src/database/query/drop-database-base.d.ts.map +1 -1
  631. package/build/src/database/query/drop-table-base.d.ts +11 -6
  632. package/build/src/database/query/drop-table-base.d.ts.map +1 -1
  633. package/build/src/database/query/from-base.d.ts.map +1 -1
  634. package/build/src/database/query/from-plain.d.ts +3 -2
  635. package/build/src/database/query/from-plain.d.ts.map +1 -1
  636. package/build/src/database/query/from-table.d.ts +3 -2
  637. package/build/src/database/query/from-table.d.ts.map +1 -1
  638. package/build/src/database/query/index.d.ts +92 -107
  639. package/build/src/database/query/index.d.ts.map +1 -1
  640. package/build/src/database/query/index.js +4 -4
  641. package/build/src/database/query/insert-base.d.ts +18 -18
  642. package/build/src/database/query/insert-base.d.ts.map +1 -1
  643. package/build/src/database/query/insert-base.js +5 -5
  644. package/build/src/database/query/join-base.d.ts +1 -1
  645. package/build/src/database/query/join-base.d.ts.map +1 -1
  646. package/build/src/database/query/join-object.d.ts +9 -15
  647. package/build/src/database/query/join-object.d.ts.map +1 -1
  648. package/build/src/database/query/join-plain.d.ts +2 -2
  649. package/build/src/database/query/join-plain.d.ts.map +1 -1
  650. package/build/src/database/query/join-tracker.d.ts +3 -3
  651. package/build/src/database/query/join-tracker.d.ts.map +1 -1
  652. package/build/src/database/query/model-class-query.d.ts +39 -36
  653. package/build/src/database/query/model-class-query.d.ts.map +1 -1
  654. package/build/src/database/query/model-class-query.js +40 -40
  655. package/build/src/database/query/order-base.d.ts +1 -1
  656. package/build/src/database/query/order-base.d.ts.map +1 -1
  657. package/build/src/database/query/order-column.d.ts +19 -22
  658. package/build/src/database/query/order-column.d.ts.map +1 -1
  659. package/build/src/database/query/order-plain.d.ts +3 -3
  660. package/build/src/database/query/order-plain.d.ts.map +1 -1
  661. package/build/src/database/query/preloader/belongs-to.d.ts +5 -5
  662. package/build/src/database/query/preloader/belongs-to.d.ts.map +1 -1
  663. package/build/src/database/query/preloader/belongs-to.js +3 -3
  664. package/build/src/database/query/preloader/ensure-model-class-initialized.d.ts +2 -1
  665. package/build/src/database/query/preloader/ensure-model-class-initialized.d.ts.map +1 -1
  666. package/build/src/database/query/preloader/ensure-model-class-initialized.js +4 -3
  667. package/build/src/database/query/preloader/has-many.d.ts +6 -6
  668. package/build/src/database/query/preloader/has-many.d.ts.map +1 -1
  669. package/build/src/database/query/preloader/has-many.js +4 -4
  670. package/build/src/database/query/preloader/has-one.d.ts +5 -5
  671. package/build/src/database/query/preloader/has-one.d.ts.map +1 -1
  672. package/build/src/database/query/preloader/has-one.js +2 -2
  673. package/build/src/database/query/preloader/query-for-model.d.ts.map +1 -1
  674. package/build/src/database/query/preloader/selection.d.ts +6 -6
  675. package/build/src/database/query/preloader/selection.d.ts.map +1 -1
  676. package/build/src/database/query/preloader.d.ts +8 -8
  677. package/build/src/database/query/preloader.d.ts.map +1 -1
  678. package/build/src/database/query/preloader.js +9 -3
  679. package/build/src/database/query/query-data.d.ts +43 -55
  680. package/build/src/database/query/query-data.d.ts.map +1 -1
  681. package/build/src/database/query/query-data.js +8 -8
  682. package/build/src/database/query/remove-index-base.d.ts +21 -19
  683. package/build/src/database/query/remove-index-base.d.ts.map +1 -1
  684. package/build/src/database/query/select-base.d.ts +1 -1
  685. package/build/src/database/query/select-base.d.ts.map +1 -1
  686. package/build/src/database/query/select-plain.d.ts +3 -2
  687. package/build/src/database/query/select-plain.d.ts.map +1 -1
  688. package/build/src/database/query/select-table-and-column.d.ts +4 -3
  689. package/build/src/database/query/select-table-and-column.d.ts.map +1 -1
  690. package/build/src/database/query/update-base.d.ts +10 -10
  691. package/build/src/database/query/update-base.d.ts.map +1 -1
  692. package/build/src/database/query/update-base.js +4 -4
  693. package/build/src/database/query/upsert-base.d.ts +9 -9
  694. package/build/src/database/query/upsert-base.d.ts.map +1 -1
  695. package/build/src/database/query/upsert-base.js +3 -3
  696. package/build/src/database/query/where-base.d.ts +1 -1
  697. package/build/src/database/query/where-base.d.ts.map +1 -1
  698. package/build/src/database/query/where-combinator.d.ts +9 -4
  699. package/build/src/database/query/where-combinator.d.ts.map +1 -1
  700. package/build/src/database/query/where-hash.d.ts +11 -9
  701. package/build/src/database/query/where-hash.d.ts.map +1 -1
  702. package/build/src/database/query/where-model-class-hash.d.ts +28 -26
  703. package/build/src/database/query/where-model-class-hash.d.ts.map +1 -1
  704. package/build/src/database/query/where-model-class-hash.js +14 -14
  705. package/build/src/database/query/where-not.d.ts +8 -3
  706. package/build/src/database/query/where-not.d.ts.map +1 -1
  707. package/build/src/database/query/where-plain.d.ts +4 -3
  708. package/build/src/database/query/where-plain.d.ts.map +1 -1
  709. package/build/src/database/query/with-count.d.ts +22 -28
  710. package/build/src/database/query/with-count.d.ts.map +1 -1
  711. package/build/src/database/query/with-count.js +12 -12
  712. package/build/src/database/query-aborted-error.d.ts +5 -5
  713. package/build/src/database/query-aborted-error.d.ts.map +1 -1
  714. package/build/src/database/query-parser/base-query-parser.d.ts +3 -3
  715. package/build/src/database/query-parser/base-query-parser.d.ts.map +1 -1
  716. package/build/src/database/query-parser/from-parser.d.ts +2 -2
  717. package/build/src/database/query-parser/from-parser.d.ts.map +1 -1
  718. package/build/src/database/query-parser/group-parser.d.ts +2 -2
  719. package/build/src/database/query-parser/group-parser.d.ts.map +1 -1
  720. package/build/src/database/query-parser/joins-parser.d.ts +3 -3
  721. package/build/src/database/query-parser/joins-parser.d.ts.map +1 -1
  722. package/build/src/database/query-parser/limit-parser.d.ts +2 -2
  723. package/build/src/database/query-parser/limit-parser.d.ts.map +1 -1
  724. package/build/src/database/query-parser/options.d.ts +31 -34
  725. package/build/src/database/query-parser/options.d.ts.map +1 -1
  726. package/build/src/database/query-parser/options.js +3 -3
  727. package/build/src/database/query-parser/order-parser.d.ts +2 -2
  728. package/build/src/database/query-parser/order-parser.d.ts.map +1 -1
  729. package/build/src/database/query-parser/select-parser.d.ts +2 -2
  730. package/build/src/database/query-parser/select-parser.d.ts.map +1 -1
  731. package/build/src/database/query-parser/select-parser.js +2 -2
  732. package/build/src/database/query-parser/where-parser.d.ts +2 -2
  733. package/build/src/database/query-parser/where-parser.d.ts.map +1 -1
  734. package/build/src/database/record/acts-as-list.d.ts.map +1 -1
  735. package/build/src/database/record/acts-as-list.js +3 -3
  736. package/build/src/database/record/attachments/attachment-record.d.ts +7 -3
  737. package/build/src/database/record/attachments/attachment-record.d.ts.map +1 -1
  738. package/build/src/database/record/attachments/download.d.ts +9 -9
  739. package/build/src/database/record/attachments/download.d.ts.map +1 -1
  740. package/build/src/database/record/attachments/handle.d.ts +12 -12
  741. package/build/src/database/record/attachments/handle.d.ts.map +1 -1
  742. package/build/src/database/record/attachments/handle.js +7 -7
  743. package/build/src/database/record/attachments/normalize-input.d.ts +16 -22
  744. package/build/src/database/record/attachments/normalize-input.d.ts.map +1 -1
  745. package/build/src/database/record/attachments/normalize-input.js +12 -12
  746. package/build/src/database/record/attachments/storage-drivers/filesystem.d.ts +4 -4
  747. package/build/src/database/record/attachments/storage-drivers/filesystem.d.ts.map +1 -1
  748. package/build/src/database/record/attachments/storage-drivers/filesystem.js +2 -2
  749. package/build/src/database/record/attachments/storage-drivers/native.d.ts +12 -12
  750. package/build/src/database/record/attachments/storage-drivers/native.d.ts.map +1 -1
  751. package/build/src/database/record/attachments/storage-drivers/native.js +6 -6
  752. package/build/src/database/record/attachments/storage-drivers/s3.d.ts +17 -17
  753. package/build/src/database/record/attachments/storage-drivers/s3.d.ts.map +1 -1
  754. package/build/src/database/record/attachments/storage-drivers/s3.js +11 -11
  755. package/build/src/database/record/attachments/store.d.ts +38 -41
  756. package/build/src/database/record/attachments/store.d.ts.map +1 -1
  757. package/build/src/database/record/attachments/store.js +24 -21
  758. package/build/src/database/record/auditing.d.ts +67 -87
  759. package/build/src/database/record/auditing.d.ts.map +1 -1
  760. package/build/src/database/record/auditing.js +109 -30
  761. package/build/src/database/record/counter-cache-magnitude.d.ts +15 -35
  762. package/build/src/database/record/counter-cache-magnitude.d.ts.map +1 -1
  763. package/build/src/database/record/counter-cache-magnitude.js +12 -12
  764. package/build/src/database/record/index.d.ts +2390 -488
  765. package/build/src/database/record/index.d.ts.map +1 -1
  766. package/build/src/database/record/index.js +222 -172
  767. package/build/src/database/record/instance-relationships/base.d.ts +20 -23
  768. package/build/src/database/record/instance-relationships/base.d.ts.map +1 -1
  769. package/build/src/database/record/instance-relationships/base.js +5 -5
  770. package/build/src/database/record/instance-relationships/belongs-to.d.ts +9 -1
  771. package/build/src/database/record/instance-relationships/belongs-to.d.ts.map +1 -1
  772. package/build/src/database/record/instance-relationships/belongs-to.js +2 -2
  773. package/build/src/database/record/instance-relationships/has-many.d.ts +15 -3
  774. package/build/src/database/record/instance-relationships/has-many.d.ts.map +1 -1
  775. package/build/src/database/record/instance-relationships/has-many.js +4 -4
  776. package/build/src/database/record/instance-relationships/has-one.d.ts +19 -1
  777. package/build/src/database/record/instance-relationships/has-one.d.ts.map +1 -1
  778. package/build/src/database/record/instance-relationships/has-one.js +2 -2
  779. package/build/src/database/record/record-not-found-error.d.ts +1 -0
  780. package/build/src/database/record/record-not-found-error.d.ts.map +1 -1
  781. package/build/src/database/record/record-not-found-error.js +2 -1
  782. package/build/src/database/record/relationships/base.d.ts +83 -71
  783. package/build/src/database/record/relationships/base.d.ts.map +1 -1
  784. package/build/src/database/record/relationships/base.js +21 -1
  785. package/build/src/database/record/relationships/belongs-to.d.ts +11 -1
  786. package/build/src/database/record/relationships/belongs-to.d.ts.map +1 -1
  787. package/build/src/database/record/relationships/has-many.d.ts +11 -1
  788. package/build/src/database/record/relationships/has-many.d.ts.map +1 -1
  789. package/build/src/database/record/relationships/has-one.d.ts +11 -1
  790. package/build/src/database/record/relationships/has-one.d.ts.map +1 -1
  791. package/build/src/database/record/state-machine.d.ts +20 -29
  792. package/build/src/database/record/state-machine.d.ts.map +1 -1
  793. package/build/src/database/record/state-machine.js +7 -7
  794. package/build/src/database/record/user-module.d.ts +1 -1
  795. package/build/src/database/record/user-module.d.ts.map +1 -1
  796. package/build/src/database/record/validation-messages.d.ts +19 -22
  797. package/build/src/database/record/validation-messages.d.ts.map +1 -1
  798. package/build/src/database/record/validators/base.d.ts +4 -4
  799. package/build/src/database/record/validators/base.d.ts.map +1 -1
  800. package/build/src/database/record/validators/base.js +2 -2
  801. package/build/src/database/record/validators/format.d.ts +12 -1
  802. package/build/src/database/record/validators/format.d.ts.map +1 -1
  803. package/build/src/database/record/validators/length.d.ts +14 -1
  804. package/build/src/database/record/validators/length.d.ts.map +1 -1
  805. package/build/src/database/record/validators/presence.d.ts +11 -1
  806. package/build/src/database/record/validators/presence.d.ts.map +1 -1
  807. package/build/src/database/record/validators/uniqueness.d.ts +12 -1
  808. package/build/src/database/record/validators/uniqueness.d.ts.map +1 -1
  809. package/build/src/database/record-changes.d.ts +7 -18
  810. package/build/src/database/record-changes.d.ts.map +1 -1
  811. package/build/src/database/structure-sql-loader.d.ts +2 -2
  812. package/build/src/database/structure-sql-loader.d.ts.map +1 -1
  813. package/build/src/database/structure-sql-loader.js +4 -4
  814. package/build/src/database/table-data/index.d.ts +21 -24
  815. package/build/src/database/table-data/index.d.ts.map +1 -1
  816. package/build/src/database/table-data/table-column.d.ts +74 -80
  817. package/build/src/database/table-data/table-column.d.ts.map +1 -1
  818. package/build/src/database/table-data/table-column.js +4 -4
  819. package/build/src/database/table-data/table-foreign-key.d.ts +10 -10
  820. package/build/src/database/table-data/table-foreign-key.d.ts.map +1 -1
  821. package/build/src/database/table-data/table-index.d.ts +12 -15
  822. package/build/src/database/table-data/table-index.d.ts.map +1 -1
  823. package/build/src/database/table-data/table-reference.d.ts +2 -2
  824. package/build/src/database/table-data/table-reference.d.ts.map +1 -1
  825. package/build/src/database/tenants/data-copier.d.ts +7 -7
  826. package/build/src/database/tenants/data-copier.d.ts.map +1 -1
  827. package/build/src/database/tenants/schema-cloner.d.ts +3 -3
  828. package/build/src/database/tenants/schema-cloner.d.ts.map +1 -1
  829. package/build/src/database/tenants/tenant-table-plan.d.ts +20 -14
  830. package/build/src/database/tenants/tenant-table-plan.d.ts.map +1 -1
  831. package/build/src/database/tenants/tenant-table-plan.js +17 -1
  832. package/build/src/database/use-database.d.ts.map +1 -1
  833. package/build/src/database/use-live-query.d.ts +17 -29
  834. package/build/src/database/use-live-query.d.ts.map +1 -1
  835. package/build/src/database/use-live-query.js +4 -4
  836. package/build/src/environment-handlers/base.d.ts +112 -103
  837. package/build/src/environment-handlers/base.d.ts.map +1 -1
  838. package/build/src/environment-handlers/base.js +54 -38
  839. package/build/src/environment-handlers/browser.d.ts +63 -56
  840. package/build/src/environment-handlers/browser.d.ts.map +1 -1
  841. package/build/src/environment-handlers/browser.js +2 -2
  842. package/build/src/environment-handlers/node/attachment-path-source.d.ts +9 -9
  843. package/build/src/environment-handlers/node/attachment-path-source.d.ts.map +1 -1
  844. package/build/src/environment-handlers/node/cli/commands/background-jobs-main.d.ts +1 -1
  845. package/build/src/environment-handlers/node/cli/commands/background-jobs-main.d.ts.map +1 -1
  846. package/build/src/environment-handlers/node/cli/commands/background-jobs-runner.d.ts +1 -1
  847. package/build/src/environment-handlers/node/cli/commands/background-jobs-runner.d.ts.map +1 -1
  848. package/build/src/environment-handlers/node/cli/commands/background-jobs-worker.d.ts +1 -1
  849. package/build/src/environment-handlers/node/cli/commands/background-jobs-worker.d.ts.map +1 -1
  850. package/build/src/environment-handlers/node/cli/commands/beacon.d.ts +1 -1
  851. package/build/src/environment-handlers/node/cli/commands/beacon.d.ts.map +1 -1
  852. package/build/src/environment-handlers/node/cli/commands/cli-command-context.d.ts +7 -10
  853. package/build/src/environment-handlers/node/cli/commands/cli-command-context.d.ts.map +1 -1
  854. package/build/src/environment-handlers/node/cli/commands/console.d.ts +9 -7
  855. package/build/src/environment-handlers/node/cli/commands/console.d.ts.map +1 -1
  856. package/build/src/environment-handlers/node/cli/commands/console.js +5 -5
  857. package/build/src/environment-handlers/node/cli/commands/db/schema/dump.d.ts +1 -1
  858. package/build/src/environment-handlers/node/cli/commands/db/schema/dump.d.ts.map +1 -1
  859. package/build/src/environment-handlers/node/cli/commands/db/schema/load.d.ts +1 -1
  860. package/build/src/environment-handlers/node/cli/commands/db/schema/load.d.ts.map +1 -1
  861. package/build/src/environment-handlers/node/cli/commands/db/seed.d.ts +7 -5
  862. package/build/src/environment-handlers/node/cli/commands/db/seed.d.ts.map +1 -1
  863. package/build/src/environment-handlers/node/cli/commands/db/seed.js +3 -3
  864. package/build/src/environment-handlers/node/cli/commands/destroy/migration.d.ts +4 -7
  865. package/build/src/environment-handlers/node/cli/commands/destroy/migration.d.ts.map +1 -1
  866. package/build/src/environment-handlers/node/cli/commands/generate/base-models.d.ts +1 -1
  867. package/build/src/environment-handlers/node/cli/commands/generate/base-models.d.ts.map +1 -1
  868. package/build/src/environment-handlers/node/cli/commands/generate/base-models.js +2 -2
  869. package/build/src/environment-handlers/node/cli/commands/generate/frontend-models.d.ts +93 -108
  870. package/build/src/environment-handlers/node/cli/commands/generate/frontend-models.d.ts.map +1 -1
  871. package/build/src/environment-handlers/node/cli/commands/generate/generated-file-banner.d.ts.map +1 -1
  872. package/build/src/environment-handlers/node/cli/commands/generate/migration.d.ts +9 -12
  873. package/build/src/environment-handlers/node/cli/commands/generate/migration.d.ts.map +1 -1
  874. package/build/src/environment-handlers/node/cli/commands/generate/model.d.ts +8 -11
  875. package/build/src/environment-handlers/node/cli/commands/generate/model.d.ts.map +1 -1
  876. package/build/src/environment-handlers/node/cli/commands/init.d.ts +7 -9
  877. package/build/src/environment-handlers/node/cli/commands/init.d.ts.map +1 -1
  878. package/build/src/environment-handlers/node/cli/commands/lint/relationships.d.ts +7 -7
  879. package/build/src/environment-handlers/node/cli/commands/lint/relationships.d.ts.map +1 -1
  880. package/build/src/environment-handlers/node/cli/commands/routes.d.ts +1 -1
  881. package/build/src/environment-handlers/node/cli/commands/routes.d.ts.map +1 -1
  882. package/build/src/environment-handlers/node/cli/commands/run-script.d.ts +7 -5
  883. package/build/src/environment-handlers/node/cli/commands/run-script.d.ts.map +1 -1
  884. package/build/src/environment-handlers/node/cli/commands/run-script.js +3 -3
  885. package/build/src/environment-handlers/node/cli/commands/runner.d.ts +9 -7
  886. package/build/src/environment-handlers/node/cli/commands/runner.d.ts.map +1 -1
  887. package/build/src/environment-handlers/node/cli/commands/runner.js +3 -3
  888. package/build/src/environment-handlers/node/cli/commands/server.d.ts +24 -30
  889. package/build/src/environment-handlers/node/cli/commands/server.d.ts.map +1 -1
  890. package/build/src/environment-handlers/node/cli/commands/server.js +2 -2
  891. package/build/src/environment-handlers/node/cli/commands/test.d.ts +5 -5
  892. package/build/src/environment-handlers/node/cli/commands/test.d.ts.map +1 -1
  893. package/build/src/environment-handlers/node/source-peer-package.d.ts +5 -7
  894. package/build/src/environment-handlers/node/source-peer-package.d.ts.map +1 -1
  895. package/build/src/environment-handlers/node/source-peer-package.js +1 -1
  896. package/build/src/environment-handlers/node.d.ts +362 -13
  897. package/build/src/environment-handlers/node.d.ts.map +1 -1
  898. package/build/src/environment-handlers/node.js +37 -37
  899. package/build/src/error-logger.d.ts +3 -3
  900. package/build/src/error-logger.d.ts.map +1 -1
  901. package/build/src/error-logger.js +3 -3
  902. package/build/src/error-reporting/request-details.d.ts +1 -1
  903. package/build/src/error-reporting/request-details.d.ts.map +1 -1
  904. package/build/src/error-reporting/request-details.js +33 -33
  905. package/build/src/frontend-model-controller.d.ts +216 -230
  906. package/build/src/frontend-model-controller.d.ts.map +1 -1
  907. package/build/src/frontend-model-controller.js +217 -211
  908. package/build/src/frontend-model-resource/base-resource.d.ts +315 -365
  909. package/build/src/frontend-model-resource/base-resource.d.ts.map +1 -1
  910. package/build/src/frontend-model-resource/base-resource.js +45 -45
  911. package/build/src/frontend-model-resource/velocious-attachment-resource.d.ts +11 -5
  912. package/build/src/frontend-model-resource/velocious-attachment-resource.d.ts.map +1 -1
  913. package/build/src/frontend-model-resource/velocious-attachment-resource.js +2 -2
  914. package/build/src/frontend-models/base.d.ts +632 -726
  915. package/build/src/frontend-models/base.d.ts.map +1 -1
  916. package/build/src/frontend-models/base.js +147 -143
  917. package/build/src/frontend-models/built-in-resources.d.ts +2 -2
  918. package/build/src/frontend-models/built-in-resources.d.ts.map +1 -1
  919. package/build/src/frontend-models/clear-pending-debounced-callback.d.ts +2 -2
  920. package/build/src/frontend-models/clear-pending-debounced-callback.d.ts.map +1 -1
  921. package/build/src/frontend-models/clear-pending-debounced-callback.js +3 -3
  922. package/build/src/frontend-models/event-hook-models.d.ts +3 -6
  923. package/build/src/frontend-models/event-hook-models.d.ts.map +1 -1
  924. package/build/src/frontend-models/model-registry.d.ts +5 -5
  925. package/build/src/frontend-models/model-registry.d.ts.map +1 -1
  926. package/build/src/frontend-models/model-registry.js +5 -5
  927. package/build/src/frontend-models/outgoing-event-buffer.d.ts +20 -17
  928. package/build/src/frontend-models/outgoing-event-buffer.d.ts.map +1 -1
  929. package/build/src/frontend-models/outgoing-event-buffer.js +2 -2
  930. package/build/src/frontend-models/preloader.d.ts.map +1 -1
  931. package/build/src/frontend-models/preloader.js +2 -2
  932. package/build/src/frontend-models/query.d.ts +286 -331
  933. package/build/src/frontend-models/query.d.ts.map +1 -1
  934. package/build/src/frontend-models/query.js +61 -61
  935. package/build/src/frontend-models/resource-config-validation.d.ts +2 -2
  936. package/build/src/frontend-models/resource-config-validation.d.ts.map +1 -1
  937. package/build/src/frontend-models/resource-definition.d.ts +30 -33
  938. package/build/src/frontend-models/resource-definition.d.ts.map +1 -1
  939. package/build/src/frontend-models/resource-definition.js +10 -10
  940. package/build/src/frontend-models/transport-deadline.d.ts.map +1 -1
  941. package/build/src/frontend-models/transport-serialization.d.ts +26 -32
  942. package/build/src/frontend-models/transport-serialization.d.ts.map +1 -1
  943. package/build/src/frontend-models/transport-serialization.js +28 -28
  944. package/build/src/frontend-models/use-created-event.d.ts +4 -4
  945. package/build/src/frontend-models/use-created-event.d.ts.map +1 -1
  946. package/build/src/frontend-models/use-destroyed-event.d.ts +8 -29
  947. package/build/src/frontend-models/use-destroyed-event.d.ts.map +1 -1
  948. package/build/src/frontend-models/use-model-class-event.d.ts +9 -33
  949. package/build/src/frontend-models/use-model-class-event.d.ts.map +1 -1
  950. package/build/src/frontend-models/use-updated-event.d.ts +8 -29
  951. package/build/src/frontend-models/use-updated-event.d.ts.map +1 -1
  952. package/build/src/frontend-models/websocket-channel.d.ts +30 -34
  953. package/build/src/frontend-models/websocket-channel.d.ts.map +1 -1
  954. package/build/src/frontend-models/websocket-channel.js +5 -5
  955. package/build/src/frontend-models/websocket-publishers.d.ts +4 -4
  956. package/build/src/frontend-models/websocket-publishers.d.ts.map +1 -1
  957. package/build/src/frontend-models/websocket-publishers.js +2 -2
  958. package/build/src/http-client/header.d.ts +2 -2
  959. package/build/src/http-client/header.d.ts.map +1 -1
  960. package/build/src/http-client/index.d.ts +23 -23
  961. package/build/src/http-client/index.d.ts.map +1 -1
  962. package/build/src/http-client/request.d.ts +9 -9
  963. package/build/src/http-client/request.d.ts.map +1 -1
  964. package/build/src/http-client/request.js +2 -2
  965. package/build/src/http-client/response.d.ts +12 -12
  966. package/build/src/http-client/response.d.ts.map +1 -1
  967. package/build/src/http-client/response.js +2 -2
  968. package/build/src/http-client/websocket-client.d.ts +20 -4
  969. package/build/src/http-client/websocket-client.d.ts.map +1 -1
  970. package/build/src/http-server/client/index.d.ts +26 -26
  971. package/build/src/http-server/client/index.d.ts.map +1 -1
  972. package/build/src/http-server/client/index.js +5 -5
  973. package/build/src/http-server/client/params-to-object.d.ts +11 -11
  974. package/build/src/http-server/client/params-to-object.d.ts.map +1 -1
  975. package/build/src/http-server/client/params-to-object.js +17 -17
  976. package/build/src/http-server/client/request-buffer/form-data-part.d.ts +9 -9
  977. package/build/src/http-server/client/request-buffer/form-data-part.d.ts.map +1 -1
  978. package/build/src/http-server/client/request-buffer/header.d.ts +3 -3
  979. package/build/src/http-server/client/request-buffer/header.d.ts.map +1 -1
  980. package/build/src/http-server/client/request-buffer/index.d.ts +28 -30
  981. package/build/src/http-server/client/request-buffer/index.d.ts.map +1 -1
  982. package/build/src/http-server/client/request-buffer/index.js +5 -3
  983. package/build/src/http-server/client/request-parser.d.ts +11 -11
  984. package/build/src/http-server/client/request-parser.d.ts.map +1 -1
  985. package/build/src/http-server/client/request-parser.js +3 -3
  986. package/build/src/http-server/client/request-runner.d.ts +11 -11
  987. package/build/src/http-server/client/request-runner.d.ts.map +1 -1
  988. package/build/src/http-server/client/request-runner.js +3 -3
  989. package/build/src/http-server/client/request-timing.d.ts +5 -11
  990. package/build/src/http-server/client/request-timing.d.ts.map +1 -1
  991. package/build/src/http-server/client/request.d.ts +10 -10
  992. package/build/src/http-server/client/request.d.ts.map +1 -1
  993. package/build/src/http-server/client/request.js +3 -3
  994. package/build/src/http-server/client/response-compression.d.ts +5 -5
  995. package/build/src/http-server/client/response-compression.d.ts.map +1 -1
  996. package/build/src/http-server/client/response.d.ts +13 -13
  997. package/build/src/http-server/client/response.d.ts.map +1 -1
  998. package/build/src/http-server/client/uploaded-file/memory-uploaded-file.d.ts +8 -2
  999. package/build/src/http-server/client/uploaded-file/memory-uploaded-file.d.ts.map +1 -1
  1000. package/build/src/http-server/client/uploaded-file/temporary-uploaded-file.d.ts +8 -2
  1001. package/build/src/http-server/client/uploaded-file/temporary-uploaded-file.d.ts.map +1 -1
  1002. package/build/src/http-server/client/uploaded-file/uploaded-file.d.ts +4 -4
  1003. package/build/src/http-server/client/uploaded-file/uploaded-file.d.ts.map +1 -1
  1004. package/build/src/http-server/client/websocket-request.d.ts +26 -26
  1005. package/build/src/http-server/client/websocket-request.d.ts.map +1 -1
  1006. package/build/src/http-server/client/websocket-request.js +7 -7
  1007. package/build/src/http-server/client/websocket-session.d.ts +105 -108
  1008. package/build/src/http-server/client/websocket-session.d.ts.map +1 -1
  1009. package/build/src/http-server/client/websocket-session.js +29 -29
  1010. package/build/src/http-server/client-delivery-queue.d.ts +30 -30
  1011. package/build/src/http-server/client-delivery-queue.d.ts.map +1 -1
  1012. package/build/src/http-server/cookie.d.ts +80 -108
  1013. package/build/src/http-server/cookie.d.ts.map +1 -1
  1014. package/build/src/http-server/cookie.js +3 -3
  1015. package/build/src/http-server/development-reloader.d.ts +24 -24
  1016. package/build/src/http-server/development-reloader.d.ts.map +1 -1
  1017. package/build/src/http-server/development-reloader.js +2 -2
  1018. package/build/src/http-server/index.d.ts +66 -72
  1019. package/build/src/http-server/index.d.ts.map +1 -1
  1020. package/build/src/http-server/index.js +6 -6
  1021. package/build/src/http-server/remote-address.d.ts.map +1 -1
  1022. package/build/src/http-server/remote-address.js +2 -2
  1023. package/build/src/http-server/server-client.d.ts +9 -9
  1024. package/build/src/http-server/server-client.d.ts.map +1 -1
  1025. package/build/src/http-server/server-lock.d.ts +11 -11
  1026. package/build/src/http-server/server-lock.d.ts.map +1 -1
  1027. package/build/src/http-server/server-lock.js +5 -5
  1028. package/build/src/http-server/websocket-channel-subscribers.d.ts +11 -10
  1029. package/build/src/http-server/websocket-channel-subscribers.d.ts.map +1 -1
  1030. package/build/src/http-server/websocket-channel-subscribers.js +6 -6
  1031. package/build/src/http-server/websocket-channel.d.ts +8 -14
  1032. package/build/src/http-server/websocket-channel.d.ts.map +1 -1
  1033. package/build/src/http-server/websocket-channel.js +2 -2
  1034. package/build/src/http-server/websocket-connection.d.ts +10 -10
  1035. package/build/src/http-server/websocket-connection.d.ts.map +1 -1
  1036. package/build/src/http-server/websocket-connection.js +4 -4
  1037. package/build/src/http-server/websocket-event-log-store.d.ts +58 -64
  1038. package/build/src/http-server/websocket-event-log-store.d.ts.map +1 -1
  1039. package/build/src/http-server/websocket-event-log-store.js +10 -10
  1040. package/build/src/http-server/websocket-events-host.d.ts +17 -16
  1041. package/build/src/http-server/websocket-events-host.d.ts.map +1 -1
  1042. package/build/src/http-server/websocket-events-host.js +8 -8
  1043. package/build/src/http-server/websocket-events.d.ts +9 -9
  1044. package/build/src/http-server/websocket-events.d.ts.map +1 -1
  1045. package/build/src/http-server/websocket-events.js +5 -5
  1046. package/build/src/http-server/worker-handler/channel-subscriber-dispatch.d.ts +2 -2
  1047. package/build/src/http-server/worker-handler/channel-subscriber-dispatch.d.ts.map +1 -1
  1048. package/build/src/http-server/worker-handler/channel-subscriber-dispatch.js +2 -2
  1049. package/build/src/http-server/worker-handler/in-process.d.ts +22 -22
  1050. package/build/src/http-server/worker-handler/in-process.d.ts.map +1 -1
  1051. package/build/src/http-server/worker-handler/in-process.js +6 -6
  1052. package/build/src/http-server/worker-handler/index.d.ts +50 -50
  1053. package/build/src/http-server/worker-handler/index.d.ts.map +1 -1
  1054. package/build/src/http-server/worker-handler/index.js +11 -11
  1055. package/build/src/http-server/worker-handler/worker-thread.d.ts +61 -61
  1056. package/build/src/http-server/worker-handler/worker-thread.d.ts.map +1 -1
  1057. package/build/src/http-server/worker-handler/worker-thread.js +9 -9
  1058. package/build/src/initializer.d.ts +2 -2
  1059. package/build/src/initializer.d.ts.map +1 -1
  1060. package/build/src/jobs/mail-delivery.d.ts +7 -2
  1061. package/build/src/jobs/mail-delivery.d.ts.map +1 -1
  1062. package/build/src/jobs/prune-terminal-background-jobs.d.ts +15 -2
  1063. package/build/src/jobs/prune-terminal-background-jobs.d.ts.map +1 -1
  1064. package/build/src/jobs/prune-terminal-background-jobs.js +1 -1
  1065. package/build/src/logger/base-logger.d.ts.map +1 -1
  1066. package/build/src/logger/base-logger.js +2 -2
  1067. package/build/src/logger/console-logger.d.ts +3 -3
  1068. package/build/src/logger/console-logger.d.ts.map +1 -1
  1069. package/build/src/logger/file-logger.d.ts +4 -4
  1070. package/build/src/logger/file-logger.d.ts.map +1 -1
  1071. package/build/src/logger/outputs/array-output.d.ts +9 -12
  1072. package/build/src/logger/outputs/array-output.d.ts.map +1 -1
  1073. package/build/src/logger/outputs/console-output.d.ts +1 -4
  1074. package/build/src/logger/outputs/console-output.d.ts.map +1 -1
  1075. package/build/src/logger/outputs/file-output.d.ts +13 -16
  1076. package/build/src/logger/outputs/file-output.d.ts.map +1 -1
  1077. package/build/src/logger/outputs/stdout-output.d.ts +1 -4
  1078. package/build/src/logger/outputs/stdout-output.d.ts.map +1 -1
  1079. package/build/src/logger.d.ts +30 -29
  1080. package/build/src/logger.d.ts.map +1 -1
  1081. package/build/src/logger.js +13 -13
  1082. package/build/src/mailer/backends/smtp.d.ts +8 -11
  1083. package/build/src/mailer/backends/smtp.d.ts.map +1 -1
  1084. package/build/src/mailer/backends/smtp.js +4 -4
  1085. package/build/src/mailer/base.d.ts +61 -61
  1086. package/build/src/mailer/base.d.ts.map +1 -1
  1087. package/build/src/mailer/base.js +15 -15
  1088. package/build/src/mailer/delivery.d.ts +16 -16
  1089. package/build/src/mailer/delivery.d.ts.map +1 -1
  1090. package/build/src/mailer/delivery.js +4 -4
  1091. package/build/src/mailer/index.d.ts +8 -13
  1092. package/build/src/mailer/index.d.ts.map +1 -1
  1093. package/build/src/mailer/index.js +2 -2
  1094. package/build/src/mailer.d.ts +9 -7
  1095. package/build/src/mailer.d.ts.map +1 -1
  1096. package/build/src/mailer.js +2 -2
  1097. package/build/src/packages/velocious-package.d.ts +5 -5
  1098. package/build/src/packages/velocious-package.d.ts.map +1 -1
  1099. package/build/src/plugins/sqljs-wasm-route-controller.d.ts +1 -1
  1100. package/build/src/plugins/sqljs-wasm-route-controller.d.ts.map +1 -1
  1101. package/build/src/plugins/sqljs-wasm-route-controller.js +2 -2
  1102. package/build/src/plugins/sqljs-wasm-route.d.ts +14 -20
  1103. package/build/src/plugins/sqljs-wasm-route.d.ts.map +1 -1
  1104. package/build/src/plugins/sqljs-wasm-route.js +1 -1
  1105. package/build/src/record-payload-values.d.ts +14 -14
  1106. package/build/src/record-payload-values.d.ts.map +1 -1
  1107. package/build/src/record-payload-values.js +4 -4
  1108. package/build/src/routes/app-routes.d.ts.map +1 -1
  1109. package/build/src/routes/base-route.d.ts +11 -10
  1110. package/build/src/routes/base-route.d.ts.map +1 -1
  1111. package/build/src/routes/base-route.js +6 -6
  1112. package/build/src/routes/basic-route.d.ts +36 -3
  1113. package/build/src/routes/basic-route.d.ts.map +1 -1
  1114. package/build/src/routes/basic-route.js +5 -5
  1115. package/build/src/routes/built-in/api-manifest/controller.d.ts +1 -1
  1116. package/build/src/routes/built-in/api-manifest/controller.d.ts.map +1 -1
  1117. package/build/src/routes/built-in/debug/controller.d.ts +1 -1
  1118. package/build/src/routes/built-in/debug/controller.d.ts.map +1 -1
  1119. package/build/src/routes/built-in/errors/controller.d.ts +1 -1
  1120. package/build/src/routes/built-in/errors/controller.d.ts.map +1 -1
  1121. package/build/src/routes/get-route.d.ts +19 -4
  1122. package/build/src/routes/get-route.d.ts.map +1 -1
  1123. package/build/src/routes/get-route.js +3 -3
  1124. package/build/src/routes/hooks/frontend-model-command-route-hook.d.ts +1 -1
  1125. package/build/src/routes/hooks/frontend-model-command-route-hook.d.ts.map +1 -1
  1126. package/build/src/routes/hooks/frontend-model-command-route-hook.js +2 -2
  1127. package/build/src/routes/index.d.ts +5 -5
  1128. package/build/src/routes/index.d.ts.map +1 -1
  1129. package/build/src/routes/index.js +4 -4
  1130. package/build/src/routes/namespace-route.d.ts +19 -4
  1131. package/build/src/routes/namespace-route.d.ts.map +1 -1
  1132. package/build/src/routes/namespace-route.js +2 -2
  1133. package/build/src/routes/plugin-routes.d.ts +16 -19
  1134. package/build/src/routes/plugin-routes.d.ts.map +1 -1
  1135. package/build/src/routes/plugin-routes.js +2 -2
  1136. package/build/src/routes/post-route.d.ts +19 -4
  1137. package/build/src/routes/post-route.d.ts.map +1 -1
  1138. package/build/src/routes/post-route.js +3 -3
  1139. package/build/src/routes/resolver.d.ts +16 -16
  1140. package/build/src/routes/resolver.d.ts.map +1 -1
  1141. package/build/src/routes/resolver.js +6 -6
  1142. package/build/src/routes/resource-route.d.ts +23 -8
  1143. package/build/src/routes/resource-route.d.ts.map +1 -1
  1144. package/build/src/routes/resource-route.js +2 -2
  1145. package/build/src/routes/root-route.d.ts +1 -1
  1146. package/build/src/routes/root-route.d.ts.map +1 -1
  1147. package/build/src/sync/conflict-strategy.d.ts +50 -35
  1148. package/build/src/sync/conflict-strategy.d.ts.map +1 -1
  1149. package/build/src/sync/conflict-strategy.js +2 -2
  1150. package/build/src/sync/device-identity.d.ts +109 -79
  1151. package/build/src/sync/device-identity.d.ts.map +1 -1
  1152. package/build/src/sync/local-mutation-log.d.ts +115 -92
  1153. package/build/src/sync/local-mutation-log.d.ts.map +1 -1
  1154. package/build/src/sync/offline-grant.d.ts +80 -63
  1155. package/build/src/sync/offline-grant.d.ts.map +1 -1
  1156. package/build/src/sync/peer-mutation-bundle.d.ts +33 -39
  1157. package/build/src/sync/peer-mutation-bundle.d.ts.map +1 -1
  1158. package/build/src/sync/query-scope.d.ts +3 -3
  1159. package/build/src/sync/query-scope.d.ts.map +1 -1
  1160. package/build/src/sync/query-scope.js +8 -8
  1161. package/build/src/sync/server-change-feed.d.ts +129 -129
  1162. package/build/src/sync/server-change-feed.d.ts.map +1 -1
  1163. package/build/src/sync/server-change-feed.js +14 -14
  1164. package/build/src/sync/server-sequence-allocator.d.ts +36 -36
  1165. package/build/src/sync/server-sequence-allocator.d.ts.map +1 -1
  1166. package/build/src/sync/server-sequence-allocator.js +6 -6
  1167. package/build/src/sync/signed-sync-envelope-replay-service.d.ts +60 -48
  1168. package/build/src/sync/signed-sync-envelope-replay-service.d.ts.map +1 -1
  1169. package/build/src/sync/signed-sync-envelope-replay-service.js +21 -21
  1170. package/build/src/sync/stable-json.d.ts +2 -2
  1171. package/build/src/sync/stable-json.d.ts.map +1 -1
  1172. package/build/src/sync/stable-json.js +5 -5
  1173. package/build/src/sync/sync-api-client-types.d.ts +98 -25
  1174. package/build/src/sync/sync-api-client-types.d.ts.map +1 -1
  1175. package/build/src/sync/sync-api-client-types.js +73 -1
  1176. package/build/src/sync/sync-api-client.d.ts +71 -71
  1177. package/build/src/sync/sync-api-client.d.ts.map +1 -1
  1178. package/build/src/sync/sync-api-client.js +30 -30
  1179. package/build/src/sync/sync-api-controller.d.ts +23 -23
  1180. package/build/src/sync/sync-api-controller.d.ts.map +1 -1
  1181. package/build/src/sync/sync-change-fanout.d.ts +32 -38
  1182. package/build/src/sync/sync-change-fanout.d.ts.map +1 -1
  1183. package/build/src/sync/sync-change-fanout.js +7 -7
  1184. package/build/src/sync/sync-channel-name.d.ts +1 -1
  1185. package/build/src/sync/sync-channel-name.d.ts.map +1 -1
  1186. package/build/src/sync/sync-client-registry.d.ts +4 -4
  1187. package/build/src/sync/sync-client-registry.d.ts.map +1 -1
  1188. package/build/src/sync/sync-client-registry.js +4 -4
  1189. package/build/src/sync/sync-client-types.d.ts +130 -82
  1190. package/build/src/sync/sync-client-types.d.ts.map +1 -1
  1191. package/build/src/sync/sync-client-types.js +89 -1
  1192. package/build/src/sync/sync-client.d.ts +76 -76
  1193. package/build/src/sync/sync-client.d.ts.map +1 -1
  1194. package/build/src/sync/sync-client.js +19 -19
  1195. package/build/src/sync/sync-envelope-replay-service.d.ts +266 -298
  1196. package/build/src/sync/sync-envelope-replay-service.d.ts.map +1 -1
  1197. package/build/src/sync/sync-envelope-replay-service.js +77 -77
  1198. package/build/src/sync/sync-model-change-feed-service.d.ts +23 -23
  1199. package/build/src/sync/sync-model-change-feed-service.d.ts.map +1 -1
  1200. package/build/src/sync/sync-model-change-feed-service.js +8 -8
  1201. package/build/src/sync/sync-publish-suppression.d.ts +5 -5
  1202. package/build/src/sync/sync-publish-suppression.d.ts.map +1 -1
  1203. package/build/src/sync/sync-publish-suppression.js +3 -3
  1204. package/build/src/sync/sync-publisher-types.d.ts +98 -55
  1205. package/build/src/sync/sync-publisher-types.d.ts.map +1 -1
  1206. package/build/src/sync/sync-publisher-types.js +75 -1
  1207. package/build/src/sync/sync-publisher.d.ts +43 -43
  1208. package/build/src/sync/sync-publisher.d.ts.map +1 -1
  1209. package/build/src/sync/sync-publisher.js +20 -20
  1210. package/build/src/sync/sync-realtime-bridge.d.ts +23 -23
  1211. package/build/src/sync/sync-realtime-bridge.d.ts.map +1 -1
  1212. package/build/src/sync/sync-realtime-bridge.js +9 -9
  1213. package/build/src/sync/sync-replay-upsert-applier.d.ts +70 -70
  1214. package/build/src/sync/sync-replay-upsert-applier.d.ts.map +1 -1
  1215. package/build/src/sync/sync-replay-upsert-applier.js +17 -17
  1216. package/build/src/sync/sync-resource-base.d.ts +52 -51
  1217. package/build/src/sync/sync-resource-base.d.ts.map +1 -1
  1218. package/build/src/sync/sync-resource-base.js +15 -15
  1219. package/build/src/sync/sync-scope-attributes.d.ts +2 -2
  1220. package/build/src/sync/sync-scope-attributes.d.ts.map +1 -1
  1221. package/build/src/sync/sync-scope-attributes.js +2 -2
  1222. package/build/src/sync/sync-scope-store.d.ts +36 -36
  1223. package/build/src/sync/sync-scope-store.d.ts.map +1 -1
  1224. package/build/src/sync/sync-scope-store.js +6 -6
  1225. package/build/src/sync/sync-websocket-channel.d.ts +11 -6
  1226. package/build/src/sync/sync-websocket-channel.d.ts.map +1 -1
  1227. package/build/src/sync/sync-websocket-channel.js +6 -6
  1228. package/build/src/tenants/default-tenant-database-provisioning.d.ts +4 -4
  1229. package/build/src/tenants/default-tenant-database-provisioning.d.ts.map +1 -1
  1230. package/build/src/tenants/default-tenant-database-provisioning.js +2 -2
  1231. package/build/src/tenants/tenant-aggregator.d.ts +81 -81
  1232. package/build/src/tenants/tenant-aggregator.d.ts.map +1 -1
  1233. package/build/src/tenants/tenant-aggregator.js +13 -13
  1234. package/build/src/tenants/tenant-handle.d.ts +64 -0
  1235. package/build/src/tenants/tenant-handle.d.ts.map +1 -0
  1236. package/build/src/tenants/tenant-handle.js +221 -0
  1237. package/build/src/tenants/tenant-iterator.d.ts +17 -17
  1238. package/build/src/tenants/tenant-iterator.d.ts.map +1 -1
  1239. package/build/src/tenants/tenant-iterator.js +7 -7
  1240. package/build/src/tenants/tenant-model-scope.d.ts +73 -0
  1241. package/build/src/tenants/tenant-model-scope.d.ts.map +1 -0
  1242. package/build/src/tenants/tenant-model-scope.js +115 -0
  1243. package/build/src/tenants/tenant.d.ts +16 -6
  1244. package/build/src/tenants/tenant.d.ts.map +1 -1
  1245. package/build/src/tenants/tenant.js +15 -3
  1246. package/build/src/testing/base-expect.d.ts.map +1 -1
  1247. package/build/src/testing/browser-frontend-model-event-hook-scenarios.d.ts +19 -31
  1248. package/build/src/testing/browser-frontend-model-event-hook-scenarios.d.ts.map +1 -1
  1249. package/build/src/testing/browser-test-app.js +6 -6
  1250. package/build/src/testing/expect-to-change.d.ts +9 -7
  1251. package/build/src/testing/expect-to-change.d.ts.map +1 -1
  1252. package/build/src/testing/expect-to-change.js +2 -2
  1253. package/build/src/testing/expect-utils.d.ts +30 -29
  1254. package/build/src/testing/expect-utils.d.ts.map +1 -1
  1255. package/build/src/testing/expect-utils.js +30 -30
  1256. package/build/src/testing/expect.d.ts +30 -30
  1257. package/build/src/testing/expect.d.ts.map +1 -1
  1258. package/build/src/testing/expect.js +19 -19
  1259. package/build/src/testing/factory/association-declaration.d.ts +16 -16
  1260. package/build/src/testing/factory/association-declaration.d.ts.map +1 -1
  1261. package/build/src/testing/factory/association-declaration.js +3 -3
  1262. package/build/src/testing/factory/declarations.d.ts +90 -115
  1263. package/build/src/testing/factory/declarations.d.ts.map +1 -1
  1264. package/build/src/testing/factory/declarations.js +6 -6
  1265. package/build/src/testing/factory/definition-builder.d.ts +72 -70
  1266. package/build/src/testing/factory/definition-builder.d.ts.map +1 -1
  1267. package/build/src/testing/factory/definition-builder.js +40 -40
  1268. package/build/src/testing/factory/errors.d.ts +30 -29
  1269. package/build/src/testing/factory/errors.d.ts.map +1 -1
  1270. package/build/src/testing/factory/evaluation-context.d.ts +29 -29
  1271. package/build/src/testing/factory/evaluation-context.d.ts.map +1 -1
  1272. package/build/src/testing/factory/evaluation-context.js +17 -17
  1273. package/build/src/testing/factory/events.d.ts +4 -5
  1274. package/build/src/testing/factory/events.d.ts.map +1 -1
  1275. package/build/src/testing/factory/factory-definition.d.ts +14 -14
  1276. package/build/src/testing/factory/factory-definition.d.ts.map +1 -1
  1277. package/build/src/testing/factory/factory-definition.js +3 -3
  1278. package/build/src/testing/factory/factory-registry.d.ts +56 -54
  1279. package/build/src/testing/factory/factory-registry.d.ts.map +1 -1
  1280. package/build/src/testing/factory/factory-registry.js +35 -35
  1281. package/build/src/testing/factory/factory-runner.d.ts +67 -73
  1282. package/build/src/testing/factory/factory-runner.d.ts.map +1 -1
  1283. package/build/src/testing/factory/factory-runner.js +9 -9
  1284. package/build/src/testing/factory/index.d.ts +7 -7
  1285. package/build/src/testing/factory/index.d.ts.map +1 -1
  1286. package/build/src/testing/factory/linter.d.ts +7 -7
  1287. package/build/src/testing/factory/linter.d.ts.map +1 -1
  1288. package/build/src/testing/factory/linter.js +3 -3
  1289. package/build/src/testing/factory/model-contract.d.ts +3 -3
  1290. package/build/src/testing/factory/model-contract.d.ts.map +1 -1
  1291. package/build/src/testing/factory/model-contract.js +4 -4
  1292. package/build/src/testing/factory/node/load-definitions.d.ts +2 -2
  1293. package/build/src/testing/factory/node/load-definitions.d.ts.map +1 -1
  1294. package/build/src/testing/factory/sequence.d.ts +19 -23
  1295. package/build/src/testing/factory/sequence.d.ts.map +1 -1
  1296. package/build/src/testing/factory/sequence.js +3 -3
  1297. package/build/src/testing/factory/strategies/attributes-for.d.ts +3 -3
  1298. package/build/src/testing/factory/strategies/attributes-for.d.ts.map +1 -1
  1299. package/build/src/testing/factory/strategies/attributes-for.js +2 -2
  1300. package/build/src/testing/factory/strategies/base.d.ts +32 -32
  1301. package/build/src/testing/factory/strategies/base.d.ts.map +1 -1
  1302. package/build/src/testing/factory/strategies/base.js +25 -25
  1303. package/build/src/testing/factory/strategies/build.d.ts +3 -3
  1304. package/build/src/testing/factory/strategies/build.d.ts.map +1 -1
  1305. package/build/src/testing/factory/strategies/build.js +3 -3
  1306. package/build/src/testing/factory/strategies/create.d.ts +6 -6
  1307. package/build/src/testing/factory/strategies/create.d.ts.map +1 -1
  1308. package/build/src/testing/factory/strategies/create.js +5 -5
  1309. package/build/src/testing/factory/trait-definition.d.ts +4 -4
  1310. package/build/src/testing/factory/trait-definition.d.ts.map +1 -1
  1311. package/build/src/testing/request-client.d.ts +19 -19
  1312. package/build/src/testing/request-client.d.ts.map +1 -1
  1313. package/build/src/testing/test-files-finder.d.ts +15 -15
  1314. package/build/src/testing/test-files-finder.d.ts.map +1 -1
  1315. package/build/src/testing/test-files-finder.js +2 -2
  1316. package/build/src/testing/test-filter-parser.d.ts +19 -12
  1317. package/build/src/testing/test-filter-parser.d.ts.map +1 -1
  1318. package/build/src/testing/test-runner.d.ts +204 -251
  1319. package/build/src/testing/test-runner.d.ts.map +1 -1
  1320. package/build/src/testing/test-runner.js +15 -15
  1321. package/build/src/testing/test-suite-splitter.d.ts +25 -31
  1322. package/build/src/testing/test-suite-splitter.d.ts.map +1 -1
  1323. package/build/src/testing/test.d.ts +51 -55
  1324. package/build/src/testing/test.d.ts.map +1 -1
  1325. package/build/src/testing/test.js +20 -18
  1326. package/build/src/testing/wait-for-event.d.ts +25 -25
  1327. package/build/src/testing/wait-for-event.d.ts.map +1 -1
  1328. package/build/src/testing/wait-for-event.js +6 -6
  1329. package/build/src/time-zone.d.ts +3 -3
  1330. package/build/src/time-zone.d.ts.map +1 -1
  1331. package/build/src/utils/backtrace-cleaner-node.d.ts +35 -2
  1332. package/build/src/utils/backtrace-cleaner-node.d.ts.map +1 -1
  1333. package/build/src/utils/backtrace-cleaner-node.js +1 -1
  1334. package/build/src/utils/backtrace-cleaner.d.ts +33 -28
  1335. package/build/src/utils/backtrace-cleaner.d.ts.map +1 -1
  1336. package/build/src/utils/bearer-token.d.ts +2 -2
  1337. package/build/src/utils/bearer-token.d.ts.map +1 -1
  1338. package/build/src/utils/deburr-column-name.d.ts.map +1 -1
  1339. package/build/src/utils/event-emitter.d.ts +1 -1
  1340. package/build/src/utils/event-emitter.d.ts.map +1 -1
  1341. package/build/src/utils/event-emitter.js +2 -2
  1342. package/build/src/utils/file-exists.d.ts.map +1 -1
  1343. package/build/src/utils/format-value.d.ts +9 -8
  1344. package/build/src/utils/format-value.d.ts.map +1 -1
  1345. package/build/src/utils/format-value.js +7 -7
  1346. package/build/src/utils/is-date.d.ts +2 -2
  1347. package/build/src/utils/is-date.d.ts.map +1 -1
  1348. package/build/src/utils/is-date.js +2 -2
  1349. package/build/src/utils/model-scope.d.ts +29 -24
  1350. package/build/src/utils/model-scope.d.ts.map +1 -1
  1351. package/build/src/utils/model-scope.js +11 -11
  1352. package/build/src/utils/mount-prefix.d.ts +2 -2
  1353. package/build/src/utils/mount-prefix.d.ts.map +1 -1
  1354. package/build/src/utils/nest-callbacks.d.ts.map +1 -1
  1355. package/build/src/utils/plain-object.d.ts +3 -3
  1356. package/build/src/utils/plain-object.d.ts.map +1 -1
  1357. package/build/src/utils/plain-object.js +3 -3
  1358. package/build/src/utils/ransack.d.ts +69 -90
  1359. package/build/src/utils/ransack.d.ts.map +1 -1
  1360. package/build/src/utils/ransack.js +36 -36
  1361. package/build/src/utils/rest-args-error.d.ts.map +1 -1
  1362. package/build/src/utils/sha256-hex.d.ts.map +1 -1
  1363. package/build/src/utils/shutdown-lifecycle.d.ts +1 -1
  1364. package/build/src/utils/shutdown-lifecycle.d.ts.map +1 -1
  1365. package/build/src/utils/singularize-model-name.d.ts.map +1 -1
  1366. package/build/src/utils/split-sql-statements.d.ts.map +1 -1
  1367. package/build/src/utils/to-import-specifier.d.ts.map +1 -1
  1368. package/build/src/utils/with-tracked-stack-async-hooks.d.ts +6 -5
  1369. package/build/src/utils/with-tracked-stack-async-hooks.d.ts.map +1 -1
  1370. package/build/src/utils/with-tracked-stack-async-hooks.js +9 -9
  1371. package/build/src/utils/with-tracked-stack.d.ts +6 -5
  1372. package/build/src/utils/with-tracked-stack.d.ts.map +1 -1
  1373. package/build/src/utils/with-tracked-stack.js +7 -7
  1374. package/build/src/velocious-error.d.ts +27 -17
  1375. package/build/src/velocious-error.d.ts.map +1 -1
  1376. package/build/src/velocious-error.js +10 -4
  1377. package/build/sync/conflict-strategy.js +1 -1
  1378. package/build/sync/query-scope.js +7 -7
  1379. package/build/sync/server-change-feed.js +13 -13
  1380. package/build/sync/server-sequence-allocator.js +5 -5
  1381. package/build/sync/signed-sync-envelope-replay-service.js +20 -20
  1382. package/build/sync/stable-json.js +4 -4
  1383. package/build/sync/sync-api-client-types.js +7 -7
  1384. package/build/sync/sync-api-client.js +26 -26
  1385. package/build/sync/sync-change-fanout.js +6 -6
  1386. package/build/sync/sync-client-registry.js +3 -3
  1387. package/build/sync/sync-client-types.js +10 -10
  1388. package/build/sync/sync-client.js +18 -18
  1389. package/build/sync/sync-envelope-replay-service.js +76 -76
  1390. package/build/sync/sync-model-change-feed-service.js +7 -7
  1391. package/build/sync/sync-publish-suppression.js +2 -2
  1392. package/build/sync/sync-publisher-types.js +11 -11
  1393. package/build/sync/sync-publisher.js +19 -19
  1394. package/build/sync/sync-realtime-bridge.js +8 -8
  1395. package/build/sync/sync-replay-upsert-applier.js +16 -16
  1396. package/build/sync/sync-resource-base.js +14 -14
  1397. package/build/sync/sync-scope-attributes.js +1 -1
  1398. package/build/sync/sync-scope-store.js +5 -5
  1399. package/build/sync/sync-websocket-channel.js +5 -5
  1400. package/build/tenants/default-tenant-database-provisioning.js +1 -1
  1401. package/build/tenants/tenant-aggregator.js +13 -13
  1402. package/build/tenants/tenant-handle.js +252 -0
  1403. package/build/tenants/tenant-iterator.js +6 -6
  1404. package/build/tenants/tenant-model-scope.js +132 -0
  1405. package/build/tenants/tenant.js +15 -2
  1406. package/build/testing/browser-test-app.js +2 -2
  1407. package/build/testing/expect-to-change.js +1 -1
  1408. package/build/testing/expect-utils.js +29 -29
  1409. package/build/testing/expect.js +18 -18
  1410. package/build/testing/factory/association-declaration.js +2 -2
  1411. package/build/testing/factory/declarations.js +5 -5
  1412. package/build/testing/factory/definition-builder.js +39 -39
  1413. package/build/testing/factory/evaluation-context.js +16 -16
  1414. package/build/testing/factory/factory-definition.js +2 -2
  1415. package/build/testing/factory/factory-registry.js +34 -34
  1416. package/build/testing/factory/factory-runner.js +8 -8
  1417. package/build/testing/factory/linter.js +2 -2
  1418. package/build/testing/factory/model-contract.js +3 -3
  1419. package/build/testing/factory/sequence.js +2 -2
  1420. package/build/testing/factory/strategies/attributes-for.js +1 -1
  1421. package/build/testing/factory/strategies/base.js +24 -24
  1422. package/build/testing/factory/strategies/build.js +2 -2
  1423. package/build/testing/factory/strategies/create.js +4 -4
  1424. package/build/testing/test-files-finder.js +1 -1
  1425. package/build/testing/test-runner.js +14 -14
  1426. package/build/testing/test.js +19 -17
  1427. package/build/testing/wait-for-event.js +5 -5
  1428. package/build/tsconfig.tsbuildinfo +1 -1
  1429. package/build/utils/event-emitter.js +1 -1
  1430. package/build/utils/format-value.js +6 -6
  1431. package/build/utils/is-date.js +1 -1
  1432. package/build/utils/model-scope.js +10 -10
  1433. package/build/utils/plain-object.js +2 -2
  1434. package/build/utils/ransack.js +35 -35
  1435. package/build/utils/with-tracked-stack-async-hooks.js +8 -8
  1436. package/build/utils/with-tracked-stack.js +6 -6
  1437. package/build/velocious-error.js +9 -3
  1438. package/package.json +3 -3
  1439. package/src/application.js +3 -3
  1440. package/src/authorization/ability.js +6 -6
  1441. package/src/authorization/base-resource.js +1 -1
  1442. package/src/background-jobs/client.js +2 -2
  1443. package/src/background-jobs/forked-runner-child.js +4 -4
  1444. package/src/background-jobs/job-runner.js +2 -2
  1445. package/src/background-jobs/job.js +6 -6
  1446. package/src/background-jobs/json-socket.js +1 -1
  1447. package/src/background-jobs/main.js +13 -13
  1448. package/src/background-jobs/normalize-error.js +2 -2
  1449. package/src/background-jobs/pooled-runner-child.js +3 -3
  1450. package/src/background-jobs/scheduler.js +1 -1
  1451. package/src/background-jobs/status-reporter.js +2 -2
  1452. package/src/background-jobs/store.js +23 -23
  1453. package/src/background-jobs/types.js +6 -6
  1454. package/src/background-jobs/web/controller.js +6 -6
  1455. package/src/background-jobs/web/counts-channel.js +1 -1
  1456. package/src/background-jobs/worker.js +8 -8
  1457. package/src/beacon/client.js +3 -3
  1458. package/src/beacon/in-process-client.js +3 -3
  1459. package/src/beacon/types.js +1 -1
  1460. package/src/cli/base-command.js +1 -1
  1461. package/src/cli/commands/console.js +1 -1
  1462. package/src/cli/commands/db/schema/dump.js +1 -1
  1463. package/src/cli/commands/db/schema/load.js +1 -1
  1464. package/src/cli/commands/db/seed.js +1 -1
  1465. package/src/cli/commands/generate/frontend-models.js +1 -1
  1466. package/src/cli/commands/lint/relationships.js +1 -1
  1467. package/src/cli/commands/run-script.js +1 -1
  1468. package/src/cli/commands/runner.js +1 -1
  1469. package/src/cli/index.js +2 -2
  1470. package/src/cli/tenant-database-command-helper.js +2 -2
  1471. package/src/configuration-types.js +48 -47
  1472. package/src/configuration.js +150 -65
  1473. package/src/controller.js +11 -8
  1474. package/src/current.js +2 -2
  1475. package/src/database/annotations-async-hooks.js +3 -3
  1476. package/src/database/annotations.js +1 -1
  1477. package/src/database/drivers/base-column.js +1 -1
  1478. package/src/database/drivers/base-foreign-key.js +1 -1
  1479. package/src/database/drivers/base-table.js +1 -1
  1480. package/src/database/drivers/base.js +18 -18
  1481. package/src/database/drivers/mssql/column.js +1 -1
  1482. package/src/database/drivers/mssql/index.js +2 -2
  1483. package/src/database/drivers/mssql/options.js +1 -1
  1484. package/src/database/drivers/mssql/structure-sql.js +1 -1
  1485. package/src/database/drivers/mssql/table.js +1 -1
  1486. package/src/database/drivers/mysql/column.js +1 -1
  1487. package/src/database/drivers/mysql/index.js +4 -4
  1488. package/src/database/drivers/mysql/options.js +1 -1
  1489. package/src/database/drivers/mysql/query.js +7 -7
  1490. package/src/database/drivers/mysql/structure-sql.js +71 -10
  1491. package/src/database/drivers/pgsql/column.js +1 -1
  1492. package/src/database/drivers/pgsql/index.js +6 -6
  1493. package/src/database/drivers/pgsql/structure-sql.js +1 -1
  1494. package/src/database/drivers/sqlite/base.js +7 -7
  1495. package/src/database/drivers/sqlite/column.js +1 -1
  1496. package/src/database/drivers/sqlite/connection-sql-js.js +1 -1
  1497. package/src/database/drivers/sqlite/foreign-key.js +1 -1
  1498. package/src/database/drivers/sqlite/index.js +1 -1
  1499. package/src/database/drivers/sqlite/index.native.js +2 -2
  1500. package/src/database/drivers/sqlite/index.web.js +2 -2
  1501. package/src/database/drivers/sqlite/query.js +2 -2
  1502. package/src/database/drivers/sqlite/query.native.js +2 -2
  1503. package/src/database/drivers/sqlite/query.web.js +2 -2
  1504. package/src/database/drivers/sqlite/table-rebuilder.js +1 -1
  1505. package/src/database/migration/index.js +2 -2
  1506. package/src/database/migrator/types.js +2 -2
  1507. package/src/database/operation.js +59 -6
  1508. package/src/database/pool/async-tracked-multi-connection.js +75 -24
  1509. package/src/database/pool/base-methods-forward.js +2 -2
  1510. package/src/database/pool/base.js +48 -17
  1511. package/src/database/pool/single-multi-use.js +501 -103
  1512. package/src/database/query/delete-base.js +1 -1
  1513. package/src/database/query/index.js +3 -3
  1514. package/src/database/query/insert-base.js +4 -4
  1515. package/src/database/query/model-class-query.js +39 -39
  1516. package/src/database/query/preloader/belongs-to.js +2 -2
  1517. package/src/database/query/preloader/ensure-model-class-initialized.js +3 -2
  1518. package/src/database/query/preloader/has-many.js +3 -3
  1519. package/src/database/query/preloader/has-one.js +1 -1
  1520. package/src/database/query/preloader.js +9 -2
  1521. package/src/database/query/query-data.js +7 -7
  1522. package/src/database/query/update-base.js +3 -3
  1523. package/src/database/query/upsert-base.js +2 -2
  1524. package/src/database/query/where-model-class-hash.js +13 -13
  1525. package/src/database/query/with-count.js +12 -12
  1526. package/src/database/query-parser/options.js +2 -2
  1527. package/src/database/query-parser/select-parser.js +1 -1
  1528. package/src/database/record/acts-as-list.js +2 -2
  1529. package/src/database/record/attachments/handle.js +6 -6
  1530. package/src/database/record/attachments/normalize-input.js +11 -11
  1531. package/src/database/record/attachments/storage-drivers/filesystem.js +1 -1
  1532. package/src/database/record/attachments/storage-drivers/native.js +5 -5
  1533. package/src/database/record/attachments/storage-drivers/s3.js +10 -10
  1534. package/src/database/record/attachments/store.js +24 -20
  1535. package/src/database/record/auditing.js +123 -29
  1536. package/src/database/record/counter-cache-magnitude.js +11 -11
  1537. package/src/database/record/index.js +227 -174
  1538. package/src/database/record/instance-relationships/base.js +4 -4
  1539. package/src/database/record/instance-relationships/belongs-to.js +1 -1
  1540. package/src/database/record/instance-relationships/has-many.js +3 -3
  1541. package/src/database/record/instance-relationships/has-one.js +1 -1
  1542. package/src/database/record/record-not-found-error.js +1 -0
  1543. package/src/database/record/relationships/base.js +22 -0
  1544. package/src/database/record/state-machine.js +6 -6
  1545. package/src/database/record/validators/base.js +1 -1
  1546. package/src/database/structure-sql-loader.js +3 -3
  1547. package/src/database/table-data/table-column.js +3 -3
  1548. package/src/database/use-live-query.js +3 -3
  1549. package/src/environment-handlers/base.js +56 -37
  1550. package/src/environment-handlers/browser.js +1 -1
  1551. package/src/environment-handlers/node/cli/commands/console.js +4 -4
  1552. package/src/environment-handlers/node/cli/commands/db/seed.js +2 -2
  1553. package/src/environment-handlers/node/cli/commands/generate/base-models.js +1 -1
  1554. package/src/environment-handlers/node/cli/commands/run-script.js +2 -2
  1555. package/src/environment-handlers/node/cli/commands/runner.js +2 -2
  1556. package/src/environment-handlers/node/cli/commands/server.js +1 -1
  1557. package/src/environment-handlers/node.js +36 -36
  1558. package/src/error-logger.js +2 -2
  1559. package/src/error-reporting/request-details.js +32 -32
  1560. package/src/frontend-model-controller.js +215 -213
  1561. package/src/frontend-model-resource/base-resource.js +44 -44
  1562. package/src/frontend-model-resource/velocious-attachment-resource.js +1 -1
  1563. package/src/frontend-models/base.js +146 -142
  1564. package/src/frontend-models/clear-pending-debounced-callback.js +2 -2
  1565. package/src/frontend-models/model-registry.js +4 -4
  1566. package/src/frontend-models/outgoing-event-buffer.js +1 -1
  1567. package/src/frontend-models/preloader.js +1 -1
  1568. package/src/frontend-models/query.js +60 -60
  1569. package/src/frontend-models/resource-definition.js +9 -9
  1570. package/src/frontend-models/transport-serialization.js +27 -27
  1571. package/src/frontend-models/websocket-channel.js +4 -4
  1572. package/src/frontend-models/websocket-publishers.js +1 -1
  1573. package/src/http-client/request.js +1 -1
  1574. package/src/http-client/response.js +1 -1
  1575. package/src/http-server/client/index.js +4 -4
  1576. package/src/http-server/client/params-to-object.js +16 -16
  1577. package/src/http-server/client/request-buffer/index.js +5 -2
  1578. package/src/http-server/client/request-parser.js +2 -2
  1579. package/src/http-server/client/request-runner.js +2 -2
  1580. package/src/http-server/client/request.js +2 -2
  1581. package/src/http-server/client/websocket-request.js +6 -6
  1582. package/src/http-server/client/websocket-session.js +28 -28
  1583. package/src/http-server/cookie.js +2 -2
  1584. package/src/http-server/development-reloader.js +1 -1
  1585. package/src/http-server/index.js +5 -5
  1586. package/src/http-server/remote-address.js +1 -1
  1587. package/src/http-server/server-lock.js +4 -4
  1588. package/src/http-server/websocket-channel-subscribers.js +4 -4
  1589. package/src/http-server/websocket-channel.js +1 -1
  1590. package/src/http-server/websocket-connection.js +3 -3
  1591. package/src/http-server/websocket-event-log-store.js +9 -9
  1592. package/src/http-server/websocket-events-host.js +7 -7
  1593. package/src/http-server/websocket-events.js +4 -4
  1594. package/src/http-server/worker-handler/channel-subscriber-dispatch.js +1 -1
  1595. package/src/http-server/worker-handler/in-process.js +5 -5
  1596. package/src/http-server/worker-handler/index.js +10 -10
  1597. package/src/http-server/worker-handler/worker-thread.js +8 -8
  1598. package/src/logger/base-logger.js +1 -1
  1599. package/src/logger.js +12 -12
  1600. package/src/mailer/backends/smtp.js +3 -3
  1601. package/src/mailer/base.js +14 -14
  1602. package/src/mailer/delivery.js +3 -3
  1603. package/src/mailer/index.js +1 -1
  1604. package/src/mailer.js +1 -1
  1605. package/src/plugins/sqljs-wasm-route-controller.js +1 -1
  1606. package/src/record-payload-values.js +3 -3
  1607. package/src/routes/base-route.js +5 -5
  1608. package/src/routes/basic-route.js +4 -4
  1609. package/src/routes/get-route.js +2 -2
  1610. package/src/routes/hooks/frontend-model-command-route-hook.js +1 -1
  1611. package/src/routes/index.js +3 -3
  1612. package/src/routes/namespace-route.js +1 -1
  1613. package/src/routes/plugin-routes.js +1 -1
  1614. package/src/routes/post-route.js +2 -2
  1615. package/src/routes/resolver.js +5 -5
  1616. package/src/routes/resource-route.js +1 -1
  1617. package/src/sync/conflict-strategy.js +1 -1
  1618. package/src/sync/query-scope.js +7 -7
  1619. package/src/sync/server-change-feed.js +13 -13
  1620. package/src/sync/server-sequence-allocator.js +5 -5
  1621. package/src/sync/signed-sync-envelope-replay-service.js +20 -20
  1622. package/src/sync/stable-json.js +4 -4
  1623. package/src/sync/sync-api-client-types.js +7 -7
  1624. package/src/sync/sync-api-client.js +26 -26
  1625. package/src/sync/sync-change-fanout.js +6 -6
  1626. package/src/sync/sync-client-registry.js +3 -3
  1627. package/src/sync/sync-client-types.js +10 -10
  1628. package/src/sync/sync-client.js +18 -18
  1629. package/src/sync/sync-envelope-replay-service.js +76 -76
  1630. package/src/sync/sync-model-change-feed-service.js +7 -7
  1631. package/src/sync/sync-publish-suppression.js +2 -2
  1632. package/src/sync/sync-publisher-types.js +11 -11
  1633. package/src/sync/sync-publisher.js +19 -19
  1634. package/src/sync/sync-realtime-bridge.js +8 -8
  1635. package/src/sync/sync-replay-upsert-applier.js +16 -16
  1636. package/src/sync/sync-resource-base.js +14 -14
  1637. package/src/sync/sync-scope-attributes.js +1 -1
  1638. package/src/sync/sync-scope-store.js +5 -5
  1639. package/src/sync/sync-websocket-channel.js +5 -5
  1640. package/src/tenants/default-tenant-database-provisioning.js +1 -1
  1641. package/src/tenants/tenant-aggregator.js +13 -13
  1642. package/src/tenants/tenant-handle.js +252 -0
  1643. package/src/tenants/tenant-iterator.js +6 -6
  1644. package/src/tenants/tenant-model-scope.js +132 -0
  1645. package/src/tenants/tenant.js +15 -2
  1646. package/src/testing/browser-test-app.js +2 -2
  1647. package/src/testing/expect-to-change.js +1 -1
  1648. package/src/testing/expect-utils.js +29 -29
  1649. package/src/testing/expect.js +18 -18
  1650. package/src/testing/factory/association-declaration.js +2 -2
  1651. package/src/testing/factory/declarations.js +5 -5
  1652. package/src/testing/factory/definition-builder.js +39 -39
  1653. package/src/testing/factory/evaluation-context.js +16 -16
  1654. package/src/testing/factory/factory-definition.js +2 -2
  1655. package/src/testing/factory/factory-registry.js +34 -34
  1656. package/src/testing/factory/factory-runner.js +8 -8
  1657. package/src/testing/factory/linter.js +2 -2
  1658. package/src/testing/factory/model-contract.js +3 -3
  1659. package/src/testing/factory/sequence.js +2 -2
  1660. package/src/testing/factory/strategies/attributes-for.js +1 -1
  1661. package/src/testing/factory/strategies/base.js +24 -24
  1662. package/src/testing/factory/strategies/build.js +2 -2
  1663. package/src/testing/factory/strategies/create.js +4 -4
  1664. package/src/testing/test-files-finder.js +1 -1
  1665. package/src/testing/test-runner.js +14 -14
  1666. package/src/testing/test.js +19 -17
  1667. package/src/testing/wait-for-event.js +5 -5
  1668. package/src/utils/event-emitter.js +1 -1
  1669. package/src/utils/format-value.js +6 -6
  1670. package/src/utils/is-date.js +1 -1
  1671. package/src/utils/model-scope.js +10 -10
  1672. package/src/utils/plain-object.js +2 -2
  1673. package/src/utils/ransack.js +35 -35
  1674. package/src/utils/with-tracked-stack-async-hooks.js +8 -8
  1675. package/src/utils/with-tracked-stack.js +6 -6
  1676. package/src/velocious-error.js +9 -3
@@ -5,7 +5,7 @@ import { FactoryCycleError, UndefinedFactoryError, UndefinedTraitError } from ".
5
5
  * A resolved attribute/transient/association slot in a compiled plan.
6
6
  * @typedef {object} Slot
7
7
  * @property {"attribute" | "transient" | "association"} slotKind - Slot nature.
8
- * @property {?} value - Literal/lazy value, override value, or AssociationDeclaration.
8
+ * @property {ReturnType<typeof JSON.parse>} value - Literal/lazy value, override value, or AssociationDeclaration.
9
9
  * @property {boolean} isOverride - Whether the value came from a call-site override.
10
10
  */
11
11
  /**
@@ -13,7 +13,7 @@ import { FactoryCycleError, UndefinedFactoryError, UndefinedTraitError } from ".
13
13
  * @typedef {object} CompiledPlan
14
14
  * @property {string} factoryName - Target factory name.
15
15
  * @property {import("./factory-definition.js").default} factoryDefinition - Target definition.
16
- * @property {(new (attributes?: Record<string, ?>) => ?) | null} modelClass - Resolved model class.
16
+ * @property {(new (attributes?: Record<string, ReturnType<typeof JSON.parse>>) => ReturnType<typeof JSON.parse>) | null} modelClass - Resolved model class.
17
17
  * @property {string[]} chainNames - Inheritance chain names (child last) for sequence scope.
18
18
  * @property {Map<string, Slot>} resolved - Name→slot map (last declaration wins).
19
19
  * @property {Map<string, import("./declarations.js").CallbackDeclaration[]>} callbacks - Deduped callbacks by event.
@@ -39,7 +39,7 @@ export default class FactoryRunner {
39
39
  * Compiles a factory invocation into a plan.
40
40
  * @param {string} factoryName - Factory to run.
41
41
  * @param {string[]} requestedTraits - Traits requested at the call site, in order.
42
- * @param {Record<string, ?>} overrides - Call-site overrides (highest precedence).
42
+ * @param {Record<string, ReturnType<typeof JSON.parse>>} overrides - Call-site overrides (highest precedence).
43
43
  * @returns {CompiledPlan} - The compiled plan.
44
44
  */
45
45
  compile(factoryName, requestedTraits, overrides) {
@@ -71,7 +71,7 @@ export default class FactoryRunner {
71
71
  /**
72
72
  * Applies the current call-site overrides without mutating the reusable template.
73
73
  * @param {CompiledPlan} planTemplate - Reusable declaration plan.
74
- * @param {Record<string, ?>} overrides - Current call-site overrides.
74
+ * @param {Record<string, ReturnType<typeof JSON.parse>>} overrides - Current call-site overrides.
75
75
  * @returns {CompiledPlan} - Per-invocation plan.
76
76
  */
77
77
  applyOverrides(planTemplate, overrides) {
@@ -123,7 +123,7 @@ export default class FactoryRunner {
123
123
  /**
124
124
  * Picks the nearest declared model class in the chain (child overrides parent).
125
125
  * @param {import("./factory-definition.js").default[]} chain - Inheritance chain.
126
- * @returns {(new (attributes?: Record<string, ?>) => ?) | null} - The model class, or null.
126
+ * @returns {(new (attributes?: Record<string, ReturnType<typeof JSON.parse>>) => ReturnType<typeof JSON.parse>) | null} - The model class, or null.
127
127
  */
128
128
  _resolveModelClass(chain) {
129
129
  for (let index = chain.length - 1; index >= 0; index--) {
@@ -197,7 +197,7 @@ export default class FactoryRunner {
197
197
  * Folds flattened declarations into a reusable compiled plan.
198
198
  * @param {object} args - Options.
199
199
  * @param {Array<{decl: import("./declarations.js").Declaration}>} args.flattened - Flattened declarations.
200
- * @param {(new (attributes?: Record<string, ?>) => ?) | null} args.modelClass - Resolved model class.
200
+ * @param {(new (attributes?: Record<string, ReturnType<typeof JSON.parse>>) => ReturnType<typeof JSON.parse>) | null} args.modelClass - Resolved model class.
201
201
  * @param {import("./factory-definition.js").default} args.target - Target factory definition.
202
202
  * @param {string[]} args.chainNames - Inheritance chain names.
203
203
  * @returns {CompiledPlan} - The compiled plan.
@@ -256,8 +256,8 @@ export default class FactoryRunner {
256
256
  * real foreign-key metadata. An explicit association object wins over its key;
257
257
  * otherwise an explicit key suppresses the factory-declared association.
258
258
  * @param {Map<string, Slot>} resolved - Folded slots.
259
- * @param {Record<string, ?>} overrides - Call-site overrides.
260
- * @param {(new (attributes?: Record<string, ?>) => ?) | null} modelClass - Resolved model class.
259
+ * @param {Record<string, ReturnType<typeof JSON.parse>>} overrides - Call-site overrides.
260
+ * @param {(new (attributes?: Record<string, ReturnType<typeof JSON.parse>>) => ReturnType<typeof JSON.parse>) | null} modelClass - Resolved model class.
261
261
  * @returns {void}
262
262
  */
263
263
  _arbitrateAssociationOverrides(resolved, overrides, modelClass) {
@@ -286,4 +286,4 @@ export default class FactoryRunner {
286
286
  }
287
287
  }
288
288
  }
289
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmFjdG9yeS1ydW5uZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvdGVzdGluZy9mYWN0b3J5L2ZhY3RvcnktcnVubmVyLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFlBQVk7QUFFWixPQUFPLGNBQWMsTUFBTSxnQ0FBZ0MsQ0FBQTtBQUMzRCxPQUFPLEVBQUMsaUJBQWlCLEVBQUUscUJBQXFCLEVBQUUsbUJBQW1CLEVBQUMsTUFBTSxhQUFhLENBQUE7QUFFekY7Ozs7OztHQU1HO0FBRUg7Ozs7Ozs7Ozs7OztHQVlHO0FBRUg7Ozs7R0FJRztBQUNILE1BQU0sQ0FBQyxPQUFPLE9BQU8sYUFBYTtJQUNoQzs7O09BR0c7SUFDSCxZQUFZLFFBQVE7UUFDbEIseUVBQXlFO1FBQ3pFLElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFBO0lBQzFCLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSCxPQUFPLENBQUMsV0FBVyxFQUFFLGVBQWUsRUFBRSxTQUFTO1FBQzdDLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLFdBQVcsRUFBRSxlQUFlLENBQUMsRUFBRSxTQUFTLENBQUMsQ0FBQTtJQUMzRixDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxlQUFlLENBQUMsV0FBVyxFQUFFLGVBQWU7UUFDMUMsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxXQUFXLENBQUMsQ0FBQTtRQUM3QyxNQUFNLE1BQU0sR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQTtRQUN0QyxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsS0FBSyxDQUFDLENBQUE7UUFFakQscUVBQXFFO1FBQ3JFLE1BQU0sU0FBUyxHQUFHLEVBQUUsQ0FBQTtRQUVwQixLQUFLLE1BQU0sV0FBVyxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsbUJBQW1CLEVB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QUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxTQUFTLEVBQUUsbUJBQW1CLENBQUM7Z0JBQUUsU0FBUTtZQUU1RCxJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztnQkFDcEIsUUFBUSxDQUFDLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxDQUFBO1lBQ3RDLENBQUM7aUJBQU0sQ0FBQztnQkFDTixRQUFRLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFBO1lBQ3ZCLENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQHRzLWNoZWNrXG5cbmltcG9ydCBEYXRhYmFzZVJlY29yZCBmcm9tIFwiLi4vLi4vZGF0YWJhc2UvcmVjb3JkL2luZGV4LmpzXCJcbmltcG9ydCB7RmFjdG9yeUN5Y2xlRXJyb3IsIFVuZGVmaW5lZEZhY3RvcnlFcnJvciwgVW5kZWZpbmVkVHJhaXRFcnJvcn0gZnJvbSBcIi4vZXJyb3JzLmpzXCJcblxuLyoqXG4gKiBBIHJlc29sdmVkIGF0dHJpYnV0ZS90cmFuc2llbnQvYXNzb2NpYXRpb24gc2xvdCBpbiBhIGNvbXBpbGVkIHBsYW4uXG4gKiBAdHlwZWRlZiB7b2JqZWN0fSBTbG90XG4gKiBAcHJvcGVydHkge1wiYXR0cmlidXRlXCIgfCBcInRyYW5zaWVudFwiIHwgXCJhc3NvY2lhdGlvblwifSBzbG90S2luZCAtIFNsb3QgbmF0dXJlLlxuICogQHByb3BlcnR5IHs/fSB2YWx1ZSAtIExpdGVyYWwvbGF6eSB2YWx1ZSwgb3ZlcnJpZGUgdmFsdWUsIG9yIEFzc29jaWF0aW9uRGVjbGFyYXRpb24uXG4gKiBAcHJvcGVydHkge2Jvb2xlYW59IGlzT3ZlcnJpZGUgLSBXaGV0aGVyIHRoZSB2YWx1ZSBjYW1lIGZyb20gYSBjYWxsLXNpdGUgb3ZlcnJpZGUuXG4gKi9cblxuLyoqXG4gKiBUaGUgaW1tdXRhYmxlIHJlc3VsdCBvZiBjb21waWxpbmcgYSBmYWN0b3J5IGludm9jYXRpb24uXG4gKiBAdHlwZWRlZiB7b2JqZWN0fSBDb21waWxlZFBsYW5cbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBmYWN0b3J5TmFtZSAtIFRhcmdldCBmYWN0b3J5IG5hbWUuXG4gKiBAcHJvcGVydHkge2ltcG9ydChcIi4vZmFjdG9yeS1kZWZpbml0aW9uLmpzXCIpLmRlZmF1bHR9IGZhY3RvcnlEZWZpbml0aW9uIC0gVGFyZ2V0IGRlZmluaXRpb24uXG4gKiBAcHJvcGVydHkgeyhuZXcgKGF0dHJpYnV0ZXM/OiBSZWNvcmQ8c3RyaW5nLCA/PikgPT4gPykgfCBudWxsfSBtb2RlbENsYXNzIC0gUmVzb2x2ZWQgbW9kZWwgY2xhc3MuXG4gKiBAcHJvcGVydHkge3N0cmluZ1tdfSBjaGFpbk5hbWVzIC0gSW5oZXJpdGFuY2UgY2hhaW4gbmFtZXMgKGNoaWxkIGxhc3QpIGZvciBzZXF1ZW5jZSBzY29wZS5cbiAqIEBwcm9wZXJ0eSB7TWFwPHN0cmluZywgU2xvdD59IHJlc29sdmVkIC0gTmFtZeKGknNsb3QgbWFwIChsYXN0IGRlY2xhcmF0aW9uIHdpbnMpLlxuICogQHByb3BlcnR5IHtNYXA8c3RyaW5nLCBpbXBvcnQoXCIuL2RlY2xhcmF0aW9ucy5qc1wiKS5DYWxsYmFja0RlY2xhcmF0aW9uW10+fSBjYWxsYmFja3MgLSBEZWR1cGVkIGNhbGxiYWNrcyBieSBldmVudC5cbiAqIEBwcm9wZXJ0eSB7aW1wb3J0KFwiLi9kZWNsYXJhdGlvbnMuanNcIikuSW5pdGlhbGl6ZVdpdGhEZWNsYXJhdGlvbltcImZuXCJdIHwgbnVsbH0gaW5pdGlhbGl6ZVdpdGggLSBDdXN0b20gY29uc3RydWN0b3IsIG9yIG51bGwuXG4gKiBAcHJvcGVydHkge2ltcG9ydChcIi4vZGVjbGFyYXRpb25zLmpzXCIpLlRvQ3JlYXRlRGVjbGFyYXRpb25bXCJmblwiXSB8IG51bGx9IHRvQ3JlYXRlIC0gQ3VzdG9tIHBlcnNpc3RlbmNlLCBvciBudWxsLlxuICogQHByb3BlcnR5IHtib29sZWFufSBza2lwQ3JlYXRlIC0gV2hldGhlciBwZXJzaXN0ZW5jZSBpcyBza2lwcGVkLlxuICovXG5cbi8qKlxuICogQ29tcGlsZXMgZmFjdG9yeSBpbnZvY2F0aW9ucyBpbnRvIGltbXV0YWJsZSBwbGFucyBieSByZXNvbHZpbmcgdGhlIGluaGVyaXRhbmNlXG4gKiBjaGFpbiwgZXhwYW5kaW5nIGJhc2UgYW5kIHJlcXVlc3RlZCB0cmFpdHMsIGFuZCBmb2xkaW5nIGRlY2xhcmF0aW9ucyBpbnRvIGFcbiAqIG5hbWXihpJzbG90IG1hcCBwbHVzIGEgZGVkdXBlZCwgb3JkZXJlZCBjYWxsYmFjayBzZXQuXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEZhY3RvcnlSdW5uZXIge1xuICAvKipcbiAgICogQnVpbGRzIGEgcnVubmVyLlxuICAgKiBAcGFyYW0ge2ltcG9ydChcIi4vZmFjdG9yeS1yZWdpc3RyeS5qc1wiKS5kZWZhdWx0fSByZWdpc3RyeSAtIE93bmluZyByZWdpc3RyeS5cbiAgICovXG4gIGNvbnN0cnVjdG9yKHJlZ2lzdHJ5KSB7XG4gICAgLyoqIEB0eXBlIHtpbXBvcnQoXCIuL2ZhY3RvcnktcmVnaXN0cnkuanNcIikuZGVmYXVsdH0gLSBPd25pbmcgcmVnaXN0cnkuICovXG4gICAgdGhpcy5yZWdpc3RyeSA9IHJlZ2lzdHJ5XG4gIH1cblxuICAvKipcbiAgICogQ29tcGlsZXMgYSBmYWN0b3J5IGludm9jYXRpb24gaW50byBhIHBsYW4uXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBmYWN0b3J5TmFtZSAtIEZhY3RvcnkgdG8gcnVuLlxuICAgKiBAcGFyYW0ge3N0cmluZ1tdfSByZXF1ZXN0ZWRUcmFpdHMgLSBUcmFpdHMgcmVxdWVzdGVkIGF0IHRoZSBjYWxsIHNpdGUsIGluIG9yZGVyLlxuICAgKiBAcGFyYW0ge1JlY29yZDxzdHJpbmcsID8+fSBvdmVycmlkZXMgLSBDYWxsLXNpdGUgb3ZlcnJpZGVzIChoaWdoZXN0IHByZWNlZGVuY2UpLlxuICAgKiBAcmV0dXJucyB7Q29tcGlsZWRQbGFufSAtIFRoZSBjb21waWxlZCBwbGFuLlxuICAgKi9cbiAgY29tcGlsZShmYWN0b3J5TmFtZSwgcmVxdWVzdGVkVHJhaXRzLCBvdmVycmlkZXMpIHtcbiAgICByZXR1cm4gdGhpcy5hcHBseU92ZXJyaWRlcyh0aGlzLmNvbXBpbGVUZW1wbGF0ZShmYWN0b3J5TmFtZSwgcmVxdWVzdGVkVHJhaXRzKSwgb3ZlcnJpZGVzKVxuICB9XG5cbiAgLyoqXG4gICAqIENvbXBpbGVzIGluaGVyaXRhbmNlLCB0cmFpdHMgYW5kIGRlY2xhcmF0aW9ucyB3aXRob3V0IGNhbGwtc2l0ZSBvdmVycmlkZXMuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBmYWN0b3J5TmFtZSAtIEZhY3RvcnkgdG8gcnVuLlxuICAgKiBAcGFyYW0ge3N0cmluZ1tdfSByZXF1ZXN0ZWRUcmFpdHMgLSBUcmFpdHMgcmVxdWVzdGVkIGF0IHRoZSBjYWxsIHNpdGUsIGluIG9yZGVyLlxuICAgKiBAcmV0dXJucyB7Q29tcGlsZWRQbGFufSAtIFJldXNhYmxlIGRlY2xhcmF0aW9uIHBsYW4uXG4gICAqL1xuICBjb21waWxlVGVtcGxhdGUoZmFjdG9yeU5hbWUsIHJlcXVlc3RlZFRyYWl0cykge1xuICAgIGNvbnN0IGNoYWluID0gdGhpcy5fcmVzb2x2ZUNoYWluKGZhY3RvcnlOYW1lKVxuICAgIGNvbnN0IHRhcmdldCA9IGNoYWluW2NoYWluLmxlbmd0aCAtIDFdXG4gICAgY29uc3QgbW9kZWxDbGFzcyA9IHRoaXMuX3Jlc29sdmVNb2RlbENsYXNzKGNoYWluKVxuXG4gICAgLyoqIEB0eXBlIHtBcnJheTx7ZGVjbDogaW1wb3J0KFwiLi9kZWNsYXJhdGlvbnMuanNcIikuRGVjbGFyYXRpb259Pn0gKi9cbiAgICBjb25zdCBmbGF0dGVuZWQgPSBbXVxuXG4gICAgZm9yIChjb25zdCBkZWNsYXJhdGlvbiBvZiB0aGlzLnJlZ2lzdHJ5Ll9nbG9iYWxEZWNsYXJhdGlvbnMpIHtcbiAgICAgIGZsYXR0ZW5lZC5wdXNoKHtkZWNsOiBkZWNsYXJhdGlvbn0pXG4gICAgfVxuXG4gICAgZm9yIChjb25zdCBmYWN0b3J5RGVmaW5pdGlvbiBvZiBjaGFpbikge1xuICAgICAgdGhpcy5fZXhwYW5kRmFjdG9yeURlY2xhcmF0aW9ucyhmYWN0b3J5RGVmaW5pdGlvbiwgZmFjdG9yeURlZmluaXRpb24sIGZsYXR0ZW5lZClcbiAgICB9XG5cbiAgICBmb3IgKGNvbnN0IHRyYWl0TmFtZSBvZiByZXF1ZXN0ZWRUcmFpdHMpIHtcbiAgICAgIHRoaXMuX2V4cGFuZFRyYWl0KHRyYWl0TmFtZSwgdGFyZ2V0LCBmbGF0dGVuZWQsIFtdKVxuICAgIH1cblxuICAgIHJldHVybiB0aGlzLl9idWlsZFBsYW4oe2ZsYXR0ZW5lZCwgbW9kZWxDbGFzcywgdGFyZ2V0LCBjaGFpbk5hbWVzOiBjaGFpbi5tYXAoKGRlZmluaXRpb24pID0+IGRlZmluaXRpb24ubmFtZSl9KVxuICB9XG5cbiAgLyoqXG4gICAqIEFwcGxpZXMgdGhlIGN1cnJlbnQgY2FsbC1zaXRlIG92ZXJyaWRlcyB3aXRob3V0IG11dGF0aW5nIHRoZSByZXVzYWJsZSB0ZW1wbGF0ZS5cbiAgICogQHBhcmFtIHtDb21waWxlZFBsYW59IHBsYW5UZW1wbGF0ZSAtIFJldXNhYmxlIGRlY2xhcmF0aW9uIHBsYW4uXG4gICAqIEBwYXJhbSB7UmVjb3JkPHN0cmluZywgPz59IG92ZXJyaWRlcyAtIEN1cnJlbnQgY2FsbC1zaXRlIG92ZXJyaWRlcy5cbiAgICogQHJldHVybnMge0NvbXBpbGVkUGxhbn0gLSBQZXItaW52b2NhdGlvbiBwbGFuLlxuICAgKi9cbiAgYXBwbHlPdmVycmlkZXMocGxhblRlbXBsYXRlLCBvdmVycmlkZXMpIHtcbiAgICBjb25zdCBvdmVycmlkZUtleXMgPSBPYmplY3Qua2V5cyhvdmVycmlkZXMpXG5cbiAgICBpZiAob3ZlcnJpZGVLZXlzLmxlbmd0aCA9PT0gMCkgcmV0dXJuIHBsYW5UZW1wbGF0ZVxuXG4gICAgY29uc3QgcmVzb2x2ZWQgPSBuZXcgTWFwKHBsYW5UZW1wbGF0ZS5yZXNvbHZlZClcblxuICAgIGZvciAoY29uc3Qga2V5IG9mIG92ZXJyaWRlS2V5cykge1xuICAgICAgY29uc3QgcHJpb3IgPSByZXNvbHZlZC5nZXQoa2V5KVxuXG4gICAgICByZXNvbHZlZC5zZXQoa2V5LCB7c2xvdEtpbmQ6IHByaW9yID8gcHJpb3Iuc2xvdEtpbmQgOiBcImF0dHJpYnV0ZVwiLCB2YWx1ZTogb3ZlcnJpZGVzW2tleV0sIGlzT3ZlcnJpZGU6IHRydWV9KVxuICAgIH1cblxuICAgIHRoaXMuX2FyYml0cmF0ZUFzc29jaWF0aW9uT3ZlcnJpZGVzKHJlc29sdmVkLCBvdmVycmlkZXMsIHBsYW5UZW1wbGF0ZS5tb2RlbENsYXNzKVxuXG4gICAgcmV0dXJuIHsuLi5wbGFuVGVtcGxhdGUsIHJlc29sdmVkfVxuICB9XG5cbiAgLyoqXG4gICAqIFJlc29sdmVzIHRoZSBpbmhlcml0YW5jZSBjaGFpbiBmcm9tIHRoZSByb290IHBhcmVudCBkb3duIHRvIHRoZSB0YXJnZXQuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBmYWN0b3J5TmFtZSAtIFRhcmdldCBmYWN0b3J5IG5hbWUuXG4gICAqIEByZXR1cm5zIHtpbXBvcnQoXCIuL2ZhY3RvcnktZGVmaW5pdGlvbi5qc1wiKS5kZWZhdWx0W119IC0gQ2hhaW4gKHJvb3QgZmlyc3QsIHRhcmdldCBsYXN0KS5cbiAgICovXG4gIF9yZXNvbHZlQ2hhaW4oZmFjdG9yeU5hbWUpIHtcbiAgICAvKiogQHR5cGUge2ltcG9ydChcIi4vZmFjdG9yeS1kZWZpbml0aW9uLmpzXCIpLmRlZmF1bHRbXX0gKi9cbiAgICBjb25zdCBjaGFpbiA9IFtdXG4gICAgLyoqIEB0eXBlIHtTZXQ8c3RyaW5nPn0gKi9cbiAgICBjb25zdCBzZWVuID0gbmV3IFNldCgpXG4gICAgLyoqIEB0eXBlIHtpbXBvcnQoXCIuL2ZhY3RvcnktZGVmaW5pdGlvbi5qc1wiKS5kZWZhdWx0IHwgbnVsbH0gKi9cbiAgICBsZXQgY3VycmVudCA9IHRoaXMuX3Jlc29sdmVGYWN0b3J5KGZhY3RvcnlOYW1lKVxuXG4gICAgd2hpbGUgKGN1cnJlbnQpIHtcbiAgICAgIGlmIChzZWVuLmhhcyhjdXJyZW50Lm5hbWUpKSB7XG4gICAgICAgIHRocm93IG5ldyBGYWN0b3J5Q3ljbGVFcnJvcihgRmFjdG9yeSBpbmhlcml0YW5jZSBjeWNsZSBkZXRlY3RlZDogJHtbLi4uc2VlbiwgY3VycmVudC5uYW1lXS5qb2luKFwiIC0+IFwiKX1gKVxuICAgICAgfVxuXG4gICAgICBzZWVuLmFkZChjdXJyZW50Lm5hbWUpXG4gICAgICBjaGFpbi51bnNoaWZ0KGN1cnJlbnQpXG4gICAgICBjdXJyZW50ID0gY3VycmVudC5wYXJlbnROYW1lID8gdGhpcy5fcmVzb2x2ZUZhY3RvcnkoY3VycmVudC5wYXJlbnROYW1lKSA6IG51bGxcbiAgICB9XG5cbiAgICByZXR1cm4gY2hhaW5cbiAgfVxuXG4gIC8qKlxuICAgKiBSZXNvbHZlcyBhIGZhY3RvcnkgZGVmaW5pdGlvbiBieSBuYW1lIChvciBhbGlhcykuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBmYWN0b3J5TmFtZSAtIEZhY3RvcnkgbmFtZS5cbiAgICogQHJldHVybnMge2ltcG9ydChcIi4vZmFjdG9yeS1kZWZpbml0aW9uLmpzXCIpLmRlZmF1bHR9IC0gVGhlIGRlZmluaXRpb24uXG4gICAqL1xuICBfcmVzb2x2ZUZhY3RvcnkoZmFjdG9yeU5hbWUpIHtcbiAgICBjb25zdCBkZWZpbml0aW9uID0gdGhpcy5yZWdpc3RyeS5fZmFjdG9yaWVzLmdldChmYWN0b3J5TmFtZSlcblxuICAgIGlmICghZGVmaW5pdGlvbikge1xuICAgICAgdGhyb3cgbmV3IFVuZGVmaW5lZEZhY3RvcnlFcnJvcihgTm8gZmFjdG9yeSByZWdpc3RlcmVkIGNhbGxlZCBcIiR7ZmFjdG9yeU5hbWV9XCIuIFJlZ2lzdGVyZWQ6ICR7Wy4uLnRoaXMucmVnaXN0cnkuX2ZhY3Rvcmllcy5rZXlzKCldLmpvaW4oXCIsIFwiKSB8fCBcIihub25lKVwifWApXG4gICAgfVxuXG4gICAgcmV0dXJuIGRlZmluaXRpb25cbiAgfVxuXG4gIC8qKlxuICAgKiBQaWNrcyB0aGUgbmVhcmVzdCBkZWNsYXJlZCBtb2RlbCBjbGFzcyBpbiB0aGUgY2hhaW4gKGNoaWxkIG92ZXJyaWRlcyBwYXJlbnQpLlxuICAgKiBAcGFyYW0ge2ltcG9ydChcIi4vZmFjdG9yeS1kZWZpbml0aW9uLmpzXCIpLmRlZmF1bHRbXX0gY2hhaW4gLSBJbmhlcml0YW5jZSBjaGFpbi5cbiAgICogQHJldHVybnMgeyhuZXcgKGF0dHJpYnV0ZXM/OiBSZWNvcmQ8c3RyaW5nLCA/PikgPT4gPykgfCBudWxsfSAtIFRoZSBtb2RlbCBjbGFzcywgb3IgbnVsbC5cbiAgICovXG4gIF9yZXNvbHZlTW9kZWxDbGFzcyhjaGFpbikge1xuICAgIGZvciAobGV0IGluZGV4ID0gY2hhaW4ubGVuZ3RoIC0gMTsgaW5kZXggPj0gMDsgaW5kZXgtLSkge1xuICAgICAgaWYgKGNoYWluW2luZGV4XS5tb2RlbENsYXNzKSByZXR1cm4gY2hhaW5baW5kZXhdLm1vZGVsQ2xhc3NcbiAgICB9XG5cbiAgICByZXR1cm4gbnVsbFxuICB9XG5cbiAgLyoqXG4gICAqIEV4cGFuZHMgb25lIGZhY3RvcnkncyBvd24gZGVjbGFyYXRpb25zLCBpbmxpbmluZyBiYXNlLXRyYWl0IGluY2x1c2lvbnMuXG4gICAqIEBwYXJhbSB7aW1wb3J0KFwiLi9mYWN0b3J5LWRlZmluaXRpb24uanNcIikuZGVmYXVsdH0gZmFjdG9yeURlZmluaXRpb24gLSBGYWN0b3J5IHdob3NlIGRlY2xhcmF0aW9ucyBhcmUgZXhwYW5kZWQuXG4gICAqIEBwYXJhbSB7aW1wb3J0KFwiLi9mYWN0b3J5LWRlZmluaXRpb24uanNcIikuZGVmYXVsdH0gc2NvcGUgLSBUYXJnZXQgZmFjdG9yeSAoZm9yIGxvY2FsLXRyYWl0IHJlc29sdXRpb24pLlxuICAgKiBAcGFyYW0ge0FycmF5PHtkZWNsOiBpbXBvcnQoXCIuL2RlY2xhcmF0aW9ucy5qc1wiKS5EZWNsYXJhdGlvbn0+fSBvdXQgLSBGbGF0dGVuZWQgb3V0cHV0IHNpbmsuXG4gICAqIEByZXR1cm5zIHt2b2lkfVxuICAgKi9cbiAgX2V4cGFuZEZhY3RvcnlEZWNsYXJhdGlvbnMoZmFjdG9yeURlZmluaXRpb24sIHNjb3BlLCBvdXQpIHtcbiAgICBmb3IgKGNvbnN0IGRlY2xhcmF0aW9uIG9mIGZhY3RvcnlEZWZpbml0aW9uLmRlY2xhcmF0aW9ucykge1xuICAgICAgaWYgKGRlY2xhcmF0aW9uLmtpbmQgPT09IFwidHJhaXRJbmNsdWRlXCIpIHtcbiAgICAgICAgdGhpcy5fZXhwYW5kVHJhaXQoZGVjbGFyYXRpb24ubmFtZSwgc2NvcGUsIG91dCwgW10pXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBvdXQucHVzaCh7ZGVjbDogZGVjbGFyYXRpb259KVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBFeHBhbmRzIGEgdHJhaXQgKHJlc29sdmluZyBmYWN0b3J5LWxvY2FsIGJlZm9yZSBnbG9iYWwpIGFuZCBpdHMgaW5jbHVzaW9ucy5cbiAgICogQHBhcmFtIHtzdHJpbmd9IHRyYWl0TmFtZSAtIFRyYWl0IHRvIGV4cGFuZC5cbiAgICogQHBhcmFtIHtpbXBvcnQoXCIuL2ZhY3RvcnktZGVmaW5pdGlvbi5qc1wiKS5kZWZhdWx0fSBzY29wZSAtIFRhcmdldCBmYWN0b3J5IChmb3IgbG9jYWwtdHJhaXQgcmVzb2x1dGlvbikuXG4gICAqIEBwYXJhbSB7QXJyYXk8e2RlY2w6IGltcG9ydChcIi4vZGVjbGFyYXRpb25zLmpzXCIpLkRlY2xhcmF0aW9ufT59IG91dCAtIEZsYXR0ZW5lZCBvdXRwdXQgc2luay5cbiAgICogQHBhcmFtIHtzdHJpbmdbXX0gYWN0aXZlUGF0aCAtIFRyYWl0IGluY2x1c2lvbiBwYXRoIChmb3IgY3ljbGUgZGV0ZWN0aW9uKS5cbiAgICogQHJldHVybnMge3ZvaWR9XG4gICAqL1xuICBfZXhwYW5kVHJhaXQodHJhaXROYW1lLCBzY29wZSwgb3V0LCBhY3RpdmVQYXRoKSB7XG4gICAgaWYgKGFjdGl2ZVBhdGguaW5jbHVkZXModHJhaXROYW1lKSkge1xuICAgICAgdGhyb3cgbmV3IEZhY3RvcnlDeWNsZUVycm9yKGBUcmFpdCBpbmNsdXNpb24gY3ljbGUgZGV0ZWN0ZWQ6ICR7Wy4uLmFjdGl2ZVBhdGgsIHRyYWl0TmFtZV0uam9pbihcIiAtPiBcIil9YClcbiAgICB9XG5cbiAgICBjb25zdCBsb2NhbFRyYWl0ID0gdGhpcy5fcmVzb2x2ZUxvY2FsVHJhaXQodHJhaXROYW1lLCBzY29wZSlcbiAgICBjb25zdCB0cmFpdCA9IGxvY2FsVHJhaXQ/LnRyYWl0IHx8IHRoaXMucmVnaXN0cnkuX2dsb2JhbFRyYWl0cy5nZXQodHJhaXROYW1lKVxuICAgIGNvbnN0IGluY2x1c2lvblNjb3BlID0gbG9jYWxUcmFpdD8uc2NvcGUgfHwgc2NvcGVcblxuICAgIGlmICghdHJhaXQpIHtcbiAgICAgIHRocm93IG5ldyBVbmRlZmluZWRUcmFpdEVycm9yKGBObyB0cmFpdCByZWdpc3RlcmVkIGNhbGxlZCBcIiR7dHJhaXROYW1lfVwiIGZvciBmYWN0b3J5IFwiJHtzY29wZS5uYW1lfVwiYClcbiAgICB9XG5cbiAgICBmb3IgKGNvbnN0IGRlY2xhcmF0aW9uIG9mIHRyYWl0LmRlY2xhcmF0aW9ucykge1xuICAgICAgaWYgKGRlY2xhcmF0aW9uLmtpbmQgPT09IFwidHJhaXRJbmNsdWRlXCIpIHtcbiAgICAgICAgdGhpcy5fZXhwYW5kVHJhaXQoZGVjbGFyYXRpb24ubmFtZSwgaW5jbHVzaW9uU2NvcGUsIG91dCwgWy4uLmFjdGl2ZVBhdGgsIHRyYWl0TmFtZV0pXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBvdXQucHVzaCh7ZGVjbDogZGVjbGFyYXRpb259KVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBSZXNvbHZlcyBhIGxvY2FsIHRyYWl0IGZyb20gdGhlIGN1cnJlbnQgZmFjdG9yeSB1cHdhcmQgdGhyb3VnaCBpdHMgcGFyZW50cy5cbiAgICogQHBhcmFtIHtzdHJpbmd9IHRyYWl0TmFtZSAtIFRyYWl0IG5hbWUgdG8gcmVzb2x2ZS5cbiAgICogQHBhcmFtIHtpbXBvcnQoXCIuL2ZhY3RvcnktZGVmaW5pdGlvbi5qc1wiKS5kZWZhdWx0fSBzY29wZSAtIERlY2xhcmluZy9yZXF1ZXN0aW5nIGZhY3Rvcnkgc2NvcGUuXG4gICAqIEByZXR1cm5zIHt7dHJhaXQ6IGltcG9ydChcIi4vdHJhaXQtZGVmaW5pdGlvbi5qc1wiKS5kZWZhdWx0LCBzY29wZTogaW1wb3J0KFwiLi9mYWN0b3J5LWRlZmluaXRpb24uanNcIikuZGVmYXVsdH0gfCB1bmRlZmluZWR9IC0gTmVhcmVzdCBsb2NhbCB0cmFpdCBhbmQgaXRzIGRlY2xhcmluZyBzY29wZSwgaWYgYW55LlxuICAgKi9cbiAgX3Jlc29sdmVMb2NhbFRyYWl0KHRyYWl0TmFtZSwgc2NvcGUpIHtcbiAgICAvKiogQHR5cGUge2ltcG9ydChcIi4vZmFjdG9yeS1kZWZpbml0aW9uLmpzXCIpLmRlZmF1bHQgfCB1bmRlZmluZWR9ICovXG4gICAgbGV0IGN1cnJlbnQgPSBzY29wZVxuXG4gICAgd2hpbGUgKGN1cnJlbnQpIHtcbiAgICAgIGNvbnN0IHRyYWl0ID0gY3VycmVudC5sb2NhbFRyYWl0cy5nZXQodHJhaXROYW1lKVxuXG4gICAgICBpZiAodHJhaXQpIHJldHVybiB7dHJhaXQsIHNjb3BlOiBjdXJyZW50fVxuXG4gICAgICBjdXJyZW50ID0gY3VycmVudC5wYXJlbnROYW1lID8gdGhpcy5fcmVzb2x2ZUZhY3RvcnkoY3VycmVudC5wYXJlbnROYW1lKSA6IHVuZGVmaW5lZFxuICAgIH1cblxuICAgIHJldHVybiB1bmRlZmluZWRcbiAgfVxuXG4gIC8qKlxuICAgKiBGb2xkcyBmbGF0dGVuZWQgZGVjbGFyYXRpb25zIGludG8gYSByZXVzYWJsZSBjb21waWxlZCBwbGFuLlxuICAgKiBAcGFyYW0ge29iamVjdH0gYXJncyAtIE9wdGlvbnMuXG4gICAqIEBwYXJhbSB7QXJyYXk8e2RlY2w6IGltcG9ydChcIi4vZGVjbGFyYXRpb25zLmpzXCIpLkRlY2xhcmF0aW9ufT59IGFyZ3MuZmxhdHRlbmVkIC0gRmxhdHRlbmVkIGRlY2xhcmF0aW9ucy5cbiAgICogQHBhcmFtIHsobmV3IChhdHRyaWJ1dGVzPzogUmVjb3JkPHN0cmluZywgPz4pID0+ID8pIHwgbnVsbH0gYXJncy5tb2RlbENsYXNzIC0gUmVzb2x2ZWQgbW9kZWwgY2xhc3MuXG4gICAqIEBwYXJhbSB7aW1wb3J0KFwiLi9mYWN0b3J5LWRlZmluaXRpb24uanNcIikuZGVmYXVsdH0gYXJncy50YXJnZXQgLSBUYXJnZXQgZmFjdG9yeSBkZWZpbml0aW9uLlxuICAgKiBAcGFyYW0ge3N0cmluZ1tdfSBhcmdzLmNoYWluTmFtZXMgLSBJbmhlcml0YW5jZSBjaGFpbiBuYW1lcy5cbiAgICogQHJldHVybnMge0NvbXBpbGVkUGxhbn0gLSBUaGUgY29tcGlsZWQgcGxhbi5cbiAgICovXG4gIF9idWlsZFBsYW4oe2ZsYXR0ZW5lZCwgbW9kZWxDbGFzcywgdGFyZ2V0LCBjaGFpbk5hbWVzfSkge1xuICAgIC8qKiBAdHlwZSB7TWFwPHN0cmluZywgU2xvdD59ICovXG4gICAgY29uc3QgcmVzb2x2ZWQgPSBuZXcgTWFwKClcbiAgICAvKiogQHR5cGUge01hcDxzdHJpbmcsIGltcG9ydChcIi4vZGVjbGFyYXRpb25zLmpzXCIpLkNhbGxiYWNrRGVjbGFyYXRpb25bXT59ICovXG4gICAgY29uc3QgY2FsbGJhY2tzID0gbmV3IE1hcCgpXG4gICAgLyoqIEB0eXBlIHtTZXQ8aW1wb3J0KFwiLi9kZWNsYXJhdGlvbnMuanNcIikuQ2FsbGJhY2tEZWNsYXJhdGlvbj59ICovXG4gICAgY29uc3Qgc2VlbkNhbGxiYWNrcyA9IG5ldyBTZXQoKVxuICAgIC8qKiBAdHlwZSB7aW1wb3J0KFwiLi9kZWNsYXJhdGlvbnMuanNcIikuSW5pdGlhbGl6ZVdpdGhEZWNsYXJhdGlvbltcImZuXCJdIHwgbnVsbH0gKi9cbiAgICBsZXQgaW5pdGlhbGl6ZVdpdGggPSBudWxsXG4gICAgLyoqIEB0eXBlIHtpbXBvcnQoXCIuL2RlY2xhcmF0aW9ucy5qc1wiKS5Ub0NyZWF0ZURlY2xhcmF0aW9uW1wiZm5cIl0gfCBudWxsfSAqL1xuICAgIGxldCB0b0NyZWF0ZSA9IG51bGxcbiAgICBsZXQgc2tpcENyZWF0ZSA9IGZhbHNlXG5cbiAgICBmb3IgKGNvbnN0IHtkZWNsfSBvZiBmbGF0dGVuZWQpIHtcbiAgICAgIGlmIChkZWNsLmtpbmQgPT09IFwiYXR0cmlidXRlXCIpIHtcbiAgICAgICAgcmVzb2x2ZWQuc2V0KGRlY2wubmFtZSwge3Nsb3RLaW5kOiBkZWNsLmlzVHJhbnNpZW50ID8gXCJ0cmFuc2llbnRcIiA6IFwiYXR0cmlidXRlXCIsIHZhbHVlOiBkZWNsLnZhbHVlLCBpc092ZXJyaWRlOiBmYWxzZX0pXG4gICAgICB9IGVsc2UgaWYgKGRlY2wua2luZCA9PT0gXCJhc3NvY2lhdGlvblwiKSB7XG4gICAgICAgIHJlc29sdmVkLnNldChkZWNsLm5hbWUsIHtzbG90S2luZDogXCJhc3NvY2lhdGlvblwiLCB2YWx1ZTogZGVjbCwgaXNPdmVycmlkZTogZmFsc2V9KVxuICAgICAgfSBlbHNlIGlmIChkZWNsLmtpbmQgPT09IFwiY2FsbGJhY2tcIikge1xuICAgICAgICBpZiAoIXNlZW5DYWxsYmFja3MuaGFzKGRlY2wpKSB7XG4gICAgICAgICAgc2VlbkNhbGxiYWNrcy5hZGQoZGVjbClcblxuICAgICAgICAgIGNvbnN0IGV2ZW50Q2FsbGJhY2tzID0gY2FsbGJhY2tzLmdldChkZWNsLmV2ZW50KSB8fCBbXVxuXG4gICAgICAgICAgZXZlbnRDYWxsYmFja3MucHVzaChkZWNsKVxuICAgICAgICAgIGNhbGxiYWNrcy5zZXQoZGVjbC5ldmVudCwgZXZlbnRDYWxsYmFja3MpXG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoZGVjbC5raW5kID09PSBcImluaXRpYWxpemVXaXRoXCIpIHtcbiAgICAgICAgaW5pdGlhbGl6ZVdpdGggPSBkZWNsLmZuXG4gICAgICB9IGVsc2UgaWYgKGRlY2wua2luZCA9PT0gXCJ0b0NyZWF0ZVwiKSB7XG4gICAgICAgIHRvQ3JlYXRlID0gZGVjbC5mblxuICAgICAgfSBlbHNlIGlmIChkZWNsLmtpbmQgPT09IFwic2tpcENyZWF0ZVwiKSB7XG4gICAgICAgIHNraXBDcmVhdGUgPSB0cnVlXG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIGZhY3RvcnlOYW1lOiB0YXJnZXQubmFtZSxcbiAgICAgIGZhY3RvcnlEZWZpbml0aW9uOiB0YXJnZXQsXG4gICAgICBtb2RlbENsYXNzLFxuICAgICAgY2hhaW5OYW1lcyxcbiAgICAgIHJlc29sdmVkLFxuICAgICAgY2FsbGJhY2tzLFxuICAgICAgaW5pdGlhbGl6ZVdpdGgsXG4gICAgICB0b0NyZWF0ZSxcbiAgICAgIHNraXBDcmVhdGVcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQXBwbGllcyBiZWxvbmdzLXRvIG92ZXJyaWRlIHByZWNlZGVuY2UgdXNpbmcgdGhlIGRlY2xhcmVkIG1vZGVsIHJlbGF0aW9uc2hpcCdzXG4gICAqIHJlYWwgZm9yZWlnbi1rZXkgbWV0YWRhdGEuIEFuIGV4cGxpY2l0IGFzc29jaWF0aW9uIG9iamVjdCB3aW5zIG92ZXIgaXRzIGtleTtcbiAgICogb3RoZXJ3aXNlIGFuIGV4cGxpY2l0IGtleSBzdXBwcmVzc2VzIHRoZSBmYWN0b3J5LWRlY2xhcmVkIGFzc29jaWF0aW9uLlxuICAgKiBAcGFyYW0ge01hcDxzdHJpbmcsIFNsb3Q+fSByZXNvbHZlZCAtIEZvbGRlZCBzbG90cy5cbiAgICogQHBhcmFtIHtSZWNvcmQ8c3RyaW5nLCA/Pn0gb3ZlcnJpZGVzIC0gQ2FsbC1zaXRlIG92ZXJyaWRlcy5cbiAgICogQHBhcmFtIHsobmV3IChhdHRyaWJ1dGVzPzogUmVjb3JkPHN0cmluZywgPz4pID0+ID8pIHwgbnVsbH0gbW9kZWxDbGFzcyAtIFJlc29sdmVkIG1vZGVsIGNsYXNzLlxuICAgKiBAcmV0dXJucyB7dm9pZH1cbiAgICovXG4gIF9hcmJpdHJhdGVBc3NvY2lhdGlvbk92ZXJyaWRlcyhyZXNvbHZlZCwgb3ZlcnJpZGVzLCBtb2RlbENsYXNzKSB7XG4gICAgaWYgKE9iamVjdC5rZXlzKG92ZXJyaWRlcykubGVuZ3RoID09PSAwKSByZXR1cm5cbiAgICBpZiAodHlwZW9mIG1vZGVsQ2xhc3MgIT09IFwiZnVuY3Rpb25cIiB8fCAhKG1vZGVsQ2xhc3MucHJvdG90eXBlIGluc3RhbmNlb2YgRGF0YWJhc2VSZWNvcmQpKSByZXR1cm5cblxuICAgIGNvbnN0IGJhY2tlbmRNb2RlbENsYXNzID0gLyoqIEB0eXBlIHt0eXBlb2YgRGF0YWJhc2VSZWNvcmR9ICovIChtb2RlbENsYXNzKVxuICAgIGNvbnN0IGNvbHVtblRvQXR0cmlidXRlID0gYmFja2VuZE1vZGVsQ2xhc3MuZ2V0Q29sdW1uTmFtZVRvQXR0cmlidXRlTmFtZU1hcCgpXG5cbiAgICBmb3IgKGNvbnN0IFtuYW1lLCBzbG90XSBvZiBbLi4ucmVzb2x2ZWRdKSB7XG4gICAgICBpZiAoc2xvdC5zbG90S2luZCAhPT0gXCJhc3NvY2lhdGlvblwiKSBjb250aW51ZVxuXG4gICAgICBjb25zdCByZWxhdGlvbnNoaXAgPSBiYWNrZW5kTW9kZWxDbGFzcy5nZXRSZWxhdGlvbnNoaXBCeU5hbWUobmFtZSlcblxuICAgICAgaWYgKHJlbGF0aW9uc2hpcC5nZXRUeXBlKCkgIT09IFwiYmVsb25nc1RvXCIpIGNvbnRpbnVlXG5cbiAgICAgIGNvbnN0IGZvcmVpZ25LZXlDb2x1bW4gPSByZWxhdGlvbnNoaXAuZ2V0Rm9yZWlnbktleSgpXG4gICAgICBjb25zdCBmb3JlaWduS2V5QXR0cmlidXRlID0gY29sdW1uVG9BdHRyaWJ1dGVbZm9yZWlnbktleUNvbHVtbl0gfHwgZm9yZWlnbktleUNvbHVtblxuXG4gICAgICBpZiAoIU9iamVjdC5oYXNPd24ob3ZlcnJpZGVzLCBmb3JlaWduS2V5QXR0cmlidXRlKSkgY29udGludWVcblxuICAgICAgaWYgKHNsb3QuaXNPdmVycmlkZSkge1xuICAgICAgICByZXNvbHZlZC5kZWxldGUoZm9yZWlnbktleUF0dHJpYnV0ZSlcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJlc29sdmVkLmRlbGV0ZShuYW1lKVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuIl19
289
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmFjdG9yeS1ydW5uZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvdGVzdGluZy9mYWN0b3J5L2ZhY3RvcnktcnVubmVyLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFlBQVk7QUFFWixPQUFPLGNBQWMsTUFBTSxnQ0FBZ0MsQ0FBQTtBQUMzRCxPQUFPLEVBQUMsaUJBQWlCLEVBQUUscUJBQXFCLEVBQUUsbUJBQW1CLEVBQUMsTUFBTSxhQUFhLENBQUE7QUFFekY7Ozs7OztHQU1HO0FBRUg7Ozs7Ozs7Ozs7OztHQVlHO0FBRUg7Ozs7R0FJRztBQUNILE1BQU0sQ0FBQyxPQUFPLE9BQU8sYUFBYTtJQUNoQzs7O09BR0c7SUFDSCxZQUFZLFFBQVE7UUFDbEIseUVBQXlFO1FBQ3pFLElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFBO0lBQzFCLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSCxPQUFPLENBQUMsV0FBVyxFQUFFLGVBQWUsRUFBRSxTQUFTO1FBQzdDLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLFdBQVcsRUFBRSxlQUFlLENBQUMsRUFBRSxTQUFTLENBQUMsQ0FBQTtJQUMzRixDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxlQUFlLENBQUMsV0FBVyxFQUFFLGVBQWU7UUFDMUMsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxXQUFXLENBQUMsQ0FBQTtRQUM3QyxNQUFNLE1BQU0sR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQTtRQUN0QyxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsS0FBSyxDQUFDLENBQUE7UUFFakQscUVBQXFFO1FBQ3JFLE1BQU0sU0FBUyxHQUFHLEVBQUUsQ0FBQTtRQUVwQixLQUFLLE1BQU0sV0FBVyxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsbUJBQW1CLEVB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QUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxTQUFTLEVBQUUsbUJBQW1CLENBQUM7Z0JBQUUsU0FBUTtZQUU1RCxJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztnQkFDcEIsUUFBUSxDQUFDLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxDQUFBO1lBQ3RDLENBQUM7aUJBQU0sQ0FBQztnQkFDTixRQUFRLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFBO1lBQ3ZCLENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQHRzLWNoZWNrXG5cbmltcG9ydCBEYXRhYmFzZVJlY29yZCBmcm9tIFwiLi4vLi4vZGF0YWJhc2UvcmVjb3JkL2luZGV4LmpzXCJcbmltcG9ydCB7RmFjdG9yeUN5Y2xlRXJyb3IsIFVuZGVmaW5lZEZhY3RvcnlFcnJvciwgVW5kZWZpbmVkVHJhaXRFcnJvcn0gZnJvbSBcIi4vZXJyb3JzLmpzXCJcblxuLyoqXG4gKiBBIHJlc29sdmVkIGF0dHJpYnV0ZS90cmFuc2llbnQvYXNzb2NpYXRpb24gc2xvdCBpbiBhIGNvbXBpbGVkIHBsYW4uXG4gKiBAdHlwZWRlZiB7b2JqZWN0fSBTbG90XG4gKiBAcHJvcGVydHkge1wiYXR0cmlidXRlXCIgfCBcInRyYW5zaWVudFwiIHwgXCJhc3NvY2lhdGlvblwifSBzbG90S2luZCAtIFNsb3QgbmF0dXJlLlxuICogQHByb3BlcnR5IHtSZXR1cm5UeXBlPHR5cGVvZiBKU09OLnBhcnNlPn0gdmFsdWUgLSBMaXRlcmFsL2xhenkgdmFsdWUsIG92ZXJyaWRlIHZhbHVlLCBvciBBc3NvY2lhdGlvbkRlY2xhcmF0aW9uLlxuICogQHByb3BlcnR5IHtib29sZWFufSBpc092ZXJyaWRlIC0gV2hldGhlciB0aGUgdmFsdWUgY2FtZSBmcm9tIGEgY2FsbC1zaXRlIG92ZXJyaWRlLlxuICovXG5cbi8qKlxuICogVGhlIGltbXV0YWJsZSByZXN1bHQgb2YgY29tcGlsaW5nIGEgZmFjdG9yeSBpbnZvY2F0aW9uLlxuICogQHR5cGVkZWYge29iamVjdH0gQ29tcGlsZWRQbGFuXG4gKiBAcHJvcGVydHkge3N0cmluZ30gZmFjdG9yeU5hbWUgLSBUYXJnZXQgZmFjdG9yeSBuYW1lLlxuICogQHByb3BlcnR5IHtpbXBvcnQoXCIuL2ZhY3RvcnktZGVmaW5pdGlvbi5qc1wiKS5kZWZhdWx0fSBmYWN0b3J5RGVmaW5pdGlvbiAtIFRhcmdldCBkZWZpbml0aW9uLlxuICogQHByb3BlcnR5IHsobmV3IChhdHRyaWJ1dGVzPzogUmVjb3JkPHN0cmluZywgUmV0dXJuVHlwZTx0eXBlb2YgSlNPTi5wYXJzZT4+KSA9PiBSZXR1cm5UeXBlPHR5cGVvZiBKU09OLnBhcnNlPikgfCBudWxsfSBtb2RlbENsYXNzIC0gUmVzb2x2ZWQgbW9kZWwgY2xhc3MuXG4gKiBAcHJvcGVydHkge3N0cmluZ1tdfSBjaGFpbk5hbWVzIC0gSW5oZXJpdGFuY2UgY2hhaW4gbmFtZXMgKGNoaWxkIGxhc3QpIGZvciBzZXF1ZW5jZSBzY29wZS5cbiAqIEBwcm9wZXJ0eSB7TWFwPHN0cmluZywgU2xvdD59IHJlc29sdmVkIC0gTmFtZeKGknNsb3QgbWFwIChsYXN0IGRlY2xhcmF0aW9uIHdpbnMpLlxuICogQHByb3BlcnR5IHtNYXA8c3RyaW5nLCBpbXBvcnQoXCIuL2RlY2xhcmF0aW9ucy5qc1wiKS5DYWxsYmFja0RlY2xhcmF0aW9uW10+fSBjYWxsYmFja3MgLSBEZWR1cGVkIGNhbGxiYWNrcyBieSBldmVudC5cbiAqIEBwcm9wZXJ0eSB7aW1wb3J0KFwiLi9kZWNsYXJhdGlvbnMuanNcIikuSW5pdGlhbGl6ZVdpdGhEZWNsYXJhdGlvbltcImZuXCJdIHwgbnVsbH0gaW5pdGlhbGl6ZVdpdGggLSBDdXN0b20gY29uc3RydWN0b3IsIG9yIG51bGwuXG4gKiBAcHJvcGVydHkge2ltcG9ydChcIi4vZGVjbGFyYXRpb25zLmpzXCIpLlRvQ3JlYXRlRGVjbGFyYXRpb25bXCJmblwiXSB8IG51bGx9IHRvQ3JlYXRlIC0gQ3VzdG9tIHBlcnNpc3RlbmNlLCBvciBudWxsLlxuICogQHByb3BlcnR5IHtib29sZWFufSBza2lwQ3JlYXRlIC0gV2hldGhlciBwZXJzaXN0ZW5jZSBpcyBza2lwcGVkLlxuICovXG5cbi8qKlxuICogQ29tcGlsZXMgZmFjdG9yeSBpbnZvY2F0aW9ucyBpbnRvIGltbXV0YWJsZSBwbGFucyBieSByZXNvbHZpbmcgdGhlIGluaGVyaXRhbmNlXG4gKiBjaGFpbiwgZXhwYW5kaW5nIGJhc2UgYW5kIHJlcXVlc3RlZCB0cmFpdHMsIGFuZCBmb2xkaW5nIGRlY2xhcmF0aW9ucyBpbnRvIGFcbiAqIG5hbWXihpJzbG90IG1hcCBwbHVzIGEgZGVkdXBlZCwgb3JkZXJlZCBjYWxsYmFjayBzZXQuXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEZhY3RvcnlSdW5uZXIge1xuICAvKipcbiAgICogQnVpbGRzIGEgcnVubmVyLlxuICAgKiBAcGFyYW0ge2ltcG9ydChcIi4vZmFjdG9yeS1yZWdpc3RyeS5qc1wiKS5kZWZhdWx0fSByZWdpc3RyeSAtIE93bmluZyByZWdpc3RyeS5cbiAgICovXG4gIGNvbnN0cnVjdG9yKHJlZ2lzdHJ5KSB7XG4gICAgLyoqIEB0eXBlIHtpbXBvcnQoXCIuL2ZhY3RvcnktcmVnaXN0cnkuanNcIikuZGVmYXVsdH0gLSBPd25pbmcgcmVnaXN0cnkuICovXG4gICAgdGhpcy5yZWdpc3RyeSA9IHJlZ2lzdHJ5XG4gIH1cblxuICAvKipcbiAgICogQ29tcGlsZXMgYSBmYWN0b3J5IGludm9jYXRpb24gaW50byBhIHBsYW4uXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBmYWN0b3J5TmFtZSAtIEZhY3RvcnkgdG8gcnVuLlxuICAgKiBAcGFyYW0ge3N0cmluZ1tdfSByZXF1ZXN0ZWRUcmFpdHMgLSBUcmFpdHMgcmVxdWVzdGVkIGF0IHRoZSBjYWxsIHNpdGUsIGluIG9yZGVyLlxuICAgKiBAcGFyYW0ge1JlY29yZDxzdHJpbmcsIFJldHVyblR5cGU8dHlwZW9mIEpTT04ucGFyc2U+Pn0gb3ZlcnJpZGVzIC0gQ2FsbC1zaXRlIG92ZXJyaWRlcyAoaGlnaGVzdCBwcmVjZWRlbmNlKS5cbiAgICogQHJldHVybnMge0NvbXBpbGVkUGxhbn0gLSBUaGUgY29tcGlsZWQgcGxhbi5cbiAgICovXG4gIGNvbXBpbGUoZmFjdG9yeU5hbWUsIHJlcXVlc3RlZFRyYWl0cywgb3ZlcnJpZGVzKSB7XG4gICAgcmV0dXJuIHRoaXMuYXBwbHlPdmVycmlkZXModGhpcy5jb21waWxlVGVtcGxhdGUoZmFjdG9yeU5hbWUsIHJlcXVlc3RlZFRyYWl0cyksIG92ZXJyaWRlcylcbiAgfVxuXG4gIC8qKlxuICAgKiBDb21waWxlcyBpbmhlcml0YW5jZSwgdHJhaXRzIGFuZCBkZWNsYXJhdGlvbnMgd2l0aG91dCBjYWxsLXNpdGUgb3ZlcnJpZGVzLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gZmFjdG9yeU5hbWUgLSBGYWN0b3J5IHRvIHJ1bi5cbiAgICogQHBhcmFtIHtzdHJpbmdbXX0gcmVxdWVzdGVkVHJhaXRzIC0gVHJhaXRzIHJlcXVlc3RlZCBhdCB0aGUgY2FsbCBzaXRlLCBpbiBvcmRlci5cbiAgICogQHJldHVybnMge0NvbXBpbGVkUGxhbn0gLSBSZXVzYWJsZSBkZWNsYXJhdGlvbiBwbGFuLlxuICAgKi9cbiAgY29tcGlsZVRlbXBsYXRlKGZhY3RvcnlOYW1lLCByZXF1ZXN0ZWRUcmFpdHMpIHtcbiAgICBjb25zdCBjaGFpbiA9IHRoaXMuX3Jlc29sdmVDaGFpbihmYWN0b3J5TmFtZSlcbiAgICBjb25zdCB0YXJnZXQgPSBjaGFpbltjaGFpbi5sZW5ndGggLSAxXVxuICAgIGNvbnN0IG1vZGVsQ2xhc3MgPSB0aGlzLl9yZXNvbHZlTW9kZWxDbGFzcyhjaGFpbilcblxuICAgIC8qKiBAdHlwZSB7QXJyYXk8e2RlY2w6IGltcG9ydChcIi4vZGVjbGFyYXRpb25zLmpzXCIpLkRlY2xhcmF0aW9ufT59ICovXG4gICAgY29uc3QgZmxhdHRlbmVkID0gW11cblxuICAgIGZvciAoY29uc3QgZGVjbGFyYXRpb24gb2YgdGhpcy5yZWdpc3RyeS5fZ2xvYmFsRGVjbGFyYXRpb25zKSB7XG4gICAgICBmbGF0dGVuZWQucHVzaCh7ZGVjbDogZGVjbGFyYXRpb259KVxuICAgIH1cblxuICAgIGZvciAoY29uc3QgZmFjdG9yeURlZmluaXRpb24gb2YgY2hhaW4pIHtcbiAgICAgIHRoaXMuX2V4cGFuZEZhY3RvcnlEZWNsYXJhdGlvbnMoZmFjdG9yeURlZmluaXRpb24sIGZhY3RvcnlEZWZpbml0aW9uLCBmbGF0dGVuZWQpXG4gICAgfVxuXG4gICAgZm9yIChjb25zdCB0cmFpdE5hbWUgb2YgcmVxdWVzdGVkVHJhaXRzKSB7XG4gICAgICB0aGlzLl9leHBhbmRUcmFpdCh0cmFpdE5hbWUsIHRhcmdldCwgZmxhdHRlbmVkLCBbXSlcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5fYnVpbGRQbGFuKHtmbGF0dGVuZWQsIG1vZGVsQ2xhc3MsIHRhcmdldCwgY2hhaW5OYW1lczogY2hhaW4ubWFwKChkZWZpbml0aW9uKSA9PiBkZWZpbml0aW9uLm5hbWUpfSlcbiAgfVxuXG4gIC8qKlxuICAgKiBBcHBsaWVzIHRoZSBjdXJyZW50IGNhbGwtc2l0ZSBvdmVycmlkZXMgd2l0aG91dCBtdXRhdGluZyB0aGUgcmV1c2FibGUgdGVtcGxhdGUuXG4gICAqIEBwYXJhbSB7Q29tcGlsZWRQbGFufSBwbGFuVGVtcGxhdGUgLSBSZXVzYWJsZSBkZWNsYXJhdGlvbiBwbGFuLlxuICAgKiBAcGFyYW0ge1JlY29yZDxzdHJpbmcsIFJldHVyblR5cGU8dHlwZW9mIEpTT04ucGFyc2U+Pn0gb3ZlcnJpZGVzIC0gQ3VycmVudCBjYWxsLXNpdGUgb3ZlcnJpZGVzLlxuICAgKiBAcmV0dXJucyB7Q29tcGlsZWRQbGFufSAtIFBlci1pbnZvY2F0aW9uIHBsYW4uXG4gICAqL1xuICBhcHBseU92ZXJyaWRlcyhwbGFuVGVtcGxhdGUsIG92ZXJyaWRlcykge1xuICAgIGNvbnN0IG92ZXJyaWRlS2V5cyA9IE9iamVjdC5rZXlzKG92ZXJyaWRlcylcblxuICAgIGlmIChvdmVycmlkZUtleXMubGVuZ3RoID09PSAwKSByZXR1cm4gcGxhblRlbXBsYXRlXG5cbiAgICBjb25zdCByZXNvbHZlZCA9IG5ldyBNYXAocGxhblRlbXBsYXRlLnJlc29sdmVkKVxuXG4gICAgZm9yIChjb25zdCBrZXkgb2Ygb3ZlcnJpZGVLZXlzKSB7XG4gICAgICBjb25zdCBwcmlvciA9IHJlc29sdmVkLmdldChrZXkpXG5cbiAgICAgIHJlc29sdmVkLnNldChrZXksIHtzbG90S2luZDogcHJpb3IgPyBwcmlvci5zbG90S2luZCA6IFwiYXR0cmlidXRlXCIsIHZhbHVlOiBvdmVycmlkZXNba2V5XSwgaXNPdmVycmlkZTogdHJ1ZX0pXG4gICAgfVxuXG4gICAgdGhpcy5fYXJiaXRyYXRlQXNzb2NpYXRpb25PdmVycmlkZXMocmVzb2x2ZWQsIG92ZXJyaWRlcywgcGxhblRlbXBsYXRlLm1vZGVsQ2xhc3MpXG5cbiAgICByZXR1cm4gey4uLnBsYW5UZW1wbGF0ZSwgcmVzb2x2ZWR9XG4gIH1cblxuICAvKipcbiAgICogUmVzb2x2ZXMgdGhlIGluaGVyaXRhbmNlIGNoYWluIGZyb20gdGhlIHJvb3QgcGFyZW50IGRvd24gdG8gdGhlIHRhcmdldC5cbiAgICogQHBhcmFtIHtzdHJpbmd9IGZhY3RvcnlOYW1lIC0gVGFyZ2V0IGZhY3RvcnkgbmFtZS5cbiAgICogQHJldHVybnMge2ltcG9ydChcIi4vZmFjdG9yeS1kZWZpbml0aW9uLmpzXCIpLmRlZmF1bHRbXX0gLSBDaGFpbiAocm9vdCBmaXJzdCwgdGFyZ2V0IGxhc3QpLlxuICAgKi9cbiAgX3Jlc29sdmVDaGFpbihmYWN0b3J5TmFtZSkge1xuICAgIC8qKiBAdHlwZSB7aW1wb3J0KFwiLi9mYWN0b3J5LWRlZmluaXRpb24uanNcIikuZGVmYXVsdFtdfSAqL1xuICAgIGNvbnN0IGNoYWluID0gW11cbiAgICAvKiogQHR5cGUge1NldDxzdHJpbmc+fSAqL1xuICAgIGNvbnN0IHNlZW4gPSBuZXcgU2V0KClcbiAgICAvKiogQHR5cGUge2ltcG9ydChcIi4vZmFjdG9yeS1kZWZpbml0aW9uLmpzXCIpLmRlZmF1bHQgfCBudWxsfSAqL1xuICAgIGxldCBjdXJyZW50ID0gdGhpcy5fcmVzb2x2ZUZhY3RvcnkoZmFjdG9yeU5hbWUpXG5cbiAgICB3aGlsZSAoY3VycmVudCkge1xuICAgICAgaWYgKHNlZW4uaGFzKGN1cnJlbnQubmFtZSkpIHtcbiAgICAgICAgdGhyb3cgbmV3IEZhY3RvcnlDeWNsZUVycm9yKGBGYWN0b3J5IGluaGVyaXRhbmNlIGN5Y2xlIGRldGVjdGVkOiAke1suLi5zZWVuLCBjdXJyZW50Lm5hbWVdLmpvaW4oXCIgLT4gXCIpfWApXG4gICAgICB9XG5cbiAgICAgIHNlZW4uYWRkKGN1cnJlbnQubmFtZSlcbiAgICAgIGNoYWluLnVuc2hpZnQoY3VycmVudClcbiAgICAgIGN1cnJlbnQgPSBjdXJyZW50LnBhcmVudE5hbWUgPyB0aGlzLl9yZXNvbHZlRmFjdG9yeShjdXJyZW50LnBhcmVudE5hbWUpIDogbnVsbFxuICAgIH1cblxuICAgIHJldHVybiBjaGFpblxuICB9XG5cbiAgLyoqXG4gICAqIFJlc29sdmVzIGEgZmFjdG9yeSBkZWZpbml0aW9uIGJ5IG5hbWUgKG9yIGFsaWFzKS5cbiAgICogQHBhcmFtIHtzdHJpbmd9IGZhY3RvcnlOYW1lIC0gRmFjdG9yeSBuYW1lLlxuICAgKiBAcmV0dXJucyB7aW1wb3J0KFwiLi9mYWN0b3J5LWRlZmluaXRpb24uanNcIikuZGVmYXVsdH0gLSBUaGUgZGVmaW5pdGlvbi5cbiAgICovXG4gIF9yZXNvbHZlRmFjdG9yeShmYWN0b3J5TmFtZSkge1xuICAgIGNvbnN0IGRlZmluaXRpb24gPSB0aGlzLnJlZ2lzdHJ5Ll9mYWN0b3JpZXMuZ2V0KGZhY3RvcnlOYW1lKVxuXG4gICAgaWYgKCFkZWZpbml0aW9uKSB7XG4gICAgICB0aHJvdyBuZXcgVW5kZWZpbmVkRmFjdG9yeUVycm9yKGBObyBmYWN0b3J5IHJlZ2lzdGVyZWQgY2FsbGVkIFwiJHtmYWN0b3J5TmFtZX1cIi4gUmVnaXN0ZXJlZDogJHtbLi4udGhpcy5yZWdpc3RyeS5fZmFjdG9yaWVzLmtleXMoKV0uam9pbihcIiwgXCIpIHx8IFwiKG5vbmUpXCJ9YClcbiAgICB9XG5cbiAgICByZXR1cm4gZGVmaW5pdGlvblxuICB9XG5cbiAgLyoqXG4gICAqIFBpY2tzIHRoZSBuZWFyZXN0IGRlY2xhcmVkIG1vZGVsIGNsYXNzIGluIHRoZSBjaGFpbiAoY2hpbGQgb3ZlcnJpZGVzIHBhcmVudCkuXG4gICAqIEBwYXJhbSB7aW1wb3J0KFwiLi9mYWN0b3J5LWRlZmluaXRpb24uanNcIikuZGVmYXVsdFtdfSBjaGFpbiAtIEluaGVyaXRhbmNlIGNoYWluLlxuICAgKiBAcmV0dXJucyB7KG5ldyAoYXR0cmlidXRlcz86IFJlY29yZDxzdHJpbmcsIFJldHVyblR5cGU8dHlwZW9mIEpTT04ucGFyc2U+PikgPT4gUmV0dXJuVHlwZTx0eXBlb2YgSlNPTi5wYXJzZT4pIHwgbnVsbH0gLSBUaGUgbW9kZWwgY2xhc3MsIG9yIG51bGwuXG4gICAqL1xuICBfcmVzb2x2ZU1vZGVsQ2xhc3MoY2hhaW4pIHtcbiAgICBmb3IgKGxldCBpbmRleCA9IGNoYWluLmxlbmd0aCAtIDE7IGluZGV4ID49IDA7IGluZGV4LS0pIHtcbiAgICAgIGlmIChjaGFpbltpbmRleF0ubW9kZWxDbGFzcykgcmV0dXJuIGNoYWluW2luZGV4XS5tb2RlbENsYXNzXG4gICAgfVxuXG4gICAgcmV0dXJuIG51bGxcbiAgfVxuXG4gIC8qKlxuICAgKiBFeHBhbmRzIG9uZSBmYWN0b3J5J3Mgb3duIGRlY2xhcmF0aW9ucywgaW5saW5pbmcgYmFzZS10cmFpdCBpbmNsdXNpb25zLlxuICAgKiBAcGFyYW0ge2ltcG9ydChcIi4vZmFjdG9yeS1kZWZpbml0aW9uLmpzXCIpLmRlZmF1bHR9IGZhY3RvcnlEZWZpbml0aW9uIC0gRmFjdG9yeSB3aG9zZSBkZWNsYXJhdGlvbnMgYXJlIGV4cGFuZGVkLlxuICAgKiBAcGFyYW0ge2ltcG9ydChcIi4vZmFjdG9yeS1kZWZpbml0aW9uLmpzXCIpLmRlZmF1bHR9IHNjb3BlIC0gVGFyZ2V0IGZhY3RvcnkgKGZvciBsb2NhbC10cmFpdCByZXNvbHV0aW9uKS5cbiAgICogQHBhcmFtIHtBcnJheTx7ZGVjbDogaW1wb3J0KFwiLi9kZWNsYXJhdGlvbnMuanNcIikuRGVjbGFyYXRpb259Pn0gb3V0IC0gRmxhdHRlbmVkIG91dHB1dCBzaW5rLlxuICAgKiBAcmV0dXJucyB7dm9pZH1cbiAgICovXG4gIF9leHBhbmRGYWN0b3J5RGVjbGFyYXRpb25zKGZhY3RvcnlEZWZpbml0aW9uLCBzY29wZSwgb3V0KSB7XG4gICAgZm9yIChjb25zdCBkZWNsYXJhdGlvbiBvZiBmYWN0b3J5RGVmaW5pdGlvbi5kZWNsYXJhdGlvbnMpIHtcbiAgICAgIGlmIChkZWNsYXJhdGlvbi5raW5kID09PSBcInRyYWl0SW5jbHVkZVwiKSB7XG4gICAgICAgIHRoaXMuX2V4cGFuZFRyYWl0KGRlY2xhcmF0aW9uLm5hbWUsIHNjb3BlLCBvdXQsIFtdKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgb3V0LnB1c2goe2RlY2w6IGRlY2xhcmF0aW9ufSlcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogRXhwYW5kcyBhIHRyYWl0IChyZXNvbHZpbmcgZmFjdG9yeS1sb2NhbCBiZWZvcmUgZ2xvYmFsKSBhbmQgaXRzIGluY2x1c2lvbnMuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSB0cmFpdE5hbWUgLSBUcmFpdCB0byBleHBhbmQuXG4gICAqIEBwYXJhbSB7aW1wb3J0KFwiLi9mYWN0b3J5LWRlZmluaXRpb24uanNcIikuZGVmYXVsdH0gc2NvcGUgLSBUYXJnZXQgZmFjdG9yeSAoZm9yIGxvY2FsLXRyYWl0IHJlc29sdXRpb24pLlxuICAgKiBAcGFyYW0ge0FycmF5PHtkZWNsOiBpbXBvcnQoXCIuL2RlY2xhcmF0aW9ucy5qc1wiKS5EZWNsYXJhdGlvbn0+fSBvdXQgLSBGbGF0dGVuZWQgb3V0cHV0IHNpbmsuXG4gICAqIEBwYXJhbSB7c3RyaW5nW119IGFjdGl2ZVBhdGggLSBUcmFpdCBpbmNsdXNpb24gcGF0aCAoZm9yIGN5Y2xlIGRldGVjdGlvbikuXG4gICAqIEByZXR1cm5zIHt2b2lkfVxuICAgKi9cbiAgX2V4cGFuZFRyYWl0KHRyYWl0TmFtZSwgc2NvcGUsIG91dCwgYWN0aXZlUGF0aCkge1xuICAgIGlmIChhY3RpdmVQYXRoLmluY2x1ZGVzKHRyYWl0TmFtZSkpIHtcbiAgICAgIHRocm93IG5ldyBGYWN0b3J5Q3ljbGVFcnJvcihgVHJhaXQgaW5jbHVzaW9uIGN5Y2xlIGRldGVjdGVkOiAke1suLi5hY3RpdmVQYXRoLCB0cmFpdE5hbWVdLmpvaW4oXCIgLT4gXCIpfWApXG4gICAgfVxuXG4gICAgY29uc3QgbG9jYWxUcmFpdCA9IHRoaXMuX3Jlc29sdmVMb2NhbFRyYWl0KHRyYWl0TmFtZSwgc2NvcGUpXG4gICAgY29uc3QgdHJhaXQgPSBsb2NhbFRyYWl0Py50cmFpdCB8fCB0aGlzLnJlZ2lzdHJ5Ll9nbG9iYWxUcmFpdHMuZ2V0KHRyYWl0TmFtZSlcbiAgICBjb25zdCBpbmNsdXNpb25TY29wZSA9IGxvY2FsVHJhaXQ/LnNjb3BlIHx8IHNjb3BlXG5cbiAgICBpZiAoIXRyYWl0KSB7XG4gICAgICB0aHJvdyBuZXcgVW5kZWZpbmVkVHJhaXRFcnJvcihgTm8gdHJhaXQgcmVnaXN0ZXJlZCBjYWxsZWQgXCIke3RyYWl0TmFtZX1cIiBmb3IgZmFjdG9yeSBcIiR7c2NvcGUubmFtZX1cImApXG4gICAgfVxuXG4gICAgZm9yIChjb25zdCBkZWNsYXJhdGlvbiBvZiB0cmFpdC5kZWNsYXJhdGlvbnMpIHtcbiAgICAgIGlmIChkZWNsYXJhdGlvbi5raW5kID09PSBcInRyYWl0SW5jbHVkZVwiKSB7XG4gICAgICAgIHRoaXMuX2V4cGFuZFRyYWl0KGRlY2xhcmF0aW9uLm5hbWUsIGluY2x1c2lvblNjb3BlLCBvdXQsIFsuLi5hY3RpdmVQYXRoLCB0cmFpdE5hbWVdKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgb3V0LnB1c2goe2RlY2w6IGRlY2xhcmF0aW9ufSlcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUmVzb2x2ZXMgYSBsb2NhbCB0cmFpdCBmcm9tIHRoZSBjdXJyZW50IGZhY3RvcnkgdXB3YXJkIHRocm91Z2ggaXRzIHBhcmVudHMuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSB0cmFpdE5hbWUgLSBUcmFpdCBuYW1lIHRvIHJlc29sdmUuXG4gICAqIEBwYXJhbSB7aW1wb3J0KFwiLi9mYWN0b3J5LWRlZmluaXRpb24uanNcIikuZGVmYXVsdH0gc2NvcGUgLSBEZWNsYXJpbmcvcmVxdWVzdGluZyBmYWN0b3J5IHNjb3BlLlxuICAgKiBAcmV0dXJucyB7e3RyYWl0OiBpbXBvcnQoXCIuL3RyYWl0LWRlZmluaXRpb24uanNcIikuZGVmYXVsdCwgc2NvcGU6IGltcG9ydChcIi4vZmFjdG9yeS1kZWZpbml0aW9uLmpzXCIpLmRlZmF1bHR9IHwgdW5kZWZpbmVkfSAtIE5lYXJlc3QgbG9jYWwgdHJhaXQgYW5kIGl0cyBkZWNsYXJpbmcgc2NvcGUsIGlmIGFueS5cbiAgICovXG4gIF9yZXNvbHZlTG9jYWxUcmFpdCh0cmFpdE5hbWUsIHNjb3BlKSB7XG4gICAgLyoqIEB0eXBlIHtpbXBvcnQoXCIuL2ZhY3RvcnktZGVmaW5pdGlvbi5qc1wiKS5kZWZhdWx0IHwgdW5kZWZpbmVkfSAqL1xuICAgIGxldCBjdXJyZW50ID0gc2NvcGVcblxuICAgIHdoaWxlIChjdXJyZW50KSB7XG4gICAgICBjb25zdCB0cmFpdCA9IGN1cnJlbnQubG9jYWxUcmFpdHMuZ2V0KHRyYWl0TmFtZSlcblxuICAgICAgaWYgKHRyYWl0KSByZXR1cm4ge3RyYWl0LCBzY29wZTogY3VycmVudH1cblxuICAgICAgY3VycmVudCA9IGN1cnJlbnQucGFyZW50TmFtZSA/IHRoaXMuX3Jlc29sdmVGYWN0b3J5KGN1cnJlbnQucGFyZW50TmFtZSkgOiB1bmRlZmluZWRcbiAgICB9XG5cbiAgICByZXR1cm4gdW5kZWZpbmVkXG4gIH1cblxuICAvKipcbiAgICogRm9sZHMgZmxhdHRlbmVkIGRlY2xhcmF0aW9ucyBpbnRvIGEgcmV1c2FibGUgY29tcGlsZWQgcGxhbi5cbiAgICogQHBhcmFtIHtvYmplY3R9IGFyZ3MgLSBPcHRpb25zLlxuICAgKiBAcGFyYW0ge0FycmF5PHtkZWNsOiBpbXBvcnQoXCIuL2RlY2xhcmF0aW9ucy5qc1wiKS5EZWNsYXJhdGlvbn0+fSBhcmdzLmZsYXR0ZW5lZCAtIEZsYXR0ZW5lZCBkZWNsYXJhdGlvbnMuXG4gICAqIEBwYXJhbSB7KG5ldyAoYXR0cmlidXRlcz86IFJlY29yZDxzdHJpbmcsIFJldHVyblR5cGU8dHlwZW9mIEpTT04ucGFyc2U+PikgPT4gUmV0dXJuVHlwZTx0eXBlb2YgSlNPTi5wYXJzZT4pIHwgbnVsbH0gYXJncy5tb2RlbENsYXNzIC0gUmVzb2x2ZWQgbW9kZWwgY2xhc3MuXG4gICAqIEBwYXJhbSB7aW1wb3J0KFwiLi9mYWN0b3J5LWRlZmluaXRpb24uanNcIikuZGVmYXVsdH0gYXJncy50YXJnZXQgLSBUYXJnZXQgZmFjdG9yeSBkZWZpbml0aW9uLlxuICAgKiBAcGFyYW0ge3N0cmluZ1tdfSBhcmdzLmNoYWluTmFtZXMgLSBJbmhlcml0YW5jZSBjaGFpbiBuYW1lcy5cbiAgICogQHJldHVybnMge0NvbXBpbGVkUGxhbn0gLSBUaGUgY29tcGlsZWQgcGxhbi5cbiAgICovXG4gIF9idWlsZFBsYW4oe2ZsYXR0ZW5lZCwgbW9kZWxDbGFzcywgdGFyZ2V0LCBjaGFpbk5hbWVzfSkge1xuICAgIC8qKiBAdHlwZSB7TWFwPHN0cmluZywgU2xvdD59ICovXG4gICAgY29uc3QgcmVzb2x2ZWQgPSBuZXcgTWFwKClcbiAgICAvKiogQHR5cGUge01hcDxzdHJpbmcsIGltcG9ydChcIi4vZGVjbGFyYXRpb25zLmpzXCIpLkNhbGxiYWNrRGVjbGFyYXRpb25bXT59ICovXG4gICAgY29uc3QgY2FsbGJhY2tzID0gbmV3IE1hcCgpXG4gICAgLyoqIEB0eXBlIHtTZXQ8aW1wb3J0KFwiLi9kZWNsYXJhdGlvbnMuanNcIikuQ2FsbGJhY2tEZWNsYXJhdGlvbj59ICovXG4gICAgY29uc3Qgc2VlbkNhbGxiYWNrcyA9IG5ldyBTZXQoKVxuICAgIC8qKiBAdHlwZSB7aW1wb3J0KFwiLi9kZWNsYXJhdGlvbnMuanNcIikuSW5pdGlhbGl6ZVdpdGhEZWNsYXJhdGlvbltcImZuXCJdIHwgbnVsbH0gKi9cbiAgICBsZXQgaW5pdGlhbGl6ZVdpdGggPSBudWxsXG4gICAgLyoqIEB0eXBlIHtpbXBvcnQoXCIuL2RlY2xhcmF0aW9ucy5qc1wiKS5Ub0NyZWF0ZURlY2xhcmF0aW9uW1wiZm5cIl0gfCBudWxsfSAqL1xuICAgIGxldCB0b0NyZWF0ZSA9IG51bGxcbiAgICBsZXQgc2tpcENyZWF0ZSA9IGZhbHNlXG5cbiAgICBmb3IgKGNvbnN0IHtkZWNsfSBvZiBmbGF0dGVuZWQpIHtcbiAgICAgIGlmIChkZWNsLmtpbmQgPT09IFwiYXR0cmlidXRlXCIpIHtcbiAgICAgICAgcmVzb2x2ZWQuc2V0KGRlY2wubmFtZSwge3Nsb3RLaW5kOiBkZWNsLmlzVHJhbnNpZW50ID8gXCJ0cmFuc2llbnRcIiA6IFwiYXR0cmlidXRlXCIsIHZhbHVlOiBkZWNsLnZhbHVlLCBpc092ZXJyaWRlOiBmYWxzZX0pXG4gICAgICB9IGVsc2UgaWYgKGRlY2wua2luZCA9PT0gXCJhc3NvY2lhdGlvblwiKSB7XG4gICAgICAgIHJlc29sdmVkLnNldChkZWNsLm5hbWUsIHtzbG90S2luZDogXCJhc3NvY2lhdGlvblwiLCB2YWx1ZTogZGVjbCwgaXNPdmVycmlkZTogZmFsc2V9KVxuICAgICAgfSBlbHNlIGlmIChkZWNsLmtpbmQgPT09IFwiY2FsbGJhY2tcIikge1xuICAgICAgICBpZiAoIXNlZW5DYWxsYmFja3MuaGFzKGRlY2wpKSB7XG4gICAgICAgICAgc2VlbkNhbGxiYWNrcy5hZGQoZGVjbClcblxuICAgICAgICAgIGNvbnN0IGV2ZW50Q2FsbGJhY2tzID0gY2FsbGJhY2tzLmdldChkZWNsLmV2ZW50KSB8fCBbXVxuXG4gICAgICAgICAgZXZlbnRDYWxsYmFja3MucHVzaChkZWNsKVxuICAgICAgICAgIGNhbGxiYWNrcy5zZXQoZGVjbC5ldmVudCwgZXZlbnRDYWxsYmFja3MpXG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoZGVjbC5raW5kID09PSBcImluaXRpYWxpemVXaXRoXCIpIHtcbiAgICAgICAgaW5pdGlhbGl6ZVdpdGggPSBkZWNsLmZuXG4gICAgICB9IGVsc2UgaWYgKGRlY2wua2luZCA9PT0gXCJ0b0NyZWF0ZVwiKSB7XG4gICAgICAgIHRvQ3JlYXRlID0gZGVjbC5mblxuICAgICAgfSBlbHNlIGlmIChkZWNsLmtpbmQgPT09IFwic2tpcENyZWF0ZVwiKSB7XG4gICAgICAgIHNraXBDcmVhdGUgPSB0cnVlXG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIGZhY3RvcnlOYW1lOiB0YXJnZXQubmFtZSxcbiAgICAgIGZhY3RvcnlEZWZpbml0aW9uOiB0YXJnZXQsXG4gICAgICBtb2RlbENsYXNzLFxuICAgICAgY2hhaW5OYW1lcyxcbiAgICAgIHJlc29sdmVkLFxuICAgICAgY2FsbGJhY2tzLFxuICAgICAgaW5pdGlhbGl6ZVdpdGgsXG4gICAgICB0b0NyZWF0ZSxcbiAgICAgIHNraXBDcmVhdGVcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQXBwbGllcyBiZWxvbmdzLXRvIG92ZXJyaWRlIHByZWNlZGVuY2UgdXNpbmcgdGhlIGRlY2xhcmVkIG1vZGVsIHJlbGF0aW9uc2hpcCdzXG4gICAqIHJlYWwgZm9yZWlnbi1rZXkgbWV0YWRhdGEuIEFuIGV4cGxpY2l0IGFzc29jaWF0aW9uIG9iamVjdCB3aW5zIG92ZXIgaXRzIGtleTtcbiAgICogb3RoZXJ3aXNlIGFuIGV4cGxpY2l0IGtleSBzdXBwcmVzc2VzIHRoZSBmYWN0b3J5LWRlY2xhcmVkIGFzc29jaWF0aW9uLlxuICAgKiBAcGFyYW0ge01hcDxzdHJpbmcsIFNsb3Q+fSByZXNvbHZlZCAtIEZvbGRlZCBzbG90cy5cbiAgICogQHBhcmFtIHtSZWNvcmQ8c3RyaW5nLCBSZXR1cm5UeXBlPHR5cGVvZiBKU09OLnBhcnNlPj59IG92ZXJyaWRlcyAtIENhbGwtc2l0ZSBvdmVycmlkZXMuXG4gICAqIEBwYXJhbSB7KG5ldyAoYXR0cmlidXRlcz86IFJlY29yZDxzdHJpbmcsIFJldHVyblR5cGU8dHlwZW9mIEpTT04ucGFyc2U+PikgPT4gUmV0dXJuVHlwZTx0eXBlb2YgSlNPTi5wYXJzZT4pIHwgbnVsbH0gbW9kZWxDbGFzcyAtIFJlc29sdmVkIG1vZGVsIGNsYXNzLlxuICAgKiBAcmV0dXJucyB7dm9pZH1cbiAgICovXG4gIF9hcmJpdHJhdGVBc3NvY2lhdGlvbk92ZXJyaWRlcyhyZXNvbHZlZCwgb3ZlcnJpZGVzLCBtb2RlbENsYXNzKSB7XG4gICAgaWYgKE9iamVjdC5rZXlzKG92ZXJyaWRlcykubGVuZ3RoID09PSAwKSByZXR1cm5cbiAgICBpZiAodHlwZW9mIG1vZGVsQ2xhc3MgIT09IFwiZnVuY3Rpb25cIiB8fCAhKG1vZGVsQ2xhc3MucHJvdG90eXBlIGluc3RhbmNlb2YgRGF0YWJhc2VSZWNvcmQpKSByZXR1cm5cblxuICAgIGNvbnN0IGJhY2tlbmRNb2RlbENsYXNzID0gLyoqIEB0eXBlIHt0eXBlb2YgRGF0YWJhc2VSZWNvcmR9ICovIChtb2RlbENsYXNzKVxuICAgIGNvbnN0IGNvbHVtblRvQXR0cmlidXRlID0gYmFja2VuZE1vZGVsQ2xhc3MuZ2V0Q29sdW1uTmFtZVRvQXR0cmlidXRlTmFtZU1hcCgpXG5cbiAgICBmb3IgKGNvbnN0IFtuYW1lLCBzbG90XSBvZiBbLi4ucmVzb2x2ZWRdKSB7XG4gICAgICBpZiAoc2xvdC5zbG90S2luZCAhPT0gXCJhc3NvY2lhdGlvblwiKSBjb250aW51ZVxuXG4gICAgICBjb25zdCByZWxhdGlvbnNoaXAgPSBiYWNrZW5kTW9kZWxDbGFzcy5nZXRSZWxhdGlvbnNoaXBCeU5hbWUobmFtZSlcblxuICAgICAgaWYgKHJlbGF0aW9uc2hpcC5nZXRUeXBlKCkgIT09IFwiYmVsb25nc1RvXCIpIGNvbnRpbnVlXG5cbiAgICAgIGNvbnN0IGZvcmVpZ25LZXlDb2x1bW4gPSByZWxhdGlvbnNoaXAuZ2V0Rm9yZWlnbktleSgpXG4gICAgICBjb25zdCBmb3JlaWduS2V5QXR0cmlidXRlID0gY29sdW1uVG9BdHRyaWJ1dGVbZm9yZWlnbktleUNvbHVtbl0gfHwgZm9yZWlnbktleUNvbHVtblxuXG4gICAgICBpZiAoIU9iamVjdC5oYXNPd24ob3ZlcnJpZGVzLCBmb3JlaWduS2V5QXR0cmlidXRlKSkgY29udGludWVcblxuICAgICAgaWYgKHNsb3QuaXNPdmVycmlkZSkge1xuICAgICAgICByZXNvbHZlZC5kZWxldGUoZm9yZWlnbktleUF0dHJpYnV0ZSlcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJlc29sdmVkLmRlbGV0ZShuYW1lKVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuIl19
@@ -1,10 +1,3 @@
1
- /**
2
- * Creates a fresh, isolated factory registry independent of the default singleton
3
- * (for libraries or spec groups that must not share global factory state).
4
- * @returns {FactoryRegistry} - A new registry.
5
- */
6
- export function createFactoryRegistry(): FactoryRegistry;
7
- export default Factory;
8
1
  import FactoryRegistry from "./factory-registry.js";
9
2
  /**
10
3
  * The default, convenient factory registry singleton. Import it as `Factory` and
@@ -15,4 +8,11 @@ import FactoryRegistry from "./factory-registry.js";
15
8
  * @type {FactoryRegistry}
16
9
  */
17
10
  declare const Factory: FactoryRegistry;
11
+ /**
12
+ * Creates a fresh, isolated factory registry independent of the default singleton
13
+ * (for libraries or spec groups that must not share global factory state).
14
+ * @returns {FactoryRegistry} - A new registry.
15
+ */
16
+ export declare function createFactoryRegistry(): FactoryRegistry;
17
+ export default Factory;
18
18
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/testing/factory/index.js"],"names":[],"mappings":"AAcA;;;;GAIG;AACH,yCAFa,eAAe,CAI3B;;4BAnB2B,uBAAuB;AAEnD;;;;;;;GAOG;AACH,uBAFU,eAAe,CAEY"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/testing/factory/index.js"],"names":[],"mappings":"AAEA,OAAO,eAAe,MAAM,uBAAuB,CAAA;AAEnD;;;;;;;GAOG;AACH,QAAA,MAAM,OAAO,EAFH,eAE2B,CAAA;AAErC;;;;GAIG;AACH,wBAAgB,qBAAqB,IAFxB,eAAe,CAI3B;eAEc,OAAO"}
@@ -6,13 +6,13 @@
6
6
  * are not reversible and cross-database writes are not globally atomic.
7
7
  */
8
8
  export default class FactoryLinter {
9
+ /** @type {import("./factory-registry.js").default} - Registry to lint. */
10
+ registry: import("./factory-registry.js").default;
9
11
  /**
10
12
  * Builds a linter.
11
13
  * @param {import("./factory-registry.js").default} registry - Registry to lint.
12
14
  */
13
15
  constructor(registry: import("./factory-registry.js").default);
14
- /** @type {import("./factory-registry.js").default} - Registry to lint. */
15
- registry: import("./factory-registry.js").default;
16
16
  /**
17
17
  * Lints selected factories and reports every failure together.
18
18
  * @param {object} [options] - Options.
@@ -22,9 +22,9 @@ export default class FactoryLinter {
22
22
  * @returns {Promise<void>} - Resolves when every case passed; rejects with an aggregate otherwise.
23
23
  */
24
24
  lint({ factories, traits, strategy }?: {
25
- factories?: string[] | undefined;
26
- traits?: boolean | undefined;
27
- strategy?: "create" | "build" | "attributesFor" | undefined;
25
+ factories?: string[];
26
+ traits?: boolean;
27
+ strategy?: "attributesFor" | "build" | "create";
28
28
  }): Promise<void>;
29
29
  /**
30
30
  * Resolves the unique set of factory definitions to lint.
@@ -37,12 +37,12 @@ export default class FactoryLinter {
37
37
  * @param {import("./factory-definition.js").default} definition - Factory definition.
38
38
  * @param {string[]} traits - Traits to apply for this case.
39
39
  * @param {"attributesFor" | "build" | "create"} strategy - Strategy to run.
40
- * @param {Array<{label: string, error: ?}>} failures - Failure sink.
40
+ * @param {Array<{label: string, error: ReturnType<typeof JSON.parse>}>} failures - Failure sink.
41
41
  * @returns {Promise<void>} - Resolves when the case has been evaluated.
42
42
  */
43
43
  _lintCase(definition: import("./factory-definition.js").default, traits: string[], strategy: "attributesFor" | "build" | "create", failures: Array<{
44
44
  label: string;
45
- error: unknown;
45
+ error: ReturnType<typeof JSON.parse>;
46
46
  }>): Promise<void>;
47
47
  /**
48
48
  * Runs a create-strategy case inside a transaction and forces a rollback.
@@ -1 +1 @@
1
- {"version":3,"file":"linter.d.ts","sourceRoot":"","sources":["../../../../src/testing/factory/linter.js"],"names":[],"mappings":"AAYA;;;;;;GAMG;AACH;IACE;;;OAGG;IACH,sBAFW,OAAO,uBAAuB,EAAE,OAAO,EAKjD;IAFC,0EAA0E;IAC1E,UADW,OAAO,uBAAuB,EAAE,OAAO,CAC1B;IAG1B;;;;;;;OAOG;IACH,uCALG;QAA2B,SAAS;QACV,MAAM;QACuB,QAAQ;KAC/D,GAAU,OAAO,CAAC,IAAI,CAAC,CAsBzB;IAED;;;;OAIG;IACH,8BAHW,MAAM,EAAE,GAAG,SAAS,GAClB,OAAO,yBAAyB,EAAE,OAAO,EAAE,CAQvD;IAED;;;;;;;OAOG;IACH,sBANW,OAAO,yBAAyB,EAAE,OAAO,UACzC,MAAM,EAAE,YACR,eAAe,GAAG,OAAO,GAAG,QAAQ,YACpC,KAAK,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,OAAC,CAAA;KAAC,CAAC,GAC9B,OAAO,CAAC,IAAI,CAAC,CAgBzB;IAED;;;;;OAKG;IACH,4BAJW,OAAO,yBAAyB,EAAE,OAAO,UACzC,MAAM,EAAE,GACN,OAAO,CAAC,IAAI,CAAC,CAiBzB;CACF"}
1
+ {"version":3,"file":"linter.d.ts","sourceRoot":"","sources":["../../../../src/testing/factory/linter.js"],"names":[],"mappings":"AAYA;;;;;;GAMG;AACH,MAAM,CAAC,OAAO,OAAO,aAAa;IAM9B,0EAA0E;IACrE,QAAQ,EADF,OAAO,uBAAuB,EAAE,OAAO;IALpD;;;OAGG;IACH,YAAY,QAAQ,EAFT,OAAO,uBAAuB,EAAE,OAEvB,EAGnB;IAED;;;;;;;OAOG;IACG,IAAI,CAAC,EAAC,SAAS,EAAE,MAAc,EAAE,QAAmB,EAAC,AANxD,CAIA,EAHA;QAA2B,SAAS,AAApC,CACA,EADQ,MAAM,EAAE,CAChB;QAA0B,MAAM,AAAhC,CACA,EADQ,OAAO,CACf;QAAuD,QAAQ,AAA/D,CACA,EADQ,eAAe,GAAG,OAAO,GAAG,QAAQ,CAC5C;KAE6D,GAFnD,OAAO,CAAC,IAAI,CAAC,CAsBzB;IAED;;;;OAIG;IACH,kBAAkB,CAAC,SAAS,EAHjB,MAAM,EAAE,GAAG,SAGM,GAFf,OAAO,yBAAyB,EAAE,OAAO,EAAE,CAQvD;IAED;;;;;;;OAOG;IACG,SAAS,CAAC,UAAU,EANf,OAAO,yBAAyB,EAAE,OAMnB,EAAE,MAAM,EALvB,MAAM,EAKiB,EAAE,QAAQ,EAJjC,eAAe,GAAG,OAAO,GAAG,QAIK,EAAE,QAAQ,EAH3C,KAAK,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,UAAU,CAAC,OAAO,IAAI,CAAC,KAAK,CAAC,CAAA;KAAC,CAGhB,GAFzC,OAAO,CAAC,IAAI,CAAC,CAgBzB;IAED;;;;;OAKG;IACG,eAAe,CAAC,UAAU,EAJrB,OAAO,yBAAyB,EAAE,OAIb,EAAE,MAAM,EAH7B,MAAM,EAGuB,GAF3B,OAAO,CAAC,IAAI,CAAC,CAiBzB;CACF"}
@@ -34,7 +34,7 @@ export default class FactoryLinter {
34
34
  */
35
35
  async lint({ factories, traits = false, strategy = "create" } = {}) {
36
36
  const definitions = this._selectDefinitions(factories);
37
- /** @type {Array<{label: string, error: ?}>} */
37
+ /** @type {Array<{label: string, error: ReturnType<typeof JSON.parse>}>} */
38
38
  const failures = [];
39
39
  for (const definition of definitions) {
40
40
  await this._lintCase(definition, [], strategy, failures);
@@ -65,7 +65,7 @@ export default class FactoryLinter {
65
65
  * @param {import("./factory-definition.js").default} definition - Factory definition.
66
66
  * @param {string[]} traits - Traits to apply for this case.
67
67
  * @param {"attributesFor" | "build" | "create"} strategy - Strategy to run.
68
- * @param {Array<{label: string, error: ?}>} failures - Failure sink.
68
+ * @param {Array<{label: string, error: ReturnType<typeof JSON.parse>}>} failures - Failure sink.
69
69
  * @returns {Promise<void>} - Resolves when the case has been evaluated.
70
70
  */
71
71
  async _lintCase(definition, traits, strategy, failures) {
@@ -103,4 +103,4 @@ export default class FactoryLinter {
103
103
  });
104
104
  }
105
105
  }
106
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGludGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3Rlc3RpbmcvZmFjdG9yeS9saW50ZXIuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsWUFBWTtBQUVaLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxhQUFhLENBQUE7QUFFeEMseUVBQXlFO0FBQ3pFLE1BQU0sa0JBQW1CLFNBQVEsS0FBSztDQUFHO0FBRXpDOztHQUVHO0FBQ0gsTUFBTSxnQkFBaUIsU0FBUSxZQUFZO0NBQUc7QUFFOUM7Ozs7OztHQU1HO0FBQ0gsTUFBTSxDQUFDLE9BQU8sT0FBTyxhQUFhO0lBQ2hDOzs7T0FHRztJQUNILFlBQVksUUFBUTtRQUNsQiwwRUFBMEU7UUFDMUUsSUFBSSxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUE7SUFDMUIsQ0FBQztJQUVEOzs7Ozs7O09BT0c7SUFDSCxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUMsU0FBUyxFQUFFLE1BQU0sR0FBRyxLQUFLLEVBQUUsUUFBUSxHQUFHLFFBQVEsRUFBQyxHQUFHLEVBQUU7UUFDOUQsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFNBQVMsQ0FBQyxDQUFBO1FBQ3RELCtDQUErQztRQUMvQyxNQUFNLFFBQVEsR0FBRyxFQUFFLENBQUE7UUFFbkIsS0FBSyxNQUFNLFVBQVUsSUFBSSxXQUFXLEVBQUUsQ0FBQztZQUNyQyxNQUFNLElBQUksQ0FBQyxTQUFTLENBQUMsVUFBVSxFQUFFLEVBQUUsRUFBRSxRQUFRLEVBQUUsUUFBUSxDQUFDLENBQUE7WUFFeEQsSUFBSSxNQUFNLEVBQUUsQ0FBQztnQkFDWCxLQUFLLE1BQU0sU0FBUyxJQUFJLFVBQVUsQ0FBQyxXQUFXLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQztvQkFDdEQsTUFBTSxJQUFJLENBQUMsU0FBUyxDQUFDLFVBQVUsRUFBRSxDQUFDLFNBQVMsQ0FBQyxFQUFFLFFBQVEsRUFBRSxRQUFRLENBQUMs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QUFDLENBQUE7SUFDSixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBAdHMtY2hlY2tcblxuaW1wb3J0IHtGYWN0b3J5RXJyb3J9IGZyb20gXCIuL2Vycm9ycy5qc1wiXG5cbi8qKiBJbnRlcm5hbCBzZW50aW5lbCB0aHJvd24gdG8gZm9yY2UgYSBwZXItY2FzZSB0cmFuc2FjdGlvbiByb2xsYmFjay4gKi9cbmNsYXNzIExpbnRSb2xsYmFja1NpZ25hbCBleHRlbmRzIEVycm9yIHt9XG5cbi8qKlxuICogQWdncmVnYXRlZCBsaW50IGZhaWx1cmUgcmFpc2VkIHdoZW4gb25lIG9yIG1vcmUgbGludGVkIGZhY3Rvcmllcy90cmFpdHMgZXJyb3IuXG4gKi9cbmNsYXNzIEZhY3RvcnlMaW50RXJyb3IgZXh0ZW5kcyBGYWN0b3J5RXJyb3Ige31cblxuLyoqXG4gKiBFeGVjdXRlcyByZWdpc3RlcmVkIGZhY3RvcmllcyAoYW5kIG9wdGlvbmFsbHkgdGhlaXIgdHJhaXRzKSB0byBwcm92ZSB0aGV5IGJ1aWxkXG4gKiBhbmQgcGVyc2lzdCwgYWdncmVnYXRpbmcgZXZlcnkgZmFpbHVyZSBieSBjYXNlLiBGb3IgdGhlIGNyZWF0ZSBzdHJhdGVneSBlYWNoXG4gKiBjYXNlIHJ1bnMgaW5zaWRlIHRoZSBtb2RlbCdzIGFtYmllbnQgdHJhbnNhY3Rpb24gYW5kIGlzIHJvbGxlZCBiYWNrLCBzbyBubyByb3dzXG4gKiByZW1haW4gaW4gdGhlIHN1cHBvcnRlZCBzaW5nbGUtY29ubmVjdGlvbiBjYXNlLiBFeHRlcm5hbCBjYWxsYmFjayBzaWRlIGVmZmVjdHNcbiAqIGFyZSBub3QgcmV2ZXJzaWJsZSBhbmQgY3Jvc3MtZGF0YWJhc2Ugd3JpdGVzIGFyZSBub3QgZ2xvYmFsbHkgYXRvbWljLlxuICovXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBGYWN0b3J5TGludGVyIHtcbiAgLyoqXG4gICAqIEJ1aWxkcyBhIGxpbnRlci5cbiAgICogQHBhcmFtIHtpbXBvcnQoXCIuL2ZhY3RvcnktcmVnaXN0cnkuanNcIikuZGVmYXVsdH0gcmVnaXN0cnkgLSBSZWdpc3RyeSB0byBsaW50LlxuICAgKi9cbiAgY29uc3RydWN0b3IocmVnaXN0cnkpIHtcbiAgICAvKiogQHR5cGUge2ltcG9ydChcIi4vZmFjdG9yeS1yZWdpc3RyeS5qc1wiKS5kZWZhdWx0fSAtIFJlZ2lzdHJ5IHRvIGxpbnQuICovXG4gICAgdGhpcy5yZWdpc3RyeSA9IHJlZ2lzdHJ5XG4gIH1cblxuICAvKipcbiAgICogTGludHMgc2VsZWN0ZWQgZmFjdG9yaWVzIGFuZCByZXBvcnRzIGV2ZXJ5IGZhaWx1cmUgdG9nZXRoZXIuXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBbb3B0aW9uc10gLSBPcHRpb25zLlxuICAgKiBAcGFyYW0ge3N0cmluZ1tdfSBbb3B0aW9ucy5mYWN0b3JpZXNdIC0gRmFjdG9yeSBuYW1lcyB0byBsaW50LiBEZWZhdWx0cyB0byBhbGwuXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gW29wdGlvbnMudHJhaXRzXSAtIFdoZXRoZXIgdG8gYWxzbyBsaW50IGVhY2ggZmFjdG9yeSdzIGxvY2FsIHRyYWl0cy5cbiAgICogQHBhcmFtIHtcImF0dHJpYnV0ZXNGb3JcIiB8IFwiYnVpbGRcIiB8IFwiY3JlYXRlXCJ9IFtvcHRpb25zLnN0cmF0ZWd5XSAtIFN0cmF0ZWd5IHRvIGxpbnQgd2l0aC4gRGVmYXVsdHMgdG8gY3JlYXRlLlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTx2b2lkPn0gLSBSZXNvbHZlcyB3aGVuIGV2ZXJ5IGNhc2UgcGFzc2VkOyByZWplY3RzIHdpdGggYW4gYWdncmVnYXRlIG90aGVyd2lzZS5cbiAgICovXG4gIGFzeW5jIGxpbnQoe2ZhY3RvcmllcywgdHJhaXRzID0gZmFsc2UsIHN0cmF0ZWd5ID0gXCJjcmVhdGVcIn0gPSB7fSkge1xuICAgIGNvbnN0IGRlZmluaXRpb25zID0gdGhpcy5fc2VsZWN0RGVmaW5pdGlvbnMoZmFjdG9yaWVzKVxuICAgIC8qKiBAdHlwZSB7QXJyYXk8e2xhYmVsOiBzdHJpbmcsIGVycm9yOiA/fT59ICovXG4gICAgY29uc3QgZmFpbHVyZXMgPSBbXVxuXG4gICAgZm9yIChjb25zdCBkZWZpbml0aW9uIG9mIGRlZmluaXRpb25zKSB7XG4gICAgICBhd2FpdCB0aGlzLl9saW50Q2FzZShkZWZpbml0aW9uLCBbXSwgc3RyYXRlZ3ksIGZhaWx1cmVzKVxuXG4gICAgICBpZiAodHJhaXRzKSB7XG4gICAgICAgIGZvciAoY29uc3QgdHJhaXROYW1lIG9mIGRlZmluaXRpb24ubG9jYWxUcmFpdHMua2V5cygpKSB7XG4gICAgICAgICAgYXdhaXQgdGhpcy5fbGludENhc2UoZGVmaW5pdGlvbiwgW3RyYWl0TmFtZV0sIHN0cmF0ZWd5LCBmYWlsdXJlcylcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChmYWlsdXJlcy5sZW5ndGggPiAwKSB7XG4gICAgICBjb25zdCBkZXRhaWxzID0gZmFpbHVyZXMubWFwKChmYWlsdXJlKSA9PiBgICAke2ZhaWx1cmUubGFiZWx9OiAke2ZhaWx1cmUuZXJyb3IgJiYgZmFpbHVyZS5lcnJvci5tZXNzYWdlfWApLmpvaW4oXCJcXG5cIilcblxuICAgICAgdGhyb3cgbmV3IEZhY3RvcnlMaW50RXJyb3IoYEZhY3RvcnkgbGludCBmb3VuZCAke2ZhaWx1cmVzLmxlbmd0aH0gZXJyb3Iocyk6XFxuJHtkZXRhaWxzfWApXG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFJlc29sdmVzIHRoZSB1bmlxdWUgc2V0IG9mIGZhY3RvcnkgZGVmaW5pdGlvbnMgdG8gbGludC5cbiAgICogQHBhcmFtIHtzdHJpbmdbXSB8IHVuZGVmaW5lZH0gZmFjdG9yaWVzIC0gRXhwbGljaXQgbmFtZXMsIG9yIHVuZGVmaW5lZCBmb3IgYWxsLlxuICAgKiBAcmV0dXJucyB7aW1wb3J0KFwiLi9mYWN0b3J5LWRlZmluaXRpb24uanNcIikuZGVmYXVsdFtdfSAtIFVuaXF1ZSBkZWZpbml0aW9ucy5cbiAgICovXG4gIF9zZWxlY3REZWZpbml0aW9ucyhmYWN0b3JpZXMpIHtcbiAgICBpZiAoZmFjdG9yaWVzKSB7XG4gICAgICByZXR1cm4gZmFjdG9yaWVzLm1hcCgobmFtZSkgPT4gdGhpcy5yZWdpc3RyeS5fcnVubmVyLl9yZXNvbHZlRmFjdG9yeShuYW1lKSlcbiAgICB9XG5cbiAgICByZXR1cm4gWy4uLm5ldyBTZXQodGhpcy5yZWdpc3RyeS5fZmFjdG9yaWVzLnZhbHVlcygpKV1cbiAgfVxuXG4gIC8qKlxuICAgKiBMaW50cyBvbmUgZmFjdG9yeS90cmFpdCBjYXNlLCByb2xsaW5nIGJhY2sgY3JlYXRlLXN0cmF0ZWd5IHBlcnNpc3RlbmNlLlxuICAgKiBAcGFyYW0ge2ltcG9ydChcIi4vZmFjdG9yeS1kZWZpbml0aW9uLmpzXCIpLmRlZmF1bHR9IGRlZmluaXRpb24gLSBGYWN0b3J5IGRlZmluaXRpb24uXG4gICAqIEBwYXJhbSB7c3RyaW5nW119IHRyYWl0cyAtIFRyYWl0cyB0byBhcHBseSBmb3IgdGhpcyBjYXNlLlxuICAgKiBAcGFyYW0ge1wiYXR0cmlidXRlc0ZvclwiIHwgXCJidWlsZFwiIHwgXCJjcmVhdGVcIn0gc3RyYXRlZ3kgLSBTdHJhdGVneSB0byBydW4uXG4gICAqIEBwYXJhbSB7QXJyYXk8e2xhYmVsOiBzdHJpbmcsIGVycm9yOiA/fT59IGZhaWx1cmVzIC0gRmFpbHVyZSBzaW5rLlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTx2b2lkPn0gLSBSZXNvbHZlcyB3aGVuIHRoZSBjYXNlIGhhcyBiZWVuIGV2YWx1YXRlZC5cbiAgICovXG4gIGFzeW5jIF9saW50Q2FzZShkZWZpbml0aW9uLCB0cmFpdHMsIHN0cmF0ZWd5LCBmYWlsdXJlcykge1xuICAgIGNvbnN0IGxhYmVsID0gdHJhaXRzLmxlbmd0aCA+IDAgPyBgJHtkZWZpbml0aW9uLm5hbWV9ICsgJHt0cmFpdHMuam9pbihcIiwgXCIpfWAgOiBkZWZpbml0aW9uLm5hbWVcblxuICAgIHRyeSB7XG4gICAgICBpZiAoc3RyYXRlZ3kgPT09IFwiY3JlYXRlXCIpIHtcbiAgICAgICAgYXdhaXQgdGhpcy5fbGludENyZWF0ZUNhc2UoZGVmaW5pdGlvbiwgdHJhaXRzKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgYXdhaXQgdGhpcy5yZWdpc3RyeVtzdHJhdGVneV0oZGVmaW5pdGlvbi5uYW1lLCAuLi50cmFpdHMpXG4gICAgICB9XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGlmIChlcnJvciBpbnN0YW5jZW9mIExpbnRSb2xsYmFja1NpZ25hbCkgcmV0dXJuXG5cbiAgICAgIGZhaWx1cmVzLnB1c2goe2xhYmVsLCBlcnJvcn0pXG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFJ1bnMgYSBjcmVhdGUtc3RyYXRlZ3kgY2FzZSBpbnNpZGUgYSB0cmFuc2FjdGlvbiBhbmQgZm9yY2VzIGEgcm9sbGJhY2suXG4gICAqIEBwYXJhbSB7aW1wb3J0KFwiLi9mYWN0b3J5LWRlZmluaXRpb24uanNcIikuZGVmYXVsdH0gZGVmaW5pdGlvbiAtIEZhY3RvcnkgZGVmaW5pdGlvbi5cbiAgICogQHBhcmFtIHtzdHJpbmdbXX0gdHJhaXRzIC0gVHJhaXRzIHRvIGFwcGx5LlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTx2b2lkPn0gLSBSZXNvbHZlcyAob3IgcmVqZWN0cykgb25jZSB0aGUgcm9sbGJhY2sgY29tcGxldGVzLlxuICAgKi9cbiAgYXN5bmMgX2xpbnRDcmVhdGVDYXNlKGRlZmluaXRpb24sIHRyYWl0cykge1xuICAgIGNvbnN0IGNoYWluID0gdGhpcy5yZWdpc3RyeS5fcnVubmVyLl9yZXNvbHZlQ2hhaW4oZGVmaW5pdGlvbi5uYW1lKVxuICAgIGNvbnN0IG1vZGVsQ2xhc3MgPSB0aGlzLnJlZ2lzdHJ5Ll9ydW5uZXIuX3Jlc29sdmVNb2RlbENsYXNzKGNoYWluKVxuXG4gICAgaWYgKCFtb2RlbENsYXNzKSB7XG4gICAgICBhd2FpdCB0aGlzLnJlZ2lzdHJ5LmNyZWF0ZShkZWZpbml0aW9uLm5hbWUsIC4uLnRyYWl0cylcblxuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgYXdhaXQgLyoqIEB0eXBlIHt0eXBlb2YgaW1wb3J0KFwiLi4vLi4vZGF0YWJhc2UvcmVjb3JkL2luZGV4LmpzXCIpLmRlZmF1bHR9ICovIChtb2RlbENsYXNzKS50cmFuc2FjdGlvbihhc3luYyAoKSA9PiB7XG4gICAgICBhd2FpdCB0aGlzLnJlZ2lzdHJ5LmNyZWF0ZShkZWZpbml0aW9uLm5hbWUsIC4uLnRyYWl0cylcblxuICAgICAgdGhyb3cgbmV3IExpbnRSb2xsYmFja1NpZ25hbCgpXG4gICAgfSlcbiAgfVxufVxuIl19
106
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGludGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3Rlc3RpbmcvZmFjdG9yeS9saW50ZXIuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsWUFBWTtBQUVaLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxhQUFhLENBQUE7QUFFeEMseUVBQXlFO0FBQ3pFLE1BQU0sa0JBQW1CLFNBQVEsS0FBSztDQUFHO0FBRXpDOztHQUVHO0FBQ0gsTUFBTSxnQkFBaUIsU0FBUSxZQUFZO0NBQUc7QUFFOUM7Ozs7OztHQU1HO0FBQ0gsTUFBTSxDQUFDLE9BQU8sT0FBTyxhQUFhO0lBQ2hDOzs7T0FHRztJQUNILFlBQVksUUFBUTtRQUNsQiwwRUFBMEU7UUFDMUUsSUFBSSxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUE7SUFDMUIsQ0FBQztJQUVEOzs7Ozs7O09BT0c7SUFDSCxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUMsU0FBUyxFQUFFLE1BQU0sR0FBRyxLQUFLLEVBQUUsUUFBUSxHQUFHLFFBQVEsRUFBQyxHQUFHLEVBQUU7UUFDOUQsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFNBQVMsQ0FBQyxDQUFBO1FBQ3RELDJFQUEyRTtRQUMzRSxNQUFNLFFBQVEsR0FBRyxFQUFFLENBQUE7UUFFbkIsS0FBSyxNQUFNLFVBQVUsSUFBSSxXQUFXLEVBQUUsQ0FBQztZQUNyQyxNQUFNLElBQUksQ0FBQyxTQUFTLENBQUMsVUFBVSxFQUFFLEVBQUUsRUFBRSxRQUFRLEVBQUUsUUFBUSxDQUFDLENBQUE7WUFFeEQsSUFBSSxNQUFNLEVBQUUsQ0FBQztnQkFDWCxLQUFLLE1BQU0sU0FBUyxJQUFJLFVBQVUsQ0FBQyxXQUFXLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQztvQkFDdEQsTUFBTSxJQUFJLENBQUMsU0FBUyxDQUFDLFVBQVUsRUFBRSxDQUFDLFNBQVMsQ0FBQyxFQUFFLFFBQVEsRUFBRSxRQUFRLENBQUMs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QUFDLENBQUE7SUFDSixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBAdHMtY2hlY2tcblxuaW1wb3J0IHtGYWN0b3J5RXJyb3J9IGZyb20gXCIuL2Vycm9ycy5qc1wiXG5cbi8qKiBJbnRlcm5hbCBzZW50aW5lbCB0aHJvd24gdG8gZm9yY2UgYSBwZXItY2FzZSB0cmFuc2FjdGlvbiByb2xsYmFjay4gKi9cbmNsYXNzIExpbnRSb2xsYmFja1NpZ25hbCBleHRlbmRzIEVycm9yIHt9XG5cbi8qKlxuICogQWdncmVnYXRlZCBsaW50IGZhaWx1cmUgcmFpc2VkIHdoZW4gb25lIG9yIG1vcmUgbGludGVkIGZhY3Rvcmllcy90cmFpdHMgZXJyb3IuXG4gKi9cbmNsYXNzIEZhY3RvcnlMaW50RXJyb3IgZXh0ZW5kcyBGYWN0b3J5RXJyb3Ige31cblxuLyoqXG4gKiBFeGVjdXRlcyByZWdpc3RlcmVkIGZhY3RvcmllcyAoYW5kIG9wdGlvbmFsbHkgdGhlaXIgdHJhaXRzKSB0byBwcm92ZSB0aGV5IGJ1aWxkXG4gKiBhbmQgcGVyc2lzdCwgYWdncmVnYXRpbmcgZXZlcnkgZmFpbHVyZSBieSBjYXNlLiBGb3IgdGhlIGNyZWF0ZSBzdHJhdGVneSBlYWNoXG4gKiBjYXNlIHJ1bnMgaW5zaWRlIHRoZSBtb2RlbCdzIGFtYmllbnQgdHJhbnNhY3Rpb24gYW5kIGlzIHJvbGxlZCBiYWNrLCBzbyBubyByb3dzXG4gKiByZW1haW4gaW4gdGhlIHN1cHBvcnRlZCBzaW5nbGUtY29ubmVjdGlvbiBjYXNlLiBFeHRlcm5hbCBjYWxsYmFjayBzaWRlIGVmZmVjdHNcbiAqIGFyZSBub3QgcmV2ZXJzaWJsZSBhbmQgY3Jvc3MtZGF0YWJhc2Ugd3JpdGVzIGFyZSBub3QgZ2xvYmFsbHkgYXRvbWljLlxuICovXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBGYWN0b3J5TGludGVyIHtcbiAgLyoqXG4gICAqIEJ1aWxkcyBhIGxpbnRlci5cbiAgICogQHBhcmFtIHtpbXBvcnQoXCIuL2ZhY3RvcnktcmVnaXN0cnkuanNcIikuZGVmYXVsdH0gcmVnaXN0cnkgLSBSZWdpc3RyeSB0byBsaW50LlxuICAgKi9cbiAgY29uc3RydWN0b3IocmVnaXN0cnkpIHtcbiAgICAvKiogQHR5cGUge2ltcG9ydChcIi4vZmFjdG9yeS1yZWdpc3RyeS5qc1wiKS5kZWZhdWx0fSAtIFJlZ2lzdHJ5IHRvIGxpbnQuICovXG4gICAgdGhpcy5yZWdpc3RyeSA9IHJlZ2lzdHJ5XG4gIH1cblxuICAvKipcbiAgICogTGludHMgc2VsZWN0ZWQgZmFjdG9yaWVzIGFuZCByZXBvcnRzIGV2ZXJ5IGZhaWx1cmUgdG9nZXRoZXIuXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBbb3B0aW9uc10gLSBPcHRpb25zLlxuICAgKiBAcGFyYW0ge3N0cmluZ1tdfSBbb3B0aW9ucy5mYWN0b3JpZXNdIC0gRmFjdG9yeSBuYW1lcyB0byBsaW50LiBEZWZhdWx0cyB0byBhbGwuXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gW29wdGlvbnMudHJhaXRzXSAtIFdoZXRoZXIgdG8gYWxzbyBsaW50IGVhY2ggZmFjdG9yeSdzIGxvY2FsIHRyYWl0cy5cbiAgICogQHBhcmFtIHtcImF0dHJpYnV0ZXNGb3JcIiB8IFwiYnVpbGRcIiB8IFwiY3JlYXRlXCJ9IFtvcHRpb25zLnN0cmF0ZWd5XSAtIFN0cmF0ZWd5IHRvIGxpbnQgd2l0aC4gRGVmYXVsdHMgdG8gY3JlYXRlLlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTx2b2lkPn0gLSBSZXNvbHZlcyB3aGVuIGV2ZXJ5IGNhc2UgcGFzc2VkOyByZWplY3RzIHdpdGggYW4gYWdncmVnYXRlIG90aGVyd2lzZS5cbiAgICovXG4gIGFzeW5jIGxpbnQoe2ZhY3RvcmllcywgdHJhaXRzID0gZmFsc2UsIHN0cmF0ZWd5ID0gXCJjcmVhdGVcIn0gPSB7fSkge1xuICAgIGNvbnN0IGRlZmluaXRpb25zID0gdGhpcy5fc2VsZWN0RGVmaW5pdGlvbnMoZmFjdG9yaWVzKVxuICAgIC8qKiBAdHlwZSB7QXJyYXk8e2xhYmVsOiBzdHJpbmcsIGVycm9yOiBSZXR1cm5UeXBlPHR5cGVvZiBKU09OLnBhcnNlPn0+fSAqL1xuICAgIGNvbnN0IGZhaWx1cmVzID0gW11cblxuICAgIGZvciAoY29uc3QgZGVmaW5pdGlvbiBvZiBkZWZpbml0aW9ucykge1xuICAgICAgYXdhaXQgdGhpcy5fbGludENhc2UoZGVmaW5pdGlvbiwgW10sIHN0cmF0ZWd5LCBmYWlsdXJlcylcblxuICAgICAgaWYgKHRyYWl0cykge1xuICAgICAgICBmb3IgKGNvbnN0IHRyYWl0TmFtZSBvZiBkZWZpbml0aW9uLmxvY2FsVHJhaXRzLmtleXMoKSkge1xuICAgICAgICAgIGF3YWl0IHRoaXMuX2xpbnRDYXNlKGRlZmluaXRpb24sIFt0cmFpdE5hbWVdLCBzdHJhdGVneSwgZmFpbHVyZXMpXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoZmFpbHVyZXMubGVuZ3RoID4gMCkge1xuICAgICAgY29uc3QgZGV0YWlscyA9IGZhaWx1cmVzLm1hcCgoZmFpbHVyZSkgPT4gYCAgJHtmYWlsdXJlLmxhYmVsfTogJHtmYWlsdXJlLmVycm9yICYmIGZhaWx1cmUuZXJyb3IubWVzc2FnZX1gKS5qb2luKFwiXFxuXCIpXG5cbiAgICAgIHRocm93IG5ldyBGYWN0b3J5TGludEVycm9yKGBGYWN0b3J5IGxpbnQgZm91bmQgJHtmYWlsdXJlcy5sZW5ndGh9IGVycm9yKHMpOlxcbiR7ZGV0YWlsc31gKVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBSZXNvbHZlcyB0aGUgdW5pcXVlIHNldCBvZiBmYWN0b3J5IGRlZmluaXRpb25zIHRvIGxpbnQuXG4gICAqIEBwYXJhbSB7c3RyaW5nW10gfCB1bmRlZmluZWR9IGZhY3RvcmllcyAtIEV4cGxpY2l0IG5hbWVzLCBvciB1bmRlZmluZWQgZm9yIGFsbC5cbiAgICogQHJldHVybnMge2ltcG9ydChcIi4vZmFjdG9yeS1kZWZpbml0aW9uLmpzXCIpLmRlZmF1bHRbXX0gLSBVbmlxdWUgZGVmaW5pdGlvbnMuXG4gICAqL1xuICBfc2VsZWN0RGVmaW5pdGlvbnMoZmFjdG9yaWVzKSB7XG4gICAgaWYgKGZhY3Rvcmllcykge1xuICAgICAgcmV0dXJuIGZhY3Rvcmllcy5tYXAoKG5hbWUpID0+IHRoaXMucmVnaXN0cnkuX3J1bm5lci5fcmVzb2x2ZUZhY3RvcnkobmFtZSkpXG4gICAgfVxuXG4gICAgcmV0dXJuIFsuLi5uZXcgU2V0KHRoaXMucmVnaXN0cnkuX2ZhY3Rvcmllcy52YWx1ZXMoKSldXG4gIH1cblxuICAvKipcbiAgICogTGludHMgb25lIGZhY3RvcnkvdHJhaXQgY2FzZSwgcm9sbGluZyBiYWNrIGNyZWF0ZS1zdHJhdGVneSBwZXJzaXN0ZW5jZS5cbiAgICogQHBhcmFtIHtpbXBvcnQoXCIuL2ZhY3RvcnktZGVmaW5pdGlvbi5qc1wiKS5kZWZhdWx0fSBkZWZpbml0aW9uIC0gRmFjdG9yeSBkZWZpbml0aW9uLlxuICAgKiBAcGFyYW0ge3N0cmluZ1tdfSB0cmFpdHMgLSBUcmFpdHMgdG8gYXBwbHkgZm9yIHRoaXMgY2FzZS5cbiAgICogQHBhcmFtIHtcImF0dHJpYnV0ZXNGb3JcIiB8IFwiYnVpbGRcIiB8IFwiY3JlYXRlXCJ9IHN0cmF0ZWd5IC0gU3RyYXRlZ3kgdG8gcnVuLlxuICAgKiBAcGFyYW0ge0FycmF5PHtsYWJlbDogc3RyaW5nLCBlcnJvcjogUmV0dXJuVHlwZTx0eXBlb2YgSlNPTi5wYXJzZT59Pn0gZmFpbHVyZXMgLSBGYWlsdXJlIHNpbmsuXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPHZvaWQ+fSAtIFJlc29sdmVzIHdoZW4gdGhlIGNhc2UgaGFzIGJlZW4gZXZhbHVhdGVkLlxuICAgKi9cbiAgYXN5bmMgX2xpbnRDYXNlKGRlZmluaXRpb24sIHRyYWl0cywgc3RyYXRlZ3ksIGZhaWx1cmVzKSB7XG4gICAgY29uc3QgbGFiZWwgPSB0cmFpdHMubGVuZ3RoID4gMCA/IGAke2RlZmluaXRpb24ubmFtZX0gKyAke3RyYWl0cy5qb2luKFwiLCBcIil9YCA6IGRlZmluaXRpb24ubmFtZVxuXG4gICAgdHJ5IHtcbiAgICAgIGlmIChzdHJhdGVneSA9PT0gXCJjcmVhdGVcIikge1xuICAgICAgICBhd2FpdCB0aGlzLl9saW50Q3JlYXRlQ2FzZShkZWZpbml0aW9uLCB0cmFpdHMpXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBhd2FpdCB0aGlzLnJlZ2lzdHJ5W3N0cmF0ZWd5XShkZWZpbml0aW9uLm5hbWUsIC4uLnRyYWl0cylcbiAgICAgIH1cbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgaWYgKGVycm9yIGluc3RhbmNlb2YgTGludFJvbGxiYWNrU2lnbmFsKSByZXR1cm5cblxuICAgICAgZmFpbHVyZXMucHVzaCh7bGFiZWwsIGVycm9yfSlcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUnVucyBhIGNyZWF0ZS1zdHJhdGVneSBjYXNlIGluc2lkZSBhIHRyYW5zYWN0aW9uIGFuZCBmb3JjZXMgYSByb2xsYmFjay5cbiAgICogQHBhcmFtIHtpbXBvcnQoXCIuL2ZhY3RvcnktZGVmaW5pdGlvbi5qc1wiKS5kZWZhdWx0fSBkZWZpbml0aW9uIC0gRmFjdG9yeSBkZWZpbml0aW9uLlxuICAgKiBAcGFyYW0ge3N0cmluZ1tdfSB0cmFpdHMgLSBUcmFpdHMgdG8gYXBwbHkuXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPHZvaWQ+fSAtIFJlc29sdmVzIChvciByZWplY3RzKSBvbmNlIHRoZSByb2xsYmFjayBjb21wbGV0ZXMuXG4gICAqL1xuICBhc3luYyBfbGludENyZWF0ZUNhc2UoZGVmaW5pdGlvbiwgdHJhaXRzKSB7XG4gICAgY29uc3QgY2hhaW4gPSB0aGlzLnJlZ2lzdHJ5Ll9ydW5uZXIuX3Jlc29sdmVDaGFpbihkZWZpbml0aW9uLm5hbWUpXG4gICAgY29uc3QgbW9kZWxDbGFzcyA9IHRoaXMucmVnaXN0cnkuX3J1bm5lci5fcmVzb2x2ZU1vZGVsQ2xhc3MoY2hhaW4pXG5cbiAgICBpZiAoIW1vZGVsQ2xhc3MpIHtcbiAgICAgIGF3YWl0IHRoaXMucmVnaXN0cnkuY3JlYXRlKGRlZmluaXRpb24ubmFtZSwgLi4udHJhaXRzKVxuXG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBhd2FpdCAvKiogQHR5cGUge3R5cGVvZiBpbXBvcnQoXCIuLi8uLi9kYXRhYmFzZS9yZWNvcmQvaW5kZXguanNcIikuZGVmYXVsdH0gKi8gKG1vZGVsQ2xhc3MpLnRyYW5zYWN0aW9uKGFzeW5jICgpID0+IHtcbiAgICAgIGF3YWl0IHRoaXMucmVnaXN0cnkuY3JlYXRlKGRlZmluaXRpb24ubmFtZSwgLi4udHJhaXRzKVxuXG4gICAgICB0aHJvdyBuZXcgTGludFJvbGxiYWNrU2lnbmFsKClcbiAgICB9KVxuICB9XG59XG4iXX0=
@@ -3,9 +3,9 @@
3
3
  * initialized backend Velocious `DatabaseRecord` subclass. Uninitialized backend
4
4
  * classes and non-backend classes (e.g. generated frontend models) are rejected
5
5
  * with a named, actionable error rather than failing deep inside construction.
6
- * @param {?} modelClass - The candidate model class.
6
+ * @param {ReturnType<typeof JSON.parse>} modelClass - The candidate model class.
7
7
  * @param {string} factoryName - Factory name, for the error message.
8
- * @returns {new (attributes?: Record<string, ?>) => import("../../database/record/index.js").default} - The validated model class.
8
+ * @returns {new (attributes?: Record<string, ReturnType<typeof JSON.parse>>) => import("../../database/record/index.js").default} - The validated model class.
9
9
  */
10
- export function assertModelClass(modelClass: unknown, factoryName: string): new (attributes?: Record<string, unknown>) => import("../../database/record/index.js").default;
10
+ export declare function assertModelClass(modelClass: ReturnType<typeof JSON.parse>, factoryName: string): new (attributes?: Record<string, ReturnType<typeof JSON.parse>>) => import("../../database/record/index.js").default;
11
11
  //# sourceMappingURL=model-contract.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"model-contract.d.ts","sourceRoot":"","sources":["../../../../src/testing/factory/model-contract.js"],"names":[],"mappings":"AAKA;;;;;;;;GAQG;AACH,6CAJW,OAAC,eACD,MAAM,GACJ,KAAK,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAC,CAAC,KAAK,OAAO,gCAAgC,EAAE,OAAO,CAkBpG"}
1
+ {"version":3,"file":"model-contract.d.ts","sourceRoot":"","sources":["../../../../src/testing/factory/model-contract.js"],"names":[],"mappings":"AAKA;;;;;;;;GAQG;AACH,wBAAgB,gBAAgB,CAAC,UAAU,EAJhC,UAAU,CAAC,OAAO,IAAI,CAAC,KAAK,CAII,EAAE,WAAW,EAH7C,MAG6C,GAF3C,KAAK,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,OAAO,gCAAgC,EAAE,OAAO,CAkBhI"}
@@ -6,9 +6,9 @@ import { ModelContractError } from "./errors.js";
6
6
  * initialized backend Velocious `DatabaseRecord` subclass. Uninitialized backend
7
7
  * classes and non-backend classes (e.g. generated frontend models) are rejected
8
8
  * with a named, actionable error rather than failing deep inside construction.
9
- * @param {?} modelClass - The candidate model class.
9
+ * @param {ReturnType<typeof JSON.parse>} modelClass - The candidate model class.
10
10
  * @param {string} factoryName - Factory name, for the error message.
11
- * @returns {new (attributes?: Record<string, ?>) => import("../../database/record/index.js").default} - The validated model class.
11
+ * @returns {new (attributes?: Record<string, ReturnType<typeof JSON.parse>>) => import("../../database/record/index.js").default} - The validated model class.
12
12
  */
13
13
  export function assertModelClass(modelClass, factoryName) {
14
14
  if (typeof modelClass !== "function") {
@@ -21,6 +21,6 @@ export function assertModelClass(modelClass, factoryName) {
21
21
  if (!backendModelClass.isInitialized()) {
22
22
  throw new ModelContractError(`Factory "${factoryName}" model ${backendModelClass.name} has not been initialized. Ensure the model class is initialized (e.g. via configuration.initialize()/ensureInitialized) before build/create.`);
23
23
  }
24
- return /** @type {new (attributes?: Record<string, ?>) => import("../../database/record/index.js").default} */ (modelClass);
24
+ return /** @type {new (attributes?: Record<string, ReturnType<typeof JSON.parse>>) => import("../../database/record/index.js").default} */ (modelClass);
25
25
  }
26
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kZWwtY29udHJhY3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvdGVzdGluZy9mYWN0b3J5L21vZGVsLWNvbnRyYWN0LmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFlBQVk7QUFFWixPQUFPLGNBQWMsTUFBTSxnQ0FBZ0MsQ0FBQTtBQUMzRCxPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSxhQUFhLENBQUE7QUFFOUM7Ozs7Ozs7O0dBUUc7QUFDSCxNQUFNLFVBQVUsZ0JBQWdCLENBQUMsVUFBVSxFQUFFLFdBQVc7SUFDdEQsSUFBSSxPQUFPLFVBQVUsS0FBSyxVQUFVLEVBQUUsQ0FBQztRQUNyQyxNQUFNLElBQUksa0JBQWtCLENBQUMsWUFBWSxXQUFXLGdFQUFnRSxXQUFXLHNCQUFzQixDQUFDLENBQUE7SUFDeEosQ0FBQztJQUVELElBQUksQ0FBQyxDQUFDLFVBQVUsQ0FBQyxTQUFTLFlBQVksY0FBYyxDQUFDLEVBQUUsQ0FBQztRQUN0RCxNQUFNLElBQUksa0JBQWtCLENBQUMsWUFBWSxXQUFXLFdBQVcsVUFBVSxDQUFDLElBQUksSUFBSSxPQUFPLCtKQUErSixDQUFDLENBQUE7SUFDM1AsQ0FBQztJQUVELE1BQU0saUJBQWlCLEdBQUcsc0VBQXNFLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQTtJQUU3RyxJQUFJLENBQUMsaUJBQWlCLENBQUMsYUFBYSxFQUFFLEVBQUUsQ0FBQztRQUN2QyxNQUFNLElBQUksa0JBQWtCLENBQUMsWUFBWSxXQUFXLFdBQVcsaUJBQWlCLENBQUMsSUFBSSwrSUFBK0ksQ0FBQyxDQUFBO0lBQ3ZPLENBQUM7SUFFRCxPQUFPLHVHQUF1RyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUE7QUFDN0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIEB0cy1jaGVja1xuXG5pbXBvcnQgRGF0YWJhc2VSZWNvcmQgZnJvbSBcIi4uLy4uL2RhdGFiYXNlL3JlY29yZC9pbmRleC5qc1wiXG5pbXBvcnQge01vZGVsQ29udHJhY3RFcnJvcn0gZnJvbSBcIi4vZXJyb3JzLmpzXCJcblxuLyoqXG4gKiBBc3NlcnRzIGEgY2xhc3Mgc2F0aXNmaWVzIHRoZSBWMSBmYWN0b3J5IG1vZGVsIGNvbnRyYWN0OiBpdCBtdXN0IGJlIGFuXG4gKiBpbml0aWFsaXplZCBiYWNrZW5kIFZlbG9jaW91cyBgRGF0YWJhc2VSZWNvcmRgIHN1YmNsYXNzLiBVbmluaXRpYWxpemVkIGJhY2tlbmRcbiAqIGNsYXNzZXMgYW5kIG5vbi1iYWNrZW5kIGNsYXNzZXMgKGUuZy4gZ2VuZXJhdGVkIGZyb250ZW5kIG1vZGVscykgYXJlIHJlamVjdGVkXG4gKiB3aXRoIGEgbmFtZWQsIGFjdGlvbmFibGUgZXJyb3IgcmF0aGVyIHRoYW4gZmFpbGluZyBkZWVwIGluc2lkZSBjb25zdHJ1Y3Rpb24uXG4gKiBAcGFyYW0gez99IG1vZGVsQ2xhc3MgLSBUaGUgY2FuZGlkYXRlIG1vZGVsIGNsYXNzLlxuICogQHBhcmFtIHtzdHJpbmd9IGZhY3RvcnlOYW1lIC0gRmFjdG9yeSBuYW1lLCBmb3IgdGhlIGVycm9yIG1lc3NhZ2UuXG4gKiBAcmV0dXJucyB7bmV3IChhdHRyaWJ1dGVzPzogUmVjb3JkPHN0cmluZywgPz4pID0+IGltcG9ydChcIi4uLy4uL2RhdGFiYXNlL3JlY29yZC9pbmRleC5qc1wiKS5kZWZhdWx0fSAtIFRoZSB2YWxpZGF0ZWQgbW9kZWwgY2xhc3MuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhc3NlcnRNb2RlbENsYXNzKG1vZGVsQ2xhc3MsIGZhY3RvcnlOYW1lKSB7XG4gIGlmICh0eXBlb2YgbW9kZWxDbGFzcyAhPT0gXCJmdW5jdGlvblwiKSB7XG4gICAgdGhyb3cgbmV3IE1vZGVsQ29udHJhY3RFcnJvcihgRmFjdG9yeSBcIiR7ZmFjdG9yeU5hbWV9XCIgaGFzIG5vIG1vZGVsIGNsYXNzIHRvIGNvbnN0cnVjdC4gRGVjbGFyZSBvbmUgd2l0aCBmYWN0b3J5KFwiJHtmYWN0b3J5TmFtZX1cIiwgTW9kZWxDbGFzcywgLi4uKS5gKVxuICB9XG5cbiAgaWYgKCEobW9kZWxDbGFzcy5wcm90b3R5cGUgaW5zdGFuY2VvZiBEYXRhYmFzZVJlY29yZCkpIHtcbiAgICB0aHJvdyBuZXcgTW9kZWxDb250cmFjdEVycm9yKGBGYWN0b3J5IFwiJHtmYWN0b3J5TmFtZX1cIiBtb2RlbCAke21vZGVsQ2xhc3MubmFtZSB8fCBcImNsYXNzXCJ9IGlzIG5vdCBhIHN1cHBvcnRlZCBWZWxvY2lvdXMgYmFja2VuZCByZWNvcmQuIGJ1aWxkL2NyZWF0ZSByZXF1aXJlIGFuIGluaXRpYWxpemVkIERhdGFiYXNlUmVjb3JkIHN1YmNsYXNzOyBnZW5lcmF0ZWQgZnJvbnRlbmQgbW9kZWxzIGFyZSBub3Qgc3VwcG9ydGVkIGluIFYxLmApXG4gIH1cblxuICBjb25zdCBiYWNrZW5kTW9kZWxDbGFzcyA9IC8qKiBAdHlwZSB7dHlwZW9mIGltcG9ydChcIi4uLy4uL2RhdGFiYXNlL3JlY29yZC9pbmRleC5qc1wiKS5kZWZhdWx0fSAqLyAobW9kZWxDbGFzcylcblxuICBpZiAoIWJhY2tlbmRNb2RlbENsYXNzLmlzSW5pdGlhbGl6ZWQoKSkge1xuICAgIHRocm93IG5ldyBNb2RlbENvbnRyYWN0RXJyb3IoYEZhY3RvcnkgXCIke2ZhY3RvcnlOYW1lfVwiIG1vZGVsICR7YmFja2VuZE1vZGVsQ2xhc3MubmFtZX0gaGFzIG5vdCBiZWVuIGluaXRpYWxpemVkLiBFbnN1cmUgdGhlIG1vZGVsIGNsYXNzIGlzIGluaXRpYWxpemVkIChlLmcuIHZpYSBjb25maWd1cmF0aW9uLmluaXRpYWxpemUoKS9lbnN1cmVJbml0aWFsaXplZCkgYmVmb3JlIGJ1aWxkL2NyZWF0ZS5gKVxuICB9XG5cbiAgcmV0dXJuIC8qKiBAdHlwZSB7bmV3IChhdHRyaWJ1dGVzPzogUmVjb3JkPHN0cmluZywgPz4pID0+IGltcG9ydChcIi4uLy4uL2RhdGFiYXNlL3JlY29yZC9pbmRleC5qc1wiKS5kZWZhdWx0fSAqLyAobW9kZWxDbGFzcylcbn1cbiJdfQ==
26
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kZWwtY29udHJhY3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvdGVzdGluZy9mYWN0b3J5L21vZGVsLWNvbnRyYWN0LmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFlBQVk7QUFFWixPQUFPLGNBQWMsTUFBTSxnQ0FBZ0MsQ0FBQTtBQUMzRCxPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSxhQUFhLENBQUE7QUFFOUM7Ozs7Ozs7O0dBUUc7QUFDSCxNQUFNLFVBQVUsZ0JBQWdCLENBQUMsVUFBVSxFQUFFLFdBQVc7SUFDdEQsSUFBSSxPQUFPLFVBQVUsS0FBSyxVQUFVLEVBQUUsQ0FBQztRQUNyQyxNQUFNLElBQUksa0JBQWtCLENBQUMsWUFBWSxXQUFXLGdFQUFnRSxXQUFXLHNCQUFzQixDQUFDLENBQUE7SUFDeEosQ0FBQztJQUVELElBQUksQ0FBQyxDQUFDLFVBQVUsQ0FBQyxTQUFTLFlBQVksY0FBYyxDQUFDLEVBQUUsQ0FBQztRQUN0RCxNQUFNLElBQUksa0JBQWtCLENBQUMsWUFBWSxXQUFXLFdBQVcsVUFBVSxDQUFDLElBQUksSUFBSSxPQUFPLCtKQUErSixDQUFDLENBQUE7SUFDM1AsQ0FBQztJQUVELE1BQU0saUJBQWlCLEdBQUcsc0VBQXNFLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQTtJQUU3RyxJQUFJLENBQUMsaUJBQWlCLENBQUMsYUFBYSxFQUFFLEVBQUUsQ0FBQztRQUN2QyxNQUFNLElBQUksa0JBQWtCLENBQUMsWUFBWSxXQUFXLFdBQVcsaUJBQWlCLENBQUMsSUFBSSwrSUFBK0ksQ0FBQyxDQUFBO0lBQ3ZPLENBQUM7SUFFRCxPQUFPLG1JQUFtSSxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUE7QUFDekosQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIEB0cy1jaGVja1xuXG5pbXBvcnQgRGF0YWJhc2VSZWNvcmQgZnJvbSBcIi4uLy4uL2RhdGFiYXNlL3JlY29yZC9pbmRleC5qc1wiXG5pbXBvcnQge01vZGVsQ29udHJhY3RFcnJvcn0gZnJvbSBcIi4vZXJyb3JzLmpzXCJcblxuLyoqXG4gKiBBc3NlcnRzIGEgY2xhc3Mgc2F0aXNmaWVzIHRoZSBWMSBmYWN0b3J5IG1vZGVsIGNvbnRyYWN0OiBpdCBtdXN0IGJlIGFuXG4gKiBpbml0aWFsaXplZCBiYWNrZW5kIFZlbG9jaW91cyBgRGF0YWJhc2VSZWNvcmRgIHN1YmNsYXNzLiBVbmluaXRpYWxpemVkIGJhY2tlbmRcbiAqIGNsYXNzZXMgYW5kIG5vbi1iYWNrZW5kIGNsYXNzZXMgKGUuZy4gZ2VuZXJhdGVkIGZyb250ZW5kIG1vZGVscykgYXJlIHJlamVjdGVkXG4gKiB3aXRoIGEgbmFtZWQsIGFjdGlvbmFibGUgZXJyb3IgcmF0aGVyIHRoYW4gZmFpbGluZyBkZWVwIGluc2lkZSBjb25zdHJ1Y3Rpb24uXG4gKiBAcGFyYW0ge1JldHVyblR5cGU8dHlwZW9mIEpTT04ucGFyc2U+fSBtb2RlbENsYXNzIC0gVGhlIGNhbmRpZGF0ZSBtb2RlbCBjbGFzcy5cbiAqIEBwYXJhbSB7c3RyaW5nfSBmYWN0b3J5TmFtZSAtIEZhY3RvcnkgbmFtZSwgZm9yIHRoZSBlcnJvciBtZXNzYWdlLlxuICogQHJldHVybnMge25ldyAoYXR0cmlidXRlcz86IFJlY29yZDxzdHJpbmcsIFJldHVyblR5cGU8dHlwZW9mIEpTT04ucGFyc2U+PikgPT4gaW1wb3J0KFwiLi4vLi4vZGF0YWJhc2UvcmVjb3JkL2luZGV4LmpzXCIpLmRlZmF1bHR9IC0gVGhlIHZhbGlkYXRlZCBtb2RlbCBjbGFzcy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFzc2VydE1vZGVsQ2xhc3MobW9kZWxDbGFzcywgZmFjdG9yeU5hbWUpIHtcbiAgaWYgKHR5cGVvZiBtb2RlbENsYXNzICE9PSBcImZ1bmN0aW9uXCIpIHtcbiAgICB0aHJvdyBuZXcgTW9kZWxDb250cmFjdEVycm9yKGBGYWN0b3J5IFwiJHtmYWN0b3J5TmFtZX1cIiBoYXMgbm8gbW9kZWwgY2xhc3MgdG8gY29uc3RydWN0LiBEZWNsYXJlIG9uZSB3aXRoIGZhY3RvcnkoXCIke2ZhY3RvcnlOYW1lfVwiLCBNb2RlbENsYXNzLCAuLi4pLmApXG4gIH1cblxuICBpZiAoIShtb2RlbENsYXNzLnByb3RvdHlwZSBpbnN0YW5jZW9mIERhdGFiYXNlUmVjb3JkKSkge1xuICAgIHRocm93IG5ldyBNb2RlbENvbnRyYWN0RXJyb3IoYEZhY3RvcnkgXCIke2ZhY3RvcnlOYW1lfVwiIG1vZGVsICR7bW9kZWxDbGFzcy5uYW1lIHx8IFwiY2xhc3NcIn0gaXMgbm90IGEgc3VwcG9ydGVkIFZlbG9jaW91cyBiYWNrZW5kIHJlY29yZC4gYnVpbGQvY3JlYXRlIHJlcXVpcmUgYW4gaW5pdGlhbGl6ZWQgRGF0YWJhc2VSZWNvcmQgc3ViY2xhc3M7IGdlbmVyYXRlZCBmcm9udGVuZCBtb2RlbHMgYXJlIG5vdCBzdXBwb3J0ZWQgaW4gVjEuYClcbiAgfVxuXG4gIGNvbnN0IGJhY2tlbmRNb2RlbENsYXNzID0gLyoqIEB0eXBlIHt0eXBlb2YgaW1wb3J0KFwiLi4vLi4vZGF0YWJhc2UvcmVjb3JkL2luZGV4LmpzXCIpLmRlZmF1bHR9ICovIChtb2RlbENsYXNzKVxuXG4gIGlmICghYmFja2VuZE1vZGVsQ2xhc3MuaXNJbml0aWFsaXplZCgpKSB7XG4gICAgdGhyb3cgbmV3IE1vZGVsQ29udHJhY3RFcnJvcihgRmFjdG9yeSBcIiR7ZmFjdG9yeU5hbWV9XCIgbW9kZWwgJHtiYWNrZW5kTW9kZWxDbGFzcy5uYW1lfSBoYXMgbm90IGJlZW4gaW5pdGlhbGl6ZWQuIEVuc3VyZSB0aGUgbW9kZWwgY2xhc3MgaXMgaW5pdGlhbGl6ZWQgKGUuZy4gdmlhIGNvbmZpZ3VyYXRpb24uaW5pdGlhbGl6ZSgpL2Vuc3VyZUluaXRpYWxpemVkKSBiZWZvcmUgYnVpbGQvY3JlYXRlLmApXG4gIH1cblxuICByZXR1cm4gLyoqIEB0eXBlIHtuZXcgKGF0dHJpYnV0ZXM/OiBSZWNvcmQ8c3RyaW5nLCBSZXR1cm5UeXBlPHR5cGVvZiBKU09OLnBhcnNlPj4pID0+IGltcG9ydChcIi4uLy4uL2RhdGFiYXNlL3JlY29yZC9pbmRleC5qc1wiKS5kZWZhdWx0fSAqLyAobW9kZWxDbGFzcylcbn1cbiJdfQ==
@@ -9,7 +9,7 @@
9
9
  * @param {{reload?: boolean}} [options] - Options.
10
10
  * @returns {Promise<string[]>} - The loaded file paths, in load order.
11
11
  */
12
- export function loadDefinitions(registry: import("../factory-registry.js").default, target: string | string[], { reload }?: {
12
+ export declare function loadDefinitions(registry: import("../factory-registry.js").default, target: string | string[], { reload }?: {
13
13
  reload?: boolean;
14
14
  }): Promise<string[]>;
15
15
  /**
@@ -20,5 +20,5 @@ export function loadDefinitions(registry: import("../factory-registry.js").defau
20
20
  * @param {string | string[]} target - File path, directory, or list of paths.
21
21
  * @returns {Promise<string[]>} - The reloaded file paths, in load order.
22
22
  */
23
- export function reloadDefinitions(registry: import("../factory-registry.js").default, target: string | string[]): Promise<string[]>;
23
+ export declare function reloadDefinitions(registry: import("../factory-registry.js").default, target: string | string[]): Promise<string[]>;
24
24
  //# sourceMappingURL=load-definitions.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"load-definitions.d.ts","sourceRoot":"","sources":["../../../../../src/testing/factory/node/load-definitions.js"],"names":[],"mappings":"AAwDA;;;;;;;;;;GAUG;AACH,0CALW,OAAO,wBAAwB,EAAE,OAAO,UACxC,MAAM,GAAG,MAAM,EAAE,eACjB;IAAC,MAAM,CAAC,EAAE,OAAO,CAAA;CAAC,GAChB,OAAO,CAAC,MAAM,EAAE,CAAC,CAuB7B;AAED;;;;;;;GAOG;AACH,4CAJW,OAAO,wBAAwB,EAAE,OAAO,UACxC,MAAM,GAAG,MAAM,EAAE,GACf,OAAO,CAAC,MAAM,EAAE,CAAC,CAM7B"}
1
+ {"version":3,"file":"load-definitions.d.ts","sourceRoot":"","sources":["../../../../../src/testing/factory/node/load-definitions.js"],"names":[],"mappings":"AAwDA;;;;;;;;;;GAUG;AACH,wBAAsB,eAAe,CAAC,QAAQ,EALnC,OAAO,wBAAwB,EAAE,OAKE,EAAE,MAAM,EAJ3C,MAAM,GAAG,MAAM,EAI4B,EAAE,EAAC,MAAc,EAAC,AAHrE,CACA,EADQ;IAAC,MAAM,CAAC,EAAE,OAAO,CAAA;CAGiD,GAFhE,OAAO,CAAC,MAAM,EAAE,CAAC,CAuB7B;AAED;;;;;;;GAOG;AACH,wBAAsB,iBAAiB,CAAC,QAAQ,EAJrC,OAAO,wBAAwB,EAAE,OAII,EAAE,MAAM,EAH7C,MAAM,GAAG,MAAM,EAG8B,GAF3C,OAAO,CAAC,MAAM,EAAE,CAAC,CAM7B"}
@@ -1,7 +1,10 @@
1
+ export type SequenceFormatter = (args: {
2
+ value: number;
3
+ }) => (ReturnType<typeof JSON.parse> | Promise<ReturnType<typeof JSON.parse>>);
1
4
  /**
2
5
  * SequenceFormatter type. Receives the synchronously-allocated numeric value and
3
6
  * returns the formatted value (optionally asynchronously).
4
- * @typedef {(args: {value: number}) => (? | Promise<?>)} SequenceFormatter
7
+ * @typedef {(args: {value: number}) => (ReturnType<typeof JSON.parse> | Promise<ReturnType<typeof JSON.parse>>)} SequenceFormatter
5
8
  */
6
9
  /**
7
10
  * A numeric counter sequence. Values are allocated and consumed synchronously
@@ -10,6 +13,16 @@
10
13
  * matching FactoryBot's failed-value-consumption behaviour.
11
14
  */
12
15
  export default class Sequence {
16
+ /** @type {string} - Primary sequence name. */
17
+ name: string;
18
+ /** @type {number} - First value the sequence yields. */
19
+ initial: number;
20
+ /** @type {SequenceFormatter | undefined} - Optional value formatter. */
21
+ formatter: SequenceFormatter | undefined;
22
+ /** @type {string[]} - Names that share this sequence's counter. */
23
+ aliases: string[];
24
+ /** @type {number} - Next value to allocate. */
25
+ _next: number;
13
26
  /**
14
27
  * Builds a sequence.
15
28
  * @param {object} args - Options.
@@ -20,20 +33,10 @@ export default class Sequence {
20
33
  */
21
34
  constructor({ name, initial, formatter, aliases }: {
22
35
  name: string;
23
- initial?: number | undefined;
24
- formatter?: SequenceFormatter | undefined;
25
- aliases?: string[] | undefined;
36
+ initial?: number;
37
+ formatter?: SequenceFormatter;
38
+ aliases?: string[];
26
39
  });
27
- /** @type {string} - Primary sequence name. */
28
- name: string;
29
- /** @type {number} - First value the sequence yields. */
30
- initial: number;
31
- /** @type {SequenceFormatter | undefined} - Optional value formatter. */
32
- formatter: SequenceFormatter | undefined;
33
- /** @type {string[]} - Names that share this sequence's counter. */
34
- aliases: string[];
35
- /** @type {number} - Next value to allocate. */
36
- _next: number;
37
40
  /**
38
41
  * Allocates and consumes the next numeric value synchronously.
39
42
  * @returns {number} - The allocated raw value.
@@ -43,9 +46,9 @@ export default class Sequence {
43
46
  * Advances the sequence and returns the formatted value. The numeric value is
44
47
  * consumed synchronously before awaiting the formatter, so a rejected formatter
45
48
  * still advances the counter.
46
- * @returns {Promise<?>} - The formatted value.
49
+ * @returns {Promise<ReturnType<typeof JSON.parse>>} - The formatted value.
47
50
  */
48
- next(): Promise<unknown>;
51
+ next(): Promise<ReturnType<typeof JSON.parse>>;
49
52
  /**
50
53
  * Returns the value the next `next()` call will allocate without consuming it.
51
54
  * @returns {number} - The upcoming raw value.
@@ -63,11 +66,4 @@ export default class Sequence {
63
66
  */
64
67
  rewind(): void;
65
68
  }
66
- /**
67
- * SequenceFormatter type. Receives the synchronously-allocated numeric value and
68
- * returns the formatted value (optionally asynchronously).
69
- */
70
- export type SequenceFormatter = (args: {
71
- value: number;
72
- }) => (unknown | Promise<unknown>);
73
69
  //# sourceMappingURL=sequence.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"sequence.d.ts","sourceRoot":"","sources":["../../../../src/testing/factory/sequence.js"],"names":[],"mappings":"AAEA;;;;GAIG;AAEH;;;;;GAKG;AACH;IACE;;;;;;;OAOG;IACH,mDALG;QAAqB,IAAI,EAAjB,MAAM;QACQ,OAAO;QACI,SAAS;QAClB,OAAO;KACjC,EAgBA;IAdC,8CAA8C;IAC9C,MADW,MAAM,CACD;IAEhB,wDAAwD;IACxD,SADW,MAAM,CACK;IAEtB,wEAAwE;IACxE,WADW,iBAAiB,GAAG,SAAS,CACd;IAE1B,mEAAmE;IACnE,SADW,MAAM,EAAE,CACG;IAEtB,+CAA+C;IAC/C,OADW,MAAM,CACG;IAGtB;;;OAGG;IACH,aAFa,MAAM,CAQlB;IAED;;;;;OAKG;IACH,QAFa,OAAO,CAAC,OAAC,CAAC,CAQtB;IAED;;;OAGG;IACH,QAFa,MAAM,CAIlB;IAED;;;;OAIG;IACH,WAHW,MAAM,GACJ,IAAI,CAIhB;IAED;;;OAGG;IACH,UAFa,IAAI,CAIhB;CACF;;;;;gCArFY,CAAC,IAAI,EAAE;IAAC,KAAK,EAAE,MAAM,CAAA;CAAC,KAAK,CAAC,OAAC,GAAG,OAAO,CAAC,OAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"sequence.d.ts","sourceRoot":"","sources":["../../../../src/testing/factory/sequence.js"],"names":[],"mappings":"AAKG,YAA+G,iBAAiB,GAAtH,CAAC,IAAI,EAAE;IAAC,KAAK,EAAE,MAAM,CAAA;CAAC,KAAK,CAAC,UAAU,CAAC,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC,UAAU,CAAC,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAmB;AAHnI;;;;GAIG;AAEH;;;;;GAKG;AACH,MAAM,CAAC,OAAO,OAAO,QAAQ;IAUzB,8CAA8C;IACzC,IAAI,EADE,MAAM;IAGjB,wDAAwD;IACnD,OAAO,EADD,MAAM;IAGjB,wEAAwE;IACnE,SAAS,EADH,iBAAiB,GAAG,SAAS;IAGxC,mEAAmE;IAC9D,OAAO,EADD,MAAM,EAAE;IAGnB,+CAA+C;IAC1C,KAAK,EADC,MAAM;IArBnB;;;;;;;OAOG;IACH,YAAY,EAAC,IAAI,EAAE,OAAW,EAAE,SAAS,EAAE,OAAY,EAAC,EALrD;QAAqB,IAAI,EAAjB,MAAM,CACd;QAAsB,OAAO,AAA7B,CACA,EADQ,MAAM,CACd;QAAiC,SAAS,AAA1C,CACA,EADQ,iBAAiB,CACzB;QAAwB,OAAO,AAA/B,CACF,EADU,MAAM,EAAE,CAClB;KACuD,EAevD;IAED;;;OAGG;IACH,SAAS,IAFI,MAAM,CAQlB;IAED;;;;;OAKG;IACG,IAAI,IAFG,OAAO,CAAC,UAAU,CAAC,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,CAQlD;IAED;;;OAGG;IACH,IAAI,IAFS,MAAM,CAIlB;IAED;;;;OAIG;IACH,GAAG,CAAC,KAAK,EAHE,MAGF,GAFI,IAAI,CAIhB;IAED;;;OAGG;IACH,MAAM,IAFO,IAAI,CAIhB;CACF"}
@@ -2,7 +2,7 @@
2
2
  /**
3
3
  * SequenceFormatter type. Receives the synchronously-allocated numeric value and
4
4
  * returns the formatted value (optionally asynchronously).
5
- * @typedef {(args: {value: number}) => (? | Promise<?>)} SequenceFormatter
5
+ * @typedef {(args: {value: number}) => (ReturnType<typeof JSON.parse> | Promise<ReturnType<typeof JSON.parse>>)} SequenceFormatter
6
6
  */
7
7
  /**
8
8
  * A numeric counter sequence. Values are allocated and consumed synchronously
@@ -44,7 +44,7 @@ export default class Sequence {
44
44
  * Advances the sequence and returns the formatted value. The numeric value is
45
45
  * consumed synchronously before awaiting the formatter, so a rejected formatter
46
46
  * still advances the counter.
47
- * @returns {Promise<?>} - The formatted value.
47
+ * @returns {Promise<ReturnType<typeof JSON.parse>>} - The formatted value.
48
48
  */
49
49
  async next() {
50
50
  const value = this._allocate();
@@ -75,4 +75,4 @@ export default class Sequence {
75
75
  this._next = this.initial;
76
76
  }
77
77
  }
78
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VxdWVuY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvdGVzdGluZy9mYWN0b3J5L3NlcXVlbmNlLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFlBQVk7QUFFWjs7OztHQUlHO0FBRUg7Ozs7O0dBS0c7QUFDSCxNQUFNLENBQUMsT0FBTyxPQUFPLFFBQVE7SUFDM0I7Ozs7Ozs7T0FPRztJQUNILFlBQVksRUFBQyxJQUFJLEVBQUUsT0FBTyxHQUFHLENBQUMsRUFBRSxTQUFTLEVBQUUsT0FBTyxHQUFHLEVBQUUsRUFBQztRQUN0RCw4Q0FBOEM7UUFDOUMsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUE7UUFFaEIsd0RBQXdEO1FBQ3hELElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFBO1FBRXRCLHdFQUF3RTtRQUN4RSxJQUFJLENBQUMsU0FBUyxHQUFHLFNBQVMsQ0FBQTtRQUUxQixtRUFBbUU7UUFDbkUsSUFBSSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUE7UUFFdEIsK0NBQStDO1FBQy9DLElBQUksQ0FBQyxLQUFLLEdBQUcsT0FBTyxDQUFBO0lBQ3RCLENBQUM7SUFFRDs7O09BR0c7SUFDSCxTQUFTO1FBQ1AsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQTtRQUV4QixJQUFJLENBQUMsS0FBSyxJQUFJLENBQUMsQ0FBQTtRQUVmLE9BQU8sS0FBSyxDQUFBO0lBQ2QsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsS0FBSyxDQUFDLElBQUk7UUFDUixNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUE7UUFFOUIsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTO1lBQUUsT0FBTyxLQUFLLENBQUE7UUFFakMsT0FBTyxNQUFNLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBQyxLQUFLLEVBQUMsQ0FBQyxDQUFBO0lBQ3RDLENBQUM7SUFFRDs7O09BR0c7SUFDSCxJQUFJO1FBQ0YsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFBO0lBQ25CLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsR0FBRyxDQUFDLEtBQUs7UUFDUCxJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQTtJQUNwQixDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsTUFBTTtRQUNKLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQTtJQUMzQixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBAdHMtY2hlY2tcblxuLyoqXG4gKiBTZXF1ZW5jZUZvcm1hdHRlciB0eXBlLiBSZWNlaXZlcyB0aGUgc3luY2hyb25vdXNseS1hbGxvY2F0ZWQgbnVtZXJpYyB2YWx1ZSBhbmRcbiAqIHJldHVybnMgdGhlIGZvcm1hdHRlZCB2YWx1ZSAob3B0aW9uYWxseSBhc3luY2hyb25vdXNseSkuXG4gKiBAdHlwZWRlZiB7KGFyZ3M6IHt2YWx1ZTogbnVtYmVyfSkgPT4gKD8gfCBQcm9taXNlPD8+KX0gU2VxdWVuY2VGb3JtYXR0ZXJcbiAqL1xuXG4vKipcbiAqIEEgbnVtZXJpYyBjb3VudGVyIHNlcXVlbmNlLiBWYWx1ZXMgYXJlIGFsbG9jYXRlZCBhbmQgY29uc3VtZWQgc3luY2hyb25vdXNseVxuICogYmVmb3JlIHRoZSAocG9zc2libHkgYXN5bmMpIGZvcm1hdHRlciBydW5zLCBzbyBhIHJlamVjdGVkIGZvcm1hdHRlciBzdGlsbFxuICogYWR2YW5jZXMgdGhlIGNvdW50ZXIgYW5kIGNvbmN1cnJlbnQgYFByb21pc2UuYWxsYCBhbGxvY2F0aW9uIG5ldmVyIGNvbGxpZGVzIOKAlFxuICogbWF0Y2hpbmcgRmFjdG9yeUJvdCdzIGZhaWxlZC12YWx1ZS1jb25zdW1wdGlvbiBiZWhhdmlvdXIuXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFNlcXVlbmNlIHtcbiAgLyoqXG4gICAqIEJ1aWxkcyBhIHNlcXVlbmNlLlxuICAgKiBAcGFyYW0ge29iamVjdH0gYXJncyAtIE9wdGlvbnMuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBhcmdzLm5hbWUgLSBQcmltYXJ5IHNlcXVlbmNlIG5hbWUuXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBbYXJncy5pbml0aWFsXSAtIEZpcnN0IHZhbHVlIHRoZSBzZXF1ZW5jZSB5aWVsZHMuIERlZmF1bHRzIHRvIDEuXG4gICAqIEBwYXJhbSB7U2VxdWVuY2VGb3JtYXR0ZXJ9IFthcmdzLmZvcm1hdHRlcl0gLSBPcHRpb25hbCBmb3JtYXR0ZXIgZm9yIHRoZSB2YWx1ZS5cbiAgICogQHBhcmFtIHtzdHJpbmdbXX0gW2FyZ3MuYWxpYXNlc10gLSBBZGRpdGlvbmFsIG5hbWVzIHRoYXQgc2hhcmUgdGhpcyBzZXF1ZW5jZSdzIHN0YXRlLlxuICAgKi9cbiAgY29uc3RydWN0b3Ioe25hbWUsIGluaXRpYWwgPSAxLCBmb3JtYXR0ZXIsIGFsaWFzZXMgPSBbXX0pIHtcbiAgICAvKiogQHR5cGUge3N0cmluZ30gLSBQcmltYXJ5IHNlcXVlbmNlIG5hbWUuICovXG4gICAgdGhpcy5uYW1lID0gbmFtZVxuXG4gICAgLyoqIEB0eXBlIHtudW1iZXJ9IC0gRmlyc3QgdmFsdWUgdGhlIHNlcXVlbmNlIHlpZWxkcy4gKi9cbiAgICB0aGlzLmluaXRpYWwgPSBpbml0aWFsXG5cbiAgICAvKiogQHR5cGUge1NlcXVlbmNlRm9ybWF0dGVyIHwgdW5kZWZpbmVkfSAtIE9wdGlvbmFsIHZhbHVlIGZvcm1hdHRlci4gKi9cbiAgICB0aGlzLmZvcm1hdHRlciA9IGZvcm1hdHRlclxuXG4gICAgLyoqIEB0eXBlIHtzdHJpbmdbXX0gLSBOYW1lcyB0aGF0IHNoYXJlIHRoaXMgc2VxdWVuY2UncyBjb3VudGVyLiAqL1xuICAgIHRoaXMuYWxpYXNlcyA9IGFsaWFzZXNcblxuICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAtIE5leHQgdmFsdWUgdG8gYWxsb2NhdGUuICovXG4gICAgdGhpcy5fbmV4dCA9IGluaXRpYWxcbiAgfVxuXG4gIC8qKlxuICAgKiBBbGxvY2F0ZXMgYW5kIGNvbnN1bWVzIHRoZSBuZXh0IG51bWVyaWMgdmFsdWUgc3luY2hyb25vdXNseS5cbiAgICogQHJldHVybnMge251bWJlcn0gLSBUaGUgYWxsb2NhdGVkIHJhdyB2YWx1ZS5cbiAgICovXG4gIF9hbGxvY2F0ZSgpIHtcbiAgICBjb25zdCB2YWx1ZSA9IHRoaXMuX25leHRcblxuICAgIHRoaXMuX25leHQgKz0gMVxuXG4gICAgcmV0dXJuIHZhbHVlXG4gIH1cblxuICAvKipcbiAgICogQWR2YW5jZXMgdGhlIHNlcXVlbmNlIGFuZCByZXR1cm5zIHRoZSBmb3JtYXR0ZWQgdmFsdWUuIFRoZSBudW1lcmljIHZhbHVlIGlzXG4gICAqIGNvbnN1bWVkIHN5bmNocm9ub3VzbHkgYmVmb3JlIGF3YWl0aW5nIHRoZSBmb3JtYXR0ZXIsIHNvIGEgcmVqZWN0ZWQgZm9ybWF0dGVyXG4gICAqIHN0aWxsIGFkdmFuY2VzIHRoZSBjb3VudGVyLlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTw/Pn0gLSBUaGUgZm9ybWF0dGVkIHZhbHVlLlxuICAgKi9cbiAgYXN5bmMgbmV4dCgpIHtcbiAgICBjb25zdCB2YWx1ZSA9IHRoaXMuX2FsbG9jYXRlKClcblxuICAgIGlmICghdGhpcy5mb3JtYXR0ZXIpIHJldHVybiB2YWx1ZVxuXG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuZm9ybWF0dGVyKHt2YWx1ZX0pXG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgdmFsdWUgdGhlIG5leHQgYG5leHQoKWAgY2FsbCB3aWxsIGFsbG9jYXRlIHdpdGhvdXQgY29uc3VtaW5nIGl0LlxuICAgKiBAcmV0dXJucyB7bnVtYmVyfSAtIFRoZSB1cGNvbWluZyByYXcgdmFsdWUuXG4gICAqL1xuICBwZWVrKCkge1xuICAgIHJldHVybiB0aGlzLl9uZXh0XG4gIH1cblxuICAvKipcbiAgICogU2V0cyB0aGUgbmV4dCB2YWx1ZSB0aGUgc2VxdWVuY2Ugd2lsbCBhbGxvY2F0ZS5cbiAgICogQHBhcmFtIHtudW1iZXJ9IHZhbHVlIC0gTmV4dCByYXcgdmFsdWUuXG4gICAqIEByZXR1cm5zIHt2b2lkfVxuICAgKi9cbiAgc2V0KHZhbHVlKSB7XG4gICAgdGhpcy5fbmV4dCA9IHZhbHVlXG4gIH1cblxuICAvKipcbiAgICogUmVzZXRzIHRoZSBjb3VudGVyIGJhY2sgdG8gaXRzIGluaXRpYWwgdmFsdWUuXG4gICAqIEByZXR1cm5zIHt2b2lkfVxuICAgKi9cbiAgcmV3aW5kKCkge1xuICAgIHRoaXMuX25leHQgPSB0aGlzLmluaXRpYWxcbiAgfVxufVxuIl19
78
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VxdWVuY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvdGVzdGluZy9mYWN0b3J5L3NlcXVlbmNlLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFlBQVk7QUFFWjs7OztHQUlHO0FBRUg7Ozs7O0dBS0c7QUFDSCxNQUFNLENBQUMsT0FBTyxPQUFPLFFBQVE7SUFDM0I7Ozs7Ozs7T0FPRztJQUNILFlBQVksRUFBQyxJQUFJLEVBQUUsT0FBTyxHQUFHLENBQUMsRUFBRSxTQUFTLEVBQUUsT0FBTyxHQUFHLEVBQUUsRUFBQztRQUN0RCw4Q0FBOEM7UUFDOUMsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUE7UUFFaEIsd0RBQXdEO1FBQ3hELElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFBO1FBRXRCLHdFQUF3RTtRQUN4RSxJQUFJLENBQUMsU0FBUyxHQUFHLFNBQVMsQ0FBQTtRQUUxQixtRUFBbUU7UUFDbkUsSUFBSSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUE7UUFFdEIsK0NBQStDO1FBQy9DLElBQUksQ0FBQyxLQUFLLEdBQUcsT0FBTyxDQUFBO0lBQ3RCLENBQUM7SUFFRDs7O09BR0c7SUFDSCxTQUFTO1FBQ1AsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQTtRQUV4QixJQUFJLENBQUMsS0FBSyxJQUFJLENBQUMsQ0FBQTtRQUVmLE9BQU8sS0FBSyxDQUFBO0lBQ2QsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsS0FBSyxDQUFDLElBQUk7UUFDUixNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUE7UUFFOUIsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTO1lBQUUsT0FBTyxLQUFLLENBQUE7UUFFakMsT0FBTyxNQUFNLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBQyxLQUFLLEVBQUMsQ0FBQyxDQUFBO0lBQ3RDLENBQUM7SUFFRDs7O09BR0c7SUFDSCxJQUFJO1FBQ0YsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFBO0lBQ25CLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsR0FBRyxDQUFDLEtBQUs7UUFDUCxJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQTtJQUNwQixDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsTUFBTTtRQUNKLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQTtJQUMzQixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBAdHMtY2hlY2tcblxuLyoqXG4gKiBTZXF1ZW5jZUZvcm1hdHRlciB0eXBlLiBSZWNlaXZlcyB0aGUgc3luY2hyb25vdXNseS1hbGxvY2F0ZWQgbnVtZXJpYyB2YWx1ZSBhbmRcbiAqIHJldHVybnMgdGhlIGZvcm1hdHRlZCB2YWx1ZSAob3B0aW9uYWxseSBhc3luY2hyb25vdXNseSkuXG4gKiBAdHlwZWRlZiB7KGFyZ3M6IHt2YWx1ZTogbnVtYmVyfSkgPT4gKFJldHVyblR5cGU8dHlwZW9mIEpTT04ucGFyc2U+IHwgUHJvbWlzZTxSZXR1cm5UeXBlPHR5cGVvZiBKU09OLnBhcnNlPj4pfSBTZXF1ZW5jZUZvcm1hdHRlclxuICovXG5cbi8qKlxuICogQSBudW1lcmljIGNvdW50ZXIgc2VxdWVuY2UuIFZhbHVlcyBhcmUgYWxsb2NhdGVkIGFuZCBjb25zdW1lZCBzeW5jaHJvbm91c2x5XG4gKiBiZWZvcmUgdGhlIChwb3NzaWJseSBhc3luYykgZm9ybWF0dGVyIHJ1bnMsIHNvIGEgcmVqZWN0ZWQgZm9ybWF0dGVyIHN0aWxsXG4gKiBhZHZhbmNlcyB0aGUgY291bnRlciBhbmQgY29uY3VycmVudCBgUHJvbWlzZS5hbGxgIGFsbG9jYXRpb24gbmV2ZXIgY29sbGlkZXMg4oCUXG4gKiBtYXRjaGluZyBGYWN0b3J5Qm90J3MgZmFpbGVkLXZhbHVlLWNvbnN1bXB0aW9uIGJlaGF2aW91ci5cbiAqL1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgU2VxdWVuY2Uge1xuICAvKipcbiAgICogQnVpbGRzIGEgc2VxdWVuY2UuXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBhcmdzIC0gT3B0aW9ucy5cbiAgICogQHBhcmFtIHtzdHJpbmd9IGFyZ3MubmFtZSAtIFByaW1hcnkgc2VxdWVuY2UgbmFtZS5cbiAgICogQHBhcmFtIHtudW1iZXJ9IFthcmdzLmluaXRpYWxdIC0gRmlyc3QgdmFsdWUgdGhlIHNlcXVlbmNlIHlpZWxkcy4gRGVmYXVsdHMgdG8gMS5cbiAgICogQHBhcmFtIHtTZXF1ZW5jZUZvcm1hdHRlcn0gW2FyZ3MuZm9ybWF0dGVyXSAtIE9wdGlvbmFsIGZvcm1hdHRlciBmb3IgdGhlIHZhbHVlLlxuICAgKiBAcGFyYW0ge3N0cmluZ1tdfSBbYXJncy5hbGlhc2VzXSAtIEFkZGl0aW9uYWwgbmFtZXMgdGhhdCBzaGFyZSB0aGlzIHNlcXVlbmNlJ3Mgc3RhdGUuXG4gICAqL1xuICBjb25zdHJ1Y3Rvcih7bmFtZSwgaW5pdGlhbCA9IDEsIGZvcm1hdHRlciwgYWxpYXNlcyA9IFtdfSkge1xuICAgIC8qKiBAdHlwZSB7c3RyaW5nfSAtIFByaW1hcnkgc2VxdWVuY2UgbmFtZS4gKi9cbiAgICB0aGlzLm5hbWUgPSBuYW1lXG5cbiAgICAvKiogQHR5cGUge251bWJlcn0gLSBGaXJzdCB2YWx1ZSB0aGUgc2VxdWVuY2UgeWllbGRzLiAqL1xuICAgIHRoaXMuaW5pdGlhbCA9IGluaXRpYWxcblxuICAgIC8qKiBAdHlwZSB7U2VxdWVuY2VGb3JtYXR0ZXIgfCB1bmRlZmluZWR9IC0gT3B0aW9uYWwgdmFsdWUgZm9ybWF0dGVyLiAqL1xuICAgIHRoaXMuZm9ybWF0dGVyID0gZm9ybWF0dGVyXG5cbiAgICAvKiogQHR5cGUge3N0cmluZ1tdfSAtIE5hbWVzIHRoYXQgc2hhcmUgdGhpcyBzZXF1ZW5jZSdzIGNvdW50ZXIuICovXG4gICAgdGhpcy5hbGlhc2VzID0gYWxpYXNlc1xuXG4gICAgLyoqIEB0eXBlIHtudW1iZXJ9IC0gTmV4dCB2YWx1ZSB0byBhbGxvY2F0ZS4gKi9cbiAgICB0aGlzLl9uZXh0ID0gaW5pdGlhbFxuICB9XG5cbiAgLyoqXG4gICAqIEFsbG9jYXRlcyBhbmQgY29uc3VtZXMgdGhlIG5leHQgbnVtZXJpYyB2YWx1ZSBzeW5jaHJvbm91c2x5LlxuICAgKiBAcmV0dXJucyB7bnVtYmVyfSAtIFRoZSBhbGxvY2F0ZWQgcmF3IHZhbHVlLlxuICAgKi9cbiAgX2FsbG9jYXRlKCkge1xuICAgIGNvbnN0IHZhbHVlID0gdGhpcy5fbmV4dFxuXG4gICAgdGhpcy5fbmV4dCArPSAxXG5cbiAgICByZXR1cm4gdmFsdWVcbiAgfVxuXG4gIC8qKlxuICAgKiBBZHZhbmNlcyB0aGUgc2VxdWVuY2UgYW5kIHJldHVybnMgdGhlIGZvcm1hdHRlZCB2YWx1ZS4gVGhlIG51bWVyaWMgdmFsdWUgaXNcbiAgICogY29uc3VtZWQgc3luY2hyb25vdXNseSBiZWZvcmUgYXdhaXRpbmcgdGhlIGZvcm1hdHRlciwgc28gYSByZWplY3RlZCBmb3JtYXR0ZXJcbiAgICogc3RpbGwgYWR2YW5jZXMgdGhlIGNvdW50ZXIuXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPFJldHVyblR5cGU8dHlwZW9mIEpTT04ucGFyc2U+Pn0gLSBUaGUgZm9ybWF0dGVkIHZhbHVlLlxuICAgKi9cbiAgYXN5bmMgbmV4dCgpIHtcbiAgICBjb25zdCB2YWx1ZSA9IHRoaXMuX2FsbG9jYXRlKClcblxuICAgIGlmICghdGhpcy5mb3JtYXR0ZXIpIHJldHVybiB2YWx1ZVxuXG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuZm9ybWF0dGVyKHt2YWx1ZX0pXG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgdmFsdWUgdGhlIG5leHQgYG5leHQoKWAgY2FsbCB3aWxsIGFsbG9jYXRlIHdpdGhvdXQgY29uc3VtaW5nIGl0LlxuICAgKiBAcmV0dXJucyB7bnVtYmVyfSAtIFRoZSB1cGNvbWluZyByYXcgdmFsdWUuXG4gICAqL1xuICBwZWVrKCkge1xuICAgIHJldHVybiB0aGlzLl9uZXh0XG4gIH1cblxuICAvKipcbiAgICogU2V0cyB0aGUgbmV4dCB2YWx1ZSB0aGUgc2VxdWVuY2Ugd2lsbCBhbGxvY2F0ZS5cbiAgICogQHBhcmFtIHtudW1iZXJ9IHZhbHVlIC0gTmV4dCByYXcgdmFsdWUuXG4gICAqIEByZXR1cm5zIHt2b2lkfVxuICAgKi9cbiAgc2V0KHZhbHVlKSB7XG4gICAgdGhpcy5fbmV4dCA9IHZhbHVlXG4gIH1cblxuICAvKipcbiAgICogUmVzZXRzIHRoZSBjb3VudGVyIGJhY2sgdG8gaXRzIGluaXRpYWwgdmFsdWUuXG4gICAqIEByZXR1cm5zIHt2b2lkfVxuICAgKi9cbiAgcmV3aW5kKCkge1xuICAgIHRoaXMuX25leHQgPSB0aGlzLmluaXRpYWxcbiAgfVxufVxuIl19
@@ -1,3 +1,4 @@
1
+ import BaseStrategy from "./base.js";
1
2
  /**
2
3
  * The `attributesFor` strategy. It resolves scalar/lazy attributes (and any
3
4
  * transients they depend on) but never initializes the model, runs lifecycle
@@ -10,12 +11,11 @@ export default class AttributesForStrategy extends BaseStrategy {
10
11
  * @param {object} args - Options.
11
12
  * @param {import("../factory-registry.js").default} args.registry - Owning registry.
12
13
  * @param {import("../factory-runner.js").CompiledPlan} args.plan - Compiled plan.
13
- * @returns {Promise<Record<string, ?>>} - The resolved attributes.
14
+ * @returns {Promise<Record<string, ReturnType<typeof JSON.parse>>>} - The resolved attributes.
14
15
  */
15
16
  run({ registry, plan }: {
16
17
  registry: import("../factory-registry.js").default;
17
18
  plan: import("../factory-runner.js").CompiledPlan;
18
- }): Promise<Record<string, unknown>>;
19
+ }): Promise<Record<string, ReturnType<typeof JSON.parse>>>;
19
20
  }
20
- import BaseStrategy from "./base.js";
21
21
  //# sourceMappingURL=attributes-for.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"attributes-for.d.ts","sourceRoot":"","sources":["../../../../../src/testing/factory/strategies/attributes-for.js"],"names":[],"mappings":"AAIA;;;;;GAKG;AACH;IACE;;;;;;OAMG;IACH,wBAJG;QAAuD,QAAQ,EAAvD,OAAO,wBAAwB,EAAE,OAAO;QACU,IAAI,EAAtD,OAAO,sBAAsB,EAAE,YAAY;KACnD,GAAU,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAC,CAAC,CAAC,CAMtC;CACF;yBArBwB,WAAW"}
1
+ {"version":3,"file":"attributes-for.d.ts","sourceRoot":"","sources":["../../../../../src/testing/factory/strategies/attributes-for.js"],"names":[],"mappings":"AAEA,OAAO,YAAY,MAAM,WAAW,CAAA;AAEpC;;;;;GAKG;AACH,MAAM,CAAC,OAAO,OAAO,qBAAsB,SAAQ,YAAY;IAC7D;;;;;;OAMG;IACG,GAAG,CAAC,EAAC,QAAQ,EAAE,IAAI,EAAC,EAJvB;QAAuD,QAAQ,EAAvD,OAAO,wBAAwB,EAAE,OAAO,CAChD;QAA0D,IAAI,EAAtD,OAAO,sBAAsB,EAAE,YAAY,CACnD;KAEuB,GAFb,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAMlE;CACF"}