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
@@ -3,7 +3,8 @@ import BaseForeignKey from "../base-foreign-key.js";
3
3
  import { digg } from "diggerize";
4
4
  export default class VelociousDatabaseDriversSqliteForeignKey extends BaseForeignKey {
5
5
  /**
6
- * @param {Record<string, any>} data - Data payload.
6
+ * Runs constructor.
7
+ * @param {Record<string, ?>} data - Data payload.
7
8
  * @param {object} args - Options object.
8
9
  * @param {string} args.tableName - Table name.
9
10
  */
@@ -17,4 +18,4 @@ export default class VelociousDatabaseDriversSqliteForeignKey extends BaseForeig
17
18
  getReferencedColumnName() { return digg(this, "data", "to"); }
18
19
  getReferencedTableName() { return digg(this, "data", "table"); }
19
20
  }
20
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9yZWlnbi1rZXkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvZGF0YWJhc2UvZHJpdmVycy9zcWxpdGUvZm9yZWlnbi1rZXkuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsWUFBWTtBQUVaLE9BQU8sY0FBYyxNQUFNLHdCQUF3QixDQUFBO0FBQ25ELE9BQU8sRUFBQyxJQUFJLEVBQUMsTUFBTSxXQUFXLENBQUE7QUFFOUIsTUFBTSxDQUFDLE9BQU8sT0FBTyx3Q0FBeUMsU0FBUSxjQUFjO0lBQ2xGOzs7O09BSUc7SUFDSCxZQUFZLElBQUksRUFBRSxFQUFDLFNBQVMsRUFBQztRQUMzQixLQUFLLENBQUMsSUFBSSxDQUFDLENBQUE7UUFDWCxJQUFJLENBQUMsU0FBUyxHQUFHLFNBQVMsQ0FBQTtJQUM1QixDQUFDO0lBRUQsYUFBYSxLQUFLLE9BQU8sSUFBSSxDQUFDLElBQUksRUFBRSxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUEsQ0FBQyxDQUFDO0lBQ3JELE9BQU8sS0FBSyxPQUFPLEdBQUcsSUFBSSxDQUFDLFlBQVksRUFBRSxJQUFJLElBQUksQ0FBQyxhQUFhLEVBQUUsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRSxDQUFBLENBQUMsQ0FBQztJQUNyRixZQUFZLEtBQUssT0FBTyxJQUFJLENBQUMsSUFBSSxFQUFFLFdBQVcsQ0FBQyxDQUFBLENBQUMsQ0FBQztJQUNqRCx1QkFBdUIsS0FBSyxPQUFPLElBQUksQ0FBQyxJQUFJLEVBQUUsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFBLENBQUMsQ0FBQztJQUM3RCxzQkFBc0IsS0FBSyxPQUFPLElBQUksQ0FBQyxJQUFJLEVBQUUsTUFBTSxFQUFFLE9BQU8sQ0FBQyxDQUFBLENBQUMsQ0FBQztDQUNoRSIsInNvdXJjZXNDb250ZW50IjpbIi8vIEB0cy1jaGVja1xuXG5pbXBvcnQgQmFzZUZvcmVpZ25LZXkgZnJvbSBcIi4uL2Jhc2UtZm9yZWlnbi1rZXkuanNcIlxuaW1wb3J0IHtkaWdnfSBmcm9tIFwiZGlnZ2VyaXplXCJcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgVmVsb2Npb3VzRGF0YWJhc2VEcml2ZXJzU3FsaXRlRm9yZWlnbktleSBleHRlbmRzIEJhc2VGb3JlaWduS2V5IHtcbiAgLyoqXG4gICAqIEBwYXJhbSB7UmVjb3JkPHN0cmluZywgYW55Pn0gZGF0YSAtIERhdGEgcGF5bG9hZC5cbiAgICogQHBhcmFtIHtvYmplY3R9IGFyZ3MgLSBPcHRpb25zIG9iamVjdC5cbiAgICogQHBhcmFtIHtzdHJpbmd9IGFyZ3MudGFibGVOYW1lIC0gVGFibGUgbmFtZS5cbiAgICovXG4gIGNvbnN0cnVjdG9yKGRhdGEsIHt0YWJsZU5hbWV9KSB7XG4gICAgc3VwZXIoZGF0YSlcbiAgICB0aGlzLnRhYmxlTmFtZSA9IHRhYmxlTmFtZVxuICB9XG5cbiAgZ2V0Q29sdW1uTmFtZSgpIHsgcmV0dXJuIGRpZ2codGhpcywgXCJkYXRhXCIsIFwiZnJvbVwiKSB9XG4gIGdldE5hbWUoKSB7IHJldHVybiBgJHt0aGlzLmdldFRhYmxlTmFtZSgpfV8ke3RoaXMuZ2V0Q29sdW1uTmFtZSgpfV8ke3RoaXMuZGF0YS5pZH1gIH1cbiAgZ2V0VGFibGVOYW1lKCkgeyByZXR1cm4gZGlnZyh0aGlzLCBcInRhYmxlTmFtZVwiKSB9XG4gIGdldFJlZmVyZW5jZWRDb2x1bW5OYW1lKCkgeyByZXR1cm4gZGlnZyh0aGlzLCBcImRhdGFcIiwgXCJ0b1wiKSB9XG4gIGdldFJlZmVyZW5jZWRUYWJsZU5hbWUoKSB7IHJldHVybiBkaWdnKHRoaXMsIFwiZGF0YVwiLCBcInRhYmxlXCIpIH1cbn1cblxuIl19
21
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9yZWlnbi1rZXkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvZGF0YWJhc2UvZHJpdmVycy9zcWxpdGUvZm9yZWlnbi1rZXkuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsWUFBWTtBQUVaLE9BQU8sY0FBYyxNQUFNLHdCQUF3QixDQUFBO0FBQ25ELE9BQU8sRUFBQyxJQUFJLEVBQUMsTUFBTSxXQUFXLENBQUE7QUFFOUIsTUFBTSxDQUFDLE9BQU8sT0FBTyx3Q0FBeUMsU0FBUSxjQUFjO0lBQ2xGOzs7OztPQUtHO0lBQ0gsWUFBWSxJQUFJLEVBQUUsRUFBQyxTQUFTLEVBQUM7UUFDM0IsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFBO1FBQ1gsSUFBSSxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUE7SUFDNUIsQ0FBQztJQUVELGFBQWEsS0FBSyxPQUFPLElBQUksQ0FBQyxJQUFJLEVBQUUsTUFBTSxFQUFFLE1BQU0sQ0FBQyxDQUFBLENBQUMsQ0FBQztJQUNyRCxPQUFPLEtBQUssT0FBTyxHQUFHLElBQUksQ0FBQyxZQUFZLEVBQUUsSUFBSSxJQUFJLENBQUMsYUFBYSxFQUFFLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLEVBQUUsQ0FBQSxDQUFDLENBQUM7SUFDckYsWUFBWSxLQUFLLE9BQU8sSUFBSSxDQUFDLElBQUksRUFBRSxXQUFXLENBQUMsQ0FBQSxDQUFDLENBQUM7SUFDakQsdUJBQXVCLEtBQUssT0FBTyxJQUFJLENBQUMsSUFBSSxFQUFFLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQSxDQUFDLENBQUM7SUFDN0Qsc0JBQXNCLEtBQUssT0FBTyxJQUFJLENBQUMsSUFBSSxFQUFFLE1BQU0sRUFBRSxPQUFPLENBQUMsQ0FBQSxDQUFDLENBQUM7Q0FDaEUiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBAdHMtY2hlY2tcblxuaW1wb3J0IEJhc2VGb3JlaWduS2V5IGZyb20gXCIuLi9iYXNlLWZvcmVpZ24ta2V5LmpzXCJcbmltcG9ydCB7ZGlnZ30gZnJvbSBcImRpZ2dlcml6ZVwiXG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFZlbG9jaW91c0RhdGFiYXNlRHJpdmVyc1NxbGl0ZUZvcmVpZ25LZXkgZXh0ZW5kcyBCYXNlRm9yZWlnbktleSB7XG4gIC8qKlxuICAgKiBSdW5zIGNvbnN0cnVjdG9yLlxuICAgKiBAcGFyYW0ge1JlY29yZDxzdHJpbmcsID8+fSBkYXRhIC0gRGF0YSBwYXlsb2FkLlxuICAgKiBAcGFyYW0ge29iamVjdH0gYXJncyAtIE9wdGlvbnMgb2JqZWN0LlxuICAgKiBAcGFyYW0ge3N0cmluZ30gYXJncy50YWJsZU5hbWUgLSBUYWJsZSBuYW1lLlxuICAgKi9cbiAgY29uc3RydWN0b3IoZGF0YSwge3RhYmxlTmFtZX0pIHtcbiAgICBzdXBlcihkYXRhKVxuICAgIHRoaXMudGFibGVOYW1lID0gdGFibGVOYW1lXG4gIH1cblxuICBnZXRDb2x1bW5OYW1lKCkgeyByZXR1cm4gZGlnZyh0aGlzLCBcImRhdGFcIiwgXCJmcm9tXCIpIH1cbiAgZ2V0TmFtZSgpIHsgcmV0dXJuIGAke3RoaXMuZ2V0VGFibGVOYW1lKCl9XyR7dGhpcy5nZXRDb2x1bW5OYW1lKCl9XyR7dGhpcy5kYXRhLmlkfWAgfVxuICBnZXRUYWJsZU5hbWUoKSB7IHJldHVybiBkaWdnKHRoaXMsIFwidGFibGVOYW1lXCIpIH1cbiAgZ2V0UmVmZXJlbmNlZENvbHVtbk5hbWUoKSB7IHJldHVybiBkaWdnKHRoaXMsIFwiZGF0YVwiLCBcInRvXCIpIH1cbiAgZ2V0UmVmZXJlbmNlZFRhYmxlTmFtZSgpIHsgcmV0dXJuIGRpZ2codGhpcywgXCJkYXRhXCIsIFwidGFibGVcIikgfVxufVxuXG4iXX0=
@@ -1,24 +1,35 @@
1
1
  export default class VelociousDatabaseDriversSqliteNode extends Base {
2
- /** @type {import("sqlite3").Database | undefined} */
2
+ /**
3
+ * Connection.
4
+ @type {import("sqlite3").Database | undefined} */
3
5
  connection: import("sqlite3").Database | undefined;
4
- /** @type {string | undefined} */
6
+ /**
7
+ * Advisory lock directory.
8
+ @type {string | undefined} */
5
9
  _advisoryLockDirectory: string | undefined;
6
10
  localStorageName(): string;
7
- /** @returns {string} */
11
+ /**
12
+ * Runs resolve advisory lock directory.
13
+ @returns {string} */
8
14
  _resolveAdvisoryLockDirectory(): string;
9
15
  /**
16
+ * Runs advisory lock path.
10
17
  * @param {string} name - Lock name.
11
18
  * @returns {string}
12
19
  */
13
20
  _advisoryLockPath(name: string): string;
14
- /** @returns {Promise<void>} */
21
+ /**
22
+ * Runs ensure advisory lock directory.
23
+ @returns {Promise<void>} */
15
24
  _ensureAdvisoryLockDirectory(): Promise<void>;
16
25
  /**
26
+ * Runs write advisory lock metadata.
17
27
  * @param {string} lockDirPath - Absolute path of the lock directory.
18
28
  * @returns {Promise<void>}
19
29
  */
20
30
  _writeAdvisoryLockMetadata(lockDirPath: string): Promise<void>;
21
31
  /**
32
+ * Runs acquire advisory lock file.
22
33
  * @param {string} name - Lock name.
23
34
  * @param {{timeoutMs?: number | null}} args - Timeout args.
24
35
  * @returns {Promise<boolean>}
@@ -27,16 +38,19 @@ export default class VelociousDatabaseDriversSqliteNode extends Base {
27
38
  timeoutMs?: number | null;
28
39
  }): Promise<boolean>;
29
40
  /**
41
+ * Runs try acquire advisory lock file.
30
42
  * @param {string} name - Lock name.
31
43
  * @returns {Promise<boolean>}
32
44
  */
33
45
  _tryAcquireAdvisoryLockFile(name: string): Promise<boolean>;
34
46
  /**
47
+ * Runs release advisory lock file.
35
48
  * @param {string} name - Lock name.
36
49
  * @returns {Promise<void>}
37
50
  */
38
51
  _releaseAdvisoryLockFile(name: string): Promise<void>;
39
52
  /**
53
+ * Runs is advisory lock file held.
40
54
  * @param {string} name - Lock name.
41
55
  * @returns {Promise<boolean>}
42
56
  */
@@ -47,7 +61,6 @@ export default class VelociousDatabaseDriversSqliteNode extends Base {
47
61
  * different `hostname`) is treated as live because we cannot reliably
48
62
  * probe a PID on another machine; operators in that situation should
49
63
  * remove stale lock directories by hand if they linger.
50
- *
51
64
  * @param {string} lockPath - Absolute path of the lock directory.
52
65
  * @returns {Promise<boolean>}
53
66
  */
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/database/drivers/sqlite/index.js"],"names":[],"mappings":"AAcA;IACE,qDAAqD;IACrD,YADW,OAAO,SAAS,EAAE,QAAQ,GAAG,SAAS,CAC3B;IAEtB,iCAAiC;IACjC,wBADW,MAAM,GAAG,SAAS,CACK;IAkClC,2BAMC;IAgHD,wBAAwB;IACxB,iCADc,MAAM,CAWnB;IAED;;;OAGG;IACH,wBAHW,MAAM,GACJ,MAAM,CAOlB;IAED,+BAA+B;IAC/B,gCADc,OAAO,CAAC,IAAI,CAAC,CAG1B;IAED;;;OAGG;IACH,wCAHW,MAAM,GACJ,OAAO,CAAC,IAAI,CAAC,CAWzB;IAED;;;;OAIG;IACH,+BAJW,MAAM,iBACN;QAAC,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;KAAC,GACzB,OAAO,CAAC,OAAO,CAAC,CAqC5B;IAED;;;OAGG;IACH,kCAHW,MAAM,GACJ,OAAO,CAAC,OAAO,CAAC,CAgC5B;IAED;;;OAGG;IACH,+BAHW,MAAM,GACJ,OAAO,CAAC,IAAI,CAAC,CAYzB;IAED;;;OAGG;IACH,8BAHW,MAAM,GACJ,OAAO,CAAC,OAAO,CAAC,CAY5B;IAED;;;;;;;;;OASG;IACH,+BAHW,MAAM,GACJ,OAAO,CAAC,OAAO,CAAC,CAmC5B;CACF;iBAtWgB,WAAW"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/database/drivers/sqlite/index.js"],"names":[],"mappings":"AAcA;IACE;;uDAEmD;IACnD,YADS,OAAO,SAAS,EAAE,QAAQ,GAAG,SAAS,CACzB;IAEtB;;mCAE+B;IAC/B,wBADS,MAAM,GAAG,SAAS,CACO;IAkClC,2BAMC;IAiHD;;0BAEsB;IACtB,iCADY,MAAM,CAWjB;IAED;;;;OAIG;IACH,wBAHW,MAAM,GACJ,MAAM,CAOlB;IAED;;iCAE6B;IAC7B,gCADY,OAAO,CAAC,IAAI,CAAC,CAGxB;IAED;;;;OAIG;IACH,wCAHW,MAAM,GACJ,OAAO,CAAC,IAAI,CAAC,CAWzB;IAED;;;;;OAKG;IACH,+BAJW,MAAM,iBACN;QAAC,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;KAAC,GACzB,OAAO,CAAC,OAAO,CAAC,CAuC5B;IAED;;;;OAIG;IACH,kCAHW,MAAM,GACJ,OAAO,CAAC,OAAO,CAAC,CAoC5B;IAED;;;;OAIG;IACH,+BAHW,MAAM,GACJ,OAAO,CAAC,IAAI,CAAC,CAYzB;IAED;;;;OAIG;IACH,8BAHW,MAAM,GACJ,OAAO,CAAC,OAAO,CAAC,CAY5B;IAED;;;;;;;;OAQG;IACH,+BAHW,MAAM,GACJ,OAAO,CAAC,OAAO,CAAC,CAuC5B;CACF;iBA9XgB,WAAW"}
@@ -10,9 +10,13 @@ import { open } from "sqlite";
10
10
  import Base from "./base.js";
11
11
  import fileExists from "../../../utils/file-exists.js";
