velocious 1.0.428 → 1.0.430

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 (933) hide show
  1. package/README.md +2 -0
  2. package/build/src/application.d.ts +96 -9
  3. package/build/src/application.d.ts.map +1 -1
  4. package/build/src/application.js +127 -28
  5. package/build/src/authorization/ability.d.ts +72 -31
  6. package/build/src/authorization/ability.d.ts.map +1 -1
  7. package/build/src/authorization/ability.js +59 -22
  8. package/build/src/authorization/base-resource.d.ts +47 -20
  9. package/build/src/authorization/base-resource.d.ts.map +1 -1
  10. package/build/src/authorization/base-resource.js +43 -14
  11. package/build/src/background-jobs/client.d.ts +4 -2
  12. package/build/src/background-jobs/client.d.ts.map +1 -1
  13. package/build/src/background-jobs/client.js +4 -2
  14. package/build/src/background-jobs/cron-expression.d.ts +9 -5
  15. package/build/src/background-jobs/cron-expression.d.ts.map +1 -1
  16. package/build/src/background-jobs/cron-expression.js +16 -6
  17. package/build/src/background-jobs/forked-runner-child.js +12 -5
  18. package/build/src/background-jobs/job-registry.d.ts +7 -1
  19. package/build/src/background-jobs/job-registry.d.ts.map +1 -1
  20. package/build/src/background-jobs/job-registry.js +8 -2
  21. package/build/src/background-jobs/job-runner.d.ts +1 -0
  22. package/build/src/background-jobs/job-runner.d.ts.map +1 -1
  23. package/build/src/background-jobs/job-runner.js +8 -3
  24. package/build/src/background-jobs/job.d.ts +12 -8
  25. package/build/src/background-jobs/job.d.ts.map +1 -1
  26. package/build/src/background-jobs/job.js +12 -6
  27. package/build/src/background-jobs/json-socket.d.ts +17 -5
  28. package/build/src/background-jobs/json-socket.d.ts.map +1 -1
  29. package/build/src/background-jobs/json-socket.js +18 -6
  30. package/build/src/background-jobs/main.d.ts +118 -32
  31. package/build/src/background-jobs/main.d.ts.map +1 -1
  32. package/build/src/background-jobs/main.js +123 -35
  33. package/build/src/background-jobs/normalize-error.d.ts +2 -1
  34. package/build/src/background-jobs/normalize-error.d.ts.map +1 -1
  35. package/build/src/background-jobs/normalize-error.js +5 -3
  36. package/build/src/background-jobs/scheduler.d.ts +31 -10
  37. package/build/src/background-jobs/scheduler.d.ts.map +1 -1
  38. package/build/src/background-jobs/scheduler.js +33 -11
  39. package/build/src/background-jobs/socket-request.d.ts +2 -0
  40. package/build/src/background-jobs/socket-request.d.ts.map +1 -1
  41. package/build/src/background-jobs/socket-request.js +11 -3
  42. package/build/src/background-jobs/status-reporter.d.ts +5 -2
  43. package/build/src/background-jobs/status-reporter.d.ts.map +1 -1
  44. package/build/src/background-jobs/status-reporter.js +6 -3
  45. package/build/src/background-jobs/store.d.ts +57 -19
  46. package/build/src/background-jobs/store.d.ts.map +1 -1
  47. package/build/src/background-jobs/store.js +70 -20
  48. package/build/src/background-jobs/types.d.ts +7 -7
  49. package/build/src/background-jobs/types.d.ts.map +1 -1
  50. package/build/src/background-jobs/types.js +6 -6
  51. package/build/src/background-jobs/web/authorization.d.ts.map +1 -1
  52. package/build/src/background-jobs/web/authorization.js +3 -1
  53. package/build/src/background-jobs/web/controller.d.ts +40 -14
  54. package/build/src/background-jobs/web/controller.d.ts.map +1 -1
  55. package/build/src/background-jobs/web/controller.js +46 -15
  56. package/build/src/background-jobs/web/registry.d.ts +5 -0
  57. package/build/src/background-jobs/web/registry.d.ts.map +1 -1
  58. package/build/src/background-jobs/web/registry.js +4 -1
  59. package/build/src/background-jobs/worker.d.ts +41 -8
  60. package/build/src/background-jobs/worker.d.ts.map +1 -1
  61. package/build/src/background-jobs/worker.js +64 -16
  62. package/build/src/beacon/client.d.ts +39 -12
  63. package/build/src/beacon/client.d.ts.map +1 -1
  64. package/build/src/beacon/client.js +45 -15
  65. package/build/src/beacon/in-process-broker.d.ts +4 -0
  66. package/build/src/beacon/in-process-broker.d.ts.map +1 -1
  67. package/build/src/beacon/in-process-broker.js +8 -3
  68. package/build/src/beacon/in-process-client.d.ts +28 -9
  69. package/build/src/beacon/in-process-client.d.ts.map +1 -1
  70. package/build/src/beacon/in-process-client.js +27 -9
  71. package/build/src/beacon/server.d.ts +13 -2
  72. package/build/src/beacon/server.d.ts.map +1 -1
  73. package/build/src/beacon/server.js +21 -5
  74. package/build/src/beacon/types.d.ts +3 -3
  75. package/build/src/beacon/types.d.ts.map +1 -1
  76. package/build/src/beacon/types.js +2 -2
  77. package/build/src/cli/base-command.d.ts +18 -4
  78. package/build/src/cli/base-command.d.ts.map +1 -1
  79. package/build/src/cli/base-command.js +15 -4
  80. package/build/src/cli/browser-cli.d.ts +3 -0
  81. package/build/src/cli/browser-cli.d.ts.map +1 -1
  82. package/build/src/cli/browser-cli.js +7 -2
  83. package/build/src/cli/commands/background-jobs-main.d.ts +0 -1
  84. package/build/src/cli/commands/background-jobs-main.d.ts.map +1 -1
  85. package/build/src/cli/commands/background-jobs-runner.d.ts +0 -1
  86. package/build/src/cli/commands/background-jobs-runner.d.ts.map +1 -1
  87. package/build/src/cli/commands/background-jobs-worker.d.ts +0 -1
  88. package/build/src/cli/commands/background-jobs-worker.d.ts.map +1 -1
  89. package/build/src/cli/commands/beacon.d.ts +0 -1
  90. package/build/src/cli/commands/beacon.d.ts.map +1 -1
  91. package/build/src/cli/commands/console.d.ts +0 -2
  92. package/build/src/cli/commands/console.d.ts.map +1 -1
  93. package/build/src/cli/commands/console.js +5 -2
  94. package/build/src/cli/commands/db/base-command.d.ts +11 -2
  95. package/build/src/cli/commands/db/base-command.d.ts.map +1 -1
  96. package/build/src/cli/commands/db/base-command.js +12 -3
  97. package/build/src/cli/commands/db/create.d.ts +3 -0
  98. package/build/src/cli/commands/db/create.d.ts.map +1 -1
  99. package/build/src/cli/commands/db/create.js +4 -1
  100. package/build/src/cli/commands/db/drop.d.ts +3 -0
  101. package/build/src/cli/commands/db/drop.d.ts.map +1 -1
  102. package/build/src/cli/commands/db/drop.js +4 -1
  103. package/build/src/cli/commands/db/schema/dump.d.ts +0 -2
  104. package/build/src/cli/commands/db/schema/dump.d.ts.map +1 -1
  105. package/build/src/cli/commands/db/schema/dump.js +5 -2
  106. package/build/src/cli/commands/db/schema/load.d.ts +0 -2
  107. package/build/src/cli/commands/db/schema/load.d.ts.map +1 -1
  108. package/build/src/cli/commands/db/schema/load.js +5 -2
  109. package/build/src/cli/commands/db/seed.d.ts +0 -2
  110. package/build/src/cli/commands/db/seed.d.ts.map +1 -1
  111. package/build/src/cli/commands/db/seed.js +5 -2
  112. package/build/src/cli/commands/db/tenants/check.d.ts +4 -1
  113. package/build/src/cli/commands/db/tenants/check.d.ts.map +1 -1
  114. package/build/src/cli/commands/db/tenants/check.js +5 -2
  115. package/build/src/cli/commands/db/tenants/create.d.ts +4 -1
  116. package/build/src/cli/commands/db/tenants/create.d.ts.map +1 -1
  117. package/build/src/cli/commands/db/tenants/create.js +5 -2
  118. package/build/src/cli/commands/db/tenants/migrate.d.ts +4 -1
  119. package/build/src/cli/commands/db/tenants/migrate.d.ts.map +1 -1
  120. package/build/src/cli/commands/db/tenants/migrate.js +5 -2
  121. package/build/src/cli/commands/destroy/migration.d.ts +0 -1
  122. package/build/src/cli/commands/destroy/migration.d.ts.map +1 -1
  123. package/build/src/cli/commands/generate/base-models.d.ts +0 -1
  124. package/build/src/cli/commands/generate/base-models.d.ts.map +1 -1
  125. package/build/src/cli/commands/generate/frontend-models.d.ts +0 -2
  126. package/build/src/cli/commands/generate/frontend-models.d.ts.map +1 -1
  127. package/build/src/cli/commands/generate/frontend-models.js +5 -2
  128. package/build/src/cli/commands/generate/migration.d.ts +0 -1
  129. package/build/src/cli/commands/generate/migration.d.ts.map +1 -1
  130. package/build/src/cli/commands/generate/model.d.ts +0 -1
  131. package/build/src/cli/commands/generate/model.d.ts.map +1 -1
  132. package/build/src/cli/commands/init.d.ts +0 -1
  133. package/build/src/cli/commands/init.d.ts.map +1 -1
  134. package/build/src/cli/commands/routes.d.ts +0 -1
  135. package/build/src/cli/commands/routes.d.ts.map +1 -1
  136. package/build/src/cli/commands/run-script.d.ts +0 -2
  137. package/build/src/cli/commands/run-script.d.ts.map +1 -1
  138. package/build/src/cli/commands/run-script.js +5 -2
  139. package/build/src/cli/commands/runner.d.ts +0 -2
  140. package/build/src/cli/commands/runner.d.ts.map +1 -1
  141. package/build/src/cli/commands/runner.js +5 -2
  142. package/build/src/cli/commands/server.d.ts +0 -1
  143. package/build/src/cli/commands/server.d.ts.map +1 -1
  144. package/build/src/cli/commands/test.d.ts +0 -1
  145. package/build/src/cli/commands/test.d.ts.map +1 -1
  146. package/build/src/cli/index.d.ts +18 -5
  147. package/build/src/cli/index.d.ts.map +1 -1
  148. package/build/src/cli/index.js +25 -8
  149. package/build/src/cli/tenant-database-command-helper.d.ts +24 -9
  150. package/build/src/cli/tenant-database-command-helper.d.ts.map +1 -1
  151. package/build/src/cli/tenant-database-command-helper.js +30 -11
  152. package/build/src/cli/use-browser-cli.d.ts +1 -0
  153. package/build/src/cli/use-browser-cli.d.ts.map +1 -1
  154. package/build/src/cli/use-browser-cli.js +5 -2
  155. package/build/src/configuration-resolver.d.ts +1 -0
  156. package/build/src/configuration-resolver.d.ts.map +1 -1
  157. package/build/src/configuration-resolver.js +2 -1
  158. package/build/src/configuration-types.d.ts +44 -44
  159. package/build/src/configuration-types.d.ts.map +1 -1
  160. package/build/src/configuration-types.js +27 -27
  161. package/build/src/configuration.d.ts +350 -114
  162. package/build/src/configuration.d.ts.map +1 -1
  163. package/build/src/configuration.js +416 -128
  164. package/build/src/controller.d.ts +67 -18
  165. package/build/src/controller.d.ts.map +1 -1
  166. package/build/src/controller.js +88 -23
  167. package/build/src/current-configuration.d.ts +2 -0
  168. package/build/src/current-configuration.d.ts.map +1 -1
  169. package/build/src/current-configuration.js +6 -2
  170. package/build/src/current.d.ts +16 -9
  171. package/build/src/current.d.ts.map +1 -1
  172. package/build/src/current.js +15 -8
  173. package/build/src/database/annotations-async-hooks.js +13 -6
  174. package/build/src/database/annotations.d.ts +7 -1
  175. package/build/src/database/annotations.d.ts.map +1 -1
  176. package/build/src/database/annotations.js +12 -5
  177. package/build/src/database/drivers/base-column.d.ts +21 -3
  178. package/build/src/database/drivers/base-column.d.ts.map +1 -1
  179. package/build/src/database/drivers/base-column.js +21 -3
  180. package/build/src/database/drivers/base-columns-index.d.ts +9 -0
  181. package/build/src/database/drivers/base-columns-index.d.ts.map +1 -1
  182. package/build/src/database/drivers/base-columns-index.js +10 -1
  183. package/build/src/database/drivers/base-foreign-key.d.ts +15 -3
  184. package/build/src/database/drivers/base-foreign-key.d.ts.map +1 -1
  185. package/build/src/database/drivers/base-foreign-key.js +15 -3
  186. package/build/src/database/drivers/base-table.d.ts +16 -3
  187. package/build/src/database/drivers/base-table.d.ts.map +1 -1
  188. package/build/src/database/drivers/base-table.js +16 -3
  189. package/build/src/database/drivers/base.d.ts +174 -37
  190. package/build/src/database/drivers/base.d.ts.map +1 -1
  191. package/build/src/database/drivers/base.js +156 -40
  192. package/build/src/database/drivers/mssql/column.d.ts +3 -2
  193. package/build/src/database/drivers/mssql/column.d.ts.map +1 -1
  194. package/build/src/database/drivers/mssql/column.js +3 -2
  195. package/build/src/database/drivers/mssql/index.d.ts +5 -6
  196. package/build/src/database/drivers/mssql/index.d.ts.map +1 -1
  197. package/build/src/database/drivers/mssql/index.js +38 -7
  198. package/build/src/database/drivers/mssql/options.d.ts +1 -0
  199. package/build/src/database/drivers/mssql/options.d.ts.map +1 -1
  200. package/build/src/database/drivers/mssql/options.js +8 -2
  201. package/build/src/database/drivers/mssql/sql/create-database.d.ts +1 -0
  202. package/build/src/database/drivers/mssql/sql/create-database.d.ts.map +1 -1
  203. package/build/src/database/drivers/mssql/sql/create-database.js +2 -1
  204. package/build/src/database/drivers/mssql/sql/drop-database.d.ts.map +1 -1
  205. package/build/src/database/drivers/mssql/sql/drop-database.js +2 -1
  206. package/build/src/database/drivers/mssql/structure-sql.d.ts +5 -2
  207. package/build/src/database/drivers/mssql/structure-sql.d.ts.map +1 -1
  208. package/build/src/database/drivers/mssql/structure-sql.js +5 -2
  209. package/build/src/database/drivers/mssql/table.d.ts +1 -0
  210. package/build/src/database/drivers/mssql/table.d.ts.map +1 -1
  211. package/build/src/database/drivers/mssql/table.js +9 -4
  212. package/build/src/database/drivers/mysql/column.d.ts +3 -2
  213. package/build/src/database/drivers/mysql/column.d.ts.map +1 -1
  214. package/build/src/database/drivers/mysql/column.js +4 -3
  215. package/build/src/database/drivers/mysql/index.d.ts +11 -3
  216. package/build/src/database/drivers/mysql/index.d.ts.map +1 -1
  217. package/build/src/database/drivers/mysql/index.js +54 -10
  218. package/build/src/database/drivers/mysql/options.d.ts +1 -0
  219. package/build/src/database/drivers/mysql/options.d.ts.map +1 -1
  220. package/build/src/database/drivers/mysql/options.js +4 -2
  221. package/build/src/database/drivers/mysql/query.d.ts +3 -2
  222. package/build/src/database/drivers/mysql/query.d.ts.map +1 -1
  223. package/build/src/database/drivers/mysql/query.js +6 -3
  224. package/build/src/database/drivers/mysql/sql/create-database.d.ts.map +1 -1
  225. package/build/src/database/drivers/mysql/sql/create-database.js +3 -1
  226. package/build/src/database/drivers/mysql/structure-sql.d.ts +7 -2
  227. package/build/src/database/drivers/mysql/structure-sql.d.ts.map +1 -1
  228. package/build/src/database/drivers/mysql/structure-sql.js +7 -2
  229. package/build/src/database/drivers/mysql/table.d.ts +1 -0
  230. package/build/src/database/drivers/mysql/table.d.ts.map +1 -1
  231. package/build/src/database/drivers/mysql/table.js +7 -3
  232. package/build/src/database/drivers/pgsql/column.d.ts +3 -2
  233. package/build/src/database/drivers/pgsql/column.d.ts.map +1 -1
  234. package/build/src/database/drivers/pgsql/column.js +3 -2
  235. package/build/src/database/drivers/pgsql/index.d.ts +1 -1
  236. package/build/src/database/drivers/pgsql/index.d.ts.map +1 -1
  237. package/build/src/database/drivers/pgsql/index.js +36 -11
  238. package/build/src/database/drivers/pgsql/options.d.ts +2 -0
  239. package/build/src/database/drivers/pgsql/options.d.ts.map +1 -1
  240. package/build/src/database/drivers/pgsql/options.js +3 -1
  241. package/build/src/database/drivers/pgsql/structure-sql.d.ts +5 -2
  242. package/build/src/database/drivers/pgsql/structure-sql.d.ts.map +1 -1
  243. package/build/src/database/drivers/pgsql/structure-sql.js +5 -2
  244. package/build/src/database/drivers/pgsql/table.d.ts +1 -0
  245. package/build/src/database/drivers/pgsql/table.d.ts.map +1 -1
  246. package/build/src/database/drivers/pgsql/table.js +6 -2
  247. package/build/src/database/drivers/sqlite/base.d.ts +15 -5
  248. package/build/src/database/drivers/sqlite/base.d.ts.map +1 -1
  249. package/build/src/database/drivers/sqlite/base.js +79 -27
  250. package/build/src/database/drivers/sqlite/column.d.ts +3 -2
  251. package/build/src/database/drivers/sqlite/column.d.ts.map +1 -1
  252. package/build/src/database/drivers/sqlite/column.js +3 -2
  253. package/build/src/database/drivers/sqlite/connection-sql-js.d.ts +4 -2
  254. package/build/src/database/drivers/sqlite/connection-sql-js.d.ts.map +1 -1
  255. package/build/src/database/drivers/sqlite/connection-sql-js.js +4 -2
  256. package/build/src/database/drivers/sqlite/foreign-key.d.ts +3 -2
  257. package/build/src/database/drivers/sqlite/foreign-key.d.ts.map +1 -1
  258. package/build/src/database/drivers/sqlite/foreign-key.js +3 -2
  259. package/build/src/database/drivers/sqlite/index.d.ts +18 -5
  260. package/build/src/database/drivers/sqlite/index.d.ts.map +1 -1
  261. package/build/src/database/drivers/sqlite/index.js +40 -16
  262. package/build/src/database/drivers/sqlite/index.native.d.ts +1 -1
  263. package/build/src/database/drivers/sqlite/index.native.d.ts.map +1 -1
  264. package/build/src/database/drivers/sqlite/index.native.js +6 -3
  265. package/build/src/database/drivers/sqlite/index.web.d.ts +16 -4
  266. package/build/src/database/drivers/sqlite/index.web.d.ts.map +1 -1
  267. package/build/src/database/drivers/sqlite/index.web.js +17 -7
  268. package/build/src/database/drivers/sqlite/options.d.ts +2 -0
  269. package/build/src/database/drivers/sqlite/options.d.ts.map +1 -1
  270. package/build/src/database/drivers/sqlite/options.js +3 -1
  271. package/build/src/database/drivers/sqlite/query.d.ts +3 -2
  272. package/build/src/database/drivers/sqlite/query.d.ts.map +1 -1
  273. package/build/src/database/drivers/sqlite/query.js +6 -3
  274. package/build/src/database/drivers/sqlite/query.native.d.ts +2 -2
  275. package/build/src/database/drivers/sqlite/query.native.d.ts.map +1 -1
  276. package/build/src/database/drivers/sqlite/query.native.js +3 -3
  277. package/build/src/database/drivers/sqlite/query.web.d.ts +3 -2
  278. package/build/src/database/drivers/sqlite/query.web.d.ts.map +1 -1
  279. package/build/src/database/drivers/sqlite/query.web.js +6 -3
  280. package/build/src/database/drivers/sqlite/sql/alter-table.d.ts.map +1 -1
  281. package/build/src/database/drivers/sqlite/sql/alter-table.js +9 -3
  282. package/build/src/database/drivers/sqlite/structure-sql.d.ts +2 -0
  283. package/build/src/database/drivers/sqlite/structure-sql.d.ts.map +1 -1
  284. package/build/src/database/drivers/sqlite/structure-sql.js +3 -1
  285. package/build/src/database/drivers/sqlite/table-rebuilder.d.ts +2 -0
  286. package/build/src/database/drivers/sqlite/table-rebuilder.d.ts.map +1 -1
  287. package/build/src/database/drivers/sqlite/table-rebuilder.js +3 -1
  288. package/build/src/database/drivers/sqlite/table.d.ts +2 -0
  289. package/build/src/database/drivers/sqlite/table.d.ts.map +1 -1
  290. package/build/src/database/drivers/sqlite/table.js +14 -4
  291. package/build/src/database/drivers/structure-sql/utils.d.ts +2 -0
  292. package/build/src/database/drivers/structure-sql/utils.d.ts.map +1 -1
  293. package/build/src/database/drivers/structure-sql/utils.js +3 -1
  294. package/build/src/database/handler.d.ts +1 -0
  295. package/build/src/database/handler.d.ts.map +1 -1
  296. package/build/src/database/handler.js +2 -1
  297. package/build/src/database/initializer-from-require-context.d.ts +8 -0
  298. package/build/src/database/initializer-from-require-context.d.ts.map +1 -1
  299. package/build/src/database/initializer-from-require-context.js +4 -1
  300. package/build/src/database/migration/index.d.ts +40 -5
  301. package/build/src/database/migration/index.d.ts.map +1 -1
  302. package/build/src/database/migration/index.js +34 -6
  303. package/build/src/database/migrator/files-finder.d.ts +2 -0
  304. package/build/src/database/migrator/files-finder.d.ts.map +1 -1
  305. package/build/src/database/migrator/files-finder.js +6 -2
  306. package/build/src/database/migrator.d.ts +29 -4
  307. package/build/src/database/migrator.d.ts.map +1 -1
  308. package/build/src/database/migrator.js +45 -10
  309. package/build/src/database/pool/async-tracked-multi-connection.d.ts +125 -31
  310. package/build/src/database/pool/async-tracked-multi-connection.d.ts.map +1 -1
  311. package/build/src/database/pool/async-tracked-multi-connection.js +189 -52
  312. package/build/src/database/pool/base-methods-forward.d.ts +1 -0
  313. package/build/src/database/pool/base-methods-forward.d.ts.map +1 -1
  314. package/build/src/database/pool/base-methods-forward.js +12 -3
  315. package/build/src/database/pool/base.d.ts +39 -7
  316. package/build/src/database/pool/base.d.ts.map +1 -1
  317. package/build/src/database/pool/base.js +59 -18
  318. package/build/src/database/pool/single-multi-use.d.ts +1 -0
  319. package/build/src/database/pool/single-multi-use.d.ts.map +1 -1
  320. package/build/src/database/pool/single-multi-use.js +16 -4
  321. package/build/src/database/query/alter-table-base.d.ts +1 -0
  322. package/build/src/database/query/alter-table-base.d.ts.map +1 -1
  323. package/build/src/database/query/alter-table-base.js +3 -1
  324. package/build/src/database/query/base.d.ts +3 -0
  325. package/build/src/database/query/base.d.ts.map +1 -1
  326. package/build/src/database/query/base.js +4 -1
  327. package/build/src/database/query/create-database-base.d.ts +5 -0
  328. package/build/src/database/query/create-database-base.d.ts.map +1 -1
  329. package/build/src/database/query/create-database-base.js +4 -1
  330. package/build/src/database/query/create-index-base.d.ts +5 -0
  331. package/build/src/database/query/create-index-base.d.ts.map +1 -1
  332. package/build/src/database/query/create-index-base.js +4 -1
  333. package/build/src/database/query/create-table-base.d.ts +2 -0
  334. package/build/src/database/query/create-table-base.d.ts.map +1 -1
  335. package/build/src/database/query/create-table-base.js +3 -1
  336. package/build/src/database/query/delete-base.d.ts +3 -2
  337. package/build/src/database/query/delete-base.d.ts.map +1 -1
  338. package/build/src/database/query/delete-base.js +3 -2
  339. package/build/src/database/query/drop-database-base.d.ts +5 -0
  340. package/build/src/database/query/drop-database-base.d.ts.map +1 -1
  341. package/build/src/database/query/drop-database-base.js +4 -1
  342. package/build/src/database/query/drop-table-base.d.ts +1 -0
  343. package/build/src/database/query/drop-table-base.d.ts.map +1 -1
  344. package/build/src/database/query/drop-table-base.js +3 -1
  345. package/build/src/database/query/from-base.d.ts +6 -1
  346. package/build/src/database/query/from-base.d.ts.map +1 -1
  347. package/build/src/database/query/from-base.js +7 -2
  348. package/build/src/database/query/from-plain.d.ts +1 -0
  349. package/build/src/database/query/from-plain.d.ts.map +1 -1
  350. package/build/src/database/query/from-plain.js +2 -1
  351. package/build/src/database/query/from-table.d.ts +1 -0
  352. package/build/src/database/query/from-table.d.ts.map +1 -1
  353. package/build/src/database/query/from-table.js +2 -1
  354. package/build/src/database/query/index.d.ts +72 -12
  355. package/build/src/database/query/index.d.ts.map +1 -1
  356. package/build/src/database/query/index.js +79 -19
  357. package/build/src/database/query/insert-base.d.ts +13 -8
  358. package/build/src/database/query/insert-base.d.ts.map +1 -1
  359. package/build/src/database/query/insert-base.js +10 -5
  360. package/build/src/database/query/join-base.d.ts +4 -0
  361. package/build/src/database/query/join-base.d.ts.map +1 -1
  362. package/build/src/database/query/join-base.js +5 -1
  363. package/build/src/database/query/join-object.d.ts +11 -0
  364. package/build/src/database/query/join-object.d.ts.map +1 -1
  365. package/build/src/database/query/join-object.js +15 -4
  366. package/build/src/database/query/join-plain.d.ts +1 -0
  367. package/build/src/database/query/join-plain.d.ts.map +1 -1
  368. package/build/src/database/query/join-plain.js +2 -1
  369. package/build/src/database/query/join-tracker.d.ts +7 -0
  370. package/build/src/database/query/join-tracker.d.ts.map +1 -1
  371. package/build/src/database/query/join-tracker.js +8 -1
  372. package/build/src/database/query/model-class-query.d.ts +92 -26
  373. package/build/src/database/query/model-class-query.d.ts.map +1 -1
  374. package/build/src/database/query/model-class-query.js +230 -76
  375. package/build/src/database/query/order-base.d.ts +3 -0
  376. package/build/src/database/query/order-base.d.ts.map +1 -1
  377. package/build/src/database/query/order-base.js +4 -1
  378. package/build/src/database/query/order-column.d.ts +9 -1
  379. package/build/src/database/query/order-column.d.ts.map +1 -1
  380. package/build/src/database/query/order-column.js +10 -2
  381. package/build/src/database/query/order-plain.d.ts +1 -0
  382. package/build/src/database/query/order-plain.d.ts.map +1 -1
  383. package/build/src/database/query/order-plain.js +2 -1
  384. package/build/src/database/query/preloader/belongs-to.d.ts +1 -0
  385. package/build/src/database/query/preloader/belongs-to.d.ts.map +1 -1
  386. package/build/src/database/query/preloader/belongs-to.js +68 -23
  387. package/build/src/database/query/preloader/ensure-model-class-initialized.d.ts +1 -0
  388. package/build/src/database/query/preloader/ensure-model-class-initialized.d.ts.map +1 -1
  389. package/build/src/database/query/preloader/ensure-model-class-initialized.js +2 -1
  390. package/build/src/database/query/preloader/has-many.d.ts +5 -3
  391. package/build/src/database/query/preloader/has-many.d.ts.map +1 -1
  392. package/build/src/database/query/preloader/has-many.js +66 -24
  393. package/build/src/database/query/preloader/has-one.d.ts +1 -0
  394. package/build/src/database/query/preloader/has-one.d.ts.map +1 -1
  395. package/build/src/database/query/preloader/has-one.js +26 -9
  396. package/build/src/database/query/preloader/selection.d.ts +7 -1
  397. package/build/src/database/query/preloader/selection.d.ts.map +1 -1
  398. package/build/src/database/query/preloader/selection.js +13 -5
  399. package/build/src/database/query/preloader.d.ts +1 -0
  400. package/build/src/database/query/preloader.d.ts.map +1 -1
  401. package/build/src/database/query/preloader.js +28 -9
  402. package/build/src/database/query/query-data.d.ts +21 -7
  403. package/build/src/database/query/query-data.d.ts.map +1 -1
  404. package/build/src/database/query/query-data.js +37 -18
  405. package/build/src/database/query/select-base.d.ts +3 -0
  406. package/build/src/database/query/select-base.d.ts.map +1 -1
  407. package/build/src/database/query/select-base.js +4 -1
  408. package/build/src/database/query/select-plain.d.ts +1 -0
  409. package/build/src/database/query/select-plain.d.ts.map +1 -1
  410. package/build/src/database/query/select-plain.js +2 -1
  411. package/build/src/database/query/select-table-and-column.d.ts +1 -0
  412. package/build/src/database/query/select-table-and-column.d.ts.map +1 -1
  413. package/build/src/database/query/select-table-and-column.js +2 -1
  414. package/build/src/database/query/update-base.d.ts +9 -6
  415. package/build/src/database/query/update-base.d.ts.map +1 -1
  416. package/build/src/database/query/update-base.js +7 -4
  417. package/build/src/database/query/upsert-base.d.ts +13 -4
  418. package/build/src/database/query/upsert-base.d.ts.map +1 -1
  419. package/build/src/database/query/upsert-base.js +12 -3
  420. package/build/src/database/query/where-base.d.ts +4 -0
  421. package/build/src/database/query/where-base.d.ts.map +1 -1
  422. package/build/src/database/query/where-base.js +5 -1
  423. package/build/src/database/query/where-combinator.d.ts +1 -0
  424. package/build/src/database/query/where-combinator.d.ts.map +1 -1
  425. package/build/src/database/query/where-combinator.js +6 -2
  426. package/build/src/database/query/where-hash.d.ts +6 -0
  427. package/build/src/database/query/where-hash.d.ts.map +1 -1
  428. package/build/src/database/query/where-hash.js +5 -1
  429. package/build/src/database/query/where-model-class-hash.d.ts +30 -16
  430. package/build/src/database/query/where-model-class-hash.d.ts.map +1 -1
  431. package/build/src/database/query/where-model-class-hash.js +55 -20
  432. package/build/src/database/query/where-not.d.ts +1 -0
  433. package/build/src/database/query/where-not.d.ts.map +1 -1
  434. package/build/src/database/query/where-not.js +3 -1
  435. package/build/src/database/query/where-plain.d.ts +1 -0
  436. package/build/src/database/query/where-plain.d.ts.map +1 -1
  437. package/build/src/database/query/where-plain.js +2 -1
  438. package/build/src/database/query/with-count.d.ts +11 -5
  439. package/build/src/database/query/with-count.d.ts.map +1 -1
  440. package/build/src/database/query/with-count.js +36 -15
  441. package/build/src/database/query-parser/base-query-parser.d.ts +1 -0
  442. package/build/src/database/query-parser/base-query-parser.d.ts.map +1 -1
  443. package/build/src/database/query-parser/base-query-parser.js +2 -1
  444. package/build/src/database/query-parser/from-parser.d.ts +5 -1
  445. package/build/src/database/query-parser/from-parser.d.ts.map +1 -1
  446. package/build/src/database/query-parser/from-parser.js +6 -2
  447. package/build/src/database/query-parser/group-parser.d.ts +2 -0
  448. package/build/src/database/query-parser/group-parser.d.ts.map +1 -1
  449. package/build/src/database/query-parser/group-parser.js +3 -1
  450. package/build/src/database/query-parser/joins-parser.d.ts +1 -0
  451. package/build/src/database/query-parser/joins-parser.d.ts.map +1 -1
  452. package/build/src/database/query-parser/joins-parser.js +2 -1
  453. package/build/src/database/query-parser/limit-parser.d.ts +1 -0
  454. package/build/src/database/query-parser/limit-parser.d.ts.map +1 -1
  455. package/build/src/database/query-parser/limit-parser.js +2 -1
  456. package/build/src/database/query-parser/options.d.ts +15 -4
  457. package/build/src/database/query-parser/options.d.ts.map +1 -1
  458. package/build/src/database/query-parser/options.js +11 -3
  459. package/build/src/database/query-parser/order-parser.d.ts +1 -0
  460. package/build/src/database/query-parser/order-parser.d.ts.map +1 -1
  461. package/build/src/database/query-parser/order-parser.js +2 -1
  462. package/build/src/database/query-parser/select-parser.d.ts +1 -0
  463. package/build/src/database/query-parser/select-parser.d.ts.map +1 -1
  464. package/build/src/database/query-parser/select-parser.js +2 -1
  465. package/build/src/database/query-parser/where-parser.d.ts +1 -0
  466. package/build/src/database/query-parser/where-parser.d.ts.map +1 -1
  467. package/build/src/database/query-parser/where-parser.js +2 -1
  468. package/build/src/database/record/acts-as-list.d.ts +0 -1
  469. package/build/src/database/record/acts-as-list.d.ts.map +1 -1
  470. package/build/src/database/record/acts-as-list.js +89 -45
  471. package/build/src/database/record/attachments/download.d.ts +34 -15
  472. package/build/src/database/record/attachments/download.d.ts.map +1 -1
  473. package/build/src/database/record/attachments/download.js +34 -22
  474. package/build/src/database/record/attachments/handle.d.ts +17 -5
  475. package/build/src/database/record/attachments/handle.d.ts.map +1 -1
  476. package/build/src/database/record/attachments/handle.js +25 -9
  477. package/build/src/database/record/attachments/normalize-input.d.ts +6 -1
  478. package/build/src/database/record/attachments/normalize-input.d.ts.map +1 -1
  479. package/build/src/database/record/attachments/normalize-input.js +54 -17
  480. package/build/src/database/record/attachments/storage-drivers/filesystem.d.ts +7 -1
  481. package/build/src/database/record/attachments/storage-drivers/filesystem.d.ts.map +1 -1
  482. package/build/src/database/record/attachments/storage-drivers/filesystem.js +10 -2
  483. package/build/src/database/record/attachments/storage-drivers/native.d.ts +12 -7
  484. package/build/src/database/record/attachments/storage-drivers/native.d.ts.map +1 -1
  485. package/build/src/database/record/attachments/storage-drivers/native.js +13 -6
  486. package/build/src/database/record/attachments/storage-drivers/s3.d.ts +18 -9
  487. package/build/src/database/record/attachments/storage-drivers/s3.d.ts.map +1 -1
  488. package/build/src/database/record/attachments/storage-drivers/s3.js +38 -13
  489. package/build/src/database/record/attachments/store.d.ts +48 -25
  490. package/build/src/database/record/attachments/store.d.ts.map +1 -1
  491. package/build/src/database/record/attachments/store.js +63 -25
  492. package/build/src/database/record/index.d.ts +394 -146
  493. package/build/src/database/record/index.d.ts.map +1 -1
  494. package/build/src/database/record/index.js +697 -248
  495. package/build/src/database/record/instance-relationships/base.d.ts +78 -19
  496. package/build/src/database/record/instance-relationships/base.d.ts.map +1 -1
  497. package/build/src/database/record/instance-relationships/base.js +98 -26
  498. package/build/src/database/record/instance-relationships/belongs-to.d.ts +1 -0
  499. package/build/src/database/record/instance-relationships/belongs-to.d.ts.map +1 -1
  500. package/build/src/database/record/instance-relationships/belongs-to.js +13 -5
  501. package/build/src/database/record/instance-relationships/has-many.d.ts +27 -7
  502. package/build/src/database/record/instance-relationships/has-many.d.ts.map +1 -1
  503. package/build/src/database/record/instance-relationships/has-many.js +50 -16
  504. package/build/src/database/record/instance-relationships/has-one.d.ts +4 -1
  505. package/build/src/database/record/instance-relationships/has-one.d.ts.map +1 -1
  506. package/build/src/database/record/instance-relationships/has-one.js +28 -10
  507. package/build/src/database/record/relationships/base.d.ts +61 -14
  508. package/build/src/database/record/relationships/base.d.ts.map +1 -1
  509. package/build/src/database/record/relationships/base.js +60 -15
  510. package/build/src/database/record/relationships/belongs-to.d.ts.map +1 -1
  511. package/build/src/database/record/relationships/belongs-to.js +9 -3
  512. package/build/src/database/record/relationships/has-many.d.ts.map +1 -1
  513. package/build/src/database/record/relationships/has-many.js +9 -3
  514. package/build/src/database/record/relationships/has-one.d.ts.map +1 -1
  515. package/build/src/database/record/relationships/has-one.js +9 -3
  516. package/build/src/database/record/state-machine.d.ts +9 -1
  517. package/build/src/database/record/state-machine.d.ts.map +1 -1
  518. package/build/src/database/record/state-machine.js +35 -14
  519. package/build/src/database/record/user-module.d.ts +2 -0
  520. package/build/src/database/record/user-module.d.ts.map +1 -1
  521. package/build/src/database/record/user-module.js +3 -1
  522. package/build/src/database/record/validators/base.d.ts +4 -2
  523. package/build/src/database/record/validators/base.d.ts.map +1 -1
  524. package/build/src/database/record/validators/base.js +4 -2
  525. package/build/src/database/record/validators/format.d.ts.map +1 -1
  526. package/build/src/database/record/validators/format.js +2 -1
  527. package/build/src/database/record/validators/presence.d.ts.map +1 -1
  528. package/build/src/database/record/validators/presence.js +5 -2
  529. package/build/src/database/record/validators/uniqueness.d.ts +0 -2
  530. package/build/src/database/record/validators/uniqueness.d.ts.map +1 -1
  531. package/build/src/database/record/validators/uniqueness.js +18 -8
  532. package/build/src/database/table-data/index.d.ts +40 -4
  533. package/build/src/database/table-data/index.d.ts.map +1 -1
  534. package/build/src/database/table-data/index.js +38 -5
  535. package/build/src/database/table-data/table-column.d.ts +43 -5
  536. package/build/src/database/table-data/table-column.d.ts.map +1 -1
  537. package/build/src/database/table-data/table-column.js +37 -4
  538. package/build/src/database/table-data/table-foreign-key.d.ts +8 -0
  539. package/build/src/database/table-data/table-foreign-key.d.ts.map +1 -1
  540. package/build/src/database/table-data/table-foreign-key.js +9 -1
  541. package/build/src/database/table-data/table-index.d.ts +8 -0
  542. package/build/src/database/table-data/table-index.d.ts.map +1 -1
  543. package/build/src/database/table-data/table-index.js +6 -1
  544. package/build/src/database/table-data/table-reference.d.ts +1 -0
  545. package/build/src/database/table-data/table-reference.d.ts.map +1 -1
  546. package/build/src/database/table-data/table-reference.js +2 -1
  547. package/build/src/database/use-database.d.ts +1 -0
  548. package/build/src/database/use-database.d.ts.map +1 -1
  549. package/build/src/database/use-database.js +2 -1
  550. package/build/src/environment-handlers/base.d.ts +94 -36
  551. package/build/src/environment-handlers/base.d.ts.map +1 -1
  552. package/build/src/environment-handlers/base.js +90 -36
  553. package/build/src/environment-handlers/browser.d.ts +33 -3
  554. package/build/src/environment-handlers/browser.d.ts.map +1 -1
  555. package/build/src/environment-handlers/browser.js +36 -9
  556. package/build/src/environment-handlers/node/cli/commands/cli-command-context.d.ts +5 -0
  557. package/build/src/environment-handlers/node/cli/commands/cli-command-context.d.ts.map +1 -1
  558. package/build/src/environment-handlers/node/cli/commands/cli-command-context.js +6 -2
  559. package/build/src/environment-handlers/node/cli/commands/console.d.ts +3 -2
  560. package/build/src/environment-handlers/node/cli/commands/console.d.ts.map +1 -1
  561. package/build/src/environment-handlers/node/cli/commands/console.js +23 -9
  562. package/build/src/environment-handlers/node/cli/commands/db/schema/dump.d.ts +4 -1
  563. package/build/src/environment-handlers/node/cli/commands/db/schema/dump.d.ts.map +1 -1
  564. package/build/src/environment-handlers/node/cli/commands/db/schema/dump.js +5 -2
  565. package/build/src/environment-handlers/node/cli/commands/db/schema/load.d.ts +6 -2
  566. package/build/src/environment-handlers/node/cli/commands/db/schema/load.d.ts.map +1 -1
  567. package/build/src/environment-handlers/node/cli/commands/db/schema/load.js +11 -5
  568. package/build/src/environment-handlers/node/cli/commands/db/seed.d.ts +15 -5
  569. package/build/src/environment-handlers/node/cli/commands/db/seed.d.ts.map +1 -1
  570. package/build/src/environment-handlers/node/cli/commands/db/seed.js +20 -6
  571. package/build/src/environment-handlers/node/cli/commands/destroy/migration.d.ts +5 -0
  572. package/build/src/environment-handlers/node/cli/commands/destroy/migration.d.ts.map +1 -1
  573. package/build/src/environment-handlers/node/cli/commands/destroy/migration.js +3 -1
  574. package/build/src/environment-handlers/node/cli/commands/generate/base-models.d.ts +2 -0
  575. package/build/src/environment-handlers/node/cli/commands/generate/base-models.d.ts.map +1 -1
  576. package/build/src/environment-handlers/node/cli/commands/generate/base-models.js +6 -4
  577. package/build/src/environment-handlers/node/cli/commands/generate/frontend-models.d.ts +43 -29
  578. package/build/src/environment-handlers/node/cli/commands/generate/frontend-models.d.ts.map +1 -1
  579. package/build/src/environment-handlers/node/cli/commands/generate/frontend-models.js +99 -40
  580. package/build/src/environment-handlers/node/cli/commands/generate/migration.d.ts +5 -0
  581. package/build/src/environment-handlers/node/cli/commands/generate/migration.d.ts.map +1 -1
  582. package/build/src/environment-handlers/node/cli/commands/generate/migration.js +3 -1
  583. package/build/src/environment-handlers/node/cli/commands/generate/model.d.ts +5 -0
  584. package/build/src/environment-handlers/node/cli/commands/generate/model.d.ts.map +1 -1
  585. package/build/src/environment-handlers/node/cli/commands/generate/model.js +3 -1
  586. package/build/src/environment-handlers/node/cli/commands/init.d.ts +5 -0
  587. package/build/src/environment-handlers/node/cli/commands/init.d.ts.map +1 -1
  588. package/build/src/environment-handlers/node/cli/commands/init.js +3 -1
  589. package/build/src/environment-handlers/node/cli/commands/routes.d.ts +3 -0
  590. package/build/src/environment-handlers/node/cli/commands/routes.d.ts.map +1 -1
  591. package/build/src/environment-handlers/node/cli/commands/routes.js +4 -1
  592. package/build/src/environment-handlers/node/cli/commands/run-script.d.ts +15 -5
  593. package/build/src/environment-handlers/node/cli/commands/run-script.d.ts.map +1 -1
  594. package/build/src/environment-handlers/node/cli/commands/run-script.js +20 -6
  595. package/build/src/environment-handlers/node/cli/commands/runner.d.ts +18 -6
  596. package/build/src/environment-handlers/node/cli/commands/runner.d.ts.map +1 -1
  597. package/build/src/environment-handlers/node/cli/commands/runner.js +20 -6
  598. package/build/src/environment-handlers/node/cli/commands/server.d.ts +13 -1
  599. package/build/src/environment-handlers/node/cli/commands/server.d.ts.map +1 -1
  600. package/build/src/environment-handlers/node/cli/commands/server.js +23 -6
  601. package/build/src/environment-handlers/node.d.ts +14 -2
  602. package/build/src/environment-handlers/node.d.ts.map +1 -1
  603. package/build/src/environment-handlers/node.js +107 -39
  604. package/build/src/error-logger.d.ts +4 -3
  605. package/build/src/error-logger.d.ts.map +1 -1
  606. package/build/src/error-logger.js +4 -3
  607. package/build/src/frontend-model-controller.d.ts +239 -90
  608. package/build/src/frontend-model-controller.d.ts.map +1 -1
  609. package/build/src/frontend-model-controller.js +577 -787
  610. package/build/src/frontend-model-resource/base-resource.d.ts +118 -66
  611. package/build/src/frontend-model-resource/base-resource.d.ts.map +1 -1
  612. package/build/src/frontend-model-resource/base-resource.js +205 -82
  613. package/build/src/frontend-models/base.d.ts +319 -163
  614. package/build/src/frontend-models/base.d.ts.map +1 -1
  615. package/build/src/frontend-models/base.js +717 -366
  616. package/build/src/frontend-models/clear-pending-debounced-callback.d.ts +2 -1
  617. package/build/src/frontend-models/clear-pending-debounced-callback.d.ts.map +1 -1
  618. package/build/src/frontend-models/clear-pending-debounced-callback.js +6 -3
  619. package/build/src/frontend-models/event-hook-models.d.ts +5 -0
  620. package/build/src/frontend-models/event-hook-models.d.ts.map +1 -1
  621. package/build/src/frontend-models/event-hook-models.js +10 -3
  622. package/build/src/frontend-models/model-registry.d.ts +5 -5
  623. package/build/src/frontend-models/model-registry.d.ts.map +1 -1
  624. package/build/src/frontend-models/model-registry.js +5 -5
  625. package/build/src/frontend-models/outgoing-event-buffer.d.ts +11 -3
  626. package/build/src/frontend-models/outgoing-event-buffer.d.ts.map +1 -1
  627. package/build/src/frontend-models/outgoing-event-buffer.js +13 -5
  628. package/build/src/frontend-models/preloader.d.ts +9 -6
  629. package/build/src/frontend-models/preloader.d.ts.map +1 -1
  630. package/build/src/frontend-models/preloader.js +21 -9
  631. package/build/src/frontend-models/query.d.ts +283 -73
  632. package/build/src/frontend-models/query.d.ts.map +1 -1
  633. package/build/src/frontend-models/query.js +331 -203
  634. package/build/src/frontend-models/resource-config-validation.d.ts +2 -0
  635. package/build/src/frontend-models/resource-config-validation.d.ts.map +1 -1
  636. package/build/src/frontend-models/resource-config-validation.js +3 -1
  637. package/build/src/frontend-models/resource-definition.d.ts +12 -5
  638. package/build/src/frontend-models/resource-definition.d.ts.map +1 -1
  639. package/build/src/frontend-models/resource-definition.js +39 -13
  640. package/build/src/frontend-models/transport-serialization.d.ts +14 -11
  641. package/build/src/frontend-models/transport-serialization.d.ts.map +1 -1
  642. package/build/src/frontend-models/transport-serialization.js +80 -53
  643. package/build/src/frontend-models/use-destroyed-event.d.ts +21 -0
  644. package/build/src/frontend-models/use-destroyed-event.d.ts.map +1 -1
  645. package/build/src/frontend-models/use-destroyed-event.js +34 -11
  646. package/build/src/frontend-models/use-model-class-event.d.ts +24 -0
  647. package/build/src/frontend-models/use-model-class-event.d.ts.map +1 -1
  648. package/build/src/frontend-models/use-model-class-event.js +39 -12
  649. package/build/src/frontend-models/use-updated-event.d.ts +21 -0
  650. package/build/src/frontend-models/use-updated-event.d.ts.map +1 -1
  651. package/build/src/frontend-models/use-updated-event.js +37 -12
  652. package/build/src/frontend-models/websocket-channel.d.ts +51 -9
  653. package/build/src/frontend-models/websocket-channel.d.ts.map +1 -1
  654. package/build/src/frontend-models/websocket-channel.js +96 -26
  655. package/build/src/frontend-models/websocket-publishers.d.ts +2 -0
  656. package/build/src/frontend-models/websocket-publishers.d.ts.map +1 -1
  657. package/build/src/frontend-models/websocket-publishers.js +33 -11
  658. package/build/src/http-client/header.d.ts +1 -0
  659. package/build/src/http-client/header.d.ts.map +1 -1
  660. package/build/src/http-client/header.js +2 -1
  661. package/build/src/http-client/index.d.ts +4 -0
  662. package/build/src/http-client/index.d.ts.map +1 -1
  663. package/build/src/http-client/index.js +5 -1
  664. package/build/src/http-client/request.d.ts +5 -0
  665. package/build/src/http-client/request.d.ts.map +1 -1
  666. package/build/src/http-client/request.js +6 -1
  667. package/build/src/http-client/response.d.ts +14 -4
  668. package/build/src/http-client/response.d.ts.map +1 -1
  669. package/build/src/http-client/response.js +14 -4
  670. package/build/src/http-client/websocket-client.d.ts +1 -0
  671. package/build/src/http-client/websocket-client.d.ts.map +1 -1
  672. package/build/src/http-client/websocket-client.js +2 -1
  673. package/build/src/http-server/client/index.d.ts +16 -2
  674. package/build/src/http-server/client/index.d.ts.map +1 -1
  675. package/build/src/http-server/client/index.js +44 -13
  676. package/build/src/http-server/client/params-to-object.d.ts +16 -10
  677. package/build/src/http-server/client/params-to-object.d.ts.map +1 -1
  678. package/build/src/http-server/client/params-to-object.js +46 -17
  679. package/build/src/http-server/client/request-buffer/form-data-part.d.ts +10 -6
  680. package/build/src/http-server/client/request-buffer/form-data-part.d.ts.map +1 -1
  681. package/build/src/http-server/client/request-buffer/form-data-part.js +11 -7
  682. package/build/src/http-server/client/request-buffer/header.d.ts +1 -0
  683. package/build/src/http-server/client/request-buffer/header.d.ts.map +1 -1
  684. package/build/src/http-server/client/request-buffer/header.js +2 -1
  685. package/build/src/http-server/client/request-buffer/index.d.ts +29 -4
  686. package/build/src/http-server/client/request-buffer/index.d.ts.map +1 -1
  687. package/build/src/http-server/client/request-buffer/index.js +43 -9
  688. package/build/src/http-server/client/request-parser.d.ts +52 -13
  689. package/build/src/http-server/client/request-parser.d.ts.map +1 -1
  690. package/build/src/http-server/client/request-parser.js +58 -15
  691. package/build/src/http-server/client/request-runner.d.ts +5 -1
  692. package/build/src/http-server/client/request-runner.d.ts.map +1 -1
  693. package/build/src/http-server/client/request-runner.js +32 -8
  694. package/build/src/http-server/client/request-timing.d.ts +37 -7
  695. package/build/src/http-server/client/request-timing.d.ts.map +1 -1
  696. package/build/src/http-server/client/request-timing.js +32 -8
  697. package/build/src/http-server/client/request.d.ts +15 -5
  698. package/build/src/http-server/client/request.d.ts.map +1 -1
  699. package/build/src/http-server/client/request.js +17 -5
  700. package/build/src/http-server/client/response.d.ts +22 -4
  701. package/build/src/http-server/client/response.d.ts.map +1 -1
  702. package/build/src/http-server/client/response.js +29 -7
  703. package/build/src/http-server/client/uploaded-file/memory-uploaded-file.d.ts +1 -0
  704. package/build/src/http-server/client/uploaded-file/memory-uploaded-file.d.ts.map +1 -1
  705. package/build/src/http-server/client/uploaded-file/memory-uploaded-file.js +3 -1
  706. package/build/src/http-server/client/uploaded-file/temporary-uploaded-file.d.ts +1 -0
  707. package/build/src/http-server/client/uploaded-file/temporary-uploaded-file.d.ts.map +1 -1
  708. package/build/src/http-server/client/uploaded-file/temporary-uploaded-file.js +3 -1
  709. package/build/src/http-server/client/uploaded-file/uploaded-file.d.ts +2 -0
  710. package/build/src/http-server/client/uploaded-file/uploaded-file.d.ts.map +1 -1
  711. package/build/src/http-server/client/uploaded-file/uploaded-file.js +3 -1
  712. package/build/src/http-server/client/websocket-request.d.ts +24 -12
  713. package/build/src/http-server/client/websocket-request.d.ts.map +1 -1
  714. package/build/src/http-server/client/websocket-request.js +24 -10
  715. package/build/src/http-server/client/websocket-session.d.ts +101 -62
  716. package/build/src/http-server/client/websocket-session.d.ts.map +1 -1
  717. package/build/src/http-server/client/websocket-session.js +118 -61
  718. package/build/src/http-server/cookie.d.ts +36 -8
  719. package/build/src/http-server/cookie.d.ts.map +1 -1
  720. package/build/src/http-server/cookie.js +37 -9
  721. package/build/src/http-server/development-reloader.d.ts +32 -7
  722. package/build/src/http-server/development-reloader.d.ts.map +1 -1
  723. package/build/src/http-server/development-reloader.js +39 -10
  724. package/build/src/http-server/index.d.ts +102 -25
  725. package/build/src/http-server/index.d.ts.map +1 -1
  726. package/build/src/http-server/index.js +117 -32
  727. package/build/src/http-server/remote-address.d.ts +1 -0
  728. package/build/src/http-server/remote-address.d.ts.map +1 -1
  729. package/build/src/http-server/remote-address.js +15 -4
  730. package/build/src/http-server/server-client.d.ts +37 -8
  731. package/build/src/http-server/server-client.d.ts.map +1 -1
  732. package/build/src/http-server/server-client.js +48 -12
  733. package/build/src/http-server/server-lock.d.ts +76 -0
  734. package/build/src/http-server/server-lock.d.ts.map +1 -0
  735. package/build/src/http-server/server-lock.js +164 -0
  736. package/build/src/http-server/websocket-channel-subscribers.d.ts +13 -8
  737. package/build/src/http-server/websocket-channel-subscribers.d.ts.map +1 -1
  738. package/build/src/http-server/websocket-channel-subscribers.js +16 -7
  739. package/build/src/http-server/websocket-channel.d.ts +13 -11
  740. package/build/src/http-server/websocket-channel.d.ts.map +1 -1
  741. package/build/src/http-server/websocket-channel.js +8 -12
  742. package/build/src/http-server/websocket-connection.d.ts +10 -14
  743. package/build/src/http-server/websocket-connection.d.ts.map +1 -1
  744. package/build/src/http-server/websocket-connection.js +8 -12
  745. package/build/src/http-server/websocket-event-log-store.d.ts +48 -10
  746. package/build/src/http-server/websocket-event-log-store.d.ts.map +1 -1
  747. package/build/src/http-server/websocket-event-log-store.js +76 -34
  748. package/build/src/http-server/websocket-events-host.d.ts +21 -15
  749. package/build/src/http-server/websocket-events-host.d.ts.map +1 -1
  750. package/build/src/http-server/websocket-events-host.js +20 -11
  751. package/build/src/http-server/websocket-events.d.ts +8 -7
  752. package/build/src/http-server/websocket-events.d.ts.map +1 -1
  753. package/build/src/http-server/websocket-events.js +6 -5
  754. package/build/src/http-server/worker-handler/channel-subscriber-dispatch.d.ts +3 -2
  755. package/build/src/http-server/worker-handler/channel-subscriber-dispatch.d.ts.map +1 -1
  756. package/build/src/http-server/worker-handler/channel-subscriber-dispatch.js +3 -2
  757. package/build/src/http-server/worker-handler/in-process.d.ts +18 -18
  758. package/build/src/http-server/worker-handler/in-process.d.ts.map +1 -1
  759. package/build/src/http-server/worker-handler/in-process.js +28 -20
  760. package/build/src/http-server/worker-handler/index.d.ts +39 -20
  761. package/build/src/http-server/worker-handler/index.d.ts.map +1 -1
  762. package/build/src/http-server/worker-handler/index.js +34 -14
  763. package/build/src/http-server/worker-handler/worker-thread.d.ts +31 -15
  764. package/build/src/http-server/worker-handler/worker-thread.d.ts.map +1 -1
  765. package/build/src/http-server/worker-handler/worker-thread.js +31 -12
  766. package/build/src/initializer.d.ts +4 -0
  767. package/build/src/initializer.d.ts.map +1 -1
  768. package/build/src/initializer.js +5 -1
  769. package/build/src/jobs/mail-delivery.d.ts +1 -0
  770. package/build/src/jobs/mail-delivery.d.ts.map +1 -1
  771. package/build/src/jobs/mail-delivery.js +2 -1
  772. package/build/src/logger/base-logger.js +2 -2
  773. package/build/src/logger/console-logger.d.ts +2 -0
  774. package/build/src/logger/console-logger.d.ts.map +1 -1
  775. package/build/src/logger/console-logger.js +3 -1
  776. package/build/src/logger/file-logger.d.ts +2 -0
  777. package/build/src/logger/file-logger.d.ts.map +1 -1
  778. package/build/src/logger/file-logger.js +3 -1
  779. package/build/src/logger/outputs/array-output.d.ts +21 -5
  780. package/build/src/logger/outputs/array-output.d.ts.map +1 -1
  781. package/build/src/logger/outputs/array-output.js +19 -6
  782. package/build/src/logger/outputs/console-output.d.ts +10 -2
  783. package/build/src/logger/outputs/console-output.d.ts.map +1 -1
  784. package/build/src/logger/outputs/console-output.js +8 -3
  785. package/build/src/logger/outputs/file-output.d.ts +20 -5
  786. package/build/src/logger/outputs/file-output.d.ts.map +1 -1
  787. package/build/src/logger/outputs/file-output.js +18 -6
  788. package/build/src/logger/outputs/stdout-output.d.ts +7 -1
  789. package/build/src/logger/outputs/stdout-output.d.ts.map +1 -1
  790. package/build/src/logger/outputs/stdout-output.js +9 -3
  791. package/build/src/logger.d.ts +28 -13
  792. package/build/src/logger.d.ts.map +1 -1
  793. package/build/src/logger.js +60 -23
  794. package/build/src/mailer/backends/smtp.d.ts +5 -0
  795. package/build/src/mailer/backends/smtp.d.ts.map +1 -1
  796. package/build/src/mailer/backends/smtp.js +17 -4
  797. package/build/src/mailer/base.d.ts +33 -17
  798. package/build/src/mailer/base.d.ts.map +1 -1
  799. package/build/src/mailer/base.js +54 -18
  800. package/build/src/mailer/delivery.d.ts +16 -5
  801. package/build/src/mailer/delivery.d.ts.map +1 -1
  802. package/build/src/mailer/delivery.js +18 -7
  803. package/build/src/mailer/index.d.ts +5 -5
  804. package/build/src/mailer/index.d.ts.map +1 -1
  805. package/build/src/mailer/index.js +2 -2
  806. package/build/src/mailer.d.ts +5 -5
  807. package/build/src/mailer.d.ts.map +1 -1
  808. package/build/src/mailer.js +2 -2
  809. package/build/src/plugins/sqljs-wasm-route-controller.d.ts +4 -1
  810. package/build/src/plugins/sqljs-wasm-route-controller.d.ts.map +1 -1
  811. package/build/src/plugins/sqljs-wasm-route-controller.js +11 -4
  812. package/build/src/plugins/sqljs-wasm-route.d.ts +6 -0
  813. package/build/src/plugins/sqljs-wasm-route.d.ts.map +1 -1
  814. package/build/src/plugins/sqljs-wasm-route.js +4 -1
  815. package/build/src/record-payload-values.d.ts +54 -0
  816. package/build/src/record-payload-values.d.ts.map +1 -0
  817. package/build/src/record-payload-values.js +80 -0
  818. package/build/src/routes/app-routes.d.ts +1 -0
  819. package/build/src/routes/app-routes.d.ts.map +1 -1
  820. package/build/src/routes/app-routes.js +2 -1
  821. package/build/src/routes/base-route.d.ts +52 -16
  822. package/build/src/routes/base-route.d.ts.map +1 -1
  823. package/build/src/routes/base-route.js +50 -14
  824. package/build/src/routes/basic-route.d.ts +1 -0
  825. package/build/src/routes/basic-route.d.ts.map +1 -1
  826. package/build/src/routes/basic-route.js +13 -4
  827. package/build/src/routes/built-in/debug/controller.d.ts +4 -1
  828. package/build/src/routes/built-in/debug/controller.d.ts.map +1 -1
  829. package/build/src/routes/built-in/debug/controller.js +5 -2
  830. package/build/src/routes/get-route.d.ts +1 -0
  831. package/build/src/routes/get-route.d.ts.map +1 -1
  832. package/build/src/routes/get-route.js +7 -4
  833. package/build/src/routes/hooks/frontend-model-command-route-hook.d.ts +1 -0
  834. package/build/src/routes/hooks/frontend-model-command-route-hook.d.ts.map +1 -1
  835. package/build/src/routes/hooks/frontend-model-command-route-hook.js +6 -2
  836. package/build/src/routes/index.d.ts +3 -2
  837. package/build/src/routes/index.d.ts.map +1 -1
  838. package/build/src/routes/index.js +10 -4
  839. package/build/src/routes/namespace-route.d.ts +1 -0
  840. package/build/src/routes/namespace-route.d.ts.map +1 -1
  841. package/build/src/routes/namespace-route.js +5 -3
  842. package/build/src/routes/plugin-routes.d.ts +10 -1
  843. package/build/src/routes/plugin-routes.d.ts.map +1 -1
  844. package/build/src/routes/plugin-routes.js +11 -3
  845. package/build/src/routes/post-route.d.ts +1 -0
  846. package/build/src/routes/post-route.d.ts.map +1 -1
  847. package/build/src/routes/post-route.js +7 -4
  848. package/build/src/routes/resolver.d.ts +20 -5
  849. package/build/src/routes/resolver.d.ts.map +1 -1
  850. package/build/src/routes/resolver.js +47 -14
  851. package/build/src/routes/resource-route.d.ts +6 -1
  852. package/build/src/routes/resource-route.d.ts.map +1 -1
  853. package/build/src/routes/resource-route.js +10 -4
  854. package/build/src/testing/base-expect.d.ts +2 -0
  855. package/build/src/testing/base-expect.d.ts.map +1 -1
  856. package/build/src/testing/base-expect.js +3 -1
  857. package/build/src/testing/browser-frontend-model-event-hook-scenarios.d.ts +33 -5
  858. package/build/src/testing/browser-frontend-model-event-hook-scenarios.d.ts.map +1 -1
  859. package/build/src/testing/browser-frontend-model-event-hook-scenarios.js +95 -23
  860. package/build/src/testing/expect-to-change.d.ts +3 -0
  861. package/build/src/testing/expect-to-change.d.ts.map +1 -1
  862. package/build/src/testing/expect-to-change.js +4 -1
  863. package/build/src/testing/expect-utils.d.ts +22 -16
  864. package/build/src/testing/expect-utils.d.ts.map +1 -1
  865. package/build/src/testing/expect-utils.js +62 -30
  866. package/build/src/testing/expect.d.ts +50 -21
  867. package/build/src/testing/expect.d.ts.map +1 -1
  868. package/build/src/testing/expect.js +58 -17
  869. package/build/src/testing/request-client.d.ts +16 -3
  870. package/build/src/testing/request-client.d.ts.map +1 -1
  871. package/build/src/testing/request-client.js +17 -4
  872. package/build/src/testing/test-files-finder.d.ts +41 -9
  873. package/build/src/testing/test-files-finder.d.ts.map +1 -1
  874. package/build/src/testing/test-files-finder.js +42 -10
  875. package/build/src/testing/test-filter-parser.d.ts +6 -0
  876. package/build/src/testing/test-filter-parser.d.ts.map +1 -1
  877. package/build/src/testing/test-filter-parser.js +12 -3
  878. package/build/src/testing/test-runner.d.ts +102 -6
  879. package/build/src/testing/test-runner.d.ts.map +1 -1
  880. package/build/src/testing/test-runner.js +115 -23
  881. package/build/src/testing/test-suite-splitter.d.ts +7 -0
  882. package/build/src/testing/test-suite-splitter.d.ts.map +1 -1
  883. package/build/src/testing/test-suite-splitter.js +7 -2
  884. package/build/src/testing/test.d.ts +20 -4
  885. package/build/src/testing/test.d.ts.map +1 -1
  886. package/build/src/testing/test.js +67 -20
  887. package/build/src/utils/backtrace-cleaner-node.d.ts.map +1 -1
  888. package/build/src/utils/backtrace-cleaner-node.js +6 -1
  889. package/build/src/utils/backtrace-cleaner.d.ts +16 -1
  890. package/build/src/utils/backtrace-cleaner.d.ts.map +1 -1
  891. package/build/src/utils/backtrace-cleaner.js +20 -2
  892. package/build/src/utils/ensure-error.d.ts +3 -2
  893. package/build/src/utils/ensure-error.d.ts.map +1 -1
  894. package/build/src/utils/ensure-error.js +3 -2
  895. package/build/src/utils/event-emitter.d.ts.map +1 -1
  896. package/build/src/utils/event-emitter.js +2 -2
  897. package/build/src/utils/file-exists.d.ts +1 -0
  898. package/build/src/utils/file-exists.d.ts.map +1 -1
  899. package/build/src/utils/file-exists.js +2 -1
  900. package/build/src/utils/format-value.d.ts +5 -4
  901. package/build/src/utils/format-value.d.ts.map +1 -1
  902. package/build/src/utils/format-value.js +12 -7
  903. package/build/src/utils/model-scope.d.ts +18 -12
  904. package/build/src/utils/model-scope.d.ts.map +1 -1
  905. package/build/src/utils/model-scope.js +19 -11
  906. package/build/src/utils/nest-callbacks.d.ts +1 -0
  907. package/build/src/utils/nest-callbacks.d.ts.map +1 -1
  908. package/build/src/utils/nest-callbacks.js +2 -1
  909. package/build/src/utils/plain-object.d.ts +7 -0
  910. package/build/src/utils/plain-object.d.ts.map +1 -0
  911. package/build/src/utils/plain-object.js +13 -0
  912. package/build/src/utils/ransack.d.ts +29 -5
  913. package/build/src/utils/ransack.d.ts.map +1 -1
  914. package/build/src/utils/ransack.js +136 -49
  915. package/build/src/utils/rest-args-error.d.ts +1 -0
  916. package/build/src/utils/rest-args-error.d.ts.map +1 -1
  917. package/build/src/utils/rest-args-error.js +2 -1
  918. package/build/src/utils/singularize-model-name.d.ts +1 -0
  919. package/build/src/utils/singularize-model-name.d.ts.map +1 -1
  920. package/build/src/utils/singularize-model-name.js +2 -1
  921. package/build/src/utils/to-import-specifier.d.ts.map +1 -1
  922. package/build/src/utils/to-import-specifier.js +3 -1
  923. package/build/src/utils/with-tracked-stack-async-hooks.d.ts +8 -5
  924. package/build/src/utils/with-tracked-stack-async-hooks.d.ts.map +1 -1
  925. package/build/src/utils/with-tracked-stack-async-hooks.js +32 -13
  926. package/build/src/utils/with-tracked-stack.d.ts +9 -5
  927. package/build/src/utils/with-tracked-stack.d.ts.map +1 -1
  928. package/build/src/utils/with-tracked-stack.js +19 -8
  929. package/build/src/velocious-error.d.ts +4 -2
  930. package/build/src/velocious-error.d.ts.map +1 -1
  931. package/build/src/velocious-error.js +5 -3
  932. package/build/tsconfig.tsbuildinfo +1 -1
  933. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"preloader.d.ts","sourceRoot":"","sources":["../../../../src/database/query/preloader.js"],"names":[],"mappings":"AAuEA;IACE;;;;;;;;;OASG;IACH,uBALW,KAAK,CAAC,OAAO,oBAAoB,EAAE,OAAO,CAAC,eAC3C,OAAO,wBAAwB,EAAE,OAAO,GAAG,OAAO,YAAY,EAAE,mBAAmB,GAAG,MAAM,GAAG,KAAK,CAAC,MAAM,GAAG,OAAO,YAAY,EAAE,mBAAmB,CAAC,cACvJ;QAAC,KAAK,CAAC,EAAE,OAAO,CAAA;KAAC,GACf,OAAO,CAAC,IAAI,CAAC,CAyBzB;IAED;;;;;;;;OAQG;IACH,0GAPG;QAA0D,UAAU,EAA5D,cAAc,oBAAoB,EAAE,OAAO;QACE,MAAM,EAAnD,OAAO,oBAAoB,EAAE,OAAO,EAAE;QACgB,OAAO,EAA7D,OAAO,mBAAmB,EAAE,mBAAmB;QACf,cAAc;QACd,mBAAmB;QACzB,SAAS;KAC7C,EAQA;IAJC,wDAA4B;IAC5B,+CAAoB;IACpB,yDAAsB;IACtB,8BAA2F;IAG7F,qBAwDC;CACF;+BAjL8B,0BAA0B"}
