velocious 1.0.263 → 1.0.265

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 (389) hide show
  1. package/README.md +14 -0
  2. package/build/bin/velocious.js +7 -2
  3. package/build/src/application.d.ts +6 -6
  4. package/build/src/application.d.ts.map +1 -1
  5. package/build/src/authorization/ability.d.ts +4 -4
  6. package/build/src/authorization/ability.d.ts.map +1 -1
  7. package/build/src/authorization/base-resource.d.ts +4 -4
  8. package/build/src/authorization/base-resource.d.ts.map +1 -1
  9. package/build/src/background-jobs/client.d.ts +2 -2
  10. package/build/src/background-jobs/client.d.ts.map +1 -1
  11. package/build/src/background-jobs/job-runner.d.ts +2 -2
  12. package/build/src/background-jobs/job-runner.d.ts.map +1 -1
  13. package/build/src/background-jobs/job-runner.js +5 -3
  14. package/build/src/background-jobs/job.d.ts +1 -1
  15. package/build/src/background-jobs/job.d.ts.map +1 -1
  16. package/build/src/background-jobs/json-socket.d.ts +1 -1
  17. package/build/src/background-jobs/json-socket.d.ts.map +1 -1
  18. package/build/src/background-jobs/main.d.ts +34 -12
  19. package/build/src/background-jobs/main.d.ts.map +1 -1
  20. package/build/src/background-jobs/main.js +36 -6
  21. package/build/src/background-jobs/scheduler.d.ts +21 -0
  22. package/build/src/background-jobs/scheduler.d.ts.map +1 -1
  23. package/build/src/background-jobs/scheduler.js +3 -2
  24. package/build/src/background-jobs/status-reporter.d.ts +14 -10
  25. package/build/src/background-jobs/status-reporter.d.ts.map +1 -1
  26. package/build/src/background-jobs/status-reporter.js +11 -6
  27. package/build/src/background-jobs/store.d.ts +73 -117
  28. package/build/src/background-jobs/store.d.ts.map +1 -1
  29. package/build/src/background-jobs/store.js +62 -24
  30. package/build/src/background-jobs/types.d.ts +175 -2
  31. package/build/src/background-jobs/types.d.ts.map +1 -1
  32. package/build/src/background-jobs/types.js +44 -1
  33. package/build/src/background-jobs/worker.d.ts +21 -17
  34. package/build/src/background-jobs/worker.d.ts.map +1 -1
  35. package/build/src/background-jobs/worker.js +30 -9
  36. package/build/src/cli/base-command.d.ts +5 -5
  37. package/build/src/cli/base-command.d.ts.map +1 -1
  38. package/build/src/cli/commands/db/create.d.ts.map +1 -1
  39. package/build/src/cli/commands/db/create.js +11 -3
  40. package/build/src/cli/commands/db/schema/load.d.ts +7 -0
  41. package/build/src/cli/commands/db/schema/load.d.ts.map +1 -0
  42. package/build/src/cli/commands/db/schema/load.js +9 -0
  43. package/build/src/cli/index.d.ts +25 -13
  44. package/build/src/cli/index.d.ts.map +1 -1
  45. package/build/src/cli/index.js +62 -4
  46. package/build/src/cli/use-browser-cli.d.ts +2 -2
  47. package/build/src/cli/use-browser-cli.d.ts.map +1 -1
  48. package/build/src/cli/use-browser-cli.js +4 -4
  49. package/build/src/configuration-types.d.ts +160 -136
  50. package/build/src/configuration-types.d.ts.map +1 -1
  51. package/build/src/configuration.d.ts +32 -31
  52. package/build/src/configuration.d.ts.map +1 -1
  53. package/build/src/configuration.js +6 -5
  54. package/build/src/controller.d.ts +14 -14
  55. package/build/src/controller.d.ts.map +1 -1
  56. package/build/src/controller.js +19 -8
  57. package/build/src/database/drivers/base-columns-index.d.ts +1 -1
  58. package/build/src/database/drivers/base-columns-index.d.ts.map +1 -1
  59. package/build/src/database/drivers/base.d.ts +15 -14
  60. package/build/src/database/drivers/base.d.ts.map +1 -1
  61. package/build/src/database/drivers/base.js +6 -3
  62. package/build/src/database/drivers/mssql/column.d.ts +1 -0
  63. package/build/src/database/drivers/mssql/column.d.ts.map +1 -1
  64. package/build/src/database/drivers/mssql/connect-connection.d.ts +1 -1
  65. package/build/src/database/drivers/mssql/connect-connection.d.ts.map +1 -1
  66. package/build/src/database/drivers/mssql/index.d.ts +4 -3
  67. package/build/src/database/drivers/mssql/index.d.ts.map +1 -1
  68. package/build/src/database/drivers/mssql/index.js +8 -12
  69. package/build/src/database/drivers/mssql/table.d.ts +1 -0
  70. package/build/src/database/drivers/mssql/table.d.ts.map +1 -1
  71. package/build/src/database/drivers/mysql/column.d.ts +1 -0
  72. package/build/src/database/drivers/mysql/column.d.ts.map +1 -1
  73. package/build/src/database/drivers/mysql/index.d.ts +3 -2
  74. package/build/src/database/drivers/mysql/index.d.ts.map +1 -1
  75. package/build/src/database/drivers/mysql/index.js +3 -1
  76. package/build/src/database/drivers/mysql/query.d.ts +1 -1
  77. package/build/src/database/drivers/mysql/query.d.ts.map +1 -1
  78. package/build/src/database/drivers/mysql/query.js +7 -5
  79. package/build/src/database/drivers/mysql/table.d.ts +1 -0
  80. package/build/src/database/drivers/mysql/table.d.ts.map +1 -1
  81. package/build/src/database/drivers/pgsql/column.d.ts +1 -0
  82. package/build/src/database/drivers/pgsql/column.d.ts.map +1 -1
  83. package/build/src/database/drivers/pgsql/index.d.ts +3 -2
  84. package/build/src/database/drivers/pgsql/index.d.ts.map +1 -1
  85. package/build/src/database/drivers/pgsql/index.js +3 -1
  86. package/build/src/database/drivers/pgsql/table.d.ts +1 -0
  87. package/build/src/database/drivers/pgsql/table.d.ts.map +1 -1
  88. package/build/src/database/drivers/sqlite/base.d.ts +9 -6
  89. package/build/src/database/drivers/sqlite/base.d.ts.map +1 -1
  90. package/build/src/database/drivers/sqlite/base.js +22 -6
  91. package/build/src/database/drivers/sqlite/column.d.ts +1 -0
  92. package/build/src/database/drivers/sqlite/column.d.ts.map +1 -1
  93. package/build/src/database/drivers/sqlite/connection-sql-js.d.ts +2 -2
  94. package/build/src/database/drivers/sqlite/connection-sql-js.d.ts.map +1 -1
  95. package/build/src/database/drivers/sqlite/index.native.d.ts +1 -2
  96. package/build/src/database/drivers/sqlite/index.native.d.ts.map +1 -1
  97. package/build/src/database/drivers/sqlite/index.native.js +8 -3
  98. package/build/src/database/drivers/sqlite/index.web.d.ts +3 -2
  99. package/build/src/database/drivers/sqlite/index.web.d.ts.map +1 -1
  100. package/build/src/database/drivers/sqlite/index.web.js +5 -1
  101. package/build/src/database/drivers/sqlite/query.web.d.ts +1 -1
  102. package/build/src/database/drivers/sqlite/query.web.d.ts.map +1 -1
  103. package/build/src/database/drivers/sqlite/table.d.ts +2 -1
  104. package/build/src/database/drivers/sqlite/table.d.ts.map +1 -1
  105. package/build/src/database/drivers/sqlite/table.js +3 -2
  106. package/build/src/database/migration/index.d.ts +10 -10
  107. package/build/src/database/migration/index.d.ts.map +1 -1
  108. package/build/src/database/migrator/types.d.ts +1 -1
  109. package/build/src/database/migrator/types.d.ts.map +1 -1
  110. package/build/src/database/migrator.d.ts +1 -1
  111. package/build/src/database/migrator.d.ts.map +1 -1
  112. package/build/src/database/pool/async-tracked-multi-connection.d.ts +1 -0
  113. package/build/src/database/pool/async-tracked-multi-connection.d.ts.map +1 -1
  114. package/build/src/database/pool/async-tracked-multi-connection.js +12 -8
  115. package/build/src/database/pool/base-methods-forward.d.ts.map +1 -1
  116. package/build/src/database/pool/base-methods-forward.js +6 -4
  117. package/build/src/database/pool/base.d.ts +2 -1
  118. package/build/src/database/pool/base.d.ts.map +1 -1
  119. package/build/src/database/pool/base.js +6 -4
  120. package/build/src/database/pool/single-multi-use.d.ts +1 -1
  121. package/build/src/database/pool/single-multi-use.d.ts.map +1 -1
  122. package/build/src/database/query/alter-table-base.d.ts.map +1 -1
  123. package/build/src/database/query/alter-table-base.js +8 -4
  124. package/build/src/database/query/base.d.ts +1 -1
  125. package/build/src/database/query/base.d.ts.map +1 -1
  126. package/build/src/database/query/create-database-base.d.ts +2 -2
  127. package/build/src/database/query/create-database-base.d.ts.map +1 -1
  128. package/build/src/database/query/create-index-base.d.ts +6 -6
  129. package/build/src/database/query/create-index-base.d.ts.map +1 -1
  130. package/build/src/database/query/create-table-base.d.ts +3 -3
  131. package/build/src/database/query/create-table-base.d.ts.map +1 -1
  132. package/build/src/database/query/create-table-base.js +8 -4
  133. package/build/src/database/query/drop-table-base.d.ts +4 -4
  134. package/build/src/database/query/drop-table-base.d.ts.map +1 -1
  135. package/build/src/database/query/index.d.ts +16 -16
  136. package/build/src/database/query/index.d.ts.map +1 -1
  137. package/build/src/database/query/index.js +4 -4
  138. package/build/src/database/query/insert-base.d.ts +10 -10
  139. package/build/src/database/query/insert-base.d.ts.map +1 -1
  140. package/build/src/database/query/join-base.d.ts +1 -1
  141. package/build/src/database/query/join-base.d.ts.map +1 -1
  142. package/build/src/database/query/join-object.d.ts +1 -1
  143. package/build/src/database/query/join-object.d.ts.map +1 -1
  144. package/build/src/database/query/join-object.js +4 -1
  145. package/build/src/database/query/model-class-query.d.ts +11 -11
  146. package/build/src/database/query/model-class-query.d.ts.map +1 -1
  147. package/build/src/database/query/model-class-query.js +29 -18
  148. package/build/src/database/query/select-base.d.ts +1 -1
  149. package/build/src/database/query/select-base.d.ts.map +1 -1
  150. package/build/src/database/query/where-base.d.ts +1 -1
  151. package/build/src/database/query/where-base.d.ts.map +1 -1
  152. package/build/src/database/query/where-hash.d.ts +1 -0
  153. package/build/src/database/query/where-hash.d.ts.map +1 -1
  154. package/build/src/database/query/where-model-class-hash.d.ts +2 -1
  155. package/build/src/database/query/where-model-class-hash.d.ts.map +1 -1
  156. package/build/src/database/query/where-model-class-hash.js +15 -7
  157. package/build/src/database/query/where-not.d.ts +1 -0
  158. package/build/src/database/query/where-not.d.ts.map +1 -1
  159. package/build/src/database/query/where-plain.d.ts +1 -0
  160. package/build/src/database/query/where-plain.d.ts.map +1 -1
  161. package/build/src/database/query-parser/base-query-parser.d.ts +1 -1
  162. package/build/src/database/query-parser/base-query-parser.d.ts.map +1 -1
  163. package/build/src/database/record/attachments/download.d.ts +3 -3
  164. package/build/src/database/record/attachments/download.d.ts.map +1 -1
  165. package/build/src/database/record/attachments/handle.d.ts +2 -1
  166. package/build/src/database/record/attachments/handle.d.ts.map +1 -1
  167. package/build/src/database/record/attachments/handle.js +3 -2
  168. package/build/src/database/record/attachments/normalize-input.d.ts +4 -4
  169. package/build/src/database/record/attachments/normalize-input.d.ts.map +1 -1
  170. package/build/src/database/record/attachments/storage-drivers/filesystem.d.ts +1 -1
  171. package/build/src/database/record/attachments/storage-drivers/filesystem.d.ts.map +1 -1
  172. package/build/src/database/record/attachments/storage-drivers/native.d.ts +3 -3
  173. package/build/src/database/record/attachments/storage-drivers/native.d.ts.map +1 -1
  174. package/build/src/database/record/attachments/storage-drivers/s3.d.ts +2 -2
  175. package/build/src/database/record/attachments/storage-drivers/s3.d.ts.map +1 -1
  176. package/build/src/database/record/attachments/storage-drivers/s3.js +11 -3
  177. package/build/src/database/record/attachments/store.d.ts +3 -3
  178. package/build/src/database/record/attachments/store.d.ts.map +1 -1
  179. package/build/src/database/record/attachments/store.js +3 -2
  180. package/build/src/database/record/index.d.ts +19 -19
  181. package/build/src/database/record/index.d.ts.map +1 -1
  182. package/build/src/database/record/index.js +53 -35
  183. package/build/src/database/record/instance-relationships/base.d.ts +10 -8
  184. package/build/src/database/record/instance-relationships/base.d.ts.map +1 -1
  185. package/build/src/database/record/instance-relationships/base.js +9 -5
  186. package/build/src/database/record/instance-relationships/belongs-to.d.ts +4 -4
  187. package/build/src/database/record/instance-relationships/belongs-to.d.ts.map +1 -1
  188. package/build/src/database/record/instance-relationships/belongs-to.js +9 -2
  189. package/build/src/database/record/instance-relationships/has-many.d.ts +4 -9
  190. package/build/src/database/record/instance-relationships/has-many.d.ts.map +1 -1
  191. package/build/src/database/record/instance-relationships/has-many.js +12 -8
  192. package/build/src/database/record/instance-relationships/has-one.d.ts +7 -14
  193. package/build/src/database/record/instance-relationships/has-one.d.ts.map +1 -1
  194. package/build/src/database/record/instance-relationships/has-one.js +11 -5
  195. package/build/src/database/record/relationships/base.d.ts +18 -18
  196. package/build/src/database/record/relationships/base.d.ts.map +1 -1
  197. package/build/src/database/record/relationships/base.js +3 -3
  198. package/build/src/database/record/relationships/belongs-to.d.ts +1 -1
  199. package/build/src/database/record/relationships/belongs-to.d.ts.map +1 -1
  200. package/build/src/database/record/relationships/has-many.d.ts +1 -1
  201. package/build/src/database/record/relationships/has-many.d.ts.map +1 -1
  202. package/build/src/database/record/relationships/has-one.d.ts +1 -1
  203. package/build/src/database/record/relationships/has-one.d.ts.map +1 -1
  204. package/build/src/database/table-data/index.d.ts +1 -1
  205. package/build/src/database/table-data/index.d.ts.map +1 -1
  206. package/build/src/database/table-data/table-column.d.ts +12 -12
  207. package/build/src/database/table-data/table-column.d.ts.map +1 -1
  208. package/build/src/database/table-data/table-foreign-key.d.ts +4 -4
  209. package/build/src/database/table-data/table-foreign-key.d.ts.map +1 -1
  210. package/build/src/database/table-data/table-foreign-key.js +2 -2
  211. package/build/src/database/table-data/table-index.d.ts +3 -3
  212. package/build/src/database/table-data/table-index.d.ts.map +1 -1
  213. package/build/src/database/table-data/table-reference.d.ts +1 -1
  214. package/build/src/database/table-data/table-reference.d.ts.map +1 -1
  215. package/build/src/environment-handlers/base.d.ts +10 -5
  216. package/build/src/environment-handlers/base.d.ts.map +1 -1
  217. package/build/src/environment-handlers/base.js +10 -2
  218. package/build/src/environment-handlers/browser.d.ts +5 -26
  219. package/build/src/environment-handlers/browser.d.ts.map +1 -1
  220. package/build/src/environment-handlers/browser.js +14 -4
  221. package/build/src/environment-handlers/node/cli/commands/console.js +3 -3
  222. package/build/src/environment-handlers/node/cli/commands/db/schema/load.d.ts +24 -0
  223. package/build/src/environment-handlers/node/cli/commands/db/schema/load.d.ts.map +1 -0
  224. package/build/src/environment-handlers/node/cli/commands/db/schema/load.js +57 -0
  225. package/build/src/environment-handlers/node/cli/commands/db/seed.d.ts.map +1 -1
  226. package/build/src/environment-handlers/node/cli/commands/db/seed.js +4 -2
  227. package/build/src/environment-handlers/node/cli/commands/destroy/migration.d.ts.map +1 -1
  228. package/build/src/environment-handlers/node/cli/commands/destroy/migration.js +4 -2
  229. package/build/src/environment-handlers/node/cli/commands/generate/base-models.d.ts.map +1 -1
  230. package/build/src/environment-handlers/node/cli/commands/generate/base-models.js +9 -4
  231. package/build/src/environment-handlers/node/cli/commands/generate/frontend-models.d.ts +1 -1
  232. package/build/src/environment-handlers/node/cli/commands/generate/frontend-models.d.ts.map +1 -1
  233. package/build/src/environment-handlers/node/cli/commands/generate/frontend-models.js +9 -4
  234. package/build/src/environment-handlers/node/cli/commands/generate/migration.d.ts.map +1 -1
  235. package/build/src/environment-handlers/node/cli/commands/generate/migration.js +4 -2
  236. package/build/src/environment-handlers/node/cli/commands/generate/model.d.ts.map +1 -1
  237. package/build/src/environment-handlers/node/cli/commands/generate/model.js +4 -2
  238. package/build/src/environment-handlers/node/cli/commands/routes.d.ts.map +1 -1
  239. package/build/src/environment-handlers/node/cli/commands/routes.js +3 -1
  240. package/build/src/environment-handlers/node/cli/commands/run-script.d.ts.map +1 -1
  241. package/build/src/environment-handlers/node/cli/commands/run-script.js +5 -3
  242. package/build/src/environment-handlers/node/cli/commands/runner.d.ts.map +1 -1
  243. package/build/src/environment-handlers/node/cli/commands/runner.js +5 -3
  244. package/build/src/environment-handlers/node/cli/commands/server.d.ts +3 -3
  245. package/build/src/environment-handlers/node/cli/commands/server.d.ts.map +1 -1
  246. package/build/src/environment-handlers/node/cli/commands/server.js +2 -2
  247. package/build/src/environment-handlers/node/cli/commands/test.js +2 -2
  248. package/build/src/environment-handlers/node.d.ts +9 -1
  249. package/build/src/environment-handlers/node.d.ts.map +1 -1
  250. package/build/src/environment-handlers/node.js +10 -2
  251. package/build/src/error-logger.d.ts.map +1 -1
  252. package/build/src/error-logger.js +1 -5
  253. package/build/src/frontend-model-controller.d.ts +17 -17
  254. package/build/src/frontend-model-controller.d.ts.map +1 -1
  255. package/build/src/frontend-model-controller.js +31 -12
  256. package/build/src/frontend-model-resource/base-resource.d.ts +14 -12
  257. package/build/src/frontend-model-resource/base-resource.d.ts.map +1 -1
  258. package/build/src/frontend-model-resource/base-resource.js +16 -4
  259. package/build/src/frontend-models/base.d.ts +27 -20
  260. package/build/src/frontend-models/base.d.ts.map +1 -1
  261. package/build/src/frontend-models/base.js +31 -12
  262. package/build/src/frontend-models/query.d.ts +29 -8
  263. package/build/src/frontend-models/query.d.ts.map +1 -1
  264. package/build/src/frontend-models/query.js +18 -4
  265. package/build/src/http-client/index.d.ts +11 -11
  266. package/build/src/http-client/index.d.ts.map +1 -1
  267. package/build/src/http-client/request.d.ts +2 -2
  268. package/build/src/http-client/request.d.ts.map +1 -1
  269. package/build/src/http-client/response.d.ts +1 -1
  270. package/build/src/http-client/response.d.ts.map +1 -1
  271. package/build/src/http-client/websocket-client.d.ts +26 -12
  272. package/build/src/http-client/websocket-client.d.ts.map +1 -1
  273. package/build/src/http-client/websocket-client.js +26 -12
  274. package/build/src/http-server/client/index.d.ts +4 -4
  275. package/build/src/http-server/client/index.d.ts.map +1 -1
  276. package/build/src/http-server/client/index.js +17 -11
  277. package/build/src/http-server/client/params-to-object.d.ts.map +1 -1
  278. package/build/src/http-server/client/params-to-object.js +14 -11
  279. package/build/src/http-server/client/request-buffer/form-data-part.d.ts +15 -7
  280. package/build/src/http-server/client/request-buffer/form-data-part.d.ts.map +1 -1
  281. package/build/src/http-server/client/request-buffer/form-data-part.js +9 -1
  282. package/build/src/http-server/client/request-buffer/index.d.ts +15 -14
  283. package/build/src/http-server/client/request-buffer/index.d.ts.map +1 -1
  284. package/build/src/http-server/client/request-buffer/index.js +19 -7
  285. package/build/src/http-server/client/request-parser.d.ts +1 -1
  286. package/build/src/http-server/client/request-parser.d.ts.map +1 -1
  287. package/build/src/http-server/client/request-parser.js +2 -2
  288. package/build/src/http-server/client/request-runner.d.ts.map +1 -1
  289. package/build/src/http-server/client/request-runner.js +4 -2
  290. package/build/src/http-server/client/request.d.ts +3 -3
  291. package/build/src/http-server/client/request.d.ts.map +1 -1
  292. package/build/src/http-server/client/response.d.ts +4 -4
  293. package/build/src/http-server/client/response.d.ts.map +1 -1
  294. package/build/src/http-server/client/uploaded-file/uploaded-file.d.ts +2 -2
  295. package/build/src/http-server/client/uploaded-file/uploaded-file.d.ts.map +1 -1
  296. package/build/src/http-server/client/websocket-request.d.ts +22 -16
  297. package/build/src/http-server/client/websocket-request.d.ts.map +1 -1
  298. package/build/src/http-server/client/websocket-request.js +13 -5
  299. package/build/src/http-server/client/websocket-session.d.ts +52 -17
  300. package/build/src/http-server/client/websocket-session.d.ts.map +1 -1
  301. package/build/src/http-server/client/websocket-session.js +59 -10
  302. package/build/src/http-server/cookie.d.ts +17 -17
  303. package/build/src/http-server/cookie.d.ts.map +1 -1
  304. package/build/src/http-server/index.d.ts +4 -4
  305. package/build/src/http-server/index.d.ts.map +1 -1
  306. package/build/src/http-server/index.js +4 -4
  307. package/build/src/http-server/server-client.d.ts +3 -3
  308. package/build/src/http-server/server-client.d.ts.map +1 -1
  309. package/build/src/http-server/server-client.js +4 -4
  310. package/build/src/http-server/websocket-channel.d.ts +3 -3
  311. package/build/src/http-server/websocket-channel.d.ts.map +1 -1
  312. package/build/src/http-server/websocket-events-host.d.ts.map +1 -1
  313. package/build/src/http-server/websocket-events-host.js +6 -3
  314. package/build/src/http-server/websocket-events.d.ts +2 -2
  315. package/build/src/http-server/websocket-events.d.ts.map +1 -1
  316. package/build/src/http-server/websocket-events.js +3 -1
  317. package/build/src/http-server/worker-handler/index.d.ts +7 -7
  318. package/build/src/http-server/worker-handler/index.d.ts.map +1 -1
  319. package/build/src/http-server/worker-handler/index.js +16 -7
  320. package/build/src/http-server/worker-handler/worker-thread.d.ts +9 -9
  321. package/build/src/http-server/worker-handler/worker-thread.d.ts.map +1 -1
  322. package/build/src/http-server/worker-handler/worker-thread.js +23 -13
  323. package/build/src/logger/console-logger.d.ts +2 -2
  324. package/build/src/logger/console-logger.d.ts.map +1 -1
  325. package/build/src/logger/file-logger.d.ts +2 -2
  326. package/build/src/logger/file-logger.d.ts.map +1 -1
  327. package/build/src/logger/outputs/array-output.d.ts +1 -1
  328. package/build/src/logger/outputs/array-output.d.ts.map +1 -1
  329. package/build/src/logger/outputs/file-output.d.ts +8 -5
  330. package/build/src/logger/outputs/file-output.d.ts.map +1 -1
  331. package/build/src/logger/outputs/file-output.js +4 -1
  332. package/build/src/logger.d.ts +7 -7
  333. package/build/src/logger.d.ts.map +1 -1
  334. package/build/src/mailer/backends/smtp.d.ts +3 -3
  335. package/build/src/mailer/backends/smtp.d.ts.map +1 -1
  336. package/build/src/mailer/backends/smtp.js +3 -3
  337. package/build/src/mailer/base.d.ts +7 -7
  338. package/build/src/mailer/base.d.ts.map +1 -1
  339. package/build/src/mailer/base.js +3 -3
  340. package/build/src/plugins/sqljs-wasm-route.d.ts +2 -2
  341. package/build/src/plugins/sqljs-wasm-route.d.ts.map +1 -1
  342. package/build/src/routes/base-route.d.ts +2 -2
  343. package/build/src/routes/base-route.d.ts.map +1 -1
  344. package/build/src/routes/base-route.js +2 -2
  345. package/build/src/routes/get-route.d.ts +5 -0
  346. package/build/src/routes/get-route.d.ts.map +1 -1
  347. package/build/src/routes/namespace-route.d.ts +1 -1
  348. package/build/src/routes/plugin-routes.d.ts +2 -2
  349. package/build/src/routes/plugin-routes.d.ts.map +1 -1
  350. package/build/src/routes/post-route.d.ts +5 -0
  351. package/build/src/routes/post-route.d.ts.map +1 -1
  352. package/build/src/routes/resolver.d.ts +4 -2
  353. package/build/src/routes/resolver.d.ts.map +1 -1
  354. package/build/src/routes/resolver.js +7 -3
  355. package/build/src/routes/resource-route.d.ts +5 -0
  356. package/build/src/routes/resource-route.d.ts.map +1 -1
  357. package/build/src/routes/root-route.d.ts +5 -0
  358. package/build/src/routes/root-route.d.ts.map +1 -1
  359. package/build/src/testing/expect-to-change.d.ts +3 -3
  360. package/build/src/testing/expect-to-change.d.ts.map +1 -1
  361. package/build/src/testing/expect-utils.d.ts.map +1 -1
  362. package/build/src/testing/expect-utils.js +7 -5
  363. package/build/src/testing/expect.d.ts +1 -1
  364. package/build/src/testing/expect.d.ts.map +1 -1
  365. package/build/src/testing/request-client.d.ts +1 -1
  366. package/build/src/testing/request-client.d.ts.map +1 -1
  367. package/build/src/testing/test-files-finder.d.ts +1 -1
  368. package/build/src/testing/test-files-finder.d.ts.map +1 -1
  369. package/build/src/testing/test-runner.d.ts +57 -37
  370. package/build/src/testing/test-runner.d.ts.map +1 -1
  371. package/build/src/testing/test-runner.js +14 -3
  372. package/build/src/testing/test-suite-splitter.d.ts +1 -1
  373. package/build/src/testing/test-suite-splitter.d.ts.map +1 -1
  374. package/build/src/testing/test.d.ts +14 -6
  375. package/build/src/testing/test.d.ts.map +1 -1
  376. package/build/src/testing/test.js +14 -5
  377. package/build/src/utils/backtrace-cleaner.d.ts +2 -2
  378. package/build/src/utils/backtrace-cleaner.d.ts.map +1 -1
  379. package/build/src/utils/split-sql-statements.d.ts +7 -0
  380. package/build/src/utils/split-sql-statements.d.ts.map +1 -0
  381. package/build/src/utils/split-sql-statements.js +77 -0
  382. package/build/src/utils/with-tracked-stack-async-hooks.d.ts.map +1 -1
  383. package/build/src/utils/with-tracked-stack-async-hooks.js +5 -3
  384. package/build/src/utils/with-tracked-stack.d.ts.map +1 -1
  385. package/build/src/utils/with-tracked-stack.js +5 -3
  386. package/build/src/velocious-error.d.ts +4 -4
  387. package/build/src/velocious-error.d.ts.map +1 -1
  388. package/build/tsconfig.tsbuildinfo +1 -1
  389. package/package.json +10 -2