12
12
  export default class VelociousDatabaseDriversSqliteNode extends Base {
13
- /** @type {import("sqlite3").Database | undefined} */
13
+ /**
14
+ * Connection.
15
+ @type {import("sqlite3").Database | undefined} */
14
16
  connection = undefined;
15
- /** @type {string | undefined} */
17
+ /**
18
+ * Advisory lock directory.
19
+ @type {string | undefined} */
16
20
  _advisoryLockDirectory = undefined;
17
21
  async connect() {
18
22
  const args = this.getArgs();
@@ -27,7 +31,7 @@ export default class VelociousDatabaseDriversSqliteNode extends Base {
27
31
  this._advisoryLockDirectory = path.join(databaseDir, `${this.localStorageName()}.velocious-advisory-locks`);
28
32
  try {
29
33
  // @ts-expect-error
30
- this.connection = /** @type {import("sqlite3").Database} */ (await open({
34
+ this.connection = /** Narrows the runtime value to the documented type. @type {import("sqlite3").Database} */ (await open({
31
35
  filename: databasePath,
32
36
  driver: sqlite3.Database
33
37
  }));
@@ -53,8 +57,9 @@ export default class VelociousDatabaseDriversSqliteNode extends Base {
53
57
  this.connection = undefined;
54
58
  }
55
59
  /**
60
+ * Runs query actual.
56
61
  * @param {string} sql - SQL string.
57
- * @returns {Promise<Record<string, any>[]>} - Resolves with the query actual.
62
+ * @returns {Promise<Record<string, ?>[]>} - Resolves with the query actual.
58
63
  */
59
64
  async _queryActual(sql) {
60
65
  if (!this.connection)
@@ -73,7 +78,6 @@ export default class VelociousDatabaseDriversSqliteNode extends Base {
73
78
  * only checked once the in-process queue has granted the caller, so
74
79
  * typical single-process traffic pays at most two `fs.mkdir` calls
75
80
  * (create and remove) per critical section.
76
- *
77
81
  * @param {string} name - Lock name.
78
82
  * @param {{timeoutMs?: number | null}} [args] - Optional timeout in milliseconds; `null`, `undefined`, or negative blocks forever.
79
83
  * @returns {Promise<boolean>}
@@ -99,6 +103,7 @@ export default class VelociousDatabaseDriversSqliteNode extends Base {
99
103
  return true;
100
104
  }
101
105
  /**
106
+ * Runs try acquire advisory lock.
102
107
  * @param {string} name - Lock name.
103
108
  * @returns {Promise<boolean>}
104
109
  */
@@ -126,7 +131,6 @@ export default class VelociousDatabaseDriversSqliteNode extends Base {
126
131
  * (or that was already released by another driver) gets `false` back
127
132
  * and the filesystem state is left alone so we never delete somebody
128
133
  * else's lock directory.
129
- *
130
134
  * @param {string} name - Lock name.
131
135
  * @returns {Promise<boolean>}
132
136
  */
@@ -138,6 +142,7 @@ export default class VelociousDatabaseDriversSqliteNode extends Base {
138
142
  return inProcessReleased;
139
143
  }
140
144
  /**
145
+ * Runs is advisory lock held.
141
146
  * @param {string} name - Lock name.
142
147
  * @returns {Promise<boolean>}
143
148
  */
@@ -146,7 +151,9 @@ export default class VelociousDatabaseDriversSqliteNode extends Base {
146
151
  return true;
147
152
  return await this._isAdvisoryLockFileHeld(name);
148
153
  }
149
- /** @returns {string} */
154
+ /**
155
+ * Runs resolve advisory lock directory.
156
+ @returns {string} */
150
157
  _resolveAdvisoryLockDirectory() {
151
158
  if (!this._advisoryLockDirectory) {
152
159
  // Fall back to deriving the directory for callers that invoked
@@ -157,6 +164,7 @@ export default class VelociousDatabaseDriversSqliteNode extends Base {
157
164
  return this._advisoryLockDirectory;
158
165
  }
159
166
  /**
167
+ * Runs advisory lock path.
160
168
  * @param {string} name - Lock name.
161
169
  * @returns {string}
162
170
  */
@@ -165,11 +173,14 @@ export default class VelociousDatabaseDriversSqliteNode extends Base {
165
173
  const safeName = name.replace(/[^a-zA-Z0-9._-]/g, "_").slice(0, 64);
166
174
  return path.join(this._resolveAdvisoryLockDirectory(), `${safeName}-${hash}.lock`);
167
175
  }
168
- /** @returns {Promise<void>} */
176
+ /**
177
+ * Runs ensure advisory lock directory.
178
+ @returns {Promise<void>} */
169
179
  async _ensureAdvisoryLockDirectory() {
170
180
  await fs.mkdir(this._resolveAdvisoryLockDirectory(), { recursive: true });
171
181
  }
172
182
  /**
183
+ * Runs write advisory lock metadata.
173
184
  * @param {string} lockDirPath - Absolute path of the lock directory.
174
185
  * @returns {Promise<void>}
175
186
  */
@@ -183,6 +194,7 @@ export default class VelociousDatabaseDriversSqliteNode extends Base {
183
194
  await fs.writeFile(ownerPath, payload);
184
195
  }
185
196
  /**
197
+ * Runs acquire advisory lock file.
186
198
  * @param {string} name - Lock name.
187
199
  * @param {{timeoutMs?: number | null}} args - Timeout args.
188
200
  * @returns {Promise<boolean>}
@@ -202,7 +214,9 @@ export default class VelociousDatabaseDriversSqliteNode extends Base {
202
214
  return true;
203
215
  }
204
216
  catch (error) {
205
- if ( /** @type {NodeJS.ErrnoException} */(error)?.code !== "EEXIST")
217
+ if ( /**
218
+ * Narrows the runtime value to the documented type.
219
+ @type {NodeJS.ErrnoException} */(error)?.code !== "EEXIST")
206
220
  throw error;
207
221
  if (await this._isAdvisoryLockStale(lockPath)) {
208
222
  await fs.rm(lockPath, { recursive: true, force: true });
@@ -221,6 +235,7 @@ export default class VelociousDatabaseDriversSqliteNode extends Base {
221
235
  }
222
236
  }
223
237
  /**
238
+ * Runs try acquire advisory lock file.
224
239
  * @param {string} name - Lock name.
225
240
  * @returns {Promise<boolean>}
226
241
  */
@@ -233,7 +248,9 @@ export default class VelociousDatabaseDriversSqliteNode extends Base {
233
248
  return true;
234
249
  }
235
250
  catch (error) {
236
- if ( /** @type {NodeJS.ErrnoException} */(error)?.code !== "EEXIST")
251
+ if ( /**
252
+ * Narrows the runtime value to the documented type.
253
+ @type {NodeJS.ErrnoException} */(error)?.code !== "EEXIST")
237
254
  throw error;
238
255
  if (await this._isAdvisoryLockStale(lockPath)) {
239
256
  await fs.rm(lockPath, { recursive: true, force: true });
@@ -243,7 +260,9 @@ export default class VelociousDatabaseDriversSqliteNode extends Base {
243
260
  return true;
244
261
  }
245
262
  catch (retryError) {
246
- if ( /** @type {NodeJS.ErrnoException} */(retryError)?.code === "EEXIST")
263
+ if ( /**
264
+ * Narrows the runtime value to the documented type.
265
+ @type {NodeJS.ErrnoException} */(retryError)?.code === "EEXIST")
247
266
  return false;
248
267
  throw retryError;
249
268
  }
@@ -252,6 +271,7 @@ export default class VelociousDatabaseDriversSqliteNode extends Base {
252
271
  }
253
272
  }
254
273
  /**
274
+ * Runs release advisory lock file.
255
275
  * @param {string} name - Lock name.
256
276
  * @returns {Promise<void>}
257
277
  */
@@ -267,6 +287,7 @@ export default class VelociousDatabaseDriversSqliteNode extends Base {
267
287
  }
268
288
  }
269
289
  /**
290
+ * Runs is advisory lock file held.
270
291
  * @param {string} name - Lock name.
271
292
  * @returns {Promise<boolean>}
272
293
  */
@@ -286,12 +307,13 @@ export default class VelociousDatabaseDriversSqliteNode extends Base {
286
307
  * different `hostname`) is treated as live because we cannot reliably
287
308
  * probe a PID on another machine; operators in that situation should
288
309
  * remove stale lock directories by hand if they linger.
289
- *
290
310
  * @param {string} lockPath - Absolute path of the lock directory.
291
311
  * @returns {Promise<boolean>}
292
312
  */
293
313
  async _isAdvisoryLockStale(lockPath) {
294
- /** @type {string} */
314
+ /**
315
+ * Defines rawOwner.
316
+ @type {string} */
295
317
  let rawOwner;
296
318
  try {
297
319
  rawOwner = await fs.readFile(path.join(lockPath, "owner.json"), "utf8");
@@ -300,7 +322,9 @@ export default class VelociousDatabaseDriversSqliteNode extends Base {
300
322
  // Missing or unreadable metadata — treat as stale so we can reclaim.
301
323
  return true;
302
324
  }
303
- /** @type {{pid?: number, hostname?: string}} */
325
+ /**
326
+ * Defines owner.
327
+ @type {{pid?: number, hostname?: string}} */
304
328
  let owner;
305
329
  try {
306
330
  owner = JSON.parse(rawOwner);
@@ -320,8 +344,8 @@ export default class VelociousDatabaseDriversSqliteNode extends Base {
320
344
  return false;
321
345
  }
322
346
  catch (error) {
323
- return /** @type {NodeJS.ErrnoException} */ (error)?.code === "ESRCH";
347
+ return /** Narrows the runtime value to the documented type. @type {NodeJS.ErrnoException} */ (error)?.code === "ESRCH";
324
348
  }
325
349
  }
326
350
  }
327
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvZGF0YWJhc2UvZHJpdmVycy9zcWxpdGUvaW5kZXguanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsWUFBWTtBQUVaLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxhQUFhLENBQUE7QUFDdEMsT0FBTyxJQUFJLE1BQU0sd0JBQXdCLENBQUE7QUFDekMsT0FBTyxFQUFFLE1BQU0sYUFBYSxDQUFBO0FBQzVCLE9BQU8sRUFBRSxNQUFNLFNBQVMsQ0FBQTtBQUN4QixPQUFPLElBQUksTUFBTSxXQUFXLENBQUE7QUFDNUIsT0FBTyxLQUFLLE1BQU0sWUFBWSxDQUFBO0FBQzlCLE9BQU8sT0FBTyxNQUFNLFNBQVMsQ0FBQTtBQUM3QixPQUFPLEVBQUMsSUFBSSxFQUFDLE1BQU0sUUFBUSxDQUFBO0FBRTNCLE9BQU8sSUFBSSxNQUFNLFdBQVcsQ0FBQTtBQUM1QixPQUFPLFVBQVUsTUFBTSwrQkFBK0IsQ0FBQTtBQUV0RCxNQUFNLENBQUMsT0FBTyxPQUFPLGtDQUFtQyxTQUFRLElBQUk7SUFDbEUscURBQXFEO0lBQ3JELFVBQVUsR0FBRyxTQUFTLENBQUE7SUFFdEIsaUNBQWlDO0lBQ2pDLHNCQUFzQixHQUFHLFNBQVMsQ0FBQTtJQUVsQyxLQUFLLENBQUMsT0FBTztRQUNYLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQTtRQUMzQixNQUFNLFdBQVcsR0FBRyxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDLFlBQVksRUFBRSxLQUFLLENBQUE7UUFDbEUsTUFBTSxZQUFZLEdBQUcsR0FBRyxXQUFXLElBQUksSUFBSSxDQUFDLGdCQUFnQixFQUFFLFNBQVMsQ0FBQTtRQUV2RSxJQUFJLENBQUMsTUFBTSxVQUFVLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQztZQUNuQyxNQUFNLEVBQUUsQ0FBQyxLQUFLLENBQUMsV0FBVyxFQUFF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QUFDO1FBRUQsZ0RBQWdEO1FBQ2hELElBQUksS0FBSyxDQUFBO1FBRVQsSUFBSSxDQUFDO1lBQ0gsS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUE7UUFDOUIsQ0FBQztRQUFDLE1BQU0sQ0FBQztZQUNQLE9BQU8sSUFBSSxDQUFBO1FBQ2IsQ0FBQztRQUVELElBQUksQ0FBQyxLQUFLLElBQUksT0FBTyxLQUFLLENBQUMsR0FBRyxLQUFLLFFBQVE7WUFBRSxPQUFPLElBQUksQ0FBQTtRQUN4RCxJQUFJLEtBQUssQ0FBQyxRQUFRLElBQUksS0FBSyxDQUFDLFFBQVEsS0FBSyxFQUFFLENBQUMsUUFBUSxFQUFFO1lBQUUsT0FBTyxLQUFLLENBQUE7UUFFcEUsSUFBSSxDQUFDO1lBQ0gsZ0VBQWdFO1lBQ2hFLCtEQUErRDtZQUMvRCxtREFBbUQ7WUFDbkQsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFBO1lBRTFCLE9BQU8sS0FBSyxDQUFBO1FBQ2QsQ0FBQztRQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7WUFDZixPQUFPLG9DQUFvQyxDQUFDLENBQUMsS0FBSyxDQUFDLEVBQUUsSUFBSSxLQUFLLE9BQU8sQ0FBQTtRQUN2RSxDQUFDO0lBQ0gsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQHRzLWNoZWNrXG5cbmltcG9ydCB7Y3JlYXRlSGFzaH0gZnJvbSBcIm5vZGU6Y3J5cHRvXCJcbmltcG9ydCB3YWl0IGZyb20gXCJhd2FpdGVyeS9idWlsZC93YWl0LmpzXCJcbmltcG9ydCBmcyBmcm9tIFwiZnMvcHJvbWlzZXNcIlxuaW1wb3J0IG9zIGZyb20gXCJub2RlOm9zXCJcbmltcG9ydCBwYXRoIGZyb20gXCJub2RlOnBhdGhcIlxuaW1wb3J0IHF1ZXJ5IGZyb20gXCIuL3F1ZXJ5LmpzXCJcbmltcG9ydCBzcWxpdGUzIGZyb20gXCJzcWxpdGUzXCJcbmltcG9ydCB7b3Blbn0gZnJvbSBcInNxbGl0ZVwiXG5cbmltcG9ydCBCYXNlIGZyb20gXCIuL2Jhc2UuanNcIlxuaW1wb3J0IGZpbGVFeGlzdHMgZnJvbSBcIi4uLy4uLy4uL3V0aWxzL2ZpbGUtZXhpc3RzLmpzXCJcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgVmVsb2Npb3VzRGF0YWJhc2VEcml2ZXJzU3FsaXRlTm9kZSBleHRlbmRzIEJhc2Uge1xuICAvKiogQHR5cGUge2ltcG9ydChcInNxbGl0ZTNcIikuRGF0YWJhc2UgfCB1bmRlZmluZWR9ICovXG4gIGNvbm5lY3Rpb24gPSB1bmRlZmluZWRcblxuICAvKiogQHR5cGUge3N0cmluZyB8IHVuZGVmaW5lZH0gKi9cbiAgX2Fkdmlzb3J5TG9ja0RpcmVjdG9yeSA9IHVuZGVmaW5lZFxuXG4gIGFzeW5jIGNvbm5lY3QoKSB7XG4gICAgY29uc3QgYXJncyA9IHRoaXMuZ2V0QXJncygpXG4gICAgY29uc3QgZGF0YWJhc2VEaXIgPSBgJHt0aGlzLmdldENvbmZpZ3VyYXRpb24oKS5nZXREaXJlY3RvcnkoKX0vZGJgXG4gICAgY29uc3QgZGF0YWJhc2VQYXRoID0gYCR7ZGF0YWJhc2VEaXJ9LyR7dGhpcy5sb2NhbFN0b3JhZ2VOYW1lKCl9LnNxbGl0ZWBcblxuICAgIGlmICghYXdhaXQgZmlsZUV4aXN0cyhkYXRhYmFzZURpcikpIHtcbiAgICAgIGF3YWl0IGZzLm1rZGlyKGRhdGFiYXNlRGlyLCB7cmVjdXJzaXZlOiB0cnVlfSlcbiAgICB9XG5cbiAgICBpZiAoYXJncy5yZXNldCkge1xuICAgICAgYXdhaXQgZnMudW5saW5rKGRhdGFiYXNlUGF0aClcbiAgICB9XG5cbiAgICB0aGlzLl9hZHZpc29yeUxvY2tEaXJlY3RvcnkgPSBwYXRoLmpvaW4oZGF0YWJhc2VEaXIsIGAke3RoaXMubG9jYWxTdG9yYWdlTmFtZSgpfS52ZWxvY2lvdXMtYWR2aXNvcnktbG9ja3NgKVxuXG4gICAgdHJ5IHtcbiAgICAgIC8vIEB0cy1leHBlY3QtZXJyb3JcbiAgICAgIHRoaXMuY29ubmVjdGlvbiA9IC8qKiBAdHlwZSB7aW1wb3J0KFwic3FsaXRlM1wiKS5EYXRhYmFzZX0gKi8gKGF3YWl0IG9wZW4oe1xuICAgICAgICBmaWxlbmFtZTogZGF0YWJhc2VQYXRoLFxuICAgICAgICBkcml2ZXI6IHNxbGl0ZTMuRGF0YWJhc2VcbiAgICAgIH0pKVxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBpZiAoZXJyb3IgaW5zdGFuY2VvZiBFcnJvcikge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYENvdWxkbid0IG9wZW4gZGF0YWJhc2UgJHtkYXRhYmFzZVBhdGh9IGJlY2F1c2Ugb2YgJHtlcnJvci5jb25zdHJ1Y3Rvci5uYW1lfTogJHtlcnJvci5tZXNzYWdlfWAsIHtjYXVzZTogZXJyb3J9KVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBDb3VsZG4ndCBvcGVuIGRhdGFiYXNlICR7ZGF0YWJhc2VQYXRofSBiZWNhdXNlIG9mICR7dHlwZW9mIGVycm9yfTogJHtlcnJvcn1gLCB7Y2F1c2U6IGVycm9yfSlcbiAgICAgIH1cbiAgICB9XG5cbiAgICBhd2FpdCB0aGlzLnJlZ2lzdGVyVmVyc2lvbigpXG4gIH1cblxuICBsb2NhbFN0b3JhZ2VOYW1lKCkge1xuICAgIGNvbnN0IGFyZ3MgPSB0aGlzLmdldEFyZ3MoKVxuXG4gICAgaWYgKCFhcmdzLm5hbWUpIHRocm93IG5ldyBFcnJvcihcIk5vIG5hbWUgZ2l2ZW4gZm9yIFNRTGl0ZSBOb2RlXCIpXG5cbiAgICByZXR1cm4gYFZlbG9jaW91c0RhdGFiYXNlRHJpdmVyc1NxbGl0ZS0tLSR7YXJncy5uYW1lfWBcbiAgfVxuXG4gIGFzeW5jIGNsb3NlKCkge1xuICAgIGF3YWl0IHRoaXMuY29ubmVjdGlvbj8uY2xvc2UoKVxuICAgIHRoaXMuY29ubmVjdGlvbiA9IHVuZGVmaW5lZFxuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBzcWwgLSBTUUwgc3RyaW5nLlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxSZWNvcmQ8c3RyaW5nLCBhbnk+W10+fSAtIFJlc29sdmVzIHdpdGggdGhlIHF1ZXJ5IGFjdHVhbC5cbiAgICovXG4gIGFzeW5jIF9xdWVyeUFjdHVhbChzcWwpIHtcbiAgICBpZiAoIXRoaXMuY29ubmVjdGlvbikgdGhyb3cgbmV3IEVycm9yKFwiTm8gY29ubmVjdGlvblwiKVxuXG4gICAgcmV0dXJuIGF3YWl0IHF1ZXJ5KHRoaXMuY29ubmVjdGlvbiwgc3FsKVxuICB9XG5cbiAgLyoqXG4gICAqIExheWVycyBhIGZpbGVzeXN0ZW0gbG9jayBkaXJlY3Rvcnkgb24gdG9wIG9mIHRoZSBpbi1wcm9jZXNzIHdhaXRlclxuICAgKiBxdWV1ZSBzbyBTUUxpdGUgZGVwbG95bWVudHMgd2l0aCBtdWx0aXBsZSBOb2RlIHByb2Nlc3NlcyB3cml0aW5nIHRvXG4gICAqIHRoZSBzYW1lIGRhdGFiYXNlIGZpbGUgc2VlIGNvbnNpc3RlbnQgYWR2aXNvcnktbG9jayBtdXR1YWwgZXhjbHVzaW9uXG4gICAqIGFjcm9zcyBwcm9jZXNzZXMsIG5vdCBqdXN0IHdpdGhpbiBhIHNpbmdsZSBwcm9jZXNzLlxuICAgKlxuICAgKiBUaGUgaW4tcHJvY2VzcyBxdWV1ZSBmcm9tIHRoZSBzaGFyZWQgU1FMaXRlIGJhc2UgY2xhc3MgaXMgc3RpbGwgdXNlZFxuICAgKiBmb3IgdGhlIGZhc3QgaW50cmEtcHJvY2VzcyBwYXRoIChubyBwb2xsaW5nLCB3YWl0ZXJzIHdha2UgZWFjaCBvdGhlclxuICAgKiB0aHJvdWdoIHRoZSBgU2V0PHN0cmluZz5gICsgd2FpdGVyIHF1ZXVlKTsgdGhlIGZpbGVzeXN0ZW0gbG9jayBpc1xuICAgKiBvbmx5IGNoZWNrZWQgb25jZSB0aGUgaW4tcHJvY2VzcyBxdWV1ZSBoYXMgZ3JhbnRlZCB0aGUgY2FsbGVyLCBzb1xuICAgKiB0eXBpY2FsIHNpbmdsZS1wcm9jZXNzIHRyYWZmaWMgcGF5cyBhdCBtb3N0IHR3byBgZnMubWtkaXJgIGNhbGxzXG4gICAqIChjcmVhdGUgYW5kIHJlbW92ZSkgcGVyIGNyaXRpY2FsIHNlY3Rpb24uXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lIC0gTG9jayBuYW1lLlxuICAgKiBAcGFyYW0ge3t0aW1lb3V0TXM/OiBudW1iZXIgfCBudWxsfX0gW2FyZ3NdIC0gT3B0aW9uYWwgdGltZW91dCBpbiBtaWxsaXNlY29uZHM7IGBudWxsYCwgYHVuZGVmaW5lZGAsIG9yIG5lZ2F0aXZlIGJsb2NrcyBmb3JldmVyLlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxib29sZWFuPn1cbiAgICovXG4gIGFzeW5jIGFjcXVpcmVBZHZpc29yeUxvY2sobmFtZSwge3RpbWVvdXRNc30gPSB7fSkge1xuICAgIGNvbnN0IGRlYWRsaW5lID0gdHlwZW9mIHRpbWVvdXRNcyA9PT0gXCJudW1iZXJcIiAmJiB0aW1lb3V0TXMgPj0gMCA/IERhdGUubm93KCkgKyB0aW1lb3V0TXMgOiBudWxsXG4gICAgY29uc3QgcmVtYWluaW5nRm9ySW5Qcm9jZXNzID0gZGVhZGxpbmUgIT09IG51bGwgPyBNYXRoLm1heCgwLCBkZWFkbGluZSAtIERhdGUubm93KCkpIDogbnVsbFxuICAgIGNvbnN0IGluUHJvY2Vzc0FjcXVpcmVkID0gYXdhaXQgc3VwZXIuYWNxdWlyZUFkdmlzb3J5TG9jayhuYW1lLCB7dGltZW91dE1zOiByZW1haW5pbmdGb3JJblByb2Nlc3N9KVxuXG4gICAgaWYgKCFpblByb2Nlc3NBY3F1aXJlZCkgcmV0dXJuIGZhbHNlXG5cbiAgICB0cnkge1xuICAgICAgY29uc3QgcmVtYWluaW5nRm9yRmlsZSA9IGRlYWRsaW5lICE9PSBudWxsID8gTWF0aC5tYXgoMCwgZGVhZGxpbmUgLSBEYXRlLm5vdygpKSA6IG51bGxcbiAgICAgIGNvbnN0IGZpbGVBY3F1aXJlZCA9IGF3YWl0IHRoaXMuX2FjcXVpcmVBZHZpc29yeUxvY2tGaWxlKG5hbWUsIHt0aW1lb3V0TXM6IHJlbWFpbmluZ0ZvckZpbGV9KVxuXG4gICAgICBpZiAoIWZpbGVBY3F1aXJlZCkge1xuICAgICAgICBhd2FpdCBzdXBlci5yZWxlYXNlQWR2aXNvcnlMb2NrKG5hbWUpXG4gICAgICAgIHJldHVybiBmYWxzZVxuICAgICAgfVxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBhd2FpdCBzdXBlci5yZWxlYXNlQWR2aXNvcnlMb2NrKG5hbWUpXG4gICAgICB0aHJvdyBlcnJvclxuICAgIH1cblxuICAgIHJldHVybiB0cnVlXG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWUgLSBMb2NrIG5hbWUuXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPGJvb2xlYW4+fVxuICAgKi9cbiAgYXN5bmMgdHJ5QWNxdWlyZUFkdmlzb3J5TG9jayhuYW1lKSB7XG4gICAgY29uc3QgaW5Qcm9jZXNzQWNxdWlyZWQgPSBhd2FpdCBzdXBlci50cnlBY3F1aXJlQWR2aXNvcnlMb2NrKG5hbWUpXG5cbiAgICBpZiAoIWluUHJvY2Vzc0FjcXVpcmVkKSByZXR1cm4gZmFsc2VcblxuICAgIHRyeSB7XG4gICAgICBjb25zdCBmaWxlQWNxdWlyZWQgPSBhd2FpdCB0aGlzLl90cnlBY3F1aXJlQWR2aXNvcnlMb2NrRmlsZShuYW1lKVxuXG4gICAgICBpZiAoIWZpbGVBY3F1aXJlZCkge1xuICAgICAgICBhd2FpdCBzdXBlci5yZWxlYXNlQWR2aXNvcnlMb2NrKG5hbWUpXG4gICAgICAgIHJldHVybiBmYWxzZVxuICAgICAgfVxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBhd2FpdCBzdXBlci5yZWxlYXNlQWR2aXNvcnlMb2NrKG5hbWUpXG4gICAgICB0aHJvdyBlcnJvclxuICAgIH1cblxuICAgIHJldHVybiB0cnVlXG4gIH1cblxuICAvKipcbiAgICogUmVsZWFzZXMgdGhlIGxvY2sgb25seSBpZiAqKnRoaXMqKiBkcml2ZXIgaW5zdGFuY2UgYWNxdWlyZWQgaXQsIGJvdGhcbiAgICogaW4gdGhlIHNoYXJlZCBpbi1wcm9jZXNzIG93bmVyIHRhYmxlIGFuZCBpbiB0aGUgb24tZGlzayBsb2NrXG4gICAqIGRpcmVjdG9yeS4gQSBjYWxsZXIgdGhhdCB0cmllcyB0byByZWxlYXNlIGEgbG9jayBpdCBuZXZlciBhY3F1aXJlZFxuICAgKiAob3IgdGhhdCB3YXMgYWxyZWFkeSByZWxlYXNlZCBieSBhbm90aGVyIGRyaXZlcikgZ2V0cyBgZmFsc2VgIGJhY2tcbiAgICogYW5kIHRoZSBmaWxlc3lzdGVtIHN0YXRlIGlzIGxlZnQgYWxvbmUgc28gd2UgbmV2ZXIgZGVsZXRlIHNvbWVib2R5XG4gICAqIGVsc2UncyBsb2NrIGRpcmVjdG9yeS5cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWUgLSBMb2NrIG5hbWUuXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPGJvb2xlYW4+fVxuICAgKi9cbiAgYXN5bmMgcmVsZWFzZUFkdmlzb3J5TG9jayhuYW1lKSB7XG4gICAgY29uc3QgaW5Qcm9jZXNzUmVsZWFzZWQgPSBhd2FpdCBzdXBlci5yZWxlYXNlQWR2aXNvcnlMb2NrKG5hbWUpXG5cbiAgICBpZiAoaW5Qcm9jZXNzUmVsZWFzZWQpIHtcbiAgICAgIGF3YWl0IHRoaXMuX3JlbGVhc2VBZHZpc29yeUxvY2tGaWxlKG5hbWUpXG4gICAgfVxuXG4gICAgcmV0dXJuIGluUHJvY2Vzc1JlbGVhc2VkXG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWUgLSBMb2NrIG5hbWUuXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPGJvb2xlYW4+fVxuICAgKi9cbiAgYXN5bmMgaXNBZHZpc29yeUxvY2tIZWxkKG5hbWUpIHtcbiAgICBpZiAoYXdhaXQgc3VwZXIuaXNBZHZpc29yeUxvY2tIZWxkKG5hbWUpKSByZXR1cm4gdHJ1ZVxuXG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuX2lzQWR2aXNvcnlMb2NrRmlsZUhlbGQobmFtZSlcbiAgfVxuXG4gIC8qKiBAcmV0dXJucyB7c3RyaW5nfSAqL1xuICBfcmVzb2x2ZUFkdmlzb3J5TG9ja0RpcmVjdG9yeSgpIHtcbiAgICBpZiAoIXRoaXMuX2Fkdmlzb3J5TG9ja0RpcmVjdG9yeSkge1xuICAgICAgLy8gRmFsbCBiYWNrIHRvIGRlcml2aW5nIHRoZSBkaXJlY3RvcnkgZm9yIGNhbGxlcnMgdGhhdCBpbnZva2VkXG4gICAgICAvLyBhZHZpc29yeSBsb2NrIG1ldGhvZHMgYmVmb3JlIGBjb25uZWN0KClgIHdpcmVkIHRoZSBmaWVsZCBpbi5cbiAgICAgIGNvbnN0IGRhdGFiYXNlRGlyID0gYCR7dGhpcy5nZXRDb25maWd1cmF0aW9uKCkuZ2V0RGlyZWN0b3J5KCl9L2RiYFxuXG4gICAgICB0aGlzLl9hZHZpc29yeUxvY2tEaXJlY3RvcnkgPSBwYXRoLmpvaW4oZGF0YWJhc2VEaXIsIGAke3RoaXMubG9jYWxTdG9yYWdlTmFtZSgpfS52ZWxvY2lvdXMtYWR2aXNvcnktbG9ja3NgKVxuICAgIH1cblxuICAgIHJldHVybiB0aGlzLl9hZHZpc29yeUxvY2tEaXJlY3RvcnlcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZSAtIExvY2sgbmFtZS5cbiAgICogQHJldHVybnMge3N0cmluZ31cbiAgICovXG4gIF9hZHZpc29yeUxvY2tQYXRoKG5hbWUpIHtcbiAgICBjb25zdCBoYXNoID0gY3JlYXRlSGFzaChcInNoYTI1NlwiKS51cGRhdGUobmFtZSkuZGlnZXN0KFwiaGV4XCIpLnNsaWNlKDAsIDE2KVxuICAgIGNvbnN0IHNhZmVOYW1lID0gbmFtZS5yZXBsYWNlKC9bXmEtekEtWjAtOS5fLV0vZywgXCJfXCIpLnNsaWNlKDAsIDY0KVxuXG4gICAgcmV0dXJuIHBhdGguam9pbih0aGlzLl9yZXNvbHZlQWR2aXNvcnlMb2NrRGlyZWN0b3J5KCksIGAke3NhZmVOYW1lfS0ke2hhc2h9LmxvY2tgKVxuICB9XG5cbiAgLyoqIEByZXR1cm5zIHtQcm9taXNlPHZvaWQ+fSAqL1xuICBhc3luYyBfZW5zdXJlQWR2aXNvcnlMb2NrRGlyZWN0b3J5KCkge1xuICAgIGF3YWl0IGZzLm1rZGlyKHRoaXMuX3Jlc29sdmVBZHZpc29yeUxvY2tEaXJlY3RvcnkoKSwge3JlY3Vyc2l2ZTogdHJ1ZX0pXG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHtzdHJpbmd9IGxvY2tEaXJQYXRoIC0gQWJzb2x1dGUgcGF0aCBvZiB0aGUgbG9jayBkaXJlY3RvcnkuXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPHZvaWQ+fVxuICAgKi9cbiAgYXN5bmMgX3dyaXRlQWR2aXNvcnlMb2NrTWV0YWRhdGEobG9ja0RpclBhdGgpIHtcbiAgICBjb25zdCBvd25lclBhdGggPSBwYXRoLmpvaW4obG9ja0RpclBhdGgsIFwib3duZXIuanNvblwiKVxuICAgIGNvbnN0IHBheWxvYWQgPSBKU09OLnN0cmluZ2lmeSh7XG4gICAgICBwaWQ6IHByb2Nlc3MucGlkLFxuICAgICAgaG9zdG5hbWU6IG9zLmhvc3RuYW1lKCksXG4gICAgICBhY3F1aXJlZEF0OiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKClcbiAgICB9KVxuXG4gICAgYXdhaXQgZnMud3JpdGVGaWxlKG93bmVyUGF0aCwgcGF5bG9hZClcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZSAtIExvY2sgbmFtZS5cbiAgICogQHBhcmFtIHt7dGltZW91dE1zPzogbnVtYmVyIHwgbnVsbH19IGFyZ3MgLSBUaW1lb3V0IGFyZ3MuXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPGJvb2xlYW4+fVxuICAgKi9cbiAgYXN5bmMgX2FjcXVpcmVBZHZpc29yeUxvY2tGaWxlKG5hbWUsIHt0aW1lb3V0TXN9KSB7XG4gICAgYXdhaXQgdGhpcy5fZW5zdXJlQWR2aXNvcnlMb2NrRGlyZWN0b3J5KClcblxuICAgIGNvbnN0IGxvY2tQYXRoID0gdGhpcy5fYWR2aXNvcnlMb2NrUGF0aChuYW1lKVxuICAgIGNvbnN0IGRlYWRsaW5lID0gdHlwZW9mIHRpbWVvdXRNcyA9PT0gXCJudW1iZXJcIiAmJiB0aW1lb3V0TXMgPj0gMCA/IERhdGUubm93KCkgKyB0aW1lb3V0TXMgOiBudWxsXG4gICAgY29uc3QgcG9sbEludGVydmFsTXMgPSA1MFxuXG4gICAgLy8gSW50ZW50aW9uYWxseSBsb29waW5nIHdpdGhvdXQgYSBmaXhlZCBpdGVyYXRpb24gY2FwIOKAlCBlaXRoZXIgdGhlXG4gICAgLy8gbWtkaXIgc3VjY2VlZHMsIHRoZSBkZWFkbGluZSBlbGFwc2VzLCBvciBhbiB1bmV4cGVjdGVkIGVycm9yIGlzXG4gICAgLy8gcmUtdGhyb3duLlxuICAgIHdoaWxlICh0cnVlKSB7XG4gICAgICB0cnkge1xuICAgICAgICBhd2FpdCBmcy5ta2Rpcihsb2NrUGF0aClcbiAgICAgICAgYXdhaXQgdGhpcy5fd3JpdGVBZHZpc29yeUxvY2tNZXRhZGF0YShsb2NrUGF0aClcblxuICAgICAgICByZXR1cm4gdHJ1ZVxuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgaWYgKC8qKiBAdHlwZSB7Tm9kZUpTLkVycm5vRXhjZXB0aW9ufSAqLyAoZXJyb3IpPy5jb2RlICE9PSBcIkVFWElTVFwiKSB0aHJvdyBlcnJvclxuXG4gICAgICAgIGlmIChhd2FpdCB0aGlzLl9pc0Fkdmlzb3J5TG9ja1N0YWxlKGxvY2tQYXRoKSkge1xuICAgICAgICAgIGF3YWl0IGZzLnJtKGxvY2tQYXRoLCB7cmVjdXJzaXZlOiB0cnVlLCBmb3JjZTogdHJ1ZX0pXG4gICAgICAgICAgY29udGludWVcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChkZWFkbGluZSAhPT0gbnVsbCkge1xuICAgICAgICAgIGNvbnN0IHJlbWFpbmluZyA9IGRlYWRsaW5lIC0gRGF0ZS5ub3coKVxuXG4gICAgICAgICAgaWYgKHJlbWFpbmluZyA8PSAwKSByZXR1cm4gZmFsc2VcblxuICAgICAgICAgIGF3YWl0IHdhaXQoTWF0aC5taW4ocG9sbEludGVydmFsTXMsIHJlbWFpbmluZykpXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgYXdhaXQgd2FpdChwb2xsSW50ZXJ2YWxNcylcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZSAtIExvY2sgbmFtZS5cbiAgICogQHJldHVybnMge1Byb21pc2U8Ym9vbGVhbj59XG4gICAqL1xuICBhc3luYyBfdHJ5QWNxdWlyZUFkdmlzb3J5TG9ja0ZpbGUobmFtZSkge1xuICAgIGF3YWl0IHRoaXMuX2Vuc3VyZUFkdmlzb3J5TG9ja0RpcmVjdG9yeSgpXG5cbiAgICBjb25zdCBsb2NrUGF0aCA9IHRoaXMuX2Fkdmlzb3J5TG9ja1BhdGgobmFtZSlcblxuICAgIHRyeSB7XG4gICAgICBhd2FpdCBmcy5ta2Rpcihsb2NrUGF0aClcbiAgICAgIGF3YWl0IHRoaXMuX3dyaXRlQWR2aXNvcnlMb2NrTWV0YWRhdGEobG9ja1BhdGgpXG5cbiAgICAgIHJldHVybiB0cnVlXG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGlmICgvKiogQHR5cGUge05vZGVKUy5FcnJub0V4Y2VwdGlvbn0gKi8gKGVycm9yKT8uY29kZSAhPT0gXCJFRVhJU1RcIikgdGhyb3cgZXJyb3JcblxuICAgICAgaWYgKGF3YWl0IHRoaXMuX2lzQWR2aXNvcnlMb2NrU3RhbGUobG9ja1BhdGgpKSB7XG4gICAgICAgIGF3YWl0IGZzLnJtKGxvY2tQYXRoLCB7cmVjdXJzaXZlOiB0cnVlLCBmb3JjZTogdHJ1ZX0pXG5cbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBhd2FpdCBmcy5ta2Rpcihsb2NrUGF0aClcbiAgICAgICAgICBhd2FpdCB0aGlzLl93cml0ZUFkdmlzb3J5TG9ja01ldGFkYXRhKGxvY2tQYXRoKVxuXG4gICAgICAgICAgcmV0dXJuIHRydWVcbiAgICAgICAgfSBjYXRjaCAocmV0cnlFcnJvcikge1xuICAgICAgICAgIGlmICgvKiogQHR5cGUge05vZGVKUy5FcnJub0V4Y2VwdGlvbn0gKi8gKHJldHJ5RXJyb3IpPy5jb2RlID09PSBcIkVFWElTVFwiKSByZXR1cm4gZmFsc2VcblxuICAgICAgICAgIHRocm93IHJldHJ5RXJyb3JcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gZmFsc2VcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWUgLSBMb2NrIG5hbWUuXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPHZvaWQ+fVxuICAgKi9cbiAgYXN5bmMgX3JlbGVhc2VBZHZpc29yeUxvY2tGaWxlKG5hbWUpIHtcbiAgICBjb25zdCBsb2NrUGF0aCA9IHRoaXMuX2Fkdmlzb3J5TG9ja1BhdGgobmFtZSlcblxuICAgIHRyeSB7XG4gICAgICBhd2FpdCBmcy5ybShsb2NrUGF0aCwge3JlY3Vyc2l2ZTogdHJ1ZSwgZm9yY2U6IHRydWV9KVxuICAgIH0gY2F0Y2gge1xuICAgICAgLy8gQmVzdC1lZmZvcnQgcmVsZWFzZTsgaW4tcHJvY2VzcyBzdGF0ZSBpcyBzdGlsbCBhdXRob3JpdGF0aXZlIGFuZFxuICAgICAgLy8gc3RhbGUtbG9jayBjbGVhbnVwIG9uIHRoZSBuZXh0IGFjcXVpcmUgd2lsbCByZW1vdmUgdGhlIGRpcmVjdG9yeVxuICAgICAgLy8gaWYgaXQgcmVhbGx5IGlzIHN0aWxsIGxpbmdlcmluZy5cbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWUgLSBMb2NrIG5hbWUuXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPGJvb2xlYW4+fVxuICAgKi9cbiAgYXN5bmMgX2lzQWR2aXNvcnlMb2NrRmlsZUhlbGQobmFtZSkge1xuICAgIGNvbnN0IGxvY2tQYXRoID0gdGhpcy5fYWR2aXNvcnlMb2NrUGF0aChuYW1lKVxuXG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IGZzLnN0YXQobG9ja1BhdGgpXG4gICAgfSBjYXRjaCB7XG4gICAgICByZXR1cm4gZmFsc2VcbiAgICB9XG5cbiAgICByZXR1cm4gIWF3YWl0IHRoaXMuX2lzQWR2aXNvcnlMb2NrU3RhbGUobG9ja1BhdGgpXG4gIH1cblxuICAvKipcbiAgICogQSBsb2NrIGRpcmVjdG9yeSBpcyBjb25zaWRlcmVkIHN0YWxlIHdoZW4gaXRzIG93bmVyIG1ldGFkYXRhIG5hbWVzIGFcbiAgICogUElEIG9uIHRoaXMgaG9zdCB0aGF0IGlzIG5vIGxvbmdlciBydW5uaW5nLiBDcm9zcy1ob3N0IG93bmVyc2hpcCAoYVxuICAgKiBkaWZmZXJlbnQgYGhvc3RuYW1lYCkgaXMgdHJlYXRlZCBhcyBsaXZlIGJlY2F1c2Ugd2UgY2Fubm90IHJlbGlhYmx5XG4gICAqIHByb2JlIGEgUElEIG9uIGFub3RoZXIgbWFjaGluZTsgb3BlcmF0b3JzIGluIHRoYXQgc2l0dWF0aW9uIHNob3VsZFxuICAgKiByZW1vdmUgc3RhbGUgbG9jayBkaXJlY3RvcmllcyBieSBoYW5kIGlmIHRoZXkgbGluZ2VyLlxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gbG9ja1BhdGggLSBBYnNvbHV0ZSBwYXRoIG9mIHRoZSBsb2NrIGRpcmVjdG9yeS5cbiAgICogQHJldHVybnMge1Byb21pc2U8Ym9vbGVhbj59XG4gICAqL1xuICBhc3luYyBfaXNBZHZpc29yeUxvY2tTdGFsZShsb2NrUGF0aCkge1xuICAgIC8qKiBAdHlwZSB7c3RyaW5nfSAqL1xuICAgIGxldCByYXdPd25lclxuXG4gICAgdHJ5IHtcbiAgICAgIHJhd093bmVyID0gYXdhaXQgZnMucmVhZEZpbGUocGF0aC5qb2luKGxvY2tQYXRoLCBcIm93bmVyLmpzb25cIiksIFwidXRmOFwiKVxuICAgIH0gY2F0Y2gge1xuICAgICAgLy8gTWlzc2luZyBvciB1bnJlYWRhYmxlIG1ldGFkYXRhIOKAlCB0cmVhdCBhcyBzdGFsZSBzbyB3ZSBjYW4gcmVjbGFpbS5cbiAgICAgIHJldHVybiB0cnVlXG4gICAgfVxuXG4gICAgLyoqIEB0eXBlIHt7cGlkPzogbnVtYmVyLCBob3N0bmFtZT86IHN0cmluZ319ICovXG4gICAgbGV0IG93bmVyXG5cbiAgICB0cnkge1xuICAgICAgb3duZXIgPSBKU09OLnBhcnNlKHJhd093bmVyKVxuICAgIH0gY2F0Y2gge1xuICAgICAgcmV0dXJuIHRydWVcbiAgICB9XG5cbiAgICBpZiAoIW93bmVyIHx8IHR5cGVvZiBvd25lci5waWQgIT09IFwibnVtYmVyXCIpIHJldHVybiB0cnVlXG4gICAgaWYgKG93bmVyLmhvc3RuYW1lICYmIG93bmVyLmhvc3RuYW1lICE9PSBvcy5ob3N0bmFtZSgpKSByZXR1cm4gZmFsc2VcblxuICAgIHRyeSB7XG4gICAgICAvLyBga2lsbChwaWQsIDApYCBpcyBhIG5vLW9wIHNpZ25hbCB0aGF0IGZhaWxzIHdpdGggRVNSQ0ggaWYgdGhlXG4gICAgICAvLyBwcm9jZXNzIGlzIG5vdCBydW5uaW5nOyBwZXJtaXNzaW9uIGVycm9ycyBzdGlsbCBpbmRpY2F0ZSB0aGVcbiAgICAgIC8vIHByb2Nlc3MgZXhpc3RzIHNvIHdlIHRyZWF0IHRob3NlIGFzIFwibm90IHN0YWxlXCIuXG4gICAgICBwcm9jZXNzLmtpbGwob3duZXIucGlkLCAwKVxuXG4gICAgICByZXR1cm4gZmFsc2VcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgcmV0dXJuIC8qKiBAdHlwZSB7Tm9kZUpTLkVycm5vRXhjZXB0aW9ufSAqLyAoZXJyb3IpPy5jb2RlID09PSBcIkVTUkNIXCJcbiAgICB9XG4gIH1cbn1cbiJdfQ==
351
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvZGF0YWJhc2UvZHJpdmVycy9zcWxpdGUvaW5kZXguanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsWUFBWTtBQUVaLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxhQUFhLENBQUE7QUFDdEMsT0FBTyxJQUFJLE1BQU0sd0JBQXdCLENBQUE7QUFDekMsT0FBTyxFQUFFLE1BQU0sYUFBYSxDQUFBO0FBQzVCLE9BQU8sRUFBRSxNQUFNLFNBQVMsQ0FBQTtBQUN4QixPQUFPLElBQUksTUFBTSxXQUFXLENBQUE7QUFDNUIsT0FBTyxLQUFLLE1BQU0sWUFBWSxDQUFBO0FBQzlCLE9BQU8sT0FBTyxNQUFNLFNBQVMsQ0FBQTtBQUM3QixPQUFPLEVBQUMsSUFBSSxFQUFDLE1BQU0sUUFBUSxDQUFBO0FBRTNCLE9BQU8sSUFBSSxNQUFNLFdBQVcsQ0FBQTtBQUM1QixPQUFPLFVBQVUsTUFBTSwrQkFBK0IsQ0FBQTtBQUV0RCxNQUFNLENBQUMsT0FBTyxPQUFPLGtDQUFtQyxTQUFRLElBQUk7SUFDbEU7O3VEQUVtRDtJQUNuRCxVQUFVLEdBQUcsU0FBUyxDQUFBO0lBRXRCOzttQ0FFK0I7SUFDL0Isc0JBQXNCLEdBQUcsU0FBUyxDQUFBO0lBRWxDLEtBQUssQ0FBQyxPQUFPO1FBQ1gsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFBO1FBQzNCLE1BQU0sV0FBVyxHQUFHLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUMsWUFBWSxFQUFFLEtBQUssQ0FBQTtRQUNsRSxNQUFNLFlBQVksR0FBRyxHQUFHLFdBQVcsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsU0FBUyxDQUFBO1FBRXZFLElBQUksQ0FBQyxNQUFNLFVBQVUsQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDO1lBQ25DLE1BQU0sRUFBRSxDQUFDLEtBQUssQ0FBQyxXQUFXLEVB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SSxDQUFBO1FBQ2IsQ0FBQztRQUVEOztzREFFOEM7UUFDOUMsSUFBSSxLQUFLLENBQUE7UUFFVCxJQUFJLENBQUM7WUFDSCxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQTtRQUM5QixDQUFDO1FBQUMsTUFBTSxDQUFDO1lBQ1AsT0FBTyxJQUFJLENBQUE7UUFDYixDQUFDO1FBRUQsSUFBSSxDQUFDLEtBQUssSUFBSSxPQUFPLEtBQUssQ0FBQyxHQUFHLEtBQUssUUFBUTtZQUFFLE9BQU8sSUFBSSxDQUFBO1FBQ3hELElBQUksS0FBSyxDQUFDLFFBQVEsSUFBSSxLQUFLLENBQUMsUUFBUSxLQUFLLEVBQUUsQ0FBQyxRQUFRLEVBQUU7WUFBRSxPQUFPLEtBQUssQ0FBQTtRQUVwRSxJQUFJLENBQUM7WUFDSCxnRUFBZ0U7WUFDaEUsK0RBQStEO1lBQy9ELG1EQUFtRDtZQUNuRCxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUE7WUFFMUIsT0FBTyxLQUFLLENBQUE7UUFDZCxDQUFDO1FBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztZQUNmLE9BQU8sc0ZBQXNGLENBQUMsQ0FBQyxLQUFLLENBQUMsRUFBRSxJQUFJLEtBQUssT0FBTyxDQUFBO1FBQ3pILENBQUM7SUFDSCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBAdHMtY2hlY2tcblxuaW1wb3J0IHtjcmVhdGVIYXNofSBmcm9tIFwibm9kZTpjcnlwdG9cIlxuaW1wb3J0IHdhaXQgZnJvbSBcImF3YWl0ZXJ5L2J1aWxkL3dhaXQuanNcIlxuaW1wb3J0IGZzIGZyb20gXCJmcy9wcm9taXNlc1wiXG5pbXBvcnQgb3MgZnJvbSBcIm5vZGU6b3NcIlxuaW1wb3J0IHBhdGggZnJvbSBcIm5vZGU6cGF0aFwiXG5pbXBvcnQgcXVlcnkgZnJvbSBcIi4vcXVlcnkuanNcIlxuaW1wb3J0IHNxbGl0ZTMgZnJvbSBcInNxbGl0ZTNcIlxuaW1wb3J0IHtvcGVufSBmcm9tIFwic3FsaXRlXCJcblxuaW1wb3J0IEJhc2UgZnJvbSBcIi4vYmFzZS5qc1wiXG5pbXBvcnQgZmlsZUV4aXN0cyBmcm9tIFwiLi4vLi4vLi4vdXRpbHMvZmlsZS1leGlzdHMuanNcIlxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBWZWxvY2lvdXNEYXRhYmFzZURyaXZlcnNTcWxpdGVOb2RlIGV4dGVuZHMgQmFzZSB7XG4gIC8qKlxuICAgKiBDb25uZWN0aW9uLlxuICAgIEB0eXBlIHtpbXBvcnQoXCJzcWxpdGUzXCIpLkRhdGFiYXNlIHwgdW5kZWZpbmVkfSAqL1xuICBjb25uZWN0aW9uID0gdW5kZWZpbmVkXG5cbiAgLyoqXG4gICAqIEFkdmlzb3J5IGxvY2sgZGlyZWN0b3J5LlxuICAgIEB0eXBlIHtzdHJpbmcgfCB1bmRlZmluZWR9ICovXG4gIF9hZHZpc29yeUxvY2tEaXJlY3RvcnkgPSB1bmRlZmluZWRcblxuICBhc3luYyBjb25uZWN0KCkge1xuICAgIGNvbnN0IGFyZ3MgPSB0aGlzLmdldEFyZ3MoKVxuICAgIGNvbnN0IGRhdGFiYXNlRGlyID0gYCR7dGhpcy5nZXRDb25maWd1cmF0aW9uKCkuZ2V0RGlyZWN0b3J5KCl9L2RiYFxuICAgIGNvbnN0IGRhdGFiYXNlUGF0aCA9IGAke2RhdGFiYXNlRGlyfS8ke3RoaXMubG9jYWxTdG9yYWdlTmFtZSgpfS5zcWxpdGVgXG5cbiAgICBpZiAoIWF3YWl0IGZpbGVFeGlzdHMoZGF0YWJhc2VEaXIpKSB7XG4gICAgICBhd2FpdCBmcy5ta2RpcihkYXRhYmFzZURpciwge3JlY3Vyc2l2ZTogdHJ1ZX0pXG4gICAgfVxuXG4gICAgaWYgKGFyZ3MucmVzZXQpIHtcbiAgICAgIGF3YWl0IGZzLnVubGluayhkYXRhYmFzZVBhdGgpXG4gICAgfVxuXG4gICAgdGhpcy5fYWR2aXNvcnlMb2NrRGlyZWN0b3J5ID0gcGF0aC5qb2luKGRhdGFiYXNlRGlyLCBgJHt0aGlzLmxvY2FsU3RvcmFnZU5hbWUoKX0udmVsb2Npb3VzLWFkdmlzb3J5LWxvY2tzYClcblxuICAgIHRyeSB7XG4gICAgICAvLyBAdHMtZXhwZWN0LWVycm9yXG4gICAgICB0aGlzLmNvbm5lY3Rpb24gPSAvKiogTmFycm93cyB0aGUgcnVudGltZSB2YWx1ZSB0byB0aGUgZG9jdW1lbnRlZCB0eXBlLiBAdHlwZSB7aW1wb3J0KFwic3FsaXRlM1wiKS5EYXRhYmFzZX0gKi8gKGF3YWl0IG9wZW4oe1xuICAgICAgICBmaWxlbmFtZTogZGF0YWJhc2VQYXRoLFxuICAgICAgICBkcml2ZXI6IHNxbGl0ZTMuRGF0YWJhc2VcbiAgICAgIH0pKVxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBpZiAoZXJyb3IgaW5zdGFuY2VvZiBFcnJvcikge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYENvdWxkbid0IG9wZW4gZGF0YWJhc2UgJHtkYXRhYmFzZVBhdGh9IGJlY2F1c2Ugb2YgJHtlcnJvci5jb25zdHJ1Y3Rvci5uYW1lfTogJHtlcnJvci5tZXNzYWdlfWAsIHtjYXVzZTogZXJyb3J9KVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBDb3VsZG4ndCBvcGVuIGRhdGFiYXNlICR7ZGF0YWJhc2VQYXRofSBiZWNhdXNlIG9mICR7dHlwZW9mIGVycm9yfTogJHtlcnJvcn1gLCB7Y2F1c2U6IGVycm9yfSlcbiAgICAgIH1cbiAgICB9XG5cbiAgICBhd2FpdCB0aGlzLnJlZ2lzdGVyVmVyc2lvbigpXG4gIH1cblxuICBsb2NhbFN0b3JhZ2VOYW1lKCkge1xuICAgIGNvbnN0IGFyZ3MgPSB0aGlzLmdldEFyZ3MoKVxuXG4gICAgaWYgKCFhcmdzLm5hbWUpIHRocm93IG5ldyBFcnJvcihcIk5vIG5hbWUgZ2l2ZW4gZm9yIFNRTGl0ZSBOb2RlXCIpXG5cbiAgICByZXR1cm4gYFZlbG9jaW91c0RhdGFiYXNlRHJpdmVyc1NxbGl0ZS0tLSR7YXJncy5uYW1lfWBcbiAgfVxuXG4gIGFzeW5jIGNsb3NlKCkge1xuICAgIGF3YWl0IHRoaXMuY29ubmVjdGlvbj8uY2xvc2UoKVxuICAgIHRoaXMuY29ubmVjdGlvbiA9IHVuZGVmaW5lZFxuICB9XG5cbiAgLyoqXG4gICAqIFJ1bnMgcXVlcnkgYWN0dWFsLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gc3FsIC0gU1FMIHN0cmluZy5cbiAgICogQHJldHVybnMge1Byb21pc2U8UmVjb3JkPHN0cmluZywgPz5bXT59IC0gUmVzb2x2ZXMgd2l0aCB0aGUgcXVlcnkgYWN0dWFsLlxuICAgKi9cbiAgYXN5bmMgX3F1ZXJ5QWN0dWFsKHNxbCkge1xuICAgIGlmICghdGhpcy5jb25uZWN0aW9uKSB0aHJvdyBuZXcgRXJyb3IoXCJObyBjb25uZWN0aW9uXCIpXG5cbiAgICByZXR1cm4gYXdhaXQgcXVlcnkodGhpcy5jb25uZWN0aW9uLCBzcWwpXG4gIH1cblxuICAvKipcbiAgICogTGF5ZXJzIGEgZmlsZXN5c3RlbSBsb2NrIGRpcmVjdG9yeSBvbiB0b3Agb2YgdGhlIGluLXByb2Nlc3Mgd2FpdGVyXG4gICAqIHF1ZXVlIHNvIFNRTGl0ZSBkZXBsb3ltZW50cyB3aXRoIG11bHRpcGxlIE5vZGUgcHJvY2Vzc2VzIHdyaXRpbmcgdG9cbiAgICogdGhlIHNhbWUgZGF0YWJhc2UgZmlsZSBzZWUgY29uc2lzdGVudCBhZHZpc29yeS1sb2NrIG11dHVhbCBleGNsdXNpb25cbiAgICogYWNyb3NzIHByb2Nlc3Nlcywgbm90IGp1c3Qgd2l0aGluIGEgc2luZ2xlIHByb2Nlc3MuXG4gICAqXG4gICAqIFRoZSBpbi1wcm9jZXNzIHF1ZXVlIGZyb20gdGhlIHNoYXJlZCBTUUxpdGUgYmFzZSBjbGFzcyBpcyBzdGlsbCB1c2VkXG4gICAqIGZvciB0aGUgZmFzdCBpbnRyYS1wcm9jZXNzIHBhdGggKG5vIHBvbGxpbmcsIHdhaXRlcnMgd2FrZSBlYWNoIG90aGVyXG4gICAqIHRocm91Z2ggdGhlIGBTZXQ8c3RyaW5nPmAgKyB3YWl0ZXIgcXVldWUpOyB0aGUgZmlsZXN5c3RlbSBsb2NrIGlzXG4gICAqIG9ubHkgY2hlY2tlZCBvbmNlIHRoZSBpbi1wcm9jZXNzIHF1ZXVlIGhhcyBncmFudGVkIHRoZSBjYWxsZXIsIHNvXG4gICAqIHR5cGljYWwgc2luZ2xlLXByb2Nlc3MgdHJhZmZpYyBwYXlzIGF0IG1vc3QgdHdvIGBmcy5ta2RpcmAgY2FsbHNcbiAgICogKGNyZWF0ZSBhbmQgcmVtb3ZlKSBwZXIgY3JpdGljYWwgc2VjdGlvbi5cbiAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWUgLSBMb2NrIG5hbWUuXG4gICAqIEBwYXJhbSB7e3RpbWVvdXRNcz86IG51bWJlciB8IG51bGx9fSBbYXJnc10gLSBPcHRpb25hbCB0aW1lb3V0IGluIG1pbGxpc2Vjb25kczsgYG51bGxgLCBgdW5kZWZpbmVkYCwgb3IgbmVnYXRpdmUgYmxvY2tzIGZvcmV2ZXIuXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPGJvb2xlYW4+fVxuICAgKi9cbiAgYXN5bmMgYWNxdWlyZUFkdmlzb3J5TG9jayhuYW1lLCB7dGltZW91dE1zfSA9IHt9KSB7XG4gICAgY29uc3QgZGVhZGxpbmUgPSB0eXBlb2YgdGltZW91dE1zID09PSBcIm51bWJlclwiICYmIHRpbWVvdXRNcyA+PSAwID8gRGF0ZS5ub3coKSArIHRpbWVvdXRNcyA6IG51bGxcbiAgICBjb25zdCByZW1haW5pbmdGb3JJblByb2Nlc3MgPSBkZWFkbGluZSAhPT0gbnVsbCA/IE1hdGgubWF4KDAsIGRlYWRsaW5lIC0gRGF0ZS5ub3coKSkgOiBudWxsXG4gICAgY29uc3QgaW5Qcm9jZXNzQWNxdWlyZWQgPSBhd2FpdCBzdXBlci5hY3F1aXJlQWR2aXNvcnlMb2NrKG5hbWUsIHt0aW1lb3V0TXM6IHJlbWFpbmluZ0ZvckluUHJvY2Vzc30pXG5cbiAgICBpZiAoIWluUHJvY2Vzc0FjcXVpcmVkKSByZXR1cm4gZmFsc2VcblxuICAgIHRyeSB7XG4gICAgICBjb25zdCByZW1haW5pbmdGb3JGaWxlID0gZGVhZGxpbmUgIT09IG51bGwgPyBNYXRoLm1heCgwLCBkZWFkbGluZSAtIERhdGUubm93KCkpIDogbnVsbFxuICAgICAgY29uc3QgZmlsZUFjcXVpcmVkID0gYXdhaXQgdGhpcy5fYWNxdWlyZUFkdmlzb3J5TG9ja0ZpbGUobmFtZSwge3RpbWVvdXRNczogcmVtYWluaW5nRm9yRmlsZX0pXG5cbiAgICAgIGlmICghZmlsZUFjcXVpcmVkKSB7XG4gICAgICAgIGF3YWl0IHN1cGVyLnJlbGVhc2VBZHZpc29yeUxvY2sobmFtZSlcbiAgICAgICAgcmV0dXJuIGZhbHNlXG4gICAgICB9XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGF3YWl0IHN1cGVyLnJlbGVhc2VBZHZpc29yeUxvY2sobmFtZSlcbiAgICAgIHRocm93IGVycm9yXG4gICAgfVxuXG4gICAgcmV0dXJuIHRydWVcbiAgfVxuXG4gIC8qKlxuICAgKiBSdW5zIHRyeSBhY3F1aXJlIGFkdmlzb3J5IGxvY2suXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lIC0gTG9jayBuYW1lLlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxib29sZWFuPn1cbiAgICovXG4gIGFzeW5jIHRyeUFjcXVpcmVBZHZpc29yeUxvY2sobmFtZSkge1xuICAgIGNvbnN0IGluUHJvY2Vzc0FjcXVpcmVkID0gYXdhaXQgc3VwZXIudHJ5QWNxdWlyZUFkdmlzb3J5TG9jayhuYW1lKVxuXG4gICAgaWYgKCFpblByb2Nlc3NBY3F1aXJlZCkgcmV0dXJuIGZhbHNlXG5cbiAgICB0cnkge1xuICAgICAgY29uc3QgZmlsZUFjcXVpcmVkID0gYXdhaXQgdGhpcy5fdHJ5QWNxdWlyZUFkdmlzb3J5TG9ja0ZpbGUobmFtZSlcblxuICAgICAgaWYgKCFmaWxlQWNxdWlyZWQpIHtcbiAgICAgICAgYXdhaXQgc3VwZXIucmVsZWFzZUFkdmlzb3J5TG9jayhuYW1lKVxuICAgICAgICByZXR1cm4gZmFsc2VcbiAgICAgIH1cbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgYXdhaXQgc3VwZXIucmVsZWFzZUFkdmlzb3J5TG9jayhuYW1lKVxuICAgICAgdGhyb3cgZXJyb3JcbiAgICB9XG5cbiAgICByZXR1cm4gdHJ1ZVxuICB9XG5cbiAgLyoqXG4gICAqIFJlbGVhc2VzIHRoZSBsb2NrIG9ubHkgaWYgKip0aGlzKiogZHJpdmVyIGluc3RhbmNlIGFjcXVpcmVkIGl0LCBib3RoXG4gICAqIGluIHRoZSBzaGFyZWQgaW4tcHJvY2VzcyBvd25lciB0YWJsZSBhbmQgaW4gdGhlIG9uLWRpc2sgbG9ja1xuICAgKiBkaXJlY3RvcnkuIEEgY2FsbGVyIHRoYXQgdHJpZXMgdG8gcmVsZWFzZSBhIGxvY2sgaXQgbmV2ZXIgYWNxdWlyZWRcbiAgICogKG9yIHRoYXQgd2FzIGFscmVhZHkgcmVsZWFzZWQgYnkgYW5vdGhlciBkcml2ZXIpIGdldHMgYGZhbHNlYCBiYWNrXG4gICAqIGFuZCB0aGUgZmlsZXN5c3RlbSBzdGF0ZSBpcyBsZWZ0IGFsb25lIHNvIHdlIG5ldmVyIGRlbGV0ZSBzb21lYm9keVxuICAgKiBlbHNlJ3MgbG9jayBkaXJlY3RvcnkuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lIC0gTG9jayBuYW1lLlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxib29sZWFuPn1cbiAgICovXG4gIGFzeW5jIHJlbGVhc2VBZHZpc29yeUxvY2sobmFtZSkge1xuICAgIGNvbnN0IGluUHJvY2Vzc1JlbGVhc2VkID0gYXdhaXQgc3VwZXIucmVsZWFzZUFkdmlzb3J5TG9jayhuYW1lKVxuXG4gICAgaWYgKGluUHJvY2Vzc1JlbGVhc2VkKSB7XG4gICAgICBhd2FpdCB0aGlzLl9yZWxlYXNlQWR2aXNvcnlMb2NrRmlsZShuYW1lKVxuICAgIH1cblxuICAgIHJldHVybiBpblByb2Nlc3NSZWxlYXNlZFxuICB9XG5cbiAgLyoqXG4gICAqIFJ1bnMgaXMgYWR2aXNvcnkgbG9jayBoZWxkLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZSAtIExvY2sgbmFtZS5cbiAgICogQHJldHVybnMge1Byb21pc2U8Ym9vbGVhbj59XG4gICAqL1xuICBhc3luYyBpc0Fkdmlzb3J5TG9ja0hlbGQobmFtZSkge1xuICAgIGlmIChhd2FpdCBzdXBlci5pc0Fkdmlzb3J5TG9ja0hlbGQobmFtZSkpIHJldHVybiB0cnVlXG5cbiAgICByZXR1cm4gYXdhaXQgdGhpcy5faXNBZHZpc29yeUxvY2tGaWxlSGVsZChuYW1lKVxuICB9XG5cbiAgLyoqXG4gICAqIFJ1bnMgcmVzb2x2ZSBhZHZpc29yeSBsb2NrIGRpcmVjdG9yeS5cbiAgICBAcmV0dXJucyB7c3RyaW5nfSAqL1xuICBfcmVzb2x2ZUFkdmlzb3J5TG9ja0RpcmVjdG9yeSgpIHtcbiAgICBpZiAoIXRoaXMuX2Fkdmlzb3J5TG9ja0RpcmVjdG9yeSkge1xuICAgICAgLy8gRmFsbCBiYWNrIHRvIGRlcml2aW5nIHRoZSBkaXJlY3RvcnkgZm9yIGNhbGxlcnMgdGhhdCBpbnZva2VkXG4gICAgICAvLyBhZHZpc29yeSBsb2NrIG1ldGhvZHMgYmVmb3JlIGBjb25uZWN0KClgIHdpcmVkIHRoZSBmaWVsZCBpbi5cbiAgICAgIGNvbnN0IGRhdGFiYXNlRGlyID0gYCR7dGhpcy5nZXRDb25maWd1cmF0aW9uKCkuZ2V0RGlyZWN0b3J5KCl9L2RiYFxuXG4gICAgICB0aGlzLl9hZHZpc29yeUxvY2tEaXJlY3RvcnkgPSBwYXRoLmpvaW4oZGF0YWJhc2VEaXIsIGAke3RoaXMubG9jYWxTdG9yYWdlTmFtZSgpfS52ZWxvY2lvdXMtYWR2aXNvcnktbG9ja3NgKVxuICAgIH1cblxuICAgIHJldHVybiB0aGlzLl9hZHZpc29yeUxvY2tEaXJlY3RvcnlcbiAgfVxuXG4gIC8qKlxuICAgKiBSdW5zIGFkdmlzb3J5IGxvY2sgcGF0aC5cbiAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWUgLSBMb2NrIG5hbWUuXG4gICAqIEByZXR1cm5zIHtzdHJpbmd9XG4gICAqL1xuICBfYWR2aXNvcnlMb2NrUGF0aChuYW1lKSB7XG4gICAgY29uc3QgaGFzaCA9IGNyZWF0ZUhhc2goXCJzaGEyNTZcIikudXBkYXRlKG5hbWUpLmRpZ2VzdChcImhleFwiKS5zbGljZSgwLCAxNilcbiAgICBjb25zdCBzYWZlTmFtZSA9IG5hbWUucmVwbGFjZSgvW15hLXpBLVowLTkuXy1dL2csIFwiX1wiKS5zbGljZSgwLCA2NClcblxuICAgIHJldHVybiBwYXRoLmpvaW4odGhpcy5fcmVzb2x2ZUFkdmlzb3J5TG9ja0RpcmVjdG9yeSgpLCBgJHtzYWZlTmFtZX0tJHtoYXNofS5sb2NrYClcbiAgfVxuXG4gIC8qKlxuICAgKiBSdW5zIGVuc3VyZSBhZHZpc29yeSBsb2NrIGRpcmVjdG9yeS5cbiAgICBAcmV0dXJucyB7UHJvbWlzZTx2b2lkPn0gKi9cbiAgYXN5bmMgX2Vuc3VyZUFkdmlzb3J5TG9ja0RpcmVjdG9yeSgpIHtcbiAgICBhd2FpdCBmcy5ta2Rpcih0aGlzLl9yZXNvbHZlQWR2aXNvcnlMb2NrRGlyZWN0b3J5KCksIHtyZWN1cnNpdmU6IHRydWV9KVxuICB9XG5cbiAgLyoqXG4gICAqIFJ1bnMgd3JpdGUgYWR2aXNvcnkgbG9jayBtZXRhZGF0YS5cbiAgICogQHBhcmFtIHtzdHJpbmd9IGxvY2tEaXJQYXRoIC0gQWJzb2x1dGUgcGF0aCBvZiB0aGUgbG9jayBkaXJlY3RvcnkuXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPHZvaWQ+fVxuICAgKi9cbiAgYXN5bmMgX3dyaXRlQWR2aXNvcnlMb2NrTWV0YWRhdGEobG9ja0RpclBhdGgpIHtcbiAgICBjb25zdCBvd25lclBhdGggPSBwYXRoLmpvaW4obG9ja0RpclBhdGgsIFwib3duZXIuanNvblwiKVxuICAgIGNvbnN0IHBheWxvYWQgPSBKU09OLnN0cmluZ2lmeSh7XG4gICAgICBwaWQ6IHByb2Nlc3MucGlkLFxuICAgICAgaG9zdG5hbWU6IG9zLmhvc3RuYW1lKCksXG4gICAgICBhY3F1aXJlZEF0OiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKClcbiAgICB9KVxuXG4gICAgYXdhaXQgZnMud3JpdGVGaWxlKG93bmVyUGF0aCwgcGF5bG9hZClcbiAgfVxuXG4gIC8qKlxuICAgKiBSdW5zIGFjcXVpcmUgYWR2aXNvcnkgbG9jayBmaWxlLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZSAtIExvY2sgbmFtZS5cbiAgICogQHBhcmFtIHt7dGltZW91dE1zPzogbnVtYmVyIHwgbnVsbH19IGFyZ3MgLSBUaW1lb3V0IGFyZ3MuXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPGJvb2xlYW4+fVxuICAgKi9cbiAgYXN5bmMgX2FjcXVpcmVBZHZpc29yeUxvY2tGaWxlKG5hbWUsIHt0aW1lb3V0TXN9KSB7XG4gICAgYXdhaXQgdGhpcy5fZW5zdXJlQWR2aXNvcnlMb2NrRGlyZWN0b3J5KClcblxuICAgIGNvbnN0IGxvY2tQYXRoID0gdGhpcy5fYWR2aXNvcnlMb2NrUGF0aChuYW1lKVxuICAgIGNvbnN0IGRlYWRsaW5lID0gdHlwZW9mIHRpbWVvdXRNcyA9PT0gXCJudW1iZXJcIiAmJiB0aW1lb3V0TXMgPj0gMCA/IERhdGUubm93KCkgKyB0aW1lb3V0TXMgOiBudWxsXG4gICAgY29uc3QgcG9sbEludGVydmFsTXMgPSA1MFxuXG4gICAgLy8gSW50ZW50aW9uYWxseSBsb29waW5nIHdpdGhvdXQgYSBmaXhlZCBpdGVyYXRpb24gY2FwIOKAlCBlaXRoZXIgdGhlXG4gICAgLy8gbWtkaXIgc3VjY2VlZHMsIHRoZSBkZWFkbGluZSBlbGFwc2VzLCBvciBhbiB1bmV4cGVjdGVkIGVycm9yIGlzXG4gICAgLy8gcmUtdGhyb3duLlxuICAgIHdoaWxlICh0cnVlKSB7XG4gICAgICB0cnkge1xuICAgICAgICBhd2FpdCBmcy5ta2Rpcihsb2NrUGF0aClcbiAgICAgICAgYXdhaXQgdGhpcy5fd3JpdGVBZHZpc29yeUxvY2tNZXRhZGF0YShsb2NrUGF0aClcblxuICAgICAgICByZXR1cm4gdHJ1ZVxuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgaWYgKC8qKlxuICAgICAgICAgICAgICogTmFycm93cyB0aGUgcnVudGltZSB2YWx1ZSB0byB0aGUgZG9jdW1lbnRlZCB0eXBlLlxuICAgICAgICAgICAgICBAdHlwZSB7Tm9kZUpTLkVycm5vRXhjZXB0aW9ufSAqLyAoZXJyb3IpPy5jb2RlICE9PSBcIkVFWElTVFwiKSB0aHJvdyBlcnJvclxuXG4gICAgICAgIGlmIChhd2FpdCB0aGlzLl9pc0Fkdmlzb3J5TG9ja1N0YWxlKGxvY2tQYXRoKSkge1xuICAgICAgICAgIGF3YWl0IGZzLnJtKGxvY2tQYXRoLCB7cmVjdXJzaXZlOiB0cnVlLCBmb3JjZTogdHJ1ZX0pXG4gICAgICAgICAgY29udGludWVcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChkZWFkbGluZSAhPT0gbnVsbCkge1xuICAgICAgICAgIGNvbnN0IHJlbWFpbmluZyA9IGRlYWRsaW5lIC0gRGF0ZS5ub3coKVxuXG4gICAgICAgICAgaWYgKHJlbWFpbmluZyA8PSAwKSByZXR1cm4gZmFsc2VcblxuICAgICAgICAgIGF3YWl0IHdhaXQoTWF0aC5taW4ocG9sbEludGVydmFsTXMsIHJlbWFpbmluZykpXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgYXdhaXQgd2FpdChwb2xsSW50ZXJ2YWxNcylcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBSdW5zIHRyeSBhY3F1aXJlIGFkdmlzb3J5IGxvY2sgZmlsZS5cbiAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWUgLSBMb2NrIG5hbWUuXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPGJvb2xlYW4+fVxuICAgKi9cbiAgYXN5bmMgX3RyeUFjcXVpcmVBZHZpc29yeUxvY2tGaWxlKG5hbWUpIHtcbiAgICBhd2FpdCB0aGlzLl9lbnN1cmVBZHZpc29yeUxvY2tEaXJlY3RvcnkoKVxuXG4gICAgY29uc3QgbG9ja1BhdGggPSB0aGlzLl9hZHZpc29yeUxvY2tQYXRoKG5hbWUpXG5cbiAgICB0cnkge1xuICAgICAgYXdhaXQgZnMubWtkaXIobG9ja1BhdGgpXG4gICAgICBhd2FpdCB0aGlzLl93cml0ZUFkdmlzb3J5TG9ja01ldGFkYXRhKGxvY2tQYXRoKVxuXG4gICAgICByZXR1cm4gdHJ1ZVxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBpZiAoLyoqXG4gICAgICAgICAgICogTmFycm93cyB0aGUgcnVudGltZSB2YWx1ZSB0byB0aGUgZG9jdW1lbnRlZCB0eXBlLlxuICAgICAgICAgICAgQHR5cGUge05vZGVKUy5FcnJub0V4Y2VwdGlvbn0gKi8gKGVycm9yKT8uY29kZSAhPT0gXCJFRVhJU1RcIikgdGhyb3cgZXJyb3JcblxuICAgICAgaWYgKGF3YWl0IHRoaXMuX2lzQWR2aXNvcnlMb2NrU3RhbGUobG9ja1BhdGgpKSB7XG4gICAgICAgIGF3YWl0IGZzLnJtKGxvY2tQYXRoLCB7cmVjdXJzaXZlOiB0cnVlLCBmb3JjZTogdHJ1ZX0pXG5cbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBhd2FpdCBmcy5ta2Rpcihsb2NrUGF0aClcbiAgICAgICAgICBhd2FpdCB0aGlzLl93cml0ZUFkdmlzb3J5TG9ja01ldGFkYXRhKGxvY2tQYXRoKVxuXG4gICAgICAgICAgcmV0dXJuIHRydWVcbiAgICAgICAgfSBjYXRjaCAocmV0cnlFcnJvcikge1xuICAgICAgICAgIGlmICgvKipcbiAgICAgICAgICAgICAgICogTmFycm93cyB0aGUgcnVudGltZSB2YWx1ZSB0byB0aGUgZG9jdW1lbnRlZCB0eXBlLlxuICAgICAgICAgICAgICAgIEB0eXBlIHtOb2RlSlMuRXJybm9FeGNlcHRpb259ICovIChyZXRyeUVycm9yKT8uY29kZSA9PT0gXCJFRVhJU1RcIikgcmV0dXJuIGZhbHNlXG5cbiAgICAgICAgICB0aHJvdyByZXRyeUVycm9yXG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGZhbHNlXG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFJ1bnMgcmVsZWFzZSBhZHZpc29yeSBsb2NrIGZpbGUuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lIC0gTG9jayBuYW1lLlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTx2b2lkPn1cbiAgICovXG4gIGFzeW5jIF9yZWxlYXNlQWR2aXNvcnlMb2NrRmlsZShuYW1lKSB7XG4gICAgY29uc3QgbG9ja1BhdGggPSB0aGlzLl9hZHZpc29yeUxvY2tQYXRoKG5hbWUpXG5cbiAgICB0cnkge1xuICAgICAgYXdhaXQgZnMucm0obG9ja1BhdGgsIHtyZWN1cnNpdmU6IHRydWUsIGZvcmNlOiB0cnVlfSlcbiAgICB9IGNhdGNoIHtcbiAgICAgIC8vIEJlc3QtZWZmb3J0IHJlbGVhc2U7IGluLXByb2Nlc3Mgc3RhdGUgaXMgc3RpbGwgYXV0aG9yaXRhdGl2ZSBhbmRcbiAgICAgIC8vIHN0YWxlLWxvY2sgY2xlYW51cCBvbiB0aGUgbmV4dCBhY3F1aXJlIHdpbGwgcmVtb3ZlIHRoZSBkaXJlY3RvcnlcbiAgICAgIC8vIGlmIGl0IHJlYWxseSBpcyBzdGlsbCBsaW5nZXJpbmcuXG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFJ1bnMgaXMgYWR2aXNvcnkgbG9jayBmaWxlIGhlbGQuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lIC0gTG9jayBuYW1lLlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxib29sZWFuPn1cbiAgICovXG4gIGFzeW5jIF9pc0Fkdmlzb3J5TG9ja0ZpbGVIZWxkKG5hbWUpIHtcbiAgICBjb25zdCBsb2NrUGF0aCA9IHRoaXMuX2Fkdmlzb3J5TG9ja1BhdGgobmFtZSlcblxuICAgIHRyeSB7XG4gICAgICBhd2FpdCBmcy5zdGF0KGxvY2tQYXRoKVxuICAgIH0gY2F0Y2gge1xuICAgICAgcmV0dXJuIGZhbHNlXG4gICAgfVxuXG4gICAgcmV0dXJuICFhd2FpdCB0aGlzLl9pc0Fkdmlzb3J5TG9ja1N0YWxlKGxvY2tQYXRoKVxuICB9XG5cbiAgLyoqXG4gICAqIEEgbG9jayBkaXJlY3RvcnkgaXMgY29uc2lkZXJlZCBzdGFsZSB3aGVuIGl0cyBvd25lciBtZXRhZGF0YSBuYW1lcyBhXG4gICAqIFBJRCBvbiB0aGlzIGhvc3QgdGhhdCBpcyBubyBsb25nZXIgcnVubmluZy4gQ3Jvc3MtaG9zdCBvd25lcnNoaXAgKGFcbiAgICogZGlmZmVyZW50IGBob3N0bmFtZWApIGlzIHRyZWF0ZWQgYXMgbGl2ZSBiZWNhdXNlIHdlIGNhbm5vdCByZWxpYWJseVxuICAgKiBwcm9iZSBhIFBJRCBvbiBhbm90aGVyIG1hY2hpbmU7IG9wZXJhdG9ycyBpbiB0aGF0IHNpdHVhdGlvbiBzaG91bGRcbiAgICogcmVtb3ZlIHN0YWxlIGxvY2sgZGlyZWN0b3JpZXMgYnkgaGFuZCBpZiB0aGV5IGxpbmdlci5cbiAgICogQHBhcmFtIHtzdHJpbmd9IGxvY2tQYXRoIC0gQWJzb2x1dGUgcGF0aCBvZiB0aGUgbG9jayBkaXJlY3RvcnkuXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPGJvb2xlYW4+fVxuICAgKi9cbiAgYXN5bmMgX2lzQWR2aXNvcnlMb2NrU3RhbGUobG9ja1BhdGgpIHtcbiAgICAvKipcbiAgICAgKiBEZWZpbmVzIHJhd093bmVyLlxuICAgICAgQHR5cGUge3N0cmluZ30gKi9cbiAgICBsZXQgcmF3T3duZXJcblxuICAgIHRyeSB7XG4gICAgICByYXdPd25lciA9IGF3YWl0IGZzLnJlYWRGaWxlKHBhdGguam9pbihsb2NrUGF0aCwgXCJvd25lci5qc29uXCIpLCBcInV0ZjhcIilcbiAgICB9IGNhdGNoIHtcbiAgICAgIC8vIE1pc3Npbmcgb3IgdW5yZWFkYWJsZSBtZXRhZGF0YSDigJQgdHJlYXQgYXMgc3RhbGUgc28gd2UgY2FuIHJlY2xhaW0uXG4gICAgICByZXR1cm4gdHJ1ZVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIERlZmluZXMgb3duZXIuXG4gICAgICBAdHlwZSB7e3BpZD86IG51bWJlciwgaG9zdG5hbWU/OiBzdHJpbmd9fSAqL1xuICAgIGxldCBvd25lclxuXG4gICAgdHJ5IHtcbiAgICAgIG93bmVyID0gSlNPTi5wYXJzZShyYXdPd25lcilcbiAgICB9IGNhdGNoIHtcbiAgICAgIHJldHVybiB0cnVlXG4gICAgfVxuXG4gICAgaWYgKCFvd25lciB8fCB0eXBlb2Ygb3duZXIucGlkICE9PSBcIm51bWJlclwiKSByZXR1cm4gdHJ1ZVxuICAgIGlmIChvd25lci5ob3N0bmFtZSAmJiBvd25lci5ob3N0bmFtZSAhPT0gb3MuaG9zdG5hbWUoKSkgcmV0dXJuIGZhbHNlXG5cbiAgICB0cnkge1xuICAgICAgLy8gYGtpbGwocGlkLCAwKWAgaXMgYSBuby1vcCBzaWduYWwgdGhhdCBmYWlscyB3aXRoIEVTUkNIIGlmIHRoZVxuICAgICAgLy8gcHJvY2VzcyBpcyBub3QgcnVubmluZzsgcGVybWlzc2lvbiBlcnJvcnMgc3RpbGwgaW5kaWNhdGUgdGhlXG4gICAgICAvLyBwcm9jZXNzIGV4aXN0cyBzbyB3ZSB0cmVhdCB0aG9zZSBhcyBcIm5vdCBzdGFsZVwiLlxuICAgICAgcHJvY2Vzcy5raWxsKG93bmVyLnBpZCwgMClcblxuICAgICAgcmV0dXJuIGZhbHNlXG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIHJldHVybiAvKiogTmFycm93cyB0aGUgcnVudGltZSB2YWx1ZSB0byB0aGUgZG9jdW1lbnRlZCB0eXBlLiBAdHlwZSB7Tm9kZUpTLkVycm5vRXhjZXB0aW9ufSAqLyAoZXJyb3IpPy5jb2RlID09PSBcIkVTUkNIXCJcbiAgICB9XG4gIH1cbn1cbiJdfQ==
@@ -1,6 +1,6 @@
1
1
  export default class VelociousDatabaseDriversSqliteNative extends Base {
2
2
  connection: any;
3
- connectArgs(): Record<string, unknown>;
3
+ connectArgs(): Record<string, any>;
4
4
  }
5
5
  import Base from "./base.js";
6
6
  //# sourceMappingURL=index.native.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.native.d.ts","sourceRoot":"","sources":["../../../../../src/database/drivers/sqlite/index.native.js"],"names":[],"mappings":"AAWA;IAwBI,gBAA8D;IAIhE,uCAaC;CAgBF;iBA3DgB,WAAW"}
1
+ {"version":3,"file":"index.native.d.ts","sourceRoot":"","sources":["../../../../../src/database/drivers/sqlite/index.native.js"],"names":[],"mappings":"AAWA;IAwBI,gBAA8D;IAIhE,mCAeC;CAiBF;iBA9DgB,WAAW"}
@@ -32,7 +32,9 @@ export default class VelociousDatabaseDriversSqliteNative extends Base {
32
32
  }
33
33
  connectArgs() {
34
34
  const args = this.getArgs();
35
- /** @type {Record<string, unknown>} */
35
+ /**
36
+ * Connect args.
37
+ @type {Record<string, ?>} */
36
38
  const connectArgs = {};
37
39
  const forward = ["database", "host", "password"];
38
40
  for (const forwardValue of forward) {
@@ -48,8 +50,9 @@ export default class VelociousDatabaseDriversSqliteNative extends Base {
48
50
  this.connection = undefined;
49
51
  }
50
52
  /**
53
+ * Runs query actual.
51
54
  * @param {string} sql - SQL string.
52
- * @returns {Promise<Record<string, any>[]>} - Query result rows.
55
+ * @returns {Promise<Record<string, ?>[]>} - Query result rows.
53
56
  */
54
57
  async _queryActual(sql) {
55
58
  if (!this.connection)
@@ -57,4 +60,4 @@ export default class VelociousDatabaseDriversSqliteNative extends Base {
57
60
  return await query(this.connection, sql);
58
61
  }
59
62
  }
60
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXgubmF0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2RhdGFiYXNlL2RyaXZlcnMvc3FsaXRlL2luZGV4Lm5hdGl2ZS5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsSUFBSSxFQUFDLE1BQU0sV0FBVyxDQUFBO0FBQzlCLE9BQU8sUUFBUSxNQUFNLGtDQUFrQyxDQUFBO0FBRXZELG1CQUFtQjtBQUNuQixPQUFPLEtBQUssTUFBTSxTQUFTLENBQUE7QUFFM0IsbUJBQW1CO0FBQ25CLE9BQU8sS0FBSyxNQUFNLE1BQU0sYUFBYSxDQUFBO0FBRXJDLE9BQU8sSUFBSSxNQUFNLFdBQVcsQ0FBQTtBQUU1QixNQUFNLENBQUMsT0FBTyxPQUFPLG9DQUFxQyxTQUFRLElBQUk7SUFDcEUsS0FBSyxDQUFDLE9BQU87UUFDWCxNQUFNLEVBQUMsU0FBUyxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUMsR0FBRyxRQUFRLEVBQUUsQ0FBQTtRQUVsRCxJQUFJLENBQUMsUUFBUTtZQUFFLE1BQU0sSUFBSSxLQUFLLENBQUMsK0RBQStELElBQUksQ0FBQyxTQUFTLENBQUMsRUFBQyxTQUFTLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBQyxDQUFDLEVBQUUsQ0FBQyxDQUFBO1FBRWhKLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQTtRQUUzQixJQUFJLENBQUMsSUFBSSxDQUFDLElBQUk7WUFBRSxNQUFNLElBQUksS0FBSyxDQUFDLGlDQUFpQyxDQUFDLENBQUE7UUFFbEUsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQTtRQUU5QixJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNmLElBQUksQ0FBQztnQkFDSCxNQUFNLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxZQUFZLENBQUMsQ0FBQTtZQUNoRCxDQUFDO1lBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztnQkFDZixJQUFJLEtBQUssWUFBWSxLQUFLLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsMkJBQTJCLENBQUMsRUFBRSxDQUFDO29CQUMvRSxtQkFBbUI7Z0JBQ3JCLENBQUM7cUJBQU0sQ0FBQztvQkFDTixNQUFNLEtBQUssQ0FBQTtnQkFDYixDQUFDO1lBQ0gsQ0FBQztRQUNILENBQUM7UUFFRCxJQUFJLENBQUMsVUFBVSxHQUFHLE1BQU0sTUFBTSxDQUFDLGlCQUFpQixDQUFDLFlBQVksQ0FBQyxDQUFBO1FBQzlELE1BQU0sSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFBO0lBQzlCLENBQUM7SUFFRCxXQUFXO1FBQ1QsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFBO1FBQzNCLHNDQUFzQztRQUN0QyxNQUFNLFdBQVcsR0FBRyxFQUFFLENBQUE7UUFDdEIsTUFBTSxPQUFPLEdBQUcsQ0FBQyxVQUFVLEVBQUUsTUFBTSxFQUFFLFVBQVUsQ0FBQyxDQUFBO1FBRWhELEtBQUssTUFBTSxZQUFZLElBQUksT0FBTyxFQUFFLENBQUM7WUFDbkMsSUFBSSxZQUFZLElBQUksSUFBSTtnQkFBRSxXQUFXLENBQUMsWUFBWSxDQUFDLEdBQUcsSUFBSSxDQUFDLElBQUksRUFBRSxZQUFZLENBQUMsQ0FBQTtRQUNoRixDQUFDO1FBRUQsSUFBSSxVQUFVLElBQUksSUFBSTtZQUFFLFdBQVcsQ0FBQyxNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUE7UUFFOUQsT0FBTyxXQUFXLENBQUE7SUFDcEIsQ0FBQztJQUVELEtBQUssQ0FBQyxLQUFLO1FBQ1QsTUFBTSxJQUFJLENBQUMsVUFBVSxDQUFDLFVBQVUsRUFBRSxDQUFBO1FBQ2xDLElBQUksQ0FBQyxVQUFVLEdBQUcsU0FBUyxDQUFBO0lBQzdCLENBQUM7SUFFRDs7O09BR0c7SUFDSCxLQUFLLENBQUMsWUFBWSxDQUFDLEdBQUc7UUFDcEIsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVO1lBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQyxtQkFBbUIsQ0FBQyxDQUFBO1FBRTFELE9BQU8sTUFBTSxLQUFLLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxHQUFHLENBQUMsQ0FBQTtJQUMxQyxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge2RpZ2d9IGZyb20gXCJkaWdnZXJpemVcIlxuaW1wb3J0IGVudlNlbnNlIGZyb20gXCJlbnYtc2Vuc2UvYnVpbGQvdXNlLWVudi1zZW5zZS5qc1wiXG5cbi8vIEB0cy1leHBlY3QtZXJyb3JcbmltcG9ydCBxdWVyeSBmcm9tIFwiLi9xdWVyeVwiXG5cbi8vIEB0cy1leHBlY3QtZXJyb3JcbmltcG9ydCAqIGFzIFNRTGl0ZSBmcm9tIFwiZXhwby1zcWxpdGVcIlxuXG5pbXBvcnQgQmFzZSBmcm9tIFwiLi9iYXNlLmpzXCJcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgVmVsb2Npb3VzRGF0YWJhc2VEcml2ZXJzU3FsaXRlTmF0aXZlIGV4dGVuZHMgQmFzZSB7XG4gIGFzeW5jIGNvbm5lY3QoKSB7XG4gICAgY29uc3Qge2lzQnJvd3NlciwgaXNOYXRpdmUsIGlzU2VydmVyfSA9IGVudlNlbnNlKClcblxuICAgIGlmICghaXNOYXRpdmUpIHRocm93IG5ldyBFcnJvcihgU1FMaXRlIG5hdGl2ZSBkcml2ZXIgcnVubmluZyBpbnNpZGUgbm9uLW5hdGl2ZSBlbnZpcm9ubWVudDogJHtKU09OLnN0cmluZ2lmeSh7aXNCcm93c2VyLCBpc05hdGl2ZSwgaXNTZXJ2ZXJ9KX1gKVxuXG4gICAgY29uc3QgYXJncyA9IHRoaXMuZ2V0QXJncygpXG5cbiAgICBpZiAoIWFyZ3MubmFtZSkgdGhyb3cgbmV3IEVycm9yKFwiTm8gbmFtZSBnaXZlbiBmb3IgU1FMaXRlIE5hdGl2ZVwiKVxuXG4gICAgY29uc3QgZGF0YWJhc2VOYW1lID0gYXJncy5uYW1lXG5cbiAgICBpZiAoYXJncy5yZXNldCkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgYXdhaXQgU1FMaXRlLmRlbGV0ZURhdGFiYXNlQXN5bmMoZGF0YWJhc2VOYW1lKVxuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgaWYgKGVycm9yIGluc3RhbmNlb2YgRXJyb3IgJiYgZXJyb3IubWVzc2FnZS5tYXRjaCgvRGF0YWJhc2UgJyguKyknIG5vdCBmb3VuZC8pKSB7XG4gICAgICAgICAgLy8gSWdub3JlIG5vdCBmb3VuZFxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRocm93IGVycm9yXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLmNvbm5lY3Rpb24gPSBhd2FpdCBTUUxpdGUub3BlbkRhdGFiYXNlQXN5bmMoZGF0YWJhc2VOYW1lKVxuICAgIGF3YWl0IHRoaXMucmVnaXN0ZXJWZXJzaW9uKClcbiAgfVxuXG4gIGNvbm5lY3RBcmdzKCkge1xuICAgIGNvbnN0IGFyZ3MgPSB0aGlzLmdldEFyZ3MoKVxuICAgIC8qKiBAdHlwZSB7UmVjb3JkPHN0cmluZywgdW5rbm93bj59ICovXG4gICAgY29uc3QgY29ubmVjdEFyZ3MgPSB7fVxuICAgIGNvbnN0IGZvcndhcmQgPSBbXCJkYXRhYmFzZVwiLCBcImhvc3RcIiwgXCJwYXNzd29yZFwiXVxuXG4gICAgZm9yIChjb25zdCBmb3J3YXJkVmFsdWUgb2YgZm9yd2FyZCkge1xuICAgICAgaWYgKGZvcndhcmRWYWx1ZSBpbiBhcmdzKSBjb25uZWN0QXJnc1tmb3J3YXJkVmFsdWVdID0gZGlnZyhhcmdzLCBmb3J3YXJkVmFsdWUpXG4gICAgfVxuXG4gICAgaWYgKFwidXNlcm5hbWVcIiBpbiBhcmdzKSBjb25uZWN0QXJnc1tcInVzZXJcIl0gPSBhcmdzW1widXNlcm5hbWVcIl1cblxuICAgIHJldHVybiBjb25uZWN0QXJnc1xuICB9XG5cbiAgYXN5bmMgY2xvc2UoKSB7XG4gICAgYXdhaXQgdGhpcy5jb25uZWN0aW9uLmNsb3NlQXN5bmMoKVxuICAgIHRoaXMuY29ubmVjdGlvbiA9IHVuZGVmaW5lZFxuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBzcWwgLSBTUUwgc3RyaW5nLlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxSZWNvcmQ8c3RyaW5nLCBhbnk+W10+fSAtIFF1ZXJ5IHJlc3VsdCByb3dzLlxuICAgKi9cbiAgYXN5bmMgX3F1ZXJ5QWN0dWFsKHNxbCkge1xuICAgIGlmICghdGhpcy5jb25uZWN0aW9uKSB0aHJvdyBuZXcgRXJyb3IoXCJOb3QgY29ubmVjdGVkIHlldFwiKVxuXG4gICAgcmV0dXJuIGF3YWl0IHF1ZXJ5KHRoaXMuY29ubmVjdGlvbiwgc3FsKVxuICB9XG59XG4iXX0=
63
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXgubmF0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2RhdGFiYXNlL2RyaXZlcnMvc3FsaXRlL2luZGV4Lm5hdGl2ZS5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsSUFBSSxFQUFDLE1BQU0sV0FBVyxDQUFBO0FBQzlCLE9BQU8sUUFBUSxNQUFNLGtDQUFrQyxDQUFBO0FBRXZELG1CQUFtQjtBQUNuQixPQUFPLEtBQUssTUFBTSxTQUFTLENBQUE7QUFFM0IsbUJBQW1CO0FBQ25CLE9BQU8sS0FBSyxNQUFNLE1BQU0sYUFBYSxDQUFBO0FBRXJDLE9BQU8sSUFBSSxNQUFNLFdBQVcsQ0FBQTtBQUU1QixNQUFNLENBQUMsT0FBTyxPQUFPLG9DQUFxQyxTQUFRLElBQUk7SUFDcEUsS0FBSyxDQUFDLE9BQU87UUFDWCxNQUFNLEVBQUMsU0FBUyxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUMsR0FBRyxRQUFRLEVBQUUsQ0FBQTtRQUVsRCxJQUFJLENBQUMsUUFBUTtZQUFFLE1BQU0sSUFBSSxLQUFLLENBQUMsK0RBQStELElBQUksQ0FBQyxTQUFTLENBQUMsRUFBQyxTQUFTLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBQyxDQUFDLEVBQUUsQ0FBQyxDQUFBO1FBRWhKLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQTtRQUUzQixJQUFJLENBQUMsSUFBSSxDQUFDLElBQUk7WUFBRSxNQUFNLElBQUksS0FBSyxDQUFDLGlDQUFpQyxDQUFDLENBQUE7UUFFbEUsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQTtRQUU5QixJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNmLElBQUksQ0FBQztnQkFDSCxNQUFNLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxZQUFZLENBQUMsQ0FBQTtZQUNoRCxDQUFDO1lBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztnQkFDZixJQUFJLEtBQUssWUFBWSxLQUFLLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsMkJBQTJCLENBQUMsRUFBRSxDQUFDO29CQUMvRSxtQkFBbUI7Z0JBQ3JCLENBQUM7cUJBQU0sQ0FBQztvQkFDTixNQUFNLEtBQUssQ0FBQTtnQkFDYixDQUFDO1lBQ0gsQ0FBQztRQUNILENBQUM7UUFFRCxJQUFJLENBQUMsVUFBVSxHQUFHLE1BQU0sTUFBTSxDQUFDLGlCQUFpQixDQUFDLFlBQVksQ0FBQyxDQUFBO1FBQzlELE1BQU0sSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFBO0lBQzlCLENBQUM7SUFFRCxXQUFXO1FBQ1QsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFBO1FBQzNCOztzQ0FFOEI7UUFDOUIsTUFBTSxXQUFXLEdBQUcsRUFBRSxDQUFBO1FBQ3RCLE1BQU0sT0FBTyxHQUFHLENBQUMsVUFBVSxFQUFFLE1BQU0sRUFBRSxVQUFVLENBQUMsQ0FBQTtRQUVoRCxLQUFLLE1BQU0sWUFBWSxJQUFJLE9BQU8sRUFBRSxDQUFDO1lBQ25DLElBQUksWUFBWSxJQUFJLElBQUk7Z0JBQUUsV0FBVyxDQUFDLFlBQVksQ0FBQyxHQUFHLElBQUksQ0FBQyxJQUFJLEVBQUUsWUFBWSxDQUFDLENBQUE7UUFDaEYsQ0FBQztRQUVELElBQUksVUFBVSxJQUFJLElBQUk7WUFBRSxXQUFXLENBQUMsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFBO1FBRTlELE9BQU8sV0FBVyxDQUFBO0lBQ3BCLENBQUM7SUFFRCxLQUFLLENBQUMsS0FBSztRQUNULE1BQU0sSUFBSSxDQUFDLFVBQVUsQ0FBQyxVQUFVLEVBQUUsQ0FBQTtRQUNsQyxJQUFJLENBQUMsVUFBVSxHQUFHLFNBQVMsQ0FBQTtJQUM3QixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILEtBQUssQ0FBQyxZQUFZLENBQUMsR0FBRztRQUNwQixJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVU7WUFBRSxNQUFNLElBQUksS0FBSyxDQUFDLG1CQUFtQixDQUFDLENBQUE7UUFFMUQsT0FBTyxNQUFNLEtBQUssQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLEdBQUcsQ0FBQyxDQUFBO0lBQzFDLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7ZGlnZ30gZnJvbSBcImRpZ2dlcml6ZVwiXG5pbXBvcnQgZW52U2Vuc2UgZnJvbSBcImVudi1zZW5zZS9idWlsZC91c2UtZW52LXNlbnNlLmpzXCJcblxuLy8gQHRzLWV4cGVjdC1lcnJvclxuaW1wb3J0IHF1ZXJ5IGZyb20gXCIuL3F1ZXJ5XCJcblxuLy8gQHRzLWV4cGVjdC1lcnJvclxuaW1wb3J0ICogYXMgU1FMaXRlIGZyb20gXCJleHBvLXNxbGl0ZVwiXG5cbmltcG9ydCBCYXNlIGZyb20gXCIuL2Jhc2UuanNcIlxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBWZWxvY2lvdXNEYXRhYmFzZURyaXZlcnNTcWxpdGVOYXRpdmUgZXh0ZW5kcyBCYXNlIHtcbiAgYXN5bmMgY29ubmVjdCgpIHtcbiAgICBjb25zdCB7aXNCcm93c2VyLCBpc05hdGl2ZSwgaXNTZXJ2ZXJ9ID0gZW52U2Vuc2UoKVxuXG4gICAgaWYgKCFpc05hdGl2ZSkgdGhyb3cgbmV3IEVycm9yKGBTUUxpdGUgbmF0aXZlIGRyaXZlciBydW5uaW5nIGluc2lkZSBub24tbmF0aXZlIGVudmlyb25tZW50OiAke0pTT04uc3RyaW5naWZ5KHtpc0Jyb3dzZXIsIGlzTmF0aXZlLCBpc1NlcnZlcn0pfWApXG5cbiAgICBjb25zdCBhcmdzID0gdGhpcy5nZXRBcmdzKClcblxuICAgIGlmICghYXJncy5uYW1lKSB0aHJvdyBuZXcgRXJyb3IoXCJObyBuYW1lIGdpdmVuIGZvciBTUUxpdGUgTmF0aXZlXCIpXG5cbiAgICBjb25zdCBkYXRhYmFzZU5hbWUgPSBhcmdzLm5hbWVcblxuICAgIGlmIChhcmdzLnJlc2V0KSB7XG4gICAgICB0cnkge1xuICAgICAgICBhd2FpdCBTUUxpdGUuZGVsZXRlRGF0YWJhc2VBc3luYyhkYXRhYmFzZU5hbWUpXG4gICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICBpZiAoZXJyb3IgaW5zdGFuY2VvZiBFcnJvciAmJiBlcnJvci5tZXNzYWdlLm1hdGNoKC9EYXRhYmFzZSAnKC4rKScgbm90IGZvdW5kLykpIHtcbiAgICAgICAgICAvLyBJZ25vcmUgbm90IGZvdW5kXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhyb3cgZXJyb3JcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMuY29ubmVjdGlvbiA9IGF3YWl0IFNRTGl0ZS5vcGVuRGF0YWJhc2VBc3luYyhkYXRhYmFzZU5hbWUpXG4gICAgYXdhaXQgdGhpcy5yZWdpc3RlclZlcnNpb24oKVxuICB9XG5cbiAgY29ubmVjdEFyZ3MoKSB7XG4gICAgY29uc3QgYXJncyA9IHRoaXMuZ2V0QXJncygpXG4gICAgLyoqXG4gICAgICogQ29ubmVjdCBhcmdzLlxuICAgICAgQHR5cGUge1JlY29yZDxzdHJpbmcsID8+fSAqL1xuICAgIGNvbnN0IGNvbm5lY3RBcmdzID0ge31cbiAgICBjb25zdCBmb3J3YXJkID0gW1wiZGF0YWJhc2VcIiwgXCJob3N0XCIsIFwicGFzc3dvcmRcIl1cblxuICAgIGZvciAoY29uc3QgZm9yd2FyZFZhbHVlIG9mIGZvcndhcmQpIHtcbiAgICAgIGlmIChmb3J3YXJkVmFsdWUgaW4gYXJncykgY29ubmVjdEFyZ3NbZm9yd2FyZFZhbHVlXSA9IGRpZ2coYXJncywgZm9yd2FyZFZhbHVlKVxuICAgIH1cblxuICAgIGlmIChcInVzZXJuYW1lXCIgaW4gYXJncykgY29ubmVjdEFyZ3NbXCJ1c2VyXCJdID0gYXJnc1tcInVzZXJuYW1lXCJdXG5cbiAgICByZXR1cm4gY29ubmVjdEFyZ3NcbiAgfVxuXG4gIGFzeW5jIGNsb3NlKCkge1xuICAgIGF3YWl0IHRoaXMuY29ubmVjdGlvbi5jbG9zZUFzeW5jKClcbiAgICB0aGlzLmNvbm5lY3Rpb24gPSB1bmRlZmluZWRcbiAgfVxuXG4gIC8qKlxuICAgKiBSdW5zIHF1ZXJ5IGFjdHVhbC5cbiAgICogQHBhcmFtIHtzdHJpbmd9IHNxbCAtIFNRTCBzdHJpbmcuXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPFJlY29yZDxzdHJpbmcsID8+W10+fSAtIFF1ZXJ5IHJlc3VsdCByb3dzLlxuICAgKi9cbiAgYXN5bmMgX3F1ZXJ5QWN0dWFsKHNxbCkge1xuICAgIGlmICghdGhpcy5jb25uZWN0aW9uKSB0aHJvdyBuZXcgRXJyb3IoXCJOb3QgY29ubmVjdGVkIHlldFwiKVxuXG4gICAgcmV0dXJuIGF3YWl0IHF1ZXJ5KHRoaXMuY29ubmVjdGlvbiwgc3FsKVxuICB9XG59XG4iXX0=
@@ -1,20 +1,32 @@
1
1
  /**
2
- * @typedef {{query: (sql: string) => Promise<Record<string, unknown>[]>, close: () => Promise<void>}} SqliteWebConnection
2
+ * VelociousDatabaseDriversSqliteWeb class.
3
+ * @typedef {{query: (sql: string) => Promise<Record<string, ?>[]>, close: () => Promise<void>}} SqliteWebConnection
3
4
  */
4
5
  export default class VelociousDatabaseDriversSqliteWeb extends Base {
5
- /** @type {BetterLocalStorage | undefined} */
6
+ /**
7
+ * Better local storage.
8
+ @type {BetterLocalStorage | undefined} */
6
9
  betterLocalStorage: BetterLocalStorage | undefined;
7
- /** @type {ConnectionSqlJs | undefined} */
10
+ /**
11
+ * Connection.
12
+ @type {ConnectionSqlJs | undefined} */
8
13
  _connection: ConnectionSqlJs | undefined;
9
14
  /**
15
+ * Runs sql js locate file.
10
16
  * @returns {(file: string) => string} - locateFile callback for sql.js.
11
17
  */
12
18
  sqlJsLocateFile(): (file: string) => string;
13
19
  args: import("../../../configuration-types.js").DatabaseConfigurationType | undefined;
14
- /** @returns {ConnectionSqlJs | SqliteWebConnection} - The connection. */
20
+ /**
21
+ * Runs get connection.
22
+ * @returns {ConnectionSqlJs | SqliteWebConnection} - The connection.
23
+ */
15
24
  getConnection(): ConnectionSqlJs | SqliteWebConnection;
16
25
  localStorageName(): string;
17
26
  }
27
+ /**
28
+ * VelociousDatabaseDriversSqliteWeb class.
29
+ */
18
30
  export type SqliteWebConnection = {
19
31
  query: (sql: string) => Promise<Record<string, unknown>[]>;
20
32
  close: () => Promise<void>;
@@ -1 +1 @@
1
- {"version":3,"file":"index.web.d.ts","sourceRoot":"","sources":["../../../../../src/database/drivers/sqlite/index.web.js"],"names":[],"mappings":"AAQA;;GAEG;AAEH;IACE,6CAA6C;IAC7C,oBADW,kBAAkB,GAAG,SAAS,CACX;IAC9B,0CAA0C;IAC1C,aADW,eAAe,GAAG,SAAS,CACf;IAEvB;;OAEG;IACH,mBAFa,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAUpC;IAGC,sFAA0B;IAsB5B,0EAA0E;IAC1E,iBADc,eAAe,GAAG,mBAAmB,CAQlD;IAED,2BAMC;CAkBF;kCA/EY;IAAC,KAAK,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC;IAAC,KAAK,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;CAAC;iBAHpF,WAAW;+BAJG,qBAAqB;4BACxB,wBAAwB"}
1
+ {"version":3,"file":"index.web.d.ts","sourceRoot":"","sources":["../../../../../src/database/drivers/sqlite/index.web.js"],"names":[],"mappings":"AAQA;;;GAGG;AAEH;IACE;;+CAE2C;IAC3C,oBADS,kBAAkB,GAAG,SAAS,CACT;IAC9B;;4CAEwC;IACxC,aADS,eAAe,GAAG,SAAS,CACb;IAEvB;;;OAGG;IACH,mBAFa,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAUpC;IAGC,sFAA0B;IAsB5B;;;OAGG;IACH,iBAFa,eAAe,GAAG,mBAAmB,CASjD;IAED,2BAMC;CAmBF;;;;kCAxFY;IAAC,KAAK,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAC,CAAC,EAAE,CAAC,CAAC;IAAC,KAAK,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;CAAC;iBAJ9E,WAAW;+BAJG,qBAAqB;4BACxB,wBAAwB"}
@@ -4,14 +4,20 @@ import ConnectionSqlJs from "./connection-sql-js.js";
4
4
  import initSqlJs from "sql.js";
5
5
  import Base from "./base.js";
6
6
  /**
7
- * @typedef {{query: (sql: string) => Promise<Record<string, unknown>[]>, close: () => Promise<void>}} SqliteWebConnection
7
+ * VelociousDatabaseDriversSqliteWeb class.
8
+ * @typedef {{query: (sql: string) => Promise<Record<string, ?>[]>, close: () => Promise<void>}} SqliteWebConnection
8
9
  */
9
10
  export default class VelociousDatabaseDriversSqliteWeb extends Base {
10
- /** @type {BetterLocalStorage | undefined} */
11
+ /**
12
+ * Better local storage.
13
+ @type {BetterLocalStorage | undefined} */
11
14
  betterLocalStorage = undefined;
12
- /** @type {ConnectionSqlJs | undefined} */
15
+ /**
16
+ * Connection.
17
+ @type {ConnectionSqlJs | undefined} */
13
18
  _connection = undefined;
14
19
  /**
20
+ * Runs sql js locate file.
15
21
  * @returns {(file: string) => string} - locateFile callback for sql.js.
16
22
  */
17
23
  sqlJsLocateFile() {
@@ -37,10 +43,13 @@ export default class VelociousDatabaseDriversSqliteWeb extends Base {
37
43
  async close() {
38
44
  await this.getConnection().close();
39
45
  }
40
- /** @returns {ConnectionSqlJs | SqliteWebConnection} - The connection. */
46
+ /**
47
+ * Runs get connection.
48
+ * @returns {ConnectionSqlJs | SqliteWebConnection} - The connection.
49
+ */
41
50
  getConnection() {
42
51
  if (this.args?.getConnection) {
43
- return /** @type {SqliteWebConnection} */ (this.args.getConnection());
52
+ return /** Narrows the runtime value to the documented type. @type {SqliteWebConnection} */ (this.args.getConnection());
44
53
  }
45
54
  else {
46
55
  if (!this._connection)
@@ -55,8 +64,9 @@ export default class VelociousDatabaseDriversSqliteWeb extends Base {
55
64
  return `VelociousDatabaseDriversSqliteWeb---${this.args?.name}`;
56
65
  }
57
66
  /**
67
+ * Runs query actual.
58
68
  * @param {string} sql - SQL string.
59
- * @returns {Promise<Record<string, any>[]>} - Resolves with the query actual.
69
+ * @returns {Promise<Record<string, ?>[]>} - Resolves with the query actual.
60
70
  */
61
71
  async _queryActual(sql) {
62
72
  const result = await this.getConnection().query(sql);
@@ -68,4 +78,4 @@ export default class VelociousDatabaseDriversSqliteWeb extends Base {
68
78
  return result;
69
79
  }
70
80
  }
71
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXgud2ViLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2RhdGFiYXNlL2RyaXZlcnMvc3FsaXRlL2luZGV4LndlYi5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxZQUFZO0FBRVosT0FBTyxrQkFBa0IsTUFBTSxxQkFBcUIsQ0FBQTtBQUNwRCxPQUFPLGVBQWUsTUFBTSx3QkFBd0IsQ0FBQTtBQUNwRCxPQUFPLFNBQVMsTUFBTSxRQUFRLENBQUE7QUFFOUIsT0FBTyxJQUFJLE1BQU0sV0FBVyxDQUFBO0FBRTVCOztHQUVHO0FBRUgsTUFBTSxDQUFDLE9BQU8sT0FBTyxpQ0FBa0MsU0FBUSxJQUFJO0lBQ2pFLDZDQUE2QztJQUM3QyxrQkFBa0IsR0FBRyxTQUFTLENBQUE7SUFDOUIsMENBQTBDO0lBQzFDLFdBQVcsR0FBRyxTQUFTLENBQUE7SUFFdkI7O09BRUc7SUFDSCxlQUFlO1FBQ2IsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLFVBQVUsQ0FBQTtRQUU1QyxJQUFJLE9BQU8sVUFBVSxLQUFLLFVBQVUsRUFBRSxDQUFDO1lBQ3JDLE9BQU8sVUFBVSxDQUFBO1FBQ25CLENBQUM7UUFFRCxPQUFPLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQywyQkFBMkIsSUFBSSxFQUFFLENBQUE7SUFDcEQsQ0FBQztJQUVELEtBQUssQ0FBQyxPQUFPO1FBQ1gsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUE7UUFFMUIsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDN0IsSUFBSSxDQUFDLGtCQUFrQixLQUFLLElBQUksa0JBQWtCLEVBQUUsQ0FBQTtZQUVwRCxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7Z0JBQ3BCLE1BQU0sSUFBSSxDQUFDLGtCQUFrQixDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxDQUFBO1lBQy9ELENBQUM7WUFFRCxNQUFNLEdBQUcsR0FBRyxNQUFNLFNBQVMsQ0FBQyxFQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsZUFBZSxFQUFFLEVBQUMsQ0FBQyxDQUFBO1lBRWpFLE1BQU0sZUFBZSxHQUFHLE1BQU0sSUFBSSxDQUFDLGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxDQUFBO1lBQ2xGLE1BQU0sZUFBZSxHQUFHLElBQUksZUFBZSxDQUFDLElBQUksRUFBRSxJQUFJLEdBQUcsQ0FBQyxRQUFRLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQTtZQUVwRixJQUFJLENBQUMsV0FBVyxHQUFHLGVBQWUsQ0FBQTtRQUNwQyxDQUFDO0lBQ0gsQ0FBQztJQUVELEtBQUssQ0FBQyxLQUFLO1FBQ1QsTUFBTSxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUMsS0FBSyxFQUFFLENBQUE7SUFDcEMsQ0FBQztJQUVELDBFQUEwRTtJQUMxRSxhQUFhO1FBQ1gsSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFFLGFBQWEsRUFBRSxDQUFDO1lBQzdCLE9BQU8sa0NBQWtDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDLENBQUE7UUFDdkUsQ0FBQzthQUFNLENBQUM7WUFDTixJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVc7Z0JBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQyxnREFBZ0QsQ0FBQyxDQUFBO1lBQ3hGLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQTtRQUN6QixDQUFDO0lBQ0gsQ0FBQztJQUVELGdCQUFnQjtRQUNkLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxDQUFDO1lBQ3JCLE1BQU0sSUFBSSxLQUFLLENBQUMsb0RBQW9ELENBQUMsQ0FBQTtRQUN2RSxDQUFDO1FBRUQsT0FBTyx1Q0FBdUMsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsQ0FBQTtJQUNqRSxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsS0FBSyxDQUFDLFlBQVksQ0FBQyxHQUFHO1FBQ3BCLE1BQU0sTUFBTSxHQUFHLE1BQU0sSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQTtRQUVwRCxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDO1lBQzNCLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQTtZQUN2QyxNQUFNLGNBQWMsR0FBRyxVQUFVLEVBQUUsV0FBVyxFQUFFLElBQUksSUFBSSxtQkFBbUIsQ0FBQTtZQUUzRSxNQUFNLElBQUksS0FBSyxDQUFDLHlCQUF5QixjQUFjLGlDQUFpQyxPQUFPLE1BQU0sRUFBRSxDQUFDLENBQUE7UUFDMUcsQ0FBQztRQUVELE9BQU8sTUFBTSxDQUFBO0lBQ2YsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQHRzLWNoZWNrXG5cbmltcG9ydCBCZXR0ZXJMb2NhbFN0b3JhZ2UgZnJvbSBcImJldHRlci1sb2NhbHN0b3JhZ2VcIlxuaW1wb3J0IENvbm5lY3Rpb25TcWxKcyBmcm9tIFwiLi9jb25uZWN0aW9uLXNxbC1qcy5qc1wiXG5pbXBvcnQgaW5pdFNxbEpzIGZyb20gXCJzcWwuanNcIlxuXG5pbXBvcnQgQmFzZSBmcm9tIFwiLi9iYXNlLmpzXCJcblxuLyoqXG4gKiBAdHlwZWRlZiB7e3F1ZXJ5OiAoc3FsOiBzdHJpbmcpID0+IFByb21pc2U8UmVjb3JkPHN0cmluZywgdW5rbm93bj5bXT4sIGNsb3NlOiAoKSA9PiBQcm9taXNlPHZvaWQ+fX0gU3FsaXRlV2ViQ29ubmVjdGlvblxuICovXG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFZlbG9jaW91c0RhdGFiYXNlRHJpdmVyc1NxbGl0ZVdlYiBleHRlbmRzIEJhc2Uge1xuICAvKiogQHR5cGUge0JldHRlckxvY2FsU3RvcmFnZSB8IHVuZGVmaW5lZH0gKi9cbiAgYmV0dGVyTG9jYWxTdG9yYWdlID0gdW5kZWZpbmVkXG4gIC8qKiBAdHlwZSB7Q29ubmVjdGlvblNxbEpzIHwgdW5kZWZpbmVkfSAqL1xuICBfY29ubmVjdGlvbiA9IHVuZGVmaW5lZFxuXG4gIC8qKlxuICAgKiBAcmV0dXJucyB7KGZpbGU6IHN0cmluZykgPT4gc3RyaW5nfSAtIGxvY2F0ZUZpbGUgY2FsbGJhY2sgZm9yIHNxbC5qcy5cbiAgICovXG4gIHNxbEpzTG9jYXRlRmlsZSgpIHtcbiAgICBjb25zdCBsb2NhdGVGaWxlID0gdGhpcy5nZXRBcmdzKCkubG9jYXRlRmlsZVxuXG4gICAgaWYgKHR5cGVvZiBsb2NhdGVGaWxlID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgIHJldHVybiBsb2NhdGVGaWxlXG4gICAgfVxuXG4gICAgcmV0dXJuIChmaWxlKSA9PiBgaHR0cHM6Ly9zcWwuanMub3JnL2Rpc3QvJHtmaWxlfWBcbiAgfVxuXG4gIGFzeW5jIGNvbm5lY3QoKSB7XG4gICAgdGhpcy5hcmdzID0gdGhpcy5nZXRBcmdzKClcblxuICAgIGlmICghdGhpcy5hcmdzLmdldENvbm5lY3Rpb24pIHtcbiAgICAgIHRoaXMuYmV0dGVyTG9jYWxTdG9yYWdlIHx8PSBuZXcgQmV0dGVyTG9jYWxTdG9yYWdlKClcblxuICAgICAgaWYgKHRoaXMuYXJncy5yZXNldCkge1xuICAgICAgICBhd2FpdCB0aGlzLmJldHRlckxvY2FsU3RvcmFnZS5kZWxldGUodGhpcy5sb2NhbFN0b3JhZ2VOYW1lKCkpXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IFNRTCA9IGF3YWl0IGluaXRTcWxKcyh7bG9jYXRlRmlsZTogdGhpcy5zcWxKc0xvY2F0ZUZpbGUoKX0pXG5cbiAgICAgIGNvbnN0IGRhdGFiYXNlQ29udGVudCA9IGF3YWl0IHRoaXMuYmV0dGVyTG9jYWxTdG9yYWdlLmdldCh0aGlzLmxvY2FsU3RvcmFnZU5hbWUoKSlcbiAgICAgIGNvbnN0IGNvbm5lY3Rpb25TcWxKcyA9IG5ldyBDb25uZWN0aW9uU3FsSnModGhpcywgbmV3IFNRTC5EYXRhYmFzZShkYXRhYmFzZUNvbnRlbnQpKVxuXG4gICAgICB0aGlzLl9jb25uZWN0aW9uID0gY29ubmVjdGlvblNxbEpzXG4gICAgfVxuICB9XG5cbiAgYXN5bmMgY2xvc2UoKSB7XG4gICAgYXdhaXQgdGhpcy5nZXRDb25uZWN0aW9uKCkuY2xvc2UoKVxuICB9XG5cbiAgLyoqIEByZXR1cm5zIHtDb25uZWN0aW9uU3FsSnMgfCBTcWxpdGVXZWJDb25uZWN0aW9ufSAtIFRoZSBjb25uZWN0aW9uLiAgKi9cbiAgZ2V0Q29ubmVjdGlvbigpIHtcbiAgICBpZiAodGhpcy5hcmdzPy5nZXRDb25uZWN0aW9uKSB7XG4gICAgICByZXR1cm4gLyoqIEB0eXBlIHtTcWxpdGVXZWJDb25uZWN0aW9ufSAqLyAodGhpcy5hcmdzLmdldENvbm5lY3Rpb24oKSlcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKCF0aGlzLl9jb25uZWN0aW9uKSB0aHJvdyBuZXcgRXJyb3IoXCJTUUxpdGUgd2ViIGNvbm5lY3Rpb24gaGFzIG5vdCBiZWVuIGluaXRpYWxpemVkXCIpXG4gICAgICByZXR1cm4gdGhpcy5fY29ubmVjdGlvblxuICAgIH1cbiAgfVxuXG4gIGxvY2FsU3RvcmFnZU5hbWUoKSB7XG4gICAgaWYgKCF0aGlzLmFyZ3M/Lm5hbWUpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIk5vIG5hbWUgZ2l2ZW4gaW4gYXJndW1lbnRzIGZvciBTUUxpdGUgV2ViIGRhdGFiYXNlXCIpXG4gICAgfVxuXG4gICAgcmV0dXJuIGBWZWxvY2lvdXNEYXRhYmFzZURyaXZlcnNTcWxpdGVXZWItLS0ke3RoaXMuYXJncz8ubmFtZX1gXG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHtzdHJpbmd9IHNxbCAtIFNRTCBzdHJpbmcuXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPFJlY29yZDxzdHJpbmcsIGFueT5bXT59IC0gUmVzb2x2ZXMgd2l0aCB0aGUgcXVlcnkgYWN0dWFsLlxuICAgKi9cbiAgYXN5bmMgX3F1ZXJ5QWN0dWFsKHNxbCkge1xuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHRoaXMuZ2V0Q29ubmVjdGlvbigpLnF1ZXJ5KHNxbClcblxuICAgIGlmICghQXJyYXkuaXNBcnJheShyZXN1bHQpKSB7XG4gICAgICBjb25zdCBjb25uZWN0aW9uID0gdGhpcy5nZXRDb25uZWN0aW9uKClcbiAgICAgIGNvbnN0IGNvbm5lY3Rpb25OYW1lID0gY29ubmVjdGlvbj8uY29uc3RydWN0b3I/Lm5hbWUgfHwgXCJVbmtub3duQ29ubmVjdGlvblwiXG5cbiAgICAgIHRocm93IG5ldyBFcnJvcihgU3FsaXRlIHdlYiBjb25uZWN0aW9uICR7Y29ubmVjdGlvbk5hbWV9IHJldHVybmVkIGEgbm9uLWFycmF5IHJlc3VsdDogJHt0eXBlb2YgcmVzdWx0fWApXG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc3VsdFxuICB9XG59XG4iXX0=
81
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXgud2ViLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2RhdGFiYXNlL2RyaXZlcnMvc3FsaXRlL2luZGV4LndlYi5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxZQUFZO0FBRVosT0FBTyxrQkFBa0IsTUFBTSxxQkFBcUIsQ0FBQTtBQUNwRCxPQUFPLGVBQWUsTUFBTSx3QkFBd0IsQ0FBQTtBQUNwRCxPQUFPLFNBQVMsTUFBTSxRQUFRLENBQUE7QUFFOUIsT0FBTyxJQUFJLE1BQU0sV0FBVyxDQUFBO0FBRTVCOzs7R0FHRztBQUVILE1BQU0sQ0FBQyxPQUFPLE9BQU8saUNBQWtDLFNBQVEsSUFBSTtJQUNqRTs7K0NBRTJDO0lBQzNDLGtCQUFrQixHQUFHLFNBQVMsQ0FBQTtJQUM5Qjs7NENBRXdDO0lBQ3hDLFdBQVcsR0FBRyxTQUFTLENBQUE7SUFFdkI7OztPQUdHO0lBQ0gsZUFBZTtRQUNiLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxVQUFVLENBQUE7UUFFNUMsSUFBSSxPQUFPLFVBQVUsS0FBSyxVQUFVLEVBQUUsQ0FBQztZQUNyQyxPQUFPLFVBQVUsQ0FBQTtRQUNuQixDQUFDO1FBRUQsT0FBTyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsMkJBQTJCLElBQUksRUFBRSxDQUFBO0lBQ3BELENBQUM7SUFFRCxLQUFLLENBQUMsT0FBTztRQUNYLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFBO1FBRTFCLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1lBQzdCLElBQUksQ0FBQyxrQkFBa0IsS0FBSyxJQUFJLGtCQUFrQixFQUFFLENBQUE7WUFFcEQsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO2dCQUNwQixNQUFNLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUMsQ0FBQTtZQUMvRCxDQUFDO1lBRUQsTUFBTSxHQUFHLEdBQUcsTUFBTSxTQUFTLENBQUMsRUFBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLGVBQWUsRUFBRSxFQUFDLENBQUMsQ0FBQTtZQUVqRSxNQUFNLGVBQWUsR0FBRyxNQUFNLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUMsQ0FBQTtZQUNsRixNQUFNLGVBQWUsR0FBRyxJQUFJLGVBQWUsQ0FBQyxJQUFJLEVBQUUsSUFBSSxHQUFHLENBQUMsUUFBUSxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUE7WUFFcEYsSUFBSSxDQUFDLFdBQVcsR0FBRyxlQUFlLENBQUE7UUFDcEMsQ0FBQztJQUNILENBQUM7SUFFRCxLQUFLLENBQUMsS0FBSztRQUNULE1BQU0sSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDLEtBQUssRUFBRSxDQUFBO0lBQ3BDLENBQUM7SUFFRDs7O09BR0c7SUFDSCxhQUFhO1FBQ1gsSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFFLGFBQWEsRUFBRSxDQUFDO1lBQzdCLE9BQU8sb0ZBQW9GLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDLENBQUE7UUFDekgsQ0FBQzthQUFNLENBQUM7WUFDTixJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVc7Z0JBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQyxnREFBZ0QsQ0FBQyxDQUFBO1lBQ3hGLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQTtRQUN6QixDQUFDO0lBQ0gsQ0FBQztJQUVELGdCQUFnQjtRQUNkLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxDQUFDO1lBQ3JCLE1BQU0sSUFBSSxLQUFLLENBQUMsb0RBQW9ELENBQUMsQ0FBQTtRQUN2RSxDQUFDO1FBRUQsT0FBTyx1Q0FBdUMsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsQ0FBQTtJQUNqRSxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILEtBQUssQ0FBQyxZQUFZLENBQUMsR0FBRztRQUNwQixNQUFNLE1BQU0sR0FBRyxNQUFNLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUE7UUFFcEQsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztZQUMzQixNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUE7WUFDdkMsTUFBTSxjQUFjLEdBQUcsVUFBVSxFQUFFLFdBQVcsRUFBRSxJQUFJLElBQUksbUJBQW1CLENBQUE7WUFFM0UsTUFBTSxJQUFJLEtBQUssQ0FBQyx5QkFBeUIsY0FBYyxpQ0FBaUMsT0FBTyxNQUFNLEVBQUUsQ0FBQyxDQUFBO1FBQzFHLENBQUM7UUFFRCxPQUFPLE1BQU0sQ0FBQTtJQUNmLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbIi8vIEB0cy1jaGVja1xuXG5pbXBvcnQgQmV0dGVyTG9jYWxTdG9yYWdlIGZyb20gXCJiZXR0ZXItbG9jYWxzdG9yYWdlXCJcbmltcG9ydCBDb25uZWN0aW9uU3FsSnMgZnJvbSBcIi4vY29ubmVjdGlvbi1zcWwtanMuanNcIlxuaW1wb3J0IGluaXRTcWxKcyBmcm9tIFwic3FsLmpzXCJcblxuaW1wb3J0IEJhc2UgZnJvbSBcIi4vYmFzZS5qc1wiXG5cbi8qKlxuICogVmVsb2Npb3VzRGF0YWJhc2VEcml2ZXJzU3FsaXRlV2ViIGNsYXNzLlxuICogQHR5cGVkZWYge3txdWVyeTogKHNxbDogc3RyaW5nKSA9PiBQcm9taXNlPFJlY29yZDxzdHJpbmcsID8+W10+LCBjbG9zZTogKCkgPT4gUHJvbWlzZTx2b2lkPn19IFNxbGl0ZVdlYkNvbm5lY3Rpb25cbiAqL1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBWZWxvY2lvdXNEYXRhYmFzZURyaXZlcnNTcWxpdGVXZWIgZXh0ZW5kcyBCYXNlIHtcbiAgLyoqXG4gICAqIEJldHRlciBsb2NhbCBzdG9yYWdlLlxuICAgIEB0eXBlIHtCZXR0ZXJMb2NhbFN0b3JhZ2UgfCB1bmRlZmluZWR9ICovXG4gIGJldHRlckxvY2FsU3RvcmFnZSA9IHVuZGVmaW5lZFxuICAvKipcbiAgICogQ29ubmVjdGlvbi5cbiAgICBAdHlwZSB7Q29ubmVjdGlvblNxbEpzIHwgdW5kZWZpbmVkfSAqL1xuICBfY29ubmVjdGlvbiA9IHVuZGVmaW5lZFxuXG4gIC8qKlxuICAgKiBSdW5zIHNxbCBqcyBsb2NhdGUgZmlsZS5cbiAgICogQHJldHVybnMgeyhmaWxlOiBzdHJpbmcpID0+IHN0cmluZ30gLSBsb2NhdGVGaWxlIGNhbGxiYWNrIGZvciBzcWwuanMuXG4gICAqL1xuICBzcWxKc0xvY2F0ZUZpbGUoKSB7XG4gICAgY29uc3QgbG9jYXRlRmlsZSA9IHRoaXMuZ2V0QXJncygpLmxvY2F0ZUZpbGVcblxuICAgIGlmICh0eXBlb2YgbG9jYXRlRmlsZSA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICByZXR1cm4gbG9jYXRlRmlsZVxuICAgIH1cblxuICAgIHJldHVybiAoZmlsZSkgPT4gYGh0dHBzOi8vc3FsLmpzLm9yZy9kaXN0LyR7ZmlsZX1gXG4gIH1cblxuICBhc3luYyBjb25uZWN0KCkge1xuICAgIHRoaXMuYXJncyA9IHRoaXMuZ2V0QXJncygpXG5cbiAgICBpZiAoIXRoaXMuYXJncy5nZXRDb25uZWN0aW9uKSB7XG4gICAgICB0aGlzLmJldHRlckxvY2FsU3RvcmFnZSB8fD0gbmV3IEJldHRlckxvY2FsU3RvcmFnZSgpXG5cbiAgICAgIGlmICh0aGlzLmFyZ3MucmVzZXQpIHtcbiAgICAgICAgYXdhaXQgdGhpcy5iZXR0ZXJMb2NhbFN0b3JhZ2UuZGVsZXRlKHRoaXMubG9jYWxTdG9yYWdlTmFtZSgpKVxuICAgICAgfVxuXG4gICAgICBjb25zdCBTUUwgPSBhd2FpdCBpbml0U3FsSnMoe2xvY2F0ZUZpbGU6IHRoaXMuc3FsSnNMb2NhdGVGaWxlKCl9KVxuXG4gICAgICBjb25zdCBkYXRhYmFzZUNvbnRlbnQgPSBhd2FpdCB0aGlzLmJldHRlckxvY2FsU3RvcmFnZS5nZXQodGhpcy5sb2NhbFN0b3JhZ2VOYW1lKCkpXG4gICAgICBjb25zdCBjb25uZWN0aW9uU3FsSnMgPSBuZXcgQ29ubmVjdGlvblNxbEpzKHRoaXMsIG5ldyBTUUwuRGF0YWJhc2UoZGF0YWJhc2VDb250ZW50KSlcblxuICAgICAgdGhpcy5fY29ubmVjdGlvbiA9IGNvbm5lY3Rpb25TcWxKc1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIGNsb3NlKCkge1xuICAgIGF3YWl0IHRoaXMuZ2V0Q29ubmVjdGlvbigpLmNsb3NlKClcbiAgfVxuXG4gIC8qKlxuICAgKiBSdW5zIGdldCBjb25uZWN0aW9uLlxuICAgKiBAcmV0dXJucyB7Q29ubmVjdGlvblNxbEpzIHwgU3FsaXRlV2ViQ29ubmVjdGlvbn0gLSBUaGUgY29ubmVjdGlvbi5cbiAgICovXG4gIGdldENvbm5lY3Rpb24oKSB7XG4gICAgaWYgKHRoaXMuYXJncz8uZ2V0Q29ubmVjdGlvbikge1xuICAgICAgcmV0dXJuIC8qKiBOYXJyb3dzIHRoZSBydW50aW1lIHZhbHVlIHRvIHRoZSBkb2N1bWVudGVkIHR5cGUuIEB0eXBlIHtTcWxpdGVXZWJDb25uZWN0aW9ufSAqLyAodGhpcy5hcmdzLmdldENvbm5lY3Rpb24oKSlcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKCF0aGlzLl9jb25uZWN0aW9uKSB0aHJvdyBuZXcgRXJyb3IoXCJTUUxpdGUgd2ViIGNvbm5lY3Rpb24gaGFzIG5vdCBiZWVuIGluaXRpYWxpemVkXCIpXG4gICAgICByZXR1cm4gdGhpcy5fY29ubmVjdGlvblxuICAgIH1cbiAgfVxuXG4gIGxvY2FsU3RvcmFnZU5hbWUoKSB7XG4gICAgaWYgKCF0aGlzLmFyZ3M/Lm5hbWUpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIk5vIG5hbWUgZ2l2ZW4gaW4gYXJndW1lbnRzIGZvciBTUUxpdGUgV2ViIGRhdGFiYXNlXCIpXG4gICAgfVxuXG4gICAgcmV0dXJuIGBWZWxvY2lvdXNEYXRhYmFzZURyaXZlcnNTcWxpdGVXZWItLS0ke3RoaXMuYXJncz8ubmFtZX1gXG4gIH1cblxuICAvKipcbiAgICogUnVucyBxdWVyeSBhY3R1YWwuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBzcWwgLSBTUUwgc3RyaW5nLlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxSZWNvcmQ8c3RyaW5nLCA/PltdPn0gLSBSZXNvbHZlcyB3aXRoIHRoZSBxdWVyeSBhY3R1YWwuXG4gICAqL1xuICBhc3luYyBfcXVlcnlBY3R1YWwoc3FsKSB7XG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgdGhpcy5nZXRDb25uZWN0aW9uKCkucXVlcnkoc3FsKVxuXG4gICAgaWYgKCFBcnJheS5pc0FycmF5KHJlc3VsdCkpIHtcbiAgICAgIGNvbnN0IGNvbm5lY3Rpb24gPSB0aGlzLmdldENvbm5lY3Rpb24oKVxuICAgICAgY29uc3QgY29ubmVjdGlvbk5hbWUgPSBjb25uZWN0aW9uPy5jb25zdHJ1Y3Rvcj8ubmFtZSB8fCBcIlVua25vd25Db25uZWN0aW9uXCJcblxuICAgICAgdGhyb3cgbmV3IEVycm9yKGBTcWxpdGUgd2ViIGNvbm5lY3Rpb24gJHtjb25uZWN0aW9uTmFtZX0gcmV0dXJuZWQgYSBub24tYXJyYXkgcmVzdWx0OiAke3R5cGVvZiByZXN1bHR9YClcbiAgICB9XG5cbiAgICByZXR1cm4gcmVzdWx0XG4gIH1cbn1cbiJdfQ==
@@ -1,9 +1,11 @@
1
1
  export default class VelociousDatabaseDriversSqliteOptions extends QueryParserOptions {
2
2
  /**
3
+ * Runs constructor.
3
4
  * @param {import("../base.js").default} driver - Database driver instance.
4
5
  */
5
6
  constructor(driver: import("../base.js").default);
6
7
  /**
8
+ * Runs quote.
7
9
  * @param {string} string - String.
8
10
  * @returns {number | string} - The quote.
9
11
  */