velocious 1.0.147 → 1.0.149

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 (446) hide show
  1. package/README.md +15 -0
  2. package/build/src/application.d.ts +25 -16
  3. package/build/src/application.d.ts.map +1 -1
  4. package/build/src/application.js +17 -17
  5. package/build/src/cli/base-command.d.ts +26 -14
  6. package/build/src/cli/base-command.d.ts.map +1 -1
  7. package/build/src/cli/base-command.js +13 -13
  8. package/build/src/cli/browser-cli.d.ts +5 -5
  9. package/build/src/cli/browser-cli.js +6 -6
  10. package/build/src/cli/commands/db/create.d.ts +4 -4
  11. package/build/src/cli/commands/db/create.js +5 -5
  12. package/build/src/cli/commands/destroy/migration.d.ts +0 -1
  13. package/build/src/cli/commands/destroy/migration.d.ts.map +1 -1
  14. package/build/src/cli/commands/generate/base-models.d.ts +0 -1
  15. package/build/src/cli/commands/generate/base-models.d.ts.map +1 -1
  16. package/build/src/cli/commands/generate/migration.d.ts +0 -1
  17. package/build/src/cli/commands/generate/migration.d.ts.map +1 -1
  18. package/build/src/cli/commands/generate/model.d.ts +0 -1
  19. package/build/src/cli/commands/generate/model.d.ts.map +1 -1
  20. package/build/src/cli/commands/init.d.ts +0 -1
  21. package/build/src/cli/commands/init.d.ts.map +1 -1
  22. package/build/src/cli/commands/routes.d.ts +0 -1
  23. package/build/src/cli/commands/routes.d.ts.map +1 -1
  24. package/build/src/cli/commands/server.d.ts +0 -1
  25. package/build/src/cli/commands/server.d.ts.map +1 -1
  26. package/build/src/cli/commands/test.d.ts +0 -1
  27. package/build/src/cli/commands/test.d.ts.map +1 -1
  28. package/build/src/cli/index.d.ts +11 -11
  29. package/build/src/cli/index.d.ts.map +1 -1
  30. package/build/src/cli/index.js +9 -9
  31. package/build/src/cli/use-browser-cli.d.ts +2 -2
  32. package/build/src/cli/use-browser-cli.js +3 -3
  33. package/build/src/configuration-resolver.d.ts +2 -2
  34. package/build/src/configuration-resolver.js +3 -3
  35. package/build/src/configuration-types.d.ts +149 -44
  36. package/build/src/configuration-types.d.ts.map +1 -1
  37. package/build/src/configuration-types.js +43 -43
  38. package/build/src/configuration.d.ts +75 -59
  39. package/build/src/configuration.d.ts.map +1 -1
  40. package/build/src/configuration.js +68 -56
  41. package/build/src/controller.d.ts +29 -29
  42. package/build/src/controller.d.ts.map +1 -1
  43. package/build/src/controller.js +28 -28
  44. package/build/src/database/drivers/base-column.d.ts +15 -15
  45. package/build/src/database/drivers/base-column.d.ts.map +1 -1
  46. package/build/src/database/drivers/base-column.js +15 -15
  47. package/build/src/database/drivers/base-columns-index.d.ts +10 -10
  48. package/build/src/database/drivers/base-columns-index.js +11 -11
  49. package/build/src/database/drivers/base-foreign-key.d.ts +12 -12
  50. package/build/src/database/drivers/base-foreign-key.d.ts.map +1 -1
  51. package/build/src/database/drivers/base-foreign-key.js +11 -11
  52. package/build/src/database/drivers/base-table.d.ts +15 -15
  53. package/build/src/database/drivers/base-table.d.ts.map +1 -1
  54. package/build/src/database/drivers/base-table.js +15 -15
  55. package/build/src/database/drivers/base.d.ts +186 -132
  56. package/build/src/database/drivers/base.d.ts.map +1 -1
  57. package/build/src/database/drivers/base.js +143 -144
  58. package/build/src/database/drivers/mssql/column.d.ts +5 -4
  59. package/build/src/database/drivers/mssql/column.d.ts.map +1 -1
  60. package/build/src/database/drivers/mssql/column.js +3 -3
  61. package/build/src/database/drivers/mssql/connect-connection.d.ts +6 -1
  62. package/build/src/database/drivers/mssql/connect-connection.d.ts.map +1 -1
  63. package/build/src/database/drivers/mssql/connect-connection.js +6 -2
  64. package/build/src/database/drivers/mssql/index.d.ts +5 -15
  65. package/build/src/database/drivers/mssql/index.d.ts.map +1 -1
  66. package/build/src/database/drivers/mssql/index.js +57 -57
  67. package/build/src/database/drivers/mssql/options.d.ts +2 -2
  68. package/build/src/database/drivers/mssql/options.js +13 -13
  69. package/build/src/database/drivers/mssql/sql/create-database.js +5 -5
  70. package/build/src/database/drivers/mssql/structure-sql.d.ts +6 -6
  71. package/build/src/database/drivers/mssql/structure-sql.d.ts.map +1 -1
  72. package/build/src/database/drivers/mssql/structure-sql.js +23 -15
  73. package/build/src/database/drivers/mssql/table.d.ts +4 -5
  74. package/build/src/database/drivers/mssql/table.d.ts.map +1 -1
  75. package/build/src/database/drivers/mssql/table.js +7 -6
  76. package/build/src/database/drivers/mysql/column.d.ts +5 -4
  77. package/build/src/database/drivers/mysql/column.d.ts.map +1 -1
  78. package/build/src/database/drivers/mysql/column.js +3 -3
  79. package/build/src/database/drivers/mysql/index.d.ts +8 -8
  80. package/build/src/database/drivers/mysql/index.d.ts.map +1 -1
  81. package/build/src/database/drivers/mysql/index.js +45 -45
  82. package/build/src/database/drivers/mysql/options.d.ts +2 -2
  83. package/build/src/database/drivers/mysql/options.js +5 -5
  84. package/build/src/database/drivers/mysql/query.d.ts +4 -4
  85. package/build/src/database/drivers/mysql/query.d.ts.map +1 -1
  86. package/build/src/database/drivers/mysql/query.js +5 -5
  87. package/build/src/database/drivers/mysql/structure-sql.d.ts +7 -7
  88. package/build/src/database/drivers/mysql/structure-sql.d.ts.map +1 -1
  89. package/build/src/database/drivers/mysql/structure-sql.js +12 -10
  90. package/build/src/database/drivers/mysql/table.d.ts +4 -5
  91. package/build/src/database/drivers/mysql/table.d.ts.map +1 -1
  92. package/build/src/database/drivers/mysql/table.js +5 -4
  93. package/build/src/database/drivers/pgsql/column.d.ts +5 -4
  94. package/build/src/database/drivers/pgsql/column.d.ts.map +1 -1
  95. package/build/src/database/drivers/pgsql/column.js +3 -3
  96. package/build/src/database/drivers/pgsql/index.d.ts +1 -6
  97. package/build/src/database/drivers/pgsql/index.d.ts.map +1 -1
  98. package/build/src/database/drivers/pgsql/index.js +31 -31
  99. package/build/src/database/drivers/pgsql/options.d.ts +3 -3
  100. package/build/src/database/drivers/pgsql/options.js +4 -4
  101. package/build/src/database/drivers/pgsql/structure-sql.d.ts +6 -6
  102. package/build/src/database/drivers/pgsql/structure-sql.d.ts.map +1 -1
  103. package/build/src/database/drivers/pgsql/structure-sql.js +21 -14
  104. package/build/src/database/drivers/pgsql/table.d.ts +4 -5
  105. package/build/src/database/drivers/pgsql/table.d.ts.map +1 -1
  106. package/build/src/database/drivers/pgsql/table.js +4 -3
  107. package/build/src/database/drivers/sqlite/base.d.ts +22 -20
  108. package/build/src/database/drivers/sqlite/base.d.ts.map +1 -1
  109. package/build/src/database/drivers/sqlite/base.js +55 -55
  110. package/build/src/database/drivers/sqlite/column.d.ts +7 -6
  111. package/build/src/database/drivers/sqlite/column.d.ts.map +1 -1
  112. package/build/src/database/drivers/sqlite/column.js +5 -5
  113. package/build/src/database/drivers/sqlite/connection-sql-js.d.ts +5 -5
  114. package/build/src/database/drivers/sqlite/connection-sql-js.d.ts.map +1 -1
  115. package/build/src/database/drivers/sqlite/connection-sql-js.js +5 -5
  116. package/build/src/database/drivers/sqlite/foreign-key.d.ts +4 -4
  117. package/build/src/database/drivers/sqlite/foreign-key.d.ts.map +1 -1
  118. package/build/src/database/drivers/sqlite/foreign-key.js +4 -4
  119. package/build/src/database/drivers/sqlite/index.js +3 -3
  120. package/build/src/database/drivers/sqlite/index.web.d.ts +9 -2
  121. package/build/src/database/drivers/sqlite/index.web.d.ts.map +1 -1
  122. package/build/src/database/drivers/sqlite/index.web.js +8 -5
  123. package/build/src/database/drivers/sqlite/options.d.ts +3 -3
  124. package/build/src/database/drivers/sqlite/options.js +4 -4
  125. package/build/src/database/drivers/sqlite/query.d.ts +4 -4
  126. package/build/src/database/drivers/sqlite/query.d.ts.map +1 -1
  127. package/build/src/database/drivers/sqlite/query.js +5 -5
  128. package/build/src/database/drivers/sqlite/query.native.d.ts +9 -1
  129. package/build/src/database/drivers/sqlite/query.native.d.ts.map +1 -1
  130. package/build/src/database/drivers/sqlite/query.native.js +7 -1
  131. package/build/src/database/drivers/sqlite/query.web.d.ts +4 -4
  132. package/build/src/database/drivers/sqlite/query.web.d.ts.map +1 -1
  133. package/build/src/database/drivers/sqlite/query.web.js +5 -5
  134. package/build/src/database/drivers/sqlite/sql/alter-table.js +5 -5
  135. package/build/src/database/drivers/sqlite/structure-sql.d.ts +3 -3
  136. package/build/src/database/drivers/sqlite/structure-sql.js +5 -5
  137. package/build/src/database/drivers/sqlite/table.d.ts +7 -8
  138. package/build/src/database/drivers/sqlite/table.d.ts.map +1 -1
  139. package/build/src/database/drivers/sqlite/table.js +10 -9
  140. package/build/src/database/drivers/structure-sql/utils.d.ts +8 -8
  141. package/build/src/database/drivers/structure-sql/utils.js +9 -9
  142. package/build/src/database/handler.d.ts +1 -1
  143. package/build/src/database/handler.js +2 -2
  144. package/build/src/database/initializer-from-require-context.d.ts +5 -5
  145. package/build/src/database/initializer-from-require-context.js +6 -6
  146. package/build/src/database/migration/index.d.ts +98 -62
  147. package/build/src/database/migration/index.d.ts.map +1 -1
  148. package/build/src/database/migration/index.js +74 -74
  149. package/build/src/database/migrator/files-finder.d.ts +3 -3
  150. package/build/src/database/migrator/files-finder.js +4 -4
  151. package/build/src/database/migrator/types.d.ts +12 -0
  152. package/build/src/database/migrator/types.d.ts.map +1 -1
  153. package/build/src/database/migrator/types.js +1 -1
  154. package/build/src/database/migrator.d.ts +24 -24
  155. package/build/src/database/migrator.d.ts.map +1 -1
  156. package/build/src/database/migrator.js +25 -25
  157. package/build/src/database/pool/async-tracked-multi-connection.d.ts +8 -8
  158. package/build/src/database/pool/async-tracked-multi-connection.js +18 -18
  159. package/build/src/database/pool/base-methods-forward.d.ts +2 -2
  160. package/build/src/database/pool/base-methods-forward.js +3 -3
  161. package/build/src/database/pool/base.d.ts +19 -19
  162. package/build/src/database/pool/base.js +20 -20
  163. package/build/src/database/pool/single-multi-use.js +6 -6
  164. package/build/src/database/query/alter-table-base.d.ts +3 -3
  165. package/build/src/database/query/alter-table-base.js +5 -5
  166. package/build/src/database/query/base.d.ts +5 -5
  167. package/build/src/database/query/base.d.ts.map +1 -1
  168. package/build/src/database/query/base.js +6 -6
  169. package/build/src/database/query/create-database-base.d.ts +11 -2
  170. package/build/src/database/query/create-database-base.d.ts.map +1 -1
  171. package/build/src/database/query/create-database-base.js +6 -6
  172. package/build/src/database/query/create-index-base.d.ts +25 -7
  173. package/build/src/database/query/create-index-base.d.ts.map +1 -1
  174. package/build/src/database/query/create-index-base.js +9 -9
  175. package/build/src/database/query/create-table-base.d.ts +6 -6
  176. package/build/src/database/query/create-table-base.js +7 -7
  177. package/build/src/database/query/delete-base.d.ts +6 -6
  178. package/build/src/database/query/delete-base.d.ts.map +1 -1
  179. package/build/src/database/query/delete-base.js +5 -5
  180. package/build/src/database/query/drop-table-base.d.ts +5 -5
  181. package/build/src/database/query/drop-table-base.js +7 -7
  182. package/build/src/database/query/from-base.d.ts +4 -4
  183. package/build/src/database/query/from-base.js +5 -5
  184. package/build/src/database/query/from-plain.d.ts +1 -1
  185. package/build/src/database/query/from-plain.js +2 -2
  186. package/build/src/database/query/from-table.d.ts +1 -1
  187. package/build/src/database/query/from-table.js +2 -2
  188. package/build/src/database/query/index.d.ts +88 -48
  189. package/build/src/database/query/index.d.ts.map +1 -1
  190. package/build/src/database/query/index.js +46 -46
  191. package/build/src/database/query/insert-base.d.ts +16 -16
  192. package/build/src/database/query/insert-base.d.ts.map +1 -1
  193. package/build/src/database/query/insert-base.js +12 -12
  194. package/build/src/database/query/join-base.d.ts +4 -4
  195. package/build/src/database/query/join-base.js +5 -5
  196. package/build/src/database/query/join-object.d.ts +6 -6
  197. package/build/src/database/query/join-object.js +7 -7
  198. package/build/src/database/query/join-plain.d.ts +1 -1
  199. package/build/src/database/query/join-plain.js +2 -2
  200. package/build/src/database/query/model-class-query.d.ts +28 -28
  201. package/build/src/database/query/model-class-query.d.ts.map +1 -1
  202. package/build/src/database/query/model-class-query.js +25 -25
  203. package/build/src/database/query/order-base.d.ts +4 -4
  204. package/build/src/database/query/order-base.js +5 -5
  205. package/build/src/database/query/order-plain.d.ts +2 -2
  206. package/build/src/database/query/order-plain.js +3 -3
  207. package/build/src/database/query/preloader/belongs-to.d.ts +3 -3
  208. package/build/src/database/query/preloader/belongs-to.d.ts.map +1 -1
  209. package/build/src/database/query/preloader/belongs-to.js +15 -13
  210. package/build/src/database/query/preloader/has-many.d.ts +3 -3
  211. package/build/src/database/query/preloader/has-many.js +7 -7
  212. package/build/src/database/query/preloader/has-one.d.ts +3 -3
  213. package/build/src/database/query/preloader/has-one.js +7 -7
  214. package/build/src/database/query/preloader.d.ts +6 -6
  215. package/build/src/database/query/preloader.d.ts.map +1 -1
  216. package/build/src/database/query/preloader.js +5 -5
  217. package/build/src/database/query/select-base.d.ts +3 -3
  218. package/build/src/database/query/select-base.js +4 -4
  219. package/build/src/database/query/select-plain.d.ts +1 -1
  220. package/build/src/database/query/select-plain.js +2 -2
  221. package/build/src/database/query/select-table-and-column.d.ts +2 -2
  222. package/build/src/database/query/select-table-and-column.js +3 -3
  223. package/build/src/database/query/update-base.d.ts +10 -10
  224. package/build/src/database/query/update-base.d.ts.map +1 -1
  225. package/build/src/database/query/update-base.js +7 -7
  226. package/build/src/database/query/where-base.d.ts +4 -4
  227. package/build/src/database/query/where-base.js +5 -5
  228. package/build/src/database/query/where-hash.d.ts +8 -8
  229. package/build/src/database/query/where-hash.d.ts.map +1 -1
  230. package/build/src/database/query/where-hash.js +9 -9
  231. package/build/src/database/query/where-plain.d.ts +2 -2
  232. package/build/src/database/query/where-plain.js +3 -3
  233. package/build/src/database/query-parser/base-query-parser.d.ts +3 -3
  234. package/build/src/database/query-parser/base-query-parser.js +4 -4
  235. package/build/src/database/query-parser/from-parser.d.ts +4 -4
  236. package/build/src/database/query-parser/from-parser.d.ts.map +1 -1
  237. package/build/src/database/query-parser/from-parser.js +5 -5
  238. package/build/src/database/query-parser/group-parser.d.ts +4 -4
  239. package/build/src/database/query-parser/group-parser.js +5 -5
  240. package/build/src/database/query-parser/joins-parser.d.ts +3 -3
  241. package/build/src/database/query-parser/joins-parser.js +4 -4
  242. package/build/src/database/query-parser/limit-parser.d.ts +3 -3
  243. package/build/src/database/query-parser/limit-parser.js +4 -4
  244. package/build/src/database/query-parser/options.d.ts +35 -20
  245. package/build/src/database/query-parser/options.d.ts.map +1 -1
  246. package/build/src/database/query-parser/options.js +19 -19
  247. package/build/src/database/query-parser/order-parser.d.ts +3 -3
  248. package/build/src/database/query-parser/order-parser.js +4 -4
  249. package/build/src/database/query-parser/select-parser.d.ts +3 -3
  250. package/build/src/database/query-parser/select-parser.js +4 -4
  251. package/build/src/database/query-parser/where-parser.d.ts +3 -3
  252. package/build/src/database/query-parser/where-parser.js +4 -4
  253. package/build/src/database/record/index.d.ts +197 -186
  254. package/build/src/database/record/index.d.ts.map +1 -1
  255. package/build/src/database/record/index.js +190 -169
  256. package/build/src/database/record/instance-relationships/base.d.ts +21 -15
  257. package/build/src/database/record/instance-relationships/base.d.ts.map +1 -1
  258. package/build/src/database/record/instance-relationships/base.js +15 -15
  259. package/build/src/database/record/instance-relationships/belongs-to.d.ts +3 -3
  260. package/build/src/database/record/instance-relationships/belongs-to.d.ts.map +1 -1
  261. package/build/src/database/record/instance-relationships/belongs-to.js +4 -4
  262. package/build/src/database/record/instance-relationships/has-many.d.ts +21 -15
  263. package/build/src/database/record/instance-relationships/has-many.d.ts.map +1 -1
  264. package/build/src/database/record/instance-relationships/has-many.js +23 -17
  265. package/build/src/database/record/instance-relationships/has-one.d.ts +4 -4
  266. package/build/src/database/record/instance-relationships/has-one.d.ts.map +1 -1
  267. package/build/src/database/record/instance-relationships/has-one.js +7 -7
  268. package/build/src/database/record/relationships/base.d.ts +48 -15
  269. package/build/src/database/record/relationships/base.d.ts.map +1 -1
  270. package/build/src/database/record/relationships/base.js +16 -16
  271. package/build/src/database/record/relationships/belongs-to.js +3 -3
  272. package/build/src/database/record/relationships/has-many.js +3 -3
  273. package/build/src/database/record/relationships/has-one.js +3 -3
  274. package/build/src/database/record/user-module.d.ts +3 -3
  275. package/build/src/database/record/user-module.js +4 -4
  276. package/build/src/database/record/validators/base.d.ts +9 -9
  277. package/build/src/database/record/validators/base.d.ts.map +1 -1
  278. package/build/src/database/record/validators/base.js +8 -8
  279. package/build/src/database/record/validators/presence.d.ts.map +1 -1
  280. package/build/src/database/record/validators/presence.js +6 -5
  281. package/build/src/database/record/validators/uniqueness.js +7 -7
  282. package/build/src/database/table-data/index.d.ts +53 -50
  283. package/build/src/database/table-data/index.d.ts.map +1 -1
  284. package/build/src/database/table-data/index.js +51 -51
  285. package/build/src/database/table-data/table-column.d.ts +84 -51
  286. package/build/src/database/table-data/table-column.d.ts.map +1 -1
  287. package/build/src/database/table-data/table-column.js +57 -56
  288. package/build/src/database/table-data/table-foreign-key.d.ts +15 -15
  289. package/build/src/database/table-data/table-foreign-key.js +16 -16
  290. package/build/src/database/table-data/table-index.d.ts +13 -7
  291. package/build/src/database/table-data/table-index.d.ts.map +1 -1
  292. package/build/src/database/table-data/table-index.js +8 -8
  293. package/build/src/database/table-data/table-reference.d.ts +2 -2
  294. package/build/src/database/table-data/table-reference.js +3 -3
  295. package/build/src/database/use-database.d.ts +3 -3
  296. package/build/src/database/use-database.js +4 -4
  297. package/build/src/environment-handlers/base.d.ts +84 -66
  298. package/build/src/environment-handlers/base.d.ts.map +1 -1
  299. package/build/src/environment-handlers/base.js +58 -58
  300. package/build/src/environment-handlers/browser.d.ts +9 -9
  301. package/build/src/environment-handlers/browser.d.ts.map +1 -1
  302. package/build/src/environment-handlers/browser.js +18 -18
  303. package/build/src/environment-handlers/node/cli/commands/destroy/migration.d.ts +1 -1
  304. package/build/src/environment-handlers/node/cli/commands/destroy/migration.js +2 -2
  305. package/build/src/environment-handlers/node/cli/commands/generate/base-models.d.ts +4 -4
  306. package/build/src/environment-handlers/node/cli/commands/generate/base-models.js +11 -11
  307. package/build/src/environment-handlers/node/cli/commands/generate/migration.d.ts +1 -1
  308. package/build/src/environment-handlers/node/cli/commands/generate/migration.js +2 -2
  309. package/build/src/environment-handlers/node/cli/commands/generate/model.d.ts +1 -1
  310. package/build/src/environment-handlers/node/cli/commands/generate/model.js +2 -2
  311. package/build/src/environment-handlers/node/cli/commands/init.d.ts +1 -1
  312. package/build/src/environment-handlers/node/cli/commands/init.js +2 -2
  313. package/build/src/environment-handlers/node/cli/commands/routes.d.ts +5 -5
  314. package/build/src/environment-handlers/node/cli/commands/routes.js +6 -6
  315. package/build/src/environment-handlers/node/cli/commands/server.js +3 -3
  316. package/build/src/environment-handlers/node.d.ts +5 -40
  317. package/build/src/environment-handlers/node.d.ts.map +1 -1
  318. package/build/src/environment-handlers/node.js +46 -46
  319. package/build/src/error-logger.d.ts +3 -3
  320. package/build/src/error-logger.d.ts.map +1 -1
  321. package/build/src/error-logger.js +5 -5
  322. package/build/src/http-client/header.d.ts +2 -2
  323. package/build/src/http-client/header.js +3 -3
  324. package/build/src/http-client/index.d.ts +10 -10
  325. package/build/src/http-client/index.d.ts.map +1 -1
  326. package/build/src/http-client/index.js +11 -11
  327. package/build/src/http-client/request.d.ts +14 -14
  328. package/build/src/http-client/request.js +15 -15
  329. package/build/src/http-client/response.d.ts +7 -7
  330. package/build/src/http-client/response.d.ts.map +1 -1
  331. package/build/src/http-client/response.js +8 -8
  332. package/build/src/http-client/websocket-client.d.ts +28 -28
  333. package/build/src/http-client/websocket-client.d.ts.map +1 -1
  334. package/build/src/http-client/websocket-client.js +26 -26
  335. package/build/src/http-server/client/index.d.ts +13 -13
  336. package/build/src/http-server/client/index.d.ts.map +1 -1
  337. package/build/src/http-server/client/index.js +14 -14
  338. package/build/src/http-server/client/params-to-object.d.ts +15 -15
  339. package/build/src/http-server/client/params-to-object.d.ts.map +1 -1
  340. package/build/src/http-server/client/params-to-object.js +17 -13
  341. package/build/src/http-server/client/request-buffer/form-data-part.d.ts +7 -7
  342. package/build/src/http-server/client/request-buffer/form-data-part.js +8 -8
  343. package/build/src/http-server/client/request-buffer/header.d.ts +2 -2
  344. package/build/src/http-server/client/request-buffer/header.js +3 -3
  345. package/build/src/http-server/client/request-buffer/index.d.ts +20 -20
  346. package/build/src/http-server/client/request-buffer/index.js +22 -22
  347. package/build/src/http-server/client/request-parser.d.ts +21 -20
  348. package/build/src/http-server/client/request-parser.d.ts.map +1 -1
  349. package/build/src/http-server/client/request-parser.js +22 -21
  350. package/build/src/http-server/client/request-runner.d.ts +6 -6
  351. package/build/src/http-server/client/request-runner.d.ts.map +1 -1
  352. package/build/src/http-server/client/request-runner.js +17 -4
  353. package/build/src/http-server/client/request.d.ts +9 -8
  354. package/build/src/http-server/client/request.d.ts.map +1 -1
  355. package/build/src/http-server/client/request.js +9 -8
  356. package/build/src/http-server/client/response.d.ts +17 -17
  357. package/build/src/http-server/client/response.js +18 -18
  358. package/build/src/http-server/client/uploaded-file/memory-uploaded-file.d.ts +6 -6
  359. package/build/src/http-server/client/uploaded-file/memory-uploaded-file.js +9 -9
  360. package/build/src/http-server/client/uploaded-file/temporary-uploaded-file.d.ts +6 -6
  361. package/build/src/http-server/client/uploaded-file/temporary-uploaded-file.js +9 -9
  362. package/build/src/http-server/client/uploaded-file/uploaded-file.d.ts +7 -7
  363. package/build/src/http-server/client/uploaded-file/uploaded-file.js +8 -8
  364. package/build/src/http-server/client/websocket-request.d.ts +17 -13
  365. package/build/src/http-server/client/websocket-request.d.ts.map +1 -1
  366. package/build/src/http-server/client/websocket-request.js +10 -10
  367. package/build/src/http-server/client/websocket-session.d.ts +26 -26
  368. package/build/src/http-server/client/websocket-session.d.ts.map +1 -1
  369. package/build/src/http-server/client/websocket-session.js +27 -27
  370. package/build/src/http-server/index.d.ts +19 -19
  371. package/build/src/http-server/index.d.ts.map +1 -1
  372. package/build/src/http-server/index.js +20 -20
  373. package/build/src/http-server/server-client.d.ts +13 -13
  374. package/build/src/http-server/server-client.d.ts.map +1 -1
  375. package/build/src/http-server/server-client.js +14 -14
  376. package/build/src/http-server/websocket-events-host.d.ts +7 -7
  377. package/build/src/http-server/websocket-events-host.d.ts.map +1 -1
  378. package/build/src/http-server/websocket-events-host.js +7 -7
  379. package/build/src/http-server/websocket-events.d.ts +7 -7
  380. package/build/src/http-server/websocket-events.d.ts.map +1 -1
  381. package/build/src/http-server/websocket-events.js +7 -7
  382. package/build/src/http-server/worker-handler/index.d.ts +22 -22
  383. package/build/src/http-server/worker-handler/index.d.ts.map +1 -1
  384. package/build/src/http-server/worker-handler/index.js +20 -20
  385. package/build/src/http-server/worker-handler/worker-thread.d.ts +17 -17
  386. package/build/src/http-server/worker-handler/worker-thread.d.ts.map +1 -1
  387. package/build/src/http-server/worker-handler/worker-thread.js +16 -16
  388. package/build/src/initializer.d.ts +6 -6
  389. package/build/src/initializer.js +7 -7
  390. package/build/src/logger.d.ts +38 -34
  391. package/build/src/logger.d.ts.map +1 -1
  392. package/build/src/logger.js +53 -47
  393. package/build/src/routes/app-routes.d.ts +2 -2
  394. package/build/src/routes/app-routes.js +3 -3
  395. package/build/src/routes/base-route.d.ts +22 -22
  396. package/build/src/routes/base-route.d.ts.map +1 -1
  397. package/build/src/routes/base-route.js +21 -21
  398. package/build/src/routes/basic-route.d.ts +3 -3
  399. package/build/src/routes/basic-route.js +15 -15
  400. package/build/src/routes/get-route.d.ts +2 -2
  401. package/build/src/routes/get-route.js +8 -8
  402. package/build/src/routes/index.d.ts +2 -2
  403. package/build/src/routes/index.js +3 -3
  404. package/build/src/routes/namespace-route.d.ts +2 -2
  405. package/build/src/routes/namespace-route.js +8 -8
  406. package/build/src/routes/post-route.d.ts +2 -2
  407. package/build/src/routes/post-route.js +8 -8
  408. package/build/src/routes/resolver.d.ts +21 -19
  409. package/build/src/routes/resolver.d.ts.map +1 -1
  410. package/build/src/routes/resolver.js +48 -26
  411. package/build/src/routes/resource-route.d.ts +6 -6
  412. package/build/src/routes/resource-route.js +12 -12
  413. package/build/src/testing/format-value.d.ts +6 -6
  414. package/build/src/testing/format-value.d.ts.map +1 -1
  415. package/build/src/testing/format-value.js +11 -11
  416. package/build/src/testing/request-client.d.ts +10 -10
  417. package/build/src/testing/request-client.d.ts.map +1 -1
  418. package/build/src/testing/request-client.js +11 -11
  419. package/build/src/testing/test-files-finder.d.ts +16 -16
  420. package/build/src/testing/test-files-finder.js +17 -17
  421. package/build/src/testing/test-runner.d.ts +78 -39
  422. package/build/src/testing/test-runner.d.ts.map +1 -1
  423. package/build/src/testing/test-runner.js +40 -40
  424. package/build/src/testing/test.d.ts +61 -61
  425. package/build/src/testing/test.d.ts.map +1 -1
  426. package/build/src/testing/test.js +77 -56
  427. package/build/src/utils/backtrace-cleaner.d.ts +4 -4
  428. package/build/src/utils/backtrace-cleaner.js +5 -5
  429. package/build/src/utils/ensure-error.d.ts +3 -3
  430. package/build/src/utils/ensure-error.d.ts.map +1 -1
  431. package/build/src/utils/ensure-error.js +3 -3
  432. package/build/src/utils/file-exists.d.ts +2 -2
  433. package/build/src/utils/file-exists.js +3 -3
  434. package/build/src/utils/nest-callbacks.d.ts +3 -3
  435. package/build/src/utils/nest-callbacks.js +4 -4
  436. package/build/src/utils/rest-args-error.d.ts +2 -2
  437. package/build/src/utils/rest-args-error.js +3 -3
  438. package/build/src/utils/singularize-model-name.d.ts +2 -2
  439. package/build/src/utils/singularize-model-name.js +3 -3
  440. package/build/src/utils/with-tracked-stack-async-hooks.d.ts +4 -4
  441. package/build/src/utils/with-tracked-stack-async-hooks.d.ts.map +1 -1
  442. package/build/src/utils/with-tracked-stack-async-hooks.js +5 -5
  443. package/build/src/utils/with-tracked-stack.d.ts +5 -4
  444. package/build/src/utils/with-tracked-stack.d.ts.map +1 -1
  445. package/build/src/utils/with-tracked-stack.js +12 -18
  446. package/package.json +1 -1