@@ -6,42 +6,46 @@ export default class BackgroundJobsWorker {
6
6
  * @param {number} [args.port] - Port.
7
7
  */
8
8
  constructor({ configuration, host, port }?: {
9
- configuration?: import("../configuration.js").default;
10
- host?: string;
11
- port?: number;
9
+ configuration?: import("../configuration.js").default | undefined;
10
+ host?: string | undefined;
11
+ port?: number | undefined;
12
12
  });
13
+ /** @type {Promise<import("../configuration.js").default>} */
13
14
  configurationPromise: Promise<import("../configuration.js").default>;
14
- host: string;
15
- port: number;
15
+ /** @type {import("../configuration.js").default | undefined} */
16
+ configuration: import("../configuration.js").default | undefined;
17
+ host: string | undefined;
18
+ port: number | undefined;
16
19
  shouldStop: boolean;
17
20
  workerId: `${string}-${string}-${string}-${string}-${string}`;
21
+ /** @type {JsonSocket | undefined} */
22
+ jsonSocket: JsonSocket | undefined;
23
+ /** @type {BackgroundJobsStatusReporter | undefined} */
24
+ statusReporter: BackgroundJobsStatusReporter | undefined;
18
25
  /**
19
26
  * @returns {Promise<void>} - Resolves when connected.
20
27
  */
21
28
  start(): Promise<void>;
22
- configuration: import("../configuration.js").default;
23
- statusReporter: BackgroundJobsStatusReporter;
24
29
  /**
25
30
  * @returns {Promise<void>} - Resolves when stopped.
26
31
  */
27
32
  stop(): Promise<void>;
28
33
  _connect(): Promise<void>;
29
- jsonSocket: JsonSocket;
30
34
  /**
31
- * @param {object} payload - Payload.
35
+ * @param {import("./types.js").BackgroundJobPayload} payload - Payload.
32
36
  * @returns {Promise<void>} - Resolves when done.
33
37
  */
34
- _handleJob(payload: object): Promise<void>;
38
+ _handleJob(payload: import("./types.js").BackgroundJobPayload): Promise<void>;
35
39
  /**
36
- * @param {object} payload - Payload.
40
+ * @param {import("./types.js").BackgroundJobPayload} payload - Payload.
37
41
  * @returns {Promise<void>} - Resolves when done.
38
42
  */
39
- _runJobInline(payload: object): Promise<void>;
43
+ _runJobInline(payload: import("./types.js").BackgroundJobPayload): Promise<void>;
40
44
  /**
41
- * @param {object} payload - Payload.
45
+ * @param {import("./types.js").BackgroundJobPayload} payload - Payload.
42
46
  * @returns {Promise<void>} - Resolves when spawned.
43
47
  */
44
- _spawnDetachedJob(payload: object): Promise<void>;
48
+ _spawnDetachedJob(payload: import("./types.js").BackgroundJobPayload): Promise<void>;
45
49
  /**
46
50
  * @param {object} args - Options.
47
51
  * @param {string} args.jobId - Job id.
@@ -55,10 +59,10 @@ export default class BackgroundJobsWorker {
55
59
  jobId: string;
56
60
  status: "completed" | "failed";
57
61
  error?: unknown;
58
- handedOffAtMs?: number;
59
- workerId?: string;
62
+ handedOffAtMs?: number | undefined;
63
+ workerId?: string | undefined;
60
64
  }): Promise<void>;
61
65
  }
62
- import BackgroundJobsStatusReporter from "./status-reporter.js";
63
66
  import JsonSocket from "./json-socket.js";
67
+ import BackgroundJobsStatusReporter from "./status-reporter.js";
64
68
  //# sourceMappingURL=worker.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"worker.d.ts","sourceRoot":"","sources":["../../../src/background-jobs/worker.js"],"names":[],"mappings":"AAUA;IACE;;;;;OAKG;IACH,4CAJG;QAAqD,aAAa,GAA1D,OAAO,qBAAqB,EAAE,OAAO;QACvB,IAAI,GAAlB,MAAM;QACQ,IAAI,GAAlB,MAAM;KAChB,EAOA;IALC,qEAAoG;IACpG,aAAgB;IAChB,aAAgB;IAChB,oBAAuB;IACvB,8DAA4B;IAG9B;;OAEG;IACH,SAFa,OAAO,CAAC,IAAI,CAAC,CAYzB;IATC,qDAAoD;IAGpD,6CAIE;IAIJ;;OAEG;IACH,QAFa,OAAO,CAAC,IAAI,CAAC,CAKzB;IAED,0BA2BC;IArBC,uBAA4B;IAuB9B;;;OAGG;IACH,oBAHW,MAAM,GACJ,OAAO,CAAC,IAAI,CAAC,CA8BzB;IAED;;;OAGG;IACH,uBAHW,MAAM,GACJ,OAAO,CAAC,IAAI,CAAC,CASzB;IAED;;;OAGG;IACH,2BAHW,MAAM,GACJ,OAAO,CAAC,IAAI,CAAC,CAoBzB;IAED;;;;;;;;OAQG;IACH,oEAPG;QAAqB,KAAK,EAAlB,MAAM;QACuB,MAAM,EAAnC,WAAW,GAAG,QAAQ;QACP,KAAK,GAApB,OAAO;QACO,aAAa,GAA3B,MAAM;QACQ,QAAQ,GAAtB,MAAM;KACd,GAAU,OAAO,CAAC,IAAI,CAAC,CAUzB;CACF;yCA/JwC,sBAAsB;uBAHxC,kBAAkB"}
1
+ {"version":3,"file":"worker.d.ts","sourceRoot":"","sources":["../../../src/background-jobs/worker.js"],"names":[],"mappings":"AAUA;IACE;;;;;OAKG;IACH,4CAJG;QAAqD,aAAa;QAC5C,IAAI;QACJ,IAAI;KAC5B,EAcA;IAZC,6DAA6D;IAC7D,sBADW,OAAO,CAAC,OAAO,qBAAqB,EAAE,OAAO,CAAC,CAC2C;IACpG,gEAAgE;IAChE,eADW,OAAO,qBAAqB,EAAE,OAAO,GAAG,SAAS,CAC9B;IAC9B,yBAAgB;IAChB,yBAAgB;IAChB,oBAAuB;IACvB,8DAA4B;IAC5B,qCAAqC;IACrC,YADW,UAAU,GAAG,SAAS,CACN;IAC3B,uDAAuD;IACvD,gBADW,4BAA4B,GAAG,SAAS,CACpB;IAGjC;;OAEG;IACH,SAFa,OAAO,CAAC,IAAI,CAAC,CAYzB;IAED;;OAEG;IACH,QAFa,OAAO,CAAC,IAAI,CAAC,CAKzB;IAED,0BA+BC;IAED;;;OAGG;IACH,oBAHW,OAAO,YAAY,EAAE,oBAAoB,GACvC,OAAO,CAAC,IAAI,CAAC,CAgCzB;IAED;;;OAGG;IACH,uBAHW,OAAO,YAAY,EAAE,oBAAoB,GACvC,OAAO,CAAC,IAAI,CAAC,CAczB;IAED;;;OAGG;IACH,2BAHW,OAAO,YAAY,EAAE,oBAAoB,GACvC,OAAO,CAAC,IAAI,CAAC,CAuBzB;IAED;;;;;;;;OAQG;IACH,oEAPG;QAAqB,KAAK,EAAlB,MAAM;QACuB,MAAM,EAAnC,WAAW,GAAG,QAAQ;QACP,KAAK,GAApB,OAAO;QACO,aAAa;QACb,QAAQ;KAC9B,GAAU,OAAO,CAAC,IAAI,CAAC,CAUzB;CACF;uBAvLsB,kBAAkB;yCAGA,sBAAsB"}
@@ -14,11 +14,18 @@ export default class BackgroundJobsWorker {
14
14
  * @param {number} [args.port] - Port.
15
15
  */
16
16
  constructor({ configuration, host, port } = {}) {
17
+ /** @type {Promise<import("../configuration.js").default>} */
17
18
  this.configurationPromise = configuration ? Promise.resolve(configuration) : configurationResolver();
19
+ /** @type {import("../configuration.js").default | undefined} */
20
+ this.configuration = undefined;
18
21
  this.host = host;
19
22
  this.port = port;
20
23
  this.shouldStop = false;
21
24
  this.workerId = randomUUID();
25
+ /** @type {JsonSocket | undefined} */
26
+ this.jsonSocket = undefined;
27
+ /** @type {BackgroundJobsStatusReporter | undefined} */
28
+ this.statusReporter = undefined;
22
29
  }
23
30
  /**
24
31
  * @returns {Promise<void>} - Resolves when connected.
@@ -43,12 +50,16 @@ export default class BackgroundJobsWorker {
43
50
  this.jsonSocket.close();
44
51
  }
45
52
  async _connect() {
46
- const config = this.configuration.getBackgroundJobsConfig();
53
+ const configuration = this.configuration;
54
+ if (!configuration)
55
+ throw new Error("Background jobs worker configuration not initialized");
56
+ const config = configuration.getBackgroundJobsConfig();
47
57
  const host = this.host || config.host;
48
58
  const port = typeof this.port === "number" ? this.port : config.port;
49
59
  const socket = net.createConnection({ host, port });
50
60
  const jsonSocket = new JsonSocket(socket);
51
61
  this.jsonSocket = jsonSocket;
62
+ /** @param {import("./types.js").BackgroundJobSocketMessage} message - Socket message. */
52
63
  jsonSocket.on("message", async (message) => {
53
64
  if (message?.type === "job") {
54
65
  await this._handleJob(message.payload);
@@ -68,10 +79,12 @@ export default class BackgroundJobsWorker {
68
79
  });
69
80
  }
70
81
  /**
71
- * @param {object} payload - Payload.
82
+ * @param {import("./types.js").BackgroundJobPayload} payload - Payload.
72
83
  * @returns {Promise<void>} - Resolves when done.
73
84
  */
74
85
  async _handleJob(payload) {
86
+ if (!payload.id)
87
+ throw new Error("Background job payload missing id");
75
88
  const options = payload.options || {};
76
89
  const shouldFork = options.forked !== false;
77
90
  if (shouldFork) {
@@ -100,26 +113,34 @@ export default class BackgroundJobsWorker {
100
113
  this.jsonSocket?.send({ type: "ready" });
101
114
  }
102
115
  /**
103
- * @param {object} payload - Payload.
116
+ * @param {import("./types.js").BackgroundJobPayload} payload - Payload.
104
117
  * @returns {Promise<void>} - Resolves when done.
105
118
  */
106
119
  async _runJobInline(payload) {
107
- const registry = new BackgroundJobRegistry({ configuration: this.configuration });
120
+ const configuration = this.configuration;
121
+ if (!configuration)
122
+ throw new Error("Background jobs worker configuration not initialized");
123
+ const registry = new BackgroundJobRegistry({ configuration });
108
124
  await registry.load();
109
125
  const JobClass = registry.getJobByName(payload.jobName);
110
126
  const jobInstance = new JobClass();
111
- await jobInstance.perform.apply(jobInstance, payload.args || []);
127
+ /** @type {(...args: any[]) => Promise<void>} */
128
+ const perform = jobInstance.perform;
129
+ await perform.apply(jobInstance, payload.args || []);
112
130
  }
113
131
  /**
114
- * @param {object} payload - Payload.
132
+ * @param {import("./types.js").BackgroundJobPayload} payload - Payload.
115
133
  * @returns {Promise<void>} - Resolves when spawned.
116
134
  */
117
135
  async _spawnDetachedJob(payload) {
118
- const directory = this.configuration.getDirectory();
136
+ const configuration = this.configuration;
137
+ if (!configuration)
138
+ throw new Error("Background jobs worker configuration not initialized");
139
+ const directory = configuration.getDirectory();
119
140
  const argvCommand = process.argv[1];
120
141
  const command = argvCommand ? argvCommand : `${directory}/bin/velocious.js`;
121
142
  const encodedPayload = Buffer.from(JSON.stringify(payload)).toString("base64");
122
- const backgroundJobsConfig = this.configuration.getBackgroundJobsConfig();
143
+ const backgroundJobsConfig = configuration.getBackgroundJobsConfig();
123
144
  const child = spawn(process.execPath, [command, "background-jobs-runner"], {
124
145
  cwd: directory,
125
146
  detached: true,
@@ -152,4 +173,4 @@ export default class BackgroundJobsWorker {
152
173
  }
153
174
  }
154
175
  }
155
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2JhY2tncm91bmQtam9icy93b3JrZXIuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsWUFBWTtBQUVaLE9BQU8sR0FBRyxNQUFNLEtBQUssQ0FBQTtBQUNyQixPQUFPLEVBQUMsS0FBSyxFQUFDLE1BQU0sb0JBQW9CLENBQUE7QUFDeEMsT0FBTyxVQUFVLE1BQU0sa0JBQWtCLENBQUE7QUFDekMsT0FBTyxxQkFBcUIsTUFBTSxtQkFBbUIsQ0FBQTtBQUNyRCxPQUFPLHFCQUFxQixNQUFNLDhCQUE4QixDQUFBO0FBQ2hFLE9BQU8sNEJBQTRCLE1BQU0sc0JBQXNCLENBQUE7QUFDL0QsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLFFBQVEsQ0FBQTtBQUVqQyxNQUFNLENBQUMsT0FBTyxPQUFPLG9CQUFvQjtJQUN2Qzs7Ozs7T0FLRztJQUNILFlBQVksRUFBQyxhQUFhLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBQyxHQUFHLEVBQUU7UUFDMUMsSUFBSSxDQUFDLG9CQUFvQixHQUFHLGFBQWEsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMscUJBQXFCLEVBQUUsQ0FBQTtRQUNwRyxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQTtRQUNoQixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQTtRQUNoQixJQUFJLENBQUMsVUFBVSxHQUFHLEtBQUssQ0FBQTtRQUN2QixJQUFJLENBQUMsUUFBUSxHQUFHLFVBQVUsRUFBRSxDQUFBO0lBQzlCLENBQUM7SUFFRDs7T0FFRztJQUNILEtBQUssQ0FBQyxLQUFLO1FBQ1QsSUFBSSxDQUFDLGFBQWEsR0FBRyxNQUFNLElBQUksQ0FBQyxvQkFBb0IsQ0FBQTtRQUNwRCxJQUFJLENBQUMsYUFBYSxDQUFDLFVBQVUsRUFBRSxDQUFBO1FBQy9CLE1BQU0sSUFBSSxD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LENBQUE7SUFDZixDQUFDO0lBRUQ7Ozs7Ozs7O09BUUc7SUFDSCxLQUFLLENBQUMsZ0JBQWdCLENBQUMsRUFBQyxLQUFLLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxhQUFhLEVBQUUsUUFBUSxFQUFDO1FBQ3BFLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYztZQUFFLE9BQU07UUFFaEMsSUFBSSxDQUFDO1lBQ0gsTUFBTSxJQUFJLENBQUMsY0FBYyxDQUFDLGVBQWUsQ0FBQyxFQUFDLEtBQUssRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLGFBQWEsRUFBRSxRQUFRLEVBQUMsQ0FBQyxDQUFBO1FBQzVGLENBQUM7UUFBQyxPQUFPLFdBQVcsRUFBRSxDQUFDO1lBQ3JCLE9BQU8sQ0FBQyxLQUFLLENBQUMseUNBQXlDLEVBQUUsV0FBVyxDQUFDLENBQUE7UUFDdkUsQ0FBQztJQUNILENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbIi8vIEB0cy1jaGVja1xuXG5pbXBvcnQgbmV0IGZyb20gXCJuZXRcIlxuaW1wb3J0IHtzcGF3bn0gZnJvbSBcIm5vZGU6Y2hpbGRfcHJvY2Vzc1wiXG5pbXBvcnQgSnNvblNvY2tldCBmcm9tIFwiLi9qc29uLXNvY2tldC5qc1wiXG5pbXBvcnQgQmFja2dyb3VuZEpvYlJlZ2lzdHJ5IGZyb20gXCIuL2pvYi1yZWdpc3RyeS5qc1wiXG5pbXBvcnQgY29uZmlndXJhdGlvblJlc29sdmVyIGZyb20gXCIuLi9jb25maWd1cmF0aW9uLXJlc29sdmVyLmpzXCJcbmltcG9ydCBCYWNrZ3JvdW5kSm9ic1N0YXR1c1JlcG9ydGVyIGZyb20gXCIuL3N0YXR1cy1yZXBvcnRlci5qc1wiXG5pbXBvcnQge3JhbmRvbVVVSUR9IGZyb20gXCJjcnlwdG9cIlxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBCYWNrZ3JvdW5kSm9ic1dvcmtlciB7XG4gIC8qKlxuICAgKiBAcGFyYW0ge29iamVjdH0gW2FyZ3NdIC0gT3B0aW9ucy5cbiAgICogQHBhcmFtIHtpbXBvcnQoXCIuLi9jb25maWd1cmF0aW9uLmpzXCIpLmRlZmF1bHR9IFthcmdzLmNvbmZpZ3VyYXRpb25dIC0gQ29uZmlndXJhdGlvbi5cbiAgICogQHBhcmFtIHtzdHJpbmd9IFthcmdzLmhvc3RdIC0gSG9zdG5hbWUuXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBbYXJncy5wb3J0XSAtIFBvcnQuXG4gICAqL1xuICBjb25zdHJ1Y3Rvcih7Y29uZmlndXJhdGlvbiwgaG9zdCwgcG9ydH0gPSB7fSkge1xuICAgIHRoaXMuY29uZmlndXJhdGlvblByb21pc2UgPSBjb25maWd1cmF0aW9uID8gUHJvbWlzZS5yZXNvbHZlKGNvbmZpZ3VyYXRpb24pIDogY29uZmlndXJhdGlvblJlc29sdmVyKClcbiAgICB0aGlzLmhvc3QgPSBob3N0XG4gICAgdGhpcy5wb3J0ID0gcG9ydFxuICAgIHRoaXMuc2hvdWxkU3RvcCA9IGZhbHNlXG4gICAgdGhpcy53b3JrZXJJZCA9IHJhbmRvbVVVSUQoKVxuICB9XG5cbiAgLyoqXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPHZvaWQ+fSAtIFJlc29sdmVzIHdoZW4gY29ubmVjdGVkLlxuICAgKi9cbiAgYXN5bmMgc3RhcnQoKSB7XG4gICAgdGhpcy5jb25maWd1cmF0aW9uID0gYXdhaXQgdGhpcy5jb25maWd1cmF0aW9uUHJvbWlzZVxuICAgIHRoaXMuY29uZmlndXJhdGlvbi5zZXRDdXJyZW50KClcbiAgICBhd2FpdCB0aGlzLmNvbmZpZ3VyYXRpb24uaW5pdGlhbGl6ZSh7dHlwZTogXCJiYWNrZ3JvdW5kLWpvYnMtd29ya2VyXCJ9KVxuICAgIHRoaXMuc3RhdHVzUmVwb3J0ZXIgPSBuZXcgQmFja2dyb3VuZEpvYnNTdGF0dXNSZXBvcnRlcih7XG4gICAgICBjb25maWd1cmF0aW9uOiB0aGlzLmNvbmZpZ3VyYXRpb24sXG4gICAgICBob3N0OiB0aGlzLmhvc3QsXG4gICAgICBwb3J0OiB0aGlzLnBvcnRcbiAgICB9KVxuICAgIGF3YWl0IHRoaXMuX2Nvbm5lY3QoKVxuICB9XG5cbiAgLyoqXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPHZvaWQ+fSAtIFJlc29sdmVzIHdoZW4gc3RvcHBlZC5cbiAgICovXG4gIGFzeW5jIHN0b3AoKSB7XG4gICAgdGhpcy5zaG91bGRTdG9wID0gdHJ1ZVxuICAgIGlmICh0aGlzLmpzb25Tb2NrZXQpIHRoaXMuanNvblNvY2tldC5jbG9zZSgpXG4gIH1cblxuICBhc3luYyBfY29ubmVjdCgpIHtcbiAgICBjb25zdCBjb25maWcgPSB0aGlzLmNvbmZpZ3VyYXRpb24uZ2V0QmFja2dyb3VuZEpvYnNDb25maWcoKVxuICAgIGNvbnN0IGhvc3QgPSB0aGlzLmhvc3QgfHwgY29uZmlnLmhvc3RcbiAgICBjb25zdCBwb3J0ID0gdHlwZW9mIHRoaXMucG9ydCA9PT0gXCJudW1iZXJcIiA/IHRoaXMucG9ydCA6IGNvbmZpZy5wb3J0XG4gICAgY29uc3Qgc29ja2V0ID0gbmV0LmNyZWF0ZUNvbm5lY3Rpb24oe2hvc3QsIHBvcnR9KVxuICAgIGNvbnN0IGpzb25Tb2NrZXQgPSBuZXcgSnNvblNvY2tldChzb2NrZXQpXG4gICAgdGhpcy5qc29uU29ja2V0ID0ganNvblNvY2tldFxuXG4gICAganNvblNvY2tldC5vbihcIm1lc3NhZ2VcIiwgYXN5bmMgKG1lc3NhZ2UpID0+IHtcbiAgICAgIGlmIChtZXNzYWdlPy50eXBlID09PSBcImpvYlwiKSB7XG4gICAgICAgIGF3YWl0IHRoaXMuX2hhbmRsZUpvYihtZXNzYWdlLnBheWxvYWQpXG4gICAgICB9XG4gICAgfSlcblxuICAgIGpzb25Tb2NrZXQub24oXCJlcnJvclwiLCAoZXJyb3IpID0+IHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoXCJCYWNrZ3JvdW5kIGpvYnMgd29ya2VyIHNvY2tldCBlcnJvcjpcIiwgZXJyb3IpXG4gICAgfSlcblxuICAgIGpzb25Tb2NrZXQub24oXCJjbG9zZVwiLCAoKSA9PiB7XG4gICAgICBpZiAodGhpcy5zaG91bGRTdG9wKSByZXR1cm5cbiAgICAgIHNldFRpbWVvdXQoKCkgPT4geyB2b2lkIHRoaXMuX2Nvbm5lY3QoKSB9LCAxMDAwKVxuICAgIH0pXG5cbiAgICBzb2NrZXQub24oXCJjb25uZWN0XCIsICgpID0+IHtcbiAgICAgIGpzb25Tb2NrZXQuc2VuZCh7dHlwZTogXCJoZWxsb1wiLCByb2xlOiBcIndvcmtlclwiLCB3b3JrZXJJZDogdGhpcy53b3JrZXJJZH0pXG4gICAgICBqc29uU29ja2V0LnNlbmQoe3R5cGU6IFwicmVhZHlcIn0pXG4gICAgfSlcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge29iamVjdH0gcGF5bG9hZCAtIFBheWxvYWQuXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPHZvaWQ+fSAtIFJlc29sdmVzIHdoZW4gZG9uZS5cbiAgICovXG4gIGFzeW5jIF9oYW5kbGVKb2IocGF5bG9hZCkge1xuICAgIGNvbnN0IG9wdGlvbnMgPSBwYXlsb2FkLm9wdGlvbnMgfHwge31cbiAgICBjb25zdCBzaG91bGRGb3JrID0gb3B0aW9ucy5mb3JrZWQgIT09IGZhbHNlXG5cbiAgICBpZiAoc2hvdWxkRm9yaykge1xuICAgICAgYXdhaXQgdGhpcy5fc3Bhd25EZXRhY2hlZEpvYihwYXlsb2FkKVxuICAgICAgdGhpcy5qc29uU29ja2V0Py5zZW5kKHt0eXBlOiBcInJlYWR5XCJ9KVxuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IHRoaXMuX3J1bkpvYklubGluZShwYXlsb2FkKVxuICAgICAgdm9pZCB0aGlzLl9yZXBvcnRKb2JSZXN1bHQoe1xuICAgICAgICBqb2JJZDogcGF5bG9hZC5pZCxcbiAgICAgICAgc3RhdHVzOiBcImNvbXBsZXRlZFwiLFxuICAgICAgICBoYW5kZWRPZmZBdE1zOiBwYXlsb2FkLmhhbmRlZE9mZkF0TXMsXG4gICAgICAgIHdvcmtlcklkOiBwYXlsb2FkLndvcmtlcklkIHx8IHRoaXMud29ya2VySWRcbiAgICAgIH0pXG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIHZvaWQgdGhpcy5fcmVwb3J0Sm9iUmVzdWx0KHtcbiAgICAgICAgam9iSWQ6IHBheWxvYWQuaWQsXG4gICAgICAgIHN0YXR1czogXCJmYWlsZWRcIixcbiAgICAgICAgZXJyb3IsXG4gICAgICAgIGhhbmRlZE9mZkF0TXM6IHBheWxvYWQuaGFuZGVkT2ZmQXRNcyxcbiAgICAgICAgd29ya2VySWQ6IHBheWxvYWQud29ya2VySWQgfHwgdGhpcy53b3JrZXJJZFxuICAgICAgfSlcbiAgICB9XG4gICAgdGhpcy5qc29uU29ja2V0Py5zZW5kKHt0eXBlOiBcInJlYWR5XCJ9KVxuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBwYXlsb2FkIC0gUGF5bG9hZC5cbiAgICogQHJldHVybnMge1Byb21pc2U8dm9pZD59IC0gUmVzb2x2ZXMgd2hlbiBkb25lLlxuICAgKi9cbiAgYXN5bmMgX3J1bkpvYklubGluZShwYXlsb2FkKSB7XG4gICAgY29uc3QgcmVnaXN0cnkgPSBuZXcgQmFja2dyb3VuZEpvYlJlZ2lzdHJ5KHtjb25maWd1cmF0aW9uOiB0aGlzLmNvbmZpZ3VyYXRpb259KVxuICAgIGF3YWl0IHJlZ2lzdHJ5LmxvYWQoKVxuICAgIGNvbnN0IEpvYkNsYXNzID0gcmVnaXN0cnkuZ2V0Sm9iQnlOYW1lKHBheWxvYWQuam9iTmFtZSlcbiAgICBjb25zdCBqb2JJbnN0YW5jZSA9IG5ldyBKb2JDbGFzcygpXG5cbiAgICBhd2FpdCBqb2JJbnN0YW5jZS5wZXJmb3JtLmFwcGx5KGpvYkluc3RhbmNlLCBwYXlsb2FkLmFyZ3MgfHwgW10pXG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHtvYmplY3R9IHBheWxvYWQgLSBQYXlsb2FkLlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTx2b2lkPn0gLSBSZXNvbHZlcyB3aGVuIHNwYXduZWQuXG4gICAqL1xuICBhc3luYyBfc3Bhd25EZXRhY2hlZEpvYihwYXlsb2FkKSB7XG4gICAgY29uc3QgZGlyZWN0b3J5ID0gdGhpcy5jb25maWd1cmF0aW9uLmdldERpcmVjdG9yeSgpXG4gICAgY29uc3QgYXJndkNvbW1hbmQgPSBwcm9jZXNzLmFyZ3ZbMV1cbiAgICBjb25zdCBjb21tYW5kID0gYXJndkNvbW1hbmQgPyBhcmd2Q29tbWFuZCA6IGAke2RpcmVjdG9yeX0vYmluL3ZlbG9jaW91cy5qc2BcbiAgICBjb25zdCBlbmNvZGVkUGF5bG9hZCA9IEJ1ZmZlci5mcm9tKEpTT04uc3RyaW5naWZ5KHBheWxvYWQpKS50b1N0cmluZyhcImJhc2U2NFwiKVxuICAgIGNvbnN0IGJhY2tncm91bmRKb2JzQ29uZmlnID0gdGhpcy5jb25maWd1cmF0aW9uLmdldEJhY2tncm91bmRKb2JzQ29uZmlnKClcbiAgICBjb25zdCBjaGlsZCA9IHNwYXduKHByb2Nlc3MuZXhlY1BhdGgsIFtjb21tYW5kLCBcImJhY2tncm91bmQtam9icy1ydW5uZXJcIl0sIHtcbiAgICAgIGN3ZDogZGlyZWN0b3J5LFxuICAgICAgZGV0YWNoZWQ6IHRydWUsXG4gICAgICBzdGRpbzogXCJpZ25vcmVcIixcbiAgICAgIGVudjogT2JqZWN0LmFzc2lnbih7fSwgcHJvY2Vzcy5lbnYsIHtcbiAgICAgICAgVkVMT0NJT1VTX0JBQ0tHUk9VTkRfSk9CU19IT1NUOiBiYWNrZ3JvdW5kSm9ic0NvbmZpZy5ob3N0LFxuICAgICAgICBWRUxPQ0lPVVNfQkFDS0dST1VORF9KT0JTX1BPUlQ6IGAke2JhY2tncm91bmRKb2JzQ29uZmlnLnBvcnR9YCxcbiAgICAgICAgVkVMT0NJT1VTX0pPQl9QQVlMT0FEOiBlbmNvZGVkUGF5bG9hZFxuICAgICAgfSlcbiAgICB9KVxuXG4gICAgY2hpbGQudW5yZWYoKVxuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBhcmdzIC0gT3B0aW9ucy5cbiAgICogQHBhcmFtIHtzdHJpbmd9IGFyZ3Muam9iSWQgLSBKb2IgaWQuXG4gICAqIEBwYXJhbSB7XCJjb21wbGV0ZWRcIiB8IFwiZmFpbGVkXCJ9IGFyZ3Muc3RhdHVzIC0gU3RhdHVzLlxuICAgKiBAcGFyYW0ge3Vua25vd259IFthcmdzLmVycm9yXSAtIEVycm9yLlxuICAgKiBAcGFyYW0ge251bWJlcn0gW2FyZ3MuaGFuZGVkT2ZmQXRNc10gLSBIYW5kZWQgb2ZmIHRpbWVzdGFtcC5cbiAgICogQHBhcmFtIHtzdHJpbmd9IFthcmdzLndvcmtlcklkXSAtIFdvcmtlciBpZC5cbiAgICogQHJldHVybnMge1Byb21pc2U8dm9pZD59IC0gUmVzb2x2ZXMgd2hlbiByZXBvcnRlZC5cbiAgICovXG4gIGFzeW5jIF9yZXBvcnRKb2JSZXN1bHQoe2pvYklkLCBzdGF0dXMsIGVycm9yLCBoYW5kZWRPZmZBdE1zLCB3b3JrZXJJZH0pIHtcbiAgICBpZiAoIXRoaXMuc3RhdHVzUmVwb3J0ZXIpIHJldHVyblxuXG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IHRoaXMuc3RhdHVzUmVwb3J0ZXIucmVwb3J0V2l0aFJldHJ5KHtqb2JJZCwgc3RhdHVzLCBlcnJvciwgaGFuZGVkT2ZmQXRNcywgd29ya2VySWR9KVxuICAgIH0gY2F0Y2ggKHJlcG9ydEVycm9yKSB7XG4gICAgICBjb25zb2xlLmVycm9yKFwiQmFja2dyb3VuZCBqb2Igc3RhdHVzIHJlcG9ydGluZyBmYWlsZWQ6XCIsIHJlcG9ydEVycm9yKVxuICAgIH1cbiAgfVxufVxuIl19
176
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2JhY2tncm91bmQtam9icy93b3JrZXIuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsWUFBWTtBQUVaLE9BQU8sR0FBRyxNQUFNLEtBQUssQ0FBQTtBQUNyQixPQUFPLEVBQUMsS0FBSyxFQUFDLE1BQU0sb0JBQW9CLENBQUE7QUFDeEMsT0FBTyxVQUFVLE1BQU0sa0JBQWtCLENBQUE7QUFDekMsT0FBTyxxQkFBcUIsTUFBTSxtQkFBbUIsQ0FBQTtBQUNyRCxPQUFPLHFCQUFxQixNQUFNLDhCQUE4QixDQUFBO0FBQ2hFLE9BQU8sNEJBQTRCLE1BQU0sc0JBQXNCLENBQUE7QUFDL0QsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLFFBQVEsQ0FBQTtBQUVqQyxNQUFNLENBQUMsT0FBTyxPQUFPLG9CQUFvQjtJQUN2Qzs7Ozs7T0FLRztJQUNILFlBQVksRUFBQyxhQUFhLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBQyxHQUFHLEVBQUU7UUFDMUMsNkRBQTZEO1FBQzdELElBQUksQ0FBQyxvQkFBb0IsR0FBRyxhQUFhLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDLHFCQUFxQixFQUFFLENBQUE7UUFDcEcsZ0VBQWdFO1FBQ2hFLElBQUksQ0FBQyxhQUFhLEdBQUcsU0FBUyxDQUFBO1FBQzlCLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFBO1FBQ2hCLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFBO1FBQ2hCLElBQUksQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFBO1FBQ3ZCLElBQUksQ0FBQyxRQUFRLEdBQUcsVUFBVSxFQUFFLENBQUE7UUFDNUIscUNBQXFDO1FBQ3JDLElBQUksQ0FBQyxVQUFVLEdBQUcsU0FBUyxDQUFBO1FBQzNCLHVEQUF1RDtRQUN2RCxJQUFJLENBQUMsY0FBYyxHQUFHLFNB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QUUsV0FBVyxDQUFDLENBQUE7UUFDdkUsQ0FBQztJQUNILENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbIi8vIEB0cy1jaGVja1xuXG5pbXBvcnQgbmV0IGZyb20gXCJuZXRcIlxuaW1wb3J0IHtzcGF3bn0gZnJvbSBcIm5vZGU6Y2hpbGRfcHJvY2Vzc1wiXG5pbXBvcnQgSnNvblNvY2tldCBmcm9tIFwiLi9qc29uLXNvY2tldC5qc1wiXG5pbXBvcnQgQmFja2dyb3VuZEpvYlJlZ2lzdHJ5IGZyb20gXCIuL2pvYi1yZWdpc3RyeS5qc1wiXG5pbXBvcnQgY29uZmlndXJhdGlvblJlc29sdmVyIGZyb20gXCIuLi9jb25maWd1cmF0aW9uLXJlc29sdmVyLmpzXCJcbmltcG9ydCBCYWNrZ3JvdW5kSm9ic1N0YXR1c1JlcG9ydGVyIGZyb20gXCIuL3N0YXR1cy1yZXBvcnRlci5qc1wiXG5pbXBvcnQge3JhbmRvbVVVSUR9IGZyb20gXCJjcnlwdG9cIlxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBCYWNrZ3JvdW5kSm9ic1dvcmtlciB7XG4gIC8qKlxuICAgKiBAcGFyYW0ge29iamVjdH0gW2FyZ3NdIC0gT3B0aW9ucy5cbiAgICogQHBhcmFtIHtpbXBvcnQoXCIuLi9jb25maWd1cmF0aW9uLmpzXCIpLmRlZmF1bHR9IFthcmdzLmNvbmZpZ3VyYXRpb25dIC0gQ29uZmlndXJhdGlvbi5cbiAgICogQHBhcmFtIHtzdHJpbmd9IFthcmdzLmhvc3RdIC0gSG9zdG5hbWUuXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBbYXJncy5wb3J0XSAtIFBvcnQuXG4gICAqL1xuICBjb25zdHJ1Y3Rvcih7Y29uZmlndXJhdGlvbiwgaG9zdCwgcG9ydH0gPSB7fSkge1xuICAgIC8qKiBAdHlwZSB7UHJvbWlzZTxpbXBvcnQoXCIuLi9jb25maWd1cmF0aW9uLmpzXCIpLmRlZmF1bHQ+fSAqL1xuICAgIHRoaXMuY29uZmlndXJhdGlvblByb21pc2UgPSBjb25maWd1cmF0aW9uID8gUHJvbWlzZS5yZXNvbHZlKGNvbmZpZ3VyYXRpb24pIDogY29uZmlndXJhdGlvblJlc29sdmVyKClcbiAgICAvKiogQHR5cGUge2ltcG9ydChcIi4uL2NvbmZpZ3VyYXRpb24uanNcIikuZGVmYXVsdCB8IHVuZGVmaW5lZH0gKi9cbiAgICB0aGlzLmNvbmZpZ3VyYXRpb24gPSB1bmRlZmluZWRcbiAgICB0aGlzLmhvc3QgPSBob3N0XG4gICAgdGhpcy5wb3J0ID0gcG9ydFxuICAgIHRoaXMuc2hvdWxkU3RvcCA9IGZhbHNlXG4gICAgdGhpcy53b3JrZXJJZCA9IHJhbmRvbVVVSUQoKVxuICAgIC8qKiBAdHlwZSB7SnNvblNvY2tldCB8IHVuZGVmaW5lZH0gKi9cbiAgICB0aGlzLmpzb25Tb2NrZXQgPSB1bmRlZmluZWRcbiAgICAvKiogQHR5cGUge0JhY2tncm91bmRKb2JzU3RhdHVzUmVwb3J0ZXIgfCB1bmRlZmluZWR9ICovXG4gICAgdGhpcy5zdGF0dXNSZXBvcnRlciA9IHVuZGVmaW5lZFxuICB9XG5cbiAgLyoqXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPHZvaWQ+fSAtIFJlc29sdmVzIHdoZW4gY29ubmVjdGVkLlxuICAgKi9cbiAgYXN5bmMgc3RhcnQoKSB7XG4gICAgdGhpcy5jb25maWd1cmF0aW9uID0gYXdhaXQgdGhpcy5jb25maWd1cmF0aW9uUHJvbWlzZVxuICAgIHRoaXMuY29uZmlndXJhdGlvbi5zZXRDdXJyZW50KClcbiAgICBhd2FpdCB0aGlzLmNvbmZpZ3VyYXRpb24uaW5pdGlhbGl6ZSh7dHlwZTogXCJiYWNrZ3JvdW5kLWpvYnMtd29ya2VyXCJ9KVxuICAgIHRoaXMuc3RhdHVzUmVwb3J0ZXIgPSBuZXcgQmFja2dyb3VuZEpvYnNTdGF0dXNSZXBvcnRlcih7XG4gICAgICBjb25maWd1cmF0aW9uOiB0aGlzLmNvbmZpZ3VyYXRpb24sXG4gICAgICBob3N0OiB0aGlzLmhvc3QsXG4gICAgICBwb3J0OiB0aGlzLnBvcnRcbiAgICB9KVxuICAgIGF3YWl0IHRoaXMuX2Nvbm5lY3QoKVxuICB9XG5cbiAgLyoqXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPHZvaWQ+fSAtIFJlc29sdmVzIHdoZW4gc3RvcHBlZC5cbiAgICovXG4gIGFzeW5jIHN0b3AoKSB7XG4gICAgdGhpcy5zaG91bGRTdG9wID0gdHJ1ZVxuICAgIGlmICh0aGlzLmpzb25Tb2NrZXQpIHRoaXMuanNvblNvY2tldC5jbG9zZSgpXG4gIH1cblxuICBhc3luYyBfY29ubmVjdCgpIHtcbiAgICBjb25zdCBjb25maWd1cmF0aW9uID0gdGhpcy5jb25maWd1cmF0aW9uXG4gICAgaWYgKCFjb25maWd1cmF0aW9uKSB0aHJvdyBuZXcgRXJyb3IoXCJCYWNrZ3JvdW5kIGpvYnMgd29ya2VyIGNvbmZpZ3VyYXRpb24gbm90IGluaXRpYWxpemVkXCIpXG5cbiAgICBjb25zdCBjb25maWcgPSBjb25maWd1cmF0aW9uLmdldEJhY2tncm91bmRKb2JzQ29uZmlnKClcbiAgICBjb25zdCBob3N0ID0gdGhpcy5ob3N0IHx8IGNvbmZpZy5ob3N0XG4gICAgY29uc3QgcG9ydCA9IHR5cGVvZiB0aGlzLnBvcnQgPT09IFwibnVtYmVyXCIgPyB0aGlzLnBvcnQgOiBjb25maWcucG9ydFxuICAgIGNvbnN0IHNvY2tldCA9IG5ldC5jcmVhdGVDb25uZWN0aW9uKHtob3N0LCBwb3J0fSlcbiAgICBjb25zdCBqc29uU29ja2V0ID0gbmV3IEpzb25Tb2NrZXQoc29ja2V0KVxuICAgIHRoaXMuanNvblNvY2tldCA9IGpzb25Tb2NrZXRcblxuICAgIC8qKiBAcGFyYW0ge2ltcG9ydChcIi4vdHlwZXMuanNcIikuQmFja2dyb3VuZEpvYlNvY2tldE1lc3NhZ2V9IG1lc3NhZ2UgLSBTb2NrZXQgbWVzc2FnZS4gKi9cbiAgICBqc29uU29ja2V0Lm9uKFwibWVzc2FnZVwiLCBhc3luYyAobWVzc2FnZSkgPT4ge1xuICAgICAgaWYgKG1lc3NhZ2U/LnR5cGUgPT09IFwiam9iXCIpIHtcbiAgICAgICAgYXdhaXQgdGhpcy5faGFuZGxlSm9iKG1lc3NhZ2UucGF5bG9hZClcbiAgICAgIH1cbiAgICB9KVxuXG4gICAganNvblNvY2tldC5vbihcImVycm9yXCIsIChlcnJvcikgPT4ge1xuICAgICAgY29uc29sZS5lcnJvcihcIkJhY2tncm91bmQgam9icyB3b3JrZXIgc29ja2V0IGVycm9yOlwiLCBlcnJvcilcbiAgICB9KVxuXG4gICAganNvblNvY2tldC5vbihcImNsb3NlXCIsICgpID0+IHtcbiAgICAgIGlmICh0aGlzLnNob3VsZFN0b3ApIHJldHVyblxuICAgICAgc2V0VGltZW91dCgoKSA9PiB7IHZvaWQgdGhpcy5fY29ubmVjdCgpIH0sIDEwMDApXG4gICAgfSlcblxuICAgIHNvY2tldC5vbihcImNvbm5lY3RcIiwgKCkgPT4ge1xuICAgICAganNvblNvY2tldC5zZW5kKHt0eXBlOiBcImhlbGxvXCIsIHJvbGU6IFwid29ya2VyXCIsIHdvcmtlcklkOiB0aGlzLndvcmtlcklkfSlcbiAgICAgIGpzb25Tb2NrZXQuc2VuZCh7dHlwZTogXCJyZWFkeVwifSlcbiAgICB9KVxuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7aW1wb3J0KFwiLi90eXBlcy5qc1wiKS5CYWNrZ3JvdW5kSm9iUGF5bG9hZH0gcGF5bG9hZCAtIFBheWxvYWQuXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPHZvaWQ+fSAtIFJlc29sdmVzIHdoZW4gZG9uZS5cbiAgICovXG4gIGFzeW5jIF9oYW5kbGVKb2IocGF5bG9hZCkge1xuICAgIGlmICghcGF5bG9hZC5pZCkgdGhyb3cgbmV3IEVycm9yKFwiQmFja2dyb3VuZCBqb2IgcGF5bG9hZCBtaXNzaW5nIGlkXCIpXG5cbiAgICBjb25zdCBvcHRpb25zID0gcGF5bG9hZC5vcHRpb25zIHx8IHt9XG4gICAgY29uc3Qgc2hvdWxkRm9yayA9IG9wdGlvbnMuZm9ya2VkICE9PSBmYWxzZVxuXG4gICAgaWYgKHNob3VsZEZvcmspIHtcbiAgICAgIGF3YWl0IHRoaXMuX3NwYXduRGV0YWNoZWRKb2IocGF5bG9hZClcbiAgICAgIHRoaXMuanNvblNvY2tldD8uc2VuZCh7dHlwZTogXCJyZWFkeVwifSlcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIHRyeSB7XG4gICAgICBhd2FpdCB0aGlzLl9ydW5Kb2JJbmxpbmUocGF5bG9hZClcbiAgICAgIHZvaWQgdGhpcy5fcmVwb3J0Sm9iUmVzdWx0KHtcbiAgICAgICAgam9iSWQ6IHBheWxvYWQuaWQsXG4gICAgICAgIHN0YXR1czogXCJjb21wbGV0ZWRcIixcbiAgICAgICAgaGFuZGVkT2ZmQXRNczogcGF5bG9hZC5oYW5kZWRPZmZBdE1zLFxuICAgICAgICB3b3JrZXJJZDogcGF5bG9hZC53b3JrZXJJZCB8fCB0aGlzLndvcmtlcklkXG4gICAgICB9KVxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICB2b2lkIHRoaXMuX3JlcG9ydEpvYlJlc3VsdCh7XG4gICAgICAgIGpvYklkOiBwYXlsb2FkLmlkLFxuICAgICAgICBzdGF0dXM6IFwiZmFpbGVkXCIsXG4gICAgICAgIGVycm9yLFxuICAgICAgICBoYW5kZWRPZmZBdE1zOiBwYXlsb2FkLmhhbmRlZE9mZkF0TXMsXG4gICAgICAgIHdvcmtlcklkOiBwYXlsb2FkLndvcmtlcklkIHx8IHRoaXMud29ya2VySWRcbiAgICAgIH0pXG4gICAgfVxuICAgIHRoaXMuanNvblNvY2tldD8uc2VuZCh7dHlwZTogXCJyZWFkeVwifSlcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge2ltcG9ydChcIi4vdHlwZXMuanNcIikuQmFja2dyb3VuZEpvYlBheWxvYWR9IHBheWxvYWQgLSBQYXlsb2FkLlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTx2b2lkPn0gLSBSZXNvbHZlcyB3aGVuIGRvbmUuXG4gICAqL1xuICBhc3luYyBfcnVuSm9iSW5saW5lKHBheWxvYWQpIHtcbiAgICBjb25zdCBjb25maWd1cmF0aW9uID0gdGhpcy5jb25maWd1cmF0aW9uXG4gICAgaWYgKCFjb25maWd1cmF0aW9uKSB0aHJvdyBuZXcgRXJyb3IoXCJCYWNrZ3JvdW5kIGpvYnMgd29ya2VyIGNvbmZpZ3VyYXRpb24gbm90IGluaXRpYWxpemVkXCIpXG5cbiAgICBjb25zdCByZWdpc3RyeSA9IG5ldyBCYWNrZ3JvdW5kSm9iUmVnaXN0cnkoe2NvbmZpZ3VyYXRpb259KVxuICAgIGF3YWl0IHJlZ2lzdHJ5LmxvYWQoKVxuICAgIGNvbnN0IEpvYkNsYXNzID0gcmVnaXN0cnkuZ2V0Sm9iQnlOYW1lKHBheWxvYWQuam9iTmFtZSlcbiAgICBjb25zdCBqb2JJbnN0YW5jZSA9IG5ldyBKb2JDbGFzcygpXG4gICAgLyoqIEB0eXBlIHsoLi4uYXJnczogYW55W10pID0+IFByb21pc2U8dm9pZD59ICovXG4gICAgY29uc3QgcGVyZm9ybSA9IGpvYkluc3RhbmNlLnBlcmZvcm1cblxuICAgIGF3YWl0IHBlcmZvcm0uYXBwbHkoam9iSW5zdGFuY2UsIHBheWxvYWQuYXJncyB8fCBbXSlcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge2ltcG9ydChcIi4vdHlwZXMuanNcIikuQmFja2dyb3VuZEpvYlBheWxvYWR9IHBheWxvYWQgLSBQYXlsb2FkLlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTx2b2lkPn0gLSBSZXNvbHZlcyB3aGVuIHNwYXduZWQuXG4gICAqL1xuICBhc3luYyBfc3Bhd25EZXRhY2hlZEpvYihwYXlsb2FkKSB7XG4gICAgY29uc3QgY29uZmlndXJhdGlvbiA9IHRoaXMuY29uZmlndXJhdGlvblxuICAgIGlmICghY29uZmlndXJhdGlvbikgdGhyb3cgbmV3IEVycm9yKFwiQmFja2dyb3VuZCBqb2JzIHdvcmtlciBjb25maWd1cmF0aW9uIG5vdCBpbml0aWFsaXplZFwiKVxuXG4gICAgY29uc3QgZGlyZWN0b3J5ID0gY29uZmlndXJhdGlvbi5nZXREaXJlY3RvcnkoKVxuICAgIGNvbnN0IGFyZ3ZDb21tYW5kID0gcHJvY2Vzcy5hcmd2WzFdXG4gICAgY29uc3QgY29tbWFuZCA9IGFyZ3ZDb21tYW5kID8gYXJndkNvbW1hbmQgOiBgJHtkaXJlY3Rvcnl9L2Jpbi92ZWxvY2lvdXMuanNgXG4gICAgY29uc3QgZW5jb2RlZFBheWxvYWQgPSBCdWZmZXIuZnJvbShKU09OLnN0cmluZ2lmeShwYXlsb2FkKSkudG9TdHJpbmcoXCJiYXNlNjRcIilcbiAgICBjb25zdCBiYWNrZ3JvdW5kSm9ic0NvbmZpZyA9IGNvbmZpZ3VyYXRpb24uZ2V0QmFja2dyb3VuZEpvYnNDb25maWcoKVxuICAgIGNvbnN0IGNoaWxkID0gc3Bhd24ocHJvY2Vzcy5leGVjUGF0aCwgW2NvbW1hbmQsIFwiYmFja2dyb3VuZC1qb2JzLXJ1bm5lclwiXSwge1xuICAgICAgY3dkOiBkaXJlY3RvcnksXG4gICAgICBkZXRhY2hlZDogdHJ1ZSxcbiAgICAgIHN0ZGlvOiBcImlnbm9yZVwiLFxuICAgICAgZW52OiBPYmplY3QuYXNzaWduKHt9LCBwcm9jZXNzLmVudiwge1xuICAgICAgICBWRUxPQ0lPVVNfQkFDS0dST1VORF9KT0JTX0hPU1Q6IGJhY2tncm91bmRKb2JzQ29uZmlnLmhvc3QsXG4gICAgICAgIFZFTE9DSU9VU19CQUNLR1JPVU5EX0pPQlNfUE9SVDogYCR7YmFja2dyb3VuZEpvYnNDb25maWcucG9ydH1gLFxuICAgICAgICBWRUxPQ0lPVVNfSk9CX1BBWUxPQUQ6IGVuY29kZWRQYXlsb2FkXG4gICAgICB9KVxuICAgIH0pXG5cbiAgICBjaGlsZC51bnJlZigpXG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHtvYmplY3R9IGFyZ3MgLSBPcHRpb25zLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gYXJncy5qb2JJZCAtIEpvYiBpZC5cbiAgICogQHBhcmFtIHtcImNvbXBsZXRlZFwiIHwgXCJmYWlsZWRcIn0gYXJncy5zdGF0dXMgLSBTdGF0dXMuXG4gICAqIEBwYXJhbSB7dW5rbm93bn0gW2FyZ3MuZXJyb3JdIC0gRXJyb3IuXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBbYXJncy5oYW5kZWRPZmZBdE1zXSAtIEhhbmRlZCBvZmYgdGltZXN0YW1wLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gW2FyZ3Mud29ya2VySWRdIC0gV29ya2VyIGlkLlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTx2b2lkPn0gLSBSZXNvbHZlcyB3aGVuIHJlcG9ydGVkLlxuICAgKi9cbiAgYXN5bmMgX3JlcG9ydEpvYlJlc3VsdCh7am9iSWQsIHN0YXR1cywgZXJyb3IsIGhhbmRlZE9mZkF0TXMsIHdvcmtlcklkfSkge1xuICAgIGlmICghdGhpcy5zdGF0dXNSZXBvcnRlcikgcmV0dXJuXG5cbiAgICB0cnkge1xuICAgICAgYXdhaXQgdGhpcy5zdGF0dXNSZXBvcnRlci5yZXBvcnRXaXRoUmV0cnkoe2pvYklkLCBzdGF0dXMsIGVycm9yLCBoYW5kZWRPZmZBdE1zLCB3b3JrZXJJZH0pXG4gICAgfSBjYXRjaCAocmVwb3J0RXJyb3IpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoXCJCYWNrZ3JvdW5kIGpvYiBzdGF0dXMgcmVwb3J0aW5nIGZhaWxlZDpcIiwgcmVwb3J0RXJyb3IpXG4gICAgfVxuICB9XG59XG4iXX0=
@@ -19,7 +19,7 @@ export default class VelociousCliBaseCommand {
19
19
  cli: import("./index.js").default;
20
20
  _configuration: import("../configuration.js").default;
21
21
  _environmentHandler: import("../environment-handlers/base.js").default;
22
- processArgs: string[];
22
+ processArgs: string[] | undefined;
23
23
  /** @returns {string} - The directory. */
24
24
  directory(): string;
25
25
  /**
@@ -43,18 +43,18 @@ export type VelociousCliCommandArgs = {
43
43
  /**
44
44
  * - Configuration instance for the CLI.
45
45
  */
46
- configuration?: import("../configuration.js").default;
46
+ configuration?: import("../configuration.js").default | undefined;
47
47
  /**
48
48
  * - Parsed CLI arguments.
49
49
  */
50
- parsedProcessArgs?: Record<string, string | number | boolean | undefined>;
50
+ parsedProcessArgs?: Record<string, string | number | boolean | undefined> | undefined;
51
51
  /**
52
52
  * - Raw CLI arguments array.
53
53
  */
54
- processArgs?: string[];
54
+ processArgs?: string[] | undefined;
55
55
  /**
56
56
  * - Whether the CLI is running in test mode.
57
57
  */
58
- testing?: boolean;
58
+ testing?: boolean | undefined;
59
59
  };
60
60
  //# sourceMappingURL=base-command.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"base-command.d.ts","sourceRoot":"","sources":["../../../src/cli/base-command.js"],"names":[],"mappings":"AAEA;;;;;;GAMG;AAEH;IACE;;;;OAIG;IACH,wCAHG;QAAsC,IAAI,EAAlC,uBAAuB;QACY,GAAG,EAAtC,OAAO,YAAY,EAAE,OAAO;KACtC,EAWA;IALC,8BAAgB;IAChB,kCAAc;IACd,sDAAwC;IACxC,uEAAqE;IACrE,sBAAmC;IAGrC,0CAA0C;IAC1C,aADc,MAAM,CACyC;IAE7D;;;OAGG;IACH,WAFa,OAAO,CAAC,GAAG,CAAC,CAIxB;IAED;;OAEG;IACH,oBAFa,OAAO,qBAAqB,EAAE,OAAO,CAED;IAEjD,+FAA+F;IAC/F,yBADc,OAAO,iCAAiC,EAAE,OAAO,CACJ;IAE3D;;;OAGG;IACH,cAFa,OAAO,CAAC,IAAI,CAAC,CAIzB;CACF;;;;;oBAlDa,OAAO,qBAAqB,EAAE,OAAO;;;;wBACrC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,CAAC;;;;kBACrD,MAAM,EAAE;;;;cACR,OAAO"}
1
+ {"version":3,"file":"base-command.d.ts","sourceRoot":"","sources":["../../../src/cli/base-command.js"],"names":[],"mappings":"AAEA;;;;;;GAMG;AAEH;IACE;;;;OAIG;IACH,wCAHG;QAAsC,IAAI,EAAlC,uBAAuB;QACY,GAAG,EAAtC,OAAO,YAAY,EAAE,OAAO;KACtC,EAWA;IALC,8BAAgB;IAChB,kCAAc;IACd,sDAAwC;IACxC,uEAAqE;IACrE,kCAAmC;IAGrC,0CAA0C;IAC1C,aADc,MAAM,CACyC;IAE7D;;;OAGG;IACH,WAFa,OAAO,CAAC,GAAG,CAAC,CAIxB;IAED;;OAEG;IACH,oBAFa,OAAO,qBAAqB,EAAE,OAAO,CAED;IAEjD,+FAA+F;IAC/F,yBADc,OAAO,iCAAiC,EAAE,OAAO,CACJ;IAE3D;;;OAGG;IACH,cAFa,OAAO,CAAC,IAAI,CAAC,CAIzB;CACF"}
@@ -1 +1 @@
1
- {"version":3,"file":"create.d.ts","sourceRoot":"","sources":["../../../../../src/cli/commands/db/create.js"],"names":[],"mappings":"AAKA;IACE,gHAAgH;IAChH,QADW,KAAK,CAAC;QAAC,YAAY,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAC,GAAG;QAAC,8BAA8B,EAAE,MAAM,CAAA;KAAC,CAAC,GAAG,SAAS,CACtG;IAEN;;OAEG;IACH,WAFa,OAAO,CAAC,IAAI,GAAG,KAAK,CAAC;QAAC,YAAY,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAC,GAAG;QAAC,8BAA8B,EAAE,MAAM,CAAA;KAAC,CAAC,CAAC,CAqCjH;IAlBG,wBAAoF;IAoBxF;;;OAGG;IACH,mCAHW,MAAM,GACJ,OAAO,CAAC,IAAI,CAAC,CAazB;IAED;;OAEG;IACH,+BAFa,OAAO,CAAC,IAAI,CAAC,CAgBzB;CACF;wBApFuB,uBAAuB"}
1
+ {"version":3,"file":"create.d.ts","sourceRoot":"","sources":["../../../../../src/cli/commands/db/create.js"],"names":[],"mappings":"AAKA;IACE,gHAAgH;IAChH,QADW,KAAK,CAAC;QAAC,YAAY,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAC,GAAG;QAAC,8BAA8B,EAAE,MAAM,CAAA;KAAC,CAAC,GAAG,SAAS,CACtG;IAEN;;OAEG;IACH,WAFa,OAAO,CAAC,IAAI,GAAG,KAAK,CAAC;QAAC,YAAY,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAC,GAAG;QAAC,8BAA8B,EAAE,MAAM,CAAA;KAAC,CAAC,CAAC,CAqCjH;IAlBG,wBAAoF;IAoBxF;;;OAGG;IACH,mCAHW,MAAM,GACJ,OAAO,CAAC,IAAI,CAAC,CAkBzB;IAED;;OAEG;IACH,+BAFa,OAAO,CAAC,IAAI,CAAC,CAqBzB;CACF;wBA9FuB,uBAAuB"}
@@ -46,9 +46,13 @@ export default class DbCreate extends BaseCommand {
46
46
  async createDatabase(databaseIdentifier) {
47
47
  const databaseName = digg(this.getConfiguration().getDatabaseConfiguration(), databaseIdentifier, "database");
48
48
  const sqls = this.databaseConnection.createDatabaseSql(databaseName, { ifNotExists: true });
49
+ if (this.args.testing && !this.result) {
50
+ throw new Error("Expected test result collection to be initialized");
51
+ }
52
+ const result = /** @type {Array<{databaseName: string, sql: string} | {createSchemaMigrationsTableSql: string}>} */ (this.result);
49
53
  for (const sql of sqls) {
50
54
  if (this.args.testing) {
51
- this.result.push({ databaseName, sql });
55
+ result.push({ databaseName, sql });
52
56
  }
53
57
  else {
54
58
  await this.databaseConnection.query(sql);
@@ -62,9 +66,13 @@ export default class DbCreate extends BaseCommand {
62
66
  const schemaMigrationsTable = new TableData("schema_migrations", { ifNotExists: true });
63
67
  schemaMigrationsTable.string("version", { null: false, primaryKey: true });
64
68
  const createSchemaMigrationsTableSqls = await this.databaseConnection.createTableSql(schemaMigrationsTable);
69
+ if (this.args.testing && !this.result) {
70
+ throw new Error("Expected test result collection to be initialized");
71
+ }
72
+ const result = /** @type {Array<{databaseName: string, sql: string} | {createSchemaMigrationsTableSql: string}>} */ (this.result);
65
73
  for (const createSchemaMigrationsTableSql of createSchemaMigrationsTableSqls) {
66
74
  if (this.args.testing) {
67
- this.result.push({ createSchemaMigrationsTableSql });
75
+ result.push({ createSchemaMigrationsTableSql });
68
76
  }
69
77
  else {
70
78
  await this.databaseConnection.query(createSchemaMigrationsTableSql);
@@ -72,4 +80,4 @@ export default class DbCreate extends BaseCommand {
72
80
  }
73
81
  }
74
82
  }
75
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2NsaS9jb21tYW5kcy9kYi9jcmVhdGUuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxXQUFXLE1BQU0sdUJBQXVCLENBQUE7QUFDL0MsT0FBTyxFQUFDLElBQUksRUFBQyxNQUFNLFdBQVcsQ0FBQTtBQUM5QixPQUFPLEVBQUMsV0FBVyxFQUFDLE1BQU0sY0FBYyxDQUFBO0FBQ3hDLE9BQU8sU0FBUyxNQUFNLHVDQUF1QyxDQUFBO0FBRTdELE1BQU0sQ0FBQyxPQUFPLE9BQU8sUUFBUyxTQUFRLFdBQVc7SUFDL0MsZ0hBQWdIO0lBQ2hILE1BQU0sQ0FBQTtJQUVOOztPQUVHO0lBQ0gsS0FBSyxDQUFDLE9BQU87UUFDWCxLQUFLLE1BQU0sa0JBQWtCLElBQUksSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUMsc0JBQXNCLEVBQUUsRUFBRSxDQUFDO1lBQ2xGLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDLGVBQWUsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFBO1lBQ2hGLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDLGVBQWUsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFBO1lBQ2hGLE1BQU0sZ0JBQWdCLEdBQUcsV0FBVyxDQUFDLEVBQUUsRUFBRSxZQUFZLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxDQUFBO1lBQ3pFLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxRQUFRLENBQUMsQ0FBQTtZQUVwRCxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTztnQkFBRSxJQUFJLENBQUMsTUFBTSxHQUFHLEVBQUUsQ0FBQTtZQUV2QyxtSUFBbUk7WUFDbkksZ0JBQWdCLENBQUMsUUFBUSxHQUFHLGdCQUFnQixDQUFDLFdBQVcsSUFBSSxPQUFPLENBQUE7WUFFbkUsdUhBQXVIO1lBQ3ZILElBQUksWUFBWSxJQUFJLE9BQU8sSUFBSSxnQkFBZ0IsQ0FBQyxTQUFTLEVBQUUsUUFBUSxFQUFFLENBQUM7Z0JBQ3BFLE9BQU8sZ0JBQWdCLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQTtZQUM1QyxDQUFDO1lBRUQsSUFBSSxDQUFDLGtCQUFrQixHQUFHLElBQUksV0FBVyxDQUFDLGdCQUFnQixFQUFFLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDLENBQUE7WUFFcEYsTUFBTSxJQUFJLENBQUMsa0JBQWtCLENBQUMsT0FBTyxFQUFFLENBQUE7WUFFdkMsSUFBSSxDQUFDO2dCQUNILElBQUksWUFBWSxJQUFJLFFBQVEsRUFBRSxDQUFDO29CQUM3QixNQUFNLElBQUksQ0FBQyxjQUFjLENBQUMsa0JBQWtCLENBQUMsQ0FBQTtnQkFDL0MsQ0FBQztnQkFFRCxNQUFNLElBQUksQ0FBQywyQkFBMkIsRUFBRSxDQUFBO1lBQzFDLENBQUM7b0JBQVMsQ0FBQztnQkFDVCxJQUFJLFlBQVksSUFBSSxPQUFPLEVBQUUsQ0FBQztvQkFDNUIsTUFBTSxJQUFJLENBQUMsa0JBQWtCLENBQUMsS0FBSyxFQUFFLENBQUE7Z0JBQ3ZDLENBQUM7WUFDSCxDQUFDO1lBRUQsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU87Z0JBQUUsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFBO1FBQzNDLENBQUM7SUFDSCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsS0FBSyxDQUFDLGNBQWMsQ0FBQyxrQkFBa0I7UUFDckMsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDLHdCQUF3QixFQUFFLEVBQUUsa0JBQWtCLEVBQUUsVUFBVSxDQUFDLENBQUE7UUFDN0csTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLGlCQUFpQixDQUFDLFlBQVksRUFBRSxFQUFDLFdBQVcsRUFBRSxJQUFJLEVBQUMsQ0FBQyxDQUFBO1FBRXpGLEtBQUssTUFBTSxHQUFHLElBQUksSUFBSSxFQUFFLENBQUM7WUFDdkIsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO2dCQUN0QixJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFDLFlBQVksRUFBRSxHQUFHLEVBQUMsQ0FBQyxDQUFBO1lBQ3ZDLENBQUM7aUJBQU0sQ0FBQztnQkFDTixNQUFNLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUE7WUFDMUMsQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDO0lBRUQ7O09BRUc7SUFDSCxLQUFLLENBQUMsMkJBQTJCO1FBQy9CLE1BQU0scUJBQXFCLEdBQUcsSUFBSSxTQUFTLENBQUMsbUJBQW1CLEVBQUUsRUFBQyxXQUFXLEVBQUUsSUFBSSxFQUFDLENBQUMsQ0FBQTtRQUVyRixxQkFBcUIsQ0FBQyxNQUFNLENBQUMsU0FBUyxFQUFFLEVBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFDLENBQUMsQ0FBQTtRQUV4RSxNQUFNLCtCQUErQixHQUFHLE1BQU0sSUFBSSxDQUFDLGtCQUFrQixDQUFDLGNBQWMsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFBO1FBRTNHLEtBQUssTUFBTSw4QkFBOEIsSUFBSSwrQkFBK0IsRUFBRSxDQUFDO1lBQzdFLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztnQkFDdEIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBQyw4QkFBOEIsRUFBQyxDQUFDLENBQUE7WUFDcEQsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLE1BQU0sSUFBSSxDQUFDLGtCQUFrQixDQUFDLEtBQUssQ0FBQyw4QkFBOEIsQ0FBQyxDQUFBO1lBQ3JFLENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IEJhc2VDb21tYW5kIGZyb20gXCIuLi8uLi9iYXNlLWNvbW1hbmQuanNcIlxuaW1wb3J0IHtkaWdnfSBmcm9tIFwiZGlnZ2VyaXplXCJcbmltcG9ydCB7aW5jb3Jwb3JhdGV9IGZyb20gXCJpbmNvcnBvcmF0b3JcIlxuaW1wb3J0IFRhYmxlRGF0YSBmcm9tIFwiLi4vLi4vLi4vZGF0YWJhc2UvdGFibGUtZGF0YS9pbmRleC5qc1wiXG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIERiQ3JlYXRlIGV4dGVuZHMgQmFzZUNvbW1hbmR7XG4gIC8qKiBAdHlwZSB7QXJyYXk8e2RhdGFiYXNlTmFtZTogc3RyaW5nLCBzcWw6IHN0cmluZ30gfCB7Y3JlYXRlU2NoZW1hTWlncmF0aW9uc1RhYmxlU3FsOiBzdHJpbmd9PiB8IHVuZGVmaW5lZH0gKi9cbiAgcmVzdWx0XG5cbiAgLyoqXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPHZvaWQgfCBBcnJheTx7ZGF0YWJhc2VOYW1lOiBzdHJpbmcsIHNxbDogc3RyaW5nfSB8IHtjcmVhdGVTY2hlbWFNaWdyYXRpb25zVGFibGVTcWw6IHN0cmluZ30+Pn0gLSBSZXNvbHZlcyB3aXRoIFNRTCBzdGF0ZW1lbnRzIHdoZW4gcnVubmluZyBpbiBkcnkgbW9kZS5cbiAgICovXG4gIGFzeW5jIGV4ZWN1dGUoKSB7XG4gICAgZm9yIChjb25zdCBkYXRhYmFzZUlkZW50aWZpZXIgb2YgdGhpcy5nZXRDb25maWd1cmF0aW9uKCkuZ2V0RGF0YWJhc2VJZGVudGlmaWVycygpKSB7XG4gICAgICBjb25zdCBkYXRhYmFzZVR5cGUgPSB0aGlzLmdldENvbmZpZ3VyYXRpb24oKS5nZXREYXRhYmFzZVR5cGUoZGF0YWJhc2VJZGVudGlmaWVyKVxuICAgICAgY29uc3QgZGF0YWJhc2VQb29sID0gdGhpcy5nZXRDb25maWd1cmF0aW9uKCkuZ2V0RGF0YWJhc2VQb29sKGRhdGFiYXNlSWRlbnRpZmllcilcbiAgICAgIGNvbnN0IG5ld0NvbmZpZ3VyYXRpb24gPSBpbmNvcnBvcmF0ZSh7fSwgZGF0YWJhc2VQb29sLmdldENvbmZpZ3VyYXRpb24oKSlcbiAgICAgIGNvbnN0IERyaXZlckNsYXNzID0gZGlnZyhuZXdDb25maWd1cmF0aW9uLCBcImRyaXZlclwiKVxuXG4gICAgICBpZiAodGhpcy5hcmdzLnRlc3RpbmcpIHRoaXMucmVzdWx0ID0gW11cblxuICAgICAgLy8gVXNlIGEgZGF0YWJhc2Uga25vd24gdG8gZXhpc3QuIFNpbmNlIHdlIGFyZSBjcmVhdGluZyB0aGUgZGF0YWJhc2UsIGl0IHNob3VsZG4ndCBhY3R1YWxseSBleGlzdCB3aGljaCB3b3VsZCBtYWtlIGNvbm5lY3RpbmcgZmFpbC5cbiAgICAgIG5ld0NvbmZpZ3VyYXRpb24uZGF0YWJhc2UgPSBuZXdDb25maWd1cmF0aW9uLnVzZURhdGFiYXNlIHx8IFwibXlzcWxcIlxuXG4gICAgICAvLyBMb2dpbiBjYW4gZmFpbCBiZWNhdXNlIGdpdmVuIGRiIG5hbWUgZG9lc24ndCBleGlzdCwgd2hpY2ggaXQgbWlnaHQgbm90IGJlY2F1c2Ugd2UgYXJlIHRyeWluZyB0byBjcmVhdGUgaXQgcmlnaHQgbm93LlxuICAgICAgaWYgKGRhdGFiYXNlVHlwZSA9PSBcIm1zc3FsXCIgJiYgbmV3Q29uZmlndXJhdGlvbi5zcWxDb25maWc/LmRhdGFiYXNlKSB7XG4gICAgICAgIGRlbGV0ZSBuZXdDb25maWd1cmF0aW9uLnNxbENvbmZpZy5kYXRhYmFzZVxuICAgICAgfVxuXG4gICAgICB0aGlzLmRhdGFiYXNlQ29ubmVjdGlvbiA9IG5ldyBEcml2ZXJDbGFzcyhuZXdDb25maWd1cmF0aW9uLCB0aGlzLmdldENvbmZpZ3VyYXRpb24oKSlcblxuICAgICAgYXdhaXQgdGhpcy5kYXRhYmFzZUNvbm5lY3Rpb24uY29ubmVjdCgpXG5cbiAgICAgIHRyeSB7XG4gICAgICAgIGlmIChkYXRhYmFzZVR5cGUgIT0gXCJzcWxpdGVcIikge1xuICAgICAgICAgIGF3YWl0IHRoaXMuY3JlYXRlRGF0YWJhc2UoZGF0YWJhc2VJZGVudGlmaWVyKVxuICAgICAgICB9XG5cbiAgICAgICAgYXdhaXQgdGhpcy5jcmVhdGVTY2hlbWFNaWdyYXRpb25zVGFibGUoKVxuICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgaWYgKGRhdGFiYXNlVHlwZSAhPSBcIm1zc3FsXCIpIHtcbiAgICAgICAgICBhd2FpdCB0aGlzLmRhdGFiYXNlQ29ubmVjdGlvbi5jbG9zZSgpXG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMuYXJncy50ZXN0aW5nKSByZXR1cm4gdGhpcy5yZXN1bHRcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHtzdHJpbmd9IGRhdGFiYXNlSWRlbnRpZmllciAtIERhdGFiYXNlIGlkZW50aWZpZXIuXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPHZvaWQ+fSAtIFJlc29sdmVzIHdoZW4gY29tcGxldGUuXG4gICAqL1xuICBhc3luYyBjcmVhdGVEYXRhYmFzZShkYXRhYmFzZUlkZW50aWZpZXIpIHtcbiAgICBjb25zdCBkYXRhYmFzZU5hbWUgPSBkaWdnKHRoaXMuZ2V0Q29uZmlndXJhdGlvbigpLmdldERhdGFiYXNlQ29uZmlndXJhdGlvbigpLCBkYXRhYmFzZUlkZW50aWZpZXIsIFwiZGF0YWJhc2VcIilcbiAgICBjb25zdCBzcWxzID0gdGhpcy5kYXRhYmFzZUNvbm5lY3Rpb24uY3JlYXRlRGF0YWJhc2VTcWwoZGF0YWJhc2VOYW1lLCB7aWZOb3RFeGlzdHM6IHRydWV9KVxuXG4gICAgZm9yIChjb25zdCBzcWwgb2Ygc3Fscykge1xuICAgICAgaWYgKHRoaXMuYXJncy50ZXN0aW5nKSB7XG4gICAgICAgIHRoaXMucmVzdWx0LnB1c2goe2RhdGFiYXNlTmFtZSwgc3FsfSlcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGF3YWl0IHRoaXMuZGF0YWJhc2VDb25uZWN0aW9uLnF1ZXJ5KHNxbClcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQHJldHVybnMge1Byb21pc2U8dm9pZD59IC0gUmVzb2x2ZXMgd2hlbiBjb21wbGV0ZS5cbiAgICovXG4gIGFzeW5jIGNyZWF0ZVNjaGVtYU1pZ3JhdGlvbnNUYWJsZSgpIHtcbiAgICBjb25zdCBzY2hlbWFNaWdyYXRpb25zVGFibGUgPSBuZXcgVGFibGVEYXRhKFwic2NoZW1hX21pZ3JhdGlvbnNcIiwge2lmTm90RXhpc3RzOiB0cnVlfSlcblxuICAgIHNjaGVtYU1pZ3JhdGlvbnNUYWJsZS5zdHJpbmcoXCJ2ZXJzaW9uXCIsIHtudWxsOiBmYWxzZSwgcHJpbWFyeUtleTogdHJ1ZX0pXG5cbiAgICBjb25zdCBjcmVhdGVTY2hlbWFNaWdyYXRpb25zVGFibGVTcWxzID0gYXdhaXQgdGhpcy5kYXRhYmFzZUNvbm5lY3Rpb24uY3JlYXRlVGFibGVTcWwoc2NoZW1hTWlncmF0aW9uc1RhYmxlKVxuXG4gICAgZm9yIChjb25zdCBjcmVhdGVTY2hlbWFNaWdyYXRpb25zVGFibGVTcWwgb2YgY3JlYXRlU2NoZW1hTWlncmF0aW9uc1RhYmxlU3Fscykge1xuICAgICAgaWYgKHRoaXMuYXJncy50ZXN0aW5nKSB7XG4gICAgICAgIHRoaXMucmVzdWx0LnB1c2goe2NyZWF0ZVNjaGVtYU1pZ3JhdGlvbnNUYWJsZVNxbH0pXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBhd2FpdCB0aGlzLmRhdGFiYXNlQ29ubmVjdGlvbi5xdWVyeShjcmVhdGVTY2hlbWFNaWdyYXRpb25zVGFibGVTcWwpXG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iXX0=
83
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2NsaS9jb21tYW5kcy9kYi9jcmVhdGUuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxXQUFXLE1BQU0sdUJBQXVCLENBQUE7QUFDL0MsT0FBTyxFQUFDLElBQUksRUFBQyxNQUFNLFdBQVcsQ0FBQTtBQUM5QixPQUFPLEVBQUMsV0FBVyxFQUFDLE1BQU0sY0FBYyxDQUFBO0FBQ3hDLE9BQU8sU0FBUyxNQUFNLHVDQUF1QyxDQUFBO0FBRTdELE1BQU0sQ0FBQyxPQUFPLE9BQU8sUUFBUyxTQUFRLFdBQVc7SUFDL0MsZ0hBQWdIO0lBQ2hILE1BQU0sQ0FBQTtJQUVOOztPQUVHO0lBQ0gsS0FBSyxDQUFDLE9BQU87UUFDWCxLQUFLLE1BQU0sa0JBQWtCLElBQUksSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUMsc0JBQXNCLEVBQUUsRUFBRSxDQUFDO1lBQ2xGLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDLGVBQWUsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFBO1lBQ2hGLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDLGVBQWUsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFBO1lBQ2hGLE1BQU0sZ0JBQWdCLEdBQUcsV0FBVyxDQUFDLEVBQUUsRUFBRSxZQUFZLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxDQUFBO1lBQ3pFLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxRQUFRLENBQUMsQ0FBQTtZQUVwRCxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTztnQkFBRSxJQUFJLENBQUMsTUFBTSxHQUFHLEVBQUUsQ0FBQTtZQUV2QyxtSUFBbUk7WUFDbkksZ0JBQWdCLENBQUMsUUFBUSxHQUFHLGdCQUFnQixDQUFDLFdBQVcsSUFBSSxPQUFPLENBQUE7WUFFbkUsdUhBQXVIO1lBQ3ZI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QU0sOEJBQThCLElBQUksK0JBQStCLEVBQUUsQ0FBQztZQUM3RSxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7Z0JBQ3RCLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBQyw4QkFBOEIsRUFBQyxDQUFDLENBQUE7WUFDL0MsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLE1BQU0sSUFBSSxDQUFDLGtCQUFrQixDQUFDLEtBQUssQ0FBQyw4QkFBOEIsQ0FBQyxDQUFBO1lBQ3JFLENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IEJhc2VDb21tYW5kIGZyb20gXCIuLi8uLi9iYXNlLWNvbW1hbmQuanNcIlxuaW1wb3J0IHtkaWdnfSBmcm9tIFwiZGlnZ2VyaXplXCJcbmltcG9ydCB7aW5jb3Jwb3JhdGV9IGZyb20gXCJpbmNvcnBvcmF0b3JcIlxuaW1wb3J0IFRhYmxlRGF0YSBmcm9tIFwiLi4vLi4vLi4vZGF0YWJhc2UvdGFibGUtZGF0YS9pbmRleC5qc1wiXG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIERiQ3JlYXRlIGV4dGVuZHMgQmFzZUNvbW1hbmR7XG4gIC8qKiBAdHlwZSB7QXJyYXk8e2RhdGFiYXNlTmFtZTogc3RyaW5nLCBzcWw6IHN0cmluZ30gfCB7Y3JlYXRlU2NoZW1hTWlncmF0aW9uc1RhYmxlU3FsOiBzdHJpbmd9PiB8IHVuZGVmaW5lZH0gKi9cbiAgcmVzdWx0XG5cbiAgLyoqXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPHZvaWQgfCBBcnJheTx7ZGF0YWJhc2VOYW1lOiBzdHJpbmcsIHNxbDogc3RyaW5nfSB8IHtjcmVhdGVTY2hlbWFNaWdyYXRpb25zVGFibGVTcWw6IHN0cmluZ30+Pn0gLSBSZXNvbHZlcyB3aXRoIFNRTCBzdGF0ZW1lbnRzIHdoZW4gcnVubmluZyBpbiBkcnkgbW9kZS5cbiAgICovXG4gIGFzeW5jIGV4ZWN1dGUoKSB7XG4gICAgZm9yIChjb25zdCBkYXRhYmFzZUlkZW50aWZpZXIgb2YgdGhpcy5nZXRDb25maWd1cmF0aW9uKCkuZ2V0RGF0YWJhc2VJZGVudGlmaWVycygpKSB7XG4gICAgICBjb25zdCBkYXRhYmFzZVR5cGUgPSB0aGlzLmdldENvbmZpZ3VyYXRpb24oKS5nZXREYXRhYmFzZVR5cGUoZGF0YWJhc2VJZGVudGlmaWVyKVxuICAgICAgY29uc3QgZGF0YWJhc2VQb29sID0gdGhpcy5nZXRDb25maWd1cmF0aW9uKCkuZ2V0RGF0YWJhc2VQb29sKGRhdGFiYXNlSWRlbnRpZmllcilcbiAgICAgIGNvbnN0IG5ld0NvbmZpZ3VyYXRpb24gPSBpbmNvcnBvcmF0ZSh7fSwgZGF0YWJhc2VQb29sLmdldENvbmZpZ3VyYXRpb24oKSlcbiAgICAgIGNvbnN0IERyaXZlckNsYXNzID0gZGlnZyhuZXdDb25maWd1cmF0aW9uLCBcImRyaXZlclwiKVxuXG4gICAgICBpZiAodGhpcy5hcmdzLnRlc3RpbmcpIHRoaXMucmVzdWx0ID0gW11cblxuICAgICAgLy8gVXNlIGEgZGF0YWJhc2Uga25vd24gdG8gZXhpc3QuIFNpbmNlIHdlIGFyZSBjcmVhdGluZyB0aGUgZGF0YWJhc2UsIGl0IHNob3VsZG4ndCBhY3R1YWxseSBleGlzdCB3aGljaCB3b3VsZCBtYWtlIGNvbm5lY3RpbmcgZmFpbC5cbiAgICAgIG5ld0NvbmZpZ3VyYXRpb24uZGF0YWJhc2UgPSBuZXdDb25maWd1cmF0aW9uLnVzZURhdGFiYXNlIHx8IFwibXlzcWxcIlxuXG4gICAgICAvLyBMb2dpbiBjYW4gZmFpbCBiZWNhdXNlIGdpdmVuIGRiIG5hbWUgZG9lc24ndCBleGlzdCwgd2hpY2ggaXQgbWlnaHQgbm90IGJlY2F1c2Ugd2UgYXJlIHRyeWluZyB0byBjcmVhdGUgaXQgcmlnaHQgbm93LlxuICAgICAgaWYgKGRhdGFiYXNlVHlwZSA9PSBcIm1zc3FsXCIgJiYgbmV3Q29uZmlndXJhdGlvbi5zcWxDb25maWc/LmRhdGFiYXNlKSB7XG4gICAgICAgIGRlbGV0ZSBuZXdDb25maWd1cmF0aW9uLnNxbENvbmZpZy5kYXRhYmFzZVxuICAgICAgfVxuXG4gICAgICB0aGlzLmRhdGFiYXNlQ29ubmVjdGlvbiA9IG5ldyBEcml2ZXJDbGFzcyhuZXdDb25maWd1cmF0aW9uLCB0aGlzLmdldENvbmZpZ3VyYXRpb24oKSlcblxuICAgICAgYXdhaXQgdGhpcy5kYXRhYmFzZUNvbm5lY3Rpb24uY29ubmVjdCgpXG5cbiAgICAgIHRyeSB7XG4gICAgICAgIGlmIChkYXRhYmFzZVR5cGUgIT0gXCJzcWxpdGVcIikge1xuICAgICAgICAgIGF3YWl0IHRoaXMuY3JlYXRlRGF0YWJhc2UoZGF0YWJhc2VJZGVudGlmaWVyKVxuICAgICAgICB9XG5cbiAgICAgICAgYXdhaXQgdGhpcy5jcmVhdGVTY2hlbWFNaWdyYXRpb25zVGFibGUoKVxuICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgaWYgKGRhdGFiYXNlVHlwZSAhPSBcIm1zc3FsXCIpIHtcbiAgICAgICAgICBhd2FpdCB0aGlzLmRhdGFiYXNlQ29ubmVjdGlvbi5jbG9zZSgpXG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMuYXJncy50ZXN0aW5nKSByZXR1cm4gdGhpcy5yZXN1bHRcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHtzdHJpbmd9IGRhdGFiYXNlSWRlbnRpZmllciAtIERhdGFiYXNlIGlkZW50aWZpZXIuXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPHZvaWQ+fSAtIFJlc29sdmVzIHdoZW4gY29tcGxldGUuXG4gICAqL1xuICBhc3luYyBjcmVhdGVEYXRhYmFzZShkYXRhYmFzZUlkZW50aWZpZXIpIHtcbiAgICBjb25zdCBkYXRhYmFzZU5hbWUgPSBkaWdnKHRoaXMuZ2V0Q29uZmlndXJhdGlvbigpLmdldERhdGFiYXNlQ29uZmlndXJhdGlvbigpLCBkYXRhYmFzZUlkZW50aWZpZXIsIFwiZGF0YWJhc2VcIilcbiAgICBjb25zdCBzcWxzID0gdGhpcy5kYXRhYmFzZUNvbm5lY3Rpb24uY3JlYXRlRGF0YWJhc2VTcWwoZGF0YWJhc2VOYW1lLCB7aWZOb3RFeGlzdHM6IHRydWV9KVxuICAgIGlmICh0aGlzLmFyZ3MudGVzdGluZyAmJiAhdGhpcy5yZXN1bHQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIkV4cGVjdGVkIHRlc3QgcmVzdWx0IGNvbGxlY3Rpb24gdG8gYmUgaW5pdGlhbGl6ZWRcIilcbiAgICB9XG5cbiAgICBjb25zdCByZXN1bHQgPSAvKiogQHR5cGUge0FycmF5PHtkYXRhYmFzZU5hbWU6IHN0cmluZywgc3FsOiBzdHJpbmd9IHwge2NyZWF0ZVNjaGVtYU1pZ3JhdGlvbnNUYWJsZVNxbDogc3RyaW5nfT59ICovICh0aGlzLnJlc3VsdClcblxuICAgIGZvciAoY29uc3Qgc3FsIG9mIHNxbHMpIHtcbiAgICAgIGlmICh0aGlzLmFyZ3MudGVzdGluZykge1xuICAgICAgICByZXN1bHQucHVzaCh7ZGF0YWJhc2VOYW1lLCBzcWx9KVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgYXdhaXQgdGhpcy5kYXRhYmFzZUNvbm5lY3Rpb24ucXVlcnkoc3FsKVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTx2b2lkPn0gLSBSZXNvbHZlcyB3aGVuIGNvbXBsZXRlLlxuICAgKi9cbiAgYXN5bmMgY3JlYXRlU2NoZW1hTWlncmF0aW9uc1RhYmxlKCkge1xuICAgIGNvbnN0IHNjaGVtYU1pZ3JhdGlvbnNUYWJsZSA9IG5ldyBUYWJsZURhdGEoXCJzY2hlbWFfbWlncmF0aW9uc1wiLCB7aWZOb3RFeGlzdHM6IHRydWV9KVxuXG4gICAgc2NoZW1hTWlncmF0aW9uc1RhYmxlLnN0cmluZyhcInZlcnNpb25cIiwge251bGw6IGZhbHNlLCBwcmltYXJ5S2V5OiB0cnVlfSlcblxuICAgIGNvbnN0IGNyZWF0ZVNjaGVtYU1pZ3JhdGlvbnNUYWJsZVNxbHMgPSBhd2FpdCB0aGlzLmRhdGFiYXNlQ29ubmVjdGlvbi5jcmVhdGVUYWJsZVNxbChzY2hlbWFNaWdyYXRpb25zVGFibGUpXG4gICAgaWYgKHRoaXMuYXJncy50ZXN0aW5nICYmICF0aGlzLnJlc3VsdCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiRXhwZWN0ZWQgdGVzdCByZXN1bHQgY29sbGVjdGlvbiB0byBiZSBpbml0aWFsaXplZFwiKVxuICAgIH1cblxuICAgIGNvbnN0IHJlc3VsdCA9IC8qKiBAdHlwZSB7QXJyYXk8e2RhdGFiYXNlTmFtZTogc3RyaW5nLCBzcWw6IHN0cmluZ30gfCB7Y3JlYXRlU2NoZW1hTWlncmF0aW9uc1RhYmxlU3FsOiBzdHJpbmd9Pn0gKi8gKHRoaXMucmVzdWx0KVxuXG4gICAgZm9yIChjb25zdCBjcmVhdGVTY2hlbWFNaWdyYXRpb25zVGFibGVTcWwgb2YgY3JlYXRlU2NoZW1hTWlncmF0aW9uc1RhYmxlU3Fscykge1xuICAgICAgaWYgKHRoaXMuYXJncy50ZXN0aW5nKSB7XG4gICAgICAgIHJlc3VsdC5wdXNoKHtjcmVhdGVTY2hlbWFNaWdyYXRpb25zVGFibGVTcWx9KVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgYXdhaXQgdGhpcy5kYXRhYmFzZUNvbm5lY3Rpb24ucXVlcnkoY3JlYXRlU2NoZW1hTWlncmF0aW9uc1RhYmxlU3FsKVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuIl19
@@ -0,0 +1,7 @@
1
+ /** CLI command for loading DB structure SQL files. */
2
+ export default class DbSchemaLoad extends BaseCommand {
3
+ /** @returns {Promise<unknown>} - Resolves with the command result. */
4
+ execute(): Promise<unknown>;
5
+ }
6
+ import BaseCommand from "../../../base-command.js";
7
+ //# sourceMappingURL=load.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"load.d.ts","sourceRoot":"","sources":["../../../../../../src/cli/commands/db/schema/load.js"],"names":[],"mappings":"AAEA,sDAAsD;AACtD;IACE,sEAAsE;IACtE,WADc,OAAO,CAAC,OAAO,CAAC,CAG7B;CACF;wBARuB,0BAA0B"}
@@ -0,0 +1,9 @@
1
+ import BaseCommand from "../../../base-command.js";
2
+ /** CLI command for loading DB structure SQL files. */
3
+ export default class DbSchemaLoad extends BaseCommand {
4
+ /** @returns {Promise<unknown>} - Resolves with the command result. */
5
+ async execute() {
6
+ return await this.getConfiguration().getEnvironmentHandler().cliCommandsDbSchemaLoad(this);
7
+ }
8
+ }
9
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9hZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9jbGkvY29tbWFuZHMvZGIvc2NoZW1hL2xvYWQuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxXQUFXLE1BQU0sMEJBQTBCLENBQUE7QUFFbEQsc0RBQXNEO0FBQ3RELE1BQU0sQ0FBQyxPQUFPLE9BQU8sWUFBYSxTQUFRLFdBQVc7SUFDbkQsc0VBQXNFO0lBQ3RFLEtBQUssQ0FBQyxPQUFPO1FBQ1gsT0FBTyxNQUFNLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDLHFCQUFxQixFQUFFLENBQUMsdUJBQXVCLENBQUMsSUFBSSxDQUFDLENBQUE7SUFDNUYsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IEJhc2VDb21tYW5kIGZyb20gXCIuLi8uLi8uLi9iYXNlLWNvbW1hbmQuanNcIlxuXG4vKiogQ0xJIGNvbW1hbmQgZm9yIGxvYWRpbmcgREIgc3RydWN0dXJlIFNRTCBmaWxlcy4gKi9cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIERiU2NoZW1hTG9hZCBleHRlbmRzIEJhc2VDb21tYW5kIHtcbiAgLyoqIEByZXR1cm5zIHtQcm9taXNlPHVua25vd24+fSAtIFJlc29sdmVzIHdpdGggdGhlIGNvbW1hbmQgcmVzdWx0LiAqL1xuICBhc3luYyBleGVjdXRlKCkge1xuICAgIHJldHVybiBhd2FpdCB0aGlzLmdldENvbmZpZ3VyYXRpb24oKS5nZXRFbnZpcm9ubWVudEhhbmRsZXIoKS5jbGlDb21tYW5kc0RiU2NoZW1hTG9hZCh0aGlzKVxuICB9XG59XG4iXX0=
@@ -9,24 +9,36 @@ export default class VelociousCli {
9
9
  * @param {boolean} [args.testing] - Whether testing.
10
10
  */
11
11
  constructor(args?: {
12
- configuration?: import("../configuration.js").default;
13
- directory?: string;
14
- environmentHandler?: import("../environment-handlers/base.js").default;
15
- parsedProcessArgs?: Record<string, string | number | boolean | undefined>;
16
- processArgs?: string[];
17
- testing?: boolean;
12
+ configuration?: import("../configuration.js").default | undefined;
13
+ directory?: string | undefined;
14
+ environmentHandler?: import("../environment-handlers/base.js").default | undefined;
15
+ parsedProcessArgs?: Record<string, string | number | boolean | undefined> | undefined;
16
+ processArgs?: string[] | undefined;
17
+ testing?: boolean | undefined;
18
18
  });
19
19
  args: {
20
- configuration?: import("../configuration.js").default;
21
- directory?: string;
22
- environmentHandler?: import("../environment-handlers/base.js").default;
23
- parsedProcessArgs?: Record<string, string | number | boolean | undefined>;
24
- processArgs?: string[];
25
- testing?: boolean;
20
+ configuration?: import("../configuration.js").default | undefined;
21
+ directory?: string | undefined;
22
+ environmentHandler?: import("../environment-handlers/base.js").default | undefined;
23
+ parsedProcessArgs?: Record<string, string | number | boolean | undefined> | undefined;
24
+ processArgs?: string[] | undefined;
25
+ testing?: boolean | undefined;
26
26
  };
27
27
  configuration: import("../configuration.js").default;
28
28
  environmentHandler: import("../environment-handlers/base.js").default;
29
- execute(): Promise<any>;
29
+ /**
30
+ * @returns {Promise<unknown>} - Resolves with the final command result.
31
+ */
32
+ execute(): Promise<unknown>;
33
+ /**
34
+ * @param {string[]} processArgs - Process args for a single command.
35
+ * @returns {Promise<unknown>} - Resolves with the command result.
36
+ */
37
+ executeCommand(processArgs: string[]): Promise<unknown>;
38
+ /**
39
+ * @returns {Promise<string[][]>} - Command groups with process args for each command.
40
+ */
41
+ commandGroups(): Promise<string[][]>;
30
42
  /** @returns {import("../configuration.js").default} configuration */
31
43
  getConfiguration(): import("../configuration.js").default;
32
44
  /** @returns {boolean} - Whether testing. */
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/cli/index.js"],"names":[],"mappings":"AAEA;IACE;;;;;;;;OAQG;IACH,mBAPG;QAAqD,aAAa,GAA1D,OAAO,qBAAqB,EAAE,OAAO;QACvB,SAAS,GAAvB,MAAM;QACmD,kBAAkB,GAA3E,OAAO,iCAAiC,EAAE,OAAO;QACY,iBAAiB,GAA9E,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,CAAC;QACrC,WAAW,GAA3B,MAAM,EAAE;QACO,OAAO,GAAtB,OAAO;KACjB,EAUA;IANC;wBAVS,OAAO,qBAAqB,EAAE,OAAO;oBACrC,MAAM;6BACN,OAAO,iCAAiC,EAAE,OAAO;4BACjD,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,CAAC;sBACrD,MAAM,EAAE;kBACR,OAAO;MAKA;IAChB,qDAAuC;IAEvC,sEAAoE;IAKtE,wBAmBC;IAED,qEAAqE;IACrE,oBADc,OAAO,qBAAqB,EAAE,OAAO,CACH;IAEhD,6CAA6C;IAC7C,cADc,OAAO,CAGpB;CACF"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/cli/index.js"],"names":[],"mappings":"AAEA;IACE;;;;;;;;OAQG;IACH,mBAPG;QAAqD,aAAa;QAC5C,SAAS;QACkC,kBAAkB;QACd,iBAAiB;QAC9D,WAAW;QACZ,OAAO;KAChC,EAUA;IANC;;;;;;;MAAgB;IAChB,qDAAuC;IAEvC,sEAAoE;IAKtE;;OAEG;IACH,WAFa,OAAO,CAAC,OAAO,CAAC,CAe5B;IAED;;;OAGG;IACH,4BAHW,MAAM,EAAE,GACN,OAAO,CAAC,OAAO,CAAC,CA4B5B;IAED;;OAEG;IACH,iBAFa,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAoC/B;IAED,qEAAqE;IACrE,oBADc,OAAO,qBAAqB,EAAE,OAAO,CACH;IAEhD,6CAA6C;IAC7C,cADc,OAAO,CAGpB;CACF"}
@@ -18,8 +18,29 @@ export default class VelociousCli {
18
18
  this.environmentHandler.setArgs(args);
19
19
  this.environmentHandler.setConfiguration(args.configuration);
20
20
  }
21
+ /**
22
+ * @returns {Promise<unknown>} - Resolves with the final command result.
23
+ */
21
24
  async execute() {
22
- const commandParts = this.args.processArgs[0].split(":");
25
+ const commandGroups = await this.commandGroups();
26
+ let result;
27
+ for (const [index, commandProcessArgs] of commandGroups.entries()) {
28
+ if (index > 0) {
29
+ await this.getConfiguration().closeDatabaseConnections();
30
+ }
31
+ result = await this.executeCommand(commandProcessArgs);
32
+ }
33
+ return result;
34
+ }
35
+ /**
36
+ * @param {string[]} processArgs - Process args for a single command.
37
+ * @returns {Promise<unknown>} - Resolves with the command result.
38
+ */
39
+ async executeCommand(processArgs) {
40
+ if (!processArgs[0]) {
41
+ throw new Error("Missing command argument");
42
+ }
43
+ const commandParts = processArgs[0].split(":");
23
44
  const parsedCommandParts = [];
24
45
  for (let commandPart of commandParts) {
25
46
  if (commandPart == "c")
@@ -33,15 +54,52 @@ export default class VelociousCli {
33
54
  parsedCommandParts.push(commandPart);
34
55
  }
35
56
  const CommandClass = await this.environmentHandler.requireCommand({ commandParts: parsedCommandParts });
36
- const commandInstance = new CommandClass({ args: this.args, cli: this });
57
+ const commandInstance = new CommandClass({
58
+ args: Object.assign({}, this.args, { processArgs }),
59
+ cli: this
60
+ });
37
61
  await commandInstance.initialize();
38
62
  return await commandInstance.execute();
39
63
  }
64
+ /**
65
+ * @returns {Promise<string[][]>} - Command groups with process args for each command.
66
+ */
67
+ async commandGroups() {
68
+ const processArgs = this.args.processArgs || [];
69
+ const commands = await this.environmentHandler.findCommands();
70
+ const commandNames = new Set(commands.map((command) => command.name));
71
+ /** @type {string[][]} */
72
+ const groups = [];
73
+ /** @type {string[]} */
74
+ let currentGroup = [];
75
+ for (const processArg of processArgs) {
76
+ if (currentGroup.length == 0) {
77
+ if (processArg.startsWith("-"))
78
+ continue;
79
+ currentGroup = [processArg];
80
+ continue;
81
+ }
82
+ if (!processArg.startsWith("-") && commandNames.has(processArg)) {
83
+ groups.push(currentGroup);
84
+ currentGroup = [processArg];
85
+ }
86
+ else {
87
+ currentGroup.push(processArg);
88
+ }
89
+ }
90
+ if (currentGroup.length > 0) {
91
+ groups.push(currentGroup);
92
+ }
93
+ if (groups.length == 0) {
94
+ throw new Error("Missing command argument");
95
+ }
96
+ return groups;
97
+ }
40
98
  /** @returns {import("../configuration.js").default} configuration */
41
99
  getConfiguration() { return this.configuration; }
42
100
  /** @returns {boolean} - Whether testing. */
43
101
  getTesting() {
44
- return this.args.testing;
102
+ return this.args.testing || false;
45
103
  }
46
104
  }
47
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY2xpL2luZGV4LmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFlBQVk7QUFFWixNQUFNLENBQUMsT0FBTyxPQUFPLFlBQVk7SUFDL0I7Ozs7Ozs7O09BUUc7SUFDSCxZQUFZLElBQUksR0FBRyxFQUFFO1FBQ25CLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYTtZQUFFLE1BQU0sSUFBSSxLQUFLLENBQUMsb0NBQW9DLENBQUMsQ0FBQTtRQUU5RSxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQTtRQUNoQixJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUE7UUFFdkMsSUFBSSxDQUFDLGtCQUFrQixHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMscUJBQXFCLEVBQUUsQ0FBQTtRQUNwRSxJQUFJLENBQUMsa0JBQWtCLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFBO1FBQ3JDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUE7SUFDOUQsQ0FBQztJQUVELEtBQUssQ0FBQyxPQUFPO1FBQ1gsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFBO1FBQ3hELE1BQU0sa0JBQWtCLEdBQUcsRUFBRSxDQUFBO1FBRTdCLEtBQUssSUFBSSxXQUFXLElBQUksWUFBWSxFQUFFLENBQUM7WUFDckMsSUFBSSxXQUFXLElBQUksR0FBRztnQkFBRSxXQUFXLEdBQUcsU0FBUyxDQUFBO1lBQy9DLElBQUksV0FBVyxJQUFJLEdBQUc7Z0JBQUUsV0FBVyxHQUFHLFNBQVMsQ0FBQTtZQUMvQyxJQUFJLFdBQVcsSUFBSSxHQUFHO2dCQUFFLFdBQVcsR0FBRyxVQUFVLENBQUE7WUFDaEQsSUFBSSxXQUFXLElBQUksR0FBRztnQkFBRSxXQUFXLEdBQUcsUUFBUSxDQUFBO1lBRTlDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQTtRQUN0QyxDQUFDO1FBRUQsTUFBTSxZQUFZLEdBQUcsTUFBTSxJQUFJLENBQUMsa0JBQWtCLENBQUMsY0FBYyxDQUFDLEVBQUMsWUFBWSxFQUFFLGtCQUFrQixFQUFDLENBQUMsQ0FBQTtRQUNyRyxNQUFNLGVBQWUsR0FBRyxJQUFJLFlBQVksQ0FBQyxFQUFDLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSSxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUMsQ0FBQyxDQUFBO1FBRXRFLE1BQU0sZUFBZSxDQUFDLFVBQVUsRUFBRSxDQUFBO1FBRWxDLE9BQU8sTUFBTSxlQUFlLENBQUMsT0FBTyxFQUFFLENBQUE7SUFDeEMsQ0FBQztJQUVELHFFQUFxRTtJQUNyRSxnQkFBZ0IsS0FBSyxPQUFPLElBQUksQ0FBQyxhQUFhLENBQUEsQ0FBQyxDQUFDO0lBRWhELDZDQUE2QztJQUM3QyxVQUFVO1FBQ1IsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQTtJQUMxQixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBAdHMtY2hlY2tcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgVmVsb2Npb3VzQ2xpIHtcbiAgLyoqXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBhcmdzIC0gT3B0aW9ucyBvYmplY3QuXG4gICAqIEBwYXJhbSB7aW1wb3J0KFwiLi4vY29uZmlndXJhdGlvbi5qc1wiKS5kZWZhdWx0fSBbYXJncy5jb25maWd1cmF0aW9uXSAtIENvbmZpZ3VyYXRpb24gaW5zdGFuY2UuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBbYXJncy5kaXJlY3RvcnldIC0gRGlyZWN0b3J5IHBhdGguXG4gICAqIEBwYXJhbSB7aW1wb3J0KFwiLi4vZW52aXJvbm1lbnQtaGFuZGxlcnMvYmFzZS5qc1wiKS5kZWZhdWx0fSBbYXJncy5lbnZpcm9ubWVudEhhbmRsZXJdIC0gRW52aXJvbm1lbnQgaGFuZGxlci5cbiAgICogQHBhcmFtIHtSZWNvcmQ8c3RyaW5nLCBzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuIHwgdW5kZWZpbmVkPn0gW2FyZ3MucGFyc2VkUHJvY2Vzc0FyZ3NdIC0gUGFyc2VkIHByb2Nlc3MgYXJncy5cbiAgICogQHBhcmFtIHtzdHJpbmdbXX0gW2FyZ3MucHJvY2Vzc0FyZ3NdIC0gUHJvY2VzcyBhcmdzLlxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IFthcmdzLnRlc3RpbmddIC0gV2hldGhlciB0ZXN0aW5nLlxuICAgKi9cbiAgY29uc3RydWN0b3IoYXJncyA9IHt9KSB7XG4gICAgaWYgKCFhcmdzLmNvbmZpZ3VyYXRpb24pIHRocm93IG5ldyBFcnJvcihcImNvbmZpZ3VyYXRpb24gYXJndW1lbnQgaXMgcmVxdWlyZWRcIilcblxuICAgIHRoaXMuYXJncyA9IGFyZ3NcbiAgICB0aGlzLmNvbmZpZ3VyYXRpb24gPSBhcmdzLmNvbmZpZ3VyYXRpb25cblxuICAgIHRoaXMuZW52aXJvbm1lbnRIYW5kbGVyID0gYXJncy5jb25maWd1cmF0aW9uLmdldEVudmlyb25tZW50SGFuZGxlcigpXG4gICAgdGhpcy5lbnZpcm9ubWVudEhhbmRsZXIuc2V0QXJncyhhcmdzKVxuICAgIHRoaXMuZW52aXJvbm1lbnRIYW5kbGVyLnNldENvbmZpZ3VyYXRpb24oYXJncy5jb25maWd1cmF0aW9uKVxuICB9XG5cbiAgYXN5bmMgZXhlY3V0ZSgpIHtcbiAgICBjb25zdCBjb21tYW5kUGFydHMgPSB0aGlzLmFyZ3MucHJvY2Vzc0FyZ3NbMF0uc3BsaXQoXCI6XCIpXG4gICAgY29uc3QgcGFyc2VkQ29tbWFuZFBhcnRzID0gW11cblxuICAgIGZvciAobGV0IGNvbW1hbmRQYXJ0IG9mIGNvbW1hbmRQYXJ0cykge1xuICAgICAgaWYgKGNvbW1hbmRQYXJ0ID09IFwiY1wiKSBjb21tYW5kUGFydCA9IFwiY29uc29sZVwiXG4gICAgICBpZiAoY29tbWFuZFBhcnQgPT0gXCJkXCIpIGNvbW1hbmRQYXJ0ID0gXCJkZXN0cm95XCJcbiAgICAgIGlmIChjb21tYW5kUGFydCA9PSBcImdcIikgY29tbWFuZFBhcnQgPSBcImdlbmVyYXRlXCJcbiAgICAgIGlmIChjb21tYW5kUGFydCA9PSBcInNcIikgY29tbWFuZFBhcnQgPSBcInNlcnZlclwiXG5cbiAgICAgIHBhcnNlZENvbW1hbmRQYXJ0cy5wdXNoKGNvbW1hbmRQYXJ0KVxuICAgIH1cblxuICAgIGNvbnN0IENvbW1hbmRDbGFzcyA9IGF3YWl0IHRoaXMuZW52aXJvbm1lbnRIYW5kbGVyLnJlcXVpcmVDb21tYW5kKHtjb21tYW5kUGFydHM6IHBhcnNlZENvbW1hbmRQYXJ0c30pXG4gICAgY29uc3QgY29tbWFuZEluc3RhbmNlID0gbmV3IENvbW1hbmRDbGFzcyh7YXJnczogdGhpcy5hcmdzLCBjbGk6IHRoaXN9KVxuXG4gICAgYXdhaXQgY29tbWFuZEluc3RhbmNlLmluaXRpYWxpemUoKVxuXG4gICAgcmV0dXJuIGF3YWl0IGNvbW1hbmRJbnN0YW5jZS5leGVjdXRlKClcbiAgfVxuXG4gIC8qKiBAcmV0dXJucyB7aW1wb3J0KFwiLi4vY29uZmlndXJhdGlvbi5qc1wiKS5kZWZhdWx0fSBjb25maWd1cmF0aW9uICovXG4gIGdldENvbmZpZ3VyYXRpb24oKSB7IHJldHVybiB0aGlzLmNvbmZpZ3VyYXRpb24gfVxuXG4gIC8qKiBAcmV0dXJucyB7Ym9vbGVhbn0gLSBXaGV0aGVyIHRlc3RpbmcuICAqL1xuICBnZXRUZXN0aW5nKCkge1xuICAgIHJldHVybiB0aGlzLmFyZ3MudGVzdGluZ1xuICB9XG59XG4iXX0=
105
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY2xpL2luZGV4LmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFlBQVk7QUFFWixNQUFNLENBQUMsT0FBTyxPQUFPLFlBQVk7SUFDL0I7Ozs7Ozs7O09BUUc7SUFDSCxZQUFZLElBQUksR0FBRyxFQUFFO1FBQ25CLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYTtZQUFFLE1BQU0sSUFBSSxLQUFLLENBQUMsb0NBQW9DLENBQUMsQ0FBQTtRQUU5RSxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQTtRQUNoQixJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUE7UUFFdkMsSUFBSSxDQUFDLGtCQUFrQixHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMscUJBQXFCLEVBQUUsQ0FBQTtRQUNwRSxJQUFJLENBQUMsa0JBQWtCLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFBO1FBQ3JDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUE7SUFDOUQsQ0FBQztJQUVEOztPQUVHO0lBQ0gsS0FBSyxDQUFDLE9BQU87UUFDWCxNQUFNLGFBQWEsR0FBRyxNQUFNLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQTtRQUNoRCxJQUFJLE1BQU0sQ0FBQTtRQUVWLEtBQUssTUFBTSxDQUFDLEtBQUssRUFBRSxrQkFBa0IsQ0FBQyxJQUFJLGFBQWEsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDO1lBQ2xFLElBQUksS0FBSyxHQUFHLENBQUMsRUFBRSxDQUFDO2dCQUNkLE1BQU0sSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUMsd0JBQXdCLEVBQUUsQ0FBQTtZQUMxRCxDQUFDO1lBRUQsTUFBTSxHQUFHLE1BQU0sSUFBSSxDQUFDLGNBQWMsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFBO1FBQ3hELENBQUM7UUFFRCxPQUFP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UUFDM0IsQ0FBQztRQUVELElBQUksTUFBTSxDQUFDLE1BQU0sSUFBSSxDQUFDLEVBQUUsQ0FBQztZQUN2QixNQUFNLElBQUksS0FBSyxDQUFDLDBCQUEwQixDQUFDLENBQUE7UUFDN0MsQ0FBQztRQUVELE9BQU8sTUFBTSxDQUFBO0lBQ2YsQ0FBQztJQUVELHFFQUFxRTtJQUNyRSxnQkFBZ0IsS0FBSyxPQUFPLElBQUksQ0FBQyxhQUFhLENBQUEsQ0FBQyxDQUFDO0lBRWhELDZDQUE2QztJQUM3QyxVQUFVO1FBQ1IsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sSUFBSSxLQUFLLENBQUE7SUFDbkMsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQHRzLWNoZWNrXG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFZlbG9jaW91c0NsaSB7XG4gIC8qKlxuICAgKiBAcGFyYW0ge29iamVjdH0gYXJncyAtIE9wdGlvbnMgb2JqZWN0LlxuICAgKiBAcGFyYW0ge2ltcG9ydChcIi4uL2NvbmZpZ3VyYXRpb24uanNcIikuZGVmYXVsdH0gW2FyZ3MuY29uZmlndXJhdGlvbl0gLSBDb25maWd1cmF0aW9uIGluc3RhbmNlLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gW2FyZ3MuZGlyZWN0b3J5XSAtIERpcmVjdG9yeSBwYXRoLlxuICAgKiBAcGFyYW0ge2ltcG9ydChcIi4uL2Vudmlyb25tZW50LWhhbmRsZXJzL2Jhc2UuanNcIikuZGVmYXVsdH0gW2FyZ3MuZW52aXJvbm1lbnRIYW5kbGVyXSAtIEVudmlyb25tZW50IGhhbmRsZXIuXG4gICAqIEBwYXJhbSB7UmVjb3JkPHN0cmluZywgc3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhbiB8IHVuZGVmaW5lZD59IFthcmdzLnBhcnNlZFByb2Nlc3NBcmdzXSAtIFBhcnNlZCBwcm9jZXNzIGFyZ3MuXG4gICAqIEBwYXJhbSB7c3RyaW5nW119IFthcmdzLnByb2Nlc3NBcmdzXSAtIFByb2Nlc3MgYXJncy5cbiAgICogQHBhcmFtIHtib29sZWFufSBbYXJncy50ZXN0aW5nXSAtIFdoZXRoZXIgdGVzdGluZy5cbiAgICovXG4gIGNvbnN0cnVjdG9yKGFyZ3MgPSB7fSkge1xuICAgIGlmICghYXJncy5jb25maWd1cmF0aW9uKSB0aHJvdyBuZXcgRXJyb3IoXCJjb25maWd1cmF0aW9uIGFyZ3VtZW50IGlzIHJlcXVpcmVkXCIpXG5cbiAgICB0aGlzLmFyZ3MgPSBhcmdzXG4gICAgdGhpcy5jb25maWd1cmF0aW9uID0gYXJncy5jb25maWd1cmF0aW9uXG5cbiAgICB0aGlzLmVudmlyb25tZW50SGFuZGxlciA9IGFyZ3MuY29uZmlndXJhdGlvbi5nZXRFbnZpcm9ubWVudEhhbmRsZXIoKVxuICAgIHRoaXMuZW52aXJvbm1lbnRIYW5kbGVyLnNldEFyZ3MoYXJncylcbiAgICB0aGlzLmVudmlyb25tZW50SGFuZGxlci5zZXRDb25maWd1cmF0aW9uKGFyZ3MuY29uZmlndXJhdGlvbilcbiAgfVxuXG4gIC8qKlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTx1bmtub3duPn0gLSBSZXNvbHZlcyB3aXRoIHRoZSBmaW5hbCBjb21tYW5kIHJlc3VsdC5cbiAgICovXG4gIGFzeW5jIGV4ZWN1dGUoKSB7XG4gICAgY29uc3QgY29tbWFuZEdyb3VwcyA9IGF3YWl0IHRoaXMuY29tbWFuZEdyb3VwcygpXG4gICAgbGV0IHJlc3VsdFxuXG4gICAgZm9yIChjb25zdCBbaW5kZXgsIGNvbW1hbmRQcm9jZXNzQXJnc10gb2YgY29tbWFuZEdyb3Vwcy5lbnRyaWVzKCkpIHtcbiAgICAgIGlmIChpbmRleCA+IDApIHtcbiAgICAgICAgYXdhaXQgdGhpcy5nZXRDb25maWd1cmF0aW9uKCkuY2xvc2VEYXRhYmFzZUNvbm5lY3Rpb25zKClcbiAgICAgIH1cblxuICAgICAgcmVzdWx0ID0gYXdhaXQgdGhpcy5leGVjdXRlQ29tbWFuZChjb21tYW5kUHJvY2Vzc0FyZ3MpXG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc3VsdFxuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7c3RyaW5nW119IHByb2Nlc3NBcmdzIC0gUHJvY2VzcyBhcmdzIGZvciBhIHNpbmdsZSBjb21tYW5kLlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTx1bmtub3duPn0gLSBSZXNvbHZlcyB3aXRoIHRoZSBjb21tYW5kIHJlc3VsdC5cbiAgICovXG4gIGFzeW5jIGV4ZWN1dGVDb21tYW5kKHByb2Nlc3NBcmdzKSB7XG4gICAgaWYgKCFwcm9jZXNzQXJnc1swXSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiTWlzc2luZyBjb21tYW5kIGFyZ3VtZW50XCIpXG4gICAgfVxuXG4gICAgY29uc3QgY29tbWFuZFBhcnRzID0gcHJvY2Vzc0FyZ3NbMF0uc3BsaXQoXCI6XCIpXG4gICAgY29uc3QgcGFyc2VkQ29tbWFuZFBhcnRzID0gW11cblxuICAgIGZvciAobGV0IGNvbW1hbmRQYXJ0IG9mIGNvbW1hbmRQYXJ0cykge1xuICAgICAgaWYgKGNvbW1hbmRQYXJ0ID09IFwiY1wiKSBjb21tYW5kUGFydCA9IFwiY29uc29sZVwiXG4gICAgICBpZiAoY29tbWFuZFBhcnQgPT0gXCJkXCIpIGNvbW1hbmRQYXJ0ID0gXCJkZXN0cm95XCJcbiAgICAgIGlmIChjb21tYW5kUGFydCA9PSBcImdcIikgY29tbWFuZFBhcnQgPSBcImdlbmVyYXRlXCJcbiAgICAgIGlmIChjb21tYW5kUGFydCA9PSBcInNcIikgY29tbWFuZFBhcnQgPSBcInNlcnZlclwiXG5cbiAgICAgIHBhcnNlZENvbW1hbmRQYXJ0cy5wdXNoKGNvbW1hbmRQYXJ0KVxuICAgIH1cblxuICAgIGNvbnN0IENvbW1hbmRDbGFzcyA9IGF3YWl0IHRoaXMuZW52aXJvbm1lbnRIYW5kbGVyLnJlcXVpcmVDb21tYW5kKHtjb21tYW5kUGFydHM6IHBhcnNlZENvbW1hbmRQYXJ0c30pXG4gICAgY29uc3QgY29tbWFuZEluc3RhbmNlID0gbmV3IENvbW1hbmRDbGFzcyh7XG4gICAgICBhcmdzOiBPYmplY3QuYXNzaWduKHt9LCB0aGlzLmFyZ3MsIHtwcm9jZXNzQXJnc30pLFxuICAgICAgY2xpOiB0aGlzXG4gICAgfSlcblxuICAgIGF3YWl0IGNvbW1hbmRJbnN0YW5jZS5pbml0aWFsaXplKClcblxuICAgIHJldHVybiBhd2FpdCBjb21tYW5kSW5zdGFuY2UuZXhlY3V0ZSgpXG4gIH1cblxuICAvKipcbiAgICogQHJldHVybnMge1Byb21pc2U8c3RyaW5nW11bXT59IC0gQ29tbWFuZCBncm91cHMgd2l0aCBwcm9jZXNzIGFyZ3MgZm9yIGVhY2ggY29tbWFuZC5cbiAgICovXG4gIGFzeW5jIGNvbW1hbmRHcm91cHMoKSB7XG4gICAgY29uc3QgcHJvY2Vzc0FyZ3MgPSB0aGlzLmFyZ3MucHJvY2Vzc0FyZ3MgfHwgW11cbiAgICBjb25zdCBjb21tYW5kcyA9IGF3YWl0IHRoaXMuZW52aXJvbm1lbnRIYW5kbGVyLmZpbmRDb21tYW5kcygpXG4gICAgY29uc3QgY29tbWFuZE5hbWVzID0gbmV3IFNldChjb21tYW5kcy5tYXAoKGNvbW1hbmQpID0+IGNvbW1hbmQubmFtZSkpXG4gICAgLyoqIEB0eXBlIHtzdHJpbmdbXVtdfSAqL1xuICAgIGNvbnN0IGdyb3VwcyA9IFtdXG4gICAgLyoqIEB0eXBlIHtzdHJpbmdbXX0gKi9cbiAgICBsZXQgY3VycmVudEdyb3VwID0gW11cblxuICAgIGZvciAoY29uc3QgcHJvY2Vzc0FyZyBvZiBwcm9jZXNzQXJncykge1xuICAgICAgaWYgKGN1cnJlbnRHcm91cC5sZW5ndGggPT0gMCkge1xuICAgICAgICBpZiAocHJvY2Vzc0FyZy5zdGFydHNXaXRoKFwiLVwiKSkgY29udGludWVcblxuICAgICAgICBjdXJyZW50R3JvdXAgPSBbcHJvY2Vzc0FyZ11cbiAgICAgICAgY29udGludWVcbiAgICAgIH1cblxuICAgICAgaWYgKCFwcm9jZXNzQXJnLnN0YXJ0c1dpdGgoXCItXCIpICYmIGNvbW1hbmROYW1lcy5oYXMocHJvY2Vzc0FyZykpIHtcbiAgICAgICAgZ3JvdXBzLnB1c2goY3VycmVudEdyb3VwKVxuICAgICAgICBjdXJyZW50R3JvdXAgPSBbcHJvY2Vzc0FyZ11cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGN1cnJlbnRHcm91cC5wdXNoKHByb2Nlc3NBcmcpXG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGN1cnJlbnRHcm91cC5sZW5ndGggPiAwKSB7XG4gICAgICBncm91cHMucHVzaChjdXJyZW50R3JvdXApXG4gICAgfVxuXG4gICAgaWYgKGdyb3Vwcy5sZW5ndGggPT0gMCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiTWlzc2luZyBjb21tYW5kIGFyZ3VtZW50XCIpXG4gICAgfVxuXG4gICAgcmV0dXJuIGdyb3Vwc1xuICB9XG5cbiAgLyoqIEByZXR1cm5zIHtpbXBvcnQoXCIuLi9jb25maWd1cmF0aW9uLmpzXCIpLmRlZmF1bHR9IGNvbmZpZ3VyYXRpb24gKi9cbiAgZ2V0Q29uZmlndXJhdGlvbigpIHsgcmV0dXJuIHRoaXMuY29uZmlndXJhdGlvbiB9XG5cbiAgLyoqIEByZXR1cm5zIHtib29sZWFufSAtIFdoZXRoZXIgdGVzdGluZy4gICovXG4gIGdldFRlc3RpbmcoKSB7XG4gICAgcmV0dXJuIHRoaXMuYXJncy50ZXN0aW5nIHx8IGZhbHNlXG4gIH1cbn1cbiJdfQ==
@@ -1,10 +1,10 @@
1
1
  /**
2
2
  * @param {object} args - Options object.
3
3
  * @param {import("../configuration.js").default} args.configuration - Configuration instance.
4
- * @returns {Promise<BrowserCli>} browserCli
4
+ * @returns {BrowserCli} browserCli
5
5
  */
6
6
  export default function velociousUseBrowserCli({ configuration, ...restArgs }: {
7
7
  configuration: import("../configuration.js").default;
8
- }): Promise<BrowserCli>;
8
+ }): BrowserCli;
9
9
  import BrowserCli from "./browser-cli.js";
10
10
  //# sourceMappingURL=use-browser-cli.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"use-browser-cli.d.ts","sourceRoot":"","sources":["../../../src/cli/use-browser-cli.js"],"names":[],"mappings":"AAQA;;;;GAIG;AACH,+EAHG;IAAoD,aAAa,EAAzD,OAAO,qBAAqB,EAAE,OAAO;CAC7C,GAAU,OAAO,CAAC,UAAU,CAAC,CAe/B;uBAxBsB,kBAAkB"}
1
+ {"version":3,"file":"use-browser-cli.d.ts","sourceRoot":"","sources":["../../../src/cli/use-browser-cli.js"],"names":[],"mappings":"AAQA;;;;GAIG;AACH,+EAHG;IAAoD,aAAa,EAAzD,OAAO,qBAAqB,EAAE,OAAO;CAC7C,GAAU,UAAU,CAetB;uBAxBsB,kBAAkB"}
@@ -6,17 +6,17 @@ const shared = {};
6
6
  /**
7
7
  * @param {object} args - Options object.
8
8
  * @param {import("../configuration.js").default} args.configuration - Configuration instance.
9
- * @returns {Promise<BrowserCli>} browserCli
9
+ * @returns {BrowserCli} browserCli
10
10
  */
11
11
  export default function velociousUseBrowserCli({ configuration, ...restArgs }) {
12
- const browserCli = React.useMemo(async () => {
12
+ const browserCli = React.useMemo(() => {
13
13
  if (!shared.browserCli) {
14
14
  shared.browserCli = new BrowserCli({ configuration });
15
15
  shared.browserCli.enable();
16
16
  }
17
17
  return shared.browserCli;
18
- });
18
+ }, [configuration]);
19
19
  restArgsError(restArgs);
20
20
  return browserCli;
21
21
  }
22
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlLWJyb3dzZXItY2xpLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NsaS91c2UtYnJvd3Nlci1jbGkuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLE1BQU0sT0FBTyxDQUFBO0FBRXpCLE9BQU8sVUFBVSxNQUFNLGtCQUFrQixDQUFBO0FBQ3pDLE9BQU8sYUFBYSxNQUFNLDZCQUE2QixDQUFBO0FBRXZELHdDQUF3QztBQUN4QyxNQUFNLE1BQU0sR0FBRyxFQUFFLENBQUE7QUFFakI7Ozs7R0FJRztBQUNILE1BQU0sQ0FBQyxPQUFPLFVBQVUsc0JBQXNCLENBQUMsRUFBQyxhQUFhLEVBQUUsR0FBRyxRQUFRLEVBQUM7SUFDekUsTUFBTSxVQUFVLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLElBQUksRUFBRTtRQUMxQyxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQ3ZCLE1BQU0sQ0FBQyxVQUFVLEdBQUcsSUFBSSxVQUFVLENBQUMsRUFBQyxhQUFhLEVBQUMsQ0FBQyxDQUFBO1lBQ25ELE1BQU0sQ0FBQyxVQUFVLENBQUMsTUFBTSxFQUFFLENBQUE7UUFDNUIsQ0FBQztRQUVELE9BQU8sTUFBTSxDQUFDLFVBQVUsQ0FBQTtJQUMxQixDQUFDLENBQUMsQ0FBQTtJQUVGLGFBQWEsQ0FBQyxRQUFRLENBQUMsQ0FBQTtJQUV2QixPQUFPLFVBQVUsQ0FBQTtBQUNuQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiXG5cbmltcG9ydCBCcm93c2VyQ2xpIGZyb20gXCIuL2Jyb3dzZXItY2xpLmpzXCJcbmltcG9ydCByZXN0QXJnc0Vycm9yIGZyb20gXCIuLi91dGlscy9yZXN0LWFyZ3MtZXJyb3IuanNcIlxuXG4vKiogQHR5cGUge3ticm93c2VyQ2xpPzogQnJvd3NlckNsaX19ICovXG5jb25zdCBzaGFyZWQgPSB7fVxuXG4vKipcbiAqIEBwYXJhbSB7b2JqZWN0fSBhcmdzIC0gT3B0aW9ucyBvYmplY3QuXG4gKiBAcGFyYW0ge2ltcG9ydChcIi4uL2NvbmZpZ3VyYXRpb24uanNcIikuZGVmYXVsdH0gYXJncy5jb25maWd1cmF0aW9uIC0gQ29uZmlndXJhdGlvbiBpbnN0YW5jZS5cbiAqIEByZXR1cm5zIHtQcm9taXNlPEJyb3dzZXJDbGk+fSBicm93c2VyQ2xpXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHZlbG9jaW91c1VzZUJyb3dzZXJDbGkoe2NvbmZpZ3VyYXRpb24sIC4uLnJlc3RBcmdzfSkge1xuICBjb25zdCBicm93c2VyQ2xpID0gUmVhY3QudXNlTWVtbyhhc3luYyAoKSA9PiB7XG4gICAgaWYgKCFzaGFyZWQuYnJvd3NlckNsaSkge1xuICAgICAgc2hhcmVkLmJyb3dzZXJDbGkgPSBuZXcgQnJvd3NlckNsaSh7Y29uZmlndXJhdGlvbn0pXG4gICAgICBzaGFyZWQuYnJvd3NlckNsaS5lbmFibGUoKVxuICAgIH1cblxuICAgIHJldHVybiBzaGFyZWQuYnJvd3NlckNsaVxuICB9KVxuXG4gIHJlc3RBcmdzRXJyb3IocmVzdEFyZ3MpXG5cbiAgcmV0dXJuIGJyb3dzZXJDbGlcbn1cbiJdfQ==
22
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlLWJyb3dzZXItY2xpLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NsaS91c2UtYnJvd3Nlci1jbGkuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLE1BQU0sT0FBTyxDQUFBO0FBRXpCLE9BQU8sVUFBVSxNQUFNLGtCQUFrQixDQUFBO0FBQ3pDLE9BQU8sYUFBYSxNQUFNLDZCQUE2QixDQUFBO0FBRXZELHdDQUF3QztBQUN4QyxNQUFNLE1BQU0sR0FBRyxFQUFFLENBQUE7QUFFakI7Ozs7R0FJRztBQUNILE1BQU0sQ0FBQyxPQUFPLFVBQVUsc0JBQXNCLENBQUMsRUFBQyxhQUFhLEVBQUUsR0FBRyxRQUFRLEVBQUM7SUFDekUsTUFBTSxVQUFVLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUU7UUFDcEMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUN2QixNQUFNLENBQUMsVUFBVSxHQUFHLElBQUksVUFBVSxDQUFDLEVBQUMsYUFBYSxFQUFDLENBQUMsQ0FBQTtZQUNuRCxNQUFNLENBQUMsVUFBVSxDQUFDLE1BQU0sRUFBRSxDQUFBO1FBQzVCLENBQUM7UUFFRCxPQUFPLE1BQU0sQ0FBQyxVQUFVLENBQUE7SUFDMUIsQ0FBQyxFQUFFLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQTtJQUVuQixhQUFhLENBQUMsUUFBUSxDQUFDLENBQUE7SUFFdkIsT0FBTyxVQUFVLENBQUE7QUFDbkIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIlxuXG5pbXBvcnQgQnJvd3NlckNsaSBmcm9tIFwiLi9icm93c2VyLWNsaS5qc1wiXG5pbXBvcnQgcmVzdEFyZ3NFcnJvciBmcm9tIFwiLi4vdXRpbHMvcmVzdC1hcmdzLWVycm9yLmpzXCJcblxuLyoqIEB0eXBlIHt7YnJvd3NlckNsaT86IEJyb3dzZXJDbGl9fSAqL1xuY29uc3Qgc2hhcmVkID0ge31cblxuLyoqXG4gKiBAcGFyYW0ge29iamVjdH0gYXJncyAtIE9wdGlvbnMgb2JqZWN0LlxuICogQHBhcmFtIHtpbXBvcnQoXCIuLi9jb25maWd1cmF0aW9uLmpzXCIpLmRlZmF1bHR9IGFyZ3MuY29uZmlndXJhdGlvbiAtIENvbmZpZ3VyYXRpb24gaW5zdGFuY2UuXG4gKiBAcmV0dXJucyB7QnJvd3NlckNsaX0gYnJvd3NlckNsaVxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiB2ZWxvY2lvdXNVc2VCcm93c2VyQ2xpKHtjb25maWd1cmF0aW9uLCAuLi5yZXN0QXJnc30pIHtcbiAgY29uc3QgYnJvd3NlckNsaSA9IFJlYWN0LnVzZU1lbW8oKCkgPT4ge1xuICAgIGlmICghc2hhcmVkLmJyb3dzZXJDbGkpIHtcbiAgICAgIHNoYXJlZC5icm93c2VyQ2xpID0gbmV3IEJyb3dzZXJDbGkoe2NvbmZpZ3VyYXRpb259KVxuICAgICAgc2hhcmVkLmJyb3dzZXJDbGkuZW5hYmxlKClcbiAgICB9XG5cbiAgICByZXR1cm4gc2hhcmVkLmJyb3dzZXJDbGlcbiAgfSwgW2NvbmZpZ3VyYXRpb25dKVxuXG4gIHJlc3RBcmdzRXJyb3IocmVzdEFyZ3MpXG5cbiAgcmV0dXJuIGJyb3dzZXJDbGlcbn1cbiJdfQ==