1
+ {"version":3,"file":"preloader.d.ts","sourceRoot":"","sources":["../../../../src/database/query/preloader.js"],"names":[],"mappings":"AA4EA;IACE;;;;;;;;;OASG;IACH,uBALW,KAAK,CAAC,OAAO,oBAAoB,EAAE,OAAO,CAAC,eAC3C,OAAO,wBAAwB,EAAE,OAAO,GAAG,OAAO,YAAY,EAAE,mBAAmB,GAAG,MAAM,GAAG,KAAK,CAAC,MAAM,GAAG,OAAO,YAAY,EAAE,mBAAmB,CAAC,cACvJ;QAAC,KAAK,CAAC,EAAE,OAAO,CAAA;KAAC,GACf,OAAO,CAAC,IAAI,CAAC,CA+BzB;IAED;;;;;;;;;OASG;IACH,0GAPG;QAA0D,UAAU,EAA5D,cAAc,oBAAoB,EAAE,OAAO;QACE,MAAM,EAAnD,OAAO,oBAAoB,EAAE,OAAO,EAAE;QACgB,OAAO,EAA7D,OAAO,mBAAmB,EAAE,mBAAmB;QACf,cAAc;QACd,mBAAmB;QACzB,SAAS;KAC7C,EAQA;IAJC,wDAA4B;IAC5B,+CAAoB;IACpB,yDAAsB;IACtB,8BAA2F;IAG7F,qBA8DC;CACF;+BAnM8B,0BAA0B"}
@@ -5,6 +5,7 @@ import HasOnePreloader from "./preloader/has-one.js";
5
5
  import PreloaderSelection from "./preloader/selection.js";