@@ -1,21 +1,21 @@
1
1
  // @ts-check
2
2
  /**
3
3
  * @typedef {object} AddColumnArgsType
4
- * @property {any} [default]
5
- * @property {object} [foreignKey]
6
- * @property {boolean | {unique: boolean}} [index]
7
- * @property {boolean} [null]
8
- * @property {boolean} [primaryKey]
9
- * @property {boolean} [unique]
4
+ * @property {unknown} [default] - Default value for the column.
5
+ * @property {object} [foreignKey] - Foreign key definition for the column.
6
+ * @property {boolean | {unique: boolean}} [index] - Whether to add an index (optionally unique).
7
+ * @property {boolean} [null] - Whether the column allows null values.
8
+ * @property {boolean} [primaryKey] - Whether the column is a primary key.
9
+ * @property {boolean} [unique] - Whether the column enforces uniqueness.
10
10
  */
11
11
  /**
12
12
  * @typedef {object} CreateTableIdArgsType
13
- * @property {any} [default]
14
- * @property {string} [type]
13
+ * @property {unknown} [default] - Default value for the ID column.
14
+ * @property {string} [type] - Column type for the ID column.
15
15
  */
16
16
  /**
17
17
  * @typedef {object} CreateTableArgsType
18
- * @property {CreateTableIdArgsType | false} [id]
18
+ * @property {CreateTableIdArgsType | false} [id] - ID column options or false to skip ID.
19
19
  */
20
20
  /**
21
21
  * @typedef {(table: TableData) => void} CreateTableCallbackType
@@ -28,21 +28,21 @@ class NotImplementedError extends Error {
28
28
  export { NotImplementedError };
29
29
  export default class VelociousDatabaseMigration {
30
30
  /**
31
- * @param {string[]} databaseIdentifiers
32
- * @returns {void} - Result.
31
+ * @param {string[]} databaseIdentifiers - Database identifiers.
32
+ * @returns {void} - No return value.
33
33
  */
34
34
  static onDatabases(databaseIdentifiers) {
35
35
  this._databaseIdentifiers = databaseIdentifiers;
36
36
  }
37
- /** @returns {string[] | undefined} - Result. */
37
+ /** @returns {string[] | undefined} - The database identifiers. */
38
38
  static getDatabaseIdentifiers() {
39
39
  return this._databaseIdentifiers;
40
40
  }
41
41
  /**
42
- * @param {object} args
43
- * @param {import("../../configuration.js").default} args.configuration
44
- * @param {string} args.databaseIdentifier
45
- * @param {import("../drivers/base.js").default} args.db
42
+ * @param {object} args - Options object.
43
+ * @param {import("../../configuration.js").default} args.configuration - Configuration instance.
44
+ * @param {string} args.databaseIdentifier - Database identifier.
45
+ * @param {import("../drivers/base.js").default} args.db - Database connection.
46
46
  */
47
47
  constructor({ configuration, databaseIdentifier = "default", db }) {
48
48
  if (!databaseIdentifier)
@@ -58,7 +58,7 @@ export default class VelociousDatabaseMigration {
58
58
  throw new Error("No database identifier set");
59
59
  return this._databaseIdentifier;
60
60
  }
61
- /** @returns {import("../drivers/base.js").default} - Result. */
61
+ /** @returns {import("../drivers/base.js").default} - The driver. */
62
62
  getDriver() { return this._db; }
63
63
  connection() { return this.getDriver(); }
64
64
  async change() {
@@ -71,18 +71,18 @@ export default class VelociousDatabaseMigration {
71
71
  throw new NotImplementedError("'change' not implemented");
72
72
  }
73
73
  /**
74
- * @param {string} sql
75
- * @returns {Promise<import("../drivers/base.js").QueryResultType>} - Result.
74
+ * @param {string} sql - SQL string.
75
+ * @returns {Promise<import("../drivers/base.js").QueryResultType>} - Resolves with the execute.
76
76
  */
77
77
  async execute(sql) {
78
78
  return await this.connection().query(sql);
79
79
  }
80
80
  /**
81
- * @param {string} tableName
82
- * @param {string} columnName
83
- * @param {string} columnType
84
- * @param {AddColumnArgsType} [args]
85
- * @returns {Promise<void>} - Result.
81
+ * @param {string} tableName - Table name.
82
+ * @param {string} columnName - Column name.
83
+ * @param {string} columnType - Column type.
84
+ * @param {AddColumnArgsType} [args] - Options object.
85
+ * @returns {Promise<void>} - Resolves when complete.
86
86
  */
87
87
  async addColumn(tableName, columnName, columnType, args) {
88
88
  if (!columnType)
@@ -96,9 +96,9 @@ export default class VelociousDatabaseMigration {
96
96
  }
97
97
  }
98
98
  /**
99
- * @param {string} tableName
100
- * @param {string} columnName
101
- * @returns {Promise<void>} - Result.
99
+ * @param {string} tableName - Table name.
100
+ * @param {string} columnName - Column name.
101
+ * @returns {Promise<void>} - Resolves when complete.
102
102
  */
103
103
  async removeColumn(tableName, columnName) {
104
104
  const tableColumnArgs = Object.assign({ dropColumn: true });
@@ -111,15 +111,15 @@ export default class VelociousDatabaseMigration {
111
111
  }
112
112
  /**
113
113
  * @typedef {object} AddIndexArgsType
114
- * @property {boolean} [ifNotExists]
115
- * @property {string} [name]
116
- * @property {boolean} [unique]
114
+ * @property {boolean} [ifNotExists] - Skip creation if the index already exists.
115
+ * @property {string} [name] - Explicit index name to use.
116
+ * @property {boolean} [unique] - Whether the index should be unique.
117
117
  */
118
118
  /**
119
- * @param {string} tableName
120
- * @param {Array<string | import("../table-data/table-column.js").default>} columns
121
- * @param {AddIndexArgsType} [args]
122
- * @returns {Promise<void>} - Result.
119
+ * @param {string} tableName - Table name.
120
+ * @param {Array<string | import("../table-data/table-column.js").default>} columns - Column names.
121
+ * @param {AddIndexArgsType} [args] - Options object.
122
+ * @returns {Promise<void>} - Resolves when complete.
123
123
  */
124
124
  async addIndex(tableName, columns, args) {
125
125
  const createIndexArgs = Object.assign({
@@ -132,9 +132,9 @@ export default class VelociousDatabaseMigration {
132
132
  }
133
133
  }
134
134
  /**
135
- * @param {string} tableName
136
- * @param {string} referenceName
137
- * @returns {Promise<void>} - Result.
135
+ * @param {string} tableName - Table name.
136
+ * @param {string} referenceName - Reference name.
137
+ * @returns {Promise<void>} - Resolves when complete.
138
138
  */
139
139
  async addForeignKey(tableName, referenceName) {
140
140
  const referenceNameUnderscore = inflection.underscore(referenceName);
@@ -147,13 +147,13 @@ export default class VelociousDatabaseMigration {
147
147
  });
148
148
  }
149
149
  /**
150
- * @param {string} tableName
151
- * @param {string} referenceName
152
- * @param {object} args
153
- * @param {boolean} args.foreignKey
154
- * @param {string} args.type
155
- * @param {boolean} args.unique
156
- * @returns {Promise<void>} - Result.
150
+ * @param {string} tableName - Table name.
151
+ * @param {string} referenceName - Reference name.
152
+ * @param {object} args - Options object.
153
+ * @param {boolean} args.foreignKey - Whether foreign key.
154
+ * @param {string} args.type - Type identifier.
155
+ * @param {boolean} args.unique - Whether unique.
156
+ * @returns {Promise<void>} - Resolves when complete.
157
157
  */
158
158
  async addReference(tableName, referenceName, args) {
159
159
  const { foreignKey, type, unique, ...restArgs } = args;
@@ -166,19 +166,19 @@ export default class VelociousDatabaseMigration {
166
166
  }
167
167
  }
168
168
  /**
169
- * @param {string} tableName
170
- * @param {string} referenceName
171
- * @returns {Promise<void>} - Result.
169
+ * @param {string} tableName - Table name.
170
+ * @param {string} referenceName - Reference name.
171
+ * @returns {Promise<void>} - Resolves when complete.
172
172
  */
173
173
  async removeReference(tableName, referenceName) {
174
174
  const columnName = `${inflection.underscore(referenceName)}_id`;
175
175
  this.removeColumn(tableName, columnName);
176
176
  }
177
177
  /**
178
- * @param {string} tableName
179
- * @param {string} columnName
180
- * @param {boolean} nullable
181
- * @returns {Promise<void>} - Result.
178
+ * @param {string} tableName - Table name.
179
+ * @param {string} columnName - Column name.
180
+ * @param {boolean} nullable - Whether nullable.
181
+ * @returns {Promise<void>} - Resolves when complete.
182
182
  */
183
183
  async changeColumnNull(tableName, columnName, nullable) {
184
184
  const table = await this.getDriver().getTableByName(tableName);
@@ -190,9 +190,9 @@ export default class VelociousDatabaseMigration {
190
190
  await column.changeNullable(nullable);
191
191
  }
192
192
  /**
193
- * @param {string} tableName
194
- * @param {string} columnName
195
- * @returns {Promise<boolean>} - Result.
193
+ * @param {string} tableName - Table name.
194
+ * @param {string} columnName - Column name.
195
+ * @returns {Promise<boolean>} - Resolves with Whether column exists.
196
196
  */
197
197
  async columnExists(tableName, columnName) {
198
198
  const table = await this.getDriver().getTableByName(tableName);
@@ -206,22 +206,22 @@ export default class VelociousDatabaseMigration {
206
206
  }
207
207
  /**
208
208
  * @overload
209
- * @param {string} tableName
210
- * @param {CreateTableCallbackType} callback
211
- * @returns {Promise<void>} - Result.
209
+ * @param {string} tableName - Table name.
210
+ * @param {CreateTableCallbackType} callback - Callback function.
211
+ * @returns {Promise<void>} - Resolves when complete.
212
212
  */
213
213
  /**
214
214
  * @overload
215
- * @param {string} tableName
216
- * @param {CreateTableArgsType} args
217
- * @param {CreateTableCallbackType} callback
218
- * @returns {Promise<void>} - Result.
215
+ * @param {string} tableName - Table name.
216
+ * @param {CreateTableArgsType} args - Options object.
217
+ * @param {CreateTableCallbackType} callback - Callback function.
218
+ * @returns {Promise<void>} - Resolves when complete.
219
219
  */
220
220
  /**
221
- * @param {string} tableName
222
- * @param {CreateTableArgsType | CreateTableCallbackType} arg1
223
- * @param {CreateTableCallbackType | undefined} [arg2]
224
- * @returns {Promise<void>} - Result.
221
+ * @param {string} tableName - Table name.
222
+ * @param {CreateTableArgsType | CreateTableCallbackType} arg1 - Arg1.
223
+ * @param {CreateTableCallbackType | undefined} [arg2] - Arg2.
224
+ * @returns {Promise<void>} - Resolves when complete.
225
225
  */
226
226
  async createTable(tableName, arg1, arg2) {
227
227
  let args;
@@ -279,28 +279,28 @@ export default class VelociousDatabaseMigration {
279
279
  }
280
280
  }
281
281
  /**
282
- * @param {string} tableName
283
- * @returns {Promise<void>} - Result.
282
+ * @param {string} tableName - Table name.
283
+ * @returns {Promise<void>} - Resolves when complete.
284
284
  */
285
285
  async dropTable(tableName) {
286
286
  await this.getDriver().dropTable(tableName);
287
287
  }
288
288
  /**
289
- * @param {string} tableName
290
- * @param {string} oldColumnName
291
- * @param {string} newColumnName
292
- * @returns {Promise<void>} - Result.
289
+ * @param {string} tableName - Table name.
290
+ * @param {string} oldColumnName - Previous column name.
291
+ * @param {string} newColumnName - New column name.
292
+ * @returns {Promise<void>} - Resolves when complete.
293
293
  */
294
294
  async renameColumn(tableName, oldColumnName, newColumnName) {
295
295
  await this.getDriver().renameColumn(tableName, oldColumnName, newColumnName);
296
296
  }
297
297
  /**
298
- * @param {string} tableName
299
- * @returns {Promise<boolean>} - Result.
298
+ * @param {string} tableName - Table name.
299
+ * @returns {Promise<boolean>} - Resolves with Whether table exists.
300
300
  */
301
301
  async tableExists(tableName) {
302
302
  const exists = await this.getDriver().tableExists(tableName);
303
303
  return exists;
304
304
  }
305
305
  }
306
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvZGF0YWJhc2UvbWlncmF0aW9uL2luZGV4LmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFlBQVk7QUFFWjs7Ozs7Ozs7R0FRRztBQUNIOzs7O0dBSUc7QUFDSDs7O0dBR0c7QUFDSDs7R0FFRztBQUVILE9BQU8sS0FBSyxVQUFVLE1BQU0sWUFBWSxDQUFBO0FBQ3hDLE9BQU8sYUFBYSxNQUFNLGdDQUFnQyxDQUFBO0FBQzFELE9BQU8sU0FBUyxNQUFNLHdCQUF3QixDQUFBO0FBQzlDLE1BQU0sbUJBQW9CLFNBQVEsS0FBSztDQUFHO0FBRTFDLE9BQU8sRUFBQyxtQkFBbUIsRUFBQyxDQUFBO0FBRTVCLE1BQU0sQ0FBQyxPQUFPLE9BQU8sMEJBQTBCO0lBQzdDOzs7T0FHRztJQUNILE1BQU0sQ0FBQyxXQUFXLENBQUMsbUJBQW1CO1FBQ3BDLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxtQkFBbUIsQ0FBQTtJQUNqRCxDQUFDO0lBRUQsaURBQWlEO0lBQ2pELE1BQU0sQ0FBQyxzQkFBc0I7UUFDM0IsT0FBTyxJQUFJLENBQUMsb0JBQW9CLENBQUE7SUFDbEMsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsWUFBWSxFQUFDLGFBQWEsRUFBRSxrQkFBa0IsR0FBRyxTQUFTLEVBQUUsRUFBRSxFQUFDO1FBQzdELElBQUksQ0FBQyxrQkFBa0I7WUFBRSxNQUFNLElBQUksS0FBSyxDQUFDLDhCQUE4QixDQUFDLENBQUE7UUFDeEUsSUFBSSxDQUFDLEVBQUU7WUFBRSxNQUFNLElBQUksS0FBSyxDQUFDLGVBQWUsQ0FBQyxDQUFBO1FBRXpDLElBQUksQ0FBQyxhQUFhLEdBQUcsYUFBYSxDQUFBO1FBQ2xDLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxrQkFBa0IsQ0FBQTtRQUM3QyxJQUFJLENBQUMsR0FBRyxHQUFHLEVBQUUsQ0FBQTtJQUNmLENBQUM7SUFFRCxzQkFBc0I7UUFD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LEVBQUUsRUFBQyxhQUFhLEVBQUUsZUFBZSxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUMsQ0FBQyxDQUFBO1FBQzlILENBQUM7UUFFRCxJQUFJLFFBQVEsRUFBRSxDQUFDO1lBQ2IsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFBO1FBQ3JCLENBQUM7UUFFRCxNQUFNLElBQUksR0FBRyxNQUFNLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLENBQUE7UUFFN0QsS0FBSyxNQUFNLEdBQUcsSUFBSSxJQUFJLEVBQUUsQ0FBQztZQUN2QixNQUFNLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFBO1FBQzNCLENBQUM7SUFDSCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsS0FBSyxDQUFDLFNBQVMsQ0FBQyxTQUFTO1FBQ3ZCLE1BQU0sSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsQ0FBQTtJQUM3QyxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxLQUFLLENBQUMsWUFBWSxDQUFDLFNBQVMsRUFBRSxhQUFhLEVBQUUsYUFBYTtRQUN4RCxNQUFNLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQyxZQUFZLENBQUMsU0FBUyxFQUFFLGFBQWEsRUFBRSxhQUFhLENBQUMsQ0FBQTtJQUM5RSxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsS0FBSyxDQUFDLFdBQVcsQ0FBQyxTQUFTO1FBQ3pCLE1BQU0sTUFBTSxHQUFHLE1BQU0sSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsQ0FBQTtRQUU1RCxPQUFPLE1BQU0sQ0FBQTtJQUNmLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbIi8vIEB0cy1jaGVja1xuXG4vKipcbiAqIEB0eXBlZGVmIHtvYmplY3R9IEFkZENvbHVtbkFyZ3NUeXBlXG4gKiBAcHJvcGVydHkge2FueX0gW2RlZmF1bHRdXG4gKiBAcHJvcGVydHkge29iamVjdH0gW2ZvcmVpZ25LZXldXG4gKiBAcHJvcGVydHkge2Jvb2xlYW4gfCB7dW5pcXVlOiBib29sZWFufX0gW2luZGV4XVxuICogQHByb3BlcnR5IHtib29sZWFufSBbbnVsbF1cbiAqIEBwcm9wZXJ0eSB7Ym9vbGVhbn0gW3ByaW1hcnlLZXldXG4gKiBAcHJvcGVydHkge2Jvb2xlYW59IFt1bmlxdWVdXG4gKi9cbi8qKlxuICogQHR5cGVkZWYge29iamVjdH0gQ3JlYXRlVGFibGVJZEFyZ3NUeXBlXG4gKiBAcHJvcGVydHkge2FueX0gW2RlZmF1bHRdXG4gKiBAcHJvcGVydHkge3N0cmluZ30gW3R5cGVdXG4gKi9cbi8qKlxuICogQHR5cGVkZWYge29iamVjdH0gQ3JlYXRlVGFibGVBcmdzVHlwZVxuICogQHByb3BlcnR5IHtDcmVhdGVUYWJsZUlkQXJnc1R5cGUgfCBmYWxzZX0gW2lkXVxuICovXG4vKipcbiAqIEB0eXBlZGVmIHsodGFibGU6IFRhYmxlRGF0YSkgPT4gdm9pZH0gQ3JlYXRlVGFibGVDYWxsYmFja1R5cGVcbiAqL1xuXG5pbXBvcnQgKiBhcyBpbmZsZWN0aW9uIGZyb20gXCJpbmZsZWN0aW9uXCJcbmltcG9ydCByZXN0QXJnc0Vycm9yIGZyb20gXCIuLi8uLi91dGlscy9yZXN0LWFyZ3MtZXJyb3IuanNcIlxuaW1wb3J0IFRhYmxlRGF0YSBmcm9tIFwiLi4vdGFibGUtZGF0YS9pbmRleC5qc1wiXG5jbGFzcyBOb3RJbXBsZW1lbnRlZEVycm9yIGV4dGVuZHMgRXJyb3Ige31cblxuZXhwb3J0IHtOb3RJbXBsZW1lbnRlZEVycm9yfVxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBWZWxvY2lvdXNEYXRhYmFzZU1pZ3JhdGlvbiB7XG4gIC8qKlxuICAgKiBAcGFyYW0ge3N0cmluZ1tdfSBkYXRhYmFzZUlkZW50aWZpZXJzXG4gICAqIEByZXR1cm5zIHt2b2lkfSAtIFJlc3VsdC5cbiAgICovXG4gIHN0YXRpYyBvbkRhdGFiYXNlcyhkYXRhYmFzZUlkZW50aWZpZXJzKSB7XG4gICAgdGhpcy5fZGF0YWJhc2VJZGVudGlmaWVycyA9IGRhdGFiYXNlSWRlbnRpZmllcnNcbiAgfVxuXG4gIC8qKiBAcmV0dXJucyB7c3RyaW5nW10gfCB1bmRlZmluZWR9IC0gUmVzdWx0LiAgKi9cbiAgc3RhdGljIGdldERhdGFiYXNlSWRlbnRpZmllcnMoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2RhdGFiYXNlSWRlbnRpZmllcnNcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge29iamVjdH0gYXJnc1xuICAgKiBAcGFyYW0ge2ltcG9ydChcIi4uLy4uL2NvbmZpZ3VyYXRpb24uanNcIikuZGVmYXVsdH0gYXJncy5jb25maWd1cmF0aW9uXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBhcmdzLmRhdGFiYXNlSWRlbnRpZmllclxuICAgKiBAcGFyYW0ge2ltcG9ydChcIi4uL2RyaXZlcnMvYmFzZS5qc1wiKS5kZWZhdWx0fSBhcmdzLmRiXG4gICAqL1xuICBjb25zdHJ1Y3Rvcih7Y29uZmlndXJhdGlvbiwgZGF0YWJhc2VJZGVudGlmaWVyID0gXCJkZWZhdWx0XCIsIGRifSkge1xuICAgIGlmICghZGF0YWJhc2VJZGVudGlmaWVyKSB0aHJvdyBuZXcgRXJyb3IoXCJObyBkYXRhYmFzZSBpZGVudGlmaWVyIGdpdmVuXCIpXG4gICAgaWYgKCFkYikgdGhyb3cgbmV3IEVycm9yKFwiTm8gJ2RiJyBnaXZlblwiKVxuXG4gICAgdGhpcy5jb25maWd1cmF0aW9uID0gY29uZmlndXJhdGlvblxuICAgIHRoaXMuX2RhdGFiYXNlSWRlbnRpZmllciA9IGRhdGFiYXNlSWRlbnRpZmllclxuICAgIHRoaXMuX2RiID0gZGJcbiAgfVxuXG4gIF9nZXREYXRhYmFzZUlkZW50aWZpZXIoKSB7XG4gICAgaWYgKCF0aGlzLl9kYXRhYmFzZUlkZW50aWZpZXIpIHRocm93IG5ldyBFcnJvcihcIk5vIGRhdGFiYXNlIGlkZW50aWZpZXIgc2V0XCIpXG5cbiAgICByZXR1cm4gdGhpcy5fZGF0YWJhc2VJZGVudGlmaWVyXG4gIH1cblxuICAvKiogQHJldHVybnMge2ltcG9ydChcIi4uL2RyaXZlcnMvYmFzZS5qc1wiKS5kZWZhdWx0fSAtIFJlc3VsdC4gICovXG4gIGdldERyaXZlcigpIHsgcmV0dXJuIHRoaXMuX2RiIH1cbiAgY29ubmVjdGlvbigpIHsgcmV0dXJuIHRoaXMuZ2V0RHJpdmVyKCkgfVxuXG4gIGFzeW5jIGNoYW5nZSgpIHtcbiAgICB0aHJvdyBuZXcgTm90SW1wbGVtZW50ZWRFcnJvcihcIidjaGFuZ2UnIG5vdCBpbXBsZW1lbnRlZFwiKVxuICB9XG5cbiAgYXN5bmMgdXAoKSB7XG4gICAgdGhyb3cgbmV3IE5vdEltcGxlbWVudGVkRXJyb3IoXCInY2hhbmdlJyBub3QgaW1wbGVtZW50ZWRcIilcbiAgfVxuXG4gIGFzeW5jIGRvd24oKSB7XG4gICAgdGhyb3cgbmV3IE5vdEltcGxlbWVudGVkRXJyb3IoXCInY2hhbmdlJyBub3QgaW1wbGVtZW50ZWRcIilcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gc3FsXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPGltcG9ydChcIi4uL2RyaXZlcnMvYmFzZS5qc1wiKS5RdWVyeVJlc3VsdFR5cGU+fSAtIFJlc3VsdC5cbiAgICovXG4gIGFzeW5jIGV4ZWN1dGUoc3FsKSB7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuY29ubmVjdGlvbigpLnF1ZXJ5KHNxbClcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gdGFibGVOYW1lXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBjb2x1bW5OYW1lXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBjb2x1bW5UeXBlXG4gICAqIEBwYXJhbSB7QWRkQ29sdW1uQXJnc1R5cGV9IFthcmdzXVxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTx2b2lkPn0gLSBSZXN1bHQuXG4gICAqL1xuICBhc3luYyBhZGRDb2x1bW4odGFibGVOYW1lLCBjb2x1bW5OYW1lLCBjb2x1bW5UeXBlLCBhcmdzKSB7XG4gICAgaWYgKCFjb2x1bW5UeXBlKSB0aHJvdyBuZXcgRXJyb3IoXCJObyBjb2x1bW4gdHlwZSBnaXZlblwiKVxuXG4gICAgY29uc3QgdGFibGVDb2x1bW5BcmdzID0gT2JqZWN0LmFzc2lnbih7aXNOZXdDb2x1bW46IHRydWUsIHR5cGU6IGNvbHVtblR5cGV9LCBhcmdzKVxuICAgIGNvbnN0IHRhYmxlRGF0YSA9IG5ldyBUYWJsZURhdGEodGFibGVOYW1lKVxuXG4gICAgdGFibGVEYXRhLmFkZENvbHVtbihjb2x1bW5OYW1lLCB0YWJsZUNvbHVtbkFyZ3MpXG5cbiAgICBjb25zdCBzcWxzID0gYXdhaXQgdGhpcy5nZXREcml2ZXIoKS5hbHRlclRhYmxlU1FMcyh0YWJsZURhdGEpXG5cbiAgICBmb3IgKGNvbnN0IHNxbCBvZiBzcWxzKSB7XG4gICAgICBhd2FpdCB0aGlzLmdldERyaXZlcigpLnF1ZXJ5KHNxbClcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHtzdHJpbmd9IHRhYmxlTmFtZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gY29sdW1uTmFtZVxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTx2b2lkPn0gLSBSZXN1bHQuXG4gICAqL1xuICBhc3luYyByZW1vdmVDb2x1bW4odGFibGVOYW1lLCBjb2x1bW5OYW1lKSB7XG4gICAgY29uc3QgdGFibGVDb2x1bW5BcmdzID0gT2JqZWN0LmFzc2lnbih7ZHJvcENvbHVtbjogdHJ1ZX0pXG4gICAgY29uc3QgdGFibGVEYXRhID0gbmV3IFRhYmxlRGF0YSh0YWJsZU5hbWUpXG5cbiAgICB0YWJsZURhdGEuYWRkQ29sdW1uKGNvbHVtbk5hbWUsIHRhYmxlQ29sdW1uQXJncylcblxuICAgIGNvbnN0IHNxbHMgPSBhd2FpdCB0aGlzLmdldERyaXZlcigpLmFsdGVyVGFibGVTUUxzKHRhYmxlRGF0YSlcblxuICAgIGZvciAoY29uc3Qgc3FsIG9mIHNxbHMpIHtcbiAgICAgIGF3YWl0IHRoaXMuZ2V0RHJpdmVyKCkucXVlcnkoc3FsKVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBAdHlwZWRlZiB7b2JqZWN0fSBBZGRJbmRleEFyZ3NUeXBlXG4gICAqIEBwcm9wZXJ0eSB7Ym9vbGVhbn0gW2lmTm90RXhpc3RzXVxuICAgKiBAcHJvcGVydHkge3N0cmluZ30gW25hbWVdXG4gICAqIEBwcm9wZXJ0eSB7Ym9vbGVhbn0gW3VuaXF1ZV1cbiAgICovXG4gIC8qKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gdGFibGVOYW1lXG4gICAqIEBwYXJhbSB7QXJyYXk8c3RyaW5nIHwgaW1wb3J0KFwiLi4vdGFibGUtZGF0YS90YWJsZS1jb2x1bW4uanNcIikuZGVmYXVsdD59IGNvbHVtbnNcbiAgICogQHBhcmFtIHtBZGRJbmRleEFyZ3NUeXBlfSBbYXJnc11cbiAgICogQHJldHVybnMge1Byb21pc2U8dm9pZD59IC0gUmVzdWx0LlxuICAgKi9cbiAgYXN5bmMgYWRkSW5kZXgodGFibGVOYW1lLCBjb2x1bW5zLCBhcmdzKSB7XG4gICAgY29uc3QgY3JlYXRlSW5kZXhBcmdzID0gT2JqZWN0LmFzc2lnbihcbiAgICAgIHtcbiAgICAgICAgY29sdW1ucyxcbiAgICAgICAgdGFibGVOYW1lXG4gICAgICB9LFxuICAgICAgYXJnc1xuICAgIClcbiAgICBjb25zdCBzcWxzID0gYXdhaXQgdGhpcy5nZXREcml2ZXIoKS5jcmVhdGVJbmRleFNRTHMoY3JlYXRlSW5kZXhBcmdzKVxuXG4gICAgZm9yIChjb25zdCBzcWwgb2Ygc3Fscykge1xuICAgICAgYXdhaXQgdGhpcy5nZXREcml2ZXIoKS5xdWVyeShzcWwpXG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSB0YWJsZU5hbWVcbiAgICogQHBhcmFtIHtzdHJpbmd9IHJlZmVyZW5jZU5hbWVcbiAgICogQHJldHVybnMge1Byb21pc2U8dm9pZD59IC0gUmVzdWx0LlxuICAgKi9cbiAgYXN5bmMgYWRkRm9yZWlnbktleSh0YWJsZU5hbWUsIHJlZmVyZW5jZU5hbWUpIHtcbiAgICBjb25zdCByZWZlcmVuY2VOYW1lVW5kZXJzY29yZSA9IGluZmxlY3Rpb24udW5kZXJzY29yZShyZWZlcmVuY2VOYW1lKVxuICAgIGNvbnN0IHRhYmxlTmFtZVVuZGVyc2NvcmUgPSBpbmZsZWN0aW9uLnVuZGVyc2NvcmUodGFibGVOYW1lKVxuICAgIGNvbnN0IGNvbHVtbk5hbWUgPSBgJHtyZWZlcmVuY2VOYW1lVW5kZXJzY29yZX1faWRgXG4gICAgY29uc3QgZm9yZWlnbktleU5hbWUgPSBgZmtfJHt0YWJsZU5hbWV9XyR7cmVmZXJlbmNlTmFtZX1gXG5cbiAgICBhd2FpdCB0aGlzLmdldERyaXZlcigpLmFkZEZvcmVpZ25LZXkoXG4gICAgICB0YWJsZU5hbWUsXG4gICAgICBjb2x1bW5OYW1lLFxuICAgICAgdGFibGVOYW1lVW5kZXJzY29yZSxcbiAgICAgIFwiaWRcIixcbiAgICAgIHtcbiAgICAgICAgaXNOZXdGb3JlaWduS2V5OiB0cnVlLFxuICAgICAgICBuYW1lOiBmb3JlaWduS2V5TmFtZVxuICAgICAgfVxuICAgIClcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gdGFibGVOYW1lXG4gICAqIEBwYXJhbSB7c3RyaW5nfSByZWZlcmVuY2VOYW1lXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBhcmdzXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gYXJncy5mb3JlaWduS2V5XG4gICAqIEBwYXJhbSB7c3RyaW5nfSBhcmdzLnR5cGVcbiAgICogQHBhcmFtIHtib29sZWFufSBhcmdzLnVuaXF1ZVxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTx2b2lkPn0gLSBSZXN1bHQuXG4gICAqL1xuICBhc3luYyBhZGRSZWZlcmVuY2UodGFibGVOYW1lLCByZWZlcmVuY2VOYW1lLCBhcmdzKSB7XG4gICAgY29uc3Qge2ZvcmVpZ25LZXksIHR5cGUsIHVuaXF1ZSwgLi4ucmVzdEFyZ3N9ID0gYXJnc1xuICAgIGNvbnN0IGNvbHVtbk5hbWUgPSBgJHtpbmZsZWN0aW9uLnVuZGVyc2NvcmUocmVmZXJlbmNlTmFtZSl9X2lkYFxuXG4gICAgcmVzdEFyZ3NFcnJvcihyZXN0QXJncylcblxuICAgIGF3YWl0IHRoaXMuYWRkQ29sdW1uKHRhYmxlTmFtZSwgY29sdW1uTmFtZSwgdHlwZSB8fCBcImludGVnZXJcIilcbiAgICBhd2FpdCB0aGlzLmFkZEluZGV4KHRhYmxlTmFtZSwgW2NvbHVtbk5hbWVdLCB7dW5pcXVlOiB1bmlxdWV9KVxuXG4gICAgaWYgKGZvcmVpZ25LZXkpIHtcbiAgICAgIGF3YWl0IHRoaXMuYWRkRm9yZWlnbktleSh0YWJsZU5hbWUsIHJlZmVyZW5jZU5hbWUpXG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSB0YWJsZU5hbWVcbiAgICogQHBhcmFtIHtzdHJpbmd9IHJlZmVyZW5jZU5hbWVcbiAgICogQHJldHVybnMge1Byb21pc2U8dm9pZD59IC0gUmVzdWx0LlxuICAgKi9cbiAgYXN5bmMgcmVtb3ZlUmVmZXJlbmNlKHRhYmxlTmFtZSwgcmVmZXJlbmNlTmFtZSkge1xuICAgIGNvbnN0IGNvbHVtbk5hbWUgPSBgJHtpbmZsZWN0aW9uLnVuZGVyc2NvcmUocmVmZXJlbmNlTmFtZSl9X2lkYFxuXG4gICAgdGhpcy5yZW1vdmVDb2x1bW4odGFibGVOYW1lLCBjb2x1bW5OYW1lKVxuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSB0YWJsZU5hbWVcbiAgICogQHBhcmFtIHtzdHJpbmd9IGNvbHVtbk5hbWVcbiAgICogQHBhcmFtIHtib29sZWFufSBudWxsYWJsZVxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTx2b2lkPn0gLSBSZXN1bHQuXG4gICAqL1xuICBhc3luYyBjaGFuZ2VDb2x1bW5OdWxsKHRhYmxlTmFtZSwgY29sdW1uTmFtZSwgbnVsbGFibGUpIHtcbiAgICBjb25zdCB0YWJsZSA9IGF3YWl0IHRoaXMuZ2V0RHJpdmVyKCkuZ2V0VGFibGVCeU5hbWUodGFibGVOYW1lKVxuXG4gICAgaWYgKCF0YWJsZSkgdGhyb3cgbmV3IEVycm9yKGBUYWJsZSAke3RhYmxlTmFtZX0gZG9lcyBub3QgZXhpc3RgKVxuXG4gICAgY29uc3QgY29sdW1uID0gYXdhaXQgdGFibGUuZ2V0Q29sdW1uQnlOYW1lKGNvbHVtbk5hbWUpXG5cbiAgICBpZiAoIWNvbHVtbikgdGhyb3cgbmV3IEVycm9yKGBDb2x1bW4gJHtjb2x1bW5OYW1lfSBkb2VzIG5vdCBleGlzdCBpbiB0YWJsZSAke3RhYmxlTmFtZX1gKVxuXG4gICAgYXdhaXQgY29sdW1uLmNoYW5nZU51bGxhYmxlKG51bGxhYmxlKVxuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSB0YWJsZU5hbWVcbiAgICogQHBhcmFtIHtzdHJpbmd9IGNvbHVtbk5hbWVcbiAgICogQHJldHVybnMge1Byb21pc2U8Ym9vbGVhbj59IC0gUmVzdWx0LlxuICAgKi9cbiAgYXN5bmMgY29sdW1uRXhpc3RzKHRhYmxlTmFtZSwgY29sdW1uTmFtZSkge1xuICAgIGNvbnN0IHRhYmxlID0gYXdhaXQgdGhpcy5nZXREcml2ZXIoKS5nZXRUYWJsZUJ5TmFtZSh0YWJsZU5hbWUpXG5cbiAgICBpZiAodGFibGUpIHtcbiAgICAgIGNvbnN0IGNvbHVtbiA9IGF3YWl0IHRhYmxlLmdldENvbHVtbkJ5TmFtZShjb2x1bW5OYW1lKVxuXG4gICAgICBpZiAoY29sdW1uKSB7XG4gICAgICAgIHJldHVybiB0cnVlXG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIEJvb2xlYW4oZmFsc2UpXG4gIH1cblxuICAvKipcbiAgICogQG92ZXJsb2FkXG4gICAqIEBwYXJhbSB7c3RyaW5nfSB0YWJsZU5hbWVcbiAgICogQHBhcmFtIHtDcmVhdGVUYWJsZUNhbGxiYWNrVHlwZX0gY2FsbGJhY2tcbiAgICogQHJldHVybnMge1Byb21pc2U8dm9pZD59IC0gUmVzdWx0LlxuICAgKi9cbiAgLyoqXG4gICAqIEBvdmVybG9hZFxuICAgKiBAcGFyYW0ge3N0cmluZ30gdGFibGVOYW1lXG4gICAqIEBwYXJhbSB7Q3JlYXRlVGFibGVBcmdzVHlwZX0gYXJnc1xuICAgKiBAcGFyYW0ge0NyZWF0ZVRhYmxlQ2FsbGJhY2tUeXBlfSBjYWxsYmFja1xuICAgKiBAcmV0dXJucyB7UHJvbWlzZTx2b2lkPn0gLSBSZXN1bHQuXG4gICAqL1xuICAvKipcbiAgICogQHBhcmFtIHtzdHJpbmd9IHRhYmxlTmFtZVxuICAgKiBAcGFyYW0ge0NyZWF0ZVRhYmxlQXJnc1R5cGUgfCBDcmVhdGVUYWJsZUNhbGxiYWNrVHlwZX0gYXJnMVxuICAgKiBAcGFyYW0ge0NyZWF0ZVRhYmxlQ2FsbGJhY2tUeXBlIHwgdW5kZWZpbmVkfSBbYXJnMl1cbiAgICogQHJldHVybnMge1Byb21pc2U8dm9pZD59IC0gUmVzdWx0LlxuICAgKi9cbiAgYXN5bmMgY3JlYXRlVGFibGUodGFibGVOYW1lLCBhcmcxLCBhcmcyKSB7XG4gICAgbGV0IGFyZ3NcbiAgICBsZXQgY2FsbGJhY2tcblxuICAgIGlmICh0eXBlb2YgYXJnMSA9PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgIGFyZ3MgPSB7fVxuICAgICAgY2FsbGJhY2sgPSBhcmcxXG4gICAgfSBlbHNlIHtcbiAgICAgIGFyZ3MgPSBhcmcxXG4gICAgICBjYWxsYmFjayA9IGFyZzJcbiAgICB9XG5cbiAgICBjb25zdCB7aWQgPSB7fSwgLi4ucmVzdEFyZ3N9ID0gYXJnc1xuICAgIGNvbnN0IGRhdGFiYXNlSWRlbnRpZmllciA9IHRoaXMuX2dldERhdGFiYXNlSWRlbnRpZmllcigpXG4gICAgY29uc3QgZGF0YWJhc2VQb29sID0gdGhpcy5jb25maWd1cmF0aW9uLmdldERhdGFiYXNlUG9vbChkYXRhYmFzZUlkZW50aWZpZXIpXG4gICAgbGV0IGlkRGVmYXVsdCwgaWRUeXBlLCByZXN0QXJnc0lkXG5cbiAgICBpZiAoaWQgIT09IGZhbHNlKSB7XG4gICAgICAoe2RlZmF1bHQ6IGlkRGVmYXVsdCwgdHlwZTogaWRUeXBlLCAuLi5yZXN0QXJnc0lkfSA9IGlkKVxuXG4gICAgICByZXN0QXJnc0Vycm9yKHJlc3RBcmdzSWQpXG4gICAgfVxuXG4gICAgaWYgKCFpZFR5cGUpIHtcbiAgICAgIGlkVHlwZSA9IGRhdGFiYXNlUG9vbC5wcmltYXJ5S2V5VHlwZSgpXG4gICAgfVxuICAgIGNvbnN0IGRyaXZlclN1cHBvcnRzRGVmYXVsdFVVSUQgPSB0aGlzLmdldERyaXZlcigpLnN1cHBvcnRzRGVmYXVsdFByaW1hcnlLZXlVVUlEPy4oKVxuICAgIGNvbnN0IGxvd2VySWRUeXBlID0gaWRUeXBlPy50b0xvd2VyQ2FzZSgpXG4gICAgY29uc3QgaXNVVUlEUHJpbWFyeUtleSA9IGxvd2VySWRUeXBlID09IFwidXVpZFwiXG4gICAgY29uc3QgbnVtZXJpY0F1dG9JbmNyZW1lbnRUeXBlcyA9IFtcImludFwiLCBcImludGVnZXJcIiwgXCJiaWdpbnRcIiwgXCJzbWFsbGludFwiLCBcInRpbnlpbnRcIl1cbiAgICBsZXQgaWRBdXRvSW5jcmVtZW50ID0gbnVtZXJpY0F1dG9JbmNyZW1lbnRUeXBlcy5pbmNsdWRlcyhsb3dlcklkVHlwZSB8fCBcIlwiKVxuXG4gICAgaWYgKGlzVVVJRFByaW1hcnlLZXkpIHtcbiAgICAgIGlkQXV0b0luY3JlbWVudCA9IGZhbHNlXG5cbiAgICAgIGlmIChkcml2ZXJTdXBwb3J0c0RlZmF1bHRVVUlEKSB7XG4gICAgICAgIGlmIChpZERlZmF1bHQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIGlkRGVmYXVsdCA9ICgpID0+IFwiVVVJRCgpXCJcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmIChpZERlZmF1bHQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAvLyBMZXQgYXBwbGljYXRpb24gY29kZSBhc3NpZ24gVVVJRHMgKHNlZSBEYXRhYmFzZVJlY29yZC5pbnNlcnQpIHdoZW4gdGhlIGRyaXZlciBjYW4ndCBkbyBpdC5cbiAgICAgICAgaWREZWZhdWx0ID0gdW5kZWZpbmVkXG4gICAgICB9XG4gICAgICAvLyBJZiBkcml2ZXIgZG9lc24ndCBzdXBwb3J0IFVVSUQoKSBidXQgdGhlIGNhbGxlciBleHBsaWNpdGx5IHNldCBhIGRlZmF1bHQsIHJlc3BlY3QgaXQuXG4gICAgfVxuXG4gICAgY29uc3QgdGFibGVEYXRhID0gbmV3IFRhYmxlRGF0YSh0YWJsZU5hbWUpXG5cbiAgICByZXN0QXJnc0Vycm9yKHJlc3RBcmdzKVxuXG4gICAgaWYgKCEoaWRUeXBlIGluIHRhYmxlRGF0YSkpIHRocm93IG5ldyBFcnJvcihgVW5zdXBwb3J0ZWQgcHJpbWFyeSBrZXkgdHlwZTogJHtpZFR5cGV9YClcblxuICAgIGlmIChpZCAhPT0gZmFsc2UpIHtcbiAgICAgIHRhYmxlRGF0YS5hZGRDb2x1bW4oXCJpZFwiLCB7YXV0b0luY3JlbWVudDogaWRBdXRvSW5jcmVtZW50LCBkZWZhdWx0OiBpZERlZmF1bHQsIG51bGw6IGZhbHNlLCBwcmltYXJ5S2V5OiB0cnVlLCB0eXBlOiBpZFR5cGV9KVxuICAgIH1cblxuICAgIGlmIChjYWxsYmFjaykge1xuICAgICAgY2FsbGJhY2sodGFibGVEYXRhKVxuICAgIH1cblxuICAgIGNvbnN0IHNxbHMgPSBhd2FpdCB0aGlzLmdldERyaXZlcigpLmNyZWF0ZVRhYmxlU3FsKHRhYmxlRGF0YSlcblxuICAgIGZvciAoY29uc3Qgc3FsIG9mIHNxbHMpIHtcbiAgICAgIGF3YWl0IHRoaXMuX2RiLnF1ZXJ5KHNxbClcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHtzdHJpbmd9IHRhYmxlTmFtZVxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTx2b2lkPn0gLSBSZXN1bHQuXG4gICAqL1xuICBhc3luYyBkcm9wVGFibGUodGFibGVOYW1lKSB7XG4gICAgYXdhaXQgdGhpcy5nZXREcml2ZXIoKS5kcm9wVGFibGUodGFibGVOYW1lKVxuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSB0YWJsZU5hbWVcbiAgICogQHBhcmFtIHtzdHJpbmd9IG9sZENvbHVtbk5hbWVcbiAgICogQHBhcmFtIHtzdHJpbmd9IG5ld0NvbHVtbk5hbWVcbiAgICogQHJldHVybnMge1Byb21pc2U8dm9pZD59IC0gUmVzdWx0LlxuICAgKi9cbiAgYXN5bmMgcmVuYW1lQ29sdW1uKHRhYmxlTmFtZSwgb2xkQ29sdW1uTmFtZSwgbmV3Q29sdW1uTmFtZSkge1xuICAgIGF3YWl0IHRoaXMuZ2V0RHJpdmVyKCkucmVuYW1lQ29sdW1uKHRhYmxlTmFtZSwgb2xkQ29sdW1uTmFtZSwgbmV3Q29sdW1uTmFtZSlcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gdGFibGVOYW1lXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPGJvb2xlYW4+fSAtIFJlc3VsdC5cbiAgICovXG4gIGFzeW5jIHRhYmxlRXhpc3RzKHRhYmxlTmFtZSkge1xuICAgIGNvbnN0IGV4aXN0cyA9IGF3YWl0IHRoaXMuZ2V0RHJpdmVyKCkudGFibGVFeGlzdHModGFibGVOYW1lKVxuXG4gICAgcmV0dXJuIGV4aXN0c1xuICB9XG59XG4iXX0=
306
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvZGF0YWJhc2UvbWlncmF0aW9uL2luZGV4LmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFlBQVk7QUFFWjs7Ozs7Ozs7R0FRRztBQUNIOzs7O0dBSUc7QUFDSDs7O0dBR0c7QUFDSDs7R0FFRztBQUVILE9BQU8sS0FBSyxVQUFVLE1BQU0sWUFBWSxDQUFBO0FBQ3hDLE9BQU8sYUFBYSxNQUFNLGdDQUFnQyxDQUFBO0FBQzFELE9BQU8sU0FBUyxNQUFNLHdCQUF3QixDQUFBO0FBQzlDLE1BQU0sbUJBQW9CLFNBQVEsS0FBSztDQUFHO0FBRTFDLE9BQU8sRUFBQyxtQkFBbUIsRUFBQyxDQUFBO0FBRTVCLE1BQU0sQ0FBQyxPQUFPLE9BQU8sMEJBQTBCO0lBQzdDOzs7T0FHRztJQUNILE1BQU0sQ0FBQyxXQUFXLENBQUMsbUJBQW1CO1FBQ3BDLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxtQkFBbUIsQ0FBQTtJQUNqRCxDQUFDO0lBRUQsbUVBQW1FO0lBQ25FLE1BQU0sQ0FBQyxzQkFBc0I7UUFDM0IsT0FBTyxJQUFJLENBQUMsb0JBQW9CLENBQUE7SUFDbEMsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsWUFBWSxFQUFDLGFBQWEsRUFBRSxrQkFBa0IsR0FBRyxTQUFTLEVBQUUsRUFBRSxFQUFDO1FBQzdELElBQUksQ0FBQyxrQkFBa0I7WUFBRSxNQUFNLElBQUksS0FBSyxDQUFDLDhCQUE4QixDQUFDLENBQUE7UUFDeEUsSUFBSSxDQUFDLEVBQUU7WUFBRSxNQUFNLElBQUksS0FBSyxDQUFDLGVBQWUsQ0FBQyxDQUFBO1FBRXpDLElBQUksQ0FBQyxhQUFhLEdBQUcsYUFBYSxDQUFBO1FBQ2xDLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxrQkFBa0IsQ0FBQTtRQUM3QyxJQUFJLENBQUMsR0FBRyxHQUFHLEVBQUUsQ0FBQTtJQUNmLENBQUM7SUFFRCxzQkFBc0I7UUFD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LEVBQUUsRUFBQyxhQUFhLEVBQUUsZUFBZSxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUMsQ0FBQyxDQUFBO1FBQzlILENBQUM7UUFFRCxJQUFJLFFBQVEsRUFBRSxDQUFDO1lBQ2IsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFBO1FBQ3JCLENBQUM7UUFFRCxNQUFNLElBQUksR0FBRyxNQUFNLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLENBQUE7UUFFN0QsS0FBSyxNQUFNLEdBQUcsSUFBSSxJQUFJLEVBQUUsQ0FBQztZQUN2QixNQUFNLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFBO1FBQzNCLENBQUM7SUFDSCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsS0FBSyxDQUFDLFNBQVMsQ0FBQyxTQUFTO1FBQ3ZCLE1BQU0sSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsQ0FBQTtJQUM3QyxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxLQUFLLENBQUMsWUFBWSxDQUFDLFNBQVMsRUFBRSxhQUFhLEVBQUUsYUFBYTtRQUN4RCxNQUFNLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQyxZQUFZLENBQUMsU0FBUyxFQUFFLGFBQWEsRUFBRSxhQUFhLENBQUMsQ0FBQTtJQUM5RSxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsS0FBSyxDQUFDLFdBQVcsQ0FBQyxTQUFTO1FBQ3pCLE1BQU0sTUFBTSxHQUFHLE1BQU0sSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsQ0FBQTtRQUU1RCxPQUFPLE1BQU0sQ0FBQTtJQUNmLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbIi8vIEB0cy1jaGVja1xuXG4vKipcbiAqIEB0eXBlZGVmIHtvYmplY3R9IEFkZENvbHVtbkFyZ3NUeXBlXG4gKiBAcHJvcGVydHkge3Vua25vd259IFtkZWZhdWx0XSAtIERlZmF1bHQgdmFsdWUgZm9yIHRoZSBjb2x1bW4uXG4gKiBAcHJvcGVydHkge29iamVjdH0gW2ZvcmVpZ25LZXldIC0gRm9yZWlnbiBrZXkgZGVmaW5pdGlvbiBmb3IgdGhlIGNvbHVtbi5cbiAqIEBwcm9wZXJ0eSB7Ym9vbGVhbiB8IHt1bmlxdWU6IGJvb2xlYW59fSBbaW5kZXhdIC0gV2hldGhlciB0byBhZGQgYW4gaW5kZXggKG9wdGlvbmFsbHkgdW5pcXVlKS5cbiAqIEBwcm9wZXJ0eSB7Ym9vbGVhbn0gW251bGxdIC0gV2hldGhlciB0aGUgY29sdW1uIGFsbG93cyBudWxsIHZhbHVlcy5cbiAqIEBwcm9wZXJ0eSB7Ym9vbGVhbn0gW3ByaW1hcnlLZXldIC0gV2hldGhlciB0aGUgY29sdW1uIGlzIGEgcHJpbWFyeSBrZXkuXG4gKiBAcHJvcGVydHkge2Jvb2xlYW59IFt1bmlxdWVdIC0gV2hldGhlciB0aGUgY29sdW1uIGVuZm9yY2VzIHVuaXF1ZW5lc3MuXG4gKi9cbi8qKlxuICogQHR5cGVkZWYge29iamVjdH0gQ3JlYXRlVGFibGVJZEFyZ3NUeXBlXG4gKiBAcHJvcGVydHkge3Vua25vd259IFtkZWZhdWx0XSAtIERlZmF1bHQgdmFsdWUgZm9yIHRoZSBJRCBjb2x1bW4uXG4gKiBAcHJvcGVydHkge3N0cmluZ30gW3R5cGVdIC0gQ29sdW1uIHR5cGUgZm9yIHRoZSBJRCBjb2x1bW4uXG4gKi9cbi8qKlxuICogQHR5cGVkZWYge29iamVjdH0gQ3JlYXRlVGFibGVBcmdzVHlwZVxuICogQHByb3BlcnR5IHtDcmVhdGVUYWJsZUlkQXJnc1R5cGUgfCBmYWxzZX0gW2lkXSAtIElEIGNvbHVtbiBvcHRpb25zIG9yIGZhbHNlIHRvIHNraXAgSUQuXG4gKi9cbi8qKlxuICogQHR5cGVkZWYgeyh0YWJsZTogVGFibGVEYXRhKSA9PiB2b2lkfSBDcmVhdGVUYWJsZUNhbGxiYWNrVHlwZVxuICovXG5cbmltcG9ydCAqIGFzIGluZmxlY3Rpb24gZnJvbSBcImluZmxlY3Rpb25cIlxuaW1wb3J0IHJlc3RBcmdzRXJyb3IgZnJvbSBcIi4uLy4uL3V0aWxzL3Jlc3QtYXJncy1lcnJvci5qc1wiXG5pbXBvcnQgVGFibGVEYXRhIGZyb20gXCIuLi90YWJsZS1kYXRhL2luZGV4LmpzXCJcbmNsYXNzIE5vdEltcGxlbWVudGVkRXJyb3IgZXh0ZW5kcyBFcnJvciB7fVxuXG5leHBvcnQge05vdEltcGxlbWVudGVkRXJyb3J9XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFZlbG9jaW91c0RhdGFiYXNlTWlncmF0aW9uIHtcbiAgLyoqXG4gICAqIEBwYXJhbSB7c3RyaW5nW119IGRhdGFiYXNlSWRlbnRpZmllcnMgLSBEYXRhYmFzZSBpZGVudGlmaWVycy5cbiAgICogQHJldHVybnMge3ZvaWR9IC0gTm8gcmV0dXJuIHZhbHVlLlxuICAgKi9cbiAgc3RhdGljIG9uRGF0YWJhc2VzKGRhdGFiYXNlSWRlbnRpZmllcnMpIHtcbiAgICB0aGlzLl9kYXRhYmFzZUlkZW50aWZpZXJzID0gZGF0YWJhc2VJZGVudGlmaWVyc1xuICB9XG5cbiAgLyoqIEByZXR1cm5zIHtzdHJpbmdbXSB8IHVuZGVmaW5lZH0gLSBUaGUgZGF0YWJhc2UgaWRlbnRpZmllcnMuICAqL1xuICBzdGF0aWMgZ2V0RGF0YWJhc2VJZGVudGlmaWVycygpIHtcbiAgICByZXR1cm4gdGhpcy5fZGF0YWJhc2VJZGVudGlmaWVyc1xuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBhcmdzIC0gT3B0aW9ucyBvYmplY3QuXG4gICAqIEBwYXJhbSB7aW1wb3J0KFwiLi4vLi4vY29uZmlndXJhdGlvbi5qc1wiKS5kZWZhdWx0fSBhcmdzLmNvbmZpZ3VyYXRpb24gLSBDb25maWd1cmF0aW9uIGluc3RhbmNlLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gYXJncy5kYXRhYmFzZUlkZW50aWZpZXIgLSBEYXRhYmFzZSBpZGVudGlmaWVyLlxuICAgKiBAcGFyYW0ge2ltcG9ydChcIi4uL2RyaXZlcnMvYmFzZS5qc1wiKS5kZWZhdWx0fSBhcmdzLmRiIC0gRGF0YWJhc2UgY29ubmVjdGlvbi5cbiAgICovXG4gIGNvbnN0cnVjdG9yKHtjb25maWd1cmF0aW9uLCBkYXRhYmFzZUlkZW50aWZpZXIgPSBcImRlZmF1bHRcIiwgZGJ9KSB7XG4gICAgaWYgKCFkYXRhYmFzZUlkZW50aWZpZXIpIHRocm93IG5ldyBFcnJvcihcIk5vIGRhdGFiYXNlIGlkZW50aWZpZXIgZ2l2ZW5cIilcbiAgICBpZiAoIWRiKSB0aHJvdyBuZXcgRXJyb3IoXCJObyAnZGInIGdpdmVuXCIpXG5cbiAgICB0aGlzLmNvbmZpZ3VyYXRpb24gPSBjb25maWd1cmF0aW9uXG4gICAgdGhpcy5fZGF0YWJhc2VJZGVudGlmaWVyID0gZGF0YWJhc2VJZGVudGlmaWVyXG4gICAgdGhpcy5fZGIgPSBkYlxuICB9XG5cbiAgX2dldERhdGFiYXNlSWRlbnRpZmllcigpIHtcbiAgICBpZiAoIXRoaXMuX2RhdGFiYXNlSWRlbnRpZmllcikgdGhyb3cgbmV3IEVycm9yKFwiTm8gZGF0YWJhc2UgaWRlbnRpZmllciBzZXRcIilcblxuICAgIHJldHVybiB0aGlzLl9kYXRhYmFzZUlkZW50aWZpZXJcbiAgfVxuXG4gIC8qKiBAcmV0dXJucyB7aW1wb3J0KFwiLi4vZHJpdmVycy9iYXNlLmpzXCIpLmRlZmF1bHR9IC0gVGhlIGRyaXZlci4gICovXG4gIGdldERyaXZlcigpIHsgcmV0dXJuIHRoaXMuX2RiIH1cbiAgY29ubmVjdGlvbigpIHsgcmV0dXJuIHRoaXMuZ2V0RHJpdmVyKCkgfVxuXG4gIGFzeW5jIGNoYW5nZSgpIHtcbiAgICB0aHJvdyBuZXcgTm90SW1wbGVtZW50ZWRFcnJvcihcIidjaGFuZ2UnIG5vdCBpbXBsZW1lbnRlZFwiKVxuICB9XG5cbiAgYXN5bmMgdXAoKSB7XG4gICAgdGhyb3cgbmV3IE5vdEltcGxlbWVudGVkRXJyb3IoXCInY2hhbmdlJyBub3QgaW1wbGVtZW50ZWRcIilcbiAgfVxuXG4gIGFzeW5jIGRvd24oKSB7XG4gICAgdGhyb3cgbmV3IE5vdEltcGxlbWVudGVkRXJyb3IoXCInY2hhbmdlJyBub3QgaW1wbGVtZW50ZWRcIilcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gc3FsIC0gU1FMIHN0cmluZy5cbiAgICogQHJldHVybnMge1Byb21pc2U8aW1wb3J0KFwiLi4vZHJpdmVycy9iYXNlLmpzXCIpLlF1ZXJ5UmVzdWx0VHlwZT59IC0gUmVzb2x2ZXMgd2l0aCB0aGUgZXhlY3V0ZS5cbiAgICovXG4gIGFzeW5jIGV4ZWN1dGUoc3FsKSB7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuY29ubmVjdGlvbigpLnF1ZXJ5KHNxbClcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gdGFibGVOYW1lIC0gVGFibGUgbmFtZS5cbiAgICogQHBhcmFtIHtzdHJpbmd9IGNvbHVtbk5hbWUgLSBDb2x1bW4gbmFtZS5cbiAgICogQHBhcmFtIHtzdHJpbmd9IGNvbHVtblR5cGUgLSBDb2x1bW4gdHlwZS5cbiAgICogQHBhcmFtIHtBZGRDb2x1bW5BcmdzVHlwZX0gW2FyZ3NdIC0gT3B0aW9ucyBvYmplY3QuXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPHZvaWQ+fSAtIFJlc29sdmVzIHdoZW4gY29tcGxldGUuXG4gICAqL1xuICBhc3luYyBhZGRDb2x1bW4odGFibGVOYW1lLCBjb2x1bW5OYW1lLCBjb2x1bW5UeXBlLCBhcmdzKSB7XG4gICAgaWYgKCFjb2x1bW5UeXBlKSB0aHJvdyBuZXcgRXJyb3IoXCJObyBjb2x1bW4gdHlwZSBnaXZlblwiKVxuXG4gICAgY29uc3QgdGFibGVDb2x1bW5BcmdzID0gT2JqZWN0LmFzc2lnbih7aXNOZXdDb2x1bW46IHRydWUsIHR5cGU6IGNvbHVtblR5cGV9LCBhcmdzKVxuICAgIGNvbnN0IHRhYmxlRGF0YSA9IG5ldyBUYWJsZURhdGEodGFibGVOYW1lKVxuXG4gICAgdGFibGVEYXRhLmFkZENvbHVtbihjb2x1bW5OYW1lLCB0YWJsZUNvbHVtbkFyZ3MpXG5cbiAgICBjb25zdCBzcWxzID0gYXdhaXQgdGhpcy5nZXREcml2ZXIoKS5hbHRlclRhYmxlU1FMcyh0YWJsZURhdGEpXG5cbiAgICBmb3IgKGNvbnN0IHNxbCBvZiBzcWxzKSB7XG4gICAgICBhd2FpdCB0aGlzLmdldERyaXZlcigpLnF1ZXJ5KHNxbClcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHtzdHJpbmd9IHRhYmxlTmFtZSAtIFRhYmxlIG5hbWUuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBjb2x1bW5OYW1lIC0gQ29sdW1uIG5hbWUuXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPHZvaWQ+fSAtIFJlc29sdmVzIHdoZW4gY29tcGxldGUuXG4gICAqL1xuICBhc3luYyByZW1vdmVDb2x1bW4odGFibGVOYW1lLCBjb2x1bW5OYW1lKSB7XG4gICAgY29uc3QgdGFibGVDb2x1bW5BcmdzID0gT2JqZWN0LmFzc2lnbih7ZHJvcENvbHVtbjogdHJ1ZX0pXG4gICAgY29uc3QgdGFibGVEYXRhID0gbmV3IFRhYmxlRGF0YSh0YWJsZU5hbWUpXG5cbiAgICB0YWJsZURhdGEuYWRkQ29sdW1uKGNvbHVtbk5hbWUsIHRhYmxlQ29sdW1uQXJncylcblxuICAgIGNvbnN0IHNxbHMgPSBhd2FpdCB0aGlzLmdldERyaXZlcigpLmFsdGVyVGFibGVTUUxzKHRhYmxlRGF0YSlcblxuICAgIGZvciAoY29uc3Qgc3FsIG9mIHNxbHMpIHtcbiAgICAgIGF3YWl0IHRoaXMuZ2V0RHJpdmVyKCkucXVlcnkoc3FsKVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBAdHlwZWRlZiB7b2JqZWN0fSBBZGRJbmRleEFyZ3NUeXBlXG4gICAqIEBwcm9wZXJ0eSB7Ym9vbGVhbn0gW2lmTm90RXhpc3RzXSAtIFNraXAgY3JlYXRpb24gaWYgdGhlIGluZGV4IGFscmVhZHkgZXhpc3RzLlxuICAgKiBAcHJvcGVydHkge3N0cmluZ30gW25hbWVdIC0gRXhwbGljaXQgaW5kZXggbmFtZSB0byB1c2UuXG4gICAqIEBwcm9wZXJ0eSB7Ym9vbGVhbn0gW3VuaXF1ZV0gLSBXaGV0aGVyIHRoZSBpbmRleCBzaG91bGQgYmUgdW5pcXVlLlxuICAgKi9cbiAgLyoqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSB0YWJsZU5hbWUgLSBUYWJsZSBuYW1lLlxuICAgKiBAcGFyYW0ge0FycmF5PHN0cmluZyB8IGltcG9ydChcIi4uL3RhYmxlLWRhdGEvdGFibGUtY29sdW1uLmpzXCIpLmRlZmF1bHQ+fSBjb2x1bW5zIC0gQ29sdW1uIG5hbWVzLlxuICAgKiBAcGFyYW0ge0FkZEluZGV4QXJnc1R5cGV9IFthcmdzXSAtIE9wdGlvbnMgb2JqZWN0LlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTx2b2lkPn0gLSBSZXNvbHZlcyB3aGVuIGNvbXBsZXRlLlxuICAgKi9cbiAgYXN5bmMgYWRkSW5kZXgodGFibGVOYW1lLCBjb2x1bW5zLCBhcmdzKSB7XG4gICAgY29uc3QgY3JlYXRlSW5kZXhBcmdzID0gT2JqZWN0LmFzc2lnbihcbiAgICAgIHtcbiAgICAgICAgY29sdW1ucyxcbiAgICAgICAgdGFibGVOYW1lXG4gICAgICB9LFxuICAgICAgYXJnc1xuICAgIClcbiAgICBjb25zdCBzcWxzID0gYXdhaXQgdGhpcy5nZXREcml2ZXIoKS5jcmVhdGVJbmRleFNRTHMoY3JlYXRlSW5kZXhBcmdzKVxuXG4gICAgZm9yIChjb25zdCBzcWwgb2Ygc3Fscykge1xuICAgICAgYXdhaXQgdGhpcy5nZXREcml2ZXIoKS5xdWVyeShzcWwpXG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSB0YWJsZU5hbWUgLSBUYWJsZSBuYW1lLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gcmVmZXJlbmNlTmFtZSAtIFJlZmVyZW5jZSBuYW1lLlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTx2b2lkPn0gLSBSZXNvbHZlcyB3aGVuIGNvbXBsZXRlLlxuICAgKi9cbiAgYXN5bmMgYWRkRm9yZWlnbktleSh0YWJsZU5hbWUsIHJlZmVyZW5jZU5hbWUpIHtcbiAgICBjb25zdCByZWZlcmVuY2VOYW1lVW5kZXJzY29yZSA9IGluZmxlY3Rpb24udW5kZXJzY29yZShyZWZlcmVuY2VOYW1lKVxuICAgIGNvbnN0IHRhYmxlTmFtZVVuZGVyc2NvcmUgPSBpbmZsZWN0aW9uLnVuZGVyc2NvcmUodGFibGVOYW1lKVxuICAgIGNvbnN0IGNvbHVtbk5hbWUgPSBgJHtyZWZlcmVuY2VOYW1lVW5kZXJzY29yZX1faWRgXG4gICAgY29uc3QgZm9yZWlnbktleU5hbWUgPSBgZmtfJHt0YWJsZU5hbWV9XyR7cmVmZXJlbmNlTmFtZX1gXG5cbiAgICBhd2FpdCB0aGlzLmdldERyaXZlcigpLmFkZEZvcmVpZ25LZXkoXG4gICAgICB0YWJsZU5hbWUsXG4gICAgICBjb2x1bW5OYW1lLFxuICAgICAgdGFibGVOYW1lVW5kZXJzY29yZSxcbiAgICAgIFwiaWRcIixcbiAgICAgIHtcbiAgICAgICAgaXNOZXdGb3JlaWduS2V5OiB0cnVlLFxuICAgICAgICBuYW1lOiBmb3JlaWduS2V5TmFtZVxuICAgICAgfVxuICAgIClcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gdGFibGVOYW1lIC0gVGFibGUgbmFtZS5cbiAgICogQHBhcmFtIHtzdHJpbmd9IHJlZmVyZW5jZU5hbWUgLSBSZWZlcmVuY2UgbmFtZS5cbiAgICogQHBhcmFtIHtvYmplY3R9IGFyZ3MgLSBPcHRpb25zIG9iamVjdC5cbiAgICogQHBhcmFtIHtib29sZWFufSBhcmdzLmZvcmVpZ25LZXkgLSBXaGV0aGVyIGZvcmVpZ24ga2V5LlxuICAgKiBAcGFyYW0ge3N0cmluZ30gYXJncy50eXBlIC0gVHlwZSBpZGVudGlmaWVyLlxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IGFyZ3MudW5pcXVlIC0gV2hldGhlciB1bmlxdWUuXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPHZvaWQ+fSAtIFJlc29sdmVzIHdoZW4gY29tcGxldGUuXG4gICAqL1xuICBhc3luYyBhZGRSZWZlcmVuY2UodGFibGVOYW1lLCByZWZlcmVuY2VOYW1lLCBhcmdzKSB7XG4gICAgY29uc3Qge2ZvcmVpZ25LZXksIHR5cGUsIHVuaXF1ZSwgLi4ucmVzdEFyZ3N9ID0gYXJnc1xuICAgIGNvbnN0IGNvbHVtbk5hbWUgPSBgJHtpbmZsZWN0aW9uLnVuZGVyc2NvcmUocmVmZXJlbmNlTmFtZSl9X2lkYFxuXG4gICAgcmVzdEFyZ3NFcnJvcihyZXN0QXJncylcblxuICAgIGF3YWl0IHRoaXMuYWRkQ29sdW1uKHRhYmxlTmFtZSwgY29sdW1uTmFtZSwgdHlwZSB8fCBcImludGVnZXJcIilcbiAgICBhd2FpdCB0aGlzLmFkZEluZGV4KHRhYmxlTmFtZSwgW2NvbHVtbk5hbWVdLCB7dW5pcXVlOiB1bmlxdWV9KVxuXG4gICAgaWYgKGZvcmVpZ25LZXkpIHtcbiAgICAgIGF3YWl0IHRoaXMuYWRkRm9yZWlnbktleSh0YWJsZU5hbWUsIHJlZmVyZW5jZU5hbWUpXG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSB0YWJsZU5hbWUgLSBUYWJsZSBuYW1lLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gcmVmZXJlbmNlTmFtZSAtIFJlZmVyZW5jZSBuYW1lLlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTx2b2lkPn0gLSBSZXNvbHZlcyB3aGVuIGNvbXBsZXRlLlxuICAgKi9cbiAgYXN5bmMgcmVtb3ZlUmVmZXJlbmNlKHRhYmxlTmFtZSwgcmVmZXJlbmNlTmFtZSkge1xuICAgIGNvbnN0IGNvbHVtbk5hbWUgPSBgJHtpbmZsZWN0aW9uLnVuZGVyc2NvcmUocmVmZXJlbmNlTmFtZSl9X2lkYFxuXG4gICAgdGhpcy5yZW1vdmVDb2x1bW4odGFibGVOYW1lLCBjb2x1bW5OYW1lKVxuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSB0YWJsZU5hbWUgLSBUYWJsZSBuYW1lLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gY29sdW1uTmFtZSAtIENvbHVtbiBuYW1lLlxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IG51bGxhYmxlIC0gV2hldGhlciBudWxsYWJsZS5cbiAgICogQHJldHVybnMge1Byb21pc2U8dm9pZD59IC0gUmVzb2x2ZXMgd2hlbiBjb21wbGV0ZS5cbiAgICovXG4gIGFzeW5jIGNoYW5nZUNvbHVtbk51bGwodGFibGVOYW1lLCBjb2x1bW5OYW1lLCBudWxsYWJsZSkge1xuICAgIGNvbnN0IHRhYmxlID0gYXdhaXQgdGhpcy5nZXREcml2ZXIoKS5nZXRUYWJsZUJ5TmFtZSh0YWJsZU5hbWUpXG5cbiAgICBpZiAoIXRhYmxlKSB0aHJvdyBuZXcgRXJyb3IoYFRhYmxlICR7dGFibGVOYW1lfSBkb2VzIG5vdCBleGlzdGApXG5cbiAgICBjb25zdCBjb2x1bW4gPSBhd2FpdCB0YWJsZS5nZXRDb2x1bW5CeU5hbWUoY29sdW1uTmFtZSlcblxuICAgIGlmICghY29sdW1uKSB0aHJvdyBuZXcgRXJyb3IoYENvbHVtbiAke2NvbHVtbk5hbWV9IGRvZXMgbm90IGV4aXN0IGluIHRhYmxlICR7dGFibGVOYW1lfWApXG5cbiAgICBhd2FpdCBjb2x1bW4uY2hhbmdlTnVsbGFibGUobnVsbGFibGUpXG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHtzdHJpbmd9IHRhYmxlTmFtZSAtIFRhYmxlIG5hbWUuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBjb2x1bW5OYW1lIC0gQ29sdW1uIG5hbWUuXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPGJvb2xlYW4+fSAtIFJlc29sdmVzIHdpdGggV2hldGhlciBjb2x1bW4gZXhpc3RzLlxuICAgKi9cbiAgYXN5bmMgY29sdW1uRXhpc3RzKHRhYmxlTmFtZSwgY29sdW1uTmFtZSkge1xuICAgIGNvbnN0IHRhYmxlID0gYXdhaXQgdGhpcy5nZXREcml2ZXIoKS5nZXRUYWJsZUJ5TmFtZSh0YWJsZU5hbWUpXG5cbiAgICBpZiAodGFibGUpIHtcbiAgICAgIGNvbnN0IGNvbHVtbiA9IGF3YWl0IHRhYmxlLmdldENvbHVtbkJ5TmFtZShjb2x1bW5OYW1lKVxuXG4gICAgICBpZiAoY29sdW1uKSB7XG4gICAgICAgIHJldHVybiB0cnVlXG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIEJvb2xlYW4oZmFsc2UpXG4gIH1cblxuICAvKipcbiAgICogQG92ZXJsb2FkXG4gICAqIEBwYXJhbSB7c3RyaW5nfSB0YWJsZU5hbWUgLSBUYWJsZSBuYW1lLlxuICAgKiBAcGFyYW0ge0NyZWF0ZVRhYmxlQ2FsbGJhY2tUeXBlfSBjYWxsYmFjayAtIENhbGxiYWNrIGZ1bmN0aW9uLlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTx2b2lkPn0gLSBSZXNvbHZlcyB3aGVuIGNvbXBsZXRlLlxuICAgKi9cbiAgLyoqXG4gICAqIEBvdmVybG9hZFxuICAgKiBAcGFyYW0ge3N0cmluZ30gdGFibGVOYW1lIC0gVGFibGUgbmFtZS5cbiAgICogQHBhcmFtIHtDcmVhdGVUYWJsZUFyZ3NUeXBlfSBhcmdzIC0gT3B0aW9ucyBvYmplY3QuXG4gICAqIEBwYXJhbSB7Q3JlYXRlVGFibGVDYWxsYmFja1R5cGV9IGNhbGxiYWNrIC0gQ2FsbGJhY2sgZnVuY3Rpb24uXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPHZvaWQ+fSAtIFJlc29sdmVzIHdoZW4gY29tcGxldGUuXG4gICAqL1xuICAvKipcbiAgICogQHBhcmFtIHtzdHJpbmd9IHRhYmxlTmFtZSAtIFRhYmxlIG5hbWUuXG4gICAqIEBwYXJhbSB7Q3JlYXRlVGFibGVBcmdzVHlwZSB8IENyZWF0ZVRhYmxlQ2FsbGJhY2tUeXBlfSBhcmcxIC0gQXJnMS5cbiAgICogQHBhcmFtIHtDcmVhdGVUYWJsZUNhbGxiYWNrVHlwZSB8IHVuZGVmaW5lZH0gW2FyZzJdIC0gQXJnMi5cbiAgICogQHJldHVybnMge1Byb21pc2U8dm9pZD59IC0gUmVzb2x2ZXMgd2hlbiBjb21wbGV0ZS5cbiAgICovXG4gIGFzeW5jIGNyZWF0ZVRhYmxlKHRhYmxlTmFtZSwgYXJnMSwgYXJnMikge1xuICAgIGxldCBhcmdzXG4gICAgbGV0IGNhbGxiYWNrXG5cbiAgICBpZiAodHlwZW9mIGFyZzEgPT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICBhcmdzID0ge31cbiAgICAgIGNhbGxiYWNrID0gYXJnMVxuICAgIH0gZWxzZSB7XG4gICAgICBhcmdzID0gYXJnMVxuICAgICAgY2FsbGJhY2sgPSBhcmcyXG4gICAgfVxuXG4gICAgY29uc3Qge2lkID0ge30sIC4uLnJlc3RBcmdzfSA9IGFyZ3NcbiAgICBjb25zdCBkYXRhYmFzZUlkZW50aWZpZXIgPSB0aGlzLl9nZXREYXRhYmFzZUlkZW50aWZpZXIoKVxuICAgIGNvbnN0IGRhdGFiYXNlUG9vbCA9IHRoaXMuY29uZmlndXJhdGlvbi5nZXREYXRhYmFzZVBvb2woZGF0YWJhc2VJZGVudGlmaWVyKVxuICAgIGxldCBpZERlZmF1bHQsIGlkVHlwZSwgcmVzdEFyZ3NJZFxuXG4gICAgaWYgKGlkICE9PSBmYWxzZSkge1xuICAgICAgKHtkZWZhdWx0OiBpZERlZmF1bHQsIHR5cGU6IGlkVHlwZSwgLi4ucmVzdEFyZ3NJZH0gPSBpZClcblxuICAgICAgcmVzdEFyZ3NFcnJvcihyZXN0QXJnc0lkKVxuICAgIH1cblxuICAgIGlmICghaWRUeXBlKSB7XG4gICAgICBpZFR5cGUgPSBkYXRhYmFzZVBvb2wucHJpbWFyeUtleVR5cGUoKVxuICAgIH1cbiAgICBjb25zdCBkcml2ZXJTdXBwb3J0c0RlZmF1bHRVVUlEID0gdGhpcy5nZXREcml2ZXIoKS5zdXBwb3J0c0RlZmF1bHRQcmltYXJ5S2V5VVVJRD8uKClcbiAgICBjb25zdCBsb3dlcklkVHlwZSA9IGlkVHlwZT8udG9Mb3dlckNhc2UoKVxuICAgIGNvbnN0IGlzVVVJRFByaW1hcnlLZXkgPSBsb3dlcklkVHlwZSA9PSBcInV1aWRcIlxuICAgIGNvbnN0IG51bWVyaWNBdXRvSW5jcmVtZW50VHlwZXMgPSBbXCJpbnRcIiwgXCJpbnRlZ2VyXCIsIFwiYmlnaW50XCIsIFwic21hbGxpbnRcIiwgXCJ0aW55aW50XCJdXG4gICAgbGV0IGlkQXV0b0luY3JlbWVudCA9IG51bWVyaWNBdXRvSW5jcmVtZW50VHlwZXMuaW5jbHVkZXMobG93ZXJJZFR5cGUgfHwgXCJcIilcblxuICAgIGlmIChpc1VVSURQcmltYXJ5S2V5KSB7XG4gICAgICBpZEF1dG9JbmNyZW1lbnQgPSBmYWxzZVxuXG4gICAgICBpZiAoZHJpdmVyU3VwcG9ydHNEZWZhdWx0VVVJRCkge1xuICAgICAgICBpZiAoaWREZWZhdWx0ID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBpZERlZmF1bHQgPSAoKSA9PiBcIlVVSUQoKVwiXG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoaWREZWZhdWx0ID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgLy8gTGV0IGFwcGxpY2F0aW9uIGNvZGUgYXNzaWduIFVVSURzIChzZWUgRGF0YWJhc2VSZWNvcmQuaW5zZXJ0KSB3aGVuIHRoZSBkcml2ZXIgY2FuJ3QgZG8gaXQuXG4gICAgICAgIGlkRGVmYXVsdCA9IHVuZGVmaW5lZFxuICAgICAgfVxuICAgICAgLy8gSWYgZHJpdmVyIGRvZXNuJ3Qgc3VwcG9ydCBVVUlEKCkgYnV0IHRoZSBjYWxsZXIgZXhwbGljaXRseSBzZXQgYSBkZWZhdWx0LCByZXNwZWN0IGl0LlxuICAgIH1cblxuICAgIGNvbnN0IHRhYmxlRGF0YSA9IG5ldyBUYWJsZURhdGEodGFibGVOYW1lKVxuXG4gICAgcmVzdEFyZ3NFcnJvcihyZXN0QXJncylcblxuICAgIGlmICghKGlkVHlwZSBpbiB0YWJsZURhdGEpKSB0aHJvdyBuZXcgRXJyb3IoYFVuc3VwcG9ydGVkIHByaW1hcnkga2V5IHR5cGU6ICR7aWRUeXBlfWApXG5cbiAgICBpZiAoaWQgIT09IGZhbHNlKSB7XG4gICAgICB0YWJsZURhdGEuYWRkQ29sdW1uKFwiaWRcIiwge2F1dG9JbmNyZW1lbnQ6IGlkQXV0b0luY3JlbWVudCwgZGVmYXVsdDogaWREZWZhdWx0LCBudWxsOiBmYWxzZSwgcHJpbWFyeUtleTogdHJ1ZSwgdHlwZTogaWRUeXBlfSlcbiAgICB9XG5cbiAgICBpZiAoY2FsbGJhY2spIHtcbiAgICAgIGNhbGxiYWNrKHRhYmxlRGF0YSlcbiAgICB9XG5cbiAgICBjb25zdCBzcWxzID0gYXdhaXQgdGhpcy5nZXREcml2ZXIoKS5jcmVhdGVUYWJsZVNxbCh0YWJsZURhdGEpXG5cbiAgICBmb3IgKGNvbnN0IHNxbCBvZiBzcWxzKSB7XG4gICAgICBhd2FpdCB0aGlzLl9kYi5xdWVyeShzcWwpXG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSB0YWJsZU5hbWUgLSBUYWJsZSBuYW1lLlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTx2b2lkPn0gLSBSZXNvbHZlcyB3aGVuIGNvbXBsZXRlLlxuICAgKi9cbiAgYXN5bmMgZHJvcFRhYmxlKHRhYmxlTmFtZSkge1xuICAgIGF3YWl0IHRoaXMuZ2V0RHJpdmVyKCkuZHJvcFRhYmxlKHRhYmxlTmFtZSlcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gdGFibGVOYW1lIC0gVGFibGUgbmFtZS5cbiAgICogQHBhcmFtIHtzdHJpbmd9IG9sZENvbHVtbk5hbWUgLSBQcmV2aW91cyBjb2x1bW4gbmFtZS5cbiAgICogQHBhcmFtIHtzdHJpbmd9IG5ld0NvbHVtbk5hbWUgLSBOZXcgY29sdW1uIG5hbWUuXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPHZvaWQ+fSAtIFJlc29sdmVzIHdoZW4gY29tcGxldGUuXG4gICAqL1xuICBhc3luYyByZW5hbWVDb2x1bW4odGFibGVOYW1lLCBvbGRDb2x1bW5OYW1lLCBuZXdDb2x1bW5OYW1lKSB7XG4gICAgYXdhaXQgdGhpcy5nZXREcml2ZXIoKS5yZW5hbWVDb2x1bW4odGFibGVOYW1lLCBvbGRDb2x1bW5OYW1lLCBuZXdDb2x1bW5OYW1lKVxuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSB0YWJsZU5hbWUgLSBUYWJsZSBuYW1lLlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxib29sZWFuPn0gLSBSZXNvbHZlcyB3aXRoIFdoZXRoZXIgdGFibGUgZXhpc3RzLlxuICAgKi9cbiAgYXN5bmMgdGFibGVFeGlzdHModGFibGVOYW1lKSB7XG4gICAgY29uc3QgZXhpc3RzID0gYXdhaXQgdGhpcy5nZXREcml2ZXIoKS50YWJsZUV4aXN0cyh0YWJsZU5hbWUpXG5cbiAgICByZXR1cm4gZXhpc3RzXG4gIH1cbn1cbiJdfQ==
@@ -1,14 +1,14 @@
1
1
  export default class VelociousDatabaseMigratorFilesFinder {
2
2
  /**
3
- * @param {object} args
4
- * @param {string} args.path
3
+ * @param {object} args - Options object.
4
+ * @param {string} args.path - Path.
5
5
  */
6
6
  constructor({ path, ...restArgs }: {
7
7
  path: string;
8
8
  });
9
9
  path: string;
10
10
  /**
11
- * @returns {Promise<Array<import("./types.js").MigrationObjectType>>} - Result.
11
+ * @returns {Promise<Array<import("./types.js").MigrationObjectType>>} - Resolves with the files.
12
12
  */
13
13
  findFiles(): Promise<Array<import("./types.js").MigrationObjectType>>;
14
14
  }
@@ -4,8 +4,8 @@ import * as inflection from "inflection";
4
4
  import restArgsError from "../../utils/rest-args-error.js";
5
5
  export default class VelociousDatabaseMigratorFilesFinder {
6
6
  /**
7
- * @param {object} args
8
- * @param {string} args.path
7
+ * @param {object} args - Options object.
8
+ * @param {string} args.path - Path.
9
9
  */
10
10
  constructor({ path, ...restArgs }) {
11
11
  restArgsError(restArgs);
@@ -14,7 +14,7 @@ export default class VelociousDatabaseMigratorFilesFinder {
14
14
  this.path = path;
15
15
  }
16
16
  /**
17
- * @returns {Promise<Array<import("./types.js").MigrationObjectType>>} - Result.
17
+ * @returns {Promise<Array<import("./types.js").MigrationObjectType>>} - Resolves with the files.
18
18
  */
19
19
  async findFiles() {
20
20
  let files = await fs.readdir(this.path);
@@ -38,4 +38,4 @@ export default class VelociousDatabaseMigratorFilesFinder {
38
38
  return result;
39
39
  }
40
40
  }
41
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZXMtZmluZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2RhdGFiYXNlL21pZ3JhdG9yL2ZpbGVzLWZpbmRlci5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxZQUFZO0FBRVosT0FBTyxFQUFFLE1BQU0sYUFBYSxDQUFBO0FBQzVCLE9BQU8sS0FBSyxVQUFVLE1BQU0sWUFBWSxDQUFBO0FBRXhDLE9BQU8sYUFBYSxNQUFNLGdDQUFnQyxDQUFBO0FBRTFELE1BQU0sQ0FBQyxPQUFPLE9BQU8sb0NBQW9DO0lBQ3ZEOzs7T0FHRztJQUNILFlBQVksRUFBQyxJQUFJLEVBQUUsR0FBRyxRQUFRLEVBQUM7UUFDN0IsYUFBYSxDQUFDLFFBQVEsQ0FBQyxDQUFBO1FBRXZCLElBQUksQ0FBQyxJQUFJO1lBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQyxlQUFlLENBQUMsQ0FBQTtRQUUzQyxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQTtJQUNsQixDQUFDO0lBRUQ7O09BRUc7SUFDSCxLQUFLLENBQUMsU0FBUztRQUNiLElBQUksS0FBSyxHQUFHLE1BQU0sRUFBRSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUE7UUFFdkMseURBQXlEO1FBQ3pELElBQUksTUFBTSxHQUFHLEVBQUUsQ0FBQTtRQUVmLEtBQUssTUFBTSxJQUFJLElBQUksS0FBSyxFQUFFLENBQUM7WUFDekIsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxxQkFBcUIsQ0FBQyxDQUFBO1lBRS9DLElBQUksQ0FBQyxLQUFLO2dCQUFFLFNBQVE7WUFFcEIsTUFBTSxJQUFJLEdBQUcsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBO1lBQy9CLE1BQU0sYUFBYSxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQTtZQUM5QixNQUFNLGtCQUFrQixHQUFHLFVBQVUsQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLFVBQVUsQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQTtZQUVsRixNQUFNLENBQUMsSUFBSSxDQUFDO2dCQUNWLElBQUk7Z0JBQ0osUUFBUSxFQUFFLEdBQUcsSUFBSSxDQUFDLElBQUksSUFBSSxJQUFJLEVBQUU7Z0JBQ2hDLElBQUk7Z0JBQ0osa0JBQWtCO2FBQ25CLENBQUMsQ0FBQTtRQUNKLENBQUM7UUFFRCxNQUFNLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLFVBQVUsRUFBRSxVQUFVLEVBQUUsRUFBRSxDQUFDLFVBQVUsQ0FBQyxJQUFJLEdBQUcsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFBO1FBRW5GLE9BQU8sTUFBTSxDQUFBO0lBQ2YsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQHRzLWNoZWNrXG5cbmltcG9ydCBmcyBmcm9tIFwiZnMvcHJvbWlzZXNcIlxuaW1wb3J0ICogYXMgaW5mbGVjdGlvbiBmcm9tIFwiaW5mbGVjdGlvblwiXG5cbmltcG9ydCByZXN0QXJnc0Vycm9yIGZyb20gXCIuLi8uLi91dGlscy9yZXN0LWFyZ3MtZXJyb3IuanNcIlxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBWZWxvY2lvdXNEYXRhYmFzZU1pZ3JhdG9yRmlsZXNGaW5kZXIge1xuICAvKipcbiAgICogQHBhcmFtIHtvYmplY3R9IGFyZ3NcbiAgICogQHBhcmFtIHtzdHJpbmd9IGFyZ3MucGF0aFxuICAgKi9cbiAgY29uc3RydWN0b3Ioe3BhdGgsIC4uLnJlc3RBcmdzfSkge1xuICAgIHJlc3RBcmdzRXJyb3IocmVzdEFyZ3MpXG5cbiAgICBpZiAoIXBhdGgpIHRocm93IG5ldyBFcnJvcihcIk5vIHBhdGggZ2l2ZW5cIilcblxuICAgIHRoaXMucGF0aCA9IHBhdGhcbiAgfVxuXG4gIC8qKlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxBcnJheTxpbXBvcnQoXCIuL3R5cGVzLmpzXCIpLk1pZ3JhdGlvbk9iamVjdFR5cGU+Pn0gLSBSZXN1bHQuXG4gICAqL1xuICBhc3luYyBmaW5kRmlsZXMoKSB7XG4gICAgbGV0IGZpbGVzID0gYXdhaXQgZnMucmVhZGRpcih0aGlzLnBhdGgpXG5cbiAgICAvKiogQHR5cGUge2ltcG9ydChcIi4vdHlwZXMuanNcIikuTWlncmF0aW9uT2JqZWN0VHlwZVtdfSAqL1xuICAgIGxldCByZXN1bHQgPSBbXVxuXG4gICAgZm9yIChjb25zdCBmaWxlIG9mIGZpbGVzKSB7XG4gICAgICBjb25zdCBtYXRjaCA9IGZpbGUubWF0Y2goL14oXFxkezE0fSktKC4rKVxcLmpzJC8pXG5cbiAgICAgIGlmICghbWF0Y2gpIGNvbnRpbnVlXG5cbiAgICAgIGNvbnN0IGRhdGUgPSBwYXJzZUludChtYXRjaFsxXSlcbiAgICAgIGNvbnN0IG1pZ3JhdGlvbk5hbWUgPSBtYXRjaFsyXVxuICAgICAgY29uc3QgbWlncmF0aW9uQ2xhc3NOYW1lID0gaW5mbGVjdGlvbi5jYW1lbGl6ZShtaWdyYXRpb25OYW1lLnJlcGxhY2VBbGwoXCItXCIsIFwiX1wiKSlcblxuICAgICAgcmVzdWx0LnB1c2goe1xuICAgICAgICBmaWxlLFxuICAgICAgICBmdWxsUGF0aDogYCR7dGhpcy5wYXRofS8ke2ZpbGV9YCxcbiAgICAgICAgZGF0ZSxcbiAgICAgICAgbWlncmF0aW9uQ2xhc3NOYW1lXG4gICAgICB9KVxuICAgIH1cblxuICAgIHJlc3VsdCA9IHJlc3VsdC5zb3J0KChtaWdyYXRpb24xLCBtaWdyYXRpb24yKSA9PiBtaWdyYXRpb24xLmRhdGUgLSBtaWdyYXRpb24yLmRhdGUpXG5cbiAgICByZXR1cm4gcmVzdWx0XG4gIH1cbn1cbiJdfQ==
41
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZXMtZmluZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2RhdGFiYXNlL21pZ3JhdG9yL2ZpbGVzLWZpbmRlci5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxZQUFZO0FBRVosT0FBTyxFQUFFLE1BQU0sYUFBYSxDQUFBO0FBQzVCLE9BQU8sS0FBSyxVQUFVLE1BQU0sWUFBWSxDQUFBO0FBRXhDLE9BQU8sYUFBYSxNQUFNLGdDQUFnQyxDQUFBO0FBRTFELE1BQU0sQ0FBQyxPQUFPLE9BQU8sb0NBQW9DO0lBQ3ZEOzs7T0FHRztJQUNILFlBQVksRUFBQyxJQUFJLEVBQUUsR0FBRyxRQUFRLEVBQUM7UUFDN0IsYUFBYSxDQUFDLFFBQVEsQ0FBQyxDQUFBO1FBRXZCLElBQUksQ0FBQyxJQUFJO1lBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQyxlQUFlLENBQUMsQ0FBQTtRQUUzQyxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQTtJQUNsQixDQUFDO0lBRUQ7O09BRUc7SUFDSCxLQUFLLENBQUMsU0FBUztRQUNiLElBQUksS0FBSyxHQUFHLE1BQU0sRUFBRSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUE7UUFFdkMseURBQXlEO1FBQ3pELElBQUksTUFBTSxHQUFHLEVBQUUsQ0FBQTtRQUVmLEtBQUssTUFBTSxJQUFJLElBQUksS0FBSyxFQUFFLENBQUM7WUFDekIsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxxQkFBcUIsQ0FBQyxDQUFBO1lBRS9DLElBQUksQ0FBQyxLQUFLO2dCQUFFLFNBQVE7WUFFcEIsTUFBTSxJQUFJLEdBQUcsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBO1lBQy9CLE1BQU0sYUFBYSxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQTtZQUM5QixNQUFNLGtCQUFrQixHQUFHLFVBQVUsQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLFVBQVUsQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQTtZQUVsRixNQUFNLENBQUMsSUFBSSxDQUFDO2dCQUNWLElBQUk7Z0JBQ0osUUFBUSxFQUFFLEdBQUcsSUFBSSxDQUFDLElBQUksSUFBSSxJQUFJLEVBQUU7Z0JBQ2hDLElBQUk7Z0JBQ0osa0JBQWtCO2FBQ25CLENBQUMsQ0FBQTtRQUNKLENBQUM7UUFFRCxNQUFNLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLFVBQVUsRUFBRSxVQUFVLEVBQUUsRUFBRSxDQUFDLFVBQVUsQ0FBQyxJQUFJLEdBQUcsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFBO1FBRW5GLE9BQU8sTUFBTSxDQUFBO0lBQ2YsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQHRzLWNoZWNrXG5cbmltcG9ydCBmcyBmcm9tIFwiZnMvcHJvbWlzZXNcIlxuaW1wb3J0ICogYXMgaW5mbGVjdGlvbiBmcm9tIFwiaW5mbGVjdGlvblwiXG5cbmltcG9ydCByZXN0QXJnc0Vycm9yIGZyb20gXCIuLi8uLi91dGlscy9yZXN0LWFyZ3MtZXJyb3IuanNcIlxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBWZWxvY2lvdXNEYXRhYmFzZU1pZ3JhdG9yRmlsZXNGaW5kZXIge1xuICAvKipcbiAgICogQHBhcmFtIHtvYmplY3R9IGFyZ3MgLSBPcHRpb25zIG9iamVjdC5cbiAgICogQHBhcmFtIHtzdHJpbmd9IGFyZ3MucGF0aCAtIFBhdGguXG4gICAqL1xuICBjb25zdHJ1Y3Rvcih7cGF0aCwgLi4ucmVzdEFyZ3N9KSB7XG4gICAgcmVzdEFyZ3NFcnJvcihyZXN0QXJncylcblxuICAgIGlmICghcGF0aCkgdGhyb3cgbmV3IEVycm9yKFwiTm8gcGF0aCBnaXZlblwiKVxuXG4gICAgdGhpcy5wYXRoID0gcGF0aFxuICB9XG5cbiAgLyoqXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPEFycmF5PGltcG9ydChcIi4vdHlwZXMuanNcIikuTWlncmF0aW9uT2JqZWN0VHlwZT4+fSAtIFJlc29sdmVzIHdpdGggdGhlIGZpbGVzLlxuICAgKi9cbiAgYXN5bmMgZmluZEZpbGVzKCkge1xuICAgIGxldCBmaWxlcyA9IGF3YWl0IGZzLnJlYWRkaXIodGhpcy5wYXRoKVxuXG4gICAgLyoqIEB0eXBlIHtpbXBvcnQoXCIuL3R5cGVzLmpzXCIpLk1pZ3JhdGlvbk9iamVjdFR5cGVbXX0gKi9cbiAgICBsZXQgcmVzdWx0ID0gW11cblxuICAgIGZvciAoY29uc3QgZmlsZSBvZiBmaWxlcykge1xuICAgICAgY29uc3QgbWF0Y2ggPSBmaWxlLm1hdGNoKC9eKFxcZHsxNH0pLSguKylcXC5qcyQvKVxuXG4gICAgICBpZiAoIW1hdGNoKSBjb250aW51ZVxuXG4gICAgICBjb25zdCBkYXRlID0gcGFyc2VJbnQobWF0Y2hbMV0pXG4gICAgICBjb25zdCBtaWdyYXRpb25OYW1lID0gbWF0Y2hbMl1cbiAgICAgIGNvbnN0IG1pZ3JhdGlvbkNsYXNzTmFtZSA9IGluZmxlY3Rpb24uY2FtZWxpemUobWlncmF0aW9uTmFtZS5yZXBsYWNlQWxsKFwiLVwiLCBcIl9cIikpXG5cbiAgICAgIHJlc3VsdC5wdXNoKHtcbiAgICAgICAgZmlsZSxcbiAgICAgICAgZnVsbFBhdGg6IGAke3RoaXMucGF0aH0vJHtmaWxlfWAsXG4gICAgICAgIGRhdGUsXG4gICAgICAgIG1pZ3JhdGlvbkNsYXNzTmFtZVxuICAgICAgfSlcbiAgICB9XG5cbiAgICByZXN1bHQgPSByZXN1bHQuc29ydCgobWlncmF0aW9uMSwgbWlncmF0aW9uMikgPT4gbWlncmF0aW9uMS5kYXRlIC0gbWlncmF0aW9uMi5kYXRlKVxuXG4gICAgcmV0dXJuIHJlc3VsdFxuICB9XG59XG4iXX0=
@@ -1,7 +1,19 @@
1
1
  export type MigrationObjectType = {
2
+ /**
3
+ * - Migration timestamp parsed from filename.
4
+ */
2
5
  date: number;
6
+ /**
7
+ * - Filename for the migration.
8
+ */
3
9
  file: string;
10
+ /**
11
+ * - Absolute path to the migration file.
12
+ */
4
13
  fullPath?: string;
14
+ /**
15
+ * - Exported migration class name.
16
+ */
5
17
  migrationClassName: string;
6
18
  };
7
19
  export type ImportCallbackType = () => typeof import("../migration/index.js").default;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/database/migrator/types.js"],"names":[],"mappings":";UAIc,MAAM;UACN,MAAM;eACN,MAAM;wBACN,MAAM;;iCAIP,MAAa,cAAc,uBAAuB,EAAE,OAAO;yCAI3D,CAAS,IAAM,EAAN,MAAM,KAAI,OAAO,CAAC,cAAc,uBAAuB,EAAE,OAAO,CAAC;mCAI1E,MAAM,OAAO,CAAC,cAAc,uBAAuB,EAAE,OAAO,CAAC;iDAI7D,CAAC,EAAE,EAAE,MAAM,KAAK;IAAC,OAAO,EAAE,cAAc,uBAAuB,EAAE,OAAO,CAAA;CAAC;0CACzE,kCAAkC,GAAG;IAC7C,IAAI,EAAE,MAAM,MAAM,EAAE,CAAC;IACrB,EAAE,EAAE,MAAM,CAAA;CACX"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/database/migrator/types.js"],"names":[],"mappings":";;;;UAIc,MAAM;;;;UACN,MAAM;;;;eACN,MAAM;;;;wBACN,MAAM;;iCAIP,MAAa,cAAc,uBAAuB,EAAE,OAAO;yCAI3D,CAAS,IAAM,EAAN,MAAM,KAAI,OAAO,CAAC,cAAc,uBAAuB,EAAE,OAAO,CAAC;mCAI1E,MAAM,OAAO,CAAC,cAAc,uBAAuB,EAAE,OAAO,CAAC;iDAI7D,CAAC,EAAE,EAAE,MAAM,KAAK;IAAC,OAAO,EAAE,cAAc,uBAAuB,EAAE,OAAO,CAAA;CAAC;0CACzE,kCAAkC,GAAG;IAC7C,IAAI,EAAE,MAAM,MAAM,EAAE,CAAC;IACrB,EAAE,EAAE,MAAM,CAAA;CACX"}
@@ -1,3 +1,3 @@
1
1
  // @ts-check
2
2
  export {};
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvZGF0YWJhc2UvbWlncmF0b3IvdHlwZXMuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsWUFBWSIsInNvdXJjZXNDb250ZW50IjpbIi8vIEB0cy1jaGVja1xuXG4vKipcbiAqIEB0eXBlZGVmIHtvYmplY3R9IE1pZ3JhdGlvbk9iamVjdFR5cGVcbiAqIEBwcm9wZXJ0eSB7bnVtYmVyfSBkYXRlXG4gKiBAcHJvcGVydHkge3N0cmluZ30gZmlsZVxuICogQHByb3BlcnR5IHtzdHJpbmd9IFtmdWxsUGF0aF1cbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBtaWdyYXRpb25DbGFzc05hbWVcbiAqL1xuXG4vKipcbiAqIEB0eXBlZGVmIHtmdW5jdGlvbigpIDogdHlwZW9mIGltcG9ydChcIi4uL21pZ3JhdGlvbi9pbmRleC5qc1wiKS5kZWZhdWx0fSBJbXBvcnRDYWxsYmFja1R5cGVcbiAqL1xuXG4vKipcbiAqIEB0eXBlZGVmIHtmdW5jdGlvbihzdHJpbmcpIDogUHJvbWlzZTx0eXBlb2YgaW1wb3J0KFwiLi4vbWlncmF0aW9uL2luZGV4LmpzXCIpLmRlZmF1bHQ+fSBJbXBvcnRGdWxscGF0aENhbGxiYWNrVHlwZVxuICovXG5cbi8qKlxuICogQHR5cGVkZWYgeygpID0+IFByb21pc2U8dHlwZW9mIGltcG9ydChcIi4uL21pZ3JhdGlvbi9pbmRleC5qc1wiKS5kZWZhdWx0Pn0gUmVxdWlyZU1pZ3JhdGlvblR5cGVcbiAqL1xuXG4vKipcbiAqIEB0eXBlZGVmIHsoaWQ6IHN0cmluZykgPT4ge2RlZmF1bHQ6IHR5cGVvZiBpbXBvcnQoXCIuLi9taWdyYXRpb24vaW5kZXguanNcIikuZGVmYXVsdH19IFJlcXVpcmVNaWdyYXRpb25Db250ZXh0UmVxdWlyZVR5cGVcbiAqIEB0eXBlZGVmIHtSZXF1aXJlTWlncmF0aW9uQ29udGV4dFJlcXVpcmVUeXBlICYge1xuICogICBrZXlzOiAoKSA9PiBzdHJpbmdbXSxcbiAqICAgaWQ6IHN0cmluZ1xuICogfX0gUmVxdWlyZU1pZ3JhdGlvbkNvbnRleHRUeXBlXG4gKi9cblxuZXhwb3J0IHt9XG4iXX0=
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvZGF0YWJhc2UvbWlncmF0b3IvdHlwZXMuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsWUFBWSIsInNvdXJjZXNDb250ZW50IjpbIi8vIEB0cy1jaGVja1xuXG4vKipcbiAqIEB0eXBlZGVmIHtvYmplY3R9IE1pZ3JhdGlvbk9iamVjdFR5cGVcbiAqIEBwcm9wZXJ0eSB7bnVtYmVyfSBkYXRlIC0gTWlncmF0aW9uIHRpbWVzdGFtcCBwYXJzZWQgZnJvbSBmaWxlbmFtZS5cbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBmaWxlIC0gRmlsZW5hbWUgZm9yIHRoZSBtaWdyYXRpb24uXG4gKiBAcHJvcGVydHkge3N0cmluZ30gW2Z1bGxQYXRoXSAtIEFic29sdXRlIHBhdGggdG8gdGhlIG1pZ3JhdGlvbiBmaWxlLlxuICogQHByb3BlcnR5IHtzdHJpbmd9IG1pZ3JhdGlvbkNsYXNzTmFtZSAtIEV4cG9ydGVkIG1pZ3JhdGlvbiBjbGFzcyBuYW1lLlxuICovXG5cbi8qKlxuICogQHR5cGVkZWYge2Z1bmN0aW9uKCkgOiB0eXBlb2YgaW1wb3J0KFwiLi4vbWlncmF0aW9uL2luZGV4LmpzXCIpLmRlZmF1bHR9IEltcG9ydENhbGxiYWNrVHlwZVxuICovXG5cbi8qKlxuICogQHR5cGVkZWYge2Z1bmN0aW9uKHN0cmluZykgOiBQcm9taXNlPHR5cGVvZiBpbXBvcnQoXCIuLi9taWdyYXRpb24vaW5kZXguanNcIikuZGVmYXVsdD59IEltcG9ydEZ1bGxwYXRoQ2FsbGJhY2tUeXBlXG4gKi9cblxuLyoqXG4gKiBAdHlwZWRlZiB7KCkgPT4gUHJvbWlzZTx0eXBlb2YgaW1wb3J0KFwiLi4vbWlncmF0aW9uL2luZGV4LmpzXCIpLmRlZmF1bHQ+fSBSZXF1aXJlTWlncmF0aW9uVHlwZVxuICovXG5cbi8qKlxuICogQHR5cGVkZWYgeyhpZDogc3RyaW5nKSA9PiB7ZGVmYXVsdDogdHlwZW9mIGltcG9ydChcIi4uL21pZ3JhdGlvbi9pbmRleC5qc1wiKS5kZWZhdWx0fX0gUmVxdWlyZU1pZ3JhdGlvbkNvbnRleHRSZXF1aXJlVHlwZVxuICogQHR5cGVkZWYge1JlcXVpcmVNaWdyYXRpb25Db250ZXh0UmVxdWlyZVR5cGUgJiB7XG4gKiAgIGtleXM6ICgpID0+IHN0cmluZ1tdLFxuICogICBpZDogc3RyaW5nXG4gKiB9fSBSZXF1aXJlTWlncmF0aW9uQ29udGV4dFR5cGVcbiAqL1xuXG5leHBvcnQge31cbiJdfQ==
@@ -1,7 +1,7 @@
1
1
  export default class VelociousDatabaseMigrator {
2
2
  /**
3
- * @param {object} args
4
- * @param {import("../configuration.js").default} args.configuration
3
+ * @param {object} args - Options object.
4
+ * @param {import("../configuration.js").default} args.configuration - Configuration instance.
5
5
  */
6
6
  constructor({ configuration, ...restArgs }: {
7
7
  configuration: import("../configuration.js").default;
@@ -10,51 +10,51 @@ export default class VelociousDatabaseMigrator {
10
10
  migrationsVersions: Record<string, Record<string, boolean>>;
11
11
  configuration: import("../configuration.js").default;
12
12
  logger: Logger;
13
- /** @returns {Promise<void>} - Result. */
13
+ /** @returns {Promise<void>} - Resolves when complete. */
14
14
  prepare(): Promise<void>;
15
- /** @returns {Promise<void>} - Result. */
15
+ /** @returns {Promise<void>} - Resolves when complete. */
16
16
  createMigrationsTable(): Promise<void>;
17
17
  dropDatabase(): Promise<void>;
18
18
  /**
19
- * @param {string} dbIdentifier
20
- * @param {number} version
21
- * @returns {boolean} - Result.
19
+ * @param {string} dbIdentifier - Db identifier.
20
+ * @param {number} version - Version.
21
+ * @returns {boolean} - Whether it has run migration version.
22
22
  */
23
23
  hasRunMigrationVersion(dbIdentifier: string, version: number): boolean;
24
24
  /**
25
- * @param {import("./migrator/types.js").MigrationObjectType[]} files
26
- * @param {import("./migrator/types.js").ImportFullpathCallbackType} importCallback
25
+ * @param {import("./migrator/types.js").MigrationObjectType[]} files - Files.
26
+ * @param {import("./migrator/types.js").ImportFullpathCallbackType} importCallback - Import callback.
27
27
  */
28
28
  migrateFiles(files: import("./migrator/types.js").MigrationObjectType[], importCallback: import("./migrator/types.js").ImportFullpathCallbackType): Promise<void>;
29
29
  /**
30
- * @param {import("./migrator/types.js").RequireMigrationContextType} requireContext
31
- * @returns {Promise<void>} - Result.
30
+ * @param {import("./migrator/types.js").RequireMigrationContextType} requireContext - Require context.
31
+ * @returns {Promise<void>} - Resolves when complete.
32
32
  */
33
33
  migrateFilesFromRequireContext(requireContext: import("./migrator/types.js").RequireMigrationContextType): Promise<void>;
34
34
  /**
35
- * @returns {Promise<void>} - Result.
35
+ * @returns {Promise<void>} - Resolves when complete.
36
36
  */
37
37
  _afterMigrations(): Promise<void>;
38
- /** @returns {Promise<void>} - Result. */
38
+ /** @returns {Promise<void>} - Resolves when complete. */
39
39
  loadMigrationsVersions(): Promise<void>;
40
40
  /**
41
- * @param {import("./drivers/base.js").default} db
42
- * @returns {Promise<boolean>} - Result.
41
+ * @param {import("./drivers/base.js").default} db - Database connection.
42
+ * @returns {Promise<boolean>} - Resolves with Whether migrations table exist.
43
43
  */
44
44
  migrationsTableExist(db: import("./drivers/base.js").default): Promise<boolean>;
45
45
  /**
46
- * @param {import("./migrator/types.js").RequireMigrationContextType} requireContext
47
- * @returns {Promise<void>} - Result.
46
+ * @param {import("./migrator/types.js").RequireMigrationContextType} requireContext - Require context.
47
+ * @returns {Promise<void>} - Resolves when complete.
48
48
  */
49
49
  executeRequireContext(requireContext: import("./migrator/types.js").RequireMigrationContextType): Promise<void>;
50
50
  /**
51
- * @returns {Promise<void>} - Result.
51
+ * @returns {Promise<void>} - Resolves when complete.
52
52
  */
53
53
  reset(): Promise<void>;
54
54
  /**
55
- * @param {import("./migrator/types.js").MigrationObjectType[]} files
55
+ * @param {import("./migrator/types.js").MigrationObjectType[]} files - Files.
56
56
  * @param {import("./migrator/types.js").ImportFullpathCallbackType} importCallback Function to import a file
57
- * @returns {Promise<void>} - Result.
57
+ * @returns {Promise<void>} - Resolves when complete.
58
58
  */
59
59
  rollback(files: import("./migrator/types.js").MigrationObjectType[], importCallback: import("./migrator/types.js").ImportFullpathCallbackType): Promise<void>;
60
60
  /**
@@ -62,10 +62,10 @@ export default class VelociousDatabaseMigrator {
62
62
  */
63
63
  _latestMigrationVersion(): Promise<string | undefined>;
64
64
  /**
65
- * @param {object} args
66
- * @param {import("./migrator/types.js").MigrationObjectType} args.migration
67
- * @param {import("./migrator/types.js").RequireMigrationType} args.requireMigration
68
- * @param {string} [args.direction]
65
+ * @param {object} args - Options object.
66
+ * @param {import("./migrator/types.js").MigrationObjectType} args.migration - Migration.
67
+ * @param {import("./migrator/types.js").RequireMigrationType} args.requireMigration - Require migration.
68
+ * @param {string} [args.direction] - Direction.
69
69
  */
70
70
  runMigrationFile({ migration, requireMigration, direction }: {
71
71
  migration: import("./migrator/types.js").MigrationObjectType;
@@ -1 +1 @@
1
- {"version":3,"file":"migrator.d.ts","sourceRoot":"","sources":["../../../src/database/migrator.js"],"names":[],"mappings":"AASA;IAIE;;;OAGG;IACH,4CAFG;QAAoD,aAAa,EAAzD,OAAO,qBAAqB,EAAE,OAAO;KAC/C,EAQA;IAdD,sDAAsD;IACtD,oBADW,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAC3B;IAWrB,qDAAkC;IAClC,eAA8B;IAIhC,0CAA0C;IAC1C,WADc,OAAO,CAAC,IAAI,CAAC,CAI1B;IAED,0CAA0C;IAC1C,yBADc,OAAO,CAAC,IAAI,CAAC,CA+B1B;IAED,8BAEC;IAED;;;;OAIG;IACH,qCAJW,MAAM,WACN,MAAM,GACJ,OAAO,CAWnB;IAED;;;OAGG;IACH,oBAHW,OAAO,qBAAqB,EAAE,mBAAmB,EAAE,kBACnD,OAAO,qBAAqB,EAAE,0BAA0B,iBAuBlE;IAED;;;OAGG;IACH,+CAHW,OAAO,qBAAqB,EAAE,2BAA2B,GACvD,OAAO,CAAC,IAAI,CAAC,CA6CzB;IAED;;OAEG;IACH,oBAFa,OAAO,CAAC,IAAI,CAAC,CASzB;IAED,0CAA0C;IAC1C,0BADc,OAAO,CAAC,IAAI,CAAC,CA8B1B;IAED;;;OAGG;IACH,yBAHW,OAAO,mBAAmB,EAAE,OAAO,GACjC,OAAO,CAAC,OAAO,CAAC,CAQ5B;IAED;;;OAGG;IACH,sCAHW,OAAO,qBAAqB,EAAE,2BAA2B,GACvD,OAAO,CAAC,IAAI,CAAC,CAkCzB;IAED;;OAEG;IACH,SAFa,OAAO,CAAC,IAAI,CAAC,CAoCzB;IAED;;;;OAIG;IACH,gBAJW,OAAO,qBAAqB,EAAE,mBAAmB,EAAE,kBACnD,OAAO,qBAAqB,EAAE,0BAA0B,GACtD,OAAO,CAAC,IAAI,CAAC,CAyBzB;IAED;;OAEG;IACH,2BAFa,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAiBvC;IAED;;;;;OAKG;IACH,6DAJG;QAAgE,SAAS,EAAjE,OAAO,qBAAqB,EAAE,mBAAmB;QACQ,gBAAgB,EAAzE,OAAO,qBAAqB,EAAE,oBAAoB;QACpC,SAAS,GAAvB,MAAM;KAAkB,iBAiGlC;CACF;uBA3boB,cAAc"}
1
+ {"version":3,"file":"migrator.d.ts","sourceRoot":"","sources":["../../../src/database/migrator.js"],"names":[],"mappings":"AASA;IAIE;;;OAGG;IACH,4CAFG;QAAoD,aAAa,EAAzD,OAAO,qBAAqB,EAAE,OAAO;KAC/C,EAQA;IAdD,sDAAsD;IACtD,oBADW,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAC3B;IAWrB,qDAAkC;IAClC,eAA8B;IAIhC,0DAA0D;IAC1D,WADc,OAAO,CAAC,IAAI,CAAC,CAI1B;IAED,0DAA0D;IAC1D,yBADc,OAAO,CAAC,IAAI,CAAC,CA+B1B;IAED,8BAEC;IAED;;;;OAIG;IACH,qCAJW,MAAM,WACN,MAAM,GACJ,OAAO,CAWnB;IAED;;;OAGG;IACH,oBAHW,OAAO,qBAAqB,EAAE,mBAAmB,EAAE,kBACnD,OAAO,qBAAqB,EAAE,0BAA0B,iBAuBlE;IAED;;;OAGG;IACH,+CAHW,OAAO,qBAAqB,EAAE,2BAA2B,GACvD,OAAO,CAAC,IAAI,CAAC,CA6CzB;IAED;;OAEG;IACH,oBAFa,OAAO,CAAC,IAAI,CAAC,CASzB;IAED,0DAA0D;IAC1D,0BADc,OAAO,CAAC,IAAI,CAAC,CA8B1B;IAED;;;OAGG;IACH,yBAHW,OAAO,mBAAmB,EAAE,OAAO,GACjC,OAAO,CAAC,OAAO,CAAC,CAQ5B;IAED;;;OAGG;IACH,sCAHW,OAAO,qBAAqB,EAAE,2BAA2B,GACvD,OAAO,CAAC,IAAI,CAAC,CAkCzB;IAED;;OAEG;IACH,SAFa,OAAO,CAAC,IAAI,CAAC,CAoCzB;IAED;;;;OAIG;IACH,gBAJW,OAAO,qBAAqB,EAAE,mBAAmB,EAAE,kBACnD,OAAO,qBAAqB,EAAE,0BAA0B,GACtD,OAAO,CAAC,IAAI,CAAC,CAyBzB;IAED;;OAEG;IACH,2BAFa,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAiBvC;IAED;;;;;OAKG;IACH,6DAJG;QAAgE,SAAS,EAAjE,OAAO,qBAAqB,EAAE,mBAAmB;QACQ,gBAAgB,EAAzE,OAAO,qBAAqB,EAAE,oBAAoB;QACpC,SAAS,GAAvB,MAAM;KAChB,iBAgGA;CACF;uBA3boB,cAAc"}