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,26 +1,26 @@
1
1
  // @ts-check
2
2
  import BaseRoute from "./base-route.js";
3
3
  export default class VelociousBasicRoute extends BaseRoute {
4
- /** @param {string} name */
4
+ /** @param {string} name - Route name. */
5
5
  get(name) {
6
6
  const GetRoute = VelociousBasicRoute.GetRouteType;
7
7
  const route = new GetRoute({ name });
8
8
  this.routes.push(route);
9
9
  }
10
10
  /**
11
- * @param {object} args
12
- * @param {Record<string, any>} args.params
13
- * @param {string} args.path
14
- * @param {import("../http-server/client/request.js").default} args.request
15
- * @returns {{restPath: string} | undefined} - Result.
11
+ * @param {object} args - Options object.
12
+ * @param {Record<string, unknown>} args.params - Parameters object.
13
+ * @param {string} args.path - Path.
14
+ * @param {import("../http-server/client/request.js").default | import("../http-server/client/websocket-request.js").default} args.request - Request object.
15
+ * @returns {{restPath: string} | undefined} - REST path metadata for this route.
16
16
  */
17
17
  matchWithPath({ params, path, request }) {
18
18
  throw new Error(`No 'matchWithPath' implemented on ${this.constructor.name}`);
19
19
  }
20
20
  /**
21
- * @param {string} name
22
- * @param {function(import("./namespace-route.js").default) : void} callback
23
- * @returns {void} - Result.
21
+ * @param {string} name - Name.
22
+ * @param {function(import("./namespace-route.js").default) : void} callback - Callback function.
23
+ * @returns {void} - No return value.
24
24
  */
25
25
  namespace(name, callback) {
26
26
  const NamespaceRoute = VelociousBasicRoute.NameSpaceRouteType;
@@ -33,8 +33,8 @@ export default class VelociousBasicRoute extends BaseRoute {
33
33
  }
34
34
  }
35
35
  /**
36
- * @param {string} name
37
- * @returns {void} - Result.
36
+ * @param {string} name - Name.
37
+ * @returns {void} - No return value.
38
38
  */
39
39
  post(name) {
40
40
  const PostRoute = VelociousBasicRoute.PostRouteType;
@@ -44,9 +44,9 @@ export default class VelociousBasicRoute extends BaseRoute {
44
44
  this.routes.push(route);
45
45
  }
46
46
  /**
47
- * @param {string} name
48
- * @param {function(import("./resource-route.js").default) : void} [callback]
49
- * @returns {void} - Result.
47
+ * @param {string} name - Name.
48
+ * @param {function(import("./resource-route.js").default) : void} [callback] - Callback function.
49
+ * @returns {void} - No return value.
50
50
  */
51
51
  resources(name, callback) {
52
52
  const ResourceRoute = VelociousBasicRoute.ResourceRouteType;
@@ -59,4 +59,4 @@ export default class VelociousBasicRoute extends BaseRoute {
59
59
  }
60
60
  }
61
61
  }
62
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzaWMtcm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvcm91dGVzL2Jhc2ljLXJvdXRlLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFlBQVk7QUFFWixPQUFPLFNBQVMsTUFBTSxpQkFBaUIsQ0FBQTtBQUV2QyxNQUFNLENBQUMsT0FBTyxPQUFPLG1CQUFvQixTQUFRLFNBQVM7SUFDeEQsMkJBQTJCO0lBQzNCLEdBQUcsQ0FBQyxJQUFJO1FBQ04sTUFBTSxRQUFRLEdBQUcsbUJBQW1CLENBQUMsWUFBWSxDQUFBO1FBQ2pELE1BQU0sS0FBSyxHQUFHLElBQUksUUFBUSxDQUFDLEVBQUMsSUFBSSxFQUFDLENBQUMsQ0FBQTtRQUVsQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQTtJQUN6QixDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0gsYUFBYSxDQUFDLEVBQUMsTUFBTSxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUM7UUFDbkMsTUFBTSxJQUFJLEtBQUssQ0FBQyxxQ0FBcUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFBO0lBQy9FLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsU0FBUyxDQUFDLElBQUksRUFBRSxRQUFRO1FBQ3RCLE1BQU0sY0FBYyxHQUFHLG1CQUFtQixDQUFDLGtCQUFrQixDQUFBO1FBRTdELElBQUksQ0FBQyxjQUFjO1lBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQyw4QkFBOEIsQ0FBQyxDQUFBO1FBRXBFLE1BQU0sS0FBSyxHQUFHLElBQUksY0FBYyxDQUFDLEVBQUMsSUFBSSxFQUFDLENBQUMsQ0FBQTtRQUV4QyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQTtRQUV2QixJQUFJLFFBQVEsRUFBRSxDQUFDO1lBQ2IsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFBO1FBQ2pCLENBQUM7SUFDSCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsSUFBSSxDQUFDLElBQUk7UUFDUCxNQUFNLFNBQVMsR0FBRyxtQkFBbUIsQ0FBQyxhQUFhLENBQUE7UUFFbkQsSUFBSSxDQUFDLFNBQVM7WUFBRSxNQUFNLElBQUksS0FBSyxDQUFDLHlCQUF5QixDQUFDLENBQUE7UUFFMUQsTUFBTSxLQUFLLEdBQUcsSUFBSSxTQUFTLENBQUMsRUFBQyxJQUFJLEVBQUMsQ0FBQyxDQUFBO1FBRW5DLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFBO0lBQ3pCLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsU0FBUyxDQUFDLElBQUksRUFBRSxRQUFRO1FBQ3RCLE1BQU0sYUFBYSxHQUFHLG1CQUFtQixDQUFDLGlCQUFpQixDQUFBO1FBRTNELElBQUksQ0FBQyxhQUFhO1lBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQyw2QkFBNkIsQ0FBQyxDQUFBO1FBRWxFLE1BQU0sS0FBSyxHQUFHLElBQUksYUFBYSxDQUFDLEVBQUMsSUFBSSxFQUFDLENBQUMsQ0FBQTtRQUV2QyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQTtRQUV2QixJQUFJLFFBQVEsRUFBRSxDQUFDO1lBQ2IsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFBO1FBQ2pCLENBQUM7SUFDSCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBAdHMtY2hlY2tcblxuaW1wb3J0IEJhc2VSb3V0ZSBmcm9tIFwiLi9iYXNlLXJvdXRlLmpzXCJcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgVmVsb2Npb3VzQmFzaWNSb3V0ZSBleHRlbmRzIEJhc2VSb3V0ZSB7XG4gIC8qKiBAcGFyYW0ge3N0cmluZ30gbmFtZSAqL1xuICBnZXQobmFtZSkge1xuICAgIGNvbnN0IEdldFJvdXRlID0gVmVsb2Npb3VzQmFzaWNSb3V0ZS5HZXRSb3V0ZVR5cGVcbiAgICBjb25zdCByb3V0ZSA9IG5ldyBHZXRSb3V0ZSh7bmFtZX0pXG5cbiAgICB0aGlzLnJvdXRlcy5wdXNoKHJvdXRlKVxuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBhcmdzXG4gICAqIEBwYXJhbSB7UmVjb3JkPHN0cmluZywgYW55Pn0gYXJncy5wYXJhbXNcbiAgICogQHBhcmFtIHtzdHJpbmd9IGFyZ3MucGF0aFxuICAgKiBAcGFyYW0ge2ltcG9ydChcIi4uL2h0dHAtc2VydmVyL2NsaWVudC9yZXF1ZXN0LmpzXCIpLmRlZmF1bHR9IGFyZ3MucmVxdWVzdFxuICAgKiBAcmV0dXJucyB7e3Jlc3RQYXRoOiBzdHJpbmd9IHwgdW5kZWZpbmVkfSAtIFJlc3VsdC5cbiAgICovXG4gIG1hdGNoV2l0aFBhdGgoe3BhcmFtcywgcGF0aCwgcmVxdWVzdH0pIHsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby11bnVzZWQtdmFyc1xuICAgIHRocm93IG5ldyBFcnJvcihgTm8gJ21hdGNoV2l0aFBhdGgnIGltcGxlbWVudGVkIG9uICR7dGhpcy5jb25zdHJ1Y3Rvci5uYW1lfWApXG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWVcbiAgICogQHBhcmFtIHtmdW5jdGlvbihpbXBvcnQoXCIuL25hbWVzcGFjZS1yb3V0ZS5qc1wiKS5kZWZhdWx0KSA6IHZvaWR9IGNhbGxiYWNrXG4gICAqIEByZXR1cm5zIHt2b2lkfSAtIFJlc3VsdC5cbiAgICovXG4gIG5hbWVzcGFjZShuYW1lLCBjYWxsYmFjaykge1xuICAgIGNvbnN0IE5hbWVzcGFjZVJvdXRlID0gVmVsb2Npb3VzQmFzaWNSb3V0ZS5OYW1lU3BhY2VSb3V0ZVR5cGVcblxuICAgIGlmICghTmFtZXNwYWNlUm91dGUpIHRocm93IG5ldyBFcnJvcihcIk5vIE5hbWVzcGFjZVJvdXRlIHJlZ2lzdGVyZWRcIilcblxuICAgIGNvbnN0IHJvdXRlID0gbmV3IE5hbWVzcGFjZVJvdXRlKHtuYW1lfSlcblxuICAgIHRoaXMucm91dGVzLnB1c2gocm91dGUpXG5cbiAgICBpZiAoY2FsbGJhY2spIHtcbiAgICAgIGNhbGxiYWNrKHJvdXRlKVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZVxuICAgKiBAcmV0dXJucyB7dm9pZH0gLSBSZXN1bHQuXG4gICAqL1xuICBwb3N0KG5hbWUpIHtcbiAgICBjb25zdCBQb3N0Um91dGUgPSBWZWxvY2lvdXNCYXNpY1JvdXRlLlBvc3RSb3V0ZVR5cGVcblxuICAgIGlmICghUG9zdFJvdXRlKSB0aHJvdyBuZXcgRXJyb3IoXCJObyBQb3N0Um91dGUgcmVnaXN0ZXJlZFwiKVxuXG4gICAgY29uc3Qgcm91dGUgPSBuZXcgUG9zdFJvdXRlKHtuYW1lfSlcblxuICAgIHRoaXMucm91dGVzLnB1c2gocm91dGUpXG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWVcbiAgICogQHBhcmFtIHtmdW5jdGlvbihpbXBvcnQoXCIuL3Jlc291cmNlLXJvdXRlLmpzXCIpLmRlZmF1bHQpIDogdm9pZH0gW2NhbGxiYWNrXVxuICAgKiBAcmV0dXJucyB7dm9pZH0gLSBSZXN1bHQuXG4gICAqL1xuICByZXNvdXJjZXMobmFtZSwgY2FsbGJhY2spIHtcbiAgICBjb25zdCBSZXNvdXJjZVJvdXRlID0gVmVsb2Npb3VzQmFzaWNSb3V0ZS5SZXNvdXJjZVJvdXRlVHlwZVxuXG4gICAgaWYgKCFSZXNvdXJjZVJvdXRlKSB0aHJvdyBuZXcgRXJyb3IoXCJObyBSZXNvdXJjZVJvdXRlIHJlZ2lzdGVyZWRcIilcblxuICAgIGNvbnN0IHJvdXRlID0gbmV3IFJlc291cmNlUm91dGUoe25hbWV9KVxuXG4gICAgdGhpcy5yb3V0ZXMucHVzaChyb3V0ZSlcblxuICAgIGlmIChjYWxsYmFjaykge1xuICAgICAgY2FsbGJhY2socm91dGUpXG4gICAgfVxuICB9XG59XG4iXX0=
62
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzaWMtcm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvcm91dGVzL2Jhc2ljLXJvdXRlLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFlBQVk7QUFFWixPQUFPLFNBQVMsTUFBTSxpQkFBaUIsQ0FBQTtBQUV2QyxNQUFNLENBQUMsT0FBTyxPQUFPLG1CQUFvQixTQUFRLFNBQVM7SUFDeEQseUNBQXlDO0lBQ3pDLEdBQUcsQ0FBQyxJQUFJO1FBQ04sTUFBTSxRQUFRLEdBQUcsbUJBQW1CLENBQUMsWUFBWSxDQUFBO1FBQ2pELE1BQU0sS0FBSyxHQUFHLElBQUksUUFBUSxDQUFDLEVBQUMsSUFBSSxFQUFDLENBQUMsQ0FBQTtRQUVsQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQTtJQUN6QixDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0gsYUFBYSxDQUFDLEVBQUMsTUFBTSxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUM7UUFDbkMsTUFBTSxJQUFJLEtBQUssQ0FBQyxxQ0FBcUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFBO0lBQy9FLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsU0FBUyxDQUFDLElBQUksRUFBRSxRQUFRO1FBQ3RCLE1BQU0sY0FBYyxHQUFHLG1CQUFtQixDQUFDLGtCQUFrQixDQUFBO1FBRTdELElBQUksQ0FBQyxjQUFjO1lBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQyw4QkFBOEIsQ0FBQyxDQUFBO1FBRXBFLE1BQU0sS0FBSyxHQUFHLElBQUksY0FBYyxDQUFDLEVBQUMsSUFBSSxFQUFDLENBQUMsQ0FBQTtRQUV4QyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQTtRQUV2QixJQUFJLFFBQVEsRUFBRSxDQUFDO1lBQ2IsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFBO1FBQ2pCLENBQUM7SUFDSCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsSUFBSSxDQUFDLElBQUk7UUFDUCxNQUFNLFNBQVMsR0FBRyxtQkFBbUIsQ0FBQyxhQUFhLENBQUE7UUFFbkQsSUFBSSxDQUFDLFNBQVM7WUFBRSxNQUFNLElBQUksS0FBSyxDQUFDLHlCQUF5QixDQUFDLENBQUE7UUFFMUQsTUFBTSxLQUFLLEdBQUcsSUFBSSxTQUFTLENBQUMsRUFBQyxJQUFJLEVBQUMsQ0FBQyxDQUFBO1FBRW5DLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFBO0lBQ3pCLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsU0FBUyxDQUFDLElBQUksRUFBRSxRQUFRO1FBQ3RCLE1BQU0sYUFBYSxHQUFHLG1CQUFtQixDQUFDLGlCQUFpQixDQUFBO1FBRTNELElBQUksQ0FBQyxhQUFhO1lBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQyw2QkFBNkIsQ0FBQyxDQUFBO1FBRWxFLE1BQU0sS0FBSyxHQUFHLElBQUksYUFBYSxDQUFDLEVBQUMsSUFBSSxFQUFDLENBQUMsQ0FBQTtRQUV2QyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQTtRQUV2QixJQUFJLFFBQVEsRUFBRSxDQUFDO1lBQ2IsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFBO1FBQ2pCLENBQUM7SUFDSCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBAdHMtY2hlY2tcblxuaW1wb3J0IEJhc2VSb3V0ZSBmcm9tIFwiLi9iYXNlLXJvdXRlLmpzXCJcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgVmVsb2Npb3VzQmFzaWNSb3V0ZSBleHRlbmRzIEJhc2VSb3V0ZSB7XG4gIC8qKiBAcGFyYW0ge3N0cmluZ30gbmFtZSAtIFJvdXRlIG5hbWUuICovXG4gIGdldChuYW1lKSB7XG4gICAgY29uc3QgR2V0Um91dGUgPSBWZWxvY2lvdXNCYXNpY1JvdXRlLkdldFJvdXRlVHlwZVxuICAgIGNvbnN0IHJvdXRlID0gbmV3IEdldFJvdXRlKHtuYW1lfSlcblxuICAgIHRoaXMucm91dGVzLnB1c2gocm91dGUpXG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHtvYmplY3R9IGFyZ3MgLSBPcHRpb25zIG9iamVjdC5cbiAgICogQHBhcmFtIHtSZWNvcmQ8c3RyaW5nLCB1bmtub3duPn0gYXJncy5wYXJhbXMgLSBQYXJhbWV0ZXJzIG9iamVjdC5cbiAgICogQHBhcmFtIHtzdHJpbmd9IGFyZ3MucGF0aCAtIFBhdGguXG4gICAqIEBwYXJhbSB7aW1wb3J0KFwiLi4vaHR0cC1zZXJ2ZXIvY2xpZW50L3JlcXVlc3QuanNcIikuZGVmYXVsdCB8IGltcG9ydChcIi4uL2h0dHAtc2VydmVyL2NsaWVudC93ZWJzb2NrZXQtcmVxdWVzdC5qc1wiKS5kZWZhdWx0fSBhcmdzLnJlcXVlc3QgLSBSZXF1ZXN0IG9iamVjdC5cbiAgICogQHJldHVybnMge3tyZXN0UGF0aDogc3RyaW5nfSB8IHVuZGVmaW5lZH0gLSBSRVNUIHBhdGggbWV0YWRhdGEgZm9yIHRoaXMgcm91dGUuXG4gICAqL1xuICBtYXRjaFdpdGhQYXRoKHtwYXJhbXMsIHBhdGgsIHJlcXVlc3R9KSB7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tdW51c2VkLXZhcnNcbiAgICB0aHJvdyBuZXcgRXJyb3IoYE5vICdtYXRjaFdpdGhQYXRoJyBpbXBsZW1lbnRlZCBvbiAke3RoaXMuY29uc3RydWN0b3IubmFtZX1gKVxuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lIC0gTmFtZS5cbiAgICogQHBhcmFtIHtmdW5jdGlvbihpbXBvcnQoXCIuL25hbWVzcGFjZS1yb3V0ZS5qc1wiKS5kZWZhdWx0KSA6IHZvaWR9IGNhbGxiYWNrIC0gQ2FsbGJhY2sgZnVuY3Rpb24uXG4gICAqIEByZXR1cm5zIHt2b2lkfSAtIE5vIHJldHVybiB2YWx1ZS5cbiAgICovXG4gIG5hbWVzcGFjZShuYW1lLCBjYWxsYmFjaykge1xuICAgIGNvbnN0IE5hbWVzcGFjZVJvdXRlID0gVmVsb2Npb3VzQmFzaWNSb3V0ZS5OYW1lU3BhY2VSb3V0ZVR5cGVcblxuICAgIGlmICghTmFtZXNwYWNlUm91dGUpIHRocm93IG5ldyBFcnJvcihcIk5vIE5hbWVzcGFjZVJvdXRlIHJlZ2lzdGVyZWRcIilcblxuICAgIGNvbnN0IHJvdXRlID0gbmV3IE5hbWVzcGFjZVJvdXRlKHtuYW1lfSlcblxuICAgIHRoaXMucm91dGVzLnB1c2gocm91dGUpXG5cbiAgICBpZiAoY2FsbGJhY2spIHtcbiAgICAgIGNhbGxiYWNrKHJvdXRlKVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZSAtIE5hbWUuXG4gICAqIEByZXR1cm5zIHt2b2lkfSAtIE5vIHJldHVybiB2YWx1ZS5cbiAgICovXG4gIHBvc3QobmFtZSkge1xuICAgIGNvbnN0IFBvc3RSb3V0ZSA9IFZlbG9jaW91c0Jhc2ljUm91dGUuUG9zdFJvdXRlVHlwZVxuXG4gICAgaWYgKCFQb3N0Um91dGUpIHRocm93IG5ldyBFcnJvcihcIk5vIFBvc3RSb3V0ZSByZWdpc3RlcmVkXCIpXG5cbiAgICBjb25zdCByb3V0ZSA9IG5ldyBQb3N0Um91dGUoe25hbWV9KVxuXG4gICAgdGhpcy5yb3V0ZXMucHVzaChyb3V0ZSlcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZSAtIE5hbWUuXG4gICAqIEBwYXJhbSB7ZnVuY3Rpb24oaW1wb3J0KFwiLi9yZXNvdXJjZS1yb3V0ZS5qc1wiKS5kZWZhdWx0KSA6IHZvaWR9IFtjYWxsYmFja10gLSBDYWxsYmFjayBmdW5jdGlvbi5cbiAgICogQHJldHVybnMge3ZvaWR9IC0gTm8gcmV0dXJuIHZhbHVlLlxuICAgKi9cbiAgcmVzb3VyY2VzKG5hbWUsIGNhbGxiYWNrKSB7XG4gICAgY29uc3QgUmVzb3VyY2VSb3V0ZSA9IFZlbG9jaW91c0Jhc2ljUm91dGUuUmVzb3VyY2VSb3V0ZVR5cGVcblxuICAgIGlmICghUmVzb3VyY2VSb3V0ZSkgdGhyb3cgbmV3IEVycm9yKFwiTm8gUmVzb3VyY2VSb3V0ZSByZWdpc3RlcmVkXCIpXG5cbiAgICBjb25zdCByb3V0ZSA9IG5ldyBSZXNvdXJjZVJvdXRlKHtuYW1lfSlcblxuICAgIHRoaXMucm91dGVzLnB1c2gocm91dGUpXG5cbiAgICBpZiAoY2FsbGJhY2spIHtcbiAgICAgIGNhbGxiYWNrKHJvdXRlKVxuICAgIH1cbiAgfVxufVxuIl19
@@ -1,8 +1,8 @@
1
1
  export default VelociousRouteGetRoute;
2
2
  declare class VelociousRouteGetRoute extends BaseRoute {
3
3
  /**
4
- * @param {object} args
5
- * @param {string} args.name
4
+ * @param {object} args - Options object.
5
+ * @param {string} args.name - Name.
6
6
  */
7
7
  constructor({ name, ...restArgs }: {
8
8
  name: string;
@@ -4,8 +4,8 @@ import BaseRoute from "./base-route.js";
4
4
  import restArgsError from "../utils/rest-args-error.js";
5
5
  class VelociousRouteGetRoute extends BaseRoute {
6
6
  /**
7
- * @param {object} args
8
- * @param {string} args.name
7
+ * @param {object} args - Options object.
8
+ * @param {string} args.name - Name.
9
9
  */
10
10
  constructor({ name, ...restArgs }) {
11
11
  super();
@@ -19,11 +19,11 @@ class VelociousRouteGetRoute extends BaseRoute {
19
19
  ];
20
20
  }
21
21
  /**
22
- * @param {object} args
23
- * @param {Record<string, any>} args.params
24
- * @param {string} args.path
25
- * @param {import("../http-server/client/request.js").default} args.request
26
- * @returns {{restPath: string} | undefined} - Result.
22
+ * @param {object} args - Options object.
23
+ * @param {Record<string, unknown>} args.params - Parameters object.
24
+ * @param {string} args.path - Path.
25
+ * @param {import("../http-server/client/request.js").default | import("../http-server/client/websocket-request.js").default} args.request - Request object.
26
+ * @returns {{restPath: string} | undefined} - REST path metadata for this route.
27
27
  */
28
28
  matchWithPath({ params, path, request }) {
29
29
  const match = path.match(this.regExp);
@@ -39,4 +39,4 @@ class VelociousRouteGetRoute extends BaseRoute {
39
39
  }
40
40
  BaseRoute.registerRouteGetType(VelociousRouteGetRoute);
41
41
  export default VelociousRouteGetRoute;
42
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0LXJvdXRlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3JvdXRlcy9nZXQtcm91dGUuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsWUFBWTtBQUVaLE9BQU8sa0JBQWtCLE1BQU0sc0JBQXNCLENBQUE7QUFFckQsT0FBTyxTQUFTLE1BQU0saUJBQWlCLENBQUE7QUFDdkMsT0FBTyxhQUFhLE1BQU0sNkJBQTZCLENBQUE7QUFFdkQsTUFBTSxzQkFBdUIsU0FBUSxTQUFTO0lBQzVDOzs7T0FHRztJQUNILFlBQVksRUFBQyxJQUFJLEVBQUUsR0FBRyxRQUFRLEVBQUM7UUFDN0IsS0FBSyxFQUFFLENBQUE7UUFDUCxhQUFhLENBQUMsUUFBUSxDQUFDLENBQUE7UUFDdkIsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUE7UUFDaEIsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLE1BQU0sQ0FBQyxLQUFLLGtCQUFrQixDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQTtJQUNqRSxDQUFDO0lBRUQsYUFBYTtRQUNYLE9BQU87WUFDTCxFQUFDLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJLEVBQUM7U0FDcEQsQ0FBQTtJQUNILENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSCxhQUFhLENBQUMsRUFBQyxNQUFNLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBQztRQUNuQyxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQTtRQUVyQyxJQUFJLEtBQUssRUFBRSxDQUFDO1lBQ1YsTUFBTSxDQUFDLGNBQWMsRUFBRSxZQUFZLEVBQUUsUUFBUSxDQUFDLEdBQUcsS0FBSyxDQUFBLENBQUMscUNBQXFDO1lBRTVGLCtFQUErRTtZQUMvRSxJQUFJLFFBQVEsSUFBSSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDO2dCQUFFLE9BQU07WUFFakQsTUFBTSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFBO1lBRXpCLE9BQU8sRUFBQyxRQUFRLEVBQUMsQ0FBQTtRQUNuQixDQUFDO0lBQ0gsQ0FBQztDQUNGO0FBRUQsU0FBUyxDQUFDLG9CQUFvQixDQUFDLHNCQUFzQixDQUFDLENBQUE7QUFFdEQsZUFBZSxzQkFBc0IsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbIi8vIEB0cy1jaGVja1xuXG5pbXBvcnQgZXNjYXBlU3RyaW5nUmVnZXhwIGZyb20gXCJlc2NhcGUtc3RyaW5nLXJlZ2V4cFwiXG5cbmltcG9ydCBCYXNlUm91dGUgZnJvbSBcIi4vYmFzZS1yb3V0ZS5qc1wiXG5pbXBvcnQgcmVzdEFyZ3NFcnJvciBmcm9tIFwiLi4vdXRpbHMvcmVzdC1hcmdzLWVycm9yLmpzXCJcblxuY2xhc3MgVmVsb2Npb3VzUm91dGVHZXRSb3V0ZSBleHRlbmRzIEJhc2VSb3V0ZSB7XG4gIC8qKlxuICAgKiBAcGFyYW0ge29iamVjdH0gYXJnc1xuICAgKiBAcGFyYW0ge3N0cmluZ30gYXJncy5uYW1lXG4gICAqL1xuICBjb25zdHJ1Y3Rvcih7bmFtZSwgLi4ucmVzdEFyZ3N9KSB7XG4gICAgc3VwZXIoKVxuICAgIHJlc3RBcmdzRXJyb3IocmVzdEFyZ3MpXG4gICAgdGhpcy5uYW1lID0gbmFtZVxuICAgIHRoaXMucmVnRXhwID0gbmV3IFJlZ0V4cChgXigke2VzY2FwZVN0cmluZ1JlZ2V4cChuYW1lKX0pKC4qKSRgKVxuICB9XG5cbiAgZ2V0SHVtYW5QYXRocygpIHtcbiAgICByZXR1cm4gW1xuICAgICAge21ldGhvZDogXCJHRVRcIiwgYWN0aW9uOiB0aGlzLm5hbWUsIHBhdGg6IHRoaXMubmFtZX1cbiAgICBdXG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHtvYmplY3R9IGFyZ3NcbiAgICogQHBhcmFtIHtSZWNvcmQ8c3RyaW5nLCBhbnk+fSBhcmdzLnBhcmFtc1xuICAgKiBAcGFyYW0ge3N0cmluZ30gYXJncy5wYXRoXG4gICAqIEBwYXJhbSB7aW1wb3J0KFwiLi4vaHR0cC1zZXJ2ZXIvY2xpZW50L3JlcXVlc3QuanNcIikuZGVmYXVsdH0gYXJncy5yZXF1ZXN0XG4gICAqIEByZXR1cm5zIHt7cmVzdFBhdGg6IHN0cmluZ30gfCB1bmRlZmluZWR9IC0gUmVzdWx0LlxuICAgKi9cbiAgbWF0Y2hXaXRoUGF0aCh7cGFyYW1zLCBwYXRoLCByZXF1ZXN0fSkgeyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLXVudXNlZC12YXJzXG4gICAgY29uc3QgbWF0Y2ggPSBwYXRoLm1hdGNoKHRoaXMucmVnRXhwKVxuXG4gICAgaWYgKG1hdGNoKSB7XG4gICAgICBjb25zdCBbX2JlZ2lubmlnU2xhc2gsIF9tYXRjaGVkTmFtZSwgcmVzdFBhdGhdID0gbWF0Y2ggLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby11bnVzZWQtdmFyc1xuXG4gICAgICAvLyBQcmV2ZW50IHBhcnRpYWwgcHJlZml4IG1hdGNoZXMgKGUuZy4sIFwicGFyYW1zXCIgbWF0Y2hpbmcgXCJwYXJhbXMtd2l0aC1xdWVyeVwiKVxuICAgICAgaWYgKHJlc3RQYXRoICYmICFyZXN0UGF0aC5zdGFydHNXaXRoKFwiL1wiKSkgcmV0dXJuXG5cbiAgICAgIHBhcmFtcy5hY3Rpb24gPSB0aGlzLm5hbWVcblxuICAgICAgcmV0dXJuIHtyZXN0UGF0aH1cbiAgICB9XG4gIH1cbn1cblxuQmFzZVJvdXRlLnJlZ2lzdGVyUm91dGVHZXRUeXBlKFZlbG9jaW91c1JvdXRlR2V0Um91dGUpXG5cbmV4cG9ydCBkZWZhdWx0IFZlbG9jaW91c1JvdXRlR2V0Um91dGVcbiJdfQ==
42
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0LXJvdXRlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3JvdXRlcy9nZXQtcm91dGUuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsWUFBWTtBQUVaLE9BQU8sa0JBQWtCLE1BQU0sc0JBQXNCLENBQUE7QUFFckQsT0FBTyxTQUFTLE1BQU0saUJBQWlCLENBQUE7QUFDdkMsT0FBTyxhQUFhLE1BQU0sNkJBQTZCLENBQUE7QUFFdkQsTUFBTSxzQkFBdUIsU0FBUSxTQUFTO0lBQzVDOzs7T0FHRztJQUNILFlBQVksRUFBQyxJQUFJLEVBQUUsR0FBRyxRQUFRLEVBQUM7UUFDN0IsS0FBSyxFQUFFLENBQUE7UUFDUCxhQUFhLENBQUMsUUFBUSxDQUFDLENBQUE7UUFDdkIsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUE7UUFDaEIsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLE1BQU0sQ0FBQyxLQUFLLGtCQUFrQixDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQTtJQUNqRSxDQUFDO0lBRUQsYUFBYTtRQUNYLE9BQU87WUFDTCxFQUFDLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJLEVBQUM7U0FDcEQsQ0FBQTtJQUNILENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSCxhQUFhLENBQUMsRUFBQyxNQUFNLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBQztRQUNuQyxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQTtRQUVyQyxJQUFJLEtBQUssRUFBRSxDQUFDO1lBQ1YsTUFBTSxDQUFDLGNBQWMsRUFBRSxZQUFZLEVBQUUsUUFBUSxDQUFDLEdBQUcsS0FBSyxDQUFBLENBQUMscUNBQXFDO1lBRTVGLCtFQUErRTtZQUMvRSxJQUFJLFFBQVEsSUFBSSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDO2dCQUFFLE9BQU07WUFFakQsTUFBTSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFBO1lBRXpCLE9BQU8sRUFBQyxRQUFRLEVBQUMsQ0FBQTtRQUNuQixDQUFDO0lBQ0gsQ0FBQztDQUNGO0FBRUQsU0FBUyxDQUFDLG9CQUFvQixDQUFDLHNCQUFzQixDQUFDLENBQUE7QUFFdEQsZUFBZSxzQkFBc0IsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbIi8vIEB0cy1jaGVja1xuXG5pbXBvcnQgZXNjYXBlU3RyaW5nUmVnZXhwIGZyb20gXCJlc2NhcGUtc3RyaW5nLXJlZ2V4cFwiXG5cbmltcG9ydCBCYXNlUm91dGUgZnJvbSBcIi4vYmFzZS1yb3V0ZS5qc1wiXG5pbXBvcnQgcmVzdEFyZ3NFcnJvciBmcm9tIFwiLi4vdXRpbHMvcmVzdC1hcmdzLWVycm9yLmpzXCJcblxuY2xhc3MgVmVsb2Npb3VzUm91dGVHZXRSb3V0ZSBleHRlbmRzIEJhc2VSb3V0ZSB7XG4gIC8qKlxuICAgKiBAcGFyYW0ge29iamVjdH0gYXJncyAtIE9wdGlvbnMgb2JqZWN0LlxuICAgKiBAcGFyYW0ge3N0cmluZ30gYXJncy5uYW1lIC0gTmFtZS5cbiAgICovXG4gIGNvbnN0cnVjdG9yKHtuYW1lLCAuLi5yZXN0QXJnc30pIHtcbiAgICBzdXBlcigpXG4gICAgcmVzdEFyZ3NFcnJvcihyZXN0QXJncylcbiAgICB0aGlzLm5hbWUgPSBuYW1lXG4gICAgdGhpcy5yZWdFeHAgPSBuZXcgUmVnRXhwKGBeKCR7ZXNjYXBlU3RyaW5nUmVnZXhwKG5hbWUpfSkoLiopJGApXG4gIH1cblxuICBnZXRIdW1hblBhdGhzKCkge1xuICAgIHJldHVybiBbXG4gICAgICB7bWV0aG9kOiBcIkdFVFwiLCBhY3Rpb246IHRoaXMubmFtZSwgcGF0aDogdGhpcy5uYW1lfVxuICAgIF1cbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge29iamVjdH0gYXJncyAtIE9wdGlvbnMgb2JqZWN0LlxuICAgKiBAcGFyYW0ge1JlY29yZDxzdHJpbmcsIHVua25vd24+fSBhcmdzLnBhcmFtcyAtIFBhcmFtZXRlcnMgb2JqZWN0LlxuICAgKiBAcGFyYW0ge3N0cmluZ30gYXJncy5wYXRoIC0gUGF0aC5cbiAgICogQHBhcmFtIHtpbXBvcnQoXCIuLi9odHRwLXNlcnZlci9jbGllbnQvcmVxdWVzdC5qc1wiKS5kZWZhdWx0IHwgaW1wb3J0KFwiLi4vaHR0cC1zZXJ2ZXIvY2xpZW50L3dlYnNvY2tldC1yZXF1ZXN0LmpzXCIpLmRlZmF1bHR9IGFyZ3MucmVxdWVzdCAtIFJlcXVlc3Qgb2JqZWN0LlxuICAgKiBAcmV0dXJucyB7e3Jlc3RQYXRoOiBzdHJpbmd9IHwgdW5kZWZpbmVkfSAtIFJFU1QgcGF0aCBtZXRhZGF0YSBmb3IgdGhpcyByb3V0ZS5cbiAgICovXG4gIG1hdGNoV2l0aFBhdGgoe3BhcmFtcywgcGF0aCwgcmVxdWVzdH0pIHsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby11bnVzZWQtdmFyc1xuICAgIGNvbnN0IG1hdGNoID0gcGF0aC5tYXRjaCh0aGlzLnJlZ0V4cClcblxuICAgIGlmIChtYXRjaCkge1xuICAgICAgY29uc3QgW19iZWdpbm5pZ1NsYXNoLCBfbWF0Y2hlZE5hbWUsIHJlc3RQYXRoXSA9IG1hdGNoIC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tdW51c2VkLXZhcnNcblxuICAgICAgLy8gUHJldmVudCBwYXJ0aWFsIHByZWZpeCBtYXRjaGVzIChlLmcuLCBcInBhcmFtc1wiIG1hdGNoaW5nIFwicGFyYW1zLXdpdGgtcXVlcnlcIilcbiAgICAgIGlmIChyZXN0UGF0aCAmJiAhcmVzdFBhdGguc3RhcnRzV2l0aChcIi9cIikpIHJldHVyblxuXG4gICAgICBwYXJhbXMuYWN0aW9uID0gdGhpcy5uYW1lXG5cbiAgICAgIHJldHVybiB7cmVzdFBhdGh9XG4gICAgfVxuICB9XG59XG5cbkJhc2VSb3V0ZS5yZWdpc3RlclJvdXRlR2V0VHlwZShWZWxvY2lvdXNSb3V0ZUdldFJvdXRlKVxuXG5leHBvcnQgZGVmYXVsdCBWZWxvY2lvdXNSb3V0ZUdldFJvdXRlXG4iXX0=
@@ -1,8 +1,8 @@
1
1
  export default class VelociousRoutes {
2
2
  rootRoute: RootRoute;
3
3
  /**
4
- * @param {function(import("./root-route.js").default) : void} callback
5
- * @returns {void} - Result.
4
+ * @param {function(import("./root-route.js").default) : void} callback - Callback function.
5
+ * @returns {void} - No return value.
6
6
  */
7
7
  draw(callback: (arg0: import("./root-route.js").default) => void): void;
8
8
  }
@@ -7,11 +7,11 @@ import ResourceRoute from "./resource-route.js"; // eslint-disable-line no-unuse
7
7
  export default class VelociousRoutes {
8
8
  rootRoute = new RootRoute();
9
9
  /**
10
- * @param {function(import("./root-route.js").default) : void} callback
11
- * @returns {void} - Result.
10
+ * @param {function(import("./root-route.js").default) : void} callback - Callback function.
11
+ * @returns {void} - No return value.
12
12
  */
13
13
  draw(callback) {
14
14
  callback(this.rootRoute);
15
15
  }
16
16
  }
17
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvcm91dGVzL2luZGV4LmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFlBQVk7QUFFWixPQUFPLFFBQVEsTUFBTSxnQkFBZ0IsQ0FBQSxDQUFDLHFDQUFxQztBQUMzRSxPQUFPLGNBQWMsTUFBTSxzQkFBc0IsQ0FBQSxDQUFDLHFDQUFxQztBQUN2RixPQUFPLFNBQVMsTUFBTSxpQkFBaUIsQ0FBQSxDQUFDLHFDQUFxQztBQUM3RSxPQUFPLFNBQVMsTUFBTSxpQkFBaUIsQ0FBQTtBQUN2QyxPQUFPLGFBQWEsTUFBTSxxQkFBcUIsQ0FBQSxDQUFDLHFDQUFxQztBQUVyRixNQUFNLENBQUMsT0FBTyxPQUFPLGVBQWU7SUFDbEMsU0FBUyxHQUFHLElBQUksU0FBUyxFQUFFLENBQUE7SUFFM0I7OztPQUdHO0lBQ0gsSUFBSSxDQUFDLFFBQVE7UUFDWCxRQUFRLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFBO0lBQzFCLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbIi8vIEB0cy1jaGVja1xuXG5pbXBvcnQgR2V0Um91dGUgZnJvbSBcIi4vZ2V0LXJvdXRlLmpzXCIgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby11bnVzZWQtdmFyc1xuaW1wb3J0IE5hbWVTcGFjZVJvdXRlIGZyb20gXCIuL25hbWVzcGFjZS1yb3V0ZS5qc1wiIC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tdW51c2VkLXZhcnNcbmltcG9ydCBQb3N0Um91dGUgZnJvbSBcIi4vcG9zdC1yb3V0ZS5qc1wiIC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tdW51c2VkLXZhcnNcbmltcG9ydCBSb290Um91dGUgZnJvbSBcIi4vcm9vdC1yb3V0ZS5qc1wiXG5pbXBvcnQgUmVzb3VyY2VSb3V0ZSBmcm9tIFwiLi9yZXNvdXJjZS1yb3V0ZS5qc1wiIC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tdW51c2VkLXZhcnNcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgVmVsb2Npb3VzUm91dGVzIHtcbiAgcm9vdFJvdXRlID0gbmV3IFJvb3RSb3V0ZSgpXG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7ZnVuY3Rpb24oaW1wb3J0KFwiLi9yb290LXJvdXRlLmpzXCIpLmRlZmF1bHQpIDogdm9pZH0gY2FsbGJhY2tcbiAgICogQHJldHVybnMge3ZvaWR9IC0gUmVzdWx0LlxuICAgKi9cbiAgZHJhdyhjYWxsYmFjaykge1xuICAgIGNhbGxiYWNrKHRoaXMucm9vdFJvdXRlKVxuICB9XG59XG4iXX0=
17
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvcm91dGVzL2luZGV4LmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFlBQVk7QUFFWixPQUFPLFFBQVEsTUFBTSxnQkFBZ0IsQ0FBQSxDQUFDLHFDQUFxQztBQUMzRSxPQUFPLGNBQWMsTUFBTSxzQkFBc0IsQ0FBQSxDQUFDLHFDQUFxQztBQUN2RixPQUFPLFNBQVMsTUFBTSxpQkFBaUIsQ0FBQSxDQUFDLHFDQUFxQztBQUM3RSxPQUFPLFNBQVMsTUFBTSxpQkFBaUIsQ0FBQTtBQUN2QyxPQUFPLGFBQWEsTUFBTSxxQkFBcUIsQ0FBQSxDQUFDLHFDQUFxQztBQUVyRixNQUFNLENBQUMsT0FBTyxPQUFPLGVBQWU7SUFDbEMsU0FBUyxHQUFHLElBQUksU0FBUyxFQUFFLENBQUE7SUFFM0I7OztPQUdHO0lBQ0gsSUFBSSxDQUFDLFFBQVE7UUFDWCxRQUFRLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFBO0lBQzFCLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbIi8vIEB0cy1jaGVja1xuXG5pbXBvcnQgR2V0Um91dGUgZnJvbSBcIi4vZ2V0LXJvdXRlLmpzXCIgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby11bnVzZWQtdmFyc1xuaW1wb3J0IE5hbWVTcGFjZVJvdXRlIGZyb20gXCIuL25hbWVzcGFjZS1yb3V0ZS5qc1wiIC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tdW51c2VkLXZhcnNcbmltcG9ydCBQb3N0Um91dGUgZnJvbSBcIi4vcG9zdC1yb3V0ZS5qc1wiIC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tdW51c2VkLXZhcnNcbmltcG9ydCBSb290Um91dGUgZnJvbSBcIi4vcm9vdC1yb3V0ZS5qc1wiXG5pbXBvcnQgUmVzb3VyY2VSb3V0ZSBmcm9tIFwiLi9yZXNvdXJjZS1yb3V0ZS5qc1wiIC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tdW51c2VkLXZhcnNcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgVmVsb2Npb3VzUm91dGVzIHtcbiAgcm9vdFJvdXRlID0gbmV3IFJvb3RSb3V0ZSgpXG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7ZnVuY3Rpb24oaW1wb3J0KFwiLi9yb290LXJvdXRlLmpzXCIpLmRlZmF1bHQpIDogdm9pZH0gY2FsbGJhY2sgLSBDYWxsYmFjayBmdW5jdGlvbi5cbiAgICogQHJldHVybnMge3ZvaWR9IC0gTm8gcmV0dXJuIHZhbHVlLlxuICAgKi9cbiAgZHJhdyhjYWxsYmFjaykge1xuICAgIGNhbGxiYWNrKHRoaXMucm9vdFJvdXRlKVxuICB9XG59XG4iXX0=
@@ -1,8 +1,8 @@
1
1
  export default VelociousRouteNamespaceRoute;
2
2
  declare class VelociousRouteNamespaceRoute extends BasicRoute {
3
3
  /**
4
- * @param {object} args
5
- * @param {string} args.name
4
+ * @param {object} args - Options object.
5
+ * @param {string} args.name - Name.
6
6
  */
7
7
  constructor({ name, ...restArgs }: {
8
8
  name: string;
@@ -5,8 +5,8 @@ import BasicRoute from "./basic-route.js";
5
5
  import escapeStringRegexp from "escape-string-regexp";
6
6
  class VelociousRouteNamespaceRoute extends BasicRoute {
7
7
  /**
8
- * @param {object} args
9
- * @param {string} args.name
8
+ * @param {object} args - Options object.
9
+ * @param {string} args.name - Name.
10
10
  */
11
11
  constructor({ name, ...restArgs }) {
12
12
  super();
@@ -20,11 +20,11 @@ class VelociousRouteNamespaceRoute extends BasicRoute {
20
20
  ];
21
21
  }
22
22
  /**
23
- * @param {object} args
24
- * @param {Record<string, any>} args.params
25
- * @param {string} args.path
26
- * @param {import("../http-server/client/request.js").default} args.request
27
- * @returns {{restPath: string} | undefined} - Result.
23
+ * @param {object} args - Options object.
24
+ * @param {Record<string, unknown>} args.params - Parameters object.
25
+ * @param {string} args.path - Path.
26
+ * @param {import("../http-server/client/request.js").default | import("../http-server/client/websocket-request.js").default} args.request - Request object.
27
+ * @returns {{restPath: string} | undefined} - REST path metadata for this route.
28
28
  */
29
29
  matchWithPath({ params, path, request }) {
30
30
  const match = path.match(this.regExp);
@@ -37,4 +37,4 @@ class VelociousRouteNamespaceRoute extends BasicRoute {
37
37
  }
38
38
  BaseRoute.registerRouteNamespaceType(VelociousRouteNamespaceRoute);
39
39
  export default VelociousRouteNamespaceRoute;
40
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmFtZXNwYWNlLXJvdXRlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3JvdXRlcy9uYW1lc3BhY2Utcm91dGUuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsWUFBWTtBQUVaLE9BQU8sYUFBYSxNQUFNLDZCQUE2QixDQUFBO0FBQ3ZELE9BQU8sU0FBUyxNQUFNLGlCQUFpQixDQUFBO0FBQ3ZDLE9BQU8sVUFBVSxNQUFNLGtCQUFrQixDQUFBO0FBQ3pDLE9BQU8sa0JBQWtCLE1BQU0sc0JBQXNCLENBQUE7QUFFckQsTUFBTSw0QkFBNkIsU0FBUSxVQUFVO0lBQ25EOzs7T0FHRztJQUNILFlBQVksRUFBQyxJQUFJLEVBQUUsR0FBRyxRQUFRLEVBQUM7UUFDN0IsS0FBSyxFQUFFLENBQUE7UUFDUCxhQUFhLENBQUMsUUFBUSxDQUFDLENBQUE7UUFDdkIsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUE7UUFDaEIsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLE1BQU0sQ0FBQyxLQUFLLGtCQUFrQixDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQTtJQUNqRSxDQUFDO0lBRUQsYUFBYTtRQUNYLE9BQU87WUFDTCxFQUFDLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksRUFBQztTQUMvQyxDQUFBO0lBQ0gsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNILGFBQWEsQ0FBQyxFQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFDO1FBQ25DLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFBO1FBRXJDLElBQUksS0FBSyxFQUFFLENBQUM7WUFDVixNQUFNLENBQUMsY0FBYyxFQUFFLFlBQVksRUFBRSxRQUFRLENBQUMsR0FBRyxLQUFLLENBQUEsQ0FBQyxxQ0FBcUM7WUFFNUYsTUFBTSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFBO1lBRTdCLE9BQU8sRUFBQyxRQUFRLEVBQUMsQ0FBQTtRQUNuQixDQUFDO0lBQ0gsQ0FBQztDQUNGO0FBRUQsU0FBUyxDQUFDLDBCQUEwQixDQUFDLDRCQUE0QixDQUFDLENBQUE7QUFFbEUsZUFBZSw0QkFBNEIsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbIi8vIEB0cy1jaGVja1xuXG5pbXBvcnQgcmVzdEFyZ3NFcnJvciBmcm9tIFwiLi4vdXRpbHMvcmVzdC1hcmdzLWVycm9yLmpzXCJcbmltcG9ydCBCYXNlUm91dGUgZnJvbSBcIi4vYmFzZS1yb3V0ZS5qc1wiXG5pbXBvcnQgQmFzaWNSb3V0ZSBmcm9tIFwiLi9iYXNpYy1yb3V0ZS5qc1wiXG5pbXBvcnQgZXNjYXBlU3RyaW5nUmVnZXhwIGZyb20gXCJlc2NhcGUtc3RyaW5nLXJlZ2V4cFwiXG5cbmNsYXNzIFZlbG9jaW91c1JvdXRlTmFtZXNwYWNlUm91dGUgZXh0ZW5kcyBCYXNpY1JvdXRlIHtcbiAgLyoqXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBhcmdzXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBhcmdzLm5hbWVcbiAgICovXG4gIGNvbnN0cnVjdG9yKHtuYW1lLCAuLi5yZXN0QXJnc30pIHtcbiAgICBzdXBlcigpXG4gICAgcmVzdEFyZ3NFcnJvcihyZXN0QXJncylcbiAgICB0aGlzLm5hbWUgPSBuYW1lXG4gICAgdGhpcy5yZWdFeHAgPSBuZXcgUmVnRXhwKGBeKCR7ZXNjYXBlU3RyaW5nUmVnZXhwKG5hbWUpfSkoLiopJGApXG4gIH1cblxuICBnZXRIdW1hblBhdGhzKCkge1xuICAgIHJldHVybiBbXG4gICAgICB7bWV0aG9kOiBcIkdFVFwiLCBhY3Rpb246IG51bGwsIHBhdGg6IHRoaXMubmFtZX1cbiAgICBdXG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHtvYmplY3R9IGFyZ3NcbiAgICogQHBhcmFtIHtSZWNvcmQ8c3RyaW5nLCBhbnk+fSBhcmdzLnBhcmFtc1xuICAgKiBAcGFyYW0ge3N0cmluZ30gYXJncy5wYXRoXG4gICAqIEBwYXJhbSB7aW1wb3J0KFwiLi4vaHR0cC1zZXJ2ZXIvY2xpZW50L3JlcXVlc3QuanNcIikuZGVmYXVsdH0gYXJncy5yZXF1ZXN0XG4gICAqIEByZXR1cm5zIHt7cmVzdFBhdGg6IHN0cmluZ30gfCB1bmRlZmluZWR9IC0gUmVzdWx0LlxuICAgKi9cbiAgbWF0Y2hXaXRoUGF0aCh7cGFyYW1zLCBwYXRoLCByZXF1ZXN0fSkgeyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLXVudXNlZC12YXJzXG4gICAgY29uc3QgbWF0Y2ggPSBwYXRoLm1hdGNoKHRoaXMucmVnRXhwKVxuXG4gICAgaWYgKG1hdGNoKSB7XG4gICAgICBjb25zdCBbX2JlZ2lubmlnU2xhc2gsIF9tYXRjaGVkTmFtZSwgcmVzdFBhdGhdID0gbWF0Y2ggLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby11bnVzZWQtdmFyc1xuXG4gICAgICBwYXJhbXMuY29udHJvbGxlciA9IHRoaXMubmFtZVxuXG4gICAgICByZXR1cm4ge3Jlc3RQYXRofVxuICAgIH1cbiAgfVxufVxuXG5CYXNlUm91dGUucmVnaXN0ZXJSb3V0ZU5hbWVzcGFjZVR5cGUoVmVsb2Npb3VzUm91dGVOYW1lc3BhY2VSb3V0ZSlcblxuZXhwb3J0IGRlZmF1bHQgVmVsb2Npb3VzUm91dGVOYW1lc3BhY2VSb3V0ZVxuIl19
40
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmFtZXNwYWNlLXJvdXRlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3JvdXRlcy9uYW1lc3BhY2Utcm91dGUuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsWUFBWTtBQUVaLE9BQU8sYUFBYSxNQUFNLDZCQUE2QixDQUFBO0FBQ3ZELE9BQU8sU0FBUyxNQUFNLGlCQUFpQixDQUFBO0FBQ3ZDLE9BQU8sVUFBVSxNQUFNLGtCQUFrQixDQUFBO0FBQ3pDLE9BQU8sa0JBQWtCLE1BQU0sc0JBQXNCLENBQUE7QUFFckQsTUFBTSw0QkFBNkIsU0FBUSxVQUFVO0lBQ25EOzs7T0FHRztJQUNILFlBQVksRUFBQyxJQUFJLEVBQUUsR0FBRyxRQUFRLEVBQUM7UUFDN0IsS0FBSyxFQUFFLENBQUE7UUFDUCxhQUFhLENBQUMsUUFBUSxDQUFDLENBQUE7UUFDdkIsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUE7UUFDaEIsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLE1BQU0sQ0FBQyxLQUFLLGtCQUFrQixDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQTtJQUNqRSxDQUFDO0lBRUQsYUFBYTtRQUNYLE9BQU87WUFDTCxFQUFDLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksRUFBQztTQUMvQyxDQUFBO0lBQ0gsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNILGFBQWEsQ0FBQyxFQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFDO1FBQ25DLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFBO1FBRXJDLElBQUksS0FBSyxFQUFFLENBQUM7WUFDVixNQUFNLENBQUMsY0FBYyxFQUFFLFlBQVksRUFBRSxRQUFRLENBQUMsR0FBRyxLQUFLLENBQUEsQ0FBQyxxQ0FBcUM7WUFFNUYsTUFBTSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFBO1lBRTdCLE9BQU8sRUFBQyxRQUFRLEVBQUMsQ0FBQTtRQUNuQixDQUFDO0lBQ0gsQ0FBQztDQUNGO0FBRUQsU0FBUyxDQUFDLDBCQUEwQixDQUFDLDRCQUE0QixDQUFDLENBQUE7QUFFbEUsZUFBZSw0QkFBNEIsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbIi8vIEB0cy1jaGVja1xuXG5pbXBvcnQgcmVzdEFyZ3NFcnJvciBmcm9tIFwiLi4vdXRpbHMvcmVzdC1hcmdzLWVycm9yLmpzXCJcbmltcG9ydCBCYXNlUm91dGUgZnJvbSBcIi4vYmFzZS1yb3V0ZS5qc1wiXG5pbXBvcnQgQmFzaWNSb3V0ZSBmcm9tIFwiLi9iYXNpYy1yb3V0ZS5qc1wiXG5pbXBvcnQgZXNjYXBlU3RyaW5nUmVnZXhwIGZyb20gXCJlc2NhcGUtc3RyaW5nLXJlZ2V4cFwiXG5cbmNsYXNzIFZlbG9jaW91c1JvdXRlTmFtZXNwYWNlUm91dGUgZXh0ZW5kcyBCYXNpY1JvdXRlIHtcbiAgLyoqXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBhcmdzIC0gT3B0aW9ucyBvYmplY3QuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBhcmdzLm5hbWUgLSBOYW1lLlxuICAgKi9cbiAgY29uc3RydWN0b3Ioe25hbWUsIC4uLnJlc3RBcmdzfSkge1xuICAgIHN1cGVyKClcbiAgICByZXN0QXJnc0Vycm9yKHJlc3RBcmdzKVxuICAgIHRoaXMubmFtZSA9IG5hbWVcbiAgICB0aGlzLnJlZ0V4cCA9IG5ldyBSZWdFeHAoYF4oJHtlc2NhcGVTdHJpbmdSZWdleHAobmFtZSl9KSguKikkYClcbiAgfVxuXG4gIGdldEh1bWFuUGF0aHMoKSB7XG4gICAgcmV0dXJuIFtcbiAgICAgIHttZXRob2Q6IFwiR0VUXCIsIGFjdGlvbjogbnVsbCwgcGF0aDogdGhpcy5uYW1lfVxuICAgIF1cbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge29iamVjdH0gYXJncyAtIE9wdGlvbnMgb2JqZWN0LlxuICAgKiBAcGFyYW0ge1JlY29yZDxzdHJpbmcsIHVua25vd24+fSBhcmdzLnBhcmFtcyAtIFBhcmFtZXRlcnMgb2JqZWN0LlxuICAgKiBAcGFyYW0ge3N0cmluZ30gYXJncy5wYXRoIC0gUGF0aC5cbiAgICogQHBhcmFtIHtpbXBvcnQoXCIuLi9odHRwLXNlcnZlci9jbGllbnQvcmVxdWVzdC5qc1wiKS5kZWZhdWx0IHwgaW1wb3J0KFwiLi4vaHR0cC1zZXJ2ZXIvY2xpZW50L3dlYnNvY2tldC1yZXF1ZXN0LmpzXCIpLmRlZmF1bHR9IGFyZ3MucmVxdWVzdCAtIFJlcXVlc3Qgb2JqZWN0LlxuICAgKiBAcmV0dXJucyB7e3Jlc3RQYXRoOiBzdHJpbmd9IHwgdW5kZWZpbmVkfSAtIFJFU1QgcGF0aCBtZXRhZGF0YSBmb3IgdGhpcyByb3V0ZS5cbiAgICovXG4gIG1hdGNoV2l0aFBhdGgoe3BhcmFtcywgcGF0aCwgcmVxdWVzdH0pIHsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby11bnVzZWQtdmFyc1xuICAgIGNvbnN0IG1hdGNoID0gcGF0aC5tYXRjaCh0aGlzLnJlZ0V4cClcblxuICAgIGlmIChtYXRjaCkge1xuICAgICAgY29uc3QgW19iZWdpbm5pZ1NsYXNoLCBfbWF0Y2hlZE5hbWUsIHJlc3RQYXRoXSA9IG1hdGNoIC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tdW51c2VkLXZhcnNcblxuICAgICAgcGFyYW1zLmNvbnRyb2xsZXIgPSB0aGlzLm5hbWVcblxuICAgICAgcmV0dXJuIHtyZXN0UGF0aH1cbiAgICB9XG4gIH1cbn1cblxuQmFzZVJvdXRlLnJlZ2lzdGVyUm91dGVOYW1lc3BhY2VUeXBlKFZlbG9jaW91c1JvdXRlTmFtZXNwYWNlUm91dGUpXG5cbmV4cG9ydCBkZWZhdWx0IFZlbG9jaW91c1JvdXRlTmFtZXNwYWNlUm91dGVcbiJdfQ==
@@ -1,8 +1,8 @@
1
1
  export default VelociousRoutePostRoute;
2
2
  declare class VelociousRoutePostRoute extends BaseRoute {
3
3
  /**
4
- * @param {object} args
5
- * @param {string} args.name
4
+ * @param {object} args - Options object.
5
+ * @param {string} args.name - Name.
6
6
  */
7
7
  constructor({ name, ...restArgs }: {
8
8
  name: string;
@@ -4,8 +4,8 @@ import escapeStringRegexp from "escape-string-regexp";
4
4
  import restArgsError from "../utils/rest-args-error.js";
5
5
  class VelociousRoutePostRoute extends BaseRoute {
6
6
  /**
7
- * @param {object} args
8
- * @param {string} args.name
7
+ * @param {object} args - Options object.
8
+ * @param {string} args.name - Name.
9
9
  */
10
10
  constructor({ name, ...restArgs }) {
11
11
  super();
@@ -20,11 +20,11 @@ class VelociousRoutePostRoute extends BaseRoute {
20
20
  ];
21
21
  }
22
22
  /**
23
- * @param {object} args
24
- * @param {Record<string, any>} args.params
25
- * @param {string} args.path
26
- * @param {import("../http-server/client/request.js").default} args.request
27
- * @returns {{restPath: string} | undefined} - Result.
23
+ * @param {object} args - Options object.
24
+ * @param {Record<string, unknown>} args.params - Parameters object.
25
+ * @param {string} args.path - Path.
26
+ * @param {import("../http-server/client/request.js").default | import("../http-server/client/websocket-request.js").default} args.request - Request object.
27
+ * @returns {{restPath: string} | undefined} - REST path metadata for this route.
28
28
  */
29
29
  matchWithPath({ params, path, request }) {
30
30
  const match = path.match(this.regExp);
@@ -37,4 +37,4 @@ class VelociousRoutePostRoute extends BaseRoute {
37
37
  }
38
38
  BaseRoute.registerRoutePostType(VelociousRoutePostRoute);
39
39
  export default VelociousRoutePostRoute;
40
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9zdC1yb3V0ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9yb3V0ZXMvcG9zdC1yb3V0ZS5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxZQUFZO0FBRVosT0FBTyxTQUFTLE1BQU0saUJBQWlCLENBQUE7QUFDdkMsT0FBTyxrQkFBa0IsTUFBTSxzQkFBc0IsQ0FBQTtBQUNyRCxPQUFPLGFBQWEsTUFBTSw2QkFBNkIsQ0FBQTtBQUV2RCxNQUFNLHVCQUF3QixTQUFRLFNBQVM7SUFDN0M7OztPQUdHO0lBQ0gsWUFBWSxFQUFDLElBQUksRUFBRSxHQUFHLFFBQVEsRUFBQztRQUM3QixLQUFLLEVBQUUsQ0FBQTtRQUNQLGFBQWEsQ0FBQyxRQUFRLENBQUMsQ0FBQTtRQUN2QixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQTtRQUNoQixJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksTUFBTSxDQUFDLEtBQUssa0JBQWtCLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFBO0lBQ2pFLENBQUM7SUFFRCxhQUFhO1FBQ1gsT0FBTyxDQUFDO2dCQUNOLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJO2FBQUM7U0FDcEQsQ0FBQTtJQUNILENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSCxhQUFhLENBQUMsRUFBQyxNQUFNLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBQztRQUNuQyxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQTtRQUVyQyxJQUFJLEtBQUssRUFBRSxDQUFDO1lBQ1YsTUFBTSxDQUFDLGNBQWMsRUFBRSxZQUFZLEVBQUUsUUFBUSxDQUFDLEdBQUcsS0FBSyxDQUFBLENBQUMscUNBQXFDO1lBRTVGLE1BQU0sQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQTtZQUV6QixPQUFPLEVBQUMsUUFBUSxFQUFDLENBQUE7UUFDbkIsQ0FBQztJQUNILENBQUM7Q0FDRjtBQUVELFNBQVMsQ0FBQyxxQkFBcUIsQ0FBQyx1QkFBdUIsQ0FBQyxDQUFBO0FBRXhELGVBQWUsdUJBQXVCLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBAdHMtY2hlY2tcblxuaW1wb3J0IEJhc2VSb3V0ZSBmcm9tIFwiLi9iYXNlLXJvdXRlLmpzXCJcbmltcG9ydCBlc2NhcGVTdHJpbmdSZWdleHAgZnJvbSBcImVzY2FwZS1zdHJpbmctcmVnZXhwXCJcbmltcG9ydCByZXN0QXJnc0Vycm9yIGZyb20gXCIuLi91dGlscy9yZXN0LWFyZ3MtZXJyb3IuanNcIlxuXG5jbGFzcyBWZWxvY2lvdXNSb3V0ZVBvc3RSb3V0ZSBleHRlbmRzIEJhc2VSb3V0ZSB7XG4gIC8qKlxuICAgKiBAcGFyYW0ge29iamVjdH0gYXJnc1xuICAgKiBAcGFyYW0ge3N0cmluZ30gYXJncy5uYW1lXG4gICAqL1xuICBjb25zdHJ1Y3Rvcih7bmFtZSwgLi4ucmVzdEFyZ3N9KSB7XG4gICAgc3VwZXIoKVxuICAgIHJlc3RBcmdzRXJyb3IocmVzdEFyZ3MpXG4gICAgdGhpcy5uYW1lID0gbmFtZVxuICAgIHRoaXMucmVnRXhwID0gbmV3IFJlZ0V4cChgXigke2VzY2FwZVN0cmluZ1JlZ2V4cChuYW1lKX0pKC4qKSRgKVxuICB9XG5cbiAgZ2V0SHVtYW5QYXRocygpIHtcbiAgICByZXR1cm4gW3tcbiAgICAgIG1ldGhvZDogXCJQT1NUXCIsIGFjdGlvbjogdGhpcy5uYW1lLCBwYXRoOiB0aGlzLm5hbWV9XG4gICAgXVxuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBhcmdzXG4gICAqIEBwYXJhbSB7UmVjb3JkPHN0cmluZywgYW55Pn0gYXJncy5wYXJhbXNcbiAgICogQHBhcmFtIHtzdHJpbmd9IGFyZ3MucGF0aFxuICAgKiBAcGFyYW0ge2ltcG9ydChcIi4uL2h0dHAtc2VydmVyL2NsaWVudC9yZXF1ZXN0LmpzXCIpLmRlZmF1bHR9IGFyZ3MucmVxdWVzdFxuICAgKiBAcmV0dXJucyB7e3Jlc3RQYXRoOiBzdHJpbmd9IHwgdW5kZWZpbmVkfSAtIFJlc3VsdC5cbiAgICovXG4gIG1hdGNoV2l0aFBhdGgoe3BhcmFtcywgcGF0aCwgcmVxdWVzdH0pIHsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby11bnVzZWQtdmFyc1xuICAgIGNvbnN0IG1hdGNoID0gcGF0aC5tYXRjaCh0aGlzLnJlZ0V4cClcblxuICAgIGlmIChtYXRjaCkge1xuICAgICAgY29uc3QgW19iZWdpbm5pZ1NsYXNoLCBfbWF0Y2hlZE5hbWUsIHJlc3RQYXRoXSA9IG1hdGNoIC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tdW51c2VkLXZhcnNcblxuICAgICAgcGFyYW1zLmFjdGlvbiA9IHRoaXMubmFtZVxuXG4gICAgICByZXR1cm4ge3Jlc3RQYXRofVxuICAgIH1cbiAgfVxufVxuXG5CYXNlUm91dGUucmVnaXN0ZXJSb3V0ZVBvc3RUeXBlKFZlbG9jaW91c1JvdXRlUG9zdFJvdXRlKVxuXG5leHBvcnQgZGVmYXVsdCBWZWxvY2lvdXNSb3V0ZVBvc3RSb3V0ZVxuIl19
40
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9zdC1yb3V0ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9yb3V0ZXMvcG9zdC1yb3V0ZS5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxZQUFZO0FBRVosT0FBTyxTQUFTLE1BQU0saUJBQWlCLENBQUE7QUFDdkMsT0FBTyxrQkFBa0IsTUFBTSxzQkFBc0IsQ0FBQTtBQUNyRCxPQUFPLGFBQWEsTUFBTSw2QkFBNkIsQ0FBQTtBQUV2RCxNQUFNLHVCQUF3QixTQUFRLFNBQVM7SUFDN0M7OztPQUdHO0lBQ0gsWUFBWSxFQUFDLElBQUksRUFBRSxHQUFHLFFBQVEsRUFBQztRQUM3QixLQUFLLEVBQUUsQ0FBQTtRQUNQLGFBQWEsQ0FBQyxRQUFRLENBQUMsQ0FBQTtRQUN2QixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQTtRQUNoQixJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksTUFBTSxDQUFDLEtBQUssa0JBQWtCLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFBO0lBQ2pFLENBQUM7SUFFRCxhQUFhO1FBQ1gsT0FBTyxDQUFDO2dCQUNOLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJO2FBQUM7U0FDcEQsQ0FBQTtJQUNILENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSCxhQUFhLENBQUMsRUFBQyxNQUFNLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBQztRQUNuQyxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQTtRQUVyQyxJQUFJLEtBQUssRUFBRSxDQUFDO1lBQ1YsTUFBTSxDQUFDLGNBQWMsRUFBRSxZQUFZLEVBQUUsUUFBUSxDQUFDLEdBQUcsS0FBSyxDQUFBLENBQUMscUNBQXFDO1lBRTVGLE1BQU0sQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQTtZQUV6QixPQUFPLEVBQUMsUUFBUSxFQUFDLENBQUE7UUFDbkIsQ0FBQztJQUNILENBQUM7Q0FDRjtBQUVELFNBQVMsQ0FBQyxxQkFBcUIsQ0FBQyx1QkFBdUIsQ0FBQyxDQUFBO0FBRXhELGVBQWUsdUJBQXVCLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBAdHMtY2hlY2tcblxuaW1wb3J0IEJhc2VSb3V0ZSBmcm9tIFwiLi9iYXNlLXJvdXRlLmpzXCJcbmltcG9ydCBlc2NhcGVTdHJpbmdSZWdleHAgZnJvbSBcImVzY2FwZS1zdHJpbmctcmVnZXhwXCJcbmltcG9ydCByZXN0QXJnc0Vycm9yIGZyb20gXCIuLi91dGlscy9yZXN0LWFyZ3MtZXJyb3IuanNcIlxuXG5jbGFzcyBWZWxvY2lvdXNSb3V0ZVBvc3RSb3V0ZSBleHRlbmRzIEJhc2VSb3V0ZSB7XG4gIC8qKlxuICAgKiBAcGFyYW0ge29iamVjdH0gYXJncyAtIE9wdGlvbnMgb2JqZWN0LlxuICAgKiBAcGFyYW0ge3N0cmluZ30gYXJncy5uYW1lIC0gTmFtZS5cbiAgICovXG4gIGNvbnN0cnVjdG9yKHtuYW1lLCAuLi5yZXN0QXJnc30pIHtcbiAgICBzdXBlcigpXG4gICAgcmVzdEFyZ3NFcnJvcihyZXN0QXJncylcbiAgICB0aGlzLm5hbWUgPSBuYW1lXG4gICAgdGhpcy5yZWdFeHAgPSBuZXcgUmVnRXhwKGBeKCR7ZXNjYXBlU3RyaW5nUmVnZXhwKG5hbWUpfSkoLiopJGApXG4gIH1cblxuICBnZXRIdW1hblBhdGhzKCkge1xuICAgIHJldHVybiBbe1xuICAgICAgbWV0aG9kOiBcIlBPU1RcIiwgYWN0aW9uOiB0aGlzLm5hbWUsIHBhdGg6IHRoaXMubmFtZX1cbiAgICBdXG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHtvYmplY3R9IGFyZ3MgLSBPcHRpb25zIG9iamVjdC5cbiAgICogQHBhcmFtIHtSZWNvcmQ8c3RyaW5nLCB1bmtub3duPn0gYXJncy5wYXJhbXMgLSBQYXJhbWV0ZXJzIG9iamVjdC5cbiAgICogQHBhcmFtIHtzdHJpbmd9IGFyZ3MucGF0aCAtIFBhdGguXG4gICAqIEBwYXJhbSB7aW1wb3J0KFwiLi4vaHR0cC1zZXJ2ZXIvY2xpZW50L3JlcXVlc3QuanNcIikuZGVmYXVsdCB8IGltcG9ydChcIi4uL2h0dHAtc2VydmVyL2NsaWVudC93ZWJzb2NrZXQtcmVxdWVzdC5qc1wiKS5kZWZhdWx0fSBhcmdzLnJlcXVlc3QgLSBSZXF1ZXN0IG9iamVjdC5cbiAgICogQHJldHVybnMge3tyZXN0UGF0aDogc3RyaW5nfSB8IHVuZGVmaW5lZH0gLSBSRVNUIHBhdGggbWV0YWRhdGEgZm9yIHRoaXMgcm91dGUuXG4gICAqL1xuICBtYXRjaFdpdGhQYXRoKHtwYXJhbXMsIHBhdGgsIHJlcXVlc3R9KSB7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tdW51c2VkLXZhcnNcbiAgICBjb25zdCBtYXRjaCA9IHBhdGgubWF0Y2godGhpcy5yZWdFeHApXG5cbiAgICBpZiAobWF0Y2gpIHtcbiAgICAgIGNvbnN0IFtfYmVnaW5uaWdTbGFzaCwgX21hdGNoZWROYW1lLCByZXN0UGF0aF0gPSBtYXRjaCAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLXVudXNlZC12YXJzXG5cbiAgICAgIHBhcmFtcy5hY3Rpb24gPSB0aGlzLm5hbWVcblxuICAgICAgcmV0dXJuIHtyZXN0UGF0aH1cbiAgICB9XG4gIH1cbn1cblxuQmFzZVJvdXRlLnJlZ2lzdGVyUm91dGVQb3N0VHlwZShWZWxvY2lvdXNSb3V0ZVBvc3RSb3V0ZSlcblxuZXhwb3J0IGRlZmF1bHQgVmVsb2Npb3VzUm91dGVQb3N0Um91dGVcbiJdfQ==
@@ -1,50 +1,52 @@
1
1
  export default class VelociousRoutesResolver {
2
2
  /**
3
- * @param {object} args
4
- * @param {import("../configuration.js").default} args.configuration
5
- * @param {import("../http-server/client/request.js").default} args.request
6
- * @param {import("../http-server/client/response.js").default} args.response
3
+ * @param {object} args - Options object.
4
+ * @param {import("../configuration.js").default} args.configuration - Configuration instance.
5
+ * @param {import("../http-server/client/request.js").default | import("../http-server/client/websocket-request.js").default} args.request - Request object.
6
+ * @param {import("../http-server/client/response.js").default} args.response - Response object.
7
7
  */
8
8
  constructor({ configuration, request, response }: {
9
9
  configuration: import("../configuration.js").default;
10
- request: import("../http-server/client/request.js").default;
10
+ request: import("../http-server/client/request.js").default | import("../http-server/client/websocket-request.js").default;
11
11
  response: import("../http-server/client/response.js").default;
12
12
  });
13
13
  /** @type {Logger | undefined} */
14
14
  logger: Logger | undefined;
15
15
  configuration: import("../configuration.js").default;
16
- params: any;
17
- request: import("../http-server/client/request.js").default;
16
+ params: {
17
+ [x: string]: unknown;
18
+ };
19
+ request: import("../http-server/client/websocket-request.js").default | import("../http-server/client/request.js").default;
18
20
  response: import("../http-server/client/response.js").default;
19
21
  resolve(): Promise<void>;
20
22
  /**
21
- * @param {import("./base-route.js").default} route
22
- * @param {string} path
23
- * @returns {{restPath: string} | undefined} - Result.
23
+ * @param {import("./base-route.js").default} route - Route.
24
+ * @param {string} path - Path.
25
+ * @returns {{restPath: string} | undefined} - REST path metadata for this route.
24
26
  */
25
27
  matchPathWithRoutes(route: import("./base-route.js").default, path: string): {
26
28
  restPath: string;
27
29
  } | undefined;
28
30
  /**
29
- * @param {object} args
30
- * @param {string} args.action
31
- * @param {typeof import("../controller.js").default} args.controllerClass
32
- * @returns {Promise<void>} - Result.
31
+ * @param {object} args - Options object.
32
+ * @param {string} args.action - Action.
33
+ * @param {typeof import("../controller.js").default} args.controllerClass - Controller class.
34
+ * @returns {Promise<void>} - Resolves when complete.
33
35
  */
34
36
  _logActionStart({ action, controllerClass }: {
35
37
  action: string;
36
38
  controllerClass: typeof import("../controller.js").default;
37
39
  }): Promise<void>;
38
40
  /**
39
- * @param {Date} date
40
- * @returns {string} - Result.
41
+ * @param {Date} date - Date value.
42
+ * @returns {string} - The timestamp.
41
43
  */
42
44
  _formatTimestamp(date: Date): string;
43
45
  /**
44
- * @param {any} value
45
- * @returns {any} - Result.
46
+ * @param {unknown} value - Value to use.
47
+ * @returns {unknown} - The sanitize params for logging.
46
48
  */
47
- _sanitizeParamsForLogging(value: any): any;
49
+ _sanitizeParamsForLogging(value: unknown): unknown;
48
50
  }
49
51
  import { Logger } from "../logger.js";
50
52
  //# sourceMappingURL=resolver.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"resolver.d.ts","sourceRoot":"","sources":["../../../src/routes/resolver.js"],"names":[],"mappings":"AASA;IAIE;;;;;OAKG;IACH,kDAJG;QAAoD,aAAa,EAAzD,OAAO,qBAAqB,EAAE,OAAO;QACoB,OAAO,EAAhE,OAAO,kCAAkC,EAAE,OAAO;QACQ,QAAQ,EAAlE,OAAO,mCAAmC,EAAE,OAAO;KAC7D,EAUA;IAlBD,iCAAiC;IACjC,QADW,MAAM,GAAG,SAAS,CACvB;IAaJ,qDAAkC;IAClC,YAA8B;IAC9B,4DAAsB;IACtB,8DAAwB;IAG1B,yBAwDC;IAED;;;;OAIG;IACH,2BAJW,OAAO,iBAAiB,EAAE,OAAO,QACjC,MAAM,GACJ;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAC,GAAG,SAAS,CAsB1C;IAED;;;;;OAKG;IACH,6CAJG;QAAqB,MAAM,EAAnB,MAAM;QAC0C,eAAe,EAA/D,cAAc,kBAAkB,EAAE,OAAO;KACjD,GAAU,OAAO,CAAC,IAAI,CAAC,CAczB;IAED;;;OAGG;IACH,uBAHW,IAAI,GACF,MAAM,CAqBlB;IAED;;;OAGG;IACH,iCAHW,GAAG,GACD,GAAG,CA2Bf;CACF;uBAxLoB,cAAc"}
1
+ {"version":3,"file":"resolver.d.ts","sourceRoot":"","sources":["../../../src/routes/resolver.js"],"names":[],"mappings":"AAUA;IAIE;;;;;OAKG;IACH,kDAJG;QAAoD,aAAa,EAAzD,OAAO,qBAAqB,EAAE,OAAO;QACmF,OAAO,EAA/H,OAAO,kCAAkC,EAAE,OAAO,GAAG,OAAO,4CAA4C,EAAE,OAAO;QACvD,QAAQ,EAAlE,OAAO,mCAAmC,EAAE,OAAO;KAC7D,EAUA;IAlBD,iCAAiC;IACjC,QADW,MAAM,GAAG,SAAS,CACvB;IAaJ,qDAAkC;IAClC;;MAA8B;IAC9B,2HAAsB;IACtB,8DAAwB;IAG1B,yBA+EC;IAED;;;;OAIG;IACH,2BAJW,OAAO,iBAAiB,EAAE,OAAO,QACjC,MAAM,GACJ;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAC,GAAG,SAAS,CAsB1C;IAED;;;;;OAKG;IACH,6CAJG;QAAqB,MAAM,EAAnB,MAAM;QAC0C,eAAe,EAA/D,cAAc,kBAAkB,EAAE,OAAO;KACjD,GAAU,OAAO,CAAC,IAAI,CAAC,CAczB;IAED;;;OAGG;IACH,uBAHW,IAAI,GACF,MAAM,CAqBlB;IAED;;;OAGG;IACH,iCAHW,OAAO,GACL,OAAO,CA2BnB;CACF;uBAhNoB,cAAc"}
@@ -5,14 +5,15 @@ import fs from "fs/promises";
5
5
  import * as inflection from "inflection";
6
6
  import { Logger } from "../logger.js";
7
7
  import UploadedFile from "../http-server/client/uploaded-file/uploaded-file.js";
8
+ import ensureError from "../utils/ensure-error.js";
8
9
  export default class VelociousRoutesResolver {
9
10
  /** @type {Logger | undefined} */
10
11
  logger;
11
12
  /**
12
- * @param {object} args
13
- * @param {import("../configuration.js").default} args.configuration
14
- * @param {import("../http-server/client/request.js").default} args.request
15
- * @param {import("../http-server/client/response.js").default} args.response
13
+ * @param {object} args - Options object.
14
+ * @param {import("../configuration.js").default} args.configuration - Configuration instance.
15
+ * @param {import("../http-server/client/request.js").default | import("../http-server/client/websocket-request.js").default} args.request - Request object.
16
+ * @param {import("../http-server/client/response.js").default} args.response - Response object.
16
17
  */
17
18
  constructor({ configuration, request, response }) {
18
19
  if (!configuration)
@@ -33,8 +34,11 @@ export default class VelociousRoutesResolver {
33
34
  const currentPath = rawPath.split("?")[0];
34
35
  let viewPath;
35
36
  const matchResult = this.matchPathWithRoutes(currentRoute, currentPath);
36
- let action = this.params.action ? inflection.camelize(this.params.action.replaceAll("-", "_"), true) : undefined;
37
- let controller = this.params.controller;
37
+ const actionParam = this.params.action;
38
+ const controllerParam = this.params.controller;
39
+ const actionValue = typeof actionParam == "string" ? actionParam : (Array.isArray(actionParam) ? actionParam[0] : undefined);
40
+ let action = typeof actionValue == "string" ? inflection.camelize(actionValue.replaceAll("-", "_"), true) : undefined;
41
+ let controller = typeof controllerParam == "string" ? controllerParam : (Array.isArray(controllerParam) ? controllerParam[0] : undefined);
38
42
  if (!matchResult) {
39
43
  const __filename = fileURLToPath(import.meta.url);
40
44
  const __dirname = dirname(__filename);
@@ -71,15 +75,33 @@ export default class VelociousRoutesResolver {
71
75
  }
72
76
  this.logger ||= new Logger(controllerClass.name, { configuration: this.configuration });
73
77
  await this._logActionStart({ action, controllerClass });
74
- await this.configuration.ensureConnections(async () => {
75
- await controllerInstance._runBeforeCallbacks();
76
- await controllerInstance[action]();
77
- });
78
+ try {
79
+ await this.configuration.ensureConnections(async () => {
80
+ await controllerInstance._runBeforeCallbacks();
81
+ await controllerInstance[action]();
82
+ });
83
+ }
84
+ catch (error) {
85
+ const ensuredError = ensureError(error);
86
+ const errorContext = {
87
+ action,
88
+ controller,
89
+ httpMethod: this.request.httpMethod(),
90
+ path: this.request.path(),
91
+ stage: "controller-action"
92
+ };
93
+ const errorWithContext = /** @type {{velociousContext?: object}} */ (ensuredError);
94
+ errorWithContext.velociousContext = {
95
+ ...(errorWithContext.velociousContext || {}),
96
+ controllerAction: errorContext
97
+ };
98
+ throw ensuredError;
99
+ }
78
100
  }
79
101
  /**
80
- * @param {import("./base-route.js").default} route
81
- * @param {string} path
82
- * @returns {{restPath: string} | undefined} - Result.
102
+ * @param {import("./base-route.js").default} route - Route.
103
+ * @param {string} path - Path.
104
+ * @returns {{restPath: string} | undefined} - REST path metadata for this route.
83
105
  */
84
106
  matchPathWithRoutes(route, path) {
85
107
  const pathWithoutSlash = path.replace(/^\//, "").split("?")[0];
@@ -99,16 +121,16 @@ export default class VelociousRoutesResolver {
99
121
  }
100
122
  }
101
123
  /**
102
- * @param {object} args
103
- * @param {string} args.action
104
- * @param {typeof import("../controller.js").default} args.controllerClass
105
- * @returns {Promise<void>} - Result.
124
+ * @param {object} args - Options object.
125
+ * @param {string} args.action - Action.
126
+ * @param {typeof import("../controller.js").default} args.controllerClass - Controller class.
127
+ * @returns {Promise<void>} - Resolves when complete.
106
128
  */
107
129
  async _logActionStart({ action, controllerClass }) {
108
130
  const request = this.request;
109
131
  const timestamp = this._formatTimestamp(new Date());
110
132
  const remoteAddress = request.remoteAddress?.() || request.header("x-forwarded-for") || "unknown";
111
- const loggedParams = this._sanitizeParamsForLogging(this.params);
133
+ const loggedParams = /** @type {Record<string, unknown>} */ (this._sanitizeParamsForLogging(this.params));
112
134
  delete loggedParams.action;
113
135
  delete loggedParams.controller;
114
136
  await this.logger.info(() => `Started ${request.httpMethod()} "${request.path()}" for ${remoteAddress} at ${timestamp}`);
@@ -116,13 +138,13 @@ export default class VelociousRoutesResolver {
116
138
  await this.logger.info(() => [` Parameters:`, loggedParams]);
117
139
  }
118
140
  /**
119
- * @param {Date} date
120
- * @returns {string} - Result.
141
+ * @param {Date} date - Date value.
142
+ * @returns {string} - The timestamp.
121
143
  */
122
144
  _formatTimestamp(date) {
123
145
  /**
124
- * @param {number} num
125
- * @returns {string} - Result.
146
+ * @param {number} num - Num.
147
+ * @returns {string} - The pad.
126
148
  */
127
149
  const pad = (num) => String(num).padStart(2, "0");
128
150
  const year = date.getFullYear();
@@ -139,8 +161,8 @@ export default class VelociousRoutesResolver {
139
161
  return `${year}-${month}-${day} ${hours}:${minutes}:${seconds} ${offsetSign}${offsetHours}${offsetRemainingMinutes}`;
140
162
  }
141
163
  /**
142
- * @param {any} value
143
- * @returns {any} - Result.
164
+ * @param {unknown} value - Value to use.
165
+ * @returns {unknown} - The sanitize params for logging.
144
166
  */
145
167
  _sanitizeParamsForLogging(value) {
146
168
  if (value instanceof UploadedFile) {
@@ -154,7 +176,7 @@ export default class VelociousRoutesResolver {
154
176
  return value.map((item) => this._sanitizeParamsForLogging(item));
155
177
  }
156
178
  if (value && typeof value === "object") {
157
- /** @type {Record<string, any>} */
179
+ /** @type {Record<string, unknown>} */
158
180
  const result = {};
159
181
  for (const key of Object.keys(value)) {
160
182
  result[key] = this._sanitizeParamsForLogging(value[key]);
@@ -164,4 +186,4 @@ export default class VelociousRoutesResolver {
164
186
  return value;
165
187
  }
166
188
  }
167
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzb2x2ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvcm91dGVzL3Jlc29sdmVyLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFlBQVk7QUFFWixPQUFPLEVBQUMsT0FBTyxFQUFDLE1BQU0sTUFBTSxDQUFBO0FBQzVCLE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSxLQUFLLENBQUE7QUFDakMsT0FBTyxFQUFFLE1BQU0sYUFBYSxDQUFBO0FBQzVCLE9BQU8sS0FBSyxVQUFVLE1BQU0sWUFBWSxDQUFBO0FBQ3hDLE9BQU8sRUFBQyxNQUFNLEVBQUMsTUFBTSxjQUFjLENBQUE7QUFDbkMsT0FBTyxZQUFZLE1BQU0sc0RBQXNELENBQUE7QUFFL0UsTUFBTSxDQUFDLE9BQU8sT0FBTyx1QkFBdUI7SUFDMUMsaUNBQWlDO0lBQ2pDLE1BQU0sQ0FBQTtJQUVOOzs7OztPQUtHO0lBQ0gsWUFBWSxFQUFDLGFBQWEsRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFDO1FBQzVDLElBQUksQ0FBQyxhQUFhO1lBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQyx3QkFBd0IsQ0FBQyxDQUFBO1FBQzdELElBQUksQ0FBQyxPQUFPO1lBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQyxDQUFBO1FBQ2pELElBQUksQ0FBQyxRQUFRO1lBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQyxtQkFBbUIsQ0FBQyxDQUFBO1FBRW5ELElBQUksQ0FBQyxhQUFhLEdBQUcsYUFBYSxDQUFBO1FBQ2xDLElBQUksQ0FBQyxNQUFNLEdBQUcsT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFBO1FBQzlCLElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFBO1FBQ3RCLElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFBO0lBQzFCLENBQUM7SUFFRCxLQUFLLENBQUMsT0FBTztRQUNYLElBQUksY0FBYyxDQUFBO1FBQ2xCLElBQUksWUFBWSxHQUFHLElBQUksQ0FB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SUFDdEgsQ0FBQztJQUVEOzs7T0FHRztJQUNILHlCQUF5QixDQUFDLEtBQUs7UUFDN0IsSUFBSSxLQUFLLFlBQVksWUFBWSxFQUFFLENBQUM7WUFDbEMsT0FBTztnQkFDTCxTQUFTLEVBQUUsS0FBSyxDQUFDLFdBQVcsQ0FBQyxJQUFJO2dCQUNqQyxRQUFRLEVBQUUsS0FBSyxDQUFDLFFBQVEsRUFBRTtnQkFDMUIsSUFBSSxFQUFFLEtBQUssQ0FBQyxJQUFJLEVBQUU7YUFDbkIsQ0FBQTtRQUNILENBQUM7UUFFRCxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUN6QixPQUFPLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFBO1FBQ2xFLENBQUM7UUFFRCxJQUFJLEtBQUssSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLEVBQUUsQ0FBQztZQUN2QyxrQ0FBa0M7WUFDbEMsTUFBTSxNQUFNLEdBQUcsRUFBRSxDQUFBO1lBRWpCLEtBQUssTUFBTSxHQUFHLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO2dCQUNyQyxNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLHlCQUF5QixDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFBO1lBQzFELENBQUM7WUFFRCxPQUFPLE1BQU0sQ0FBQTtRQUNmLENBQUM7UUFFRCxPQUFPLEtBQUssQ0FBQTtJQUNkLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbIi8vIEB0cy1jaGVja1xuXG5pbXBvcnQge2Rpcm5hbWV9IGZyb20gXCJwYXRoXCJcbmltcG9ydCB7ZmlsZVVSTFRvUGF0aH0gZnJvbSBcInVybFwiXG5pbXBvcnQgZnMgZnJvbSBcImZzL3Byb21pc2VzXCJcbmltcG9ydCAqIGFzIGluZmxlY3Rpb24gZnJvbSBcImluZmxlY3Rpb25cIlxuaW1wb3J0IHtMb2dnZXJ9IGZyb20gXCIuLi9sb2dnZXIuanNcIlxuaW1wb3J0IFVwbG9hZGVkRmlsZSBmcm9tIFwiLi4vaHR0cC1zZXJ2ZXIvY2xpZW50L3VwbG9hZGVkLWZpbGUvdXBsb2FkZWQtZmlsZS5qc1wiXG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFZlbG9jaW91c1JvdXRlc1Jlc29sdmVyIHtcbiAgLyoqIEB0eXBlIHtMb2dnZXIgfCB1bmRlZmluZWR9ICovXG4gIGxvZ2dlclxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge29iamVjdH0gYXJnc1xuICAgKiBAcGFyYW0ge2ltcG9ydChcIi4uL2NvbmZpZ3VyYXRpb24uanNcIikuZGVmYXVsdH0gYXJncy5jb25maWd1cmF0aW9uXG4gICAqIEBwYXJhbSB7aW1wb3J0KFwiLi4vaHR0cC1zZXJ2ZXIvY2xpZW50L3JlcXVlc3QuanNcIikuZGVmYXVsdH0gYXJncy5yZXF1ZXN0XG4gICAqIEBwYXJhbSB7aW1wb3J0KFwiLi4vaHR0cC1zZXJ2ZXIvY2xpZW50L3Jlc3BvbnNlLmpzXCIpLmRlZmF1bHR9IGFyZ3MucmVzcG9uc2VcbiAgICovXG4gIGNvbnN0cnVjdG9yKHtjb25maWd1cmF0aW9uLCByZXF1ZXN0LCByZXNwb25zZX0pIHtcbiAgICBpZiAoIWNvbmZpZ3VyYXRpb24pIHRocm93IG5ldyBFcnJvcihcIk5vIGNvbmZpZ3VyYXRpb24gZ2l2ZW5cIilcbiAgICBpZiAoIXJlcXVlc3QpIHRocm93IG5ldyBFcnJvcihcIk5vIHJlcXVlc3QgZ2l2ZW5cIilcbiAgICBpZiAoIXJlc3BvbnNlKSB0aHJvdyBuZXcgRXJyb3IoXCJObyByZXNwb25zZSBnaXZlblwiKVxuXG4gICAgdGhpcy5jb25maWd1cmF0aW9uID0gY29uZmlndXJhdGlvblxuICAgIHRoaXMucGFyYW1zID0gcmVxdWVzdC5wYXJhbXMoKVxuICAgIHRoaXMucmVxdWVzdCA9IHJlcXVlc3RcbiAgICB0aGlzLnJlc3BvbnNlID0gcmVzcG9uc2VcbiAgfVxuXG4gIGFzeW5jIHJlc29sdmUoKSB7XG4gICAgbGV0IGNvbnRyb2xsZXJQYXRoXG4gICAgbGV0IGN1cnJlbnRSb3V0ZSA9IHRoaXMuY29uZmlndXJhdGlvbi5yb3V0ZXMucm9vdFJvdXRlXG4gICAgY29uc3QgcmF3UGF0aCA9IHRoaXMucmVxdWVzdC5wYXRoKClcbiAgICBjb25zdCBjdXJyZW50UGF0aCA9IHJhd1BhdGguc3BsaXQoXCI/XCIpWzBdXG4gICAgbGV0IHZpZXdQYXRoXG5cbiAgICBjb25zdCBtYXRjaFJlc3VsdCA9IHRoaXMubWF0Y2hQYXRoV2l0aFJvdXRlcyhjdXJyZW50Um91dGUsIGN1cnJlbnRQYXRoKVxuICAgIGxldCBhY3Rpb24gPSB0aGlzLnBhcmFtcy5hY3Rpb24gPyBpbmZsZWN0aW9uLmNhbWVsaXplKHRoaXMucGFyYW1zLmFjdGlvbi5yZXBsYWNlQWxsKFwiLVwiLCBcIl9cIiksIHRydWUpIDogdW5kZWZpbmVkXG4gICAgbGV0IGNvbnRyb2xsZXIgPSB0aGlzLnBhcmFtcy5jb250cm9sbGVyXG5cbiAgICBpZiAoIW1hdGNoUmVzdWx0KSB7XG4gICAgICBjb25zdCBfX2ZpbGVuYW1lID0gZmlsZVVSTFRvUGF0aChpbXBvcnQubWV0YS51cmwpXG4gICAgICBjb25zdCBfX2Rpcm5hbWUgPSBkaXJuYW1lKF9fZmlsZW5hbWUpXG4gICAgICBjb25zdCByZXF1ZXN0ZWRQYXRoID0gY3VycmVudFBhdGgucmVwbGFjZSgvXlxcLy8sIFwiXCIpIHx8IFwiX3Jvb3RcIlxuICAgICAgY29uc3QgYXR0ZW1wdGVkQ29udHJvbGxlclBhdGggPSBgJHt0aGlzLmNvbmZpZ3VyYXRpb24uZ2V0RGlyZWN0b3J5KCl9L3NyYy9yb3V0ZXMvJHtyZXF1ZXN0ZWRQYXRofS9jb250cm9sbGVyLmpzYFxuXG4gICAgICBhd2FpdCAodGhpcy5sb2dnZXIgfHwgbmV3IExvZ2dlcihcIlJvdXRlc1Jlc29sdmVyXCIsIHtjb25maWd1cmF0aW9uOiB0aGlzLmNvbmZpZ3VyYXRpb259KSkud2FybihgTm8gcm91dGUgbWF0Y2hlZCBmb3IgJHtyYXdQYXRofS4gVHJpZWQgY29udHJvbGxlciBhdCAke2F0dGVtcHRlZENvbnRyb2xsZXJQYXRofWApXG5cbiAgICAgIGNvbnRyb2xsZXIgPSBcImVycm9yc1wiXG4gICAgICBjb250cm9sbGVyUGF0aCA9IFwiLi9idWlsdC1pbi9lcnJvcnMvY29udHJvbGxlci5qc1wiXG4gICAgICBhY3Rpb24gPSBcIm5vdEZvdW5kXCJcbiAgICAgIHZpZXdQYXRoID0gYXdhaXQgZnMucmVhbHBhdGgoYCR7X19kaXJuYW1lfS9idWlsdC1pbi9lcnJvcnNgKVxuICAgIH0gZWxzZSBpZiAoYWN0aW9uKSB7XG4gICAgICBpZiAoIWNvbnRyb2xsZXIpIGNvbnRyb2xsZXIgPSBcIl9yb290XCJcblxuICAgICAgY29udHJvbGxlclBhdGggPSBgJHt0aGlzLmNvbmZpZ3VyYXRpb24uZ2V0RGlyZWN0b3J5KCl9L3NyYy9yb3V0ZXMvJHtjb250cm9sbGVyfS9jb250cm9sbGVyLmpzYFxuICAgICAgdmlld1BhdGggPSBgJHt0aGlzLmNvbmZpZ3VyYXRpb24uZ2V0RGlyZWN0b3J5KCl9L3NyYy9yb3V0ZXMvJHtjb250cm9sbGVyfWBcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBNYXRjaGVkIHRoZSByb3V0ZSBidXQgZGlkbid0IGtub3cgd2hhdCB0byBkbyB3aXRoIGl0OiAke3Jhd1BhdGh9IChhY3Rpb246ICR7YWN0aW9ufSwgY29udHJvbGxlcjogJHtjb250cm9sbGVyfSwgcGFyYW1zOiAke0pTT04uc3RyaW5naWZ5KHRoaXMucGFyYW1zKX0pYClcbiAgICB9XG5cbiAgICBjb25zdCBjb250cm9sbGVyQ2xhc3NJbXBvcnQgPSBhd2FpdCBpbXBvcnQoY29udHJvbGxlclBhdGgpXG4gICAgY29uc3QgY29udHJvbGxlckNsYXNzID0gY29udHJvbGxlckNsYXNzSW1wb3J0LmRlZmF1bHRcbiAgICBjb25zdCBjb250cm9sbGVySW5zdGFuY2UgPSBuZXcgY29udHJvbGxlckNsYXNzKHtcbiAgICAgIGFjdGlvbixcbiAgICAgIGNvbmZpZ3VyYXRpb246IHRoaXMuY29uZmlndXJhdGlvbixcbiAgICAgIGNvbnRyb2xsZXIsXG4gICAgICBwYXJhbXM6IHRoaXMucGFyYW1zLFxuICAgICAgcmVxdWVzdDogdGhpcy5yZXF1ZXN0LFxuICAgICAgcmVzcG9uc2U6IHRoaXMucmVzcG9uc2UsXG4gICAgICB2aWV3UGF0aFxuICAgIH0pXG5cbiAgICBpZiAoIShhY3Rpb24gaW4gY29udHJvbGxlckluc3RhbmNlKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBNaXNzaW5nIGFjdGlvbiBvbiBjb250cm9sbGVyOiAke2NvbnRyb2xsZXJ9IyR7YWN0aW9ufWApXG4gICAgfVxuXG4gICAgdGhpcy5sb2dnZXIgfHw9IG5ldyBMb2dnZXIoY29udHJvbGxlckNsYXNzLm5hbWUsIHtjb25maWd1cmF0aW9uOiB0aGlzLmNvbmZpZ3VyYXRpb259KVxuXG4gICAgYXdhaXQgdGhpcy5fbG9nQWN0aW9uU3RhcnQoe2FjdGlvbiwgY29udHJvbGxlckNsYXNzfSlcblxuICAgIGF3YWl0IHRoaXMuY29uZmlndXJhdGlvbi5lbnN1cmVDb25uZWN0aW9ucyhhc3luYyAoKSA9PiB7XG4gICAgICBhd2FpdCBjb250cm9sbGVySW5zdGFuY2UuX3J1bkJlZm9yZUNhbGxiYWNrcygpXG4gICAgICBhd2FpdCBjb250cm9sbGVySW5zdGFuY2VbYWN0aW9uXSgpXG4gICAgfSlcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge2ltcG9ydChcIi4vYmFzZS1yb3V0ZS5qc1wiKS5kZWZhdWx0fSByb3V0ZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gcGF0aFxuICAgKiBAcmV0dXJucyB7e3Jlc3RQYXRoOiBzdHJpbmd9IHwgdW5kZWZpbmVkfSAtIFJlc3VsdC5cbiAgICovXG4gIG1hdGNoUGF0aFdpdGhSb3V0ZXMocm91dGUsIHBhdGgpIHtcbiAgICBjb25zdCBwYXRoV2l0aG91dFNsYXNoID0gcGF0aC5yZXBsYWNlKC9eXFwvLywgXCJcIikuc3BsaXQoXCI/XCIpWzBdXG5cbiAgICBmb3IgKGNvbnN0IHN1YlJvdXRlIG9mIHJvdXRlLnJvdXRlcykge1xuICAgICAgY29uc3QgbWF0Y2hSZXN1bHQgPSBzdWJSb3V0ZS5tYXRjaFdpdGhQYXRoKHtcbiAgICAgICAgcGFyYW1zOiB0aGlzLnBhcmFtcyxcbiAgICAgICAgcGF0aDogcGF0aFdpdGhvdXRTbGFzaCxcbiAgICAgICAgcmVxdWVzdDogdGhpcy5yZXF1ZXN0XG4gICAgICB9KVxuXG4gICAgICBpZiAoIW1hdGNoUmVzdWx0KSBjb250aW51ZVxuXG4gICAgICBjb25zdCB7cmVzdFBhdGh9ID0gbWF0Y2hSZXN1bHRcblxuICAgICAgaWYgKHJlc3RQYXRoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm1hdGNoUGF0aFdpdGhSb3V0ZXMoc3ViUm91dGUsIHJlc3RQYXRoKVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gbWF0Y2hSZXN1bHRcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHtvYmplY3R9IGFyZ3NcbiAgICogQHBhcmFtIHtzdHJpbmd9IGFyZ3MuYWN0aW9uXG4gICAqIEBwYXJhbSB7dHlwZW9mIGltcG9ydChcIi4uL2NvbnRyb2xsZXIuanNcIikuZGVmYXVsdH0gYXJncy5jb250cm9sbGVyQ2xhc3NcbiAgICogQHJldHVybnMge1Byb21pc2U8dm9pZD59IC0gUmVzdWx0LlxuICAgKi9cbiAgYXN5bmMgX2xvZ0FjdGlvblN0YXJ0KHthY3Rpb24sIGNvbnRyb2xsZXJDbGFzc30pIHtcbiAgICBjb25zdCByZXF1ZXN0ID0gdGhpcy5yZXF1ZXN0XG4gICAgY29uc3QgdGltZXN0YW1wID0gdGhpcy5fZm9ybWF0VGltZXN0YW1wKG5ldyBEYXRlKCkpXG4gICAgY29uc3QgcmVtb3RlQWRkcmVzcyA9IHJlcXVlc3QucmVtb3RlQWRkcmVzcz8uKCkgfHwgcmVxdWVzdC5oZWFkZXIoXCJ4LWZvcndhcmRlZC1mb3JcIikgfHwgXCJ1bmtub3duXCJcbiAgICBjb25zdCBsb2dnZWRQYXJhbXMgPSB0aGlzLl9zYW5pdGl6ZVBhcmFtc0ZvckxvZ2dpbmcodGhpcy5wYXJhbXMpXG5cbiAgICBkZWxldGUgbG9nZ2VkUGFyYW1zLmFjdGlvblxuICAgIGRlbGV0ZSBsb2dnZWRQYXJhbXMuY29udHJvbGxlclxuXG4gICAgYXdhaXQgdGhpcy5sb2dnZXIuaW5mbygoKSA9PiBgU3RhcnRlZCAke3JlcXVlc3QuaHR0cE1ldGhvZCgpfSBcIiR7cmVxdWVzdC5wYXRoKCl9XCIgZm9yICR7cmVtb3RlQWRkcmVzc30gYXQgJHt0aW1lc3RhbXB9YClcbiAgICBhd2FpdCB0aGlzLmxvZ2dlci5pbmZvKCgpID0+IGBQcm9jZXNzaW5nIGJ5ICR7Y29udHJvbGxlckNsYXNzLm5hbWV9IyR7YWN0aW9ufWApXG4gICAgYXdhaXQgdGhpcy5sb2dnZXIuaW5mbygoKSA9PiBbYCAgUGFyYW1ldGVyczpgLCBsb2dnZWRQYXJhbXNdKVxuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7RGF0ZX0gZGF0ZVxuICAgKiBAcmV0dXJucyB7c3RyaW5nfSAtIFJlc3VsdC5cbiAgICovXG4gIF9mb3JtYXRUaW1lc3RhbXAoZGF0ZSkge1xuICAgIC8qKlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBudW1cbiAgICAgKiBAcmV0dXJucyB7c3RyaW5nfSAtIFJlc3VsdC5cbiAgICAgKi9cbiAgICBjb25zdCBwYWQgPSAobnVtKSA9PiBTdHJpbmcobnVtKS5wYWRTdGFydCgyLCBcIjBcIilcbiAgICBjb25zdCB5ZWFyID0gZGF0ZS5nZXRGdWxsWWVhcigpXG4gICAgY29uc3QgbW9udGggPSBwYWQoZGF0ZS5nZXRNb250aCgpICsgMSlcbiAgICBjb25zdCBkYXkgPSBwYWQoZGF0ZS5nZXREYXRlKCkpXG4gICAgY29uc3QgaG91cnMgPSBwYWQoZGF0ZS5nZXRIb3VycygpKVxuICAgIGNvbnN0IG1pbnV0ZXMgPSBwYWQoZGF0ZS5nZXRNaW51dGVzKCkpXG4gICAgY29uc3Qgc2Vjb25kcyA9IHBhZChkYXRlLmdldFNlY29uZHMoKSlcbiAgICBjb25zdCBvZmZzZXRNaW51dGVzID0gZGF0ZS5nZXRUaW1lem9uZU9mZnNldCgpXG4gICAgY29uc3Qgb2Zmc2V0U2lnbiA9IG9mZnNldE1pbnV0ZXMgPiAwID8gXCItXCIgOiBcIitcIlxuICAgIGNvbnN0IG9mZnNldFRvdGFsTWludXRlcyA9IE1hdGguYWJzKG9mZnNldE1pbnV0ZXMpXG4gICAgY29uc3Qgb2Zmc2V0SG91cnMgPSBwYWQoTWF0aC5mbG9vcihvZmZzZXRUb3RhbE1pbnV0ZXMgLyA2MCkpXG4gICAgY29uc3Qgb2Zmc2V0UmVtYWluaW5nTWludXRlcyA9IHBhZChvZmZzZXRUb3RhbE1pbnV0ZXMgJSA2MClcblxuICAgIHJldHVybiBgJHt5ZWFyfS0ke21vbnRofS0ke2RheX0gJHtob3Vyc306JHttaW51dGVzfToke3NlY29uZHN9ICR7b2Zmc2V0U2lnbn0ke29mZnNldEhvdXJzfSR7b2Zmc2V0UmVtYWluaW5nTWludXRlc31gXG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHthbnl9IHZhbHVlXG4gICAqIEByZXR1cm5zIHthbnl9IC0gUmVzdWx0LlxuICAgKi9cbiAgX3Nhbml0aXplUGFyYW1zRm9yTG9nZ2luZyh2YWx1ZSkge1xuICAgIGlmICh2YWx1ZSBpbnN0YW5jZW9mIFVwbG9hZGVkRmlsZSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgY2xhc3NOYW1lOiB2YWx1ZS5jb25zdHJ1Y3Rvci5uYW1lLFxuICAgICAgICBmaWxlbmFtZTogdmFsdWUuZmlsZW5hbWUoKSxcbiAgICAgICAgc2l6ZTogdmFsdWUuc2l6ZSgpXG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgICByZXR1cm4gdmFsdWUubWFwKChpdGVtKSA9PiB0aGlzLl9zYW5pdGl6ZVBhcmFtc0ZvckxvZ2dpbmcoaXRlbSkpXG4gICAgfVxuXG4gICAgaWYgKHZhbHVlICYmIHR5cGVvZiB2YWx1ZSA9PT0gXCJvYmplY3RcIikge1xuICAgICAgLyoqIEB0eXBlIHtSZWNvcmQ8c3RyaW5nLCBhbnk+fSAqL1xuICAgICAgY29uc3QgcmVzdWx0ID0ge31cblxuICAgICAgZm9yIChjb25zdCBrZXkgb2YgT2JqZWN0LmtleXModmFsdWUpKSB7XG4gICAgICAgIHJlc3VsdFtrZXldID0gdGhpcy5fc2FuaXRpemVQYXJhbXNGb3JMb2dnaW5nKHZhbHVlW2tleV0pXG4gICAgICB9XG5cbiAgICAgIHJldHVybiByZXN1bHRcbiAgICB9XG5cbiAgICByZXR1cm4gdmFsdWVcbiAgfVxufVxuIl19
189
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzb2x2ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvcm91dGVzL3Jlc29sdmVyLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFlBQVk7QUFFWixPQUFPLEVBQUMsT0FBTyxFQUFDLE1BQU0sTUFBTSxDQUFBO0FBQzVCLE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSxLQUFLLENBQUE7QUFDakMsT0FBTyxFQUFFLE1BQU0sYUFBYSxDQUFBO0FBQzVCLE9BQU8sS0FBSyxVQUFVLE1BQU0sWUFBWSxDQUFBO0FBQ3hDLE9BQU8sRUFBQyxNQUFNLEVBQUMsTUFBTSxjQUFjLENBQUE7QUFDbkMsT0FBTyxZQUFZLE1BQU0sc0RBQXNELENBQUE7QUFDL0UsT0FBTyxXQUFXLE1BQU0sMEJBQTBCLENBQUE7QUFFbEQsTUFBTSxDQUFDLE9BQU8sT0FBTyx1QkFBdUI7SUFDMUMsaUNBQWlDO0lBQ2pDLE1BQU0sQ0FBQTtJQUVOOzs7OztPQUtHO0lBQ0gsWUFBWSxFQUFDLGFBQWEsRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFDO1FBQzVDLElBQUksQ0FBQyxhQUFhO1lBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQyx3QkFBd0IsQ0FBQyxDQUFBO1FBQzdELElBQUksQ0FBQyxPQUFPO1lBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQyxDQUFBO1FBQ2pELElBQUksQ0FBQyxRQUFRO1lBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQyxtQkFBbUIsQ0FBQyxDQUFBO1FBRW5ELElBQUksQ0FBQyxhQUFhLEdBQUcsYUFBYSxDQUFBO1FBQ2xDLElBQUksQ0FBQyxNQUFNLEdBQUcsT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFBO1FBQzlCLElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFBO1FBQ3RCLElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFBO0lBQzFCLENBQUM7SUFFRCxLQUFLLENBQUMsT0FBTztRQUNYLElBQUksY0FBYyxD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QUE7SUFDdEgsQ0FBQztJQUVEOzs7T0FHRztJQUNILHlCQUF5QixDQUFDLEtBQUs7UUFDN0IsSUFBSSxLQUFLLFlBQVksWUFBWSxFQUFFLENBQUM7WUFDbEMsT0FBTztnQkFDTCxTQUFTLEVBQUUsS0FBSyxDQUFDLFdBQVcsQ0FBQyxJQUFJO2dCQUNqQyxRQUFRLEVBQUUsS0FBSyxDQUFDLFFBQVEsRUFBRTtnQkFDMUIsSUFBSSxFQUFFLEtBQUssQ0FBQyxJQUFJLEVBQUU7YUFDbkIsQ0FBQTtRQUNILENBQUM7UUFFRCxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUN6QixPQUFPLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFBO1FBQ2xFLENBQUM7UUFFRCxJQUFJLEtBQUssSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLEVBQUUsQ0FBQztZQUN2QyxzQ0FBc0M7WUFDdEMsTUFBTSxNQUFNLEdBQUcsRUFBRSxDQUFBO1lBRWpCLEtBQUssTUFBTSxHQUFHLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO2dCQUNyQyxNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLHlCQUF5QixDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFBO1lBQzFELENBQUM7WUFFRCxPQUFPLE1BQU0sQ0FBQTtRQUNmLENBQUM7UUFFRCxPQUFPLEtBQUssQ0FBQTtJQUNkLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbIi8vIEB0cy1jaGVja1xuXG5pbXBvcnQge2Rpcm5hbWV9IGZyb20gXCJwYXRoXCJcbmltcG9ydCB7ZmlsZVVSTFRvUGF0aH0gZnJvbSBcInVybFwiXG5pbXBvcnQgZnMgZnJvbSBcImZzL3Byb21pc2VzXCJcbmltcG9ydCAqIGFzIGluZmxlY3Rpb24gZnJvbSBcImluZmxlY3Rpb25cIlxuaW1wb3J0IHtMb2dnZXJ9IGZyb20gXCIuLi9sb2dnZXIuanNcIlxuaW1wb3J0IFVwbG9hZGVkRmlsZSBmcm9tIFwiLi4vaHR0cC1zZXJ2ZXIvY2xpZW50L3VwbG9hZGVkLWZpbGUvdXBsb2FkZWQtZmlsZS5qc1wiXG5pbXBvcnQgZW5zdXJlRXJyb3IgZnJvbSBcIi4uL3V0aWxzL2Vuc3VyZS1lcnJvci5qc1wiXG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFZlbG9jaW91c1JvdXRlc1Jlc29sdmVyIHtcbiAgLyoqIEB0eXBlIHtMb2dnZXIgfCB1bmRlZmluZWR9ICovXG4gIGxvZ2dlclxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge29iamVjdH0gYXJncyAtIE9wdGlvbnMgb2JqZWN0LlxuICAgKiBAcGFyYW0ge2ltcG9ydChcIi4uL2NvbmZpZ3VyYXRpb24uanNcIikuZGVmYXVsdH0gYXJncy5jb25maWd1cmF0aW9uIC0gQ29uZmlndXJhdGlvbiBpbnN0YW5jZS5cbiAgICogQHBhcmFtIHtpbXBvcnQoXCIuLi9odHRwLXNlcnZlci9jbGllbnQvcmVxdWVzdC5qc1wiKS5kZWZhdWx0IHwgaW1wb3J0KFwiLi4vaHR0cC1zZXJ2ZXIvY2xpZW50L3dlYnNvY2tldC1yZXF1ZXN0LmpzXCIpLmRlZmF1bHR9IGFyZ3MucmVxdWVzdCAtIFJlcXVlc3Qgb2JqZWN0LlxuICAgKiBAcGFyYW0ge2ltcG9ydChcIi4uL2h0dHAtc2VydmVyL2NsaWVudC9yZXNwb25zZS5qc1wiKS5kZWZhdWx0fSBhcmdzLnJlc3BvbnNlIC0gUmVzcG9uc2Ugb2JqZWN0LlxuICAgKi9cbiAgY29uc3RydWN0b3Ioe2NvbmZpZ3VyYXRpb24sIHJlcXVlc3QsIHJlc3BvbnNlfSkge1xuICAgIGlmICghY29uZmlndXJhdGlvbikgdGhyb3cgbmV3IEVycm9yKFwiTm8gY29uZmlndXJhdGlvbiBnaXZlblwiKVxuICAgIGlmICghcmVxdWVzdCkgdGhyb3cgbmV3IEVycm9yKFwiTm8gcmVxdWVzdCBnaXZlblwiKVxuICAgIGlmICghcmVzcG9uc2UpIHRocm93IG5ldyBFcnJvcihcIk5vIHJlc3BvbnNlIGdpdmVuXCIpXG5cbiAgICB0aGlzLmNvbmZpZ3VyYXRpb24gPSBjb25maWd1cmF0aW9uXG4gICAgdGhpcy5wYXJhbXMgPSByZXF1ZXN0LnBhcmFtcygpXG4gICAgdGhpcy5yZXF1ZXN0ID0gcmVxdWVzdFxuICAgIHRoaXMucmVzcG9uc2UgPSByZXNwb25zZVxuICB9XG5cbiAgYXN5bmMgcmVzb2x2ZSgpIHtcbiAgICBsZXQgY29udHJvbGxlclBhdGhcbiAgICBsZXQgY3VycmVudFJvdXRlID0gdGhpcy5jb25maWd1cmF0aW9uLnJvdXRlcy5yb290Um91dGVcbiAgICBjb25zdCByYXdQYXRoID0gdGhpcy5yZXF1ZXN0LnBhdGgoKVxuICAgIGNvbnN0IGN1cnJlbnRQYXRoID0gcmF3UGF0aC5zcGxpdChcIj9cIilbMF1cbiAgICBsZXQgdmlld1BhdGhcblxuICAgIGNvbnN0IG1hdGNoUmVzdWx0ID0gdGhpcy5tYXRjaFBhdGhXaXRoUm91dGVzKGN1cnJlbnRSb3V0ZSwgY3VycmVudFBhdGgpXG4gICAgY29uc3QgYWN0aW9uUGFyYW0gPSB0aGlzLnBhcmFtcy5hY3Rpb25cbiAgICBjb25zdCBjb250cm9sbGVyUGFyYW0gPSB0aGlzLnBhcmFtcy5jb250cm9sbGVyXG4gICAgY29uc3QgYWN0aW9uVmFsdWUgPSB0eXBlb2YgYWN0aW9uUGFyYW0gPT0gXCJzdHJpbmdcIiA/IGFjdGlvblBhcmFtIDogKEFycmF5LmlzQXJyYXkoYWN0aW9uUGFyYW0pID8gYWN0aW9uUGFyYW1bMF0gOiB1bmRlZmluZWQpXG4gICAgbGV0IGFjdGlvbiA9IHR5cGVvZiBhY3Rpb25WYWx1ZSA9PSBcInN0cmluZ1wiID8gaW5mbGVjdGlvbi5jYW1lbGl6ZShhY3Rpb25WYWx1ZS5yZXBsYWNlQWxsKFwiLVwiLCBcIl9cIiksIHRydWUpIDogdW5kZWZpbmVkXG4gICAgbGV0IGNvbnRyb2xsZXIgPSB0eXBlb2YgY29udHJvbGxlclBhcmFtID09IFwic3RyaW5nXCIgPyBjb250cm9sbGVyUGFyYW0gOiAoQXJyYXkuaXNBcnJheShjb250cm9sbGVyUGFyYW0pID8gY29udHJvbGxlclBhcmFtWzBdIDogdW5kZWZpbmVkKVxuXG4gICAgaWYgKCFtYXRjaFJlc3VsdCkge1xuICAgICAgY29uc3QgX19maWxlbmFtZSA9IGZpbGVVUkxUb1BhdGgoaW1wb3J0Lm1ldGEudXJsKVxuICAgICAgY29uc3QgX19kaXJuYW1lID0gZGlybmFtZShfX2ZpbGVuYW1lKVxuICAgICAgY29uc3QgcmVxdWVzdGVkUGF0aCA9IGN1cnJlbnRQYXRoLnJlcGxhY2UoL15cXC8vLCBcIlwiKSB8fCBcIl9yb290XCJcbiAgICAgIGNvbnN0IGF0dGVtcHRlZENvbnRyb2xsZXJQYXRoID0gYCR7dGhpcy5jb25maWd1cmF0aW9uLmdldERpcmVjdG9yeSgpfS9zcmMvcm91dGVzLyR7cmVxdWVzdGVkUGF0aH0vY29udHJvbGxlci5qc2BcblxuICAgICAgYXdhaXQgKHRoaXMubG9nZ2VyIHx8IG5ldyBMb2dnZXIoXCJSb3V0ZXNSZXNvbHZlclwiLCB7Y29uZmlndXJhdGlvbjogdGhpcy5jb25maWd1cmF0aW9ufSkpLndhcm4oYE5vIHJvdXRlIG1hdGNoZWQgZm9yICR7cmF3UGF0aH0uIFRyaWVkIGNvbnRyb2xsZXIgYXQgJHthdHRlbXB0ZWRDb250cm9sbGVyUGF0aH1gKVxuXG4gICAgICBjb250cm9sbGVyID0gXCJlcnJvcnNcIlxuICAgICAgY29udHJvbGxlclBhdGggPSBcIi4vYnVpbHQtaW4vZXJyb3JzL2NvbnRyb2xsZXIuanNcIlxuICAgICAgYWN0aW9uID0gXCJub3RGb3VuZFwiXG4gICAgICB2aWV3UGF0aCA9IGF3YWl0IGZzLnJlYWxwYXRoKGAke19fZGlybmFtZX0vYnVpbHQtaW4vZXJyb3JzYClcbiAgICB9IGVsc2UgaWYgKGFjdGlvbikge1xuICAgICAgaWYgKCFjb250cm9sbGVyKSBjb250cm9sbGVyID0gXCJfcm9vdFwiXG5cbiAgICAgIGNvbnRyb2xsZXJQYXRoID0gYCR7dGhpcy5jb25maWd1cmF0aW9uLmdldERpcmVjdG9yeSgpfS9zcmMvcm91dGVzLyR7Y29udHJvbGxlcn0vY29udHJvbGxlci5qc2BcbiAgICAgIHZpZXdQYXRoID0gYCR7dGhpcy5jb25maWd1cmF0aW9uLmdldERpcmVjdG9yeSgpfS9zcmMvcm91dGVzLyR7Y29udHJvbGxlcn1gXG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgTWF0Y2hlZCB0aGUgcm91dGUgYnV0IGRpZG4ndCBrbm93IHdoYXQgdG8gZG8gd2l0aCBpdDogJHtyYXdQYXRofSAoYWN0aW9uOiAke2FjdGlvbn0sIGNvbnRyb2xsZXI6ICR7Y29udHJvbGxlcn0sIHBhcmFtczogJHtKU09OLnN0cmluZ2lmeSh0aGlzLnBhcmFtcyl9KWApXG4gICAgfVxuXG4gICAgY29uc3QgY29udHJvbGxlckNsYXNzSW1wb3J0ID0gYXdhaXQgaW1wb3J0KGNvbnRyb2xsZXJQYXRoKVxuICAgIGNvbnN0IGNvbnRyb2xsZXJDbGFzcyA9IGNvbnRyb2xsZXJDbGFzc0ltcG9ydC5kZWZhdWx0XG4gICAgY29uc3QgY29udHJvbGxlckluc3RhbmNlID0gbmV3IGNvbnRyb2xsZXJDbGFzcyh7XG4gICAgICBhY3Rpb24sXG4gICAgICBjb25maWd1cmF0aW9uOiB0aGlzLmNvbmZpZ3VyYXRpb24sXG4gICAgICBjb250cm9sbGVyLFxuICAgICAgcGFyYW1zOiB0aGlzLnBhcmFtcyxcbiAgICAgIHJlcXVlc3Q6IHRoaXMucmVxdWVzdCxcbiAgICAgIHJlc3BvbnNlOiB0aGlzLnJlc3BvbnNlLFxuICAgICAgdmlld1BhdGhcbiAgICB9KVxuXG4gICAgaWYgKCEoYWN0aW9uIGluIGNvbnRyb2xsZXJJbnN0YW5jZSkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgTWlzc2luZyBhY3Rpb24gb24gY29udHJvbGxlcjogJHtjb250cm9sbGVyfSMke2FjdGlvbn1gKVxuICAgIH1cblxuICAgIHRoaXMubG9nZ2VyIHx8PSBuZXcgTG9nZ2VyKGNvbnRyb2xsZXJDbGFzcy5uYW1lLCB7Y29uZmlndXJhdGlvbjogdGhpcy5jb25maWd1cmF0aW9ufSlcblxuICAgIGF3YWl0IHRoaXMuX2xvZ0FjdGlvblN0YXJ0KHthY3Rpb24sIGNvbnRyb2xsZXJDbGFzc30pXG5cbiAgICB0cnkge1xuICAgICAgYXdhaXQgdGhpcy5jb25maWd1cmF0aW9uLmVuc3VyZUNvbm5lY3Rpb25zKGFzeW5jICgpID0+IHtcbiAgICAgICAgYXdhaXQgY29udHJvbGxlckluc3RhbmNlLl9ydW5CZWZvcmVDYWxsYmFja3MoKVxuICAgICAgICBhd2FpdCBjb250cm9sbGVySW5zdGFuY2VbYWN0aW9uXSgpXG4gICAgICB9KVxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBjb25zdCBlbnN1cmVkRXJyb3IgPSBlbnN1cmVFcnJvcihlcnJvcilcbiAgICAgIGNvbnN0IGVycm9yQ29udGV4dCA9IHtcbiAgICAgICAgYWN0aW9uLFxuICAgICAgICBjb250cm9sbGVyLFxuICAgICAgICBodHRwTWV0aG9kOiB0aGlzLnJlcXVlc3QuaHR0cE1ldGhvZCgpLFxuICAgICAgICBwYXRoOiB0aGlzLnJlcXVlc3QucGF0aCgpLFxuICAgICAgICBzdGFnZTogXCJjb250cm9sbGVyLWFjdGlvblwiXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGVycm9yV2l0aENvbnRleHQgPSAvKiogQHR5cGUge3t2ZWxvY2lvdXNDb250ZXh0Pzogb2JqZWN0fX0gKi8gKGVuc3VyZWRFcnJvcilcblxuICAgICAgZXJyb3JXaXRoQ29udGV4dC52ZWxvY2lvdXNDb250ZXh0ID0ge1xuICAgICAgICAuLi4oZXJyb3JXaXRoQ29udGV4dC52ZWxvY2lvdXNDb250ZXh0IHx8IHt9KSxcbiAgICAgICAgY29udHJvbGxlckFjdGlvbjogZXJyb3JDb250ZXh0XG4gICAgICB9XG5cbiAgICAgIHRocm93IGVuc3VyZWRFcnJvclxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge2ltcG9ydChcIi4vYmFzZS1yb3V0ZS5qc1wiKS5kZWZhdWx0fSByb3V0ZSAtIFJvdXRlLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gcGF0aCAtIFBhdGguXG4gICAqIEByZXR1cm5zIHt7cmVzdFBhdGg6IHN0cmluZ30gfCB1bmRlZmluZWR9IC0gUkVTVCBwYXRoIG1ldGFkYXRhIGZvciB0aGlzIHJvdXRlLlxuICAgKi9cbiAgbWF0Y2hQYXRoV2l0aFJvdXRlcyhyb3V0ZSwgcGF0aCkge1xuICAgIGNvbnN0IHBhdGhXaXRob3V0U2xhc2ggPSBwYXRoLnJlcGxhY2UoL15cXC8vLCBcIlwiKS5zcGxpdChcIj9cIilbMF1cblxuICAgIGZvciAoY29uc3Qgc3ViUm91dGUgb2Ygcm91dGUucm91dGVzKSB7XG4gICAgICBjb25zdCBtYXRjaFJlc3VsdCA9IHN1YlJvdXRlLm1hdGNoV2l0aFBhdGgoe1xuICAgICAgICBwYXJhbXM6IHRoaXMucGFyYW1zLFxuICAgICAgICBwYXRoOiBwYXRoV2l0aG91dFNsYXNoLFxuICAgICAgICByZXF1ZXN0OiB0aGlzLnJlcXVlc3RcbiAgICAgIH0pXG5cbiAgICAgIGlmICghbWF0Y2hSZXN1bHQpIGNvbnRpbnVlXG5cbiAgICAgIGNvbnN0IHtyZXN0UGF0aH0gPSBtYXRjaFJlc3VsdFxuXG4gICAgICBpZiAocmVzdFBhdGgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubWF0Y2hQYXRoV2l0aFJvdXRlcyhzdWJSb3V0ZSwgcmVzdFBhdGgpXG4gICAgICB9XG5cbiAgICAgIHJldHVybiBtYXRjaFJlc3VsdFxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge29iamVjdH0gYXJncyAtIE9wdGlvbnMgb2JqZWN0LlxuICAgKiBAcGFyYW0ge3N0cmluZ30gYXJncy5hY3Rpb24gLSBBY3Rpb24uXG4gICAqIEBwYXJhbSB7dHlwZW9mIGltcG9ydChcIi4uL2NvbnRyb2xsZXIuanNcIikuZGVmYXVsdH0gYXJncy5jb250cm9sbGVyQ2xhc3MgLSBDb250cm9sbGVyIGNsYXNzLlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTx2b2lkPn0gLSBSZXNvbHZlcyB3aGVuIGNvbXBsZXRlLlxuICAgKi9cbiAgYXN5bmMgX2xvZ0FjdGlvblN0YXJ0KHthY3Rpb24sIGNvbnRyb2xsZXJDbGFzc30pIHtcbiAgICBjb25zdCByZXF1ZXN0ID0gdGhpcy5yZXF1ZXN0XG4gICAgY29uc3QgdGltZXN0YW1wID0gdGhpcy5fZm9ybWF0VGltZXN0YW1wKG5ldyBEYXRlKCkpXG4gICAgY29uc3QgcmVtb3RlQWRkcmVzcyA9IHJlcXVlc3QucmVtb3RlQWRkcmVzcz8uKCkgfHwgcmVxdWVzdC5oZWFkZXIoXCJ4LWZvcndhcmRlZC1mb3JcIikgfHwgXCJ1bmtub3duXCJcbiAgICBjb25zdCBsb2dnZWRQYXJhbXMgPSAvKiogQHR5cGUge1JlY29yZDxzdHJpbmcsIHVua25vd24+fSAqLyAodGhpcy5fc2FuaXRpemVQYXJhbXNGb3JMb2dnaW5nKHRoaXMucGFyYW1zKSlcblxuICAgIGRlbGV0ZSBsb2dnZWRQYXJhbXMuYWN0aW9uXG4gICAgZGVsZXRlIGxvZ2dlZFBhcmFtcy5jb250cm9sbGVyXG5cbiAgICBhd2FpdCB0aGlzLmxvZ2dlci5pbmZvKCgpID0+IGBTdGFydGVkICR7cmVxdWVzdC5odHRwTWV0aG9kKCl9IFwiJHtyZXF1ZXN0LnBhdGgoKX1cIiBmb3IgJHtyZW1vdGVBZGRyZXNzfSBhdCAke3RpbWVzdGFtcH1gKVxuICAgIGF3YWl0IHRoaXMubG9nZ2VyLmluZm8oKCkgPT4gYFByb2Nlc3NpbmcgYnkgJHtjb250cm9sbGVyQ2xhc3MubmFtZX0jJHthY3Rpb259YClcbiAgICBhd2FpdCB0aGlzLmxvZ2dlci5pbmZvKCgpID0+IFtgICBQYXJhbWV0ZXJzOmAsIGxvZ2dlZFBhcmFtc10pXG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHtEYXRlfSBkYXRlIC0gRGF0ZSB2YWx1ZS5cbiAgICogQHJldHVybnMge3N0cmluZ30gLSBUaGUgdGltZXN0YW1wLlxuICAgKi9cbiAgX2Zvcm1hdFRpbWVzdGFtcChkYXRlKSB7XG4gICAgLyoqXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IG51bSAtIE51bS5cbiAgICAgKiBAcmV0dXJucyB7c3RyaW5nfSAtIFRoZSBwYWQuXG4gICAgICovXG4gICAgY29uc3QgcGFkID0gKG51bSkgPT4gU3RyaW5nKG51bSkucGFkU3RhcnQoMiwgXCIwXCIpXG4gICAgY29uc3QgeWVhciA9IGRhdGUuZ2V0RnVsbFllYXIoKVxuICAgIGNvbnN0IG1vbnRoID0gcGFkKGRhdGUuZ2V0TW9udGgoKSArIDEpXG4gICAgY29uc3QgZGF5ID0gcGFkKGRhdGUuZ2V0RGF0ZSgpKVxuICAgIGNvbnN0IGhvdXJzID0gcGFkKGRhdGUuZ2V0SG91cnMoKSlcbiAgICBjb25zdCBtaW51dGVzID0gcGFkKGRhdGUuZ2V0TWludXRlcygpKVxuICAgIGNvbnN0IHNlY29uZHMgPSBwYWQoZGF0ZS5nZXRTZWNvbmRzKCkpXG4gICAgY29uc3Qgb2Zmc2V0TWludXRlcyA9IGRhdGUuZ2V0VGltZXpvbmVPZmZzZXQoKVxuICAgIGNvbnN0IG9mZnNldFNpZ24gPSBvZmZzZXRNaW51dGVzID4gMCA/IFwiLVwiIDogXCIrXCJcbiAgICBjb25zdCBvZmZzZXRUb3RhbE1pbnV0ZXMgPSBNYXRoLmFicyhvZmZzZXRNaW51dGVzKVxuICAgIGNvbnN0IG9mZnNldEhvdXJzID0gcGFkKE1hdGguZmxvb3Iob2Zmc2V0VG90YWxNaW51dGVzIC8gNjApKVxuICAgIGNvbnN0IG9mZnNldFJlbWFpbmluZ01pbnV0ZXMgPSBwYWQob2Zmc2V0VG90YWxNaW51dGVzICUgNjApXG5cbiAgICByZXR1cm4gYCR7eWVhcn0tJHttb250aH0tJHtkYXl9ICR7aG91cnN9OiR7bWludXRlc306JHtzZWNvbmRzfSAke29mZnNldFNpZ259JHtvZmZzZXRIb3Vyc30ke29mZnNldFJlbWFpbmluZ01pbnV0ZXN9YFxuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7dW5rbm93bn0gdmFsdWUgLSBWYWx1ZSB0byB1c2UuXG4gICAqIEByZXR1cm5zIHt1bmtub3dufSAtIFRoZSBzYW5pdGl6ZSBwYXJhbXMgZm9yIGxvZ2dpbmcuXG4gICAqL1xuICBfc2FuaXRpemVQYXJhbXNGb3JMb2dnaW5nKHZhbHVlKSB7XG4gICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgVXBsb2FkZWRGaWxlKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBjbGFzc05hbWU6IHZhbHVlLmNvbnN0cnVjdG9yLm5hbWUsXG4gICAgICAgIGZpbGVuYW1lOiB2YWx1ZS5maWxlbmFtZSgpLFxuICAgICAgICBzaXplOiB2YWx1ZS5zaXplKClcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICAgIHJldHVybiB2YWx1ZS5tYXAoKGl0ZW0pID0+IHRoaXMuX3Nhbml0aXplUGFyYW1zRm9yTG9nZ2luZyhpdGVtKSlcbiAgICB9XG5cbiAgICBpZiAodmFsdWUgJiYgdHlwZW9mIHZhbHVlID09PSBcIm9iamVjdFwiKSB7XG4gICAgICAvKiogQHR5cGUge1JlY29yZDxzdHJpbmcsIHVua25vd24+fSAqL1xuICAgICAgY29uc3QgcmVzdWx0ID0ge31cblxuICAgICAgZm9yIChjb25zdCBrZXkgb2YgT2JqZWN0LmtleXModmFsdWUpKSB7XG4gICAgICAgIHJlc3VsdFtrZXldID0gdGhpcy5fc2FuaXRpemVQYXJhbXNGb3JMb2dnaW5nKHZhbHVlW2tleV0pXG4gICAgICB9XG5cbiAgICAgIHJldHVybiByZXN1bHRcbiAgICB9XG5cbiAgICByZXR1cm4gdmFsdWVcbiAgfVxufVxuIl19