6
6
  import restArgsError from "../../utils/rest-args-error.js";
7
7
  /**
8
+ * Runs normalize nested preload.
8
9
  * @param {import("../query/index.js").NestedPreloadRecord | string | string[] | boolean} preload - Preload data in shorthand or nested form.
9
10
  * @returns {import("../query/index.js").NestedPreloadRecord | null} - Normalized nested preload record.
10
11
  */
@@ -15,7 +16,9 @@ function normalizeNestedPreload(preload) {
15
16
  return { [preload]: true };
16
17
  }
17
18
  if (Array.isArray(preload)) {
18
- /** @type {import("../query/index.js").NestedPreloadRecord} */
19
+ /**
20
+ * Result.
21
+ @type {import("../query/index.js").NestedPreloadRecord} */
19
22
  const result = {};
20
23
  for (const entry of preload) {
21
24
  if (typeof entry == "string") {
@@ -36,7 +39,9 @@ function normalizeNestedPreload(preload) {
36
39
  return result;
37
40
  }
38
41
  if (preload && typeof preload == "object") {
39
- /** @type {import("../query/index.js").NestedPreloadRecord} */
42
+ /**
43
+ * Result.
44
+ @type {import("../query/index.js").NestedPreloadRecord} */
40
45
  const result = {};
41
46
  for (const [key, value] of Object.entries(preload)) {
42
47
  if (value === true || value === false) {
@@ -69,13 +74,20 @@ export default class VelociousDatabaseQueryPreloader {
69
74
  static async preload(models, queryOrSpec, { force = false } = {}) {
70
75
  if (models.length == 0)
71
76
  return;
72
- const modelClass = /** @type {typeof import("../record/index.js").default} */ (models[0].constructor);
77
+ const modelClass = /**
78
+ * Narrows the runtime value to the documented type.
79
+ @type {typeof import("../record/index.js").default} */ (models[0].constructor);
73
80
  const isQuery = Boolean(queryOrSpec) && typeof queryOrSpec == "object" && "_preload" in queryOrSpec;
74
81
  // Reuse the query builder's preload/select normalization for raw specs
75
82
  // instead of duplicating it here.
76
83
  const query = isQuery
77
- ? /** @type {import("./model-class-query.js").default} */ (queryOrSpec)
78
- : modelClass.preload(/** @type {any} */ (queryOrSpec));
84
+ ? /**
85
+ * Narrows the runtime value to the documented type.
86
+ @type {import("./model-class-query.js").default} */
87
+ (queryOrSpec)
88
+ : modelClass.preload(/**
89
+ * Narrows the runtime value to the documented type.
90
+ @type {?} */ (queryOrSpec));
79
91
  const preloader = new VelociousDatabaseQueryPreloader({
80
92
  modelClass,
81
93
  models,
@@ -89,6 +101,7 @@ export default class VelociousDatabaseQueryPreloader {
89
101
  await preloader.run();
90
102
  }
91
103
  /**
104
+ * Runs constructor.
92
105
  * @param {object} args - Options object.
93
106
  * @param {typeof import("../record/index.js").default} args.modelClass - Model class.
94
107
  * @param {import("../record/index.js").default[]} args.models - Model instances.
@@ -109,17 +122,23 @@ export default class VelociousDatabaseQueryPreloader {
109
122
  const relationship = this.modelClass.getRelationshipByName(preloadRelationshipName);
110
123
  let preloadResult;
111
124
  if (relationship.getType() == "belongsTo") {
112
- const belongsToRelationship = /** @type {import("../record/relationships/belongs-to.js").default} */ (relationship);
125
+ const belongsToRelationship = /**
126
+ * Narrows the runtime value to the documented type.
127
+ @type {import("../record/relationships/belongs-to.js").default} */ (relationship);
113
128
  const hasManyPreloader = new BelongsToPreloader({ models: this.models, relationship: belongsToRelationship, selection: this.selection });
114
129
  preloadResult = await hasManyPreloader.run();
115
130
  }
116
131
  else if (relationship.getType() == "hasMany") {
117
- const hasManyRelationship = /** @type {import("../record/relationships/has-many.js").default} */ (relationship);
132
+ const hasManyRelationship = /**
133
+ * Narrows the runtime value to the documented type.
134
+ @type {import("../record/relationships/has-many.js").default} */ (relationship);
118
135
  const hasManyPreloader = new HasManyPreloader({ models: this.models, relationship: hasManyRelationship, selection: this.selection });
119
136
  preloadResult = await hasManyPreloader.run();
120
137
  }
121
138
  else if (relationship.getType() == "hasOne") {
122
- const hasOneRelationship = /** @type {import("../record/relationships/has-one.js").default} */ (relationship);
139
+ const hasOneRelationship = /**
140
+ * Narrows the runtime value to the documented type.
141
+ @type {import("../record/relationships/has-one.js").default} */ (relationship);
123
142
  const hasOnePreloader = new HasOnePreloader({ models: this.models, relationship: hasOneRelationship, selection: this.selection });
124
143
  preloadResult = await hasOnePreloader.run();
125
144
  }
@@ -154,4 +173,4 @@ export default class VelociousDatabaseQueryPreloader {
154
173
  }
155
174
  }
156
175
  }
157
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJlbG9hZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2RhdGFiYXNlL3F1ZXJ5L3ByZWxvYWRlci5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxZQUFZO0FBRVosT0FBTyxrQkFBa0IsTUFBTSwyQkFBMkIsQ0FBQTtBQUMxRCxPQUFPLGdCQUFnQixNQUFNLHlCQUF5QixDQUFBO0FBQ3RELE9BQU8sZUFBZSxNQUFNLHdCQUF3QixDQUFBO0FBQ3BELE9BQU8sa0JBQWtCLE1BQU0sMEJBQTBCLENBQUE7QUFDekQsT0FBTyxhQUFhLE1BQU0sZ0NBQWdDLENBQUE7QUFFMUQ7OztHQUdHO0FBQ0gsU0FBUyxzQkFBc0IsQ0FBQyxPQUFPO0lBQ3JDLElBQUksQ0FBQyxPQUFPLElBQUksT0FBTyxPQUFPLElBQUksU0FBUztRQUFFLE9BQU8sSUFBSSxDQUFBO0lBRXhELElBQUksT0FBTyxPQUFPLElBQUksUUFBUSxFQUFFLENBQUM7UUFDL0IsT0FBTyxFQUFDLENBQUMsT0FBTyxDQUFDLEVBQUUsSUFBSSxFQUFDLENBQUE7SUFDMUIsQ0FBQztJQUVELElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1FBQzNCLDhEQUE4RDtRQUM5RCxNQUFNLE1BQU0sR0FBRyxFQUFFLENBQUE7UUFFakIsS0FBSyxNQUFNLEtBQUssSUFBSSxPQUFPLEVBQUUsQ0FBQztZQUM1QixJQUFJLE9BQU8sS0FBSyxJQUFJLFFBQVEsRUFBRSxDQUFDO2dCQUM3QixNQUFNLENBQUMsS0FBSyxDQUFDLEdBQUcsSUFBSSxDQUFBO2dCQUNwQixTQUFRO1lBQ1YsQ0FBQztZQUVELElBQUksS0FBSyxJQUFJLE9BQU8sS0FBSyxJQUFJLFFBQVEsRUFBRSxDQUFDO2dCQUN0QyxNQUFNLGVBQWUsR0FBRyxzQkFBc0IsQ0FBQyxLQUFLLENBQUMsQ0FBQTtnQkFFckQsSUFBSSxlQUFlLEVBQUUsQ0FBQztvQkFDcEIsS0FBSyxN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dCI6WyIvLyBAdHMtY2hlY2tcblxuaW1wb3J0IEJlbG9uZ3NUb1ByZWxvYWRlciBmcm9tIFwiLi9wcmVsb2FkZXIvYmVsb25ncy10by5qc1wiXG5pbXBvcnQgSGFzTWFueVByZWxvYWRlciBmcm9tIFwiLi9wcmVsb2FkZXIvaGFzLW1hbnkuanNcIlxuaW1wb3J0IEhhc09uZVByZWxvYWRlciBmcm9tIFwiLi9wcmVsb2FkZXIvaGFzLW9uZS5qc1wiXG5pbXBvcnQgUHJlbG9hZGVyU2VsZWN0aW9uIGZyb20gXCIuL3ByZWxvYWRlci9zZWxlY3Rpb24uanNcIlxuaW1wb3J0IHJlc3RBcmdzRXJyb3IgZnJvbSBcIi4uLy4uL3V0aWxzL3Jlc3QtYXJncy1lcnJvci5qc1wiXG5cbi8qKlxuICogQHBhcmFtIHtpbXBvcnQoXCIuLi9xdWVyeS9pbmRleC5qc1wiKS5OZXN0ZWRQcmVsb2FkUmVjb3JkIHwgc3RyaW5nIHwgc3RyaW5nW10gfCBib29sZWFufSBwcmVsb2FkIC0gUHJlbG9hZCBkYXRhIGluIHNob3J0aGFuZCBvciBuZXN0ZWQgZm9ybS5cbiAqIEByZXR1cm5zIHtpbXBvcnQoXCIuLi9xdWVyeS9pbmRleC5qc1wiKS5OZXN0ZWRQcmVsb2FkUmVjb3JkIHwgbnVsbH0gLSBOb3JtYWxpemVkIG5lc3RlZCBwcmVsb2FkIHJlY29yZC5cbiAqL1xuZnVuY3Rpb24gbm9ybWFsaXplTmVzdGVkUHJlbG9hZChwcmVsb2FkKSB7XG4gIGlmICghcHJlbG9hZCB8fCB0eXBlb2YgcHJlbG9hZCA9PSBcImJvb2xlYW5cIikgcmV0dXJuIG51bGxcblxuICBpZiAodHlwZW9mIHByZWxvYWQgPT0gXCJzdHJpbmdcIikge1xuICAgIHJldHVybiB7W3ByZWxvYWRdOiB0cnVlfVxuICB9XG5cbiAgaWYgKEFycmF5LmlzQXJyYXkocHJlbG9hZCkpIHtcbiAgICAvKiogQHR5cGUge2ltcG9ydChcIi4uL3F1ZXJ5L2luZGV4LmpzXCIpLk5lc3RlZFByZWxvYWRSZWNvcmR9ICovXG4gICAgY29uc3QgcmVzdWx0ID0ge31cblxuICAgIGZvciAoY29uc3QgZW50cnkgb2YgcHJlbG9hZCkge1xuICAgICAgaWYgKHR5cGVvZiBlbnRyeSA9PSBcInN0cmluZ1wiKSB7XG4gICAgICAgIHJlc3VsdFtlbnRyeV0gPSB0cnVlXG4gICAgICAgIGNvbnRpbnVlXG4gICAgICB9XG5cbiAgICAgIGlmIChlbnRyeSAmJiB0eXBlb2YgZW50cnkgPT0gXCJvYmplY3RcIikge1xuICAgICAgICBjb25zdCBub3JtYWxpemVkRW50cnkgPSBub3JtYWxpemVOZXN0ZWRQcmVsb2FkKGVudHJ5KVxuXG4gICAgICAgIGlmIChub3JtYWxpemVkRW50cnkpIHtcbiAgICAgICAgICBmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyhub3JtYWxpemVkRW50cnkpKSB7XG4gICAgICAgICAgICByZXN1bHRba2V5XSA9IHZhbHVlXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGNvbnRpbnVlXG4gICAgICB9XG5cbiAgICAgIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCBwcmVsb2FkIGVudHJ5IHR5cGU6ICR7dHlwZW9mIGVudHJ5fWApXG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc3VsdFxuICB9XG5cbiAgaWYgKHByZWxvYWQgJiYgdHlwZW9mIHByZWxvYWQgPT0gXCJvYmplY3RcIikge1xuICAgIC8qKiBAdHlwZSB7aW1wb3J0KFwiLi4vcXVlcnkvaW5kZXguanNcIikuTmVzdGVkUHJlbG9hZFJlY29yZH0gKi9cbiAgICBjb25zdCByZXN1bHQgPSB7fVxuXG4gICAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXMocHJlbG9hZCkpIHtcbiAgICAgIGlmICh2YWx1ZSA9PT0gdHJ1ZSB8fCB2YWx1ZSA9PT0gZmFsc2UpIHtcbiAgICAgICAgcmVzdWx0W2tleV0gPSB2YWx1ZVxuICAgICAgICBjb250aW51ZVxuICAgICAgfVxuXG4gICAgICBjb25zdCBub3JtYWxpemVkVmFsdWUgPSBub3JtYWxpemVOZXN0ZWRQcmVsb2FkKHZhbHVlKVxuXG4gICAgICBpZiAobm9ybWFsaXplZFZhbHVlKSB7XG4gICAgICAgIHJlc3VsdFtrZXldID0gbm9ybWFsaXplZFZhbHVlXG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgcHJlbG9hZCB2YWx1ZSBmb3IgJHtrZXl9OiAke3R5cGVvZiB2YWx1ZX1gKVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiByZXN1bHRcbiAgfVxuXG4gIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCBwcmVsb2FkIHR5cGU6ICR7dHlwZW9mIHByZWxvYWR9YClcbn1cblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgVmVsb2Npb3VzRGF0YWJhc2VRdWVyeVByZWxvYWRlciB7XG4gIC8qKlxuICAgKiBQcmVsb2FkcyByZWxhdGlvbnNoaXAocykgb250byBvbmUgb3IgbW9yZSBhbHJlYWR5LWxvYWRlZCBtb2RlbCBpbnN0YW5jZXMuXG4gICAqIEFjY2VwdHMgZWl0aGVyIGEgcXVlcnkgYnVpbHQgdmlhIGBNb2RlbC5wcmVsb2FkKC4uLikuc2VsZWN0KC4uLilgIChpdHNcbiAgICogcHJlbG9hZCBncmFwaCBhbmQgc2VsZWN0cyBhcmUgdXNlZCkgb3IgYSByYXcgcHJlbG9hZCBzcGVjXG4gICAqIChzdHJpbmcgLyBhcnJheSAvIG5lc3RlZCBvYmplY3QpLlxuICAgKiBAcGFyYW0ge0FycmF5PGltcG9ydChcIi4uL3JlY29yZC9pbmRleC5qc1wiKS5kZWZhdWx0Pn0gbW9kZWxzIC0gTW9kZWwgaW5zdGFuY2VzIHRvIHByZWxvYWQgb250by5cbiAgICogQHBhcmFtIHtpbXBvcnQoXCIuL21vZGVsLWNsYXNzLXF1ZXJ5LmpzXCIpLmRlZmF1bHQgfCBpbXBvcnQoXCIuL2luZGV4LmpzXCIpLk5lc3RlZFByZWxvYWRSZWNvcmQgfCBzdHJpbmcgfCBBcnJheTxzdHJpbmcgfCBpbXBvcnQoXCIuL2luZGV4LmpzXCIpLk5lc3RlZFByZWxvYWRSZWNvcmQ+fSBxdWVyeU9yU3BlYyAtIFByZWxvYWQgc291cmNlLlxuICAgKiBAcGFyYW0ge3tmb3JjZT86IGJvb2xlYW59fSBbb3B0aW9uc10gLSBPcHRpb25zLlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTx2b2lkPn0gLSBSZXNvbHZlcyB3aGVuIHByZWxvYWRpbmcgY29tcGxldGVzLlxuICAgKi9cbiAgc3RhdGljIGFzeW5jIHByZWxvYWQobW9kZWxzLCBxdWVyeU9yU3BlYywge2ZvcmNlID0gZmFsc2V9ID0ge30pIHtcbiAgICBpZiAobW9kZWxzLmxlbmd0aCA9PSAwKSByZXR1cm5cblxuICAgIGNvbnN0IG1vZGVsQ2xhc3MgPSAvKiogQHR5cGUge3R5cGVvZiBpbXBvcnQoXCIuLi9yZWNvcmQvaW5kZXguanNcIikuZGVmYXVsdH0gKi8gKG1vZGVsc1swXS5jb25zdHJ1Y3RvcilcbiAgICBjb25zdCBpc1F1ZXJ5ID0gQm9vbGVhbihxdWVyeU9yU3BlYykgJiYgdHlwZW9mIHF1ZXJ5T3JTcGVjID09IFwib2JqZWN0XCIgJiYgXCJfcHJlbG9hZFwiIGluIHF1ZXJ5T3JTcGVjXG4gICAgLy8gUmV1c2UgdGhlIHF1ZXJ5IGJ1aWxkZXIncyBwcmVsb2FkL3NlbGVjdCBub3JtYWxpemF0aW9uIGZvciByYXcgc3BlY3NcbiAgICAvLyBpbnN0ZWFkIG9mIGR1cGxpY2F0aW5nIGl0IGhlcmUuXG4gICAgY29uc3QgcXVlcnkgPSBpc1F1ZXJ5XG4gICAgICA/IC8qKiBAdHlwZSB7aW1wb3J0KFwiLi9tb2RlbC1jbGFzcy1xdWVyeS5qc1wiKS5kZWZhdWx0fSAqLyAocXVlcnlPclNwZWMpXG4gICAgICA6IG1vZGVsQ2xhc3MucHJlbG9hZCgvKiogQHR5cGUge2FueX0gKi8gKHF1ZXJ5T3JTcGVjKSlcblxuICAgIGNvbnN0IHByZWxvYWRlciA9IG5ldyBWZWxvY2lvdXNEYXRhYmFzZVF1ZXJ5UHJlbG9hZGVyKHtcbiAgICAgIG1vZGVsQ2xhc3MsXG4gICAgICBtb2RlbHMsXG4gICAgICBwcmVsb2FkOiBxdWVyeS5fcHJlbG9hZCxcbiAgICAgIHNlbGVjdGlvbjogbmV3IFByZWxvYWRlclNlbGVjdGlvbih7XG4gICAgICAgIHByZWxvYWRTZWxlY3RzOiBxdWVyeS5fcHJlbG9hZFNlbGVjdHMsXG4gICAgICAgIHByZWxvYWRTZWxlY3RzRXh0cmE6IHF1ZXJ5Ll9wcmVsb2FkU2VsZWN0c0V4dHJhLFxuICAgICAgICBmb3JjZVxuICAgICAgfSlcbiAgICB9KVxuXG4gICAgYXdhaXQgcHJlbG9hZGVyLnJ1bigpXG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHtvYmplY3R9IGFyZ3MgLSBPcHRpb25zIG9iamVjdC5cbiAgICogQHBhcmFtIHt0eXBlb2YgaW1wb3J0KFwiLi4vcmVjb3JkL2luZGV4LmpzXCIpLmRlZmF1bHR9IGFyZ3MubW9kZWxDbGFzcyAtIE1vZGVsIGNsYXNzLlxuICAgKiBAcGFyYW0ge2ltcG9ydChcIi4uL3JlY29yZC9pbmRleC5qc1wiKS5kZWZhdWx0W119IGFyZ3MubW9kZWxzIC0gTW9kZWwgaW5zdGFuY2VzLlxuICAgKiBAcGFyYW0ge2ltcG9ydChcIi4uL3F1ZXJ5L2luZGV4LmpzXCIpLk5lc3RlZFByZWxvYWRSZWNvcmR9IGFyZ3MucHJlbG9hZCAtIFByZWxvYWQuXG4gICAqIEBwYXJhbSB7UmVjb3JkPHN0cmluZywgc3RyaW5nW10+fSBbYXJncy5wcmVsb2FkU2VsZWN0c10gLSBOYXJyb3dpbmcgc2VsZWN0cyBrZXllZCBieSB0YXJnZXQgbW9kZWwgbmFtZS5cbiAgICogQHBhcmFtIHtSZWNvcmQ8c3RyaW5nLCBzdHJpbmdbXT59IFthcmdzLnByZWxvYWRTZWxlY3RzRXh0cmFdIC0gRXh0cmEgc2VsZWN0cyBrZXllZCBieSB0YXJnZXQgbW9kZWwgbmFtZS5cbiAgICogQHBhcmFtIHtQcmVsb2FkZXJTZWxlY3Rpb259IFthcmdzLnNlbGVjdGlvbl0gLSBQcmUtYnVpbHQgc2VsZWN0aW9uICh0YWtlcyBwcmVjZWRlbmNlIG92ZXIgdGhlIHNlbGVjdCBtYXBzIHdoZW4gZ2l2ZW4pLlxuICAgKi9cbiAgY29uc3RydWN0b3Ioe21vZGVsQ2xhc3MsIG1vZGVscywgcHJlbG9hZCwgcHJlbG9hZFNlbGVjdHMgPSB7fSwgcHJlbG9hZFNlbGVjdHNFeHRyYSA9IHt9LCBzZWxlY3Rpb24sIC4uLnJlc3RBcmdzfSkge1xuICAgIHJlc3RBcmdzRXJyb3IocmVzdEFyZ3MpXG5cbiAgICB0aGlzLm1vZGVsQ2xhc3MgPSBtb2RlbENsYXNzXG4gICAgdGhpcy5tb2RlbHMgPSBtb2RlbHNcbiAgICB0aGlzLnByZWxvYWQgPSBwcmVsb2FkXG4gICAgdGhpcy5zZWxlY3Rpb24gPSBzZWxlY3Rpb24gfHwgbmV3IFByZWxvYWRlclNlbGVjdGlvbih7cHJlbG9hZFNlbGVjdHMsIHByZWxvYWRTZWxlY3RzRXh0cmF9KVxuICB9XG5cbiAgYXN5bmMgcnVuKCkge1xuICAgIGZvciAoY29uc3QgcHJlbG9hZFJlbGF0aW9uc2hpcE5hbWUgaW4gdGhpcy5wcmVsb2FkKSB7XG4gICAgICBjb25zdCByZWxhdGlvbnNoaXAgPSB0aGlzLm1vZGVsQ2xhc3MuZ2V0UmVsYXRpb25zaGlwQnlOYW1lKHByZWxvYWRSZWxhdGlvbnNoaXBOYW1lKVxuICAgICAgbGV0IHByZWxvYWRSZXN1bHRcblxuICAgICAgaWYgKHJlbGF0aW9uc2hpcC5nZXRUeXBlKCkgPT0gXCJiZWxvbmdzVG9cIikge1xuICAgICAgICBjb25zdCBiZWxvbmdzVG9SZWxhdGlvbnNoaXAgPSAvKiogQHR5cGUge2ltcG9ydChcIi4uL3JlY29yZC9yZWxhdGlvbnNoaXBzL2JlbG9uZ3MtdG8uanNcIikuZGVmYXVsdH0gKi8gKHJlbGF0aW9uc2hpcClcbiAgICAgICAgY29uc3QgaGFzTWFueVByZWxvYWRlciA9IG5ldyBCZWxvbmdzVG9QcmVsb2FkZXIoe21vZGVsczogdGhpcy5tb2RlbHMsIHJlbGF0aW9uc2hpcDogYmVsb25nc1RvUmVsYXRpb25zaGlwLCBzZWxlY3Rpb246IHRoaXMuc2VsZWN0aW9ufSlcblxuICAgICAgICBwcmVsb2FkUmVzdWx0ID0gYXdhaXQgaGFzTWFueVByZWxvYWRlci5ydW4oKVxuICAgICAgfSBlbHNlIGlmIChyZWxhdGlvbnNoaXAuZ2V0VHlwZSgpID09IFwiaGFzTWFueVwiKSB7XG4gICAgICAgIGNvbnN0IGhhc01hbnlSZWxhdGlvbnNoaXAgPSAvKiogQHR5cGUge2ltcG9ydChcIi4uL3JlY29yZC9yZWxhdGlvbnNoaXBzL2hhcy1tYW55LmpzXCIpLmRlZmF1bHR9ICovIChyZWxhdGlvbnNoaXApXG4gICAgICAgIGNvbnN0IGhhc01hbnlQcmVsb2FkZXIgPSBuZXcgSGFzTWFueVByZWxvYWRlcih7bW9kZWxzOiB0aGlzLm1vZGVscywgcmVsYXRpb25zaGlwOiBoYXNNYW55UmVsYXRpb25zaGlwLCBzZWxlY3Rpb246IHRoaXMuc2VsZWN0aW9ufSlcblxuICAgICAgICBwcmVsb2FkUmVzdWx0ID0gYXdhaXQgaGFzTWFueVByZWxvYWRlci5ydW4oKVxuICAgICAgfSBlbHNlIGlmIChyZWxhdGlvbnNoaXAuZ2V0VHlwZSgpID09IFwiaGFzT25lXCIpIHtcbiAgICAgICAgY29uc3QgaGFzT25lUmVsYXRpb25zaGlwID0gLyoqIEB0eXBlIHtpbXBvcnQoXCIuLi9yZWNvcmQvcmVsYXRpb25zaGlwcy9oYXMtb25lLmpzXCIpLmRlZmF1bHR9ICovIChyZWxhdGlvbnNoaXApXG4gICAgICAgIGNvbnN0IGhhc09uZVByZWxvYWRlciA9IG5ldyBIYXNPbmVQcmVsb2FkZXIoe21vZGVsczogdGhpcy5tb2RlbHMsIHJlbGF0aW9uc2hpcDogaGFzT25lUmVsYXRpb25zaGlwLCBzZWxlY3Rpb246IHRoaXMuc2VsZWN0aW9ufSlcblxuICAgICAgICBwcmVsb2FkUmVzdWx0ID0gYXdhaXQgaGFzT25lUHJlbG9hZGVyLnJ1bigpXG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFVua25vd24gcmVsYXRpb25zaGlwIHR5cGU6ICR7cmVsYXRpb25zaGlwLmdldFR5cGUoKX1gKVxuICAgICAgfVxuXG4gICAgICBjb25zdCB0YXJnZXRNb2RlbHMgPSBBcnJheS5pc0FycmF5KHByZWxvYWRSZXN1bHQpID8gcHJlbG9hZFJlc3VsdCA6IChwcmVsb2FkUmVzdWx0Py50YXJnZXRNb2RlbHMgfHwgW10pXG4gICAgICBjb25zdCB0YXJnZXRNb2RlbHNCeUNsYXNzTmFtZSA9IEFycmF5LmlzQXJyYXkocHJlbG9hZFJlc3VsdCkgPyB1bmRlZmluZWQgOiBwcmVsb2FkUmVzdWx0Py50YXJnZXRNb2RlbHNCeUNsYXNzTmFtZVxuXG4gICAgICAvLyBIYW5kbGUgYW55IGZ1cnRoZXIgcHJlbG9hZHMgaW4gdGhlIHRyZWVcbiAgICAgIGNvbnN0IG5ld1ByZWxvYWQgPSB0aGlzLnByZWxvYWRbcHJlbG9hZFJlbGF0aW9uc2hpcE5hbWVdXG4gICAgICBjb25zdCBub3JtYWxpemVkUHJlbG9hZCA9IG5vcm1hbGl6ZU5lc3RlZFByZWxvYWQobmV3UHJlbG9hZClcblxuICAgICAgaWYgKG5vcm1hbGl6ZWRQcmVsb2FkICYmIHRhcmdldE1vZGVscy5sZW5ndGggPiAwKSB7XG4gICAgICAgIGlmIChyZWxhdGlvbnNoaXAuZ2V0UG9seW1vcnBoaWMoKSAmJiB0YXJnZXRNb2RlbHNCeUNsYXNzTmFtZSkge1xuICAgICAgICAgIGNvbnN0IGNvbmZpZ3VyYXRpb24gPSByZWxhdGlvbnNoaXAuZ2V0Q29uZmlndXJhdGlvbigpXG5cbiAgICAgICAgICBmb3IgKGNvbnN0IGNsYXNzTmFtZSBpbiB0YXJnZXRNb2RlbHNCeUNsYXNzTmFtZSkge1xuICAgICAgICAgICAgY29uc3QgbW9kZWxzID0gdGFyZ2V0TW9kZWxzQnlDbGFzc05hbWVbY2xhc3NOYW1lXVxuXG4gICAgICAgICAgICBpZiAobW9kZWxzLmxlbmd0aCA9PSAwKSBjb250aW51ZVxuXG4gICAgICAgICAgICBjb25zdCB0YXJnZXRNb2RlbENsYXNzID0gY29uZmlndXJhdGlvbi5nZXRNb2RlbENsYXNzKGNsYXNzTmFtZSlcbiAgICAgICAgICAgIGNvbnN0IHByZWxvYWRlciA9IG5ldyBWZWxvY2lvdXNEYXRhYmFzZVF1ZXJ5UHJlbG9hZGVyKHttb2RlbENsYXNzOiB0YXJnZXRNb2RlbENsYXNzLCBtb2RlbHMsIHByZWxvYWQ6IG5vcm1hbGl6ZWRQcmVsb2FkLCBzZWxlY3Rpb246IHRoaXMuc2VsZWN0aW9ufSlcblxuICAgICAgICAgICAgYXdhaXQgcHJlbG9hZGVyLnJ1bigpXG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbnN0IHRhcmdldE1vZGVsQ2xhc3MgPSByZWxhdGlvbnNoaXAuZ2V0VGFyZ2V0TW9kZWxDbGFzcygpXG5cbiAgICAgICAgICBpZiAoIXRhcmdldE1vZGVsQ2xhc3MpIHRocm93IG5ldyBFcnJvcihcIk5vIHRhcmdldCBtb2RlbCBjbGFzcyBjb3VsZCBiZSBnb3R0ZW4gZnJvbSByZWxhdGlvbnNoaXBcIilcblxuICAgICAgICAgIGNvbnN0IHByZWxvYWRlciA9IG5ldyBWZWxvY2lvdXNEYXRhYmFzZVF1ZXJ5UHJlbG9hZGVyKHttb2RlbENsYXNzOiB0YXJnZXRNb2RlbENsYXNzLCBtb2RlbHM6IHRhcmdldE1vZGVscywgcHJlbG9hZDogbm9ybWFsaXplZFByZWxvYWQsIHNlbGVjdGlvbjogdGhpcy5zZWxlY3Rpb259KVxuXG4gICAgICAgICAgYXdhaXQgcHJlbG9hZGVyLnJ1bigpXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiJdfQ==
176
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJlbG9hZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2RhdGFiYXNlL3F1ZXJ5L3ByZWxvYWRlci5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxZQUFZO0FBRVosT0FBTyxrQkFBa0IsTUFBTSwyQkFBMkIsQ0FBQTtBQUMxRCxPQUFPLGdCQUFnQixNQUFNLHlCQUF5QixDQUFBO0FBQ3RELE9BQU8sZUFBZSxNQUFNLHdCQUF3QixDQUFBO0FBQ3BELE9BQU8sa0JBQWtCLE1BQU0sMEJBQTBCLENBQUE7QUFDekQsT0FBTyxhQUFhLE1BQU0sZ0NBQWdDLENBQUE7QUFFMUQ7Ozs7R0FJRztBQUNILFNBQVMsc0JBQXNCLENBQUMsT0FBTztJQUNyQyxJQUFJLENBQUMsT0FBTyxJQUFJLE9BQU8sT0FBTyxJQUFJLFNBQVM7UUFBRSxPQUFPLElBQUksQ0FBQTtJQUV4RCxJQUFJLE9BQU8sT0FBTyxJQUFJLFFBQVEsRUFBRSxDQUFDO1FBQy9CLE9BQU8sRUFBQyxDQUFDLE9BQU8sQ0FBQyxFQUFFLElBQUksRUFBQyxDQUFBO0lBQzFCLENBQUM7SUFFRCxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztRQUMzQjs7b0VBRTREO1FBQzVELE1BQU0sTUFBTSxHQUFHLEVBQUUsQ0FBQTtRQUVqQixLQUFLLE1BQU0sS0FBSyxJQUFJLE9BQU8sRUFBRSxDQUFDO1lBQzVCLElBQUksT0FBTyxLQUFLLElBQUksUUFBUSxFQUFFLENBQUM7Z0JBQzdCLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxJQUFJLENBQUE7Z0JBQ3BCLFNBQVE7WUFDVixDQUFDO1lBRUQsSUFBSSxLQUFLLElBQUksT0FBTyxLQUFLLElBQUksUUFBUSxFQUFFLENBQUM7Z0JBQ3RDLE1BQU0sZUFBZSxHQUFHLHNCQUFzQixDQUFDLEtBQUssQ0FBQyxDQUFBO2dCQUVyRCxJQUFJLGVBQWUsRUFBRSxDQUFDO29CQUNwQixLQUFL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cmNlc0NvbnRlbnQiOlsiLy8gQHRzLWNoZWNrXG5cbmltcG9ydCBCZWxvbmdzVG9QcmVsb2FkZXIgZnJvbSBcIi4vcHJlbG9hZGVyL2JlbG9uZ3MtdG8uanNcIlxuaW1wb3J0IEhhc01hbnlQcmVsb2FkZXIgZnJvbSBcIi4vcHJlbG9hZGVyL2hhcy1tYW55LmpzXCJcbmltcG9ydCBIYXNPbmVQcmVsb2FkZXIgZnJvbSBcIi4vcHJlbG9hZGVyL2hhcy1vbmUuanNcIlxuaW1wb3J0IFByZWxvYWRlclNlbGVjdGlvbiBmcm9tIFwiLi9wcmVsb2FkZXIvc2VsZWN0aW9uLmpzXCJcbmltcG9ydCByZXN0QXJnc0Vycm9yIGZyb20gXCIuLi8uLi91dGlscy9yZXN0LWFyZ3MtZXJyb3IuanNcIlxuXG4vKipcbiAqIFJ1bnMgbm9ybWFsaXplIG5lc3RlZCBwcmVsb2FkLlxuICogQHBhcmFtIHtpbXBvcnQoXCIuLi9xdWVyeS9pbmRleC5qc1wiKS5OZXN0ZWRQcmVsb2FkUmVjb3JkIHwgc3RyaW5nIHwgc3RyaW5nW10gfCBib29sZWFufSBwcmVsb2FkIC0gUHJlbG9hZCBkYXRhIGluIHNob3J0aGFuZCBvciBuZXN0ZWQgZm9ybS5cbiAqIEByZXR1cm5zIHtpbXBvcnQoXCIuLi9xdWVyeS9pbmRleC5qc1wiKS5OZXN0ZWRQcmVsb2FkUmVjb3JkIHwgbnVsbH0gLSBOb3JtYWxpemVkIG5lc3RlZCBwcmVsb2FkIHJlY29yZC5cbiAqL1xuZnVuY3Rpb24gbm9ybWFsaXplTmVzdGVkUHJlbG9hZChwcmVsb2FkKSB7XG4gIGlmICghcHJlbG9hZCB8fCB0eXBlb2YgcHJlbG9hZCA9PSBcImJvb2xlYW5cIikgcmV0dXJuIG51bGxcblxuICBpZiAodHlwZW9mIHByZWxvYWQgPT0gXCJzdHJpbmdcIikge1xuICAgIHJldHVybiB7W3ByZWxvYWRdOiB0cnVlfVxuICB9XG5cbiAgaWYgKEFycmF5LmlzQXJyYXkocHJlbG9hZCkpIHtcbiAgICAvKipcbiAgICAgKiBSZXN1bHQuXG4gICAgICBAdHlwZSB7aW1wb3J0KFwiLi4vcXVlcnkvaW5kZXguanNcIikuTmVzdGVkUHJlbG9hZFJlY29yZH0gKi9cbiAgICBjb25zdCByZXN1bHQgPSB7fVxuXG4gICAgZm9yIChjb25zdCBlbnRyeSBvZiBwcmVsb2FkKSB7XG4gICAgICBpZiAodHlwZW9mIGVudHJ5ID09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgcmVzdWx0W2VudHJ5XSA9IHRydWVcbiAgICAgICAgY29udGludWVcbiAgICAgIH1cblxuICAgICAgaWYgKGVudHJ5ICYmIHR5cGVvZiBlbnRyeSA9PSBcIm9iamVjdFwiKSB7XG4gICAgICAgIGNvbnN0IG5vcm1hbGl6ZWRFbnRyeSA9IG5vcm1hbGl6ZU5lc3RlZFByZWxvYWQoZW50cnkpXG5cbiAgICAgICAgaWYgKG5vcm1hbGl6ZWRFbnRyeSkge1xuICAgICAgICAgIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKG5vcm1hbGl6ZWRFbnRyeSkpIHtcbiAgICAgICAgICAgIHJlc3VsdFtrZXldID0gdmFsdWVcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgY29udGludWVcbiAgICAgIH1cblxuICAgICAgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIHByZWxvYWQgZW50cnkgdHlwZTogJHt0eXBlb2YgZW50cnl9YClcbiAgICB9XG5cbiAgICByZXR1cm4gcmVzdWx0XG4gIH1cblxuICBpZiAocHJlbG9hZCAmJiB0eXBlb2YgcHJlbG9hZCA9PSBcIm9iamVjdFwiKSB7XG4gICAgLyoqXG4gICAgICogUmVzdWx0LlxuICAgICAgQHR5cGUge2ltcG9ydChcIi4uL3F1ZXJ5L2luZGV4LmpzXCIpLk5lc3RlZFByZWxvYWRSZWNvcmR9ICovXG4gICAgY29uc3QgcmVzdWx0ID0ge31cblxuICAgIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKHByZWxvYWQpKSB7XG4gICAgICBpZiAodmFsdWUgPT09IHRydWUgfHwgdmFsdWUgPT09IGZhbHNlKSB7XG4gICAgICAgIHJlc3VsdFtrZXldID0gdmFsdWVcbiAgICAgICAgY29udGludWVcbiAgICAgIH1cblxuICAgICAgY29uc3Qgbm9ybWFsaXplZFZhbHVlID0gbm9ybWFsaXplTmVzdGVkUHJlbG9hZCh2YWx1ZSlcblxuICAgICAgaWYgKG5vcm1hbGl6ZWRWYWx1ZSkge1xuICAgICAgICByZXN1bHRba2V5XSA9IG5vcm1hbGl6ZWRWYWx1ZVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIHByZWxvYWQgdmFsdWUgZm9yICR7a2V5fTogJHt0eXBlb2YgdmFsdWV9YClcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gcmVzdWx0XG4gIH1cblxuICB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgcHJlbG9hZCB0eXBlOiAke3R5cGVvZiBwcmVsb2FkfWApXG59XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFZlbG9jaW91c0RhdGFiYXNlUXVlcnlQcmVsb2FkZXIge1xuICAvKipcbiAgICogUHJlbG9hZHMgcmVsYXRpb25zaGlwKHMpIG9udG8gb25lIG9yIG1vcmUgYWxyZWFkeS1sb2FkZWQgbW9kZWwgaW5zdGFuY2VzLlxuICAgKiBBY2NlcHRzIGVpdGhlciBhIHF1ZXJ5IGJ1aWx0IHZpYSBgTW9kZWwucHJlbG9hZCguLi4pLnNlbGVjdCguLi4pYCAoaXRzXG4gICAqIHByZWxvYWQgZ3JhcGggYW5kIHNlbGVjdHMgYXJlIHVzZWQpIG9yIGEgcmF3IHByZWxvYWQgc3BlY1xuICAgKiAoc3RyaW5nIC8gYXJyYXkgLyBuZXN0ZWQgb2JqZWN0KS5cbiAgICogQHBhcmFtIHtBcnJheTxpbXBvcnQoXCIuLi9yZWNvcmQvaW5kZXguanNcIikuZGVmYXVsdD59IG1vZGVscyAtIE1vZGVsIGluc3RhbmNlcyB0byBwcmVsb2FkIG9udG8uXG4gICAqIEBwYXJhbSB7aW1wb3J0KFwiLi9tb2RlbC1jbGFzcy1xdWVyeS5qc1wiKS5kZWZhdWx0IHwgaW1wb3J0KFwiLi9pbmRleC5qc1wiKS5OZXN0ZWRQcmVsb2FkUmVjb3JkIHwgc3RyaW5nIHwgQXJyYXk8c3RyaW5nIHwgaW1wb3J0KFwiLi9pbmRleC5qc1wiKS5OZXN0ZWRQcmVsb2FkUmVjb3JkPn0gcXVlcnlPclNwZWMgLSBQcmVsb2FkIHNvdXJjZS5cbiAgICogQHBhcmFtIHt7Zm9yY2U/OiBib29sZWFufX0gW29wdGlvbnNdIC0gT3B0aW9ucy5cbiAgICogQHJldHVybnMge1Byb21pc2U8dm9pZD59IC0gUmVzb2x2ZXMgd2hlbiBwcmVsb2FkaW5nIGNvbXBsZXRlcy5cbiAgICovXG4gIHN0YXRpYyBhc3luYyBwcmVsb2FkKG1vZGVscywgcXVlcnlPclNwZWMsIHtmb3JjZSA9IGZhbHNlfSA9IHt9KSB7XG4gICAgaWYgKG1vZGVscy5sZW5ndGggPT0gMCkgcmV0dXJuXG5cbiAgICBjb25zdCBtb2RlbENsYXNzID0gLyoqXG4gICAgICAgICAgICAgICAgICAgICAgICAqIE5hcnJvd3MgdGhlIHJ1bnRpbWUgdmFsdWUgdG8gdGhlIGRvY3VtZW50ZWQgdHlwZS5cbiAgICAgICAgICAgICAgICAgICAgICAgICBAdHlwZSB7dHlwZW9mIGltcG9ydChcIi4uL3JlY29yZC9pbmRleC5qc1wiKS5kZWZhdWx0fSAqLyAobW9kZWxzWzBdLmNvbnN0cnVjdG9yKVxuICAgIGNvbnN0IGlzUXVlcnkgPSBCb29sZWFuKHF1ZXJ5T3JTcGVjKSAmJiB0eXBlb2YgcXVlcnlPclNwZWMgPT0gXCJvYmplY3RcIiAmJiBcIl9wcmVsb2FkXCIgaW4gcXVlcnlPclNwZWNcbiAgICAvLyBSZXVzZSB0aGUgcXVlcnkgYnVpbGRlcidzIHByZWxvYWQvc2VsZWN0IG5vcm1hbGl6YXRpb24gZm9yIHJhdyBzcGVjc1xuICAgIC8vIGluc3RlYWQgb2YgZHVwbGljYXRpbmcgaXQgaGVyZS5cbiAgICBjb25zdCBxdWVyeSA9IGlzUXVlcnlcbiAgICAgID8gLyoqXG4gICAgICAgICAqIE5hcnJvd3MgdGhlIHJ1bnRpbWUgdmFsdWUgdG8gdGhlIGRvY3VtZW50ZWQgdHlwZS5cbiAgICAgICAgICBAdHlwZSB7aW1wb3J0KFwiLi9tb2RlbC1jbGFzcy1xdWVyeS5qc1wiKS5kZWZhdWx0fSAqLyAocXVlcnlPclNwZWMpXG4gICAgICA6IG1vZGVsQ2xhc3MucHJlbG9hZCgvKipcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIE5hcnJvd3MgdGhlIHJ1bnRpbWUgdmFsdWUgdG8gdGhlIGRvY3VtZW50ZWQgdHlwZS5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQHR5cGUgez99ICovIChxdWVyeU9yU3BlYykpXG5cbiAgICBjb25zdCBwcmVsb2FkZXIgPSBuZXcgVmVsb2Npb3VzRGF0YWJhc2VRdWVyeVByZWxvYWRlcih7XG4gICAgICBtb2RlbENsYXNzLFxuICAgICAgbW9kZWxzLFxuICAgICAgcHJlbG9hZDogcXVlcnkuX3ByZWxvYWQsXG4gICAgICBzZWxlY3Rpb246IG5ldyBQcmVsb2FkZXJTZWxlY3Rpb24oe1xuICAgICAgICBwcmVsb2FkU2VsZWN0czogcXVlcnkuX3ByZWxvYWRTZWxlY3RzLFxuICAgICAgICBwcmVsb2FkU2VsZWN0c0V4dHJhOiBxdWVyeS5fcHJlbG9hZFNlbGVjdHNFeHRyYSxcbiAgICAgICAgZm9yY2VcbiAgICAgIH0pXG4gICAgfSlcblxuICAgIGF3YWl0IHByZWxvYWRlci5ydW4oKVxuICB9XG5cbiAgLyoqXG4gICAqIFJ1bnMgY29uc3RydWN0b3IuXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBhcmdzIC0gT3B0aW9ucyBvYmplY3QuXG4gICAqIEBwYXJhbSB7dHlwZW9mIGltcG9ydChcIi4uL3JlY29yZC9pbmRleC5qc1wiKS5kZWZhdWx0fSBhcmdzLm1vZGVsQ2xhc3MgLSBNb2RlbCBjbGFzcy5cbiAgICogQHBhcmFtIHtpbXBvcnQoXCIuLi9yZWNvcmQvaW5kZXguanNcIikuZGVmYXVsdFtdfSBhcmdzLm1vZGVscyAtIE1vZGVsIGluc3RhbmNlcy5cbiAgICogQHBhcmFtIHtpbXBvcnQoXCIuLi9xdWVyeS9pbmRleC5qc1wiKS5OZXN0ZWRQcmVsb2FkUmVjb3JkfSBhcmdzLnByZWxvYWQgLSBQcmVsb2FkLlxuICAgKiBAcGFyYW0ge1JlY29yZDxzdHJpbmcsIHN0cmluZ1tdPn0gW2FyZ3MucHJlbG9hZFNlbGVjdHNdIC0gTmFycm93aW5nIHNlbGVjdHMga2V5ZWQgYnkgdGFyZ2V0IG1vZGVsIG5hbWUuXG4gICAqIEBwYXJhbSB7UmVjb3JkPHN0cmluZywgc3RyaW5nW10+fSBbYXJncy5wcmVsb2FkU2VsZWN0c0V4dHJhXSAtIEV4dHJhIHNlbGVjdHMga2V5ZWQgYnkgdGFyZ2V0IG1vZGVsIG5hbWUuXG4gICAqIEBwYXJhbSB7UHJlbG9hZGVyU2VsZWN0aW9ufSBbYXJncy5zZWxlY3Rpb25dIC0gUHJlLWJ1aWx0IHNlbGVjdGlvbiAodGFrZXMgcHJlY2VkZW5jZSBvdmVyIHRoZSBzZWxlY3QgbWFwcyB3aGVuIGdpdmVuKS5cbiAgICovXG4gIGNvbnN0cnVjdG9yKHttb2RlbENsYXNzLCBtb2RlbHMsIHByZWxvYWQsIHByZWxvYWRTZWxlY3RzID0ge30sIHByZWxvYWRTZWxlY3RzRXh0cmEgPSB7fSwgc2VsZWN0aW9uLCAuLi5yZXN0QXJnc30pIHtcbiAgICByZXN0QXJnc0Vycm9yKHJlc3RBcmdzKVxuXG4gICAgdGhpcy5tb2RlbENsYXNzID0gbW9kZWxDbGFzc1xuICAgIHRoaXMubW9kZWxzID0gbW9kZWxzXG4gICAgdGhpcy5wcmVsb2FkID0gcHJlbG9hZFxuICAgIHRoaXMuc2VsZWN0aW9uID0gc2VsZWN0aW9uIHx8IG5ldyBQcmVsb2FkZXJTZWxlY3Rpb24oe3ByZWxvYWRTZWxlY3RzLCBwcmVsb2FkU2VsZWN0c0V4dHJhfSlcbiAgfVxuXG4gIGFzeW5jIHJ1bigpIHtcbiAgICBmb3IgKGNvbnN0IHByZWxvYWRSZWxhdGlvbnNoaXBOYW1lIGluIHRoaXMucHJlbG9hZCkge1xuICAgICAgY29uc3QgcmVsYXRpb25zaGlwID0gdGhpcy5tb2RlbENsYXNzLmdldFJlbGF0aW9uc2hpcEJ5TmFtZShwcmVsb2FkUmVsYXRpb25zaGlwTmFtZSlcbiAgICAgIGxldCBwcmVsb2FkUmVzdWx0XG5cbiAgICAgIGlmIChyZWxhdGlvbnNoaXAuZ2V0VHlwZSgpID09IFwiYmVsb25nc1RvXCIpIHtcbiAgICAgICAgY29uc3QgYmVsb25nc1RvUmVsYXRpb25zaGlwID0gLyoqXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIE5hcnJvd3MgdGhlIHJ1bnRpbWUgdmFsdWUgdG8gdGhlIGRvY3VtZW50ZWQgdHlwZS5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAdHlwZSB7aW1wb3J0KFwiLi4vcmVjb3JkL3JlbGF0aW9uc2hpcHMvYmVsb25ncy10by5qc1wiKS5kZWZhdWx0fSAqLyAocmVsYXRpb25zaGlwKVxuICAgICAgICBjb25zdCBoYXNNYW55UHJlbG9hZGVyID0gbmV3IEJlbG9uZ3NUb1ByZWxvYWRlcih7bW9kZWxzOiB0aGlzLm1vZGVscywgcmVsYXRpb25zaGlwOiBiZWxvbmdzVG9SZWxhdGlvbnNoaXAsIHNlbGVjdGlvbjogdGhpcy5zZWxlY3Rpb259KVxuXG4gICAgICAgIHByZWxvYWRSZXN1bHQgPSBhd2FpdCBoYXNNYW55UHJlbG9hZGVyLnJ1bigpXG4gICAgICB9IGVsc2UgaWYgKHJlbGF0aW9uc2hpcC5nZXRUeXBlKCkgPT0gXCJoYXNNYW55XCIpIHtcbiAgICAgICAgY29uc3QgaGFzTWFueVJlbGF0aW9uc2hpcCA9IC8qKlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogTmFycm93cyB0aGUgcnVudGltZSB2YWx1ZSB0byB0aGUgZG9jdW1lbnRlZCB0eXBlLlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAdHlwZSB7aW1wb3J0KFwiLi4vcmVjb3JkL3JlbGF0aW9uc2hpcHMvaGFzLW1hbnkuanNcIikuZGVmYXVsdH0gKi8gKHJlbGF0aW9uc2hpcClcbiAgICAgICAgY29uc3QgaGFzTWFueVByZWxvYWRlciA9IG5ldyBIYXNNYW55UHJlbG9hZGVyKHttb2RlbHM6IHRoaXMubW9kZWxzLCByZWxhdGlvbnNoaXA6IGhhc01hbnlSZWxhdGlvbnNoaXAsIHNlbGVjdGlvbjogdGhpcy5zZWxlY3Rpb259KVxuXG4gICAgICAgIHByZWxvYWRSZXN1bHQgPSBhd2FpdCBoYXNNYW55UHJlbG9hZGVyLnJ1bigpXG4gICAgICB9IGVsc2UgaWYgKHJlbGF0aW9uc2hpcC5nZXRUeXBlKCkgPT0gXCJoYXNPbmVcIikge1xuICAgICAgICBjb25zdCBoYXNPbmVSZWxhdGlvbnNoaXAgPSAvKipcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogTmFycm93cyB0aGUgcnVudGltZSB2YWx1ZSB0byB0aGUgZG9jdW1lbnRlZCB0eXBlLlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEB0eXBlIHtpbXBvcnQoXCIuLi9yZWNvcmQvcmVsYXRpb25zaGlwcy9oYXMtb25lLmpzXCIpLmRlZmF1bHR9ICovIChyZWxhdGlvbnNoaXApXG4gICAgICAgIGNvbnN0IGhhc09uZVByZWxvYWRlciA9IG5ldyBIYXNPbmVQcmVsb2FkZXIoe21vZGVsczogdGhpcy5tb2RlbHMsIHJlbGF0aW9uc2hpcDogaGFzT25lUmVsYXRpb25zaGlwLCBzZWxlY3Rpb246IHRoaXMuc2VsZWN0aW9ufSlcblxuICAgICAgICBwcmVsb2FkUmVzdWx0ID0gYXdhaXQgaGFzT25lUHJlbG9hZGVyLnJ1bigpXG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFVua25vd24gcmVsYXRpb25zaGlwIHR5cGU6ICR7cmVsYXRpb25zaGlwLmdldFR5cGUoKX1gKVxuICAgICAgfVxuXG4gICAgICBjb25zdCB0YXJnZXRNb2RlbHMgPSBBcnJheS5pc0FycmF5KHByZWxvYWRSZXN1bHQpID8gcHJlbG9hZFJlc3VsdCA6IChwcmVsb2FkUmVzdWx0Py50YXJnZXRNb2RlbHMgfHwgW10pXG4gICAgICBjb25zdCB0YXJnZXRNb2RlbHNCeUNsYXNzTmFtZSA9IEFycmF5LmlzQXJyYXkocHJlbG9hZFJlc3VsdCkgPyB1bmRlZmluZWQgOiBwcmVsb2FkUmVzdWx0Py50YXJnZXRNb2RlbHNCeUNsYXNzTmFtZVxuXG4gICAgICAvLyBIYW5kbGUgYW55IGZ1cnRoZXIgcHJlbG9hZHMgaW4gdGhlIHRyZWVcbiAgICAgIGNvbnN0IG5ld1ByZWxvYWQgPSB0aGlzLnByZWxvYWRbcHJlbG9hZFJlbGF0aW9uc2hpcE5hbWVdXG4gICAgICBjb25zdCBub3JtYWxpemVkUHJlbG9hZCA9IG5vcm1hbGl6ZU5lc3RlZFByZWxvYWQobmV3UHJlbG9hZClcblxuICAgICAgaWYgKG5vcm1hbGl6ZWRQcmVsb2FkICYmIHRhcmdldE1vZGVscy5sZW5ndGggPiAwKSB7XG4gICAgICAgIGlmIChyZWxhdGlvbnNoaXAuZ2V0UG9seW1vcnBoaWMoKSAmJiB0YXJnZXRNb2RlbHNCeUNsYXNzTmFtZSkge1xuICAgICAgICAgIGNvbnN0IGNvbmZpZ3VyYXRpb24gPSByZWxhdGlvbnNoaXAuZ2V0Q29uZmlndXJhdGlvbigpXG5cbiAgICAgICAgICBmb3IgKGNvbnN0IGNsYXNzTmFtZSBpbiB0YXJnZXRNb2RlbHNCeUNsYXNzTmFtZSkge1xuICAgICAgICAgICAgY29uc3QgbW9kZWxzID0gdGFyZ2V0TW9kZWxzQnlDbGFzc05hbWVbY2xhc3NOYW1lXVxuXG4gICAgICAgICAgICBpZiAobW9kZWxzLmxlbmd0aCA9PSAwKSBjb250aW51ZVxuXG4gICAgICAgICAgICBjb25zdCB0YXJnZXRNb2RlbENsYXNzID0gY29uZmlndXJhdGlvbi5nZXRNb2RlbENsYXNzKGNsYXNzTmFtZSlcbiAgICAgICAgICAgIGNvbnN0IHByZWxvYWRlciA9IG5ldyBWZWxvY2lvdXNEYXRhYmFzZVF1ZXJ5UHJlbG9hZGVyKHttb2RlbENsYXNzOiB0YXJnZXRNb2RlbENsYXNzLCBtb2RlbHMsIHByZWxvYWQ6IG5vcm1hbGl6ZWRQcmVsb2FkLCBzZWxlY3Rpb246IHRoaXMuc2VsZWN0aW9ufSlcblxuICAgICAgICAgICAgYXdhaXQgcHJlbG9hZGVyLnJ1bigpXG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbnN0IHRhcmdldE1vZGVsQ2xhc3MgPSByZWxhdGlvbnNoaXAuZ2V0VGFyZ2V0TW9kZWxDbGFzcygpXG5cbiAgICAgICAgICBpZiAoIXRhcmdldE1vZGVsQ2xhc3MpIHRocm93IG5ldyBFcnJvcihcIk5vIHRhcmdldCBtb2RlbCBjbGFzcyBjb3VsZCBiZSBnb3R0ZW4gZnJvbSByZWxhdGlvbnNoaXBcIilcblxuICAgICAgICAgIGNvbnN0IHByZWxvYWRlciA9IG5ldyBWZWxvY2lvdXNEYXRhYmFzZVF1ZXJ5UHJlbG9hZGVyKHttb2RlbENsYXNzOiB0YXJnZXRNb2RlbENsYXNzLCBtb2RlbHM6IHRhcmdldE1vZGVscywgcHJlbG9hZDogbm9ybWFsaXplZFByZWxvYWQsIHNlbGVjdGlvbjogdGhpcy5zZWxlY3Rpb259KVxuXG4gICAgICAgICAgYXdhaXQgcHJlbG9hZGVyLnJ1bigpXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiJdfQ==
@@ -1,13 +1,16 @@
1
1
  /**
2
- * @typedef {Object} QueryDataEntry
2
+ * QueryDataEntry type.
3
+ * @typedef {object} QueryDataEntry
3
4
  * @property {string[]} chain - Relationship chain from the root model to the model that declares the fn. Empty for a root-level entry.
4
5
  * @property {string} fnName - Identifier under which the fn is registered on the declaring model.
5
6
  */
6
7
  /**
7
- * @typedef {string | Array<string | Record<string, any>> | {[key: string]: true | false | string | string[] | Record<string, any>}} QueryDataSpec
8
+ * Defines this typedef.
9
+ * @typedef {string | Array<string | Record<string, ?>> | {[key: string]: true | false | string | string[] | Record<string, ?>}} QueryDataSpec
8
10
  */
9
11
  /**
10
- * @typedef {Object} QueryDataCallbackArgs
12
+ * QueryDataCallbackArgs type.
13
+ * @typedef {object} QueryDataCallbackArgs
11
14
  * @property {string} attributeName - Name under which the fn was registered. Convenient when a fn is reused across aliases.
12
15
  * @property {import("../drivers/base.js").default} driver - Active database driver, for quoting helpers and type-specific SQL.
13
16
  * @property {typeof import("../record/index.js").default} modelClass - Model class the fn is registered on (the chain's target).
@@ -16,6 +19,7 @@
16
19
  * @property {string} tableName - Unquoted table reference (alias or table name) for the chain's target, ready to paste into SQL.
17
20
  */
18
21
  /**
22
+ * QueryDataFn type.
19
23
  * @typedef {(args: QueryDataCallbackArgs) => void | import("./model-class-query.js").default} QueryDataFn
20
24
  */
21
25
  /**
@@ -33,7 +37,6 @@
33
37
  * {projects: {tasks: ["transportSecondsSum", {timelogs: ["timeSecondsSum"]}]}}
34
38
  * → [{chain: ["projects","tasks"], fnName: "transportSecondsSum"},
35
39
  * {chain: ["projects","tasks","timelogs"], fnName: "timeSecondsSum"}]
36
- *
37
40
  * @param {QueryDataSpec} spec - User-supplied spec.
38
41
  * @param {string[]} [chain] - Current chain (internal recursion).
39
42
  * @returns {QueryDataEntry[]} - Flat list of entries.
@@ -53,7 +56,6 @@ export function normalizeQueryDataSpec(spec: QueryDataSpec, chain?: string[]): Q
53
56
  *
54
57
  * Mirrors the shape of `runWithCount`: one query per entry, a separate
55
58
  * storage map on the record, never touches `_attributes`.
56
- *
57
59
  * @param {object} args - Options.
58
60
  * @param {typeof import("../record/index.js").default} args.rootModelClass - Root model class.
59
61
  * @param {import("../record/index.js").default[]} args.rootModels - Loaded root records.
@@ -65,6 +67,9 @@ export function runQueryData({ rootModelClass, rootModels, entries }: {
65
67
  rootModels: import("../record/index.js").default[];
66
68
  entries: QueryDataEntry[];
67
69
  }): Promise<void>;
70
+ /**
71
+ * QueryDataEntry type.
72
+ */
68
73
  export type QueryDataEntry = {
69
74
  /**
70
75
  * - Relationship chain from the root model to the model that declares the fn. Empty for a root-level entry.
@@ -75,9 +80,15 @@ export type QueryDataEntry = {
75
80
  */
76
81
  fnName: string;
77
82
  };
78
- export type QueryDataSpec = string | Array<string | Record<string, any>> | {
79
- [key: string]: true | false | string | string[] | Record<string, any>;
83
+ /**
84
+ * Defines this typedef.
85
+ */
86
+ export type QueryDataSpec = string | Array<string | Record<string, unknown>> | {
87
+ [key: string]: true | false | string | string[] | Record<string, unknown>;
80
88
  };
89
+ /**
90
+ * QueryDataCallbackArgs type.
91
+ */
81
92
  export type QueryDataCallbackArgs = {
82
93
  /**
83
94
  * - Name under which the fn was registered. Convenient when a fn is reused across aliases.
@@ -104,5 +115,8 @@ export type QueryDataCallbackArgs = {
104
115
  */
105
116
  tableName: string;
106
117
  };
118
+ /**
119
+ * QueryDataFn type.
120
+ */
107
121
  export type QueryDataFn = (args: QueryDataCallbackArgs) => void | import("./model-class-query.js").default;
108
122
  //# sourceMappingURL=query-data.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"query-data.d.ts","sourceRoot":"","sources":["../../../../src/database/query/query-data.js"],"names":[],"mappings":"AAIA;;;;GAIG;AAEH;;GAEG;AAEH;;;;;;;;GAQG;AAEH;;GAEG;AAEH;;;;;;;;;;;;;;;;;;;GAmBG;AACH,6CAJW,aAAa,UACb,MAAM,EAAE,GACN,cAAc,EAAE,CA0D5B;AAwDD;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,sEALG;IAA0D,cAAc,EAAhE,cAAc,oBAAoB,EAAE,OAAO;IACE,UAAU,EAAvD,OAAO,oBAAoB,EAAE,OAAO,EAAE;IACf,OAAO,EAA9B,cAAc,EAAE;CACxB,GAAU,OAAO,CAAC,IAAI,CAAC,CAWzB;;;;;WAxLa,MAAM,EAAE;;;;YACR,MAAM;;4BAIP,MAAM,GAAG,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,GAAG;IAAC,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,GAAG,KAAK,GAAG,MAAM,GAAG,MAAM,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;CAAC;;;;;mBAKrH,MAAM;;;;YACN,OAAO,oBAAoB,EAAE,OAAO;;;;gBACpC,cAAc,oBAAoB,EAAE,OAAO;;;;eAC3C,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC;;;;WACtB,OAAO,wBAAwB,EAAE,OAAO;;;;eACxC,MAAM;;0BAIP,CAAC,IAAI,EAAE,qBAAqB,KAAK,IAAI,GAAG,OAAO,wBAAwB,EAAE,OAAO"}
1
+ {"version":3,"file":"query-data.d.ts","sourceRoot":"","sources":["../../../../src/database/query/query-data.js"],"names":[],"mappings":"AAIA;;;;;GAKG;AAEH;;;GAGG;AAEH;;;;;;;;;GASG;AAEH;;;GAGG;AAEH;;;;;;;;;;;;;;;;;;GAkBG;AACH,6CAJW,aAAa,UACb,MAAM,EAAE,GACN,cAAc,EAAE,CAkE5B;AAwDD;;;;;;;;;;;;;;;;;;;GAmBG;AACH,sEALG;IAA0D,cAAc,EAAhE,cAAc,oBAAoB,EAAE,OAAO;IACE,UAAU,EAAvD,OAAO,oBAAoB,EAAE,OAAO,EAAE;IACf,OAAO,EAA9B,cAAc,EAAE;CACxB,GAAU,OAAO,CAAC,IAAI,CAAC,CAazB;;;;;;;;WAnMa,MAAM,EAAE;;;;YACR,MAAM;;;;;4BAKP,MAAM,GAAG,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAC,CAAC,CAAC,GAAG;IAAC,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,GAAG,KAAK,GAAG,MAAM,GAAG,MAAM,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,OAAC,CAAC,CAAA;CAAC;;;;;;;;mBAMjH,MAAM;;;;YACN,OAAO,oBAAoB,EAAE,OAAO;;;;gBACpC,cAAc,oBAAoB,EAAE,OAAO;;;;eAC3C,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC;;;;WACtB,OAAO,wBAAwB,EAAE,OAAO;;;;eACxC,MAAM;;;;;0BAKP,CAAC,IAAI,EAAE,qBAAqB,KAAK,IAAI,GAAG,OAAO,wBAAwB,EAAE,OAAO"}
@@ -1,15 +1,18 @@
1
1
  // @ts-check
2
2
  import { isPlainObject } from "is-plain-object";
3
3
  /**
4
- * @typedef {Object} QueryDataEntry
4
+ * QueryDataEntry type.
5
+ * @typedef {object} QueryDataEntry
5
6
  * @property {string[]} chain - Relationship chain from the root model to the model that declares the fn. Empty for a root-level entry.
6
7
  * @property {string} fnName - Identifier under which the fn is registered on the declaring model.
7
8
  */
8
9
  /**
9
- * @typedef {string | Array<string | Record<string, any>> | {[key: string]: true | false | string | string[] | Record<string, any>}} QueryDataSpec
10
+ * Defines this typedef.
11
+ * @typedef {string | Array<string | Record<string, ?>> | {[key: string]: true | false | string | string[] | Record<string, ?>}} QueryDataSpec
10
12
  */
11
13
  /**
12
- * @typedef {Object} QueryDataCallbackArgs
14
+ * QueryDataCallbackArgs type.
15
+ * @typedef {object} QueryDataCallbackArgs
13
16
  * @property {string} attributeName - Name under which the fn was registered. Convenient when a fn is reused across aliases.
14
17
  * @property {import("../drivers/base.js").default} driver - Active database driver, for quoting helpers and type-specific SQL.
15
18
  * @property {typeof import("../record/index.js").default} modelClass - Model class the fn is registered on (the chain's target).
@@ -18,6 +21,7 @@ import { isPlainObject } from "is-plain-object";
18
21
  * @property {string} tableName - Unquoted table reference (alias or table name) for the chain's target, ready to paste into SQL.
19
22
  */
20
23
  /**
24
+ * QueryDataFn type.
21
25
  * @typedef {(args: QueryDataCallbackArgs) => void | import("./model-class-query.js").default} QueryDataFn
22
26
  */
23
27
  /**
@@ -35,7 +39,6 @@ import { isPlainObject } from "is-plain-object";
35
39
  * {projects: {tasks: ["transportSecondsSum", {timelogs: ["timeSecondsSum"]}]}}
36
40
  * → [{chain: ["projects","tasks"], fnName: "transportSecondsSum"},
37
41
  * {chain: ["projects","tasks","timelogs"], fnName: "timeSecondsSum"}]
38
- *
39
42
  * @param {QueryDataSpec} spec - User-supplied spec.
40
43
  * @param {string[]} [chain] - Current chain (internal recursion).
41
44
  * @returns {QueryDataEntry[]} - Flat list of entries.
@@ -47,7 +50,9 @@ export function normalizeQueryDataSpec(spec, chain = []) {
47
50
  return [{ chain: [...chain], fnName: spec }];
48
51
  }
49
52
  if (Array.isArray(spec)) {
50
- /** @type {QueryDataEntry[]} */
53
+ /**
54
+ * Entries.
55
+ @type {QueryDataEntry[]} */
51
56
  const entries = [];
52
57
  for (const item of spec) {
53
58
  if (typeof item === "string") {
@@ -55,7 +60,9 @@ export function normalizeQueryDataSpec(spec, chain = []) {
55
60
  continue;
56
61
  }
57
62
  if (isPlainObject(item)) {
58
- for (const nested of normalizeQueryDataSpec(/** @type {any} */ (item), chain)) {
63
+ for (const nested of normalizeQueryDataSpec(/**
64
+ * Narrows the runtime value to the documented type.
65
+ @type {?} */ (item), chain)) {
59
66
  entries.push(nested);
60
67
  }
61
68
  continue;
@@ -65,7 +72,9 @@ export function normalizeQueryDataSpec(spec, chain = []) {
65
72
  return entries;
66
73
  }
67
74
  if (isPlainObject(spec)) {
68
- /** @type {QueryDataEntry[]} */
75
+ /**
76
+ * Entries.
77
+ @type {QueryDataEntry[]} */
69
78
  const entries = [];
70
79
  for (const [key, value] of Object.entries(spec)) {
71
80
  if (value === true) {
@@ -75,7 +84,9 @@ export function normalizeQueryDataSpec(spec, chain = []) {
75
84
  if (value === false)
76
85
  continue;
77
86
  if (typeof value === "string" || Array.isArray(value) || isPlainObject(value)) {
78
- for (const nested of normalizeQueryDataSpec(/** @type {any} */ (value), [...chain, key])) {
87
+ for (const nested of normalizeQueryDataSpec(/**
88
+ * Narrows the runtime value to the documented type.
89
+ @type {?} */ (value), [...chain, key])) {
79
90
  entries.push(nested);
80
91
  }
81
92
  continue;
@@ -91,14 +102,15 @@ export function normalizeQueryDataSpec(spec, chain = []) {
91
102
  * `["projects", "tasks"]` → `{projects: {tasks: true}}`. Used internally so
92
103
  * the runner can reuse the existing `joins` path-registration machinery
93
104
  * (JoinTracker, alias generation, scope application).
94
- *
95
105
  * @param {string[]} chain - Relationship chain.
96
- * @returns {true | Record<string, any>} - Nested join descriptor, or `true` when the chain is empty.
106
+ * @returns {true | Record<string, ?>} - Nested join descriptor, or `true` when the chain is empty.
97
107
  */
98
108
  function buildNestedJoinDescriptor(chain) {
99
109
  if (chain.length === 0)
100
110
  return true;
101
- /** @type {Record<string, any>} */
111
+ /**
112
+ * Obj.
113
+ @type {Record<string, ?>} */
102
114
  const obj = {};
103
115
  let cursor = obj;
104
116
  for (let i = 0; i < chain.length; i += 1) {
@@ -114,7 +126,6 @@ function buildNestedJoinDescriptor(chain) {
114
126
  * Walk a relationship chain from the root model and return the model
115
127
  * class at its tail. Throws with a clear message when any segment is
116
128
  * unknown.
117
- *
118
129
  * @param {typeof import("../record/index.js").default} rootModelClass - Root model class.
119
130
  * @param {string[]} chain - Relationship chain.
120
131
  * @returns {typeof import("../record/index.js").default} - Target model class.
@@ -145,7 +156,6 @@ function resolveTargetModelClass(rootModelClass, chain) {
145
156
  *
146
157
  * Mirrors the shape of `runWithCount`: one query per entry, a separate
147
158
  * storage map on the record, never touches `_attributes`.
148
- *
149
159
  * @param {object} args - Options.
150
160
  * @param {typeof import("../record/index.js").default} args.rootModelClass - Root model class.
151
161
  * @param {import("../record/index.js").default[]} args.rootModels - Loaded root records.
@@ -156,12 +166,15 @@ export async function runQueryData({ rootModelClass, rootModels, entries }) {
156
166
  if (rootModels.length === 0 || entries.length === 0)
157
167
  return;
158
168
  const primaryKey = rootModelClass.primaryKey();
159
- const rootIds = rootModels.map((model) => /** @type {string | number} */ (model.readColumn(primaryKey)));
169
+ const rootIds = rootModels.map((model) => /**
170
+ * Narrows the runtime value to the documented type.
171
+ @type {string | number} */ (model.readColumn(primaryKey)));
160
172
  for (const entry of entries) {
161
173
  await runEntry({ entry, primaryKey, rootIds, rootModelClass, rootModels });
162
174
  }
163
175
  }
164
176
  /**
177
+ * Runs run entry.
165
178
  * @param {object} args - Options.
166
179
  * @param {QueryDataEntry} args.entry - Entry being evaluated.
167
180
  * @param {string} args.primaryKey - Root model primary key column.
@@ -189,7 +202,9 @@ async function runEntry({ entry, primaryKey, rootIds, rootModelClass, rootModels
189
202
  const driver = query.driver;
190
203
  const rootTable = rootModelClass.tableName();
191
204
  const rootPkSql = `${driver.quoteTable(rootTable)}.${driver.quoteColumn(primaryKey)}`;
192
- /** @type {Record<string, unknown>} */
205
+ /**
206
+ * Root where.
207
+ @type {Record<string, ?>} */
193
208
  const rootWhere = {};
194
209
  rootWhere[primaryKey] = rootIds;
195
210
  query.where(rootWhere);
@@ -214,7 +229,9 @@ async function runEntry({ entry, primaryKey, rootIds, rootModelClass, rootModels
214
229
  query,
215
230
  tableName: targetTableRef
216
231
  });
217
- const rows = /** @type {Array<Record<string, unknown>>} */ (await query._executeQuery());
232
+ const rows = /**
233
+ * Narrows the runtime value to the documented type.
234
+ @type {Array<Record<string, ?>>} */ (await query._executeQuery());
218
235
  const byParent = new Map();
219
236
  for (const row of rows) {
220
237
  const parentId = row.parent_id;
@@ -223,7 +240,9 @@ async function runEntry({ entry, primaryKey, rootIds, rootModelClass, rootModels
223
240
  byParent.set(parentId, row);
224
241
  }
225
242
  for (const model of rootModels) {
226
- const modelId = /** @type {string | number} */ (model.readColumn(primaryKey));
243
+ const modelId = /**
244
+ * Narrows the runtime value to the documented type.
245
+ @type {string | number} */ (model.readColumn(primaryKey));
227
246
  // Driver-type tolerance: MySQL can return PKs as strings even when
228
247
  // the column is numeric. Fall back to a string lookup so results
229
248
  // still land on the right model.
@@ -239,4 +258,4 @@ async function runEntry({ entry, primaryKey, rootIds, rootModelClass, rootModels
239
258
  }
240
259
  }
241
260
  }
242
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlcnktZGF0YS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9kYXRhYmFzZS9xdWVyeS9xdWVyeS1kYXRhLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFlBQVk7QUFFWixPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0saUJBQWlCLENBQUE7QUFFN0M7Ozs7R0FJRztBQUVIOztHQUVHO0FBRUg7Ozs7Ozs7O0dBUUc7QUFFSDs7R0FFRztBQUVIOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBbUJHO0FBQ0gsTUFBTSxVQUFVLHNCQUFzQixDQUFDLElBQUksRUFBRSxLQUFLLEdBQUcsRUFBRTtJQUNyRCxJQUFJLElBQUksSUFBSSxJQUFJO1FBQUUsT0FBTyxFQUFFLENBQUE7SUFFM0IsSUFBSSxPQUFPLElBQUksS0FBSyxRQUFRLEVBQUUsQ0FBQztRQUM3QixPQUFPLENBQUMsRUFBQyxLQUFLLEVBQUUsQ0FBQyxHQUFHLEtBQUssQ0FBQyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUMsQ0FBQyxDQUFBO0lBQzVDLENBQUM7SUFFRCxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztRQUN4QiwrQkFBK0I7UUFDL0IsTUFBTSxPQUFPLEdBQUcsRUFBRSxDQUFBO1FBRWxCLEtBQUssTUFBTSxJQUFJLElBQUksSUFBSSxFQUFFLENBQUM7WUFDeEIsSUFBSSxPQUFPLElBQUksS0FBSyxRQUFRLEVBQUUsQ0FBQztnQkFDN0IsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFDLEtBQUssRUFBRSxDQUFDLEdBQUcsS0FBSyxDQUFDLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBQyxDQUFDLENBQUE7Z0JBQy9DLFNBQVE7WUFDVixDQUFDO1lBRUQsSUFBSSxhQUFhLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztnQkFDeEIsS0FBSyxNQUFNLE1BQU0sSUFBSSxzQkFBc0IsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLElBQUks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LG1FQUFtRTtRQUNuRSxpRUFBaUU7UUFDakUsaUNBQWlDO1FBQ2pDLE1BQU0sR0FBRyxHQUFHLFFBQVEsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDO1lBQy9CLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQztZQUN2QixDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQTtRQUVqQyxJQUFJLENBQUMsR0FBRztZQUFFLFNBQVE7UUFFbEIsS0FBSyxNQUFNLENBQUMsVUFBVSxFQUFFLEtBQUssQ0FBQyxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUN0RCxJQUFJLFVBQVUsS0FBSyxXQUFXO2dCQUFFLFNBQVE7WUFFeEMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxVQUFVLEVBQUUsS0FBSyxDQUFDLENBQUE7UUFDeEMsQ0FBQztJQUNILENBQUM7QUFDSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQHRzLWNoZWNrXG5cbmltcG9ydCB7aXNQbGFpbk9iamVjdH0gZnJvbSBcImlzLXBsYWluLW9iamVjdFwiXG5cbi8qKlxuICogQHR5cGVkZWYge09iamVjdH0gUXVlcnlEYXRhRW50cnlcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nW119IGNoYWluIC0gUmVsYXRpb25zaGlwIGNoYWluIGZyb20gdGhlIHJvb3QgbW9kZWwgdG8gdGhlIG1vZGVsIHRoYXQgZGVjbGFyZXMgdGhlIGZuLiBFbXB0eSBmb3IgYSByb290LWxldmVsIGVudHJ5LlxuICogQHByb3BlcnR5IHtzdHJpbmd9IGZuTmFtZSAtIElkZW50aWZpZXIgdW5kZXIgd2hpY2ggdGhlIGZuIGlzIHJlZ2lzdGVyZWQgb24gdGhlIGRlY2xhcmluZyBtb2RlbC5cbiAqL1xuXG4vKipcbiAqIEB0eXBlZGVmIHtzdHJpbmcgfCBBcnJheTxzdHJpbmcgfCBSZWNvcmQ8c3RyaW5nLCBhbnk+PiB8IHtba2V5OiBzdHJpbmddOiB0cnVlIHwgZmFsc2UgfCBzdHJpbmcgfCBzdHJpbmdbXSB8IFJlY29yZDxzdHJpbmcsIGFueT59fSBRdWVyeURhdGFTcGVjXG4gKi9cblxuLyoqXG4gKiBAdHlwZWRlZiB7T2JqZWN0fSBRdWVyeURhdGFDYWxsYmFja0FyZ3NcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBhdHRyaWJ1dGVOYW1lIC0gTmFtZSB1bmRlciB3aGljaCB0aGUgZm4gd2FzIHJlZ2lzdGVyZWQuIENvbnZlbmllbnQgd2hlbiBhIGZuIGlzIHJldXNlZCBhY3Jvc3MgYWxpYXNlcy5cbiAqIEBwcm9wZXJ0eSB7aW1wb3J0KFwiLi4vZHJpdmVycy9iYXNlLmpzXCIpLmRlZmF1bHR9IGRyaXZlciAtIEFjdGl2ZSBkYXRhYmFzZSBkcml2ZXIsIGZvciBxdW90aW5nIGhlbHBlcnMgYW5kIHR5cGUtc3BlY2lmaWMgU1FMLlxuICogQHByb3BlcnR5IHt0eXBlb2YgaW1wb3J0KFwiLi4vcmVjb3JkL2luZGV4LmpzXCIpLmRlZmF1bHR9IG1vZGVsQ2xhc3MgLSBNb2RlbCBjbGFzcyB0aGUgZm4gaXMgcmVnaXN0ZXJlZCBvbiAodGhlIGNoYWluJ3MgdGFyZ2V0KS5cbiAqIEBwcm9wZXJ0eSB7QXJyYXk8c3RyaW5nIHwgbnVtYmVyPn0gcGFyZW50SWRzIC0gUHJpbWFyeS1rZXkgdmFsdWVzIG9mIHRoZSBsb2FkZWQgcm9vdCByZWNvcmRzLlxuICogQHByb3BlcnR5IHtpbXBvcnQoXCIuL21vZGVsLWNsYXNzLXF1ZXJ5LmpzXCIpLmRlZmF1bHR9IHF1ZXJ5IC0gR3JvdXBlZCBxdWVyeSBhbHJlYWR5IGpvaW5lZCBkb3duIHRoZSBjaGFpbiwgZmlsdGVyZWQgYnkgYHBhcmVudElkc2AsIHdpdGggYHBhcmVudF9pZGAgcHJlLXNlbGVjdGVkLlxuICogQHByb3BlcnR5IHtzdHJpbmd9IHRhYmxlTmFtZSAtIFVucXVvdGVkIHRhYmxlIHJlZmVyZW5jZSAoYWxpYXMgb3IgdGFibGUgbmFtZSkgZm9yIHRoZSBjaGFpbidzIHRhcmdldCwgcmVhZHkgdG8gcGFzdGUgaW50byBTUUwuXG4gKi9cblxuLyoqXG4gKiBAdHlwZWRlZiB7KGFyZ3M6IFF1ZXJ5RGF0YUNhbGxiYWNrQXJncykgPT4gdm9pZCB8IGltcG9ydChcIi4vbW9kZWwtY2xhc3MtcXVlcnkuanNcIikuZGVmYXVsdH0gUXVlcnlEYXRhRm5cbiAqL1xuXG4vKipcbiAqIE5vcm1hbGl6ZSBhIHVzZXItc3VwcGxpZWQgcXVlcnlEYXRhIHNwZWMgaW50byBhIGZsYXQgbGlzdCBvZiBlbnRyaWVzXG4gKiB0aGUgcnVubmVyIGNhbiBjb25zdW1lLiBUaGUgc3BlYyBtaXJyb3JzIHRoZSBzaGFwZSBvZiBgcHJlbG9hZGAsIHdpdGhcbiAqIHRoZSBpbXBvcnRhbnQgZGlzdGluY3Rpb24gdGhhdCAqKmxlYWYgc3RyaW5ncyBhcmUgZm4gbmFtZXMqKiwgbm90XG4gKiBmdXJ0aGVyIHJlbGF0aW9uc2hpcCBzZWdtZW50cy4gTmVzdGVkIGtleXMgYXJlIHJlbGF0aW9uc2hpcCBuYW1lc1xuICogYWxvbmcgdGhlIGpvaW4gY2hhaW4gZnJvbSB0aGUgcm9vdCBtb2RlbCB0byB0aGUgZGVjbGFyaW5nIG1vZGVsLlxuICpcbiAqIEFjY2VwdGVkIHNoYXBlcyAoYWxsIHlpZWxkIHRoZSBzYW1lIGZsYXQgZW50cmllcyk6XG4gKiAgIFwiZm9vXCIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIOKGkiBbe2NoYWluOiBbXSwgZm5OYW1lOiBcImZvb1wifV1cbiAqICAgW1wiZm9vXCIsIFwiYmFyXCJdICAgICAgICAgICAgICAgICAgICAgICAgICAgICDihpIgW3tjaGFpbjogW10sIGZuTmFtZTogXCJmb29cIn0sIHtjaGFpbjogW10sIGZuTmFtZTogXCJiYXJcIn1dXG4gKiAgIHtmb286IHRydWV9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICDihpIgW3tjaGFpbjogW10sIGZuTmFtZTogXCJmb29cIn1dXG4gKiAgIHtwcm9qZWN0czogW1widGFza3NDb3VudFwiXX0gICAgICAgICAgICAgICAgIOKGkiBbe2NoYWluOiBbXCJwcm9qZWN0c1wiXSwgZm5OYW1lOiBcInRhc2tzQ291bnRcIn1dXG4gKiAgIHtwcm9qZWN0czoge3Rhc2tzOiBbXCJ0cmFuc3BvcnRTZWNvbmRzU3VtXCIsIHt0aW1lbG9nczogW1widGltZVNlY29uZHNTdW1cIl19XX19XG4gKiAgICAg4oaSIFt7Y2hhaW46IFtcInByb2plY3RzXCIsXCJ0YXNrc1wiXSwgZm5OYW1lOiBcInRyYW5zcG9ydFNlY29uZHNTdW1cIn0sXG4gKiAgICAgICAge2NoYWluOiBbXCJwcm9qZWN0c1wiLFwidGFza3NcIixcInRpbWVsb2dzXCJdLCBmbk5hbWU6IFwidGltZVNlY29uZHNTdW1cIn1dXG4gKlxuICogQHBhcmFtIHtRdWVyeURhdGFTcGVjfSBzcGVjIC0gVXNlci1zdXBwbGllZCBzcGVjLlxuICogQHBhcmFtIHtzdHJpbmdbXX0gW2NoYWluXSAtIEN1cnJlbnQgY2hhaW4gKGludGVybmFsIHJlY3Vyc2lvbikuXG4gKiBAcmV0dXJucyB7UXVlcnlEYXRhRW50cnlbXX0gLSBGbGF0IGxpc3Qgb2YgZW50cmllcy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG5vcm1hbGl6ZVF1ZXJ5RGF0YVNwZWMoc3BlYywgY2hhaW4gPSBbXSkge1xuICBpZiAoc3BlYyA9PSBudWxsKSByZXR1cm4gW11cblxuICBpZiAodHlwZW9mIHNwZWMgPT09IFwic3RyaW5nXCIpIHtcbiAgICByZXR1cm4gW3tjaGFpbjogWy4uLmNoYWluXSwgZm5OYW1lOiBzcGVjfV1cbiAgfVxuXG4gIGlmIChBcnJheS5pc0FycmF5KHNwZWMpKSB7XG4gICAgLyoqIEB0eXBlIHtRdWVyeURhdGFFbnRyeVtdfSAqL1xuICAgIGNvbnN0IGVudHJpZXMgPSBbXVxuXG4gICAgZm9yIChjb25zdCBpdGVtIG9mIHNwZWMpIHtcbiAgICAgIGlmICh0eXBlb2YgaXRlbSA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgICBlbnRyaWVzLnB1c2goe2NoYWluOiBbLi4uY2hhaW5dLCBmbk5hbWU6IGl0ZW19KVxuICAgICAgICBjb250aW51ZVxuICAgICAgfVxuXG4gICAgICBpZiAoaXNQbGFpbk9iamVjdChpdGVtKSkge1xuICAgICAgICBmb3IgKGNvbnN0IG5lc3RlZCBvZiBub3JtYWxpemVRdWVyeURhdGFTcGVjKC8qKiBAdHlwZSB7YW55fSAqLyAoaXRlbSksIGNoYWluKSkge1xuICAgICAgICAgIGVudHJpZXMucHVzaChuZXN0ZWQpXG4gICAgICAgIH1cbiAgICAgICAgY29udGludWVcbiAgICAgIH1cblxuICAgICAgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIHF1ZXJ5RGF0YSBhcnJheSBlbnRyeTogJHt0eXBlb2YgaXRlbX1gKVxuICAgIH1cblxuICAgIHJldHVybiBlbnRyaWVzXG4gIH1cblxuICBpZiAoaXNQbGFpbk9iamVjdChzcGVjKSkge1xuICAgIC8qKiBAdHlwZSB7UXVlcnlEYXRhRW50cnlbXX0gKi9cbiAgICBjb25zdCBlbnRyaWVzID0gW11cblxuICAgIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKHNwZWMpKSB7XG4gICAgICBpZiAodmFsdWUgPT09IHRydWUpIHtcbiAgICAgICAgZW50cmllcy5wdXNoKHtjaGFpbjogWy4uLmNoYWluXSwgZm5OYW1lOiBrZXl9KVxuICAgICAgICBjb250aW51ZVxuICAgICAgfVxuXG4gICAgICBpZiAodmFsdWUgPT09IGZhbHNlKSBjb250aW51ZVxuXG4gICAgICBpZiAodHlwZW9mIHZhbHVlID09PSBcInN0cmluZ1wiIHx8IEFycmF5LmlzQXJyYXkodmFsdWUpIHx8IGlzUGxhaW5PYmplY3QodmFsdWUpKSB7XG4gICAgICAgIGZvciAoY29uc3QgbmVzdGVkIG9mIG5vcm1hbGl6ZVF1ZXJ5RGF0YVNwZWMoLyoqIEB0eXBlIHthbnl9ICovICh2YWx1ZSksIFsuLi5jaGFpbiwga2V5XSkpIHtcbiAgICAgICAgICBlbnRyaWVzLnB1c2gobmVzdGVkKVxuICAgICAgICB9XG4gICAgICAgIGNvbnRpbnVlXG4gICAgICB9XG5cbiAgICAgIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCBxdWVyeURhdGEgdmFsdWUgZm9yIFwiJHtrZXl9XCI6ICR7dHlwZW9mIHZhbHVlfWApXG4gICAgfVxuXG4gICAgcmV0dXJuIGVudHJpZXNcbiAgfVxuXG4gIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCBxdWVyeURhdGEgc3BlYzogJHt0eXBlb2Ygc3BlY31gKVxufVxuXG4vKipcbiAqIEJ1aWxkIHRoZSBuZXN0ZWQgYGpvaW5zKC4uLilgIGRlc2NyaXB0b3IgZm9yIGEgY2hhaW4gb2YgcmVsYXRpb25zaGlwIG5hbWVzLlxuICogYFtcInByb2plY3RzXCIsIFwidGFza3NcIl1gIOKGkiBge3Byb2plY3RzOiB7dGFza3M6IHRydWV9fWAuIFVzZWQgaW50ZXJuYWxseSBzb1xuICogdGhlIHJ1bm5lciBjYW4gcmV1c2UgdGhlIGV4aXN0aW5nIGBqb2luc2AgcGF0aC1yZWdpc3RyYXRpb24gbWFjaGluZXJ5XG4gKiAoSm9pblRyYWNrZXIsIGFsaWFzIGdlbmVyYXRpb24sIHNjb3BlIGFwcGxpY2F0aW9uKS5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ1tdfSBjaGFpbiAtIFJlbGF0aW9uc2hpcCBjaGFpbi5cbiAqIEByZXR1cm5zIHt0cnVlIHwgUmVjb3JkPHN0cmluZywgYW55Pn0gLSBOZXN0ZWQgam9pbiBkZXNjcmlwdG9yLCBvciBgdHJ1ZWAgd2hlbiB0aGUgY2hhaW4gaXMgZW1wdHkuXG4gKi9cbmZ1bmN0aW9uIGJ1aWxkTmVzdGVkSm9pbkRlc2NyaXB0b3IoY2hhaW4pIHtcbiAgaWYgKGNoYWluLmxlbmd0aCA9PT0gMCkgcmV0dXJuIHRydWVcblxuICAvKiogQHR5cGUge1JlY29yZDxzdHJpbmcsIGFueT59ICovXG4gIGNvbnN0IG9iaiA9IHt9XG4gIGxldCBjdXJzb3IgPSBvYmpcblxuICBmb3IgKGxldCBpID0gMDsgaSA8IGNoYWluLmxlbmd0aDsgaSArPSAxKSB7XG4gICAgY29uc3Qgc2VnID0gY2hhaW5baV1cbiAgICBjb25zdCBpc0xhc3QgPSBpID09PSBjaGFpbi5sZW5ndGggLSAxXG5cbiAgICBjdXJzb3Jbc2VnXSA9IGlzTGFzdCA/IHRydWUgOiB7fVxuXG4gICAgaWYgKCFpc0xhc3QpIGN1cnNvciA9IGN1cnNvcltzZWddXG4gIH1cblxuICByZXR1cm4gb2JqXG59XG5cbi8qKlxuICogV2FsayBhIHJlbGF0aW9uc2hpcCBjaGFpbiBmcm9tIHRoZSByb290IG1vZGVsIGFuZCByZXR1cm4gdGhlIG1vZGVsXG4gKiBjbGFzcyBhdCBpdHMgdGFpbC4gVGhyb3dzIHdpdGggYSBjbGVhciBtZXNzYWdlIHdoZW4gYW55IHNlZ21lbnQgaXNcbiAqIHVua25vd24uXG4gKlxuICogQHBhcmFtIHt0eXBlb2YgaW1wb3J0KFwiLi4vcmVjb3JkL2luZGV4LmpzXCIpLmRlZmF1bHR9IHJvb3RNb2RlbENsYXNzIC0gUm9vdCBtb2RlbCBjbGFzcy5cbiAqIEBwYXJhbSB7c3RyaW5nW119IGNoYWluIC0gUmVsYXRpb25zaGlwIGNoYWluLlxuICogQHJldHVybnMge3R5cGVvZiBpbXBvcnQoXCIuLi9yZWNvcmQvaW5kZXguanNcIikuZGVmYXVsdH0gLSBUYXJnZXQgbW9kZWwgY2xhc3MuXG4gKi9cbmZ1bmN0aW9uIHJlc29sdmVUYXJnZXRNb2RlbENsYXNzKHJvb3RNb2RlbENsYXNzLCBjaGFpbikge1xuICBsZXQgbW9kZWxDbGFzcyA9IHJvb3RNb2RlbENsYXNzXG5cbiAgZm9yIChjb25zdCBzZWdtZW50IG9mIGNoYWluKSB7XG4gICAgY29uc3QgcmVsYXRpb25zaGlwID0gbW9kZWxDbGFzcy5nZXRSZWxhdGlvbnNoaXBCeU5hbWUoc2VnbWVudClcbiAgICBjb25zdCB0YXJnZXQgPSByZWxhdGlvbnNoaXAuZ2V0VGFyZ2V0TW9kZWxDbGFzcygpXG5cbiAgICBpZiAoIXRhcmdldCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBxdWVyeURhdGE6IGNvdWxkIG5vdCByZXNvbHZlIHRhcmdldCBtb2RlbCBmb3IgJHttb2RlbENsYXNzLm5hbWV9IyR7c2VnbWVudH1gKVxuICAgIH1cblxuICAgIG1vZGVsQ2xhc3MgPSB0YXJnZXRcbiAgfVxuXG4gIHJldHVybiBtb2RlbENsYXNzXG59XG5cbi8qKlxuICogUnVuIGV2ZXJ5IHF1ZXJ5RGF0YSBlbnRyeSBhZ2FpbnN0IHRoZSBsb2FkZWQgcm9vdCByZWNvcmRzLCBhdHRhY2hpbmdcbiAqIHRoZSByZXN1bHRpbmcgdmFsdWVzIGFzIHF1ZXJ5RGF0YSBlbnRyaWVzIG9uIGVhY2ggcm9vdCByZWNvcmQuXG4gKlxuICogT25lIGdyb3VwZWQgcXVlcnkgcGVyIGVudHJ5OiB0aGUgcnVubmVyIGJ1aWxkcyBhIGZyZXNoIHF1ZXJ5IG92ZXIgdGhlXG4gKiByb290IG1vZGVsLCBqb2lucyBkb3duIHRoZSBjaGFpbiwgZ3JvdXBzIGJ5IHRoZSByb290IHRhYmxlJ3MgcHJpbWFyeVxuICoga2V5LCBhbmQgaW52b2tlcyB0aGUgcmVnaXN0ZXJlZCBmbiB0byBhZGQgaXRzIG93biBTRUxFQ1QgKGFuZCBhbnlcbiAqIGFkZGl0aW9uYWwgam9pbnMvd2hlcmUpLiBSZXN1bHRzIGFyZSBtYXBwZWQgYmFjayB0byByb290IG1vZGVscyBieVxuICogcHJpbWFyeSBrZXkgYW5kIGF0dGFjaGVkIHZpYSBgX3NldFF1ZXJ5RGF0YShuYW1lLCB2YWx1ZSlgIGZvciBldmVyeVxuICogc2VsZWN0ZWQgYWxpYXMgKGV4Y2VwdCB0aGUgcmVzZXJ2ZWQgYHBhcmVudF9pZGApLiBSb3dzIG1pc3NpbmcgZnJvbVxuICogdGhlIHJlc3VsdCBrZWVwIGBudWxsYCDigJQgbWF0Y2hlcyB0aGUgZmVhdHVyZSdzIGRvY3VtZW50ZWQgZGVmYXVsdC5cbiAqXG4gKiBNaXJyb3JzIHRoZSBzaGFwZSBvZiBgcnVuV2l0aENvdW50YDogb25lIHF1ZXJ5IHBlciBlbnRyeSwgYSBzZXBhcmF0ZVxuICogc3RvcmFnZSBtYXAgb24gdGhlIHJlY29yZCwgbmV2ZXIgdG91Y2hlcyBgX2F0dHJpYnV0ZXNgLlxuICpcbiAqIEBwYXJhbSB7b2JqZWN0fSBhcmdzIC0gT3B0aW9ucy5cbiAqIEBwYXJhbSB7dHlwZW9mIGltcG9ydChcIi4uL3JlY29yZC9pbmRleC5qc1wiKS5kZWZhdWx0fSBhcmdzLnJvb3RNb2RlbENsYXNzIC0gUm9vdCBtb2RlbCBjbGFzcy5cbiAqIEBwYXJhbSB7aW1wb3J0KFwiLi4vcmVjb3JkL2luZGV4LmpzXCIpLmRlZmF1bHRbXX0gYXJncy5yb290TW9kZWxzIC0gTG9hZGVkIHJvb3QgcmVjb3Jkcy5cbiAqIEBwYXJhbSB7UXVlcnlEYXRhRW50cnlbXX0gYXJncy5lbnRyaWVzIC0gTm9ybWFsaXplZCBxdWVyeURhdGEgZW50cmllcy5cbiAqIEByZXR1cm5zIHtQcm9taXNlPHZvaWQ+fVxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcnVuUXVlcnlEYXRhKHtyb290TW9kZWxDbGFzcywgcm9vdE1vZGVscywgZW50cmllc30pIHtcbiAgaWYgKHJvb3RNb2RlbHMubGVuZ3RoID09PSAwIHx8IGVudHJpZXMubGVuZ3RoID09PSAwKSByZXR1cm5cblxuICBjb25zdCBwcmltYXJ5S2V5ID0gcm9vdE1vZGVsQ2xhc3MucHJpbWFyeUtleSgpXG4gIGNvbnN0IHJvb3RJZHMgPSByb290TW9kZWxzLm1hcCgobW9kZWwpID0+IC8qKiBAdHlwZSB7c3RyaW5nIHwgbnVtYmVyfSAqLyAobW9kZWwucmVhZENvbHVtbihwcmltYXJ5S2V5KSkpXG5cbiAgZm9yIChjb25zdCBlbnRyeSBvZiBlbnRyaWVzKSB7XG4gICAgYXdhaXQgcnVuRW50cnkoe2VudHJ5LCBwcmltYXJ5S2V5LCByb290SWRzLCByb290TW9kZWxDbGFzcywgcm9vdE1vZGVsc30pXG4gIH1cbn1cblxuLyoqXG4gKiBAcGFyYW0ge29iamVjdH0gYXJncyAtIE9wdGlvbnMuXG4gKiBAcGFyYW0ge1F1ZXJ5RGF0YUVudHJ5fSBhcmdzLmVudHJ5IC0gRW50cnkgYmVpbmcgZXZhbHVhdGVkLlxuICogQHBhcmFtIHtzdHJpbmd9IGFyZ3MucHJpbWFyeUtleSAtIFJvb3QgbW9kZWwgcHJpbWFyeSBrZXkgY29sdW1uLlxuICogQHBhcmFtIHtBcnJheTxzdHJpbmcgfCBudW1iZXI+fSBhcmdzLnJvb3RJZHMgLSBSb290IHByaW1hcnkta2V5IHZhbHVlcy5cbiAqIEBwYXJhbSB7dHlwZW9mIGltcG9ydChcIi4uL3JlY29yZC9pbmRleC5qc1wiKS5kZWZhdWx0fSBhcmdzLnJvb3RNb2RlbENsYXNzIC0gUm9vdCBtb2RlbCBjbGFzcy5cbiAqIEBwYXJhbSB7aW1wb3J0KFwiLi4vcmVjb3JkL2luZGV4LmpzXCIpLmRlZmF1bHRbXX0gYXJncy5yb290TW9kZWxzIC0gTG9hZGVkIHJvb3QgcmVjb3Jkcy5cbiAqIEByZXR1cm5zIHtQcm9taXNlPHZvaWQ+fVxuICovXG5hc3luYyBmdW5jdGlvbiBydW5FbnRyeSh7ZW50cnksIHByaW1hcnlLZXksIHJvb3RJZHMsIHJvb3RNb2RlbENsYXNzLCByb290TW9kZWxzfSkge1xuICBjb25zdCB0YXJnZXRNb2RlbENsYXNzID0gcmVzb2x2ZVRhcmdldE1vZGVsQ2xhc3Mocm9vdE1vZGVsQ2xhc3MsIGVudHJ5LmNoYWluKVxuICBjb25zdCBmbiA9IHRhcmdldE1vZGVsQ2xhc3MuZ2V0UXVlcnlEYXRhQnlOYW1lKGVudHJ5LmZuTmFtZSlcblxuICBpZiAoIWZuKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBxdWVyeURhdGE6ICR7dGFyZ2V0TW9kZWxDbGFzcy5uYW1lfSBoYXMgbm8gZW50cnkgcmVnaXN0ZXJlZCBhcyAke0pTT04uc3RyaW5naWZ5KGVudHJ5LmZuTmFtZSl9LiBgICtcbiAgICAgIGBEZWNsYXJlIGl0IHdpdGggJHt0YXJnZXRNb2RlbENsYXNzLm5hbWV9LnF1ZXJ5RGF0YSgke0pTT04uc3RyaW5naWZ5KGVudHJ5LmZuTmFtZSl9LCAoe3F1ZXJ5LCB0YWJsZU5hbWV9KSA9PiBxdWVyeS5zZWxlY3QoLi4uKSlgKVxuICB9XG5cbiAgY29uc3QgcXVlcnkgPSByb290TW9kZWxDbGFzcy5fbmV3UXVlcnkoKVxuXG4gIC8vIEVtcHR5IG91dCBhbnkgZGVmYXVsdHMgdGhlIHF1ZXJ5IGZhY3RvcnkgYWRkZWQg4oCUIHF1ZXJ5RGF0YSBydW5zXG4gIC8vIGEgYmFyZSBhZ2dyZWdhdGUsIG5vdCBhIGZ1bGwgbW9kZWwgbG9hZC5cbiAgcXVlcnkuX3NlbGVjdHMgPSBbXVxuICBxdWVyeS5fcHJlbG9hZCA9IHt9XG5cbiAgLy8gRm9yY2UgdGhlIHJvb3QgV0hFUkUgdG8gcXVhbGlmeSBieSB0YWJsZSBuYW1lIHNvIGl0IHN1cnZpdmVzIHRoZVxuICAvLyBqb2lucyB0aGUgZm4gbWF5IGFkZCBsYXRlciAob3RoZXJ3aXNlIGEgY2hpbGQgdGFibGUgc2hhcmluZyB0aGVcbiAgLy8gcm9vdCBQSyBjb2x1bW4gbmFtZSwgZS5nLiBgaWRgLCBtYWtlcyB0aGUgY2xhdXNlIGFtYmlndW91cykuXG4gIHF1ZXJ5Ll9mb3JjZVF1YWxpZnlCYXNlVGFibGUgPSB0cnVlXG5cbiAgY29uc3QgZHJpdmVyID0gcXVlcnkuZHJpdmVyXG4gIGNvbnN0IHJvb3RUYWJsZSA9IHJvb3RNb2RlbENsYXNzLnRhYmxlTmFtZSgpXG4gIGNvbnN0IHJvb3RQa1NxbCA9IGAke2RyaXZlci5xdW90ZVRhYmxlKHJvb3RUYWJsZSl9LiR7ZHJpdmVyLnF1b3RlQ29sdW1uKHByaW1hcnlLZXkpfWBcblxuICAvKiogQHR5cGUge1JlY29yZDxzdHJpbmcsIHVua25vd24+fSAqL1xuICBjb25zdCByb290V2hlcmUgPSB7fVxuICByb290V2hlcmVbcHJpbWFyeUtleV0gPSByb290SWRzXG4gIHF1ZXJ5LndoZXJlKHJvb3RXaGVyZSlcblxuICBjb25zdCBqb2luRGVzY3JpcHRvciA9IGJ1aWxkTmVzdGVkSm9pbkRlc2NyaXB0b3IoZW50cnkuY2hhaW4pXG5cbiAgaWYgKGpvaW5EZXNjcmlwdG9yICE9PSB0cnVlKSB7XG4gICAgcXVlcnkuam9pbnMoam9pbkRlc2NyaXB0b3IpXG4gIH1cblxuICBxdWVyeS5ncm91cChyb290UGtTcWwpXG4gIHF1ZXJ5LnNlbGVjdChgJHtyb290UGtTcWx9IEFTIHBhcmVudF9pZGApXG5cbiAgY29uc3QgdGFyZ2V0VGFibGVSZWYgPSBlbnRyeS5jaGFpbi5sZW5ndGggPT09IDBcbiAgICA/IHJvb3RUYWJsZVxuICAgIDogcXVlcnkuZ2V0VGFibGVSZWZlcmVuY2VGb3JKb2luKC4uLmVudHJ5LmNoYWluKVxuXG4gIC8vIE5COiB3ZSBpbnRlbnRpb25hbGx5IGxlYXZlIGBfam9pbkJhc2VQYXRoYCBhdCBbXSBzbyB0aGUgb3V0ZXIgY2hhaW5cbiAgLy8gam9pbnMgY29udGludWUgdG8gcmVzb2x2ZSBmcm9tIHRoZSByb290IG1vZGVsIGF0IHJlbmRlciB0aW1lLiBUaGVcbiAgLy8gZm4gZ2V0cyBgdGFibGVOYW1lYCBmb3Igc2VsZi1yZWZlcmVuY2U7IGFkZGl0aW9uYWwgam9pbnMgZnJvbVxuICAvLyBuZXN0ZWQgbGV2ZWxzIHNob3VsZCB1c2UgZnVsbCBwYXRocyBmcm9tIHRoZSByb290LlxuICBmbih7XG4gICAgYXR0cmlidXRlTmFtZTogZW50cnkuZm5OYW1lLFxuICAgIGRyaXZlcixcbiAgICBtb2RlbENsYXNzOiB0YXJnZXRNb2RlbENsYXNzLFxuICAgIHBhcmVudElkczogcm9vdElkcyxcbiAgICBxdWVyeSxcbiAgICB0YWJsZU5hbWU6IHRhcmdldFRhYmxlUmVmXG4gIH0pXG5cbiAgY29uc3Qgcm93cyA9IC8qKiBAdHlwZSB7QXJyYXk8UmVjb3JkPHN0cmluZywgdW5rbm93bj4+fSAqLyAoYXdhaXQgcXVlcnkuX2V4ZWN1dGVRdWVyeSgpKVxuICBjb25zdCBieVBhcmVudCA9IG5ldyBNYXAoKVxuXG4gIGZvciAoY29uc3Qgcm93IG9mIHJvd3MpIHtcbiAgICBjb25zdCBwYXJlbnRJZCA9IHJvdy5wYXJlbnRfaWRcblxuICAgIGlmIChwYXJlbnRJZCA9PSBudWxsKSBjb250aW51ZVxuXG4gICAgYnlQYXJlbnQuc2V0KHBhcmVudElkLCByb3cpXG4gIH1cblxuICBmb3IgKGNvbnN0IG1vZGVsIG9mIHJvb3RNb2RlbHMpIHtcbiAgICBjb25zdCBtb2RlbElkID0gLyoqIEB0eXBlIHtzdHJpbmcgfCBudW1iZXJ9ICovIChtb2RlbC5yZWFkQ29sdW1uKHByaW1hcnlLZXkpKVxuICAgIC8vIERyaXZlci10eXBlIHRvbGVyYW5jZTogTXlTUUwgY2FuIHJldHVybiBQS3MgYXMgc3RyaW5ncyBldmVuIHdoZW5cbiAgICAvLyB0aGUgY29sdW1uIGlzIG51bWVyaWMuIEZhbGwgYmFjayB0byBhIHN0cmluZyBsb29rdXAgc28gcmVzdWx0c1xuICAgIC8vIHN0aWxsIGxhbmQgb24gdGhlIHJpZ2h0IG1vZGVsLlxuICAgIGNvbnN0IHJvdyA9IGJ5UGFyZW50Lmhhcyhtb2RlbElkKVxuICAgICAgPyBieVBhcmVudC5nZXQobW9kZWxJZClcbiAgICAgIDogYnlQYXJlbnQuZ2V0KFN0cmluZyhtb2RlbElkKSlcblxuICAgIGlmICghcm93KSBjb250aW51ZVxuXG4gICAgZm9yIChjb25zdCBbY29sdW1uTmFtZSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKHJvdykpIHtcbiAgICAgIGlmIChjb2x1bW5OYW1lID09PSBcInBhcmVudF9pZFwiKSBjb250aW51ZVxuXG4gICAgICBtb2RlbC5fc2V0UXVlcnlEYXRhKGNvbHVtbk5hbWUsIHZhbHVlKVxuICAgIH1cbiAgfVxufVxuIl19
261
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlcnktZGF0YS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9kYXRhYmFzZS9xdWVyeS9xdWVyeS1kYXRhLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFlBQVk7QUFFWixPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0saUJBQWlCLENBQUE7QUFFN0M7Ozs7O0dBS0c7QUFFSDs7O0dBR0c7QUFFSDs7Ozs7Ozs7O0dBU0c7QUFFSDs7O0dBR0c7QUFFSDs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBa0JHO0FBQ0gsTUFBTSxVQUFVLHNCQUFzQixDQUFDLElBQUksRUFBRSxLQUFLLEdBQUcsRUFBRTtJQUNyRCxJQUFJLElBQUksSUFBSSxJQUFJO1FBQUUsT0FBTyxFQUFFLENBQUE7SUFFM0IsSUFBSSxPQUFPLElBQUksS0FBSyxRQUFRLEVBQUUsQ0FBQztRQUM3QixPQUFPLENBQUMsRUFBQyxLQUFLLEVBQUUsQ0FBQyxHQUFHLEtBQUssQ0FBQyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUMsQ0FBQyxDQUFBO0lBQzVDLENBQUM7SUFFRCxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztRQUN4Qjs7cUNBRTZCO1FBQzdCLE1BQU0sT0FBTyxHQUFHLEVBQUUsQ0FBQTtRQUVsQixLQUFLLE1BQU0sSUFBSSxJQUFJLElBQUksRUFBRSxDQUFDO1lBQ3hCLElBQUksT0FBTyxJQUFJLEtBQUssUUFBUSxFQUFFLENBQUM7Z0JBQzdCLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBQyxLQUFLLEVBQUUsQ0FBQyxHQUFHLEtBQUssQ0FBQyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUMsQ0FBQyxDQUFBO2dCQUMvQyxTQUFRO1lBQ1YsQ0FBQztZQUVELElBQUksYUFBYSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7Z0JBQ3hCLEtBQUssTUFBTSxNQUFNLElBQUksc0JBQXNCLENBQUM7OzBFQUVjLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxLQUFLLENBQUMsRUFBRSxDQUFDO29CQUMxRSxPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFBO2dCQUN0QixDQUFDO2dCQUNELFNBQVE7WUFDVixDQUFDO1lBRUQsTUFBTSxJQUFJLEtBQUssQ0FBQyxrQ0FBa0MsT0FBTyxJQUFJLEVBQUUsQ0FBQyxDQUFBO1FBQ2xFLENBQUM7UUFFRCxPQUFPLE9BQU8sQ0FBQTtJQUNoQixDQUFDO0lBRUQsSUFBSSxhQUFhLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztRQUN4Qjs7cUNBRTZCO1FBQzdCLE1BQU0sT0FBTyxHQUFHLEVBQUUsQ0FBQTtRQUVsQixLQUFLLE1BQU0sQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLElBQUksTUFBTSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO1lBQ2hELElBQUksS0FBSyxLQUFLLElBQUksRUFBRSxDQUFDO2dCQUNuQixPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUMsS0FBSyxFQUFFLENBQUMsR0FBRyxLQUFLLENBQUMsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFDLENBQUMsQ0FBQTtnQkFDOUMsU0FBUTtZQUNWLENBQUM7WUFFRCxJQUFJLEtBQUssS0FBSyxLQUFLO2dCQUFFLFNBQVE7WUFFN0IsSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsSUFBSSxhQUFhLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztnQkFDOUUsS0FBSyxNQUFNLE1BQU0sSUFBSSxzQkFBc0IsQ0FBQzs7MEVBRWMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsR0FBRyxLQUFLLEVBQUUsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDO29CQUNyRixPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFBO2dCQUN0QixDQUFDO2dCQUNELFNBQVE7WUFDVixDQUFDO1lBRUQsTUFBTSxJQUFJLEtBQUssQ0FBQyxnQ0FBZ0MsR0FBRyxNQUFNLE9BQU8sS0FBSyxFQUFFLENBQUMsQ0FBQTtRQUMxRSxDQUFDO1FBRUQsT0FBTyxPQUFPLENBQUE7SUFDaEIsQ0FBQztJQUVELE1BQU0sSUFBSSxLQUFLLENBQUMsMkJBQTJCLE9BQU8sSUFBSSxFQUFFLENBQUMsQ0FBQTtBQUMzRCxDQUFDO0FBRUQ7Ozs7Ozs7R0FPRztBQUNILFNBQVMseUJBQXlCLENBQUMsS0FBSztJQUN0QyxJQUFJLEtBQUssQ0FBQyxNQUFNLEtBQUssQ0FBQztRQUFFLE9BQU8sSUFBSSxDQUFBO0lBRW5DOztrQ0FFOEI7SUFDOUIsTUFBTSxHQUFHLEdBQUcsRUFBRSxDQUFBO0lBQ2QsSUFBSSxNQUFNLEdBQUcsR0FBRyxDQUFBO0lBRWhCLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztRQUN6QyxNQUFNLEdBQUcsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUE7UUFDcEIsTUFBTSxNQUFNLEdBQUcsQ0FBQyxLQUFLLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFBO1FBRXJDLE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFBO1FBRWhDLElBQUksQ0FBQyxNQUFNO1lBQUUsTUFBTSxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQTtJQUNuQyxDQUFDO0lBRUQsT0FBTyxHQUFHLENBQUE7QUFDWixDQUFDO0FBRUQ7Ozs7Ozs7R0FPRztBQUNILFNBQVMsdUJBQXVCLENBQUMsY0FBYyxFQUFFLEtBQUs7SUFDcEQsSUFBSSxVQUFVLEdBQUcsY0FBYyxDQUFBO0lBRS9CLEtBQUssTUFBTSxPQUFPLElBQUksS0FBSyxFQUFFLENBQUM7UUFDNUIsTUFBTSxZQUFZLEdBQUcsVUFBVSxDQUFDLHFCQUFxQixDQUFDLE9BQU8sQ0FBQyxDQUFBO1FBQzlELE1BQU0sTUFBTSxHQUFHLFlBQVksQ0FBQyxtQkFBbUIsRUFBRSxDQUFBO1FBRWpELElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNaLE1BQU0sSUFBSSxLQUFLLENBQUMsaURBQWlELFVBQVUsQ0FBQyxJQUFJLElBQUksT0FBTyxFQUFFLENBQUMsQ0FBQTtRQUNoRyxDQUFDO1FBRUQsVUFBVSxHQUFHLE1BQU0sQ0FBQTtJQUNyQixDQUFDO0lBRUQsT0FBTyxVQUFVLENBQUE7QUFDbkIsQ0FBQztBQUVEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBbUJHO0FBQ0gsTUFBTSxDQUFDLEtBQUssVUFBVSxZQUFZLENBQUMsRUFBQyxjQUFjLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBQztJQUN0RSxJQUFJLFVBQVUsQ0FBQyxNQUFNLEtBQUssQ0FBQyxJQUFJLE9BQU8sQ0FBQyxNQUFNLEtBQUssQ0FBQztRQUFFLE9BQU07SUFFM0QsTUFBTSxVQUFVLEdBQUcsY0FBYyxDQUFDLFVBQVUsRUFBRSxDQUFBO0lBQzlDLE1BQU0sT0FBTyxHQUFHLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDOzswRUFFNEIsQ0FBQyxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFBO0lBRXRHLEtBQUssTUFBTSxLQUFLLElBQUksT0FBTyxFQUFFLENBQUM7UUFDNUIsTUFBTSxRQUFRLENBQUMsRUFBQyxLQUFLLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBRSxjQUFjLEVBQUUsVUFBVSxFQUFDLENBQUMsQ0FBQTtJQUMxRSxDQUFDO0FBQ0gsQ0FBQztBQUVEOzs7Ozs7Ozs7R0FTRztBQUNILEtBQUssVUFBVSxRQUFRLENBQUMsRUFBQyxLQUFLLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBRSxjQUFjLEVBQUUsVUFBVSxFQUFDO0lBQzlFLE1BQU0sZ0JBQWdCLEdBQUcsdUJBQXVCLENBQUMsY0FBYyxFQUFFLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQTtJQUM3RSxNQUFNLEVBQUUsR0FBRyxnQkFBZ0IsQ0FBQyxrQkFBa0IsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUE7SUFFNUQsSUFBSSxDQUFDLEVBQUUsRUFBRSxDQUFDO1FBQ1IsTUFBTSxJQUFJLEtBQUssQ0FBQyxjQUFjLGdCQUFnQixDQUFDLElBQUksK0JBQStCLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxJQUFJO1lBQ2hILG1CQUFtQixnQkFBZ0IsQ0FBQyxJQUFJLGNBQWMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLDhDQUE4QyxDQUFDLENBQUE7SUFDckksQ0FBQztJQUVELE1BQU0sS0FBSyxHQUFHLGNBQWMsQ0FBQyxTQUFTLEVBQUUsQ0FBQTtJQUV4QyxrRUFBa0U7SUFDbEUsMkNBQTJDO0lBQzNDLEtBQUssQ0FBQyxRQUFRLEdBQUcsRUFBRSxDQUFBO0lBQ25CLEtBQUssQ0FBQyxRQUFRLEdBQUcsRUFBRSxDQUFBO0lBRW5CLG1FQUFtRTtJQUNuRSxrRUFBa0U7SUFDbEUsK0RBQStEO0lBQy9ELEtBQUssQ0FBQyxzQkFBc0IsR0FBRyxJQUFJLENBQUE7SUFFbkMsTUFBTSxNQUFNLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQTtJQUMzQixNQUFNLFNBQVMsR0FBRyxjQUFjLENBQUMsU0FBUyxFQUFFLENBQUE7SUFDNUMsTUFBTSxTQUFTLEdBQUcsR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxXQUFXLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQTtJQUVyRjs7a0NBRThCO0lBQzlCLE1BQU0sU0FBUyxHQUFHLEVBQUUsQ0FBQTtJQUNwQixTQUFTLENBQUMsVUFBVSxDQUFDLEdBQUcsT0FBTyxDQUFBO0lBQy9CLEtBQUssQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUE7SUFFdEIsTUFBTSxjQUFjLEdBQUcseUJBQXlCLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFBO0lBRTdELElBQUksY0FBYyxLQUFLLElBQUksRUFBRSxDQUFDO1FBQzVCLEtBQUssQ0FBQyxLQUFLLENBQUMsY0FBYyxDQUFDLENBQUE7SUFDN0IsQ0FBQztJQUVELEtBQUssQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUE7SUFDdEIsS0FBSyxDQUFDLE1BQU0sQ0FBQyxHQUFHLFNBQVMsZUFBZSxDQUFDLENBQUE7SUFFekMsTUFBTSxjQUFjLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxNQUFNLEtBQUssQ0FBQztRQUM3QyxDQUFDLENBQUMsU0FBUztRQUNYLENBQUMsQ0FBQyxLQUFLLENBQUMsd0JBQXdCLENBQUMsR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUE7SUFFbEQsc0VBQXNFO0lBQ3RFLG9FQUFvRTtJQUNwRSxnRUFBZ0U7SUFDaEUscURBQXFEO0lBQ3JELEVBQUUsQ0FBQztRQUNELGFBQWEsRUFBRSxLQUFLLENBQUMsTUFBTTtRQUMzQixNQUFNO1FBQ04sVUFBVSxFQUFFLGdCQUFnQjtRQUM1QixTQUFTLEVBQUUsT0FBTztRQUNsQixLQUFLO1FBQ0wsU0FBUyxFQUFFLGNBQWM7S0FDMUIsQ0FBQyxDQUFBO0lBRUYsTUFBTSxJQUFJLEdBQUc7O3NEQUVxQyxDQUFDLENBQUMsTUFBTSxLQUFLLENBQUMsYUFBYSxFQUFFLENBQUMsQ0FBQTtJQUNoRixNQUFNLFFBQVEsR0FBRyxJQUFJLEdBQUcsRUFBRSxDQUFBO0lBRTFCLEtBQUssTUFBTSxHQUFHLElBQUksSUFBSSxFQUFFLENBQUM7UUFDdkIsTUFBTSxRQUFRLEdBQUcsR0FBRyxDQUFDLFNBQVMsQ0FBQTtRQUU5QixJQUFJLFFBQVEsSUFBSSxJQUFJO1lBQUUsU0FBUTtRQUU5QixRQUFRLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxHQUFHLENBQUMsQ0FBQTtJQUM3QixDQUFDO0lBRUQsS0FBSyxNQUFNLEtBQUssSUFBSSxVQUFVLEVBQUUsQ0FBQztRQUMvQixNQUFNLE9BQU8sR0FBRzs7b0RBRTRCLENBQUMsQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUE7UUFDM0UsbUVBQW1FO1FBQ25FLGlFQUFpRTtRQUNqRSxpQ0FBaUM7UUFDakMsTUFBTSxHQUFHLEdBQUcsUUFBUSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUM7WUFDL0IsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDO1lBQ3ZCLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFBO1FBRWpDLElBQUksQ0FBQyxHQUFHO1lBQUUsU0FBUTtRQUVsQixLQUFLLE1BQU0sQ0FBQyxVQUFVLEVBQUUsS0FBSyxDQUFDLElBQUksTUFBTSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQ3RELElBQUksVUFBVSxLQUFLLFdBQVc7Z0JBQUUsU0FBUTtZQUV4QyxLQUFLLENBQUMsYUFBYSxDQUFDLFVBQVUsRUFBRSxLQUFLLENBQUMsQ0FBQTtRQUN4QyxDQUFDO0lBQ0gsQ0FBQztBQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBAdHMtY2hlY2tcblxuaW1wb3J0IHtpc1BsYWluT2JqZWN0fSBmcm9tIFwiaXMtcGxhaW4tb2JqZWN0XCJcblxuLyoqXG4gKiBRdWVyeURhdGFFbnRyeSB0eXBlLlxuICogQHR5cGVkZWYge29iamVjdH0gUXVlcnlEYXRhRW50cnlcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nW119IGNoYWluIC0gUmVsYXRpb25zaGlwIGNoYWluIGZyb20gdGhlIHJvb3QgbW9kZWwgdG8gdGhlIG1vZGVsIHRoYXQgZGVjbGFyZXMgdGhlIGZuLiBFbXB0eSBmb3IgYSByb290LWxldmVsIGVudHJ5LlxuICogQHByb3BlcnR5IHtzdHJpbmd9IGZuTmFtZSAtIElkZW50aWZpZXIgdW5kZXIgd2hpY2ggdGhlIGZuIGlzIHJlZ2lzdGVyZWQgb24gdGhlIGRlY2xhcmluZyBtb2RlbC5cbiAqL1xuXG4vKipcbiAqIERlZmluZXMgdGhpcyB0eXBlZGVmLlxuICogQHR5cGVkZWYge3N0cmluZyB8IEFycmF5PHN0cmluZyB8IFJlY29yZDxzdHJpbmcsID8+PiB8IHtba2V5OiBzdHJpbmddOiB0cnVlIHwgZmFsc2UgfCBzdHJpbmcgfCBzdHJpbmdbXSB8IFJlY29yZDxzdHJpbmcsID8+fX0gUXVlcnlEYXRhU3BlY1xuICovXG5cbi8qKlxuICogUXVlcnlEYXRhQ2FsbGJhY2tBcmdzIHR5cGUuXG4gKiBAdHlwZWRlZiB7b2JqZWN0fSBRdWVyeURhdGFDYWxsYmFja0FyZ3NcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBhdHRyaWJ1dGVOYW1lIC0gTmFtZSB1bmRlciB3aGljaCB0aGUgZm4gd2FzIHJlZ2lzdGVyZWQuIENvbnZlbmllbnQgd2hlbiBhIGZuIGlzIHJldXNlZCBhY3Jvc3MgYWxpYXNlcy5cbiAqIEBwcm9wZXJ0eSB7aW1wb3J0KFwiLi4vZHJpdmVycy9iYXNlLmpzXCIpLmRlZmF1bHR9IGRyaXZlciAtIEFjdGl2ZSBkYXRhYmFzZSBkcml2ZXIsIGZvciBxdW90aW5nIGhlbHBlcnMgYW5kIHR5cGUtc3BlY2lmaWMgU1FMLlxuICogQHByb3BlcnR5IHt0eXBlb2YgaW1wb3J0KFwiLi4vcmVjb3JkL2luZGV4LmpzXCIpLmRlZmF1bHR9IG1vZGVsQ2xhc3MgLSBNb2RlbCBjbGFzcyB0aGUgZm4gaXMgcmVnaXN0ZXJlZCBvbiAodGhlIGNoYWluJ3MgdGFyZ2V0KS5cbiAqIEBwcm9wZXJ0eSB7QXJyYXk8c3RyaW5nIHwgbnVtYmVyPn0gcGFyZW50SWRzIC0gUHJpbWFyeS1rZXkgdmFsdWVzIG9mIHRoZSBsb2FkZWQgcm9vdCByZWNvcmRzLlxuICogQHByb3BlcnR5IHtpbXBvcnQoXCIuL21vZGVsLWNsYXNzLXF1ZXJ5LmpzXCIpLmRlZmF1bHR9IHF1ZXJ5IC0gR3JvdXBlZCBxdWVyeSBhbHJlYWR5IGpvaW5lZCBkb3duIHRoZSBjaGFpbiwgZmlsdGVyZWQgYnkgYHBhcmVudElkc2AsIHdpdGggYHBhcmVudF9pZGAgcHJlLXNlbGVjdGVkLlxuICogQHByb3BlcnR5IHtzdHJpbmd9IHRhYmxlTmFtZSAtIFVucXVvdGVkIHRhYmxlIHJlZmVyZW5jZSAoYWxpYXMgb3IgdGFibGUgbmFtZSkgZm9yIHRoZSBjaGFpbidzIHRhcmdldCwgcmVhZHkgdG8gcGFzdGUgaW50byBTUUwuXG4gKi9cblxuLyoqXG4gKiBRdWVyeURhdGFGbiB0eXBlLlxuICogQHR5cGVkZWYgeyhhcmdzOiBRdWVyeURhdGFDYWxsYmFja0FyZ3MpID0+IHZvaWQgfCBpbXBvcnQoXCIuL21vZGVsLWNsYXNzLXF1ZXJ5LmpzXCIpLmRlZmF1bHR9IFF1ZXJ5RGF0YUZuXG4gKi9cblxuLyoqXG4gKiBOb3JtYWxpemUgYSB1c2VyLXN1cHBsaWVkIHF1ZXJ5RGF0YSBzcGVjIGludG8gYSBmbGF0IGxpc3Qgb2YgZW50cmllc1xuICogdGhlIHJ1bm5lciBjYW4gY29uc3VtZS4gVGhlIHNwZWMgbWlycm9ycyB0aGUgc2hhcGUgb2YgYHByZWxvYWRgLCB3aXRoXG4gKiB0aGUgaW1wb3J0YW50IGRpc3RpbmN0aW9uIHRoYXQgKipsZWFmIHN0cmluZ3MgYXJlIGZuIG5hbWVzKiosIG5vdFxuICogZnVydGhlciByZWxhdGlvbnNoaXAgc2VnbWVudHMuIE5lc3RlZCBrZXlzIGFyZSByZWxhdGlvbnNoaXAgbmFtZXNcbiAqIGFsb25nIHRoZSBqb2luIGNoYWluIGZyb20gdGhlIHJvb3QgbW9kZWwgdG8gdGhlIGRlY2xhcmluZyBtb2RlbC5cbiAqXG4gKiBBY2NlcHRlZCBzaGFwZXMgKGFsbCB5aWVsZCB0aGUgc2FtZSBmbGF0IGVudHJpZXMpOlxuICogICBcImZvb1wiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICDihpIgW3tjaGFpbjogW10sIGZuTmFtZTogXCJmb29cIn1dXG4gKiAgIFtcImZvb1wiLCBcImJhclwiXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg4oaSIFt7Y2hhaW46IFtdLCBmbk5hbWU6IFwiZm9vXCJ9LCB7Y2hhaW46IFtdLCBmbk5hbWU6IFwiYmFyXCJ9XVxuICogICB7Zm9vOiB0cnVlfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg4oaSIFt7Y2hhaW46IFtdLCBmbk5hbWU6IFwiZm9vXCJ9XVxuICogICB7cHJvamVjdHM6IFtcInRhc2tzQ291bnRcIl19ICAgICAgICAgICAgICAgICDihpIgW3tjaGFpbjogW1wicHJvamVjdHNcIl0sIGZuTmFtZTogXCJ0YXNrc0NvdW50XCJ9XVxuICogICB7cHJvamVjdHM6IHt0YXNrczogW1widHJhbnNwb3J0U2Vjb25kc1N1bVwiLCB7dGltZWxvZ3M6IFtcInRpbWVTZWNvbmRzU3VtXCJdfV19fVxuICogICAgIOKGkiBbe2NoYWluOiBbXCJwcm9qZWN0c1wiLFwidGFza3NcIl0sIGZuTmFtZTogXCJ0cmFuc3BvcnRTZWNvbmRzU3VtXCJ9LFxuICogICAgICAgIHtjaGFpbjogW1wicHJvamVjdHNcIixcInRhc2tzXCIsXCJ0aW1lbG9nc1wiXSwgZm5OYW1lOiBcInRpbWVTZWNvbmRzU3VtXCJ9XVxuICogQHBhcmFtIHtRdWVyeURhdGFTcGVjfSBzcGVjIC0gVXNlci1zdXBwbGllZCBzcGVjLlxuICogQHBhcmFtIHtzdHJpbmdbXX0gW2NoYWluXSAtIEN1cnJlbnQgY2hhaW4gKGludGVybmFsIHJlY3Vyc2lvbikuXG4gKiBAcmV0dXJucyB7UXVlcnlEYXRhRW50cnlbXX0gLSBGbGF0IGxpc3Qgb2YgZW50cmllcy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG5vcm1hbGl6ZVF1ZXJ5RGF0YVNwZWMoc3BlYywgY2hhaW4gPSBbXSkge1xuICBpZiAoc3BlYyA9PSBudWxsKSByZXR1cm4gW11cblxuICBpZiAodHlwZW9mIHNwZWMgPT09IFwic3RyaW5nXCIpIHtcbiAgICByZXR1cm4gW3tjaGFpbjogWy4uLmNoYWluXSwgZm5OYW1lOiBzcGVjfV1cbiAgfVxuXG4gIGlmIChBcnJheS5pc0FycmF5KHNwZWMpKSB7XG4gICAgLyoqXG4gICAgICogRW50cmllcy5cbiAgICAgIEB0eXBlIHtRdWVyeURhdGFFbnRyeVtdfSAqL1xuICAgIGNvbnN0IGVudHJpZXMgPSBbXVxuXG4gICAgZm9yIChjb25zdCBpdGVtIG9mIHNwZWMpIHtcbiAgICAgIGlmICh0eXBlb2YgaXRlbSA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgICBlbnRyaWVzLnB1c2goe2NoYWluOiBbLi4uY2hhaW5dLCBmbk5hbWU6IGl0ZW19KVxuICAgICAgICBjb250aW51ZVxuICAgICAgfVxuXG4gICAgICBpZiAoaXNQbGFpbk9iamVjdChpdGVtKSkge1xuICAgICAgICBmb3IgKGNvbnN0IG5lc3RlZCBvZiBub3JtYWxpemVRdWVyeURhdGFTcGVjKC8qKlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIE5hcnJvd3MgdGhlIHJ1bnRpbWUgdmFsdWUgdG8gdGhlIGRvY3VtZW50ZWQgdHlwZS5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEB0eXBlIHs/fSAqLyAoaXRlbSksIGNoYWluKSkge1xuICAgICAgICAgIGVudHJpZXMucHVzaChuZXN0ZWQpXG4gICAgICAgIH1cbiAgICAgICAgY29udGludWVcbiAgICAgIH1cblxuICAgICAgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIHF1ZXJ5RGF0YSBhcnJheSBlbnRyeTogJHt0eXBlb2YgaXRlbX1gKVxuICAgIH1cblxuICAgIHJldHVybiBlbnRyaWVzXG4gIH1cblxuICBpZiAoaXNQbGFpbk9iamVjdChzcGVjKSkge1xuICAgIC8qKlxuICAgICAqIEVudHJpZXMuXG4gICAgICBAdHlwZSB7UXVlcnlEYXRhRW50cnlbXX0gKi9cbiAgICBjb25zdCBlbnRyaWVzID0gW11cblxuICAgIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKHNwZWMpKSB7XG4gICAgICBpZiAodmFsdWUgPT09IHRydWUpIHtcbiAgICAgICAgZW50cmllcy5wdXNoKHtjaGFpbjogWy4uLmNoYWluXSwgZm5OYW1lOiBrZXl9KVxuICAgICAgICBjb250aW51ZVxuICAgICAgfVxuXG4gICAgICBpZiAodmFsdWUgPT09IGZhbHNlKSBjb250aW51ZVxuXG4gICAgICBpZiAodHlwZW9mIHZhbHVlID09PSBcInN0cmluZ1wiIHx8IEFycmF5LmlzQXJyYXkodmFsdWUpIHx8IGlzUGxhaW5PYmplY3QodmFsdWUpKSB7XG4gICAgICAgIGZvciAoY29uc3QgbmVzdGVkIG9mIG5vcm1hbGl6ZVF1ZXJ5RGF0YVNwZWMoLyoqXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogTmFycm93cyB0aGUgcnVudGltZSB2YWx1ZSB0byB0aGUgZG9jdW1lbnRlZCB0eXBlLlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQHR5cGUgez99ICovICh2YWx1ZSksIFsuLi5jaGFpbiwga2V5XSkpIHtcbiAgICAgICAgICBlbnRyaWVzLnB1c2gobmVzdGVkKVxuICAgICAgICB9XG4gICAgICAgIGNvbnRpbnVlXG4gICAgICB9XG5cbiAgICAgIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCBxdWVyeURhdGEgdmFsdWUgZm9yIFwiJHtrZXl9XCI6ICR7dHlwZW9mIHZhbHVlfWApXG4gICAgfVxuXG4gICAgcmV0dXJuIGVudHJpZXNcbiAgfVxuXG4gIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCBxdWVyeURhdGEgc3BlYzogJHt0eXBlb2Ygc3BlY31gKVxufVxuXG4vKipcbiAqIEJ1aWxkIHRoZSBuZXN0ZWQgYGpvaW5zKC4uLilgIGRlc2NyaXB0b3IgZm9yIGEgY2hhaW4gb2YgcmVsYXRpb25zaGlwIG5hbWVzLlxuICogYFtcInByb2plY3RzXCIsIFwidGFza3NcIl1gIOKGkiBge3Byb2plY3RzOiB7dGFza3M6IHRydWV9fWAuIFVzZWQgaW50ZXJuYWxseSBzb1xuICogdGhlIHJ1bm5lciBjYW4gcmV1c2UgdGhlIGV4aXN0aW5nIGBqb2luc2AgcGF0aC1yZWdpc3RyYXRpb24gbWFjaGluZXJ5XG4gKiAoSm9pblRyYWNrZXIsIGFsaWFzIGdlbmVyYXRpb24sIHNjb3BlIGFwcGxpY2F0aW9uKS5cbiAqIEBwYXJhbSB7c3RyaW5nW119IGNoYWluIC0gUmVsYXRpb25zaGlwIGNoYWluLlxuICogQHJldHVybnMge3RydWUgfCBSZWNvcmQ8c3RyaW5nLCA/Pn0gLSBOZXN0ZWQgam9pbiBkZXNjcmlwdG9yLCBvciBgdHJ1ZWAgd2hlbiB0aGUgY2hhaW4gaXMgZW1wdHkuXG4gKi9cbmZ1bmN0aW9uIGJ1aWxkTmVzdGVkSm9pbkRlc2NyaXB0b3IoY2hhaW4pIHtcbiAgaWYgKGNoYWluLmxlbmd0aCA9PT0gMCkgcmV0dXJuIHRydWVcblxuICAvKipcbiAgICogT2JqLlxuICAgIEB0eXBlIHtSZWNvcmQ8c3RyaW5nLCA/Pn0gKi9cbiAgY29uc3Qgb2JqID0ge31cbiAgbGV0IGN1cnNvciA9IG9ialxuXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgY2hhaW4ubGVuZ3RoOyBpICs9IDEpIHtcbiAgICBjb25zdCBzZWcgPSBjaGFpbltpXVxuICAgIGNvbnN0IGlzTGFzdCA9IGkgPT09IGNoYWluLmxlbmd0aCAtIDFcblxuICAgIGN1cnNvcltzZWddID0gaXNMYXN0ID8gdHJ1ZSA6IHt9XG5cbiAgICBpZiAoIWlzTGFzdCkgY3Vyc29yID0gY3Vyc29yW3NlZ11cbiAgfVxuXG4gIHJldHVybiBvYmpcbn1cblxuLyoqXG4gKiBXYWxrIGEgcmVsYXRpb25zaGlwIGNoYWluIGZyb20gdGhlIHJvb3QgbW9kZWwgYW5kIHJldHVybiB0aGUgbW9kZWxcbiAqIGNsYXNzIGF0IGl0cyB0YWlsLiBUaHJvd3Mgd2l0aCBhIGNsZWFyIG1lc3NhZ2Ugd2hlbiBhbnkgc2VnbWVudCBpc1xuICogdW5rbm93bi5cbiAqIEBwYXJhbSB7dHlwZW9mIGltcG9ydChcIi4uL3JlY29yZC9pbmRleC5qc1wiKS5kZWZhdWx0fSByb290TW9kZWxDbGFzcyAtIFJvb3QgbW9kZWwgY2xhc3MuXG4gKiBAcGFyYW0ge3N0cmluZ1tdfSBjaGFpbiAtIFJlbGF0aW9uc2hpcCBjaGFpbi5cbiAqIEByZXR1cm5zIHt0eXBlb2YgaW1wb3J0KFwiLi4vcmVjb3JkL2luZGV4LmpzXCIpLmRlZmF1bHR9IC0gVGFyZ2V0IG1vZGVsIGNsYXNzLlxuICovXG5mdW5jdGlvbiByZXNvbHZlVGFyZ2V0TW9kZWxDbGFzcyhyb290TW9kZWxDbGFzcywgY2hhaW4pIHtcbiAgbGV0IG1vZGVsQ2xhc3MgPSByb290TW9kZWxDbGFzc1xuXG4gIGZvciAoY29uc3Qgc2VnbWVudCBvZiBjaGFpbikge1xuICAgIGNvbnN0IHJlbGF0aW9uc2hpcCA9IG1vZGVsQ2xhc3MuZ2V0UmVsYXRpb25zaGlwQnlOYW1lKHNlZ21lbnQpXG4gICAgY29uc3QgdGFyZ2V0ID0gcmVsYXRpb25zaGlwLmdldFRhcmdldE1vZGVsQ2xhc3MoKVxuXG4gICAgaWYgKCF0YXJnZXQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgcXVlcnlEYXRhOiBjb3VsZCBub3QgcmVzb2x2ZSB0YXJnZXQgbW9kZWwgZm9yICR7bW9kZWxDbGFzcy5uYW1lfSMke3NlZ21lbnR9YClcbiAgICB9XG5cbiAgICBtb2RlbENsYXNzID0gdGFyZ2V0XG4gIH1cblxuICByZXR1cm4gbW9kZWxDbGFzc1xufVxuXG4vKipcbiAqIFJ1biBldmVyeSBxdWVyeURhdGEgZW50cnkgYWdhaW5zdCB0aGUgbG9hZGVkIHJvb3QgcmVjb3JkcywgYXR0YWNoaW5nXG4gKiB0aGUgcmVzdWx0aW5nIHZhbHVlcyBhcyBxdWVyeURhdGEgZW50cmllcyBvbiBlYWNoIHJvb3QgcmVjb3JkLlxuICpcbiAqIE9uZSBncm91cGVkIHF1ZXJ5IHBlciBlbnRyeTogdGhlIHJ1bm5lciBidWlsZHMgYSBmcmVzaCBxdWVyeSBvdmVyIHRoZVxuICogcm9vdCBtb2RlbCwgam9pbnMgZG93biB0aGUgY2hhaW4sIGdyb3VwcyBieSB0aGUgcm9vdCB0YWJsZSdzIHByaW1hcnlcbiAqIGtleSwgYW5kIGludm9rZXMgdGhlIHJlZ2lzdGVyZWQgZm4gdG8gYWRkIGl0cyBvd24gU0VMRUNUIChhbmQgYW55XG4gKiBhZGRpdGlvbmFsIGpvaW5zL3doZXJlKS4gUmVzdWx0cyBhcmUgbWFwcGVkIGJhY2sgdG8gcm9vdCBtb2RlbHMgYnlcbiAqIHByaW1hcnkga2V5IGFuZCBhdHRhY2hlZCB2aWEgYF9zZXRRdWVyeURhdGEobmFtZSwgdmFsdWUpYCBmb3IgZXZlcnlcbiAqIHNlbGVjdGVkIGFsaWFzIChleGNlcHQgdGhlIHJlc2VydmVkIGBwYXJlbnRfaWRgKS4gUm93cyBtaXNzaW5nIGZyb21cbiAqIHRoZSByZXN1bHQga2VlcCBgbnVsbGAg4oCUIG1hdGNoZXMgdGhlIGZlYXR1cmUncyBkb2N1bWVudGVkIGRlZmF1bHQuXG4gKlxuICogTWlycm9ycyB0aGUgc2hhcGUgb2YgYHJ1bldpdGhDb3VudGA6IG9uZSBxdWVyeSBwZXIgZW50cnksIGEgc2VwYXJhdGVcbiAqIHN0b3JhZ2UgbWFwIG9uIHRoZSByZWNvcmQsIG5ldmVyIHRvdWNoZXMgYF9hdHRyaWJ1dGVzYC5cbiAqIEBwYXJhbSB7b2JqZWN0fSBhcmdzIC0gT3B0aW9ucy5cbiAqIEBwYXJhbSB7dHlwZW9mIGltcG9ydChcIi4uL3JlY29yZC9pbmRleC5qc1wiKS5kZWZhdWx0fSBhcmdzLnJvb3RNb2RlbENsYXNzIC0gUm9vdCBtb2RlbCBjbGFzcy5cbiAqIEBwYXJhbSB7aW1wb3J0KFwiLi4vcmVjb3JkL2luZGV4LmpzXCIpLmRlZmF1bHRbXX0gYXJncy5yb290TW9kZWxzIC0gTG9hZGVkIHJvb3QgcmVjb3Jkcy5cbiAqIEBwYXJhbSB7UXVlcnlEYXRhRW50cnlbXX0gYXJncy5lbnRyaWVzIC0gTm9ybWFsaXplZCBxdWVyeURhdGEgZW50cmllcy5cbiAqIEByZXR1cm5zIHtQcm9taXNlPHZvaWQ+fVxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcnVuUXVlcnlEYXRhKHtyb290TW9kZWxDbGFzcywgcm9vdE1vZGVscywgZW50cmllc30pIHtcbiAgaWYgKHJvb3RNb2RlbHMubGVuZ3RoID09PSAwIHx8IGVudHJpZXMubGVuZ3RoID09PSAwKSByZXR1cm5cblxuICBjb25zdCBwcmltYXJ5S2V5ID0gcm9vdE1vZGVsQ2xhc3MucHJpbWFyeUtleSgpXG4gIGNvbnN0IHJvb3RJZHMgPSByb290TW9kZWxzLm1hcCgobW9kZWwpID0+IC8qKlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiBOYXJyb3dzIHRoZSBydW50aW1lIHZhbHVlIHRvIHRoZSBkb2N1bWVudGVkIHR5cGUuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQHR5cGUge3N0cmluZyB8IG51bWJlcn0gKi8gKG1vZGVsLnJlYWRDb2x1bW4ocHJpbWFyeUtleSkpKVxuXG4gIGZvciAoY29uc3QgZW50cnkgb2YgZW50cmllcykge1xuICAgIGF3YWl0IHJ1bkVudHJ5KHtlbnRyeSwgcHJpbWFyeUtleSwgcm9vdElkcywgcm9vdE1vZGVsQ2xhc3MsIHJvb3RNb2RlbHN9KVxuICB9XG59XG5cbi8qKlxuICogUnVucyBydW4gZW50cnkuXG4gKiBAcGFyYW0ge29iamVjdH0gYXJncyAtIE9wdGlvbnMuXG4gKiBAcGFyYW0ge1F1ZXJ5RGF0YUVudHJ5fSBhcmdzLmVudHJ5IC0gRW50cnkgYmVpbmcgZXZhbHVhdGVkLlxuICogQHBhcmFtIHtzdHJpbmd9IGFyZ3MucHJpbWFyeUtleSAtIFJvb3QgbW9kZWwgcHJpbWFyeSBrZXkgY29sdW1uLlxuICogQHBhcmFtIHtBcnJheTxzdHJpbmcgfCBudW1iZXI+fSBhcmdzLnJvb3RJZHMgLSBSb290IHByaW1hcnkta2V5IHZhbHVlcy5cbiAqIEBwYXJhbSB7dHlwZW9mIGltcG9ydChcIi4uL3JlY29yZC9pbmRleC5qc1wiKS5kZWZhdWx0fSBhcmdzLnJvb3RNb2RlbENsYXNzIC0gUm9vdCBtb2RlbCBjbGFzcy5cbiAqIEBwYXJhbSB7aW1wb3J0KFwiLi4vcmVjb3JkL2luZGV4LmpzXCIpLmRlZmF1bHRbXX0gYXJncy5yb290TW9kZWxzIC0gTG9hZGVkIHJvb3QgcmVjb3Jkcy5cbiAqIEByZXR1cm5zIHtQcm9taXNlPHZvaWQ+fVxuICovXG5hc3luYyBmdW5jdGlvbiBydW5FbnRyeSh7ZW50cnksIHByaW1hcnlLZXksIHJvb3RJZHMsIHJvb3RNb2RlbENsYXNzLCByb290TW9kZWxzfSkge1xuICBjb25zdCB0YXJnZXRNb2RlbENsYXNzID0gcmVzb2x2ZVRhcmdldE1vZGVsQ2xhc3Mocm9vdE1vZGVsQ2xhc3MsIGVudHJ5LmNoYWluKVxuICBjb25zdCBmbiA9IHRhcmdldE1vZGVsQ2xhc3MuZ2V0UXVlcnlEYXRhQnlOYW1lKGVudHJ5LmZuTmFtZSlcblxuICBpZiAoIWZuKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBxdWVyeURhdGE6ICR7dGFyZ2V0TW9kZWxDbGFzcy5uYW1lfSBoYXMgbm8gZW50cnkgcmVnaXN0ZXJlZCBhcyAke0pTT04uc3RyaW5naWZ5KGVudHJ5LmZuTmFtZSl9LiBgICtcbiAgICAgIGBEZWNsYXJlIGl0IHdpdGggJHt0YXJnZXRNb2RlbENsYXNzLm5hbWV9LnF1ZXJ5RGF0YSgke0pTT04uc3RyaW5naWZ5KGVudHJ5LmZuTmFtZSl9LCAoe3F1ZXJ5LCB0YWJsZU5hbWV9KSA9PiBxdWVyeS5zZWxlY3QoLi4uKSlgKVxuICB9XG5cbiAgY29uc3QgcXVlcnkgPSByb290TW9kZWxDbGFzcy5fbmV3UXVlcnkoKVxuXG4gIC8vIEVtcHR5IG91dCBhbnkgZGVmYXVsdHMgdGhlIHF1ZXJ5IGZhY3RvcnkgYWRkZWQg4oCUIHF1ZXJ5RGF0YSBydW5zXG4gIC8vIGEgYmFyZSBhZ2dyZWdhdGUsIG5vdCBhIGZ1bGwgbW9kZWwgbG9hZC5cbiAgcXVlcnkuX3NlbGVjdHMgPSBbXVxuICBxdWVyeS5fcHJlbG9hZCA9IHt9XG5cbiAgLy8gRm9yY2UgdGhlIHJvb3QgV0hFUkUgdG8gcXVhbGlmeSBieSB0YWJsZSBuYW1lIHNvIGl0IHN1cnZpdmVzIHRoZVxuICAvLyBqb2lucyB0aGUgZm4gbWF5IGFkZCBsYXRlciAob3RoZXJ3aXNlIGEgY2hpbGQgdGFibGUgc2hhcmluZyB0aGVcbiAgLy8gcm9vdCBQSyBjb2x1bW4gbmFtZSwgZS5nLiBgaWRgLCBtYWtlcyB0aGUgY2xhdXNlIGFtYmlndW91cykuXG4gIHF1ZXJ5Ll9mb3JjZVF1YWxpZnlCYXNlVGFibGUgPSB0cnVlXG5cbiAgY29uc3QgZHJpdmVyID0gcXVlcnkuZHJpdmVyXG4gIGNvbnN0IHJvb3RUYWJsZSA9IHJvb3RNb2RlbENsYXNzLnRhYmxlTmFtZSgpXG4gIGNvbnN0IHJvb3RQa1NxbCA9IGAke2RyaXZlci5xdW90ZVRhYmxlKHJvb3RUYWJsZSl9LiR7ZHJpdmVyLnF1b3RlQ29sdW1uKHByaW1hcnlLZXkpfWBcblxuICAvKipcbiAgICogUm9vdCB3aGVyZS5cbiAgICBAdHlwZSB7UmVjb3JkPHN0cmluZywgPz59ICovXG4gIGNvbnN0IHJvb3RXaGVyZSA9IHt9XG4gIHJvb3RXaGVyZVtwcmltYXJ5S2V5XSA9IHJvb3RJZHNcbiAgcXVlcnkud2hlcmUocm9vdFdoZXJlKVxuXG4gIGNvbnN0IGpvaW5EZXNjcmlwdG9yID0gYnVpbGROZXN0ZWRKb2luRGVzY3JpcHRvcihlbnRyeS5jaGFpbilcblxuICBpZiAoam9pbkRlc2NyaXB0b3IgIT09IHRydWUpIHtcbiAgICBxdWVyeS5qb2lucyhqb2luRGVzY3JpcHRvcilcbiAgfVxuXG4gIHF1ZXJ5Lmdyb3VwKHJvb3RQa1NxbClcbiAgcXVlcnkuc2VsZWN0KGAke3Jvb3RQa1NxbH0gQVMgcGFyZW50X2lkYClcblxuICBjb25zdCB0YXJnZXRUYWJsZVJlZiA9IGVudHJ5LmNoYWluLmxlbmd0aCA9PT0gMFxuICAgID8gcm9vdFRhYmxlXG4gICAgOiBxdWVyeS5nZXRUYWJsZVJlZmVyZW5jZUZvckpvaW4oLi4uZW50cnkuY2hhaW4pXG5cbiAgLy8gTkI6IHdlIGludGVudGlvbmFsbHkgbGVhdmUgYF9qb2luQmFzZVBhdGhgIGF0IFtdIHNvIHRoZSBvdXRlciBjaGFpblxuICAvLyBqb2lucyBjb250aW51ZSB0byByZXNvbHZlIGZyb20gdGhlIHJvb3QgbW9kZWwgYXQgcmVuZGVyIHRpbWUuIFRoZVxuICAvLyBmbiBnZXRzIGB0YWJsZU5hbWVgIGZvciBzZWxmLXJlZmVyZW5jZTsgYWRkaXRpb25hbCBqb2lucyBmcm9tXG4gIC8vIG5lc3RlZCBsZXZlbHMgc2hvdWxkIHVzZSBmdWxsIHBhdGhzIGZyb20gdGhlIHJvb3QuXG4gIGZuKHtcbiAgICBhdHRyaWJ1dGVOYW1lOiBlbnRyeS5mbk5hbWUsXG4gICAgZHJpdmVyLFxuICAgIG1vZGVsQ2xhc3M6IHRhcmdldE1vZGVsQ2xhc3MsXG4gICAgcGFyZW50SWRzOiByb290SWRzLFxuICAgIHF1ZXJ5LFxuICAgIHRhYmxlTmFtZTogdGFyZ2V0VGFibGVSZWZcbiAgfSlcblxuICBjb25zdCByb3dzID0gLyoqXG4gICAgICAgICAgICAgICAgKiBOYXJyb3dzIHRoZSBydW50aW1lIHZhbHVlIHRvIHRoZSBkb2N1bWVudGVkIHR5cGUuXG4gICAgICAgICAgICAgICAgIEB0eXBlIHtBcnJheTxSZWNvcmQ8c3RyaW5nLCA/Pj59ICovIChhd2FpdCBxdWVyeS5fZXhlY3V0ZVF1ZXJ5KCkpXG4gIGNvbnN0IGJ5UGFyZW50ID0gbmV3IE1hcCgpXG5cbiAgZm9yIChjb25zdCByb3cgb2Ygcm93cykge1xuICAgIGNvbnN0IHBhcmVudElkID0gcm93LnBhcmVudF9pZFxuXG4gICAgaWYgKHBhcmVudElkID09IG51bGwpIGNvbnRpbnVlXG5cbiAgICBieVBhcmVudC5zZXQocGFyZW50SWQsIHJvdylcbiAgfVxuXG4gIGZvciAoY29uc3QgbW9kZWwgb2Ygcm9vdE1vZGVscykge1xuICAgIGNvbnN0IG1vZGVsSWQgPSAvKipcbiAgICAgICAgICAgICAgICAgICAgICogTmFycm93cyB0aGUgcnVudGltZSB2YWx1ZSB0byB0aGUgZG9jdW1lbnRlZCB0eXBlLlxuICAgICAgICAgICAgICAgICAgICAgIEB0eXBlIHtzdHJpbmcgfCBudW1iZXJ9ICovIChtb2RlbC5yZWFkQ29sdW1uKHByaW1hcnlLZXkpKVxuICAgIC8vIERyaXZlci10eXBlIHRvbGVyYW5jZTogTXlTUUwgY2FuIHJldHVybiBQS3MgYXMgc3RyaW5ncyBldmVuIHdoZW5cbiAgICAvLyB0aGUgY29sdW1uIGlzIG51bWVyaWMuIEZhbGwgYmFjayB0byBhIHN0cmluZyBsb29rdXAgc28gcmVzdWx0c1xuICAgIC8vIHN0aWxsIGxhbmQgb24gdGhlIHJpZ2h0IG1vZGVsLlxuICAgIGNvbnN0IHJvdyA9IGJ5UGFyZW50Lmhhcyhtb2RlbElkKVxuICAgICAgPyBieVBhcmVudC5nZXQobW9kZWxJZClcbiAgICAgIDogYnlQYXJlbnQuZ2V0KFN0cmluZyhtb2RlbElkKSlcblxuICAgIGlmICghcm93KSBjb250aW51ZVxuXG4gICAgZm9yIChjb25zdCBbY29sdW1uTmFtZSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKHJvdykpIHtcbiAgICAgIGlmIChjb2x1bW5OYW1lID09PSBcInBhcmVudF9pZFwiKSBjb250aW51ZVxuXG4gICAgICBtb2RlbC5fc2V0UXVlcnlEYXRhKGNvbHVtbk5hbWUsIHZhbHVlKVxuICAgIH1cbiAgfVxufVxuIl19
@@ -1,14 +1,17 @@
1
1
  export default class VelociousDatabaseQuerySelectBase {
2
2
  /**
3
+ * Runs get options.
3
4
  * @returns {import("../query-parser/options.js").default} - The options options.
4
5
  */
5
6
  getOptions(): import("../query-parser/options.js").default;
6
7
  /**
8
+ * Runs set query.
7
9
  * @param {import("./index.js").default} query - Query instance.
8
10
  */
9
11
  setQuery(query: import("./index.js").default): void;
10
12
  query: import("./index.js").default | undefined;
11
13
  /**
14
+ * Runs to sql.
12
15
  * @abstract
13
16
  * @returns {string} - SQL string.
14
17
  */
@@ -1 +1 @@
1
- {"version":3,"file":"select-base.d.ts","sourceRoot":"","sources":["../../../../src/database/query/select-base.js"],"names":[],"mappings":"AAEA;IACE;;OAEG;IACH,cAFa,OAAO,4BAA4B,EAAE,OAAO,CAMxD;IAED;;OAEG;IACH,gBAFW,OAAO,YAAY,EAAE,OAAO,QAItC;IADC,gDAAkB;IAGpB;;;OAGG;IACH,SAFa,MAAM,CAIlB;CACF"}
1
+ {"version":3,"file":"select-base.d.ts","sourceRoot":"","sources":["../../../../src/database/query/select-base.js"],"names":[],"mappings":"AAEA;IACE;;;OAGG;IACH,cAFa,OAAO,4BAA4B,EAAE,OAAO,CAMxD;IAED;;;OAGG;IACH,gBAFW,OAAO,YAAY,EAAE,OAAO,QAItC;IADC,gDAAkB;IAGpB;;;;OAIG;IACH,SAFa,MAAM,CAIlB;CACF"}
@@ -1,6 +1,7 @@
1
1
  // @ts-check
2
2
  export default class VelociousDatabaseQuerySelectBase {
3
3
  /**
4
+ * Runs get options.
4
5
  * @returns {import("../query-parser/options.js").default} - The options options.
5
6
  */
6
7
  getOptions() {
@@ -9,12 +10,14 @@ export default class VelociousDatabaseQuerySelectBase {
9
10
  return this.query.driver.options();
10
11
  }
11
12
  /**
13
+ * Runs set query.
12
14
  * @param {import("./index.js").default} query - Query instance.
13
15
  */
14
16
  setQuery(query) {
15
17
  this.query = query;
16
18
  }
17
19
  /**
20
+ * Runs to sql.
18
21
  * @abstract
19
22
  * @returns {string} - SQL string.
20
23
  */
@@ -22,4 +25,4 @@ export default class VelociousDatabaseQuerySelectBase {
22
25
  throw new Error("'toSql' wasn't implemented");
23
26
  }
24
27
  }
25
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0LWJhc2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvZGF0YWJhc2UvcXVlcnkvc2VsZWN0LWJhc2UuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsWUFBWTtBQUVaLE1BQU0sQ0FBQyxPQUFPLE9BQU8sZ0NBQWdDO0lBQ25EOztPQUVHO0lBQ0gsVUFBVTtRQUNSLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSztZQUFFLE1BQU0sSUFBSSxLQUFLLENBQUMseUJBQXlCLENBQUMsQ0FBQTtRQUUzRCxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLE9BQU8sRUFBRSxDQUFBO0lBQ3BDLENBQUM7SUFFRDs7T0FFRztJQUNILFFBQVEsQ0FBQyxLQUFLO1FBQ1osSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUE7SUFDcEIsQ0FBQztJQUVEOzs7T0FHRztJQUNILEtBQUs7UUFDSCxNQUFNLElBQUksS0FBSyxDQUFDLDRCQUE0QixDQUFDLENBQUE7SUFDL0MsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQHRzLWNoZWNrXG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFZlbG9jaW91c0RhdGFiYXNlUXVlcnlTZWxlY3RCYXNlIHtcbiAgLyoqXG4gICAqIEByZXR1cm5zIHtpbXBvcnQoXCIuLi9xdWVyeS1wYXJzZXIvb3B0aW9ucy5qc1wiKS5kZWZhdWx0fSAtIFRoZSBvcHRpb25zIG9wdGlvbnMuXG4gICAqL1xuICBnZXRPcHRpb25zKCkge1xuICAgIGlmICghdGhpcy5xdWVyeSkgdGhyb3cgbmV3IEVycm9yKFwiJ3F1ZXJ5JyBoYXNuJ3QgYmVlbiBzZXRcIilcblxuICAgIHJldHVybiB0aGlzLnF1ZXJ5LmRyaXZlci5vcHRpb25zKClcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge2ltcG9ydChcIi4vaW5kZXguanNcIikuZGVmYXVsdH0gcXVlcnkgLSBRdWVyeSBpbnN0YW5jZS5cbiAgICovXG4gIHNldFF1ZXJ5KHF1ZXJ5KSB7XG4gICAgdGhpcy5xdWVyeSA9IHF1ZXJ5XG4gIH1cblxuICAvKipcbiAgICogQGFic3RyYWN0XG4gICAqIEByZXR1cm5zIHtzdHJpbmd9IC0gU1FMIHN0cmluZy5cbiAgICovXG4gIHRvU3FsKCkge1xuICAgIHRocm93IG5ldyBFcnJvcihcIid0b1NxbCcgd2Fzbid0IGltcGxlbWVudGVkXCIpXG4gIH1cbn1cbiJdfQ==
28
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0LWJhc2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvZGF0YWJhc2UvcXVlcnkvc2VsZWN0LWJhc2UuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsWUFBWTtBQUVaLE1BQU0sQ0FBQyxPQUFPLE9BQU8sZ0NBQWdDO0lBQ25EOzs7T0FHRztJQUNILFVBQVU7UUFDUixJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUs7WUFBRSxNQUFNLElBQUksS0FBSyxDQUFDLHlCQUF5QixDQUFDLENBQUE7UUFFM0QsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUUsQ0FBQTtJQUNwQyxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsUUFBUSxDQUFDLEtBQUs7UUFDWixJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQTtJQUNwQixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILEtBQUs7UUFDSCxNQUFNLElBQUksS0FBSyxDQUFDLDRCQUE0QixDQUFDLENBQUE7SUFDL0MsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQHRzLWNoZWNrXG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFZlbG9jaW91c0RhdGFiYXNlUXVlcnlTZWxlY3RCYXNlIHtcbiAgLyoqXG4gICAqIFJ1bnMgZ2V0IG9wdGlvbnMuXG4gICAqIEByZXR1cm5zIHtpbXBvcnQoXCIuLi9xdWVyeS1wYXJzZXIvb3B0aW9ucy5qc1wiKS5kZWZhdWx0fSAtIFRoZSBvcHRpb25zIG9wdGlvbnMuXG4gICAqL1xuICBnZXRPcHRpb25zKCkge1xuICAgIGlmICghdGhpcy5xdWVyeSkgdGhyb3cgbmV3IEVycm9yKFwiJ3F1ZXJ5JyBoYXNuJ3QgYmVlbiBzZXRcIilcblxuICAgIHJldHVybiB0aGlzLnF1ZXJ5LmRyaXZlci5vcHRpb25zKClcbiAgfVxuXG4gIC8qKlxuICAgKiBSdW5zIHNldCBxdWVyeS5cbiAgICogQHBhcmFtIHtpbXBvcnQoXCIuL2luZGV4LmpzXCIpLmRlZmF1bHR9IHF1ZXJ5IC0gUXVlcnkgaW5zdGFuY2UuXG4gICAqL1xuICBzZXRRdWVyeShxdWVyeSkge1xuICAgIHRoaXMucXVlcnkgPSBxdWVyeVxuICB9XG5cbiAgLyoqXG4gICAqIFJ1bnMgdG8gc3FsLlxuICAgKiBAYWJzdHJhY3RcbiAgICogQHJldHVybnMge3N0cmluZ30gLSBTUUwgc3RyaW5nLlxuICAgKi9cbiAgdG9TcWwoKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFwiJ3RvU3FsJyB3YXNuJ3QgaW1wbGVtZW50ZWRcIilcbiAgfVxufVxuIl19
@@ -1,5 +1,6 @@
1
1
  export default class VelociousDatabaseQuerySelectPlain extends SelectBase {
2
2
  /**
3
+ * Runs constructor.
3
4
  * @param {string} plain - Plain.
4
5
  */
5
6
  constructor(plain: string);
@@ -1 +1 @@
1
- {"version":3,"file":"select-plain.d.ts","sourceRoot":"","sources":["../../../../src/database/query/select-plain.js"],"names":[],"mappings":"AAIA;IACE;;OAEG;IACH,mBAFW,MAAM,EAKhB;IADC,cAAkB;CAMrB;uBAdsB,kBAAkB"}
1
+ {"version":3,"file":"select-plain.d.ts","sourceRoot":"","sources":["../../../../src/database/query/select-plain.js"],"names":[],"mappings":"AAIA;IACE;;;OAGG;IACH,mBAFW,MAAM,EAKhB;IADC,cAAkB;CAMrB;uBAfsB,kBAAkB"}