velocious 1.0.428 → 1.0.430

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (933) hide show
  1. package/README.md +2 -0
  2. package/build/src/application.d.ts +96 -9
  3. package/build/src/application.d.ts.map +1 -1
  4. package/build/src/application.js +127 -28
  5. package/build/src/authorization/ability.d.ts +72 -31
  6. package/build/src/authorization/ability.d.ts.map +1 -1
  7. package/build/src/authorization/ability.js +59 -22
  8. package/build/src/authorization/base-resource.d.ts +47 -20
  9. package/build/src/authorization/base-resource.d.ts.map +1 -1
  10. package/build/src/authorization/base-resource.js +43 -14
  11. package/build/src/background-jobs/client.d.ts +4 -2
  12. package/build/src/background-jobs/client.d.ts.map +1 -1
  13. package/build/src/background-jobs/client.js +4 -2
  14. package/build/src/background-jobs/cron-expression.d.ts +9 -5
  15. package/build/src/background-jobs/cron-expression.d.ts.map +1 -1
  16. package/build/src/background-jobs/cron-expression.js +16 -6
  17. package/build/src/background-jobs/forked-runner-child.js +12 -5
  18. package/build/src/background-jobs/job-registry.d.ts +7 -1
  19. package/build/src/background-jobs/job-registry.d.ts.map +1 -1
  20. package/build/src/background-jobs/job-registry.js +8 -2
  21. package/build/src/background-jobs/job-runner.d.ts +1 -0
  22. package/build/src/background-jobs/job-runner.d.ts.map +1 -1
  23. package/build/src/background-jobs/job-runner.js +8 -3
  24. package/build/src/background-jobs/job.d.ts +12 -8
  25. package/build/src/background-jobs/job.d.ts.map +1 -1
  26. package/build/src/background-jobs/job.js +12 -6
  27. package/build/src/background-jobs/json-socket.d.ts +17 -5
  28. package/build/src/background-jobs/json-socket.d.ts.map +1 -1
  29. package/build/src/background-jobs/json-socket.js +18 -6
  30. package/build/src/background-jobs/main.d.ts +118 -32
  31. package/build/src/background-jobs/main.d.ts.map +1 -1
  32. package/build/src/background-jobs/main.js +123 -35
  33. package/build/src/background-jobs/normalize-error.d.ts +2 -1
  34. package/build/src/background-jobs/normalize-error.d.ts.map +1 -1
  35. package/build/src/background-jobs/normalize-error.js +5 -3
  36. package/build/src/background-jobs/scheduler.d.ts +31 -10
  37. package/build/src/background-jobs/scheduler.d.ts.map +1 -1
  38. package/build/src/background-jobs/scheduler.js +33 -11
  39. package/build/src/background-jobs/socket-request.d.ts +2 -0
  40. package/build/src/background-jobs/socket-request.d.ts.map +1 -1
  41. package/build/src/background-jobs/socket-request.js +11 -3
  42. package/build/src/background-jobs/status-reporter.d.ts +5 -2
  43. package/build/src/background-jobs/status-reporter.d.ts.map +1 -1
  44. package/build/src/background-jobs/status-reporter.js +6 -3
  45. package/build/src/background-jobs/store.d.ts +57 -19
  46. package/build/src/background-jobs/store.d.ts.map +1 -1
  47. package/build/src/background-jobs/store.js +70 -20
  48. package/build/src/background-jobs/types.d.ts +7 -7
  49. package/build/src/background-jobs/types.d.ts.map +1 -1
  50. package/build/src/background-jobs/types.js +6 -6
  51. package/build/src/background-jobs/web/authorization.d.ts.map +1 -1
  52. package/build/src/background-jobs/web/authorization.js +3 -1
  53. package/build/src/background-jobs/web/controller.d.ts +40 -14
  54. package/build/src/background-jobs/web/controller.d.ts.map +1 -1
  55. package/build/src/background-jobs/web/controller.js +46 -15
  56. package/build/src/background-jobs/web/registry.d.ts +5 -0
  57. package/build/src/background-jobs/web/registry.d.ts.map +1 -1
  58. package/build/src/background-jobs/web/registry.js +4 -1
  59. package/build/src/background-jobs/worker.d.ts +41 -8
  60. package/build/src/background-jobs/worker.d.ts.map +1 -1
  61. package/build/src/background-jobs/worker.js +64 -16
  62. package/build/src/beacon/client.d.ts +39 -12
  63. package/build/src/beacon/client.d.ts.map +1 -1
  64. package/build/src/beacon/client.js +45 -15
  65. package/build/src/beacon/in-process-broker.d.ts +4 -0
  66. package/build/src/beacon/in-process-broker.d.ts.map +1 -1
  67. package/build/src/beacon/in-process-broker.js +8 -3
  68. package/build/src/beacon/in-process-client.d.ts +28 -9
  69. package/build/src/beacon/in-process-client.d.ts.map +1 -1
  70. package/build/src/beacon/in-process-client.js +27 -9
  71. package/build/src/beacon/server.d.ts +13 -2
  72. package/build/src/beacon/server.d.ts.map +1 -1
  73. package/build/src/beacon/server.js +21 -5
  74. package/build/src/beacon/types.d.ts +3 -3
  75. package/build/src/beacon/types.d.ts.map +1 -1
  76. package/build/src/beacon/types.js +2 -2
  77. package/build/src/cli/base-command.d.ts +18 -4
  78. package/build/src/cli/base-command.d.ts.map +1 -1
  79. package/build/src/cli/base-command.js +15 -4
  80. package/build/src/cli/browser-cli.d.ts +3 -0
  81. package/build/src/cli/browser-cli.d.ts.map +1 -1
  82. package/build/src/cli/browser-cli.js +7 -2
  83. package/build/src/cli/commands/background-jobs-main.d.ts +0 -1
  84. package/build/src/cli/commands/background-jobs-main.d.ts.map +1 -1
  85. package/build/src/cli/commands/background-jobs-runner.d.ts +0 -1
  86. package/build/src/cli/commands/background-jobs-runner.d.ts.map +1 -1
  87. package/build/src/cli/commands/background-jobs-worker.d.ts +0 -1
  88. package/build/src/cli/commands/background-jobs-worker.d.ts.map +1 -1
  89. package/build/src/cli/commands/beacon.d.ts +0 -1
  90. package/build/src/cli/commands/beacon.d.ts.map +1 -1
  91. package/build/src/cli/commands/console.d.ts +0 -2
  92. package/build/src/cli/commands/console.d.ts.map +1 -1
  93. package/build/src/cli/commands/console.js +5 -2
  94. package/build/src/cli/commands/db/base-command.d.ts +11 -2
  95. package/build/src/cli/commands/db/base-command.d.ts.map +1 -1
  96. package/build/src/cli/commands/db/base-command.js +12 -3
  97. package/build/src/cli/commands/db/create.d.ts +3 -0
  98. package/build/src/cli/commands/db/create.d.ts.map +1 -1
  99. package/build/src/cli/commands/db/create.js +4 -1
  100. package/build/src/cli/commands/db/drop.d.ts +3 -0
  101. package/build/src/cli/commands/db/drop.d.ts.map +1 -1
  102. package/build/src/cli/commands/db/drop.js +4 -1
  103. package/build/src/cli/commands/db/schema/dump.d.ts +0 -2
  104. package/build/src/cli/commands/db/schema/dump.d.ts.map +1 -1
  105. package/build/src/cli/commands/db/schema/dump.js +5 -2
  106. package/build/src/cli/commands/db/schema/load.d.ts +0 -2
  107. package/build/src/cli/commands/db/schema/load.d.ts.map +1 -1
  108. package/build/src/cli/commands/db/schema/load.js +5 -2
  109. package/build/src/cli/commands/db/seed.d.ts +0 -2
  110. package/build/src/cli/commands/db/seed.d.ts.map +1 -1
  111. package/build/src/cli/commands/db/seed.js +5 -2
  112. package/build/src/cli/commands/db/tenants/check.d.ts +4 -1
  113. package/build/src/cli/commands/db/tenants/check.d.ts.map +1 -1
  114. package/build/src/cli/commands/db/tenants/check.js +5 -2
  115. package/build/src/cli/commands/db/tenants/create.d.ts +4 -1
  116. package/build/src/cli/commands/db/tenants/create.d.ts.map +1 -1
  117. package/build/src/cli/commands/db/tenants/create.js +5 -2
  118. package/build/src/cli/commands/db/tenants/migrate.d.ts +4 -1
  119. package/build/src/cli/commands/db/tenants/migrate.d.ts.map +1 -1
  120. package/build/src/cli/commands/db/tenants/migrate.js +5 -2
  121. package/build/src/cli/commands/destroy/migration.d.ts +0 -1
  122. package/build/src/cli/commands/destroy/migration.d.ts.map +1 -1
  123. package/build/src/cli/commands/generate/base-models.d.ts +0 -1
  124. package/build/src/cli/commands/generate/base-models.d.ts.map +1 -1
  125. package/build/src/cli/commands/generate/frontend-models.d.ts +0 -2
  126. package/build/src/cli/commands/generate/frontend-models.d.ts.map +1 -1
  127. package/build/src/cli/commands/generate/frontend-models.js +5 -2
  128. package/build/src/cli/commands/generate/migration.d.ts +0 -1
  129. package/build/src/cli/commands/generate/migration.d.ts.map +1 -1
  130. package/build/src/cli/commands/generate/model.d.ts +0 -1
  131. package/build/src/cli/commands/generate/model.d.ts.map +1 -1
  132. package/build/src/cli/commands/init.d.ts +0 -1
  133. package/build/src/cli/commands/init.d.ts.map +1 -1
  134. package/build/src/cli/commands/routes.d.ts +0 -1
  135. package/build/src/cli/commands/routes.d.ts.map +1 -1
  136. package/build/src/cli/commands/run-script.d.ts +0 -2
  137. package/build/src/cli/commands/run-script.d.ts.map +1 -1
  138. package/build/src/cli/commands/run-script.js +5 -2
  139. package/build/src/cli/commands/runner.d.ts +0 -2
  140. package/build/src/cli/commands/runner.d.ts.map +1 -1
  141. package/build/src/cli/commands/runner.js +5 -2
  142. package/build/src/cli/commands/server.d.ts +0 -1
  143. package/build/src/cli/commands/server.d.ts.map +1 -1
  144. package/build/src/cli/commands/test.d.ts +0 -1
  145. package/build/src/cli/commands/test.d.ts.map +1 -1
  146. package/build/src/cli/index.d.ts +18 -5
  147. package/build/src/cli/index.d.ts.map +1 -1
  148. package/build/src/cli/index.js +25 -8
  149. package/build/src/cli/tenant-database-command-helper.d.ts +24 -9
  150. package/build/src/cli/tenant-database-command-helper.d.ts.map +1 -1
  151. package/build/src/cli/tenant-database-command-helper.js +30 -11
  152. package/build/src/cli/use-browser-cli.d.ts +1 -0
  153. package/build/src/cli/use-browser-cli.d.ts.map +1 -1
  154. package/build/src/cli/use-browser-cli.js +5 -2
  155. package/build/src/configuration-resolver.d.ts +1 -0
  156. package/build/src/configuration-resolver.d.ts.map +1 -1
  157. package/build/src/configuration-resolver.js +2 -1
  158. package/build/src/configuration-types.d.ts +44 -44
  159. package/build/src/configuration-types.d.ts.map +1 -1
  160. package/build/src/configuration-types.js +27 -27
  161. package/build/src/configuration.d.ts +350 -114
  162. package/build/src/configuration.d.ts.map +1 -1
  163. package/build/src/configuration.js +416 -128
  164. package/build/src/controller.d.ts +67 -18
  165. package/build/src/controller.d.ts.map +1 -1
  166. package/build/src/controller.js +88 -23
  167. package/build/src/current-configuration.d.ts +2 -0
  168. package/build/src/current-configuration.d.ts.map +1 -1
  169. package/build/src/current-configuration.js +6 -2
  170. package/build/src/current.d.ts +16 -9
  171. package/build/src/current.d.ts.map +1 -1
  172. package/build/src/current.js +15 -8
  173. package/build/src/database/annotations-async-hooks.js +13 -6
  174. package/build/src/database/annotations.d.ts +7 -1
  175. package/build/src/database/annotations.d.ts.map +1 -1
  176. package/build/src/database/annotations.js +12 -5
  177. package/build/src/database/drivers/base-column.d.ts +21 -3
  178. package/build/src/database/drivers/base-column.d.ts.map +1 -1
  179. package/build/src/database/drivers/base-column.js +21 -3
  180. package/build/src/database/drivers/base-columns-index.d.ts +9 -0
  181. package/build/src/database/drivers/base-columns-index.d.ts.map +1 -1
  182. package/build/src/database/drivers/base-columns-index.js +10 -1
  183. package/build/src/database/drivers/base-foreign-key.d.ts +15 -3
  184. package/build/src/database/drivers/base-foreign-key.d.ts.map +1 -1
  185. package/build/src/database/drivers/base-foreign-key.js +15 -3
  186. package/build/src/database/drivers/base-table.d.ts +16 -3
  187. package/build/src/database/drivers/base-table.d.ts.map +1 -1
  188. package/build/src/database/drivers/base-table.js +16 -3
  189. package/build/src/database/drivers/base.d.ts +174 -37
  190. package/build/src/database/drivers/base.d.ts.map +1 -1
  191. package/build/src/database/drivers/base.js +156 -40
  192. package/build/src/database/drivers/mssql/column.d.ts +3 -2
  193. package/build/src/database/drivers/mssql/column.d.ts.map +1 -1
  194. package/build/src/database/drivers/mssql/column.js +3 -2
  195. package/build/src/database/drivers/mssql/index.d.ts +5 -6
  196. package/build/src/database/drivers/mssql/index.d.ts.map +1 -1
  197. package/build/src/database/drivers/mssql/index.js +38 -7
  198. package/build/src/database/drivers/mssql/options.d.ts +1 -0
  199. package/build/src/database/drivers/mssql/options.d.ts.map +1 -1
  200. package/build/src/database/drivers/mssql/options.js +8 -2
  201. package/build/src/database/drivers/mssql/sql/create-database.d.ts +1 -0
  202. package/build/src/database/drivers/mssql/sql/create-database.d.ts.map +1 -1
  203. package/build/src/database/drivers/mssql/sql/create-database.js +2 -1
  204. package/build/src/database/drivers/mssql/sql/drop-database.d.ts.map +1 -1
  205. package/build/src/database/drivers/mssql/sql/drop-database.js +2 -1
  206. package/build/src/database/drivers/mssql/structure-sql.d.ts +5 -2
  207. package/build/src/database/drivers/mssql/structure-sql.d.ts.map +1 -1
  208. package/build/src/database/drivers/mssql/structure-sql.js +5 -2
  209. package/build/src/database/drivers/mssql/table.d.ts +1 -0
  210. package/build/src/database/drivers/mssql/table.d.ts.map +1 -1
  211. package/build/src/database/drivers/mssql/table.js +9 -4
  212. package/build/src/database/drivers/mysql/column.d.ts +3 -2
  213. package/build/src/database/drivers/mysql/column.d.ts.map +1 -1
  214. package/build/src/database/drivers/mysql/column.js +4 -3
  215. package/build/src/database/drivers/mysql/index.d.ts +11 -3
  216. package/build/src/database/drivers/mysql/index.d.ts.map +1 -1
  217. package/build/src/database/drivers/mysql/index.js +54 -10
  218. package/build/src/database/drivers/mysql/options.d.ts +1 -0
  219. package/build/src/database/drivers/mysql/options.d.ts.map +1 -1
  220. package/build/src/database/drivers/mysql/options.js +4 -2
  221. package/build/src/database/drivers/mysql/query.d.ts +3 -2
  222. package/build/src/database/drivers/mysql/query.d.ts.map +1 -1
  223. package/build/src/database/drivers/mysql/query.js +6 -3
  224. package/build/src/database/drivers/mysql/sql/create-database.d.ts.map +1 -1
  225. package/build/src/database/drivers/mysql/sql/create-database.js +3 -1
  226. package/build/src/database/drivers/mysql/structure-sql.d.ts +7 -2
  227. package/build/src/database/drivers/mysql/structure-sql.d.ts.map +1 -1
  228. package/build/src/database/drivers/mysql/structure-sql.js +7 -2
  229. package/build/src/database/drivers/mysql/table.d.ts +1 -0
  230. package/build/src/database/drivers/mysql/table.d.ts.map +1 -1
  231. package/build/src/database/drivers/mysql/table.js +7 -3
  232. package/build/src/database/drivers/pgsql/column.d.ts +3 -2
  233. package/build/src/database/drivers/pgsql/column.d.ts.map +1 -1
  234. package/build/src/database/drivers/pgsql/column.js +3 -2
  235. package/build/src/database/drivers/pgsql/index.d.ts +1 -1
  236. package/build/src/database/drivers/pgsql/index.d.ts.map +1 -1
  237. package/build/src/database/drivers/pgsql/index.js +36 -11
  238. package/build/src/database/drivers/pgsql/options.d.ts +2 -0
  239. package/build/src/database/drivers/pgsql/options.d.ts.map +1 -1
  240. package/build/src/database/drivers/pgsql/options.js +3 -1
  241. package/build/src/database/drivers/pgsql/structure-sql.d.ts +5 -2
  242. package/build/src/database/drivers/pgsql/structure-sql.d.ts.map +1 -1
  243. package/build/src/database/drivers/pgsql/structure-sql.js +5 -2
  244. package/build/src/database/drivers/pgsql/table.d.ts +1 -0
  245. package/build/src/database/drivers/pgsql/table.d.ts.map +1 -1
  246. package/build/src/database/drivers/pgsql/table.js +6 -2
  247. package/build/src/database/drivers/sqlite/base.d.ts +15 -5
  248. package/build/src/database/drivers/sqlite/base.d.ts.map +1 -1
  249. package/build/src/database/drivers/sqlite/base.js +79 -27
  250. package/build/src/database/drivers/sqlite/column.d.ts +3 -2
  251. package/build/src/database/drivers/sqlite/column.d.ts.map +1 -1
  252. package/build/src/database/drivers/sqlite/column.js +3 -2
  253. package/build/src/database/drivers/sqlite/connection-sql-js.d.ts +4 -2
  254. package/build/src/database/drivers/sqlite/connection-sql-js.d.ts.map +1 -1
  255. package/build/src/database/drivers/sqlite/connection-sql-js.js +4 -2
  256. package/build/src/database/drivers/sqlite/foreign-key.d.ts +3 -2
  257. package/build/src/database/drivers/sqlite/foreign-key.d.ts.map +1 -1
  258. package/build/src/database/drivers/sqlite/foreign-key.js +3 -2
  259. package/build/src/database/drivers/sqlite/index.d.ts +18 -5
  260. package/build/src/database/drivers/sqlite/index.d.ts.map +1 -1
  261. package/build/src/database/drivers/sqlite/index.js +40 -16
  262. package/build/src/database/drivers/sqlite/index.native.d.ts +1 -1
  263. package/build/src/database/drivers/sqlite/index.native.d.ts.map +1 -1
  264. package/build/src/database/drivers/sqlite/index.native.js +6 -3
  265. package/build/src/database/drivers/sqlite/index.web.d.ts +16 -4
  266. package/build/src/database/drivers/sqlite/index.web.d.ts.map +1 -1
  267. package/build/src/database/drivers/sqlite/index.web.js +17 -7
  268. package/build/src/database/drivers/sqlite/options.d.ts +2 -0
  269. package/build/src/database/drivers/sqlite/options.d.ts.map +1 -1
  270. package/build/src/database/drivers/sqlite/options.js +3 -1
  271. package/build/src/database/drivers/sqlite/query.d.ts +3 -2
  272. package/build/src/database/drivers/sqlite/query.d.ts.map +1 -1
  273. package/build/src/database/drivers/sqlite/query.js +6 -3
  274. package/build/src/database/drivers/sqlite/query.native.d.ts +2 -2
  275. package/build/src/database/drivers/sqlite/query.native.d.ts.map +1 -1
  276. package/build/src/database/drivers/sqlite/query.native.js +3 -3
  277. package/build/src/database/drivers/sqlite/query.web.d.ts +3 -2
  278. package/build/src/database/drivers/sqlite/query.web.d.ts.map +1 -1
  279. package/build/src/database/drivers/sqlite/query.web.js +6 -3
  280. package/build/src/database/drivers/sqlite/sql/alter-table.d.ts.map +1 -1
  281. package/build/src/database/drivers/sqlite/sql/alter-table.js +9 -3
  282. package/build/src/database/drivers/sqlite/structure-sql.d.ts +2 -0
  283. package/build/src/database/drivers/sqlite/structure-sql.d.ts.map +1 -1
  284. package/build/src/database/drivers/sqlite/structure-sql.js +3 -1
  285. package/build/src/database/drivers/sqlite/table-rebuilder.d.ts +2 -0
  286. package/build/src/database/drivers/sqlite/table-rebuilder.d.ts.map +1 -1
  287. package/build/src/database/drivers/sqlite/table-rebuilder.js +3 -1
  288. package/build/src/database/drivers/sqlite/table.d.ts +2 -0
  289. package/build/src/database/drivers/sqlite/table.d.ts.map +1 -1
  290. package/build/src/database/drivers/sqlite/table.js +14 -4
  291. package/build/src/database/drivers/structure-sql/utils.d.ts +2 -0
  292. package/build/src/database/drivers/structure-sql/utils.d.ts.map +1 -1
  293. package/build/src/database/drivers/structure-sql/utils.js +3 -1
  294. package/build/src/database/handler.d.ts +1 -0
  295. package/build/src/database/handler.d.ts.map +1 -1
  296. package/build/src/database/handler.js +2 -1
  297. package/build/src/database/initializer-from-require-context.d.ts +8 -0
  298. package/build/src/database/initializer-from-require-context.d.ts.map +1 -1
  299. package/build/src/database/initializer-from-require-context.js +4 -1
  300. package/build/src/database/migration/index.d.ts +40 -5
  301. package/build/src/database/migration/index.d.ts.map +1 -1
  302. package/build/src/database/migration/index.js +34 -6
  303. package/build/src/database/migrator/files-finder.d.ts +2 -0
  304. package/build/src/database/migrator/files-finder.d.ts.map +1 -1
  305. package/build/src/database/migrator/files-finder.js +6 -2
  306. package/build/src/database/migrator.d.ts +29 -4
  307. package/build/src/database/migrator.d.ts.map +1 -1
  308. package/build/src/database/migrator.js +45 -10
  309. package/build/src/database/pool/async-tracked-multi-connection.d.ts +125 -31
  310. package/build/src/database/pool/async-tracked-multi-connection.d.ts.map +1 -1
  311. package/build/src/database/pool/async-tracked-multi-connection.js +189 -52
  312. package/build/src/database/pool/base-methods-forward.d.ts +1 -0
  313. package/build/src/database/pool/base-methods-forward.d.ts.map +1 -1
  314. package/build/src/database/pool/base-methods-forward.js +12 -3
  315. package/build/src/database/pool/base.d.ts +39 -7
  316. package/build/src/database/pool/base.d.ts.map +1 -1
  317. package/build/src/database/pool/base.js +59 -18
  318. package/build/src/database/pool/single-multi-use.d.ts +1 -0
  319. package/build/src/database/pool/single-multi-use.d.ts.map +1 -1
  320. package/build/src/database/pool/single-multi-use.js +16 -4
  321. package/build/src/database/query/alter-table-base.d.ts +1 -0
  322. package/build/src/database/query/alter-table-base.d.ts.map +1 -1
  323. package/build/src/database/query/alter-table-base.js +3 -1
  324. package/build/src/database/query/base.d.ts +3 -0
  325. package/build/src/database/query/base.d.ts.map +1 -1
  326. package/build/src/database/query/base.js +4 -1
  327. package/build/src/database/query/create-database-base.d.ts +5 -0
  328. package/build/src/database/query/create-database-base.d.ts.map +1 -1
  329. package/build/src/database/query/create-database-base.js +4 -1
  330. package/build/src/database/query/create-index-base.d.ts +5 -0
  331. package/build/src/database/query/create-index-base.d.ts.map +1 -1
  332. package/build/src/database/query/create-index-base.js +4 -1
  333. package/build/src/database/query/create-table-base.d.ts +2 -0
  334. package/build/src/database/query/create-table-base.d.ts.map +1 -1
  335. package/build/src/database/query/create-table-base.js +3 -1
  336. package/build/src/database/query/delete-base.d.ts +3 -2
  337. package/build/src/database/query/delete-base.d.ts.map +1 -1
  338. package/build/src/database/query/delete-base.js +3 -2
  339. package/build/src/database/query/drop-database-base.d.ts +5 -0
  340. package/build/src/database/query/drop-database-base.d.ts.map +1 -1
  341. package/build/src/database/query/drop-database-base.js +4 -1
  342. package/build/src/database/query/drop-table-base.d.ts +1 -0
  343. package/build/src/database/query/drop-table-base.d.ts.map +1 -1
  344. package/build/src/database/query/drop-table-base.js +3 -1
  345. package/build/src/database/query/from-base.d.ts +6 -1
  346. package/build/src/database/query/from-base.d.ts.map +1 -1
  347. package/build/src/database/query/from-base.js +7 -2
  348. package/build/src/database/query/from-plain.d.ts +1 -0
  349. package/build/src/database/query/from-plain.d.ts.map +1 -1
  350. package/build/src/database/query/from-plain.js +2 -1
  351. package/build/src/database/query/from-table.d.ts +1 -0
  352. package/build/src/database/query/from-table.d.ts.map +1 -1
  353. package/build/src/database/query/from-table.js +2 -1
  354. package/build/src/database/query/index.d.ts +72 -12
  355. package/build/src/database/query/index.d.ts.map +1 -1
  356. package/build/src/database/query/index.js +79 -19
  357. package/build/src/database/query/insert-base.d.ts +13 -8
  358. package/build/src/database/query/insert-base.d.ts.map +1 -1
  359. package/build/src/database/query/insert-base.js +10 -5
  360. package/build/src/database/query/join-base.d.ts +4 -0
  361. package/build/src/database/query/join-base.d.ts.map +1 -1
  362. package/build/src/database/query/join-base.js +5 -1
  363. package/build/src/database/query/join-object.d.ts +11 -0
  364. package/build/src/database/query/join-object.d.ts.map +1 -1
  365. package/build/src/database/query/join-object.js +15 -4
  366. package/build/src/database/query/join-plain.d.ts +1 -0
  367. package/build/src/database/query/join-plain.d.ts.map +1 -1
  368. package/build/src/database/query/join-plain.js +2 -1
  369. package/build/src/database/query/join-tracker.d.ts +7 -0
  370. package/build/src/database/query/join-tracker.d.ts.map +1 -1
  371. package/build/src/database/query/join-tracker.js +8 -1
  372. package/build/src/database/query/model-class-query.d.ts +92 -26
  373. package/build/src/database/query/model-class-query.d.ts.map +1 -1
  374. package/build/src/database/query/model-class-query.js +230 -76
  375. package/build/src/database/query/order-base.d.ts +3 -0
  376. package/build/src/database/query/order-base.d.ts.map +1 -1
  377. package/build/src/database/query/order-base.js +4 -1
  378. package/build/src/database/query/order-column.d.ts +9 -1
  379. package/build/src/database/query/order-column.d.ts.map +1 -1
  380. package/build/src/database/query/order-column.js +10 -2
  381. package/build/src/database/query/order-plain.d.ts +1 -0
  382. package/build/src/database/query/order-plain.d.ts.map +1 -1
  383. package/build/src/database/query/order-plain.js +2 -1
  384. package/build/src/database/query/preloader/belongs-to.d.ts +1 -0
  385. package/build/src/database/query/preloader/belongs-to.d.ts.map +1 -1
  386. package/build/src/database/query/preloader/belongs-to.js +68 -23
  387. package/build/src/database/query/preloader/ensure-model-class-initialized.d.ts +1 -0
  388. package/build/src/database/query/preloader/ensure-model-class-initialized.d.ts.map +1 -1
  389. package/build/src/database/query/preloader/ensure-model-class-initialized.js +2 -1
  390. package/build/src/database/query/preloader/has-many.d.ts +5 -3
  391. package/build/src/database/query/preloader/has-many.d.ts.map +1 -1
  392. package/build/src/database/query/preloader/has-many.js +66 -24
  393. package/build/src/database/query/preloader/has-one.d.ts +1 -0
  394. package/build/src/database/query/preloader/has-one.d.ts.map +1 -1
  395. package/build/src/database/query/preloader/has-one.js +26 -9
  396. package/build/src/database/query/preloader/selection.d.ts +7 -1
  397. package/build/src/database/query/preloader/selection.d.ts.map +1 -1
  398. package/build/src/database/query/preloader/selection.js +13 -5
  399. package/build/src/database/query/preloader.d.ts +1 -0
  400. package/build/src/database/query/preloader.d.ts.map +1 -1
  401. package/build/src/database/query/preloader.js +28 -9
  402. package/build/src/database/query/query-data.d.ts +21 -7
  403. package/build/src/database/query/query-data.d.ts.map +1 -1
  404. package/build/src/database/query/query-data.js +37 -18
  405. package/build/src/database/query/select-base.d.ts +3 -0
  406. package/build/src/database/query/select-base.d.ts.map +1 -1
  407. package/build/src/database/query/select-base.js +4 -1
  408. package/build/src/database/query/select-plain.d.ts +1 -0
  409. package/build/src/database/query/select-plain.d.ts.map +1 -1
  410. package/build/src/database/query/select-plain.js +2 -1
  411. package/build/src/database/query/select-table-and-column.d.ts +1 -0
  412. package/build/src/database/query/select-table-and-column.d.ts.map +1 -1
  413. package/build/src/database/query/select-table-and-column.js +2 -1
  414. package/build/src/database/query/update-base.d.ts +9 -6
  415. package/build/src/database/query/update-base.d.ts.map +1 -1
  416. package/build/src/database/query/update-base.js +7 -4
  417. package/build/src/database/query/upsert-base.d.ts +13 -4
  418. package/build/src/database/query/upsert-base.d.ts.map +1 -1
  419. package/build/src/database/query/upsert-base.js +12 -3
  420. package/build/src/database/query/where-base.d.ts +4 -0
  421. package/build/src/database/query/where-base.d.ts.map +1 -1
  422. package/build/src/database/query/where-base.js +5 -1
  423. package/build/src/database/query/where-combinator.d.ts +1 -0
  424. package/build/src/database/query/where-combinator.d.ts.map +1 -1
  425. package/build/src/database/query/where-combinator.js +6 -2
  426. package/build/src/database/query/where-hash.d.ts +6 -0
  427. package/build/src/database/query/where-hash.d.ts.map +1 -1
  428. package/build/src/database/query/where-hash.js +5 -1
  429. package/build/src/database/query/where-model-class-hash.d.ts +30 -16
  430. package/build/src/database/query/where-model-class-hash.d.ts.map +1 -1
  431. package/build/src/database/query/where-model-class-hash.js +55 -20
  432. package/build/src/database/query/where-not.d.ts +1 -0
  433. package/build/src/database/query/where-not.d.ts.map +1 -1
  434. package/build/src/database/query/where-not.js +3 -1
  435. package/build/src/database/query/where-plain.d.ts +1 -0
  436. package/build/src/database/query/where-plain.d.ts.map +1 -1
  437. package/build/src/database/query/where-plain.js +2 -1
  438. package/build/src/database/query/with-count.d.ts +11 -5
  439. package/build/src/database/query/with-count.d.ts.map +1 -1
  440. package/build/src/database/query/with-count.js +36 -15
  441. package/build/src/database/query-parser/base-query-parser.d.ts +1 -0
  442. package/build/src/database/query-parser/base-query-parser.d.ts.map +1 -1
  443. package/build/src/database/query-parser/base-query-parser.js +2 -1
  444. package/build/src/database/query-parser/from-parser.d.ts +5 -1
  445. package/build/src/database/query-parser/from-parser.d.ts.map +1 -1
  446. package/build/src/database/query-parser/from-parser.js +6 -2
  447. package/build/src/database/query-parser/group-parser.d.ts +2 -0
  448. package/build/src/database/query-parser/group-parser.d.ts.map +1 -1
  449. package/build/src/database/query-parser/group-parser.js +3 -1
  450. package/build/src/database/query-parser/joins-parser.d.ts +1 -0
  451. package/build/src/database/query-parser/joins-parser.d.ts.map +1 -1
  452. package/build/src/database/query-parser/joins-parser.js +2 -1
  453. package/build/src/database/query-parser/limit-parser.d.ts +1 -0
  454. package/build/src/database/query-parser/limit-parser.d.ts.map +1 -1
  455. package/build/src/database/query-parser/limit-parser.js +2 -1
  456. package/build/src/database/query-parser/options.d.ts +15 -4
  457. package/build/src/database/query-parser/options.d.ts.map +1 -1
  458. package/build/src/database/query-parser/options.js +11 -3
  459. package/build/src/database/query-parser/order-parser.d.ts +1 -0
  460. package/build/src/database/query-parser/order-parser.d.ts.map +1 -1
  461. package/build/src/database/query-parser/order-parser.js +2 -1
  462. package/build/src/database/query-parser/select-parser.d.ts +1 -0
  463. package/build/src/database/query-parser/select-parser.d.ts.map +1 -1
  464. package/build/src/database/query-parser/select-parser.js +2 -1
  465. package/build/src/database/query-parser/where-parser.d.ts +1 -0
  466. package/build/src/database/query-parser/where-parser.d.ts.map +1 -1
  467. package/build/src/database/query-parser/where-parser.js +2 -1
  468. package/build/src/database/record/acts-as-list.d.ts +0 -1
  469. package/build/src/database/record/acts-as-list.d.ts.map +1 -1
  470. package/build/src/database/record/acts-as-list.js +89 -45
  471. package/build/src/database/record/attachments/download.d.ts +34 -15
  472. package/build/src/database/record/attachments/download.d.ts.map +1 -1
  473. package/build/src/database/record/attachments/download.js +34 -22
  474. package/build/src/database/record/attachments/handle.d.ts +17 -5
  475. package/build/src/database/record/attachments/handle.d.ts.map +1 -1
  476. package/build/src/database/record/attachments/handle.js +25 -9
  477. package/build/src/database/record/attachments/normalize-input.d.ts +6 -1
  478. package/build/src/database/record/attachments/normalize-input.d.ts.map +1 -1
  479. package/build/src/database/record/attachments/normalize-input.js +54 -17
  480. package/build/src/database/record/attachments/storage-drivers/filesystem.d.ts +7 -1
  481. package/build/src/database/record/attachments/storage-drivers/filesystem.d.ts.map +1 -1
  482. package/build/src/database/record/attachments/storage-drivers/filesystem.js +10 -2
  483. package/build/src/database/record/attachments/storage-drivers/native.d.ts +12 -7
  484. package/build/src/database/record/attachments/storage-drivers/native.d.ts.map +1 -1
  485. package/build/src/database/record/attachments/storage-drivers/native.js +13 -6
  486. package/build/src/database/record/attachments/storage-drivers/s3.d.ts +18 -9
  487. package/build/src/database/record/attachments/storage-drivers/s3.d.ts.map +1 -1
  488. package/build/src/database/record/attachments/storage-drivers/s3.js +38 -13
  489. package/build/src/database/record/attachments/store.d.ts +48 -25
  490. package/build/src/database/record/attachments/store.d.ts.map +1 -1
  491. package/build/src/database/record/attachments/store.js +63 -25
  492. package/build/src/database/record/index.d.ts +394 -146
  493. package/build/src/database/record/index.d.ts.map +1 -1
  494. package/build/src/database/record/index.js +697 -248
  495. package/build/src/database/record/instance-relationships/base.d.ts +78 -19
  496. package/build/src/database/record/instance-relationships/base.d.ts.map +1 -1
  497. package/build/src/database/record/instance-relationships/base.js +98 -26
  498. package/build/src/database/record/instance-relationships/belongs-to.d.ts +1 -0
  499. package/build/src/database/record/instance-relationships/belongs-to.d.ts.map +1 -1
  500. package/build/src/database/record/instance-relationships/belongs-to.js +13 -5
  501. package/build/src/database/record/instance-relationships/has-many.d.ts +27 -7
  502. package/build/src/database/record/instance-relationships/has-many.d.ts.map +1 -1
  503. package/build/src/database/record/instance-relationships/has-many.js +50 -16
  504. package/build/src/database/record/instance-relationships/has-one.d.ts +4 -1
  505. package/build/src/database/record/instance-relationships/has-one.d.ts.map +1 -1
  506. package/build/src/database/record/instance-relationships/has-one.js +28 -10
  507. package/build/src/database/record/relationships/base.d.ts +61 -14
  508. package/build/src/database/record/relationships/base.d.ts.map +1 -1
  509. package/build/src/database/record/relationships/base.js +60 -15
  510. package/build/src/database/record/relationships/belongs-to.d.ts.map +1 -1
  511. package/build/src/database/record/relationships/belongs-to.js +9 -3
  512. package/build/src/database/record/relationships/has-many.d.ts.map +1 -1
  513. package/build/src/database/record/relationships/has-many.js +9 -3
  514. package/build/src/database/record/relationships/has-one.d.ts.map +1 -1
  515. package/build/src/database/record/relationships/has-one.js +9 -3
  516. package/build/src/database/record/state-machine.d.ts +9 -1
  517. package/build/src/database/record/state-machine.d.ts.map +1 -1
  518. package/build/src/database/record/state-machine.js +35 -14
  519. package/build/src/database/record/user-module.d.ts +2 -0
  520. package/build/src/database/record/user-module.d.ts.map +1 -1
  521. package/build/src/database/record/user-module.js +3 -1
  522. package/build/src/database/record/validators/base.d.ts +4 -2
  523. package/build/src/database/record/validators/base.d.ts.map +1 -1
  524. package/build/src/database/record/validators/base.js +4 -2
  525. package/build/src/database/record/validators/format.d.ts.map +1 -1
  526. package/build/src/database/record/validators/format.js +2 -1
  527. package/build/src/database/record/validators/presence.d.ts.map +1 -1
  528. package/build/src/database/record/validators/presence.js +5 -2
  529. package/build/src/database/record/validators/uniqueness.d.ts +0 -2
  530. package/build/src/database/record/validators/uniqueness.d.ts.map +1 -1
  531. package/build/src/database/record/validators/uniqueness.js +18 -8
  532. package/build/src/database/table-data/index.d.ts +40 -4
  533. package/build/src/database/table-data/index.d.ts.map +1 -1
  534. package/build/src/database/table-data/index.js +38 -5
  535. package/build/src/database/table-data/table-column.d.ts +43 -5
  536. package/build/src/database/table-data/table-column.d.ts.map +1 -1
  537. package/build/src/database/table-data/table-column.js +37 -4
  538. package/build/src/database/table-data/table-foreign-key.d.ts +8 -0
  539. package/build/src/database/table-data/table-foreign-key.d.ts.map +1 -1
  540. package/build/src/database/table-data/table-foreign-key.js +9 -1
  541. package/build/src/database/table-data/table-index.d.ts +8 -0
  542. package/build/src/database/table-data/table-index.d.ts.map +1 -1
  543. package/build/src/database/table-data/table-index.js +6 -1
  544. package/build/src/database/table-data/table-reference.d.ts +1 -0
  545. package/build/src/database/table-data/table-reference.d.ts.map +1 -1
  546. package/build/src/database/table-data/table-reference.js +2 -1
  547. package/build/src/database/use-database.d.ts +1 -0
  548. package/build/src/database/use-database.d.ts.map +1 -1
  549. package/build/src/database/use-database.js +2 -1
  550. package/build/src/environment-handlers/base.d.ts +94 -36
  551. package/build/src/environment-handlers/base.d.ts.map +1 -1
  552. package/build/src/environment-handlers/base.js +90 -36
  553. package/build/src/environment-handlers/browser.d.ts +33 -3
  554. package/build/src/environment-handlers/browser.d.ts.map +1 -1
  555. package/build/src/environment-handlers/browser.js +36 -9
  556. package/build/src/environment-handlers/node/cli/commands/cli-command-context.d.ts +5 -0
  557. package/build/src/environment-handlers/node/cli/commands/cli-command-context.d.ts.map +1 -1
  558. package/build/src/environment-handlers/node/cli/commands/cli-command-context.js +6 -2
  559. package/build/src/environment-handlers/node/cli/commands/console.d.ts +3 -2
  560. package/build/src/environment-handlers/node/cli/commands/console.d.ts.map +1 -1
  561. package/build/src/environment-handlers/node/cli/commands/console.js +23 -9
  562. package/build/src/environment-handlers/node/cli/commands/db/schema/dump.d.ts +4 -1
  563. package/build/src/environment-handlers/node/cli/commands/db/schema/dump.d.ts.map +1 -1
  564. package/build/src/environment-handlers/node/cli/commands/db/schema/dump.js +5 -2
  565. package/build/src/environment-handlers/node/cli/commands/db/schema/load.d.ts +6 -2
  566. package/build/src/environment-handlers/node/cli/commands/db/schema/load.d.ts.map +1 -1
  567. package/build/src/environment-handlers/node/cli/commands/db/schema/load.js +11 -5
  568. package/build/src/environment-handlers/node/cli/commands/db/seed.d.ts +15 -5
  569. package/build/src/environment-handlers/node/cli/commands/db/seed.d.ts.map +1 -1
  570. package/build/src/environment-handlers/node/cli/commands/db/seed.js +20 -6
  571. package/build/src/environment-handlers/node/cli/commands/destroy/migration.d.ts +5 -0
  572. package/build/src/environment-handlers/node/cli/commands/destroy/migration.d.ts.map +1 -1
  573. package/build/src/environment-handlers/node/cli/commands/destroy/migration.js +3 -1
  574. package/build/src/environment-handlers/node/cli/commands/generate/base-models.d.ts +2 -0
  575. package/build/src/environment-handlers/node/cli/commands/generate/base-models.d.ts.map +1 -1
  576. package/build/src/environment-handlers/node/cli/commands/generate/base-models.js +6 -4
  577. package/build/src/environment-handlers/node/cli/commands/generate/frontend-models.d.ts +43 -29
  578. package/build/src/environment-handlers/node/cli/commands/generate/frontend-models.d.ts.map +1 -1
  579. package/build/src/environment-handlers/node/cli/commands/generate/frontend-models.js +99 -40
  580. package/build/src/environment-handlers/node/cli/commands/generate/migration.d.ts +5 -0
  581. package/build/src/environment-handlers/node/cli/commands/generate/migration.d.ts.map +1 -1
  582. package/build/src/environment-handlers/node/cli/commands/generate/migration.js +3 -1
  583. package/build/src/environment-handlers/node/cli/commands/generate/model.d.ts +5 -0
  584. package/build/src/environment-handlers/node/cli/commands/generate/model.d.ts.map +1 -1
  585. package/build/src/environment-handlers/node/cli/commands/generate/model.js +3 -1
  586. package/build/src/environment-handlers/node/cli/commands/init.d.ts +5 -0
  587. package/build/src/environment-handlers/node/cli/commands/init.d.ts.map +1 -1
  588. package/build/src/environment-handlers/node/cli/commands/init.js +3 -1
  589. package/build/src/environment-handlers/node/cli/commands/routes.d.ts +3 -0
  590. package/build/src/environment-handlers/node/cli/commands/routes.d.ts.map +1 -1
  591. package/build/src/environment-handlers/node/cli/commands/routes.js +4 -1
  592. package/build/src/environment-handlers/node/cli/commands/run-script.d.ts +15 -5
  593. package/build/src/environment-handlers/node/cli/commands/run-script.d.ts.map +1 -1
  594. package/build/src/environment-handlers/node/cli/commands/run-script.js +20 -6
  595. package/build/src/environment-handlers/node/cli/commands/runner.d.ts +18 -6
  596. package/build/src/environment-handlers/node/cli/commands/runner.d.ts.map +1 -1
  597. package/build/src/environment-handlers/node/cli/commands/runner.js +20 -6
  598. package/build/src/environment-handlers/node/cli/commands/server.d.ts +13 -1
  599. package/build/src/environment-handlers/node/cli/commands/server.d.ts.map +1 -1
  600. package/build/src/environment-handlers/node/cli/commands/server.js +23 -6
  601. package/build/src/environment-handlers/node.d.ts +14 -2
  602. package/build/src/environment-handlers/node.d.ts.map +1 -1
  603. package/build/src/environment-handlers/node.js +107 -39
  604. package/build/src/error-logger.d.ts +4 -3
  605. package/build/src/error-logger.d.ts.map +1 -1
  606. package/build/src/error-logger.js +4 -3
  607. package/build/src/frontend-model-controller.d.ts +239 -90
  608. package/build/src/frontend-model-controller.d.ts.map +1 -1
  609. package/build/src/frontend-model-controller.js +577 -787
  610. package/build/src/frontend-model-resource/base-resource.d.ts +118 -66
  611. package/build/src/frontend-model-resource/base-resource.d.ts.map +1 -1
  612. package/build/src/frontend-model-resource/base-resource.js +205 -82
  613. package/build/src/frontend-models/base.d.ts +319 -163
  614. package/build/src/frontend-models/base.d.ts.map +1 -1
  615. package/build/src/frontend-models/base.js +717 -366
  616. package/build/src/frontend-models/clear-pending-debounced-callback.d.ts +2 -1
  617. package/build/src/frontend-models/clear-pending-debounced-callback.d.ts.map +1 -1
  618. package/build/src/frontend-models/clear-pending-debounced-callback.js +6 -3
  619. package/build/src/frontend-models/event-hook-models.d.ts +5 -0
  620. package/build/src/frontend-models/event-hook-models.d.ts.map +1 -1
  621. package/build/src/frontend-models/event-hook-models.js +10 -3
  622. package/build/src/frontend-models/model-registry.d.ts +5 -5
  623. package/build/src/frontend-models/model-registry.d.ts.map +1 -1
  624. package/build/src/frontend-models/model-registry.js +5 -5
  625. package/build/src/frontend-models/outgoing-event-buffer.d.ts +11 -3
  626. package/build/src/frontend-models/outgoing-event-buffer.d.ts.map +1 -1
  627. package/build/src/frontend-models/outgoing-event-buffer.js +13 -5
  628. package/build/src/frontend-models/preloader.d.ts +9 -6
  629. package/build/src/frontend-models/preloader.d.ts.map +1 -1
  630. package/build/src/frontend-models/preloader.js +21 -9
  631. package/build/src/frontend-models/query.d.ts +283 -73
  632. package/build/src/frontend-models/query.d.ts.map +1 -1
  633. package/build/src/frontend-models/query.js +331 -203
  634. package/build/src/frontend-models/resource-config-validation.d.ts +2 -0
  635. package/build/src/frontend-models/resource-config-validation.d.ts.map +1 -1
  636. package/build/src/frontend-models/resource-config-validation.js +3 -1
  637. package/build/src/frontend-models/resource-definition.d.ts +12 -5
  638. package/build/src/frontend-models/resource-definition.d.ts.map +1 -1
  639. package/build/src/frontend-models/resource-definition.js +39 -13
  640. package/build/src/frontend-models/transport-serialization.d.ts +14 -11
  641. package/build/src/frontend-models/transport-serialization.d.ts.map +1 -1
  642. package/build/src/frontend-models/transport-serialization.js +80 -53
  643. package/build/src/frontend-models/use-destroyed-event.d.ts +21 -0
  644. package/build/src/frontend-models/use-destroyed-event.d.ts.map +1 -1
  645. package/build/src/frontend-models/use-destroyed-event.js +34 -11
  646. package/build/src/frontend-models/use-model-class-event.d.ts +24 -0
  647. package/build/src/frontend-models/use-model-class-event.d.ts.map +1 -1
  648. package/build/src/frontend-models/use-model-class-event.js +39 -12
  649. package/build/src/frontend-models/use-updated-event.d.ts +21 -0
  650. package/build/src/frontend-models/use-updated-event.d.ts.map +1 -1
  651. package/build/src/frontend-models/use-updated-event.js +37 -12
  652. package/build/src/frontend-models/websocket-channel.d.ts +51 -9
  653. package/build/src/frontend-models/websocket-channel.d.ts.map +1 -1
  654. package/build/src/frontend-models/websocket-channel.js +96 -26
  655. package/build/src/frontend-models/websocket-publishers.d.ts +2 -0
  656. package/build/src/frontend-models/websocket-publishers.d.ts.map +1 -1
  657. package/build/src/frontend-models/websocket-publishers.js +33 -11
  658. package/build/src/http-client/header.d.ts +1 -0
  659. package/build/src/http-client/header.d.ts.map +1 -1
  660. package/build/src/http-client/header.js +2 -1
  661. package/build/src/http-client/index.d.ts +4 -0
  662. package/build/src/http-client/index.d.ts.map +1 -1
  663. package/build/src/http-client/index.js +5 -1
  664. package/build/src/http-client/request.d.ts +5 -0
  665. package/build/src/http-client/request.d.ts.map +1 -1
  666. package/build/src/http-client/request.js +6 -1
  667. package/build/src/http-client/response.d.ts +14 -4
  668. package/build/src/http-client/response.d.ts.map +1 -1
  669. package/build/src/http-client/response.js +14 -4
  670. package/build/src/http-client/websocket-client.d.ts +1 -0
  671. package/build/src/http-client/websocket-client.d.ts.map +1 -1
  672. package/build/src/http-client/websocket-client.js +2 -1
  673. package/build/src/http-server/client/index.d.ts +16 -2
  674. package/build/src/http-server/client/index.d.ts.map +1 -1
  675. package/build/src/http-server/client/index.js +44 -13
  676. package/build/src/http-server/client/params-to-object.d.ts +16 -10
  677. package/build/src/http-server/client/params-to-object.d.ts.map +1 -1
  678. package/build/src/http-server/client/params-to-object.js +46 -17
  679. package/build/src/http-server/client/request-buffer/form-data-part.d.ts +10 -6
  680. package/build/src/http-server/client/request-buffer/form-data-part.d.ts.map +1 -1
  681. package/build/src/http-server/client/request-buffer/form-data-part.js +11 -7
  682. package/build/src/http-server/client/request-buffer/header.d.ts +1 -0
  683. package/build/src/http-server/client/request-buffer/header.d.ts.map +1 -1
  684. package/build/src/http-server/client/request-buffer/header.js +2 -1
  685. package/build/src/http-server/client/request-buffer/index.d.ts +29 -4
  686. package/build/src/http-server/client/request-buffer/index.d.ts.map +1 -1
  687. package/build/src/http-server/client/request-buffer/index.js +43 -9
  688. package/build/src/http-server/client/request-parser.d.ts +52 -13
  689. package/build/src/http-server/client/request-parser.d.ts.map +1 -1
  690. package/build/src/http-server/client/request-parser.js +58 -15
  691. package/build/src/http-server/client/request-runner.d.ts +5 -1
  692. package/build/src/http-server/client/request-runner.d.ts.map +1 -1
  693. package/build/src/http-server/client/request-runner.js +32 -8
  694. package/build/src/http-server/client/request-timing.d.ts +37 -7
  695. package/build/src/http-server/client/request-timing.d.ts.map +1 -1
  696. package/build/src/http-server/client/request-timing.js +32 -8
  697. package/build/src/http-server/client/request.d.ts +15 -5
  698. package/build/src/http-server/client/request.d.ts.map +1 -1
  699. package/build/src/http-server/client/request.js +17 -5
  700. package/build/src/http-server/client/response.d.ts +22 -4
  701. package/build/src/http-server/client/response.d.ts.map +1 -1
  702. package/build/src/http-server/client/response.js +29 -7
  703. package/build/src/http-server/client/uploaded-file/memory-uploaded-file.d.ts +1 -0
  704. package/build/src/http-server/client/uploaded-file/memory-uploaded-file.d.ts.map +1 -1
  705. package/build/src/http-server/client/uploaded-file/memory-uploaded-file.js +3 -1
  706. package/build/src/http-server/client/uploaded-file/temporary-uploaded-file.d.ts +1 -0
  707. package/build/src/http-server/client/uploaded-file/temporary-uploaded-file.d.ts.map +1 -1
  708. package/build/src/http-server/client/uploaded-file/temporary-uploaded-file.js +3 -1
  709. package/build/src/http-server/client/uploaded-file/uploaded-file.d.ts +2 -0
  710. package/build/src/http-server/client/uploaded-file/uploaded-file.d.ts.map +1 -1
  711. package/build/src/http-server/client/uploaded-file/uploaded-file.js +3 -1
  712. package/build/src/http-server/client/websocket-request.d.ts +24 -12
  713. package/build/src/http-server/client/websocket-request.d.ts.map +1 -1
  714. package/build/src/http-server/client/websocket-request.js +24 -10
  715. package/build/src/http-server/client/websocket-session.d.ts +101 -62
  716. package/build/src/http-server/client/websocket-session.d.ts.map +1 -1
  717. package/build/src/http-server/client/websocket-session.js +118 -61
  718. package/build/src/http-server/cookie.d.ts +36 -8
  719. package/build/src/http-server/cookie.d.ts.map +1 -1
  720. package/build/src/http-server/cookie.js +37 -9
  721. package/build/src/http-server/development-reloader.d.ts +32 -7
  722. package/build/src/http-server/development-reloader.d.ts.map +1 -1
  723. package/build/src/http-server/development-reloader.js +39 -10
  724. package/build/src/http-server/index.d.ts +102 -25
  725. package/build/src/http-server/index.d.ts.map +1 -1
  726. package/build/src/http-server/index.js +117 -32
  727. package/build/src/http-server/remote-address.d.ts +1 -0
  728. package/build/src/http-server/remote-address.d.ts.map +1 -1
  729. package/build/src/http-server/remote-address.js +15 -4
  730. package/build/src/http-server/server-client.d.ts +37 -8
  731. package/build/src/http-server/server-client.d.ts.map +1 -1
  732. package/build/src/http-server/server-client.js +48 -12
  733. package/build/src/http-server/server-lock.d.ts +76 -0
  734. package/build/src/http-server/server-lock.d.ts.map +1 -0
  735. package/build/src/http-server/server-lock.js +164 -0
  736. package/build/src/http-server/websocket-channel-subscribers.d.ts +13 -8
  737. package/build/src/http-server/websocket-channel-subscribers.d.ts.map +1 -1
  738. package/build/src/http-server/websocket-channel-subscribers.js +16 -7
  739. package/build/src/http-server/websocket-channel.d.ts +13 -11
  740. package/build/src/http-server/websocket-channel.d.ts.map +1 -1
  741. package/build/src/http-server/websocket-channel.js +8 -12
  742. package/build/src/http-server/websocket-connection.d.ts +10 -14
  743. package/build/src/http-server/websocket-connection.d.ts.map +1 -1
  744. package/build/src/http-server/websocket-connection.js +8 -12
  745. package/build/src/http-server/websocket-event-log-store.d.ts +48 -10
  746. package/build/src/http-server/websocket-event-log-store.d.ts.map +1 -1
  747. package/build/src/http-server/websocket-event-log-store.js +76 -34
  748. package/build/src/http-server/websocket-events-host.d.ts +21 -15
  749. package/build/src/http-server/websocket-events-host.d.ts.map +1 -1
  750. package/build/src/http-server/websocket-events-host.js +20 -11
  751. package/build/src/http-server/websocket-events.d.ts +8 -7
  752. package/build/src/http-server/websocket-events.d.ts.map +1 -1
  753. package/build/src/http-server/websocket-events.js +6 -5
  754. package/build/src/http-server/worker-handler/channel-subscriber-dispatch.d.ts +3 -2
  755. package/build/src/http-server/worker-handler/channel-subscriber-dispatch.d.ts.map +1 -1
  756. package/build/src/http-server/worker-handler/channel-subscriber-dispatch.js +3 -2
  757. package/build/src/http-server/worker-handler/in-process.d.ts +18 -18
  758. package/build/src/http-server/worker-handler/in-process.d.ts.map +1 -1
  759. package/build/src/http-server/worker-handler/in-process.js +28 -20
  760. package/build/src/http-server/worker-handler/index.d.ts +39 -20
  761. package/build/src/http-server/worker-handler/index.d.ts.map +1 -1
  762. package/build/src/http-server/worker-handler/index.js +34 -14
  763. package/build/src/http-server/worker-handler/worker-thread.d.ts +31 -15
  764. package/build/src/http-server/worker-handler/worker-thread.d.ts.map +1 -1
  765. package/build/src/http-server/worker-handler/worker-thread.js +31 -12
  766. package/build/src/initializer.d.ts +4 -0
  767. package/build/src/initializer.d.ts.map +1 -1
  768. package/build/src/initializer.js +5 -1
  769. package/build/src/jobs/mail-delivery.d.ts +1 -0
  770. package/build/src/jobs/mail-delivery.d.ts.map +1 -1
  771. package/build/src/jobs/mail-delivery.js +2 -1
  772. package/build/src/logger/base-logger.js +2 -2
  773. package/build/src/logger/console-logger.d.ts +2 -0
  774. package/build/src/logger/console-logger.d.ts.map +1 -1
  775. package/build/src/logger/console-logger.js +3 -1
  776. package/build/src/logger/file-logger.d.ts +2 -0
  777. package/build/src/logger/file-logger.d.ts.map +1 -1
  778. package/build/src/logger/file-logger.js +3 -1
  779. package/build/src/logger/outputs/array-output.d.ts +21 -5
  780. package/build/src/logger/outputs/array-output.d.ts.map +1 -1
  781. package/build/src/logger/outputs/array-output.js +19 -6
  782. package/build/src/logger/outputs/console-output.d.ts +10 -2
  783. package/build/src/logger/outputs/console-output.d.ts.map +1 -1
  784. package/build/src/logger/outputs/console-output.js +8 -3
  785. package/build/src/logger/outputs/file-output.d.ts +20 -5
  786. package/build/src/logger/outputs/file-output.d.ts.map +1 -1
  787. package/build/src/logger/outputs/file-output.js +18 -6
  788. package/build/src/logger/outputs/stdout-output.d.ts +7 -1
  789. package/build/src/logger/outputs/stdout-output.d.ts.map +1 -1
  790. package/build/src/logger/outputs/stdout-output.js +9 -3
  791. package/build/src/logger.d.ts +28 -13
  792. package/build/src/logger.d.ts.map +1 -1
  793. package/build/src/logger.js +60 -23
  794. package/build/src/mailer/backends/smtp.d.ts +5 -0
  795. package/build/src/mailer/backends/smtp.d.ts.map +1 -1
  796. package/build/src/mailer/backends/smtp.js +17 -4
  797. package/build/src/mailer/base.d.ts +33 -17
  798. package/build/src/mailer/base.d.ts.map +1 -1
  799. package/build/src/mailer/base.js +54 -18
  800. package/build/src/mailer/delivery.d.ts +16 -5
  801. package/build/src/mailer/delivery.d.ts.map +1 -1
  802. package/build/src/mailer/delivery.js +18 -7
  803. package/build/src/mailer/index.d.ts +5 -5
  804. package/build/src/mailer/index.d.ts.map +1 -1
  805. package/build/src/mailer/index.js +2 -2
  806. package/build/src/mailer.d.ts +5 -5
  807. package/build/src/mailer.d.ts.map +1 -1
  808. package/build/src/mailer.js +2 -2
  809. package/build/src/plugins/sqljs-wasm-route-controller.d.ts +4 -1
  810. package/build/src/plugins/sqljs-wasm-route-controller.d.ts.map +1 -1
  811. package/build/src/plugins/sqljs-wasm-route-controller.js +11 -4
  812. package/build/src/plugins/sqljs-wasm-route.d.ts +6 -0
  813. package/build/src/plugins/sqljs-wasm-route.d.ts.map +1 -1
  814. package/build/src/plugins/sqljs-wasm-route.js +4 -1
  815. package/build/src/record-payload-values.d.ts +54 -0
  816. package/build/src/record-payload-values.d.ts.map +1 -0
  817. package/build/src/record-payload-values.js +80 -0
  818. package/build/src/routes/app-routes.d.ts +1 -0
  819. package/build/src/routes/app-routes.d.ts.map +1 -1
  820. package/build/src/routes/app-routes.js +2 -1
  821. package/build/src/routes/base-route.d.ts +52 -16
  822. package/build/src/routes/base-route.d.ts.map +1 -1
  823. package/build/src/routes/base-route.js +50 -14
  824. package/build/src/routes/basic-route.d.ts +1 -0
  825. package/build/src/routes/basic-route.d.ts.map +1 -1
  826. package/build/src/routes/basic-route.js +13 -4
  827. package/build/src/routes/built-in/debug/controller.d.ts +4 -1
  828. package/build/src/routes/built-in/debug/controller.d.ts.map +1 -1
  829. package/build/src/routes/built-in/debug/controller.js +5 -2
  830. package/build/src/routes/get-route.d.ts +1 -0
  831. package/build/src/routes/get-route.d.ts.map +1 -1
  832. package/build/src/routes/get-route.js +7 -4
  833. package/build/src/routes/hooks/frontend-model-command-route-hook.d.ts +1 -0
  834. package/build/src/routes/hooks/frontend-model-command-route-hook.d.ts.map +1 -1
  835. package/build/src/routes/hooks/frontend-model-command-route-hook.js +6 -2
  836. package/build/src/routes/index.d.ts +3 -2
  837. package/build/src/routes/index.d.ts.map +1 -1
  838. package/build/src/routes/index.js +10 -4
  839. package/build/src/routes/namespace-route.d.ts +1 -0
  840. package/build/src/routes/namespace-route.d.ts.map +1 -1
  841. package/build/src/routes/namespace-route.js +5 -3
  842. package/build/src/routes/plugin-routes.d.ts +10 -1
  843. package/build/src/routes/plugin-routes.d.ts.map +1 -1
  844. package/build/src/routes/plugin-routes.js +11 -3
  845. package/build/src/routes/post-route.d.ts +1 -0
  846. package/build/src/routes/post-route.d.ts.map +1 -1
  847. package/build/src/routes/post-route.js +7 -4
  848. package/build/src/routes/resolver.d.ts +20 -5
  849. package/build/src/routes/resolver.d.ts.map +1 -1
  850. package/build/src/routes/resolver.js +47 -14
  851. package/build/src/routes/resource-route.d.ts +6 -1
  852. package/build/src/routes/resource-route.d.ts.map +1 -1
  853. package/build/src/routes/resource-route.js +10 -4
  854. package/build/src/testing/base-expect.d.ts +2 -0
  855. package/build/src/testing/base-expect.d.ts.map +1 -1
  856. package/build/src/testing/base-expect.js +3 -1
  857. package/build/src/testing/browser-frontend-model-event-hook-scenarios.d.ts +33 -5
  858. package/build/src/testing/browser-frontend-model-event-hook-scenarios.d.ts.map +1 -1
  859. package/build/src/testing/browser-frontend-model-event-hook-scenarios.js +95 -23
  860. package/build/src/testing/expect-to-change.d.ts +3 -0
  861. package/build/src/testing/expect-to-change.d.ts.map +1 -1
  862. package/build/src/testing/expect-to-change.js +4 -1
  863. package/build/src/testing/expect-utils.d.ts +22 -16
  864. package/build/src/testing/expect-utils.d.ts.map +1 -1
  865. package/build/src/testing/expect-utils.js +62 -30
  866. package/build/src/testing/expect.d.ts +50 -21
  867. package/build/src/testing/expect.d.ts.map +1 -1
  868. package/build/src/testing/expect.js +58 -17
  869. package/build/src/testing/request-client.d.ts +16 -3
  870. package/build/src/testing/request-client.d.ts.map +1 -1
  871. package/build/src/testing/request-client.js +17 -4
  872. package/build/src/testing/test-files-finder.d.ts +41 -9
  873. package/build/src/testing/test-files-finder.d.ts.map +1 -1
  874. package/build/src/testing/test-files-finder.js +42 -10
  875. package/build/src/testing/test-filter-parser.d.ts +6 -0
  876. package/build/src/testing/test-filter-parser.d.ts.map +1 -1
  877. package/build/src/testing/test-filter-parser.js +12 -3
  878. package/build/src/testing/test-runner.d.ts +102 -6
  879. package/build/src/testing/test-runner.d.ts.map +1 -1
  880. package/build/src/testing/test-runner.js +115 -23
  881. package/build/src/testing/test-suite-splitter.d.ts +7 -0
  882. package/build/src/testing/test-suite-splitter.d.ts.map +1 -1
  883. package/build/src/testing/test-suite-splitter.js +7 -2
  884. package/build/src/testing/test.d.ts +20 -4
  885. package/build/src/testing/test.d.ts.map +1 -1
  886. package/build/src/testing/test.js +67 -20
  887. package/build/src/utils/backtrace-cleaner-node.d.ts.map +1 -1
  888. package/build/src/utils/backtrace-cleaner-node.js +6 -1
  889. package/build/src/utils/backtrace-cleaner.d.ts +16 -1
  890. package/build/src/utils/backtrace-cleaner.d.ts.map +1 -1
  891. package/build/src/utils/backtrace-cleaner.js +20 -2
  892. package/build/src/utils/ensure-error.d.ts +3 -2
  893. package/build/src/utils/ensure-error.d.ts.map +1 -1
  894. package/build/src/utils/ensure-error.js +3 -2
  895. package/build/src/utils/event-emitter.d.ts.map +1 -1
  896. package/build/src/utils/event-emitter.js +2 -2
  897. package/build/src/utils/file-exists.d.ts +1 -0
  898. package/build/src/utils/file-exists.d.ts.map +1 -1
  899. package/build/src/utils/file-exists.js +2 -1
  900. package/build/src/utils/format-value.d.ts +5 -4
  901. package/build/src/utils/format-value.d.ts.map +1 -1
  902. package/build/src/utils/format-value.js +12 -7
  903. package/build/src/utils/model-scope.d.ts +18 -12
  904. package/build/src/utils/model-scope.d.ts.map +1 -1
  905. package/build/src/utils/model-scope.js +19 -11
  906. package/build/src/utils/nest-callbacks.d.ts +1 -0
  907. package/build/src/utils/nest-callbacks.d.ts.map +1 -1
  908. package/build/src/utils/nest-callbacks.js +2 -1
  909. package/build/src/utils/plain-object.d.ts +7 -0
  910. package/build/src/utils/plain-object.d.ts.map +1 -0
  911. package/build/src/utils/plain-object.js +13 -0
  912. package/build/src/utils/ransack.d.ts +29 -5
  913. package/build/src/utils/ransack.d.ts.map +1 -1
  914. package/build/src/utils/ransack.js +136 -49
  915. package/build/src/utils/rest-args-error.d.ts +1 -0
  916. package/build/src/utils/rest-args-error.d.ts.map +1 -1
  917. package/build/src/utils/rest-args-error.js +2 -1
  918. package/build/src/utils/singularize-model-name.d.ts +1 -0
  919. package/build/src/utils/singularize-model-name.d.ts.map +1 -1
  920. package/build/src/utils/singularize-model-name.js +2 -1
  921. package/build/src/utils/to-import-specifier.d.ts.map +1 -1
  922. package/build/src/utils/to-import-specifier.js +3 -1
  923. package/build/src/utils/with-tracked-stack-async-hooks.d.ts +8 -5
  924. package/build/src/utils/with-tracked-stack-async-hooks.d.ts.map +1 -1
  925. package/build/src/utils/with-tracked-stack-async-hooks.js +32 -13
  926. package/build/src/utils/with-tracked-stack.d.ts +9 -5
  927. package/build/src/utils/with-tracked-stack.d.ts.map +1 -1
  928. package/build/src/utils/with-tracked-stack.js +19 -8
  929. package/build/src/velocious-error.d.ts +4 -2
  930. package/build/src/velocious-error.d.ts.map +1 -1
  931. package/build/src/velocious-error.js +5 -3
  932. package/build/tsconfig.tsbuildinfo +1 -1
  933. package/package.json +1 -1
@@ -1,4 +1,5 @@
1
1
  /**
2
+ * Runs the validateFrontendModelResourceCommandName helper.
2
3
  * @param {object} args - Args.
3
4
  * @param {string} args.commandName - Command name candidate.
4
5
  * @param {string} args.modelName - Model class name.
@@ -11,6 +12,7 @@ export function validateFrontendModelResourceCommandName({ commandName, modelNam
11
12
  commandType: string;
12
13
  }): string;
13
14
  /**
15
+ * Runs the validateFrontendModelResourcePath helper.
14
16
  * @param {object} args - Args.
15
17
  * @param {string} args.resourcePath - Resource path candidate.
16
18
  * @param {string} args.modelName - Model class name.
@@ -1 +1 @@
1
- {"version":3,"file":"resource-config-validation.d.ts","sourceRoot":"","sources":["../../../src/frontend-models/resource-config-validation.js"],"names":[],"mappings":"AAIA;;;;;;GAMG;AACH,kGALG;IAAqB,WAAW,EAAxB,MAAM;IACO,SAAS,EAAtB,MAAM;IACO,WAAW,EAAxB,MAAM;CACd,GAAU,MAAM,CAYlB;AAED;;;;;GAKG;AACH,+EAJG;IAAqB,YAAY,EAAzB,MAAM;IACO,SAAS,EAAtB,MAAM;CACd,GAAU,MAAM,CA0BlB"}
1
+ {"version":3,"file":"resource-config-validation.d.ts","sourceRoot":"","sources":["../../../src/frontend-models/resource-config-validation.js"],"names":[],"mappings":"AAIA;;;;;;;GAOG;AACH,kGALG;IAAqB,WAAW,EAAxB,MAAM;IACO,SAAS,EAAtB,MAAM;IACO,WAAW,EAAxB,MAAM;CACd,GAAU,MAAM,CAYlB;AAED;;;;;;GAMG;AACH,+EAJG;IAAqB,YAAY,EAAzB,MAAM;IACO,SAAS,EAAtB,MAAM;CACd,GAAU,MAAM,CA0BlB"}
@@ -1,6 +1,7 @@
1
1
  // @ts-check
2
2
  const frontendModelSafeUrlSegmentPattern = /^[A-Za-z0-9_-]+$/u;
3
3
  /**
4
+ * Runs the validateFrontendModelResourceCommandName helper.
4
5
  * @param {object} args - Args.
5
6
  * @param {string} args.commandName - Command name candidate.
6
7
  * @param {string} args.modelName - Model class name.
@@ -17,6 +18,7 @@ export function validateFrontendModelResourceCommandName({ commandName, modelNam
17
18
  return commandName;
18
19
  }
19
20
  /**
21
+ * Runs the validateFrontendModelResourcePath helper.
20
22
  * @param {object} args - Args.
21
23
  * @param {string} args.resourcePath - Resource path candidate.
22
24
  * @param {string} args.modelName - Model class name.
@@ -41,4 +43,4 @@ export function validateFrontendModelResourcePath({ resourcePath, modelName }) {
41
43
  }
42
44
  return resourcePath;
43
45
  }
44
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzb3VyY2UtY29uZmlnLXZhbGlkYXRpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvZnJvbnRlbmQtbW9kZWxzL3Jlc291cmNlLWNvbmZpZy12YWxpZGF0aW9uLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFlBQVk7QUFFWixNQUFNLGtDQUFrQyxHQUFHLG1CQUFtQixDQUFBO0FBRTlEOzs7Ozs7R0FNRztBQUNILE1BQU0sVUFBVSx3Q0FBd0MsQ0FBQyxFQUFDLFdBQVcsRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFDO0lBQzVGLElBQUksT0FBTyxXQUFXLEtBQUssUUFBUSxJQUFJLFdBQVcsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7UUFDOUQsTUFBTSxJQUFJLEtBQUssQ0FBQyxzQ0FBc0MsU0FBUyxJQUFJLFdBQVcsNkJBQTZCLENBQUMsQ0FBQTtJQUM5RyxDQUFDO0lBRUQsSUFBSSxDQUFDLGtDQUFrQyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDO1FBQzFELE1BQU0sSUFBSSxLQUFLLENBQUMsc0NBQXNDLFNBQVMsSUFBSSxXQUFXLE1BQU0sV0FBVyxHQUFHLENBQUMsQ0FBQTtJQUNyRyxDQUFDO0lBRUQsT0FBTyxXQUFXLENBQUE7QUFDcEIsQ0FBQztBQUVEOzs7OztHQUtHO0FBQ0gsTUFBTSxVQUFVLGlDQUFpQyxDQUFDLEVBQUMsWUFBWSxFQUFFLFNBQVMsRUFBQztJQUN6RSxJQUFJLE9BQU8sWUFBWSxLQUFLLFFBQVEsSUFBSSxZQUFZLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO1FBQ2hFLE1BQU0sSUFBSSxLQUFLLENBQUMsNENBQTRDLFNBQVMsNkJBQTZCLENBQUMsQ0FBQTtJQUNyRyxDQUFDO0lBRUQsSUFBSSxZQUFZLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxJQUFJLFlBQVksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztRQUM3RCxNQUFNLElBQUksS0FBSyxDQUFDLDRDQUE0QyxTQUFTLE1BQU0sWUFBWSxHQUFHLENBQUMsQ0FBQTtJQUM3RixDQUFDO0lBRUQsTUFBTSxjQUFjLEdBQUcsWUFBWSxDQUFDLE9BQU8sQ0FBQyxZQUFZLEVBQUUsRUFBRSxDQUFDLENBQUE7SUFFN0QsSUFBSSxjQUFjLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO1FBQzlCLE1BQU0sSUFBSSxLQUFLLENBQUMsNENBQTRDLFNBQVMsTUFBTSxZQUFZLEdBQUcsQ0FBQyxDQUFBO0lBQzdGLENBQUM7SUFFRCxNQUFNLFlBQVksR0FBRyxjQUFjLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFBO0lBRTlDLEtBQUssTUFBTSxXQUFXLElBQUksWUFBWSxFQUFFLENBQUM7UUFDdkMsSUFBSSxDQUFDLGtDQUFrQyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDO1lBQzFELE1BQU0sSUFBSSxLQUFLLENBQUMsNENBQTRDLFNBQVMsTUFBTSxZQUFZLEdBQUcsQ0FBQyxDQUFBO1FBQzdGLENBQUM7SUFDSCxDQUFDO0lBRUQsT0FBTyxZQUFZLENBQUE7QUFDckIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIEB0cy1jaGVja1xuXG5jb25zdCBmcm9udGVuZE1vZGVsU2FmZVVybFNlZ21lbnRQYXR0ZXJuID0gL15bQS1aYS16MC05Xy1dKyQvdVxuXG4vKipcbiAqIEBwYXJhbSB7b2JqZWN0fSBhcmdzIC0gQXJncy5cbiAqIEBwYXJhbSB7c3RyaW5nfSBhcmdzLmNvbW1hbmROYW1lIC0gQ29tbWFuZCBuYW1lIGNhbmRpZGF0ZS5cbiAqIEBwYXJhbSB7c3RyaW5nfSBhcmdzLm1vZGVsTmFtZSAtIE1vZGVsIGNsYXNzIG5hbWUuXG4gKiBAcGFyYW0ge3N0cmluZ30gYXJncy5jb21tYW5kVHlwZSAtIENvbW1hbmQgdHlwZSBrZXkuXG4gKiBAcmV0dXJucyB7c3RyaW5nfSAtIFZhbGlkYXRlZCBjb21tYW5kIG5hbWUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB2YWxpZGF0ZUZyb250ZW5kTW9kZWxSZXNvdXJjZUNvbW1hbmROYW1lKHtjb21tYW5kTmFtZSwgbW9kZWxOYW1lLCBjb21tYW5kVHlwZX0pIHtcbiAgaWYgKHR5cGVvZiBjb21tYW5kTmFtZSAhPT0gXCJzdHJpbmdcIiB8fCBjb21tYW5kTmFtZS5sZW5ndGggPCAxKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIGZyb250ZW5kIG1vZGVsIGNvbW1hbmQgZm9yICR7bW9kZWxOYW1lfS4ke2NvbW1hbmRUeXBlfTogZXhwZWN0ZWQgbm9uLWVtcHR5IHN0cmluZ2ApXG4gIH1cblxuICBpZiAoIWZyb250ZW5kTW9kZWxTYWZlVXJsU2VnbWVudFBhdHRlcm4udGVzdChjb21tYW5kTmFtZSkpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgZnJvbnRlbmQgbW9kZWwgY29tbWFuZCBmb3IgJHttb2RlbE5hbWV9LiR7Y29tbWFuZFR5cGV9OiBcIiR7Y29tbWFuZE5hbWV9XCJgKVxuICB9XG5cbiAgcmV0dXJuIGNvbW1hbmROYW1lXG59XG5cbi8qKlxuICogQHBhcmFtIHtvYmplY3R9IGFyZ3MgLSBBcmdzLlxuICogQHBhcmFtIHtzdHJpbmd9IGFyZ3MucmVzb3VyY2VQYXRoIC0gUmVzb3VyY2UgcGF0aCBjYW5kaWRhdGUuXG4gKiBAcGFyYW0ge3N0cmluZ30gYXJncy5tb2RlbE5hbWUgLSBNb2RlbCBjbGFzcyBuYW1lLlxuICogQHJldHVybnMge3N0cmluZ30gLSBWYWxpZGF0ZWQgcmVzb3VyY2UgcGF0aC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHZhbGlkYXRlRnJvbnRlbmRNb2RlbFJlc291cmNlUGF0aCh7cmVzb3VyY2VQYXRoLCBtb2RlbE5hbWV9KSB7XG4gIGlmICh0eXBlb2YgcmVzb3VyY2VQYXRoICE9PSBcInN0cmluZ1wiIHx8IHJlc291cmNlUGF0aC5sZW5ndGggPCAxKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIGZyb250ZW5kIG1vZGVsIHJlc291cmNlIHBhdGggZm9yICR7bW9kZWxOYW1lfTogZXhwZWN0ZWQgbm9uLWVtcHR5IHN0cmluZ2ApXG4gIH1cblxuICBpZiAocmVzb3VyY2VQYXRoLmluY2x1ZGVzKFwiP1wiKSB8fCByZXNvdXJjZVBhdGguaW5jbHVkZXMoXCIjXCIpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIGZyb250ZW5kIG1vZGVsIHJlc291cmNlIHBhdGggZm9yICR7bW9kZWxOYW1lfTogXCIke3Jlc291cmNlUGF0aH1cImApXG4gIH1cblxuICBjb25zdCBub3JtYWxpemVkUGF0aCA9IHJlc291cmNlUGF0aC5yZXBsYWNlKC9eXFwvK3xcXC8rJC9nLCBcIlwiKVxuXG4gIGlmIChub3JtYWxpemVkUGF0aC5sZW5ndGggPCAxKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIGZyb250ZW5kIG1vZGVsIHJlc291cmNlIHBhdGggZm9yICR7bW9kZWxOYW1lfTogXCIke3Jlc291cmNlUGF0aH1cImApXG4gIH1cblxuICBjb25zdCBwYXRoU2VnbWVudHMgPSBub3JtYWxpemVkUGF0aC5zcGxpdChcIi9cIilcblxuICBmb3IgKGNvbnN0IHBhdGhTZWdtZW50IG9mIHBhdGhTZWdtZW50cykge1xuICAgIGlmICghZnJvbnRlbmRNb2RlbFNhZmVVcmxTZWdtZW50UGF0dGVybi50ZXN0KHBhdGhTZWdtZW50KSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIGZyb250ZW5kIG1vZGVsIHJlc291cmNlIHBhdGggZm9yICR7bW9kZWxOYW1lfTogXCIke3Jlc291cmNlUGF0aH1cImApXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHJlc291cmNlUGF0aFxufVxuIl19
46
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzb3VyY2UtY29uZmlnLXZhbGlkYXRpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvZnJvbnRlbmQtbW9kZWxzL3Jlc291cmNlLWNvbmZpZy12YWxpZGF0aW9uLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFlBQVk7QUFFWixNQUFNLGtDQUFrQyxHQUFHLG1CQUFtQixDQUFBO0FBRTlEOzs7Ozs7O0dBT0c7QUFDSCxNQUFNLFVBQVUsd0NBQXdDLENBQUMsRUFBQyxXQUFXLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBQztJQUM1RixJQUFJLE9BQU8sV0FBVyxLQUFLLFFBQVEsSUFBSSxXQUFXLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO1FBQzlELE1BQU0sSUFBSSxLQUFLLENBQUMsc0NBQXNDLFNBQVMsSUFBSSxXQUFXLDZCQUE2QixDQUFDLENBQUE7SUFDOUcsQ0FBQztJQUVELElBQUksQ0FBQyxrQ0FBa0MsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQztRQUMxRCxNQUFNLElBQUksS0FBSyxDQUFDLHNDQUFzQyxTQUFTLElBQUksV0FBVyxNQUFNLFdBQVcsR0FBRyxDQUFDLENBQUE7SUFDckcsQ0FBQztJQUVELE9BQU8sV0FBVyxDQUFBO0FBQ3BCLENBQUM7QUFFRDs7Ozs7O0dBTUc7QUFDSCxNQUFNLFVBQVUsaUNBQWlDLENBQUMsRUFBQyxZQUFZLEVBQUUsU0FBUyxFQUFDO0lBQ3pFLElBQUksT0FBTyxZQUFZLEtBQUssUUFBUSxJQUFJLFlBQVksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7UUFDaEUsTUFBTSxJQUFJLEtBQUssQ0FBQyw0Q0FBNEMsU0FBUyw2QkFBNkIsQ0FBQyxDQUFBO0lBQ3JHLENBQUM7SUFFRCxJQUFJLFlBQVksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLElBQUksWUFBWSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO1FBQzdELE1BQU0sSUFBSSxLQUFLLENBQUMsNENBQTRDLFNBQVMsTUFBTSxZQUFZLEdBQUcsQ0FBQyxDQUFBO0lBQzdGLENBQUM7SUFFRCxNQUFNLGNBQWMsR0FBRyxZQUFZLENBQUMsT0FBTyxDQUFDLFlBQVksRUFBRSxFQUFFLENBQUMsQ0FBQTtJQUU3RCxJQUFJLGNBQWMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7UUFDOUIsTUFBTSxJQUFJLEtBQUssQ0FBQyw0Q0FBNEMsU0FBUyxNQUFNLFlBQVksR0FBRyxDQUFDLENBQUE7SUFDN0YsQ0FBQztJQUVELE1BQU0sWUFBWSxHQUFHLGNBQWMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUE7SUFFOUMsS0FBSyxNQUFNLFdBQVcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUN2QyxJQUFJLENBQUMsa0NBQWtDLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUM7WUFDMUQsTUFBTSxJQUFJLEtBQUssQ0FBQyw0Q0FBNEMsU0FBUyxNQUFNLFlBQVksR0FBRyxDQUFDLENBQUE7UUFDN0YsQ0FBQztJQUNILENBQUM7SUFFRCxPQUFPLFlBQVksQ0FBQTtBQUNyQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQHRzLWNoZWNrXG5cbmNvbnN0IGZyb250ZW5kTW9kZWxTYWZlVXJsU2VnbWVudFBhdHRlcm4gPSAvXltBLVphLXowLTlfLV0rJC91XG5cbi8qKlxuICogUnVucyB0aGUgdmFsaWRhdGVGcm9udGVuZE1vZGVsUmVzb3VyY2VDb21tYW5kTmFtZSBoZWxwZXIuXG4gKiBAcGFyYW0ge29iamVjdH0gYXJncyAtIEFyZ3MuXG4gKiBAcGFyYW0ge3N0cmluZ30gYXJncy5jb21tYW5kTmFtZSAtIENvbW1hbmQgbmFtZSBjYW5kaWRhdGUuXG4gKiBAcGFyYW0ge3N0cmluZ30gYXJncy5tb2RlbE5hbWUgLSBNb2RlbCBjbGFzcyBuYW1lLlxuICogQHBhcmFtIHtzdHJpbmd9IGFyZ3MuY29tbWFuZFR5cGUgLSBDb21tYW5kIHR5cGUga2V5LlxuICogQHJldHVybnMge3N0cmluZ30gLSBWYWxpZGF0ZWQgY29tbWFuZCBuYW1lLlxuICovXG5leHBvcnQgZnVuY3Rpb24gdmFsaWRhdGVGcm9udGVuZE1vZGVsUmVzb3VyY2VDb21tYW5kTmFtZSh7Y29tbWFuZE5hbWUsIG1vZGVsTmFtZSwgY29tbWFuZFR5cGV9KSB7XG4gIGlmICh0eXBlb2YgY29tbWFuZE5hbWUgIT09IFwic3RyaW5nXCIgfHwgY29tbWFuZE5hbWUubGVuZ3RoIDwgMSkge1xuICAgIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCBmcm9udGVuZCBtb2RlbCBjb21tYW5kIGZvciAke21vZGVsTmFtZX0uJHtjb21tYW5kVHlwZX06IGV4cGVjdGVkIG5vbi1lbXB0eSBzdHJpbmdgKVxuICB9XG5cbiAgaWYgKCFmcm9udGVuZE1vZGVsU2FmZVVybFNlZ21lbnRQYXR0ZXJuLnRlc3QoY29tbWFuZE5hbWUpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIGZyb250ZW5kIG1vZGVsIGNvbW1hbmQgZm9yICR7bW9kZWxOYW1lfS4ke2NvbW1hbmRUeXBlfTogXCIke2NvbW1hbmROYW1lfVwiYClcbiAgfVxuXG4gIHJldHVybiBjb21tYW5kTmFtZVxufVxuXG4vKipcbiAqIFJ1bnMgdGhlIHZhbGlkYXRlRnJvbnRlbmRNb2RlbFJlc291cmNlUGF0aCBoZWxwZXIuXG4gKiBAcGFyYW0ge29iamVjdH0gYXJncyAtIEFyZ3MuXG4gKiBAcGFyYW0ge3N0cmluZ30gYXJncy5yZXNvdXJjZVBhdGggLSBSZXNvdXJjZSBwYXRoIGNhbmRpZGF0ZS5cbiAqIEBwYXJhbSB7c3RyaW5nfSBhcmdzLm1vZGVsTmFtZSAtIE1vZGVsIGNsYXNzIG5hbWUuXG4gKiBAcmV0dXJucyB7c3RyaW5nfSAtIFZhbGlkYXRlZCByZXNvdXJjZSBwYXRoLlxuICovXG5leHBvcnQgZnVuY3Rpb24gdmFsaWRhdGVGcm9udGVuZE1vZGVsUmVzb3VyY2VQYXRoKHtyZXNvdXJjZVBhdGgsIG1vZGVsTmFtZX0pIHtcbiAgaWYgKHR5cGVvZiByZXNvdXJjZVBhdGggIT09IFwic3RyaW5nXCIgfHwgcmVzb3VyY2VQYXRoLmxlbmd0aCA8IDEpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgZnJvbnRlbmQgbW9kZWwgcmVzb3VyY2UgcGF0aCBmb3IgJHttb2RlbE5hbWV9OiBleHBlY3RlZCBub24tZW1wdHkgc3RyaW5nYClcbiAgfVxuXG4gIGlmIChyZXNvdXJjZVBhdGguaW5jbHVkZXMoXCI/XCIpIHx8IHJlc291cmNlUGF0aC5pbmNsdWRlcyhcIiNcIikpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgZnJvbnRlbmQgbW9kZWwgcmVzb3VyY2UgcGF0aCBmb3IgJHttb2RlbE5hbWV9OiBcIiR7cmVzb3VyY2VQYXRofVwiYClcbiAgfVxuXG4gIGNvbnN0IG5vcm1hbGl6ZWRQYXRoID0gcmVzb3VyY2VQYXRoLnJlcGxhY2UoL15cXC8rfFxcLyskL2csIFwiXCIpXG5cbiAgaWYgKG5vcm1hbGl6ZWRQYXRoLmxlbmd0aCA8IDEpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgZnJvbnRlbmQgbW9kZWwgcmVzb3VyY2UgcGF0aCBmb3IgJHttb2RlbE5hbWV9OiBcIiR7cmVzb3VyY2VQYXRofVwiYClcbiAgfVxuXG4gIGNvbnN0IHBhdGhTZWdtZW50cyA9IG5vcm1hbGl6ZWRQYXRoLnNwbGl0KFwiL1wiKVxuXG4gIGZvciAoY29uc3QgcGF0aFNlZ21lbnQgb2YgcGF0aFNlZ21lbnRzKSB7XG4gICAgaWYgKCFmcm9udGVuZE1vZGVsU2FmZVVybFNlZ21lbnRQYXR0ZXJuLnRlc3QocGF0aFNlZ21lbnQpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgZnJvbnRlbmQgbW9kZWwgcmVzb3VyY2UgcGF0aCBmb3IgJHttb2RlbE5hbWV9OiBcIiR7cmVzb3VyY2VQYXRofVwiYClcbiAgICB9XG4gIH1cblxuICByZXR1cm4gcmVzb3VyY2VQYXRoXG59XG4iXX0=
@@ -1,34 +1,40 @@
1
1
  /**
2
+ * Runs the frontendModelResourcesForBackendProject helper.
2
3
  * @param {import("../configuration-types.js").BackendProjectConfiguration} backendProject - Backend project config.
3
4
  * @returns {Record<string, typeof FrontendModelBaseResource>} - Resource definitions keyed by model name.
4
5
  */
5
6
  export function frontendModelResourcesForBackendProject(backendProject: import("../configuration-types.js").BackendProjectConfiguration): Record<string, typeof FrontendModelBaseResource>;
6
7
  /**
7
- * @param {unknown} value - Candidate resource definition.
8
+ * Runs the frontendModelResourceDefinitionIsClass helper.
9
+ * @param {?} value - Candidate resource definition.
8
10
  * @returns {value is typeof FrontendModelBaseResource} - Whether value is a resource class.
9
11
  */
10
12
  export function frontendModelResourceDefinitionIsClass(value: unknown): value is typeof FrontendModelBaseResource;
11
13
  /**
12
- * @param {unknown} resourceDefinition - Resource definition.
14
+ * Runs the frontendModelResourceClassFromDefinition helper.
15
+ * @param {?} resourceDefinition - Resource definition.
13
16
  * @returns {typeof FrontendModelBaseResource | null} - Resource class when definition is class-based.
14
17
  */
15
18
  export function frontendModelResourceClassFromDefinition(resourceDefinition: unknown): typeof FrontendModelBaseResource | null;
16
19
  /**
17
- * @param {unknown} resourceDefinition - Resource definition.
20
+ * Runs the frontendModelResourceConfigurationFromDefinition helper.
21
+ * @param {?} resourceDefinition - Resource definition.
18
22
  * @returns {import("../configuration-types.js").NormalizedFrontendModelResourceConfiguration | null} - Normalized resource configuration.
19
23
  */
20
24
  export function frontendModelResourceConfigurationFromDefinition(resourceDefinition: unknown): import("../configuration-types.js").NormalizedFrontendModelResourceConfiguration | null;
21
25
  /**
26
+ * Runs the frontendModelResourcePath helper.
22
27
  * @param {string} modelName - Model class name.
23
- * @param {unknown} resourceDefinition - Resource definition.
28
+ * @param {?} resourceDefinition - Resource definition.
24
29
  * @returns {string} - Normalized resource path.
25
30
  */
26
31
  export function frontendModelResourcePath(modelName: string, resourceDefinition: unknown): string;
27
32
  /**
33
+ * Runs the frontendModelActionForCommand helper.
28
34
  * @param {object} args - Arguments.
29
35
  * @param {string} args.commandName - Command path segment.
30
36
  * @param {string} args.modelName - Model class name.
31
- * @param {unknown} args.resourceDefinition - Resource definition.
37
+ * @param {?} args.resourceDefinition - Resource definition.
32
38
  * @returns {"destroy" | "find" | "index" | "create" | "update" | "attach" | "download" | "url" | null} - Frontend action.
33
39
  */
34
40
  export function frontendModelActionForCommand({ commandName, modelName, resourceDefinition }: {
@@ -37,6 +43,7 @@ export function frontendModelActionForCommand({ commandName, modelName, resource
37
43
  resourceDefinition: unknown;
38
44
  }): "destroy" | "find" | "index" | "create" | "update" | "attach" | "download" | "url" | null;
39
45
  /**
46
+ * Runs the frontendModelCustomCommandForPath helper.
40
47
  * @param {object} args - Arguments.
41
48
  * @param {import("../configuration-types.js").BackendProjectConfiguration[]} args.backendProjects - Backend projects to scan.
42
49
  * @param {string} args.currentPath - Request path without query.
@@ -1 +1 @@
1
- {"version":3,"file":"resource-definition.d.ts","sourceRoot":"","sources":["../../../src/frontend-models/resource-definition.js"],"names":[],"mappings":"AAOA;;;GAGG;AACH,wEAHW,OAAO,2BAA2B,EAAE,2BAA2B,GAC7D,MAAM,CAAC,MAAM,EAAE,OAAO,yBAAyB,CAAC,CAc5D;AAED;;;GAGG;AACH,8DAHW,OAAO,GACL,KAAK,IAAI,OAAO,yBAAyB,CAIrD;AAED;;;GAGG;AACH,6EAHW,OAAO,GACL,OAAO,yBAAyB,GAAG,IAAI,CAInD;AAED;;;GAGG;AACH,qFAHW,OAAO,GACL,OAAO,2BAA2B,EAAE,4CAA4C,GAAG,IAAI,CAMnG;AAkMD;;;;GAIG;AACH,qDAJW,MAAM,sBACN,OAAO,GACL,MAAM,CAUlB;AAED;;;;;;GAMG;AACH,8FALG;IAAqB,WAAW,EAAxB,MAAM;IACO,SAAS,EAAtB,MAAM;IACQ,kBAAkB,EAAhC,OAAO;CACf,GAAU,SAAS,GAAG,MAAM,GAAG,OAAO,GAAG,QAAQ,GAAG,QAAQ,GAAG,QAAQ,GAAG,UAAU,GAAG,KAAK,GAAG,IAAI,CA2BrG;AAED;;;;;GAKG;AACH,oFAJG;IAAgF,eAAe,EAAvF,OAAO,2BAA2B,EAAE,2BAA2B,EAAE;IACpD,WAAW,EAAxB,MAAM;CACd,GAAU;IAAC,WAAW,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,YAAY,GAAG,QAAQ,CAAA;CAAC,GAAG,IAAI,CA8DxJ;sCAnWqC,6CAA6C"}
1
+ {"version":3,"file":"resource-definition.d.ts","sourceRoot":"","sources":["../../../src/frontend-models/resource-definition.js"],"names":[],"mappings":"AAOA;;;;GAIG;AACH,wEAHW,OAAO,2BAA2B,EAAE,2BAA2B,GAC7D,MAAM,CAAC,MAAM,EAAE,OAAO,yBAAyB,CAAC,CAc5D;AAED;;;;GAIG;AACH,8DAHW,OAAC,GACC,KAAK,IAAI,OAAO,yBAAyB,CAIrD;AAED;;;;GAIG;AACH,6EAHW,OAAC,GACC,OAAO,yBAAyB,GAAG,IAAI,CAInD;AAED;;;;GAIG;AACH,qFAHW,OAAC,GACC,OAAO,2BAA2B,EAAE,4CAA4C,GAAG,IAAI,CAMnG;AAkND;;;;;GAKG;AACH,qDAJW,MAAM,sBACN,OAAC,GACC,MAAM,CAUlB;AAED;;;;;;;GAOG;AACH,8FALG;IAAqB,WAAW,EAAxB,MAAM;IACO,SAAS,EAAtB,MAAM;IACE,kBAAkB,EAA1B,OAAC;CACT,GAAU,SAAS,GAAG,MAAM,GAAG,OAAO,GAAG,QAAQ,GAAG,QAAQ,GAAG,QAAQ,GAAG,UAAU,GAAG,KAAK,GAAG,IAAI,CA6BrG;AAED;;;;;;GAMG;AACH,oFAJG;IAAgF,eAAe,EAAvF,OAAO,2BAA2B,EAAE,2BAA2B,EAAE;IACpD,WAAW,EAAxB,MAAM;CACd,GAAU;IAAC,WAAW,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,YAAY,GAAG,QAAQ,CAAA;CAAC,GAAG,IAAI,CA8DxJ;sCA5XqC,6CAA6C"}
@@ -4,6 +4,7 @@ import FrontendModelBaseResource from "../frontend-model-resource/base-resource.
4
4
  import restArgsError from "../utils/rest-args-error.js";
5
5
  import { validateFrontendModelResourceCommandName } from "./resource-config-validation.js";
6
6
  /**
7
+ * Runs the frontendModelResourcesForBackendProject helper.
7
8
  * @param {import("../configuration-types.js").BackendProjectConfiguration} backendProject - Backend project config.
8
9
  * @returns {Record<string, typeof FrontendModelBaseResource>} - Resource definitions keyed by model name.
9
10
  */
@@ -18,21 +19,24 @@ export function frontendModelResourcesForBackendProject(backendProject) {
18
19
  return {};
19
20
  }
20
21
  /**
21
- * @param {unknown} value - Candidate resource definition.
22
+ * Runs the frontendModelResourceDefinitionIsClass helper.
23
+ * @param {?} value - Candidate resource definition.
22
24
  * @returns {value is typeof FrontendModelBaseResource} - Whether value is a resource class.
23
25
  */
24
26
  export function frontendModelResourceDefinitionIsClass(value) {
25
27
  return typeof value === "function" && (value === FrontendModelBaseResource || value.prototype instanceof FrontendModelBaseResource);
26
28
  }
27
29
  /**
28
- * @param {unknown} resourceDefinition - Resource definition.
30
+ * Runs the frontendModelResourceClassFromDefinition helper.
31
+ * @param {?} resourceDefinition - Resource definition.
29
32
  * @returns {typeof FrontendModelBaseResource | null} - Resource class when definition is class-based.
30
33
  */
31
34
  export function frontendModelResourceClassFromDefinition(resourceDefinition) {
32
35
  return frontendModelResourceDefinitionIsClass(resourceDefinition) ? resourceDefinition : null;
33
36
  }
34
37
  /**
35
- * @param {unknown} resourceDefinition - Resource definition.
38
+ * Runs the frontendModelResourceConfigurationFromDefinition helper.
39
+ * @param {?} resourceDefinition - Resource definition.
36
40
  * @returns {import("../configuration-types.js").NormalizedFrontendModelResourceConfiguration | null} - Normalized resource configuration.
37
41
  */
38
42
  export function frontendModelResourceConfigurationFromDefinition(resourceDefinition) {
@@ -41,11 +45,14 @@ export function frontendModelResourceConfigurationFromDefinition(resourceDefinit
41
45
  return normalizeFrontendModelResourceConfiguration(resourceDefinition.resourceConfig());
42
46
  }
43
47
  /**
48
+ * Runs normalize frontend model resource configuration.
44
49
  * @param {import("../configuration-types.js").FrontendModelResourceConfiguration} resourceConfiguration - Raw resource configuration.
45
50
  * @returns {import("../configuration-types.js").NormalizedFrontendModelResourceConfiguration} - Normalized resource configuration.
46
51
  */
47
52
  function normalizeFrontendModelResourceConfiguration(resourceConfiguration) {
48
- const restArgs = /** @type {Record<string, any>} */ ({ ...resourceConfiguration });
53
+ const restArgs = /**
54
+ * Narrows the runtime value to the documented type.
55
+ @type {Record<string, ?>} */ ({ ...resourceConfiguration });
49
56
  for (const key of [
50
57
  "abilities",
51
58
  "attributes",
@@ -74,6 +81,7 @@ function normalizeFrontendModelResourceConfiguration(resourceConfiguration) {
74
81
  };
75
82
  }
76
83
  /**
84
+ * Runs normalize frontend model resource abilities.
77
85
  * @param {string[] | undefined} abilities - Resource abilities config (camelCase action list).
78
86
  * @returns {Record<string, string>} - Normalized abilities config.
79
87
  */
@@ -93,7 +101,9 @@ function normalizeFrontendModelResourceAbilities(abilities) {
93
101
  update: "manage"
94
102
  };
95
103
  }
96
- /** @type {Record<string, string>} */
104
+ /**
105
+ * Normalized.
106
+ @type {Record<string, string>} */
97
107
  const normalized = {};
98
108
  if (abilities.includes("create"))
99
109
  normalized.create = "create";
@@ -107,7 +117,10 @@ function normalizeFrontendModelResourceAbilities(abilities) {
107
117
  normalized.update = "update";
108
118
  return normalized;
109
119
  }
110
- /** @returns {Record<string, string>} - Default CRUD ability map. */
120
+ /**
121
+ * Runs default crud abilities.
122
+ * @returns {Record<string, string>} - Default CRUD ability map.
123
+ */
111
124
  function defaultCrudAbilities() {
112
125
  return {
113
126
  create: "create",
@@ -118,6 +131,7 @@ function defaultCrudAbilities() {
118
131
  };
119
132
  }
120
133
  /**
134
+ * Runs normalize frontend model resource commands.
121
135
  * @param {import("../configuration-types.js").FrontendModelResourceConfiguration} resourceConfiguration - Raw resource configuration.
122
136
  * @returns {{builtInCollectionCommands: Record<string, string>, builtInMemberCommands: Record<string, string>, collectionCommands: Record<string, string>, memberCommands: Record<string, string>}} - Normalized command configuration.
123
137
  */
@@ -154,6 +168,7 @@ function normalizeFrontendModelResourceCommands(resourceConfiguration) {
154
168
  };
155
169
  }
156
170
  /**
171
+ * Runs normalize frontend model built in commands.
157
172
  * @param {object} args - Arguments.
158
173
  * @param {Record<string, string>} args.commandDefaults - Built-in default command names.
159
174
  * @param {string[] | undefined} args.commandsConfig - Built-in commands config (camelCase command type list).
@@ -167,7 +182,9 @@ function normalizeFrontendModelBuiltInCommands({ commandDefaults, commandsConfig
167
182
  if (!Array.isArray(commandsConfig)) {
168
183
  throw new Error(`${modelName} configuration must use the array form. Object form is no longer supported.`);
169
184
  }
170
- /** @type {Record<string, string>} */
185
+ /**
186
+ * Normalized commands.
187
+ @type {Record<string, string>} */
171
188
  const normalizedCommands = {};
172
189
  for (const commandType of commandsConfig) {
173
190
  const defaultCommandName = commandDefaults[commandType];
@@ -183,6 +200,7 @@ function normalizeFrontendModelBuiltInCommands({ commandDefaults, commandsConfig
183
200
  return normalizedCommands;
184
201
  }
185
202
  /**
203
+ * Runs normalize frontend model custom commands.
186
204
  * @param {object} args - Arguments.
187
205
  * @param {string[] | undefined} args.commandsConfig - Custom commands config (camelCase method-name list).
188
206
  * @param {string} args.modelName - Diagnostic model name.
@@ -195,7 +213,9 @@ function normalizeFrontendModelCustomCommands({ commandsConfig, modelName }) {
195
213
  if (!Array.isArray(commandsConfig)) {
196
214
  throw new Error(`${modelName} configuration must use the array form. Object form is no longer supported.`);
197
215
  }
198
- /** @type {Record<string, string>} */
216
+ /**
217
+ * Normalized commands.
218
+ @type {Record<string, string>} */
199
219
  const normalizedCommands = {};
200
220
  for (const methodName of commandsConfig) {
201
221
  const validatedMethodName = validateFrontendModelResourceCommandName({
@@ -209,8 +229,9 @@ function normalizeFrontendModelCustomCommands({ commandsConfig, modelName }) {
209
229
  return normalizedCommands;
210
230
  }
211
231
  /**
232
+ * Runs the frontendModelResourcePath helper.
212
233
  * @param {string} modelName - Model class name.
213
- * @param {unknown} resourceDefinition - Resource definition.
234
+ * @param {?} resourceDefinition - Resource definition.
214
235
  * @returns {string} - Normalized resource path.
215
236
  */
216
237
  export function frontendModelResourcePath(modelName, resourceDefinition) {
@@ -221,10 +242,11 @@ export function frontendModelResourcePath(modelName, resourceDefinition) {
221
242
  return `/${inflection.dasherize(inflection.pluralize(inflection.underscore(modelName)))}`;
222
243
  }
223
244
  /**
245
+ * Runs the frontendModelActionForCommand helper.
224
246
  * @param {object} args - Arguments.
225
247
  * @param {string} args.commandName - Command path segment.
226
248
  * @param {string} args.modelName - Model class name.
227
- * @param {unknown} args.resourceDefinition - Resource definition.
249
+ * @param {?} args.resourceDefinition - Resource definition.
228
250
  * @returns {"destroy" | "find" | "index" | "create" | "update" | "attach" | "download" | "url" | null} - Frontend action.
229
251
  */
230
252
  export function frontendModelActionForCommand({ commandName, modelName, resourceDefinition }) {
@@ -240,16 +262,19 @@ export function frontendModelActionForCommand({ commandName, modelName, resource
240
262
  continue;
241
263
  const validatedCommandName = validateFrontendModelResourceCommandName({
242
264
  commandName: configuredCommandName,
243
- commandType: /** @type {"attach" | "create" | "destroy" | "download" | "find" | "index" | "update" | "url"} */ (action),
265
+ commandType: /**
266
+ * Narrows the runtime value to the documented type.
267
+ @type {"attach" | "create" | "destroy" | "download" | "find" | "index" | "update" | "url"} */ (action),
244
268
  modelName
245
269
  });
246
270
  if (commandName === validatedCommandName) {
247
- return /** @type {"attach" | "create" | "destroy" | "download" | "find" | "index" | "update" | "url"} */ (action);
271
+ return /** Narrows the runtime value to the documented type. @type {"attach" | "create" | "destroy" | "download" | "find" | "index" | "update" | "url"} */ (action);
248
272
  }
249
273
  }
250
274
  return null;
251
275
  }
252
276
  /**
277
+ * Runs the frontendModelCustomCommandForPath helper.
253
278
  * @param {object} args - Arguments.
254
279
  * @param {import("../configuration-types.js").BackendProjectConfiguration[]} args.backendProjects - Backend projects to scan.
255
280
  * @param {string} args.currentPath - Request path without query.
@@ -306,6 +331,7 @@ export function frontendModelCustomCommandForPath({ backendProjects, currentPath
306
331
  return null;
307
332
  }
308
333
  /**
334
+ * Runs normalize frontend model resource path for match.
309
335
  * @param {string} path - Path value.
310
336
  * @returns {string} - Normalized path with leading slash and no trailing slash.
311
337
  */
@@ -316,4 +342,4 @@ function normalizeFrontendModelResourcePathForMatch(path) {
316
342
  }
317
343
  return withLeadingSlash;
318
344
  }
319
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzb3VyY2UtZGVmaW5pdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9mcm9udGVuZC1tb2RlbHMvcmVzb3VyY2UtZGVmaW5pdGlvbi5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxZQUFZO0FBRVosT0FBTyxLQUFLLFVBQVUsTUFBTSxZQUFZLENBQUE7QUFDeEMsT0FBTyx5QkFBeUIsTUFBTSw2Q0FBNkMsQ0FBQTtBQUNuRixPQUFPLGFBQWEsTUFBTSw2QkFBNkIsQ0FBQTtBQUN2RCxPQUFPLEVBQUMsd0NBQXdDLEVBQUMsTUFBTSxpQ0FBaUMsQ0FBQTtBQUV4Rjs7O0dBR0c7QUFDSCxNQUFNLFVBQVUsdUNBQXVDLENBQUMsY0FBYztJQUNwRSxNQUFNLFNBQVMsR0FBRyxjQUFjLENBQUMsY0FBYyxDQUFBO0lBRS9DLElBQUksU0FBUyxLQUFLLFNBQVMsRUFBRSxDQUFDO1FBQzVCLElBQUksQ0FBQyxTQUFTLElBQUksT0FBTyxTQUFTLEtBQUssUUFBUSxFQUFFLENBQUM7WUFDaEQsTUFBTSxJQUFJLEtBQUssQ0FBQywyREFBMkQsU0FBUyxFQUFFLENBQUMsQ0FBQTtRQUN6RixDQUFDO1FBRUQsT0FBTyxTQUFTLENBQUE7SUFDbEIsQ0FBQztJQUVELE9BQU8sRUFBRSxDQUFBO0FBQ1gsQ0FBQztBQUVEOzs7R0FHRztBQUNILE1BQU0sVUFBVSxzQ0FBc0MsQ0FBQyxLQUFLO0lBQzFELE9BQU8sT0FBTyxLQUFLLEtBQUssVUFBVSxJQUFJLENBQUMsS0FBSyxLQUFLLHlCQUF5QixJQUFJLEtBQUssQ0FBQyxTQUFTLFlBQVkseUJBQXlCLENBQUMsQ0FBQTtBQUNySSxDQUFDO0FBRUQ7OztHQUdHO0FBQ0gsTUFBTSxVQUFVLHdDQUF3QyxDQUFDLGtCQUFrQjtJQUN6RSxPQUFPLHNDQUFzQyxDQUFDLGtCQUFrQixDQUFDLENBQUMsQ0FBQyxDQUFDLGtCQUFrQixDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUE7QUFDL0Ys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SSxvQkFBb0IsRUFBRSxDQUFDO29CQUN6QixPQUFPO3dCQUNMLFdBQVcsRUFBRSxvQkFBb0IsQ0FBQyxDQUFDLENBQUM7d0JBQ3BDLFFBQVEsRUFBRSxrQkFBa0IsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUM7d0JBQzdDLFVBQVUsRUFBRSxvQkFBb0IsQ0FBQyxDQUFDLENBQUM7d0JBQ25DLFNBQVM7d0JBQ1QsWUFBWTt3QkFDWixLQUFLLEVBQUUsUUFBUTtxQkFDaEIsQ0FBQTtnQkFDSCxDQUFDO1lBQ0gsQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDO0lBRUQsT0FBTyxJQUFJLENBQUE7QUFDYixDQUFDO0FBRUQ7OztHQUdHO0FBQ0gsU0FBUywwQ0FBMEMsQ0FBQyxJQUFJO0lBQ3RELE1BQU0sZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksRUFBRSxDQUFBO0lBRWpFLElBQUksZ0JBQWdCLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO1FBQ2hDLE9BQU8sZ0JBQWdCLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsQ0FBQTtJQUM3QyxDQUFDO0lBRUQsT0FBTyxnQkFBZ0IsQ0FBQTtBQUN6QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQHRzLWNoZWNrXG5cbmltcG9ydCAqIGFzIGluZmxlY3Rpb24gZnJvbSBcImluZmxlY3Rpb25cIlxuaW1wb3J0IEZyb250ZW5kTW9kZWxCYXNlUmVzb3VyY2UgZnJvbSBcIi4uL2Zyb250ZW5kLW1vZGVsLXJlc291cmNlL2Jhc2UtcmVzb3VyY2UuanNcIlxuaW1wb3J0IHJlc3RBcmdzRXJyb3IgZnJvbSBcIi4uL3V0aWxzL3Jlc3QtYXJncy1lcnJvci5qc1wiXG5pbXBvcnQge3ZhbGlkYXRlRnJvbnRlbmRNb2RlbFJlc291cmNlQ29tbWFuZE5hbWV9IGZyb20gXCIuL3Jlc291cmNlLWNvbmZpZy12YWxpZGF0aW9uLmpzXCJcblxuLyoqXG4gKiBAcGFyYW0ge2ltcG9ydChcIi4uL2NvbmZpZ3VyYXRpb24tdHlwZXMuanNcIikuQmFja2VuZFByb2plY3RDb25maWd1cmF0aW9ufSBiYWNrZW5kUHJvamVjdCAtIEJhY2tlbmQgcHJvamVjdCBjb25maWcuXG4gKiBAcmV0dXJucyB7UmVjb3JkPHN0cmluZywgdHlwZW9mIEZyb250ZW5kTW9kZWxCYXNlUmVzb3VyY2U+fSAtIFJlc291cmNlIGRlZmluaXRpb25zIGtleWVkIGJ5IG1vZGVsIG5hbWUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmcm9udGVuZE1vZGVsUmVzb3VyY2VzRm9yQmFja2VuZFByb2plY3QoYmFja2VuZFByb2plY3QpIHtcbiAgY29uc3QgcmVzb3VyY2VzID0gYmFja2VuZFByb2plY3QuZnJvbnRlbmRNb2RlbHNcblxuICBpZiAocmVzb3VyY2VzICE9PSB1bmRlZmluZWQpIHtcbiAgICBpZiAoIXJlc291cmNlcyB8fCB0eXBlb2YgcmVzb3VyY2VzICE9PSBcIm9iamVjdFwiKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYEV4cGVjdGVkIGJhY2tlbmQgcHJvamVjdCBmcm9udGVuZE1vZGVscyBvYmplY3QgYnV0IGdvdDogJHtyZXNvdXJjZXN9YClcbiAgICB9XG5cbiAgICByZXR1cm4gcmVzb3VyY2VzXG4gIH1cblxuICByZXR1cm4ge31cbn1cblxuLyoqXG4gKiBAcGFyYW0ge3Vua25vd259IHZhbHVlIC0gQ2FuZGlkYXRlIHJlc291cmNlIGRlZmluaXRpb24uXG4gKiBAcmV0dXJucyB7dmFsdWUgaXMgdHlwZW9mIEZyb250ZW5kTW9kZWxCYXNlUmVzb3VyY2V9IC0gV2hldGhlciB2YWx1ZSBpcyBhIHJlc291cmNlIGNsYXNzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZnJvbnRlbmRNb2RlbFJlc291cmNlRGVmaW5pdGlvbklzQ2xhc3ModmFsdWUpIHtcbiAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PT0gXCJmdW5jdGlvblwiICYmICh2YWx1ZSA9PT0gRnJvbnRlbmRNb2RlbEJhc2VSZXNvdXJjZSB8fCB2YWx1ZS5wcm90b3R5cGUgaW5zdGFuY2VvZiBGcm9udGVuZE1vZGVsQmFzZVJlc291cmNlKVxufVxuXG4vKipcbiAqIEBwYXJhbSB7dW5rbm93bn0gcmVzb3VyY2VEZWZpbml0aW9uIC0gUmVzb3VyY2UgZGVmaW5pdGlvbi5cbiAqIEByZXR1cm5zIHt0eXBlb2YgRnJvbnRlbmRNb2RlbEJhc2VSZXNvdXJjZSB8IG51bGx9IC0gUmVzb3VyY2UgY2xhc3Mgd2hlbiBkZWZpbml0aW9uIGlzIGNsYXNzLWJhc2VkLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZnJvbnRlbmRNb2RlbFJlc291cmNlQ2xhc3NGcm9tRGVmaW5pdGlvbihyZXNvdXJjZURlZmluaXRpb24pIHtcbiAgcmV0dXJuIGZyb250ZW5kTW9kZWxSZXNvdXJjZURlZmluaXRpb25Jc0NsYXNzKHJlc291cmNlRGVmaW5pdGlvbikgPyByZXNvdXJjZURlZmluaXRpb24gOiBudWxsXG59XG5cbi8qKlxuICogQHBhcmFtIHt1bmtub3dufSByZXNvdXJjZURlZmluaXRpb24gLSBSZXNvdXJjZSBkZWZpbml0aW9uLlxuICogQHJldHVybnMge2ltcG9ydChcIi4uL2NvbmZpZ3VyYXRpb24tdHlwZXMuanNcIikuTm9ybWFsaXplZEZyb250ZW5kTW9kZWxSZXNvdXJjZUNvbmZpZ3VyYXRpb24gfCBudWxsfSAtIE5vcm1hbGl6ZWQgcmVzb3VyY2UgY29uZmlndXJhdGlvbi5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGZyb250ZW5kTW9kZWxSZXNvdXJjZUNvbmZpZ3VyYXRpb25Gcm9tRGVmaW5pdGlvbihyZXNvdXJjZURlZmluaXRpb24pIHtcbiAgaWYgKCFmcm9udGVuZE1vZGVsUmVzb3VyY2VEZWZpbml0aW9uSXNDbGFzcyhyZXNvdXJjZURlZmluaXRpb24pKSByZXR1cm4gbnVsbFxuXG4gIHJldHVybiBub3JtYWxpemVGcm9udGVuZE1vZGVsUmVzb3VyY2VDb25maWd1cmF0aW9uKHJlc291cmNlRGVmaW5pdGlvbi5yZXNvdXJjZUNvbmZpZygpKVxufVxuXG4vKipcbiAqIEBwYXJhbSB7aW1wb3J0KFwiLi4vY29uZmlndXJhdGlvbi10eXBlcy5qc1wiKS5Gcm9udGVuZE1vZGVsUmVzb3VyY2VDb25maWd1cmF0aW9ufSByZXNvdXJjZUNvbmZpZ3VyYXRpb24gLSBSYXcgcmVzb3VyY2UgY29uZmlndXJhdGlvbi5cbiAqIEByZXR1cm5zIHtpbXBvcnQoXCIuLi9jb25maWd1cmF0aW9uLXR5cGVzLmpzXCIpLk5vcm1hbGl6ZWRGcm9udGVuZE1vZGVsUmVzb3VyY2VDb25maWd1cmF0aW9ufSAtIE5vcm1hbGl6ZWQgcmVzb3VyY2UgY29uZmlndXJhdGlvbi5cbiAqL1xuZnVuY3Rpb24gbm9ybWFsaXplRnJvbnRlbmRNb2RlbFJlc291cmNlQ29uZmlndXJhdGlvbihyZXNvdXJjZUNvbmZpZ3VyYXRpb24pIHtcbiAgY29uc3QgcmVzdEFyZ3MgPSAvKiogQHR5cGUge1JlY29yZDxzdHJpbmcsIGFueT59ICovICh7Li4ucmVzb3VyY2VDb25maWd1cmF0aW9ufSlcblxuICBmb3IgKGNvbnN0IGtleSBvZiBbXG4gICAgXCJhYmlsaXRpZXNcIixcbiAgICBcImF0dHJpYnV0ZXNcIixcbiAgICBcImF0dGFjaG1lbnRzXCIsXG4gICAgXCJidWlsdEluQ29sbGVjdGlvbkNvbW1hbmRzXCIsXG4gICAgXCJidWlsdEluTWVtYmVyQ29tbWFuZHNcIixcbiAgICBcImNvbGxlY3Rpb25Db21tYW5kc1wiLFxuICAgIFwiY29tbWFuZHNcIixcbiAgICBcIm1lbWJlckNvbW1hbmRzXCIsXG4gICAgXCJtb2RlbE5hbWVcIixcbiAgICBcInByaW1hcnlLZXlcIixcbiAgICBcInJlbGF0aW9uc2hpcHNcIixcbiAgICBcInNlcnZlclwiXG4gIF0pIHtcbiAgICBkZWxldGUgcmVzdEFyZ3Nba2V5XVxuICB9XG5cbiAgcmVzdEFyZ3NFcnJvcihyZXN0QXJncylcblxuICBjb25zdCBub3JtYWxpemVkQ29tbWFuZHMgPSBub3JtYWxpemVGcm9udGVuZE1vZGVsUmVzb3VyY2VDb21tYW5kcyhyZXNvdXJjZUNvbmZpZ3VyYXRpb24pXG5cbiAgcmV0dXJuIHtcbiAgICAuLi5yZXNvdXJjZUNvbmZpZ3VyYXRpb24sXG4gICAgYWJpbGl0aWVzOiBub3JtYWxpemVGcm9udGVuZE1vZGVsUmVzb3VyY2VBYmlsaXRpZXMocmVzb3VyY2VDb25maWd1cmF0aW9uLmFiaWxpdGllcyksXG4gICAgYnVpbHRJbkNvbGxlY3Rpb25Db21tYW5kczogbm9ybWFsaXplZENvbW1hbmRzLmJ1aWx0SW5Db2xsZWN0aW9uQ29tbWFuZHMsXG4gICAgYnVpbHRJbk1lbWJlckNvbW1hbmRzOiBub3JtYWxpemVkQ29tbWFuZHMuYnVpbHRJbk1lbWJlckNvbW1hbmRzLFxuICAgIGNvbGxlY3Rpb25Db21tYW5kczogbm9ybWFsaXplZENvbW1hbmRzLmNvbGxlY3Rpb25Db21tYW5kcyxcbiAgICBtZW1iZXJDb21tYW5kczogbm9ybWFsaXplZENvbW1hbmRzLm1lbWJlckNvbW1hbmRzXG4gIH1cbn1cblxuLyoqXG4gKiBAcGFyYW0ge3N0cmluZ1tdIHwgdW5kZWZpbmVkfSBhYmlsaXRpZXMgLSBSZXNvdXJjZSBhYmlsaXRpZXMgY29uZmlnIChjYW1lbENhc2UgYWN0aW9uIGxpc3QpLlxuICogQHJldHVybnMge1JlY29yZDxzdHJpbmcsIHN0cmluZz59IC0gTm9ybWFsaXplZCBhYmlsaXRpZXMgY29uZmlnLlxuICovXG5mdW5jdGlvbiBub3JtYWxpemVGcm9udGVuZE1vZGVsUmVzb3VyY2VBYmlsaXRpZXMoYWJpbGl0aWVzKSB7XG4gIGlmIChhYmlsaXRpZXMgPT09IHVuZGVmaW5lZCkge1xuICAgIHJldHVybiBkZWZhdWx0Q3J1ZEFiaWxpdGllcygpXG4gIH1cblxuICBpZiAoIUFycmF5LmlzQXJyYXkoYWJpbGl0aWVzKSkge1xuICAgIHRocm93IG5ldyBFcnJvcihcIlJlc291cmNlIGFiaWxpdGllcyBtdXN0IGJlIGFuIGFycmF5IG9mIGFjdGlvbiBuYW1lcy4gT2JqZWN0IGZvcm0gaXMgbm8gbG9uZ2VyIHN1cHBvcnRlZC5cIilcbiAgfVxuXG4gIGlmIChhYmlsaXRpZXMuaW5jbHVkZXMoXCJtYW5hZ2VcIikpIHtcbiAgICByZXR1cm4ge1xuICAgICAgY3JlYXRlOiBcIm1hbmFnZVwiLFxuICAgICAgZGVzdHJveTogXCJtYW5hZ2VcIixcbiAgICAgIGZpbmQ6IFwibWFuYWdlXCIsXG4gICAgICBpbmRleDogXCJtYW5hZ2VcIixcbiAgICAgIHVwZGF0ZTogXCJtYW5hZ2VcIlxuICAgIH1cbiAgfVxuXG4gIC8qKiBAdHlwZSB7UmVjb3JkPHN0cmluZywgc3RyaW5nPn0gKi9cbiAgY29uc3Qgbm9ybWFsaXplZCA9IHt9XG5cbiAgaWYgKGFiaWxpdGllcy5pbmNsdWRlcyhcImNyZWF0ZVwiKSkgbm9ybWFsaXplZC5jcmVhdGUgPSBcImNyZWF0ZVwiXG4gIGlmIChhYmlsaXRpZXMuaW5jbHVkZXMoXCJkZXN0cm95XCIpKSBub3JtYWxpemVkLmRlc3Ryb3kgPSBcImRlc3Ryb3lcIlxuICBpZiAoYWJpbGl0aWVzLmluY2x1ZGVzKFwicmVhZFwiKSkge1xuICAgIG5vcm1hbGl6ZWQuZmluZCA9IFwicmVhZFwiXG4gICAgbm9ybWFsaXplZC5pbmRleCA9IFwicmVhZFwiXG4gIH1cbiAgaWYgKGFiaWxpdGllcy5pbmNsdWRlcyhcInVwZGF0ZVwiKSkgbm9ybWFsaXplZC51cGRhdGUgPSBcInVwZGF0ZVwiXG5cbiAgcmV0dXJuIG5vcm1hbGl6ZWRcbn1cblxuLyoqIEByZXR1cm5zIHtSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+fSAtIERlZmF1bHQgQ1JVRCBhYmlsaXR5IG1hcC4gKi9cbmZ1bmN0aW9uIGRlZmF1bHRDcnVkQWJpbGl0aWVzKCkge1xuICByZXR1cm4ge1xuICAgIGNyZWF0ZTogXCJjcmVhdGVcIixcbiAgICBkZXN0cm95OiBcImRlc3Ryb3lcIixcbiAgICBmaW5kOiBcInJlYWRcIixcbiAgICBpbmRleDogXCJyZWFkXCIsXG4gICAgdXBkYXRlOiBcInVwZGF0ZVwiXG4gIH1cbn1cblxuLyoqXG4gKiBAcGFyYW0ge2ltcG9ydChcIi4uL2NvbmZpZ3VyYXRpb24tdHlwZXMuanNcIikuRnJvbnRlbmRNb2RlbFJlc291cmNlQ29uZmlndXJhdGlvbn0gcmVzb3VyY2VDb25maWd1cmF0aW9uIC0gUmF3IHJlc291cmNlIGNvbmZpZ3VyYXRpb24uXG4gKiBAcmV0dXJucyB7e2J1aWx0SW5Db2xsZWN0aW9uQ29tbWFuZHM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4sIGJ1aWx0SW5NZW1iZXJDb21tYW5kczogUmVjb3JkPHN0cmluZywgc3RyaW5nPiwgY29sbGVjdGlvbkNvbW1hbmRzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+LCBtZW1iZXJDb21tYW5kczogUmVjb3JkPHN0cmluZywgc3RyaW5nPn19IC0gTm9ybWFsaXplZCBjb21tYW5kIGNvbmZpZ3VyYXRpb24uXG4gKi9cbmZ1bmN0aW9uIG5vcm1hbGl6ZUZyb250ZW5kTW9kZWxSZXNvdXJjZUNvbW1hbmRzKHJlc291cmNlQ29uZmlndXJhdGlvbikge1xuICBjb25zdCBidWlsdEluQ29sbGVjdGlvbkNvbW1hbmRzID0gcmVzb3VyY2VDb25maWd1cmF0aW9uLmJ1aWx0SW5Db2xsZWN0aW9uQ29tbWFuZHNcbiAgY29uc3QgYnVpbHRJbk1lbWJlckNvbW1hbmRzID0gcmVzb3VyY2VDb25maWd1cmF0aW9uLmJ1aWx0SW5NZW1iZXJDb21tYW5kc1xuICBjb25zdCBjdXN0b21Db2xsZWN0aW9uQ29tbWFuZHMgPSByZXNvdXJjZUNvbmZpZ3VyYXRpb24uY29sbGVjdGlvbkNvbW1hbmRzXG4gIGNvbnN0IGN1c3RvbU1lbWJlckNvbW1hbmRzID0gcmVzb3VyY2VDb25maWd1cmF0aW9uLm1lbWJlckNvbW1hbmRzXG4gIGNvbnN0IG5vcm1hbGl6ZWRCdWlsdEluQ29sbGVjdGlvbkNvbW1hbmRzID0gbm9ybWFsaXplRnJvbnRlbmRNb2RlbEJ1aWx0SW5Db21tYW5kcyh7XG4gICAgY29tbWFuZERlZmF1bHRzOiB7XG4gICAgICBjcmVhdGU6IFwiY3JlYXRlXCIsXG4gICAgICBpbmRleDogXCJpbmRleFwiXG4gICAgfSxcbiAgICBjb21tYW5kc0NvbmZpZzogYnVpbHRJbkNvbGxlY3Rpb25Db21tYW5kcyxcbiAgICBtb2RlbE5hbWU6IFwiQ29sbGVjdGlvbkNvbW1hbmRcIlxuICB9KVxuICBjb25zdCBub3JtYWxpemVkQnVpbHRJbk1lbWJlckNvbW1hbmRzID0gbm9ybWFsaXplRnJvbnRlbmRNb2RlbEJ1aWx0SW5Db21tYW5kcyh7XG4gICAgY29tbWFuZERlZmF1bHRzOiB7XG4gICAgICBhdHRhY2g6IFwiYXR0YWNoXCIsXG4gICAgICBkZXN0cm95OiBcImRlc3Ryb3lcIixcbiAgICAgIGRvd25sb2FkOiBcImRvd25sb2FkXCIsXG4gICAgICBmaW5kOiBcImZpbmRcIixcbiAgICAgIHVwZGF0ZTogXCJ1cGRhdGVcIixcbiAgICAgIHVybDogXCJ1cmxcIlxuICAgIH0sXG4gICAgY29tbWFuZHNDb25maWc6IGJ1aWx0SW5NZW1iZXJDb21tYW5kcyxcbiAgICBtb2RlbE5hbWU6IFwiTWVtYmVyQ29tbWFuZFwiXG4gIH0pXG5cbiAgcmV0dXJuIHtcbiAgICBidWlsdEluQ29sbGVjdGlvbkNvbW1hbmRzOiBub3JtYWxpemVkQnVpbHRJbkNvbGxlY3Rpb25Db21tYW5kcyxcbiAgICBidWlsdEluTWVtYmVyQ29tbWFuZHM6IG5vcm1hbGl6ZWRCdWlsdEluTWVtYmVyQ29tbWFuZHMsXG4gICAgY29sbGVjdGlvbkNvbW1hbmRzOiBub3JtYWxpemVGcm9udGVuZE1vZGVsQ3VzdG9tQ29tbWFuZHMoe2NvbW1hbmRzQ29uZmlnOiBjdXN0b21Db2xsZWN0aW9uQ29tbWFuZHMsIG1vZGVsTmFtZTogXCJDb2xsZWN0aW9uQ29tbWFuZFwifSksXG4gICAgbWVtYmVyQ29tbWFuZHM6IG5vcm1hbGl6ZUZyb250ZW5kTW9kZWxDdXN0b21Db21tYW5kcyh7Y29tbWFuZHNDb25maWc6IGN1c3RvbU1lbWJlckNvbW1hbmRzLCBtb2RlbE5hbWU6IFwiTWVtYmVyQ29tbWFuZFwifSlcbiAgfVxufVxuXG4vKipcbiAqIEBwYXJhbSB7b2JqZWN0fSBhcmdzIC0gQXJndW1lbnRzLlxuICogQHBhcmFtIHtSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+fSBhcmdzLmNvbW1hbmREZWZhdWx0cyAtIEJ1aWx0LWluIGRlZmF1bHQgY29tbWFuZCBuYW1lcy5cbiAqIEBwYXJhbSB7c3RyaW5nW10gfCB1bmRlZmluZWR9IGFyZ3MuY29tbWFuZHNDb25maWcgLSBCdWlsdC1pbiBjb21tYW5kcyBjb25maWcgKGNhbWVsQ2FzZSBjb21tYW5kIHR5cGUgbGlzdCkuXG4gKiBAcGFyYW0ge3N0cmluZ30gYXJncy5tb2RlbE5hbWUgLSBEaWFnbm9zdGljIG1vZGVsIG5hbWUuXG4gKiBAcmV0dXJucyB7UmVjb3JkPHN0cmluZywgc3RyaW5nPn0gLSBOb3JtYWxpemVkIGJ1aWx0LWluIGNvbW1hbmQgY29uZmlnLlxuICovXG5mdW5jdGlvbiBub3JtYWxpemVGcm9udGVuZE1vZGVsQnVpbHRJbkNvbW1hbmRzKHtjb21tYW5kRGVmYXVsdHMsIGNvbW1hbmRzQ29uZmlnLCBtb2RlbE5hbWV9KSB7XG4gIGlmICghY29tbWFuZHNDb25maWcpIHtcbiAgICByZXR1cm4gY29tbWFuZERlZmF1bHRzXG4gIH1cblxuICBpZiAoIUFycmF5LmlzQXJyYXkoY29tbWFuZHNDb25maWcpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGAke21vZGVsTmFtZX0gY29uZmlndXJhdGlvbiBtdXN0IHVzZSB0aGUgYXJyYXkgZm9ybS4gT2JqZWN0IGZvcm0gaXMgbm8gbG9uZ2VyIHN1cHBvcnRlZC5gKVxuICB9XG5cbiAgLyoqIEB0eXBlIHtSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+fSAqL1xuICBjb25zdCBub3JtYWxpemVkQ29tbWFuZHMgPSB7fVxuXG4gIGZvciAoY29uc3QgY29tbWFuZFR5cGUgb2YgY29tbWFuZHNDb25maWcpIHtcbiAgICBjb25zdCBkZWZhdWx0Q29tbWFuZE5hbWUgPSBjb21tYW5kRGVmYXVsdHNbY29tbWFuZFR5cGVdXG5cbiAgICBpZiAoIWRlZmF1bHRDb21tYW5kTmFtZSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBVbmtub3duIGJ1aWx0LWluIGZyb250ZW5kIG1vZGVsIGNvbW1hbmQgJyR7Y29tbWFuZFR5cGV9JyBmb3IgJHttb2RlbE5hbWV9YClcbiAgICB9XG5cbiAgICBub3JtYWxpemVkQ29tbWFuZHNbY29tbWFuZFR5cGVdID0gdmFsaWRhdGVGcm9udGVuZE1vZGVsUmVzb3VyY2VDb21tYW5kTmFtZSh7XG4gICAgICBjb21tYW5kTmFtZTogZGVmYXVsdENvbW1hbmROYW1lLFxuICAgICAgY29tbWFuZFR5cGU6IGRlZmF1bHRDb21tYW5kTmFtZSxcbiAgICAgIG1vZGVsTmFtZVxuICAgIH0pXG4gIH1cblxuICByZXR1cm4gbm9ybWFsaXplZENvbW1hbmRzXG59XG5cbi8qKlxuICogQHBhcmFtIHtvYmplY3R9IGFyZ3MgLSBBcmd1bWVudHMuXG4gKiBAcGFyYW0ge3N0cmluZ1tdIHwgdW5kZWZpbmVkfSBhcmdzLmNvbW1hbmRzQ29uZmlnIC0gQ3VzdG9tIGNvbW1hbmRzIGNvbmZpZyAoY2FtZWxDYXNlIG1ldGhvZC1uYW1lIGxpc3QpLlxuICogQHBhcmFtIHtzdHJpbmd9IGFyZ3MubW9kZWxOYW1lIC0gRGlhZ25vc3RpYyBtb2RlbCBuYW1lLlxuICogQHJldHVybnMge1JlY29yZDxzdHJpbmcsIHN0cmluZz59IC0gTm9ybWFsaXplZCBjdXN0b20gY29tbWFuZCBjb25maWcgKGNhbWVsQ2FzZSBtZXRob2QgbmFtZSDihpIga2ViYWItY2FzZSBjb21tYW5kIHNsdWcpLlxuICovXG5mdW5jdGlvbiBub3JtYWxpemVGcm9udGVuZE1vZGVsQ3VzdG9tQ29tbWFuZHMoe2NvbW1hbmRzQ29uZmlnLCBtb2RlbE5hbWV9KSB7XG4gIGlmICghY29tbWFuZHNDb25maWcpIHtcbiAgICByZXR1cm4ge31cbiAgfVxuXG4gIGlmICghQXJyYXkuaXNBcnJheShjb21tYW5kc0NvbmZpZykpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYCR7bW9kZWxOYW1lfSBjb25maWd1cmF0aW9uIG11c3QgdXNlIHRoZSBhcnJheSBmb3JtLiBPYmplY3QgZm9ybSBpcyBubyBsb25nZXIgc3VwcG9ydGVkLmApXG4gIH1cblxuICAvKiogQHR5cGUge1JlY29yZDxzdHJpbmcsIHN0cmluZz59ICovXG4gIGNvbnN0IG5vcm1hbGl6ZWRDb21tYW5kcyA9IHt9XG5cbiAgZm9yIChjb25zdCBtZXRob2ROYW1lIG9mIGNvbW1hbmRzQ29uZmlnKSB7XG4gICAgY29uc3QgdmFsaWRhdGVkTWV0aG9kTmFtZSA9IHZhbGlkYXRlRnJvbnRlbmRNb2RlbFJlc291cmNlQ29tbWFuZE5hbWUoe1xuICAgICAgY29tbWFuZE5hbWU6IG1ldGhvZE5hbWUsXG4gICAgICBjb21tYW5kVHlwZTogbWV0aG9kTmFtZSxcbiAgICAgIG1vZGVsTmFtZVxuICAgIH0pXG4gICAgY29uc3QgY29tbWFuZFNsdWcgPSBpbmZsZWN0aW9uLmRhc2hlcml6ZShpbmZsZWN0aW9uLnVuZGVyc2NvcmUodmFsaWRhdGVkTWV0aG9kTmFtZSkpXG5cbiAgICBub3JtYWxpemVkQ29tbWFuZHNbdmFsaWRhdGVkTWV0aG9kTmFtZV0gPSBjb21tYW5kU2x1Z1xuICB9XG5cbiAgcmV0dXJuIG5vcm1hbGl6ZWRDb21tYW5kc1xufVxuXG4vKipcbiAqIEBwYXJhbSB7c3RyaW5nfSBtb2RlbE5hbWUgLSBNb2RlbCBjbGFzcyBuYW1lLlxuICogQHBhcmFtIHt1bmtub3dufSByZXNvdXJjZURlZmluaXRpb24gLSBSZXNvdXJjZSBkZWZpbml0aW9uLlxuICogQHJldHVybnMge3N0cmluZ30gLSBOb3JtYWxpemVkIHJlc291cmNlIHBhdGguXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmcm9udGVuZE1vZGVsUmVzb3VyY2VQYXRoKG1vZGVsTmFtZSwgcmVzb3VyY2VEZWZpbml0aW9uKSB7XG4gIGNvbnN0IHJlc291cmNlQ29uZmlndXJhdGlvbiA9IGZyb250ZW5kTW9kZWxSZXNvdXJjZUNvbmZpZ3VyYXRpb25Gcm9tRGVmaW5pdGlvbihyZXNvdXJjZURlZmluaXRpb24pXG5cbiAgaWYgKCFyZXNvdXJjZUNvbmZpZ3VyYXRpb24pIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgZnJvbnRlbmQgbW9kZWwgcmVzb3VyY2UgZGVmaW5pdGlvbiBmb3IgJHttb2RlbE5hbWV9YClcbiAgfVxuXG4gIHJldHVybiBgLyR7aW5mbGVjdGlvbi5kYXNoZXJpemUoaW5mbGVjdGlvbi5wbHVyYWxpemUoaW5mbGVjdGlvbi51bmRlcnNjb3JlKG1vZGVsTmFtZSkpKX1gXG59XG5cbi8qKlxuICogQHBhcmFtIHtvYmplY3R9IGFyZ3MgLSBBcmd1bWVudHMuXG4gKiBAcGFyYW0ge3N0cmluZ30gYXJncy5jb21tYW5kTmFtZSAtIENvbW1hbmQgcGF0aCBzZWdtZW50LlxuICogQHBhcmFtIHtzdHJpbmd9IGFyZ3MubW9kZWxOYW1lIC0gTW9kZWwgY2xhc3MgbmFtZS5cbiAqIEBwYXJhbSB7dW5rbm93bn0gYXJncy5yZXNvdXJjZURlZmluaXRpb24gLSBSZXNvdXJjZSBkZWZpbml0aW9uLlxuICogQHJldHVybnMge1wiZGVzdHJveVwiIHwgXCJmaW5kXCIgfCBcImluZGV4XCIgfCBcImNyZWF0ZVwiIHwgXCJ1cGRhdGVcIiB8IFwiYXR0YWNoXCIgfCBcImRvd25sb2FkXCIgfCBcInVybFwiIHwgbnVsbH0gLSBGcm9udGVuZCBhY3Rpb24uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmcm9udGVuZE1vZGVsQWN0aW9uRm9yQ29tbWFuZCh7Y29tbWFuZE5hbWUsIG1vZGVsTmFtZSwgcmVzb3VyY2VEZWZpbml0aW9ufSkge1xuICBjb25zdCByZXNvdXJjZUNvbmZpZ3VyYXRpb24gPSBmcm9udGVuZE1vZGVsUmVzb3VyY2VDb25maWd1cmF0aW9uRnJvbURlZmluaXRpb24ocmVzb3VyY2VEZWZpbml0aW9uKVxuXG4gIGlmICghcmVzb3VyY2VDb25maWd1cmF0aW9uKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIGZyb250ZW5kIG1vZGVsIHJlc291cmNlIGRlZmluaXRpb24gZm9yICR7bW9kZWxOYW1lfWApXG4gIH1cblxuICBmb3IgKGNvbnN0IFthY3Rpb24sIGNvbmZpZ3VyZWRDb21tYW5kTmFtZV0gb2YgT2JqZWN0LmVudHJpZXMoe1xuICAgIC4uLnJlc291cmNlQ29uZmlndXJhdGlvbi5idWlsdEluQ29sbGVjdGlvbkNvbW1hbmRzLFxuICAgIC4uLnJlc291cmNlQ29uZmlndXJhdGlvbi5idWlsdEluTWVtYmVyQ29tbWFuZHNcbiAgfSkpIHtcbiAgICBpZiAoY29uZmlndXJlZENvbW1hbmROYW1lID09PSB1bmRlZmluZWQpIGNvbnRpbnVlXG5cbiAgICBjb25zdCB2YWxpZGF0ZWRDb21tYW5kTmFtZSA9IHZhbGlkYXRlRnJvbnRlbmRNb2RlbFJlc291cmNlQ29tbWFuZE5hbWUoe1xuICAgICAgY29tbWFuZE5hbWU6IGNvbmZpZ3VyZWRDb21tYW5kTmFtZSxcbiAgICAgIGNvbW1hbmRUeXBlOiAvKiogQHR5cGUge1wiYXR0YWNoXCIgfCBcImNyZWF0ZVwiIHwgXCJkZXN0cm95XCIgfCBcImRvd25sb2FkXCIgfCBcImZpbmRcIiB8IFwiaW5kZXhcIiB8IFwidXBkYXRlXCIgfCBcInVybFwifSAqLyAoYWN0aW9uKSxcbiAgICAgIG1vZGVsTmFtZVxuICAgIH0pXG5cbiAgICBpZiAoY29tbWFuZE5hbWUgPT09IHZhbGlkYXRlZENvbW1hbmROYW1lKSB7XG4gICAgICByZXR1cm4gLyoqIEB0eXBlIHtcImF0dGFjaFwiIHwgXCJjcmVhdGVcIiB8IFwiZGVzdHJveVwiIHwgXCJkb3dubG9hZFwiIHwgXCJmaW5kXCIgfCBcImluZGV4XCIgfCBcInVwZGF0ZVwiIHwgXCJ1cmxcIn0gKi8gKGFjdGlvbilcbiAgICB9XG4gIH1cblxuICByZXR1cm4gbnVsbFxufVxuXG4vKipcbiAqIEBwYXJhbSB7b2JqZWN0fSBhcmdzIC0gQXJndW1lbnRzLlxuICogQHBhcmFtIHtpbXBvcnQoXCIuLi9jb25maWd1cmF0aW9uLXR5cGVzLmpzXCIpLkJhY2tlbmRQcm9qZWN0Q29uZmlndXJhdGlvbltdfSBhcmdzLmJhY2tlbmRQcm9qZWN0cyAtIEJhY2tlbmQgcHJvamVjdHMgdG8gc2Nhbi5cbiAqIEBwYXJhbSB7c3RyaW5nfSBhcmdzLmN1cnJlbnRQYXRoIC0gUmVxdWVzdCBwYXRoIHdpdGhvdXQgcXVlcnkuXG4gKiBAcmV0dXJucyB7e2NvbW1hbmROYW1lOiBzdHJpbmcsIG1lbWJlcklkPzogc3RyaW5nLCBtZXRob2ROYW1lOiBzdHJpbmcsIG1vZGVsTmFtZTogc3RyaW5nLCByZXNvdXJjZVBhdGg6IHN0cmluZywgc2NvcGU6IFwiY29sbGVjdGlvblwiIHwgXCJtZW1iZXJcIn0gfCBudWxsfSAtIE1hdGNoZWQgY3VzdG9tIGNvbW1hbmQgbWV0YWRhdGEuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmcm9udGVuZE1vZGVsQ3VzdG9tQ29tbWFuZEZvclBhdGgoe2JhY2tlbmRQcm9qZWN0cywgY3VycmVudFBhdGh9KSB7XG4gIGNvbnN0IG5vcm1hbGl6ZWRDdXJyZW50UGF0aCA9IG5vcm1hbGl6ZUZyb250ZW5kTW9kZWxSZXNvdXJjZVBhdGhGb3JNYXRjaChjdXJyZW50UGF0aClcblxuICBmb3IgKGNvbnN0IGJhY2tlbmRQcm9qZWN0IG9mIGJhY2tlbmRQcm9qZWN0cykge1xuICAgIGNvbnN0IHJlc291cmNlcyA9IGZyb250ZW5kTW9kZWxSZXNvdXJjZXNGb3JCYWNrZW5kUHJvamVjdChiYWNrZW5kUHJvamVjdClcblxuICAgIGZvciAoY29uc3QgbW9kZWxOYW1lIGluIHJlc291cmNlcykge1xuICAgICAgY29uc3QgcmVzb3VyY2VEZWZpbml0aW9uID0gcmVzb3VyY2VzW21vZGVsTmFtZV1cbiAgICAgIGNvbnN0IHJlc291cmNlQ29uZmlndXJhdGlvbiA9IGZyb250ZW5kTW9kZWxSZXNvdXJjZUNvbmZpZ3VyYXRpb25Gcm9tRGVmaW5pdGlvbihyZXNvdXJjZURlZmluaXRpb24pXG5cbiAgICAgIGlmICghcmVzb3VyY2VDb25maWd1cmF0aW9uKSB7XG4gICAgICAgIGNvbnRpbnVlXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHJlc291cmNlUGF0aCA9IG5vcm1hbGl6ZUZyb250ZW5kTW9kZWxSZXNvdXJjZVBhdGhGb3JNYXRjaChmcm9udGVuZE1vZGVsUmVzb3VyY2VQYXRoKG1vZGVsTmFtZSwgcmVzb3VyY2VEZWZpbml0aW9uKSlcbiAgICAgIGNvbnN0IGV4cGVjdGVkUHJlZml4ID0gYCR7cmVzb3VyY2VQYXRofS9gXG5cbiAgICAgIGlmICghbm9ybWFsaXplZEN1cnJlbnRQYXRoLnN0YXJ0c1dpdGgoZXhwZWN0ZWRQcmVmaXgpKSB7XG4gICAgICAgIGNvbnRpbnVlXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHBhdGhTZWdtZW50cyA9IG5vcm1hbGl6ZWRDdXJyZW50UGF0aFxuICAgICAgICAuc2xpY2UoZXhwZWN0ZWRQcmVmaXgubGVuZ3RoKVxuICAgICAgICAuc3BsaXQoXCIvXCIpXG4gICAgICAgIC5maWx0ZXIoQm9vbGVhbilcblxuICAgICAgaWYgKHBhdGhTZWdtZW50cy5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgY29uc3QgbWF0Y2hlZENvbGxlY3Rpb25Db21tYW5kID0gT2JqZWN0LmVudHJpZXMocmVzb3VyY2VDb25maWd1cmF0aW9uLmNvbGxlY3Rpb25Db21tYW5kcylcbiAgICAgICAgICAuZmluZCgoWywgY29tbWFuZE5hbWVdKSA9PiBjb21tYW5kTmFtZSA9PT0gcGF0aFNlZ21lbnRzWzBdKVxuXG4gICAgICAgIGlmIChtYXRjaGVkQ29sbGVjdGlvbkNvbW1hbmQpIHtcbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgY29tbWFuZE5hbWU6IG1hdGNoZWRDb2xsZWN0aW9uQ29tbWFuZFsxXSxcbiAgICAgICAgICAgIG1ldGhvZE5hbWU6IG1hdGNoZWRDb2xsZWN0aW9uQ29tbWFuZFswXSxcbiAgICAgICAgICAgIG1vZGVsTmFtZSxcbiAgICAgICAgICAgIHJlc291cmNlUGF0aCxcbiAgICAgICAgICAgIHNjb3BlOiBcImNvbGxlY3Rpb25cIlxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAocGF0aFNlZ21lbnRzLmxlbmd0aCA9PT0gMikge1xuICAgICAgICBjb25zdCBtYXRjaGVkTWVtYmVyQ29tbWFuZCA9IE9iamVjdC5lbnRyaWVzKHJlc291cmNlQ29uZmlndXJhdGlvbi5tZW1iZXJDb21tYW5kcylcbiAgICAgICAgICAuZmluZCgoWywgY29tbWFuZE5hbWVdKSA9PiBjb21tYW5kTmFtZSA9PT0gcGF0aFNlZ21lbnRzWzFdKVxuXG4gICAgICAgIGlmIChtYXRjaGVkTWVtYmVyQ29tbWFuZCkge1xuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBjb21tYW5kTmFtZTogbWF0Y2hlZE1lbWJlckNvbW1hbmRbMV0sXG4gICAgICAgICAgICBtZW1iZXJJZDogZGVjb2RlVVJJQ29tcG9uZW50KHBhdGhTZWdtZW50c1swXSksXG4gICAgICAgICAgICBtZXRob2ROYW1lOiBtYXRjaGVkTWVtYmVyQ29tbWFuZFswXSxcbiAgICAgICAgICAgIG1vZGVsTmFtZSxcbiAgICAgICAgICAgIHJlc291cmNlUGF0aCxcbiAgICAgICAgICAgIHNjb3BlOiBcIm1lbWJlclwiXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIG51bGxcbn1cblxuLyoqXG4gKiBAcGFyYW0ge3N0cmluZ30gcGF0aCAtIFBhdGggdmFsdWUuXG4gKiBAcmV0dXJucyB7c3RyaW5nfSAtIE5vcm1hbGl6ZWQgcGF0aCB3aXRoIGxlYWRpbmcgc2xhc2ggYW5kIG5vIHRyYWlsaW5nIHNsYXNoLlxuICovXG5mdW5jdGlvbiBub3JtYWxpemVGcm9udGVuZE1vZGVsUmVzb3VyY2VQYXRoRm9yTWF0Y2gocGF0aCkge1xuICBjb25zdCB3aXRoTGVhZGluZ1NsYXNoID0gcGF0aC5zdGFydHNXaXRoKFwiL1wiKSA/IHBhdGggOiBgLyR7cGF0aH1gXG5cbiAgaWYgKHdpdGhMZWFkaW5nU2xhc2gubGVuZ3RoID4gMSkge1xuICAgIHJldHVybiB3aXRoTGVhZGluZ1NsYXNoLnJlcGxhY2UoL1xcLyskLywgXCJcIilcbiAgfVxuXG4gIHJldHVybiB3aXRoTGVhZGluZ1NsYXNoXG59XG4iXX0=
345
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzb3VyY2UtZGVmaW5pdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9mcm9udGVuZC1tb2RlbHMvcmVzb3VyY2UtZGVmaW5pdGlvbi5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxZQUFZO0FBRVosT0FBTyxLQUFLLFVBQVUsTUFBTSxZQUFZLENBQUE7QUFDeEMsT0FBTyx5QkFBeUIsTUFBTSw2Q0FBNkMsQ0FBQTtBQUNuRixPQUFPLGFBQWEsTUFBTSw2QkFBNkIsQ0FBQTtBQUN2RCxPQUFPLEVBQUMsd0NBQXdDLEVBQUMsTUFBTSxpQ0FBaUMsQ0FBQTtBQUV4Rjs7OztHQUlHO0FBQ0gsTUFBTSxVQUFVLHVDQUF1QyxDQUFDLGNBQWM7SUFDcEUsTUFBTSxTQUFTLEdBQUcsY0FBYyxDQUFDLGNBQWMsQ0FBQTtJQUUvQyxJQUFJLFNBQVMsS0FBSyxTQUFTLEVBQUUsQ0FBQztRQUM1QixJQUFJLENBQUMsU0FBUyxJQUFJLE9BQU8sU0FBUyxLQUFLLFFBQVEsRUFBRSxDQUFDO1lBQ2hELE1BQU0sSUFBSSxLQUFLLENBQUMsMkRBQTJELFNBQVMsRUFBRSxDQUFDLENBQUE7UUFDekYsQ0FBQztRQUVELE9BQU8sU0FBUyxDQUFBO0lBQ2xCLENBQUM7SUFFRCxPQUFPLEVBQUUsQ0FBQTtBQUNYLENBQUM7QUFFRDs7OztHQUlHO0FBQ0gsTUFBTSxVQUFVLHNDQUFzQyxDQUFDLEtBQUs7SUFDMUQsT0FBTyxPQUFPLEtBQUssS0FBSyxVQUFVLElBQUksQ0FBQyxLQUFLLEtBQUsseUJBQXlCLElBQUksS0FBSyxDQUFDLFNBQVMsWUFBWSx5QkFBeUIsQ0FBQyxDQUFBO0FBQ3JJLENBQUM7QUFFRDs7OztHQUlHO0FBQ0gsTUFBTSxVQUFVLHdDQUF3QyxDQUFDLGtCQUFrQjtJQUN6RSxPQUFPLHNDQUFzQyxDQUFDLGtCQUFrQixDQUFDLENBQUMsQ0FBQyxDQUFDLGtCQUFrQixDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUE7QUFDL0YsQ0FBQztBQUVEOzs7O0dBSUc7QUFDSCxNQUFNLFVBQVUsZ0RBQWdELENBQUMsa0JBQWtCO0lBQ2pGLElBQUksQ0FBQyxzQ0FBc0MsQ0FBQyxrQkFBa0IsQ0FBQztRQUFFLE9BQU8sSUFBSSxDQUFBO0lBRTVFLE9BQU8sMkNBQTJDLENBQUMsa0JBQWtCLENBQUMsY0FBYyxFQUFFLENBQUMsQ0FBQTtBQUN6RixDQUFDO0FBRUQ7Ozs7R0FJRztBQUNILFNBQVMsMkNBQTJDLENBQUMscUJBQXFCO0lBQ3hFLE1BQU0sUUFBUSxHQUFHOzttREFFOEIsQ0FBQyxDQUFDLEVBQUMsR0FBRyxxQkFBcUIsRUFBQyxDQUFDLENBQUE7SUFFNUUsS0FBSyxNQUFNLEdBQUcsSUFBSTtRQUNoQixXQUFXO1FBQ1gsWUFBWTtRQUNaLGFBQWE7UUFDYiwyQkFBMkI7UUFDM0IsdUJBQXVCO1FBQ3ZCLG9CQUFvQjtRQUNwQixVQUFVO1FBQ1YsZ0JBQWdCO1FBQ2hCLFdBQVc7UUFDWCxZQUFZO1FBQ1osZUFBZTtRQUNmLFFBQVE7S0FDVCxFQUFFLENBQUM7UUFDRixPQUFPLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQTtJQUN0QixDQUFDO0lBRUQsYUFBYSxDQUFDLFFBQVEsQ0FBQyxDQUFBO0lBRXZCLE1BQU0sa0JBQWtCLEdBQUcsc0NBQXNDLENBQUMscUJBQXFCLENBQUMsQ0FBQTtJQUV4RixPQUFPO1FBQ0wsR0FBRyxxQkFBcUI7UUFDeEIsU0FBUyxFQUFFLHVDQUF1QyxDQUFDLHFCQUFxQixDQUFDLFNBQVMsQ0FBQztRQUNuRix5QkFBeUIsRUFBRSxrQkFBa0IsQ0FBQyx5QkFBeUI7UUFDdkUscUJBQXFCLEVBQUUsa0JBQWtCLENBQUMscUJBQXFCO1FBQy9ELGtCQUFrQixFQUFFLGtCQUFrQixDQUFDLGtCQUFrQjtRQUN6RCxjQUFjLEVBQUUsa0JBQWtCLENBQUMsY0FBYztLQUNsRCxDQUFBO0FBQ0gsQ0FBQztBQUVEOzs7O0dBSUc7QUFDSCxTQUFTLHVDQUF1QyxDQUFDLFNBQVM7SUFDeEQsSUFBSSxTQUFTLEtBQUssU0FBUyxFQUFFLENBQUM7UUFDNUIsT0FBTyxvQkFBb0IsRUFBRSxDQUFBO0lBQy9CLENBQUM7SUFFRCxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDO1FBQzlCLE1BQU0sSUFBSSxLQUFLLENBQUMsMEZBQTBGLENBQUMsQ0FBQTtJQUM3RyxDQUFDO0lBRUQsSUFBSSxTQUFTLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUM7UUFDakMsT0FBTztZQUNMLE1BQU0sRUFBRSxRQUFRO1lBQ2hCLE9BQU8sRUFBRSxRQUFRO1lBQ2pCLElBQUksRUFBRSxRQUFRO1lBQ2QsS0FBSyxFQUFFLFFBQVE7WUFDZixNQUFNLEVBQUUsUUFBUTtTQUNqQixDQUFBO0lBQ0gsQ0FBQztJQUVEOzt1Q0FFbUM7SUFDbkMsTUFBTSxVQUFVLEdBQUcsRUFBRSxDQUFBO0lBRXJCLElBQUksU0FBUyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUM7UUFBRSxVQUFVLENBQUMsTUFBTSxHQUFHLFFBQVEsQ0FBQTtJQUM5RCxJQUFJLFNBQVMsQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDO1FBQUUsVUFBVSxDQUFDLE9BQU8sR0FBRyxTQUFTLENBQUE7SUFDakUsSUFBSSxTQUFTLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUM7UUFDL0IsVUFBVSxDQUFDLElBQUksR0FBRyxNQUFNLENBQUE7UUFDeEIsVUFBVSxDQUFDLEtBQUssR0FBRyxNQUFNLENBQUE7SUFDM0IsQ0FBQztJQUNELElBQUksU0FBUyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUM7UUFBRSxVQUFVLENBQUMsTUFBTSxHQUFHLFFBQVEsQ0FBQTtJQUU5RCxPQUFPLFVBQVUsQ0FBQTtBQUNuQixDQUFDO0FBRUQ7OztHQUdHO0FBQ0gsU0FBUyxvQkFBb0I7SUFDM0IsT0FBTztRQUNMLE1BQU0sRUFBRSxRQUFRO1FBQ2hCLE9BQU8sRUFBRSxTQUFTO1FBQ2xCLElBQUksRUFBRSxNQUFNO1FBQ1osS0FBSyxFQUFFLE1BQU07UUFDYixNQUFNLEVBQUUsUUFBUTtLQUNqQixDQUFBO0FBQ0gsQ0FBQztBQUVEOzs7O0dBSUc7QUFDSCxTQUFTLHNDQUFzQyxDQUFDLHFCQUFxQjtJQUNuRSxNQUFNLHlCQUF5QixHQUFHLHFCQUFxQixDQUFDLHlCQUF5QixDQUFBO0lBQ2pGLE1BQU0scUJBQXFCLEdBQUcscUJBQXFCLENBQUMscUJBQXFCLENBQUE7SUFDekUsTUFBTSx3QkFBd0IsR0FBRyxxQkFBcUIsQ0FBQyxrQkFBa0IsQ0FBQTtJQUN6RSxNQUFNLG9CQUFvQixHQUFHLHFCQUFxQixDQUFDLGNBQWMsQ0FBQTtJQUNqRSxNQUFNLG1DQUFtQyxHQUFHLHFDQUFxQyxDQUFDO1FBQ2hGLGVBQWUsRUFBRTtZQUNmLE1BQU0sRUFBRSxRQUFRO1lBQ2hCLEtBQUssRUFBRSxPQUFPO1NBQ2Y7UUFDRCxjQUFjLEVBQUUseUJBQXlCO1FBQ3pDLFNBQVMsRUFBRSxtQkFBbUI7S0FDL0IsQ0FBQyxDQUFBO0lBQ0YsTUFBTSwrQkFBK0IsR0FBRyxxQ0FBcUMsQ0FBQztRQUM1RSxlQUFlLEVBQUU7WUFDZixNQUFNLEVBQUUsUUFBUTtZQUNoQixPQUFPLEVBQUUsU0FBUztZQUNsQixRQUFRLEVBQUUsVUFBVTtZQUNwQixJQUFJLEVBQUUsTUFBTTtZQUNaLE1BQU0sRUFBRSxRQUFRO1lBQ2hCLEdBQUcsRUFBRSxLQUFLO1NBQ1g7UUFDRCxjQUFjLEVBQUUscUJBQXFCO1FBQ3JDLFNBQVMsRUFBRSxlQUFlO0tBQzNCLENBQUMsQ0FBQTtJQUVGLE9BQU87UUFDTCx5QkFBeUIsRUFBRSxtQ0FBbUM7UUFDOUQscUJBQXFCLEVBQUUsK0JBQStCO1FBQ3RELGtCQUFrQixFQUFFLG9DQUFvQyxDQUFDLEVBQUMsY0FBYyxFQUFFLHdCQUF3QixFQUFFLFNBQVMsRUFBRSxtQkFBbUIsRUFBQyxDQUFDO1FBQ3BJLGNBQWMsRUFBRSxvQ0FBb0MsQ0FBQyxFQUFDLGNBQWMsRUFBRSxvQkFBb0IsRUFBRSxTQUFTLEVBQUUsZUFBZSxFQUFDLENBQUM7S0FDekgsQ0FBQTtBQUNILENBQUM7QUFFRDs7Ozs7OztHQU9HO0FBQ0gsU0FBUyxxQ0FBcUMsQ0FBQyxFQUFDLGVBQWUsRUFBRSxjQUFjLEVBQUUsU0FBUyxFQUFDO0lBQ3pGLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUNwQixPQUFPLGVBQWUsQ0FBQTtJQUN4QixDQUFDO0lBRUQsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsY0FBYyxDQUFDLEVBQUUsQ0FBQztRQUNuQyxNQUFNLElBQUksS0FBSyxDQUFDLEdBQUcsU0FBUyw2RUFBNkUsQ0FBQyxDQUFBO0lBQzVHLENBQUM7SUFFRDs7dUNBRW1DO0lBQ25DLE1BQU0sa0JBQWtCLEdBQUcsRUFBRSxDQUFBO0lBRTdCLEtBQUssTUFBTSxXQUFXLElBQUksY0FBYyxFQUFFLENBQUM7UUFDekMsTUFBTSxrQkFBa0IsR0FBRyxlQUFlLENBQUMsV0FBVyxDQUFDLENBQUE7UUFFdkQsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7WUFDeEIsTUFBTSxJQUFJLEtBQUssQ0FBQyw0Q0FBNEMsV0FBVyxTQUFTLFNBQVMsRUFBRSxDQUFDLENBQUE7UUFDOUYsQ0FBQztRQUVELGtCQUFrQixDQUFDLFdBQVcsQ0FBQyxHQUFHLHdDQUF3QyxDQUFDO1lBQ3pFLFdBQVcsRUFBRSxrQkFBa0I7WUFDL0IsV0FBVyxFQUFFLGtCQUFrQjtZQUMvQixTQUFTO1NBQ1YsQ0FBQyxDQUFBO0lBQ0osQ0FBQztJQUVELE9BQU8sa0JBQWtCLENBQUE7QUFDM0IsQ0FBQztBQUVEOzs7Ozs7R0FNRztBQUNILFNBQVMsb0NBQW9DLENBQUMsRUFBQyxjQUFjLEVBQUUsU0FBUyxFQUFDO0lBQ3ZFLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUNwQixPQUFPLEVBQUUsQ0FBQTtJQUNYLENBQUM7SUFFRCxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxjQUFjLENBQUMsRUFBRSxDQUFDO1FBQ25DLE1BQU0sSUFBSSxLQUFLLENBQUMsR0FBRyxTQUFTLDZFQUE2RSxDQUFDLENBQUE7SUFDNUcsQ0FBQztJQUVEOzt1Q0FFbUM7SUFDbkMsTUFBTSxrQkFBa0IsR0FBRyxFQUFFLENBQUE7SUFFN0IsS0FBSyxNQUFNLFVBQVUsSUFBSSxjQUFjLEVBQUUsQ0FBQztRQUN4QyxNQUFNLG1CQUFtQixHQUFHLHdDQUF3QyxDQUFDO1lBQ25FLFdBQVcsRUFBRSxVQUFVO1lBQ3ZCLFdBQVcsRUFBRSxVQUFVO1lBQ3ZCLFNBQVM7U0FDVixDQUFDLENBQUE7UUFDRixNQUFNLFdBQVcsR0FBRyxVQUFVLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxDQUFBO1FBRXBGLGtCQUFrQixDQUFDLG1CQUFtQixDQUFDLEdBQUcsV0FBVyxDQUFBO0lBQ3ZELENBQUM7SUFFRCxPQUFPLGtCQUFrQixDQUFBO0FBQzNCLENBQUM7QUFFRDs7Ozs7R0FLRztBQUNILE1BQU0sVUFBVSx5QkFBeUIsQ0FBQyxTQUFTLEVBQUUsa0JBQWtCO0lBQ3JFLE1BQU0scUJBQXFCLEdBQUcsZ0RBQWdELENBQUMsa0JBQWtCLENBQUMsQ0FBQTtJQUVsRyxJQUFJLENBQUMscUJBQXFCLEVBQUUsQ0FBQztRQUMzQixNQUFNLElBQUksS0FBSyxDQUFDLGtEQUFrRCxTQUFTLEVBQUUsQ0FBQyxDQUFBO0lBQ2hGLENBQUM7SUFFRCxPQUFPLElBQUksVUFBVSxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUE7QUFDM0YsQ0FBQztBQUVEOzs7Ozs7O0dBT0c7QUFDSCxNQUFNLFVBQVUsNkJBQTZCLENBQUMsRUFBQyxXQUFXLEVBQUUsU0FBUyxFQUFFLGtCQUFrQixFQUFDO0lBQ3hGLE1BQU0scUJBQXFCLEdBQUcsZ0RBQWdELENBQUMsa0JBQWtCLENBQUMsQ0FBQTtJQUVsRyxJQUFJLENBQUMscUJBQXFCLEVBQUUsQ0FBQztRQUMzQixNQUFNLElBQUksS0FBSyxDQUFDLGtEQUFrRCxTQUFTLEVBQUUsQ0FBQyxDQUFBO0lBQ2hGLENBQUM7SUFFRCxLQUFLLE1BQU0sQ0FBQyxNQUFNLEVBQUUscUJBQXFCLENBQUMsSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFDO1FBQzNELEdBQUcscUJBQXFCLENBQUMseUJBQXlCO1FBQ2xELEdBQUcscUJBQXFCLENBQUMscUJBQXFCO0tBQy9DLENBQUMsRUFBRSxDQUFDO1FBQ0gsSUFBSSxxQkFBcUIsS0FBSyxTQUFTO1lBQUUsU0FBUTtRQUVqRCxNQUFNLG9CQUFvQixHQUFHLHdDQUF3QyxDQUFDO1lBQ3BFLFdBQVcsRUFBRSxxQkFBcUI7WUFDbEMsV0FBVyxFQUFFOzt3SEFFK0YsQ0FBQyxDQUFDLE1BQU0sQ0FBQztZQUNySCxTQUFTO1NBQ1YsQ0FBQyxDQUFBO1FBRUYsSUFBSSxXQUFXLEtBQUssb0JBQW9CLEVBQUUsQ0FBQztZQUN6QyxPQUFPLG1KQUFtSixDQUFDLENBQUMsTUFBTSxDQUFDLENBQUE7UUFDckssQ0FBQztJQUNILENBQUM7SUFFRCxPQUFPLElBQUksQ0FBQTtBQUNiLENBQUM7QUFFRDs7Ozs7O0dBTUc7QUFDSCxNQUFNLFVBQVUsaUNBQWlDLENBQUMsRUFBQyxlQUFlLEVBQUUsV0FBVyxFQUFDO0lBQzlFLE1BQU0scUJBQXFCLEdBQUcsMENBQTBDLENBQUMsV0FBVyxDQUFDLENBQUE7SUFFckYsS0FBSyxNQUFNLGNBQWMsSUFBSSxlQUFlLEVBQUUsQ0FBQztRQUM3QyxNQUFNLFNBQVMsR0FBRyx1Q0FBdUMsQ0FBQyxjQUFjLENBQUMsQ0FBQTtRQUV6RSxLQUFLLE1BQU0sU0FBUyxJQUFJLFNBQVMsRUFBRSxDQUFDO1lBQ2xDLE1BQU0sa0JBQWtCLEdBQUcsU0FBUyxDQUFDLFNBQVMsQ0FBQyxDQUFBO1lBQy9DLE1BQU0scUJBQXFCLEdBQUcsZ0RBQWdELENBQUMsa0JBQWtCLENBQUMsQ0FBQTtZQUVsRyxJQUFJLENBQUMscUJBQXFCLEVBQUUsQ0FBQztnQkFDM0IsU0FBUTtZQUNWLENBQUM7WUFFRCxNQUFNLFlBQVksR0FBRywwQ0FBMEMsQ0FBQyx5QkFBeUIsQ0FBQyxTQUFTLEVBQUUsa0JBQWtCLENBQUMsQ0FBQyxDQUFBO1lBQ3pILE1BQU0sY0FBYyxHQUFHLEdBQUcsWUFBWSxHQUFHLENBQUE7WUFFekMsSUFBSSxDQUFDLHFCQUFxQixDQUFDLFVBQVUsQ0FBQyxjQUFjLENBQUMsRUFBRSxDQUFDO2dCQUN0RCxTQUFRO1lBQ1YsQ0FBQztZQUVELE1BQU0sWUFBWSxHQUFHLHFCQUFxQjtpQkFDdkMsS0FBSyxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUM7aUJBQzVCLEtBQUssQ0FBQyxHQUFHLENBQUM7aUJBQ1YsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFBO1lBRWxCLElBQUksWUFBWSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztnQkFDOUIsTUFBTSx3QkFBd0IsR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDLHFCQUFxQixDQUFDLGtCQUFrQixDQUFDO3FCQUN0RixJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsV0FBVyxDQUFDLEVBQUUsRUFBRSxDQUFDLFdBQVcsS0FBSyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQTtnQkFFN0QsSUFBSSx3QkFBd0IsRUFBRSxDQUFDO29CQUM3QixPQUFPO3dCQUNMLFdBQVcsRUFBRSx3QkFBd0IsQ0FBQyxDQUFDLENBQUM7d0JBQ3hDLFVBQVUsRUFBRSx3QkFBd0IsQ0FBQyxDQUFDLENBQUM7d0JBQ3ZDLFNBQVM7d0JBQ1QsWUFBWTt3QkFDWixLQUFLLEVBQUUsWUFBWTtxQkFDcEIsQ0FBQTtnQkFDSCxDQUFDO1lBQ0gsQ0FBQztZQUVELElBQUksWUFBWSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztnQkFDOUIsTUFBTSxvQkFBb0IsR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDLHFCQUFxQixDQUFDLGNBQWMsQ0FBQztxQkFDOUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLFdBQVcsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxXQUFXLEtBQUssWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUE7Z0JBRTdELElBQUksb0JBQW9CLEVBQUUsQ0FBQztvQkFDekIsT0FBTzt3QkFDTCxXQUFXLEVBQUUsb0JBQW9CLENBQUMsQ0FBQyxDQUFDO3dCQUNwQyxRQUFRLEVBQUUsa0JBQWtCLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDO3dCQUM3QyxVQUFVLEVBQUUsb0JBQW9CLENBQUMsQ0FBQyxDQUFDO3dCQUNuQyxTQUFTO3dCQUNULFlBQVk7d0JBQ1osS0FBSyxFQUFFLFFBQVE7cUJBQ2hCLENBQUE7Z0JBQ0gsQ0FBQztZQUNILENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQztJQUVELE9BQU8sSUFBSSxDQUFBO0FBQ2IsQ0FBQztBQUVEOzs7O0dBSUc7QUFDSCxTQUFTLDBDQUEwQyxDQUFDLElBQUk7SUFDdEQsTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxFQUFFLENBQUE7SUFFakUsSUFBSSxnQkFBZ0IsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7UUFDaEMsT0FBTyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxDQUFBO0lBQzdDLENBQUM7SUFFRCxPQUFPLGdCQUFnQixDQUFBO0FBQ3pCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBAdHMtY2hlY2tcblxuaW1wb3J0ICogYXMgaW5mbGVjdGlvbiBmcm9tIFwiaW5mbGVjdGlvblwiXG5pbXBvcnQgRnJvbnRlbmRNb2RlbEJhc2VSZXNvdXJjZSBmcm9tIFwiLi4vZnJvbnRlbmQtbW9kZWwtcmVzb3VyY2UvYmFzZS1yZXNvdXJjZS5qc1wiXG5pbXBvcnQgcmVzdEFyZ3NFcnJvciBmcm9tIFwiLi4vdXRpbHMvcmVzdC1hcmdzLWVycm9yLmpzXCJcbmltcG9ydCB7dmFsaWRhdGVGcm9udGVuZE1vZGVsUmVzb3VyY2VDb21tYW5kTmFtZX0gZnJvbSBcIi4vcmVzb3VyY2UtY29uZmlnLXZhbGlkYXRpb24uanNcIlxuXG4vKipcbiAqIFJ1bnMgdGhlIGZyb250ZW5kTW9kZWxSZXNvdXJjZXNGb3JCYWNrZW5kUHJvamVjdCBoZWxwZXIuXG4gKiBAcGFyYW0ge2ltcG9ydChcIi4uL2NvbmZpZ3VyYXRpb24tdHlwZXMuanNcIikuQmFja2VuZFByb2plY3RDb25maWd1cmF0aW9ufSBiYWNrZW5kUHJvamVjdCAtIEJhY2tlbmQgcHJvamVjdCBjb25maWcuXG4gKiBAcmV0dXJucyB7UmVjb3JkPHN0cmluZywgdHlwZW9mIEZyb250ZW5kTW9kZWxCYXNlUmVzb3VyY2U+fSAtIFJlc291cmNlIGRlZmluaXRpb25zIGtleWVkIGJ5IG1vZGVsIG5hbWUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmcm9udGVuZE1vZGVsUmVzb3VyY2VzRm9yQmFja2VuZFByb2plY3QoYmFja2VuZFByb2plY3QpIHtcbiAgY29uc3QgcmVzb3VyY2VzID0gYmFja2VuZFByb2plY3QuZnJvbnRlbmRNb2RlbHNcblxuICBpZiAocmVzb3VyY2VzICE9PSB1bmRlZmluZWQpIHtcbiAgICBpZiAoIXJlc291cmNlcyB8fCB0eXBlb2YgcmVzb3VyY2VzICE9PSBcIm9iamVjdFwiKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYEV4cGVjdGVkIGJhY2tlbmQgcHJvamVjdCBmcm9udGVuZE1vZGVscyBvYmplY3QgYnV0IGdvdDogJHtyZXNvdXJjZXN9YClcbiAgICB9XG5cbiAgICByZXR1cm4gcmVzb3VyY2VzXG4gIH1cblxuICByZXR1cm4ge31cbn1cblxuLyoqXG4gKiBSdW5zIHRoZSBmcm9udGVuZE1vZGVsUmVzb3VyY2VEZWZpbml0aW9uSXNDbGFzcyBoZWxwZXIuXG4gKiBAcGFyYW0gez99IHZhbHVlIC0gQ2FuZGlkYXRlIHJlc291cmNlIGRlZmluaXRpb24uXG4gKiBAcmV0dXJucyB7dmFsdWUgaXMgdHlwZW9mIEZyb250ZW5kTW9kZWxCYXNlUmVzb3VyY2V9IC0gV2hldGhlciB2YWx1ZSBpcyBhIHJlc291cmNlIGNsYXNzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZnJvbnRlbmRNb2RlbFJlc291cmNlRGVmaW5pdGlvbklzQ2xhc3ModmFsdWUpIHtcbiAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PT0gXCJmdW5jdGlvblwiICYmICh2YWx1ZSA9PT0gRnJvbnRlbmRNb2RlbEJhc2VSZXNvdXJjZSB8fCB2YWx1ZS5wcm90b3R5cGUgaW5zdGFuY2VvZiBGcm9udGVuZE1vZGVsQmFzZVJlc291cmNlKVxufVxuXG4vKipcbiAqIFJ1bnMgdGhlIGZyb250ZW5kTW9kZWxSZXNvdXJjZUNsYXNzRnJvbURlZmluaXRpb24gaGVscGVyLlxuICogQHBhcmFtIHs/fSByZXNvdXJjZURlZmluaXRpb24gLSBSZXNvdXJjZSBkZWZpbml0aW9uLlxuICogQHJldHVybnMge3R5cGVvZiBGcm9udGVuZE1vZGVsQmFzZVJlc291cmNlIHwgbnVsbH0gLSBSZXNvdXJjZSBjbGFzcyB3aGVuIGRlZmluaXRpb24gaXMgY2xhc3MtYmFzZWQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmcm9udGVuZE1vZGVsUmVzb3VyY2VDbGFzc0Zyb21EZWZpbml0aW9uKHJlc291cmNlRGVmaW5pdGlvbikge1xuICByZXR1cm4gZnJvbnRlbmRNb2RlbFJlc291cmNlRGVmaW5pdGlvbklzQ2xhc3MocmVzb3VyY2VEZWZpbml0aW9uKSA/IHJlc291cmNlRGVmaW5pdGlvbiA6IG51bGxcbn1cblxuLyoqXG4gKiBSdW5zIHRoZSBmcm9udGVuZE1vZGVsUmVzb3VyY2VDb25maWd1cmF0aW9uRnJvbURlZmluaXRpb24gaGVscGVyLlxuICogQHBhcmFtIHs/fSByZXNvdXJjZURlZmluaXRpb24gLSBSZXNvdXJjZSBkZWZpbml0aW9uLlxuICogQHJldHVybnMge2ltcG9ydChcIi4uL2NvbmZpZ3VyYXRpb24tdHlwZXMuanNcIikuTm9ybWFsaXplZEZyb250ZW5kTW9kZWxSZXNvdXJjZUNvbmZpZ3VyYXRpb24gfCBudWxsfSAtIE5vcm1hbGl6ZWQgcmVzb3VyY2UgY29uZmlndXJhdGlvbi5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGZyb250ZW5kTW9kZWxSZXNvdXJjZUNvbmZpZ3VyYXRpb25Gcm9tRGVmaW5pdGlvbihyZXNvdXJjZURlZmluaXRpb24pIHtcbiAgaWYgKCFmcm9udGVuZE1vZGVsUmVzb3VyY2VEZWZpbml0aW9uSXNDbGFzcyhyZXNvdXJjZURlZmluaXRpb24pKSByZXR1cm4gbnVsbFxuXG4gIHJldHVybiBub3JtYWxpemVGcm9udGVuZE1vZGVsUmVzb3VyY2VDb25maWd1cmF0aW9uKHJlc291cmNlRGVmaW5pdGlvbi5yZXNvdXJjZUNvbmZpZygpKVxufVxuXG4vKipcbiAqIFJ1bnMgbm9ybWFsaXplIGZyb250ZW5kIG1vZGVsIHJlc291cmNlIGNvbmZpZ3VyYXRpb24uXG4gKiBAcGFyYW0ge2ltcG9ydChcIi4uL2NvbmZpZ3VyYXRpb24tdHlwZXMuanNcIikuRnJvbnRlbmRNb2RlbFJlc291cmNlQ29uZmlndXJhdGlvbn0gcmVzb3VyY2VDb25maWd1cmF0aW9uIC0gUmF3IHJlc291cmNlIGNvbmZpZ3VyYXRpb24uXG4gKiBAcmV0dXJucyB7aW1wb3J0KFwiLi4vY29uZmlndXJhdGlvbi10eXBlcy5qc1wiKS5Ob3JtYWxpemVkRnJvbnRlbmRNb2RlbFJlc291cmNlQ29uZmlndXJhdGlvbn0gLSBOb3JtYWxpemVkIHJlc291cmNlIGNvbmZpZ3VyYXRpb24uXG4gKi9cbmZ1bmN0aW9uIG5vcm1hbGl6ZUZyb250ZW5kTW9kZWxSZXNvdXJjZUNvbmZpZ3VyYXRpb24ocmVzb3VyY2VDb25maWd1cmF0aW9uKSB7XG4gIGNvbnN0IHJlc3RBcmdzID0gLyoqXG4gICAgICAgICAgICAgICAgICAgICogTmFycm93cyB0aGUgcnVudGltZSB2YWx1ZSB0byB0aGUgZG9jdW1lbnRlZCB0eXBlLlxuICAgICAgICAgICAgICAgICAgICAgQHR5cGUge1JlY29yZDxzdHJpbmcsID8+fSAqLyAoey4uLnJlc291cmNlQ29uZmlndXJhdGlvbn0pXG5cbiAgZm9yIChjb25zdCBrZXkgb2YgW1xuICAgIFwiYWJpbGl0aWVzXCIsXG4gICAgXCJhdHRyaWJ1dGVzXCIsXG4gICAgXCJhdHRhY2htZW50c1wiLFxuICAgIFwiYnVpbHRJbkNvbGxlY3Rpb25Db21tYW5kc1wiLFxuICAgIFwiYnVpbHRJbk1lbWJlckNvbW1hbmRzXCIsXG4gICAgXCJjb2xsZWN0aW9uQ29tbWFuZHNcIixcbiAgICBcImNvbW1hbmRzXCIsXG4gICAgXCJtZW1iZXJDb21tYW5kc1wiLFxuICAgIFwibW9kZWxOYW1lXCIsXG4gICAgXCJwcmltYXJ5S2V5XCIsXG4gICAgXCJyZWxhdGlvbnNoaXBzXCIsXG4gICAgXCJzZXJ2ZXJcIlxuICBdKSB7XG4gICAgZGVsZXRlIHJlc3RBcmdzW2tleV1cbiAgfVxuXG4gIHJlc3RBcmdzRXJyb3IocmVzdEFyZ3MpXG5cbiAgY29uc3Qgbm9ybWFsaXplZENvbW1hbmRzID0gbm9ybWFsaXplRnJvbnRlbmRNb2RlbFJlc291cmNlQ29tbWFuZHMocmVzb3VyY2VDb25maWd1cmF0aW9uKVxuXG4gIHJldHVybiB7XG4gICAgLi4ucmVzb3VyY2VDb25maWd1cmF0aW9uLFxuICAgIGFiaWxpdGllczogbm9ybWFsaXplRnJvbnRlbmRNb2RlbFJlc291cmNlQWJpbGl0aWVzKHJlc291cmNlQ29uZmlndXJhdGlvbi5hYmlsaXRpZXMpLFxuICAgIGJ1aWx0SW5Db2xsZWN0aW9uQ29tbWFuZHM6IG5vcm1hbGl6ZWRDb21tYW5kcy5idWlsdEluQ29sbGVjdGlvbkNvbW1hbmRzLFxuICAgIGJ1aWx0SW5NZW1iZXJDb21tYW5kczogbm9ybWFsaXplZENvbW1hbmRzLmJ1aWx0SW5NZW1iZXJDb21tYW5kcyxcbiAgICBjb2xsZWN0aW9uQ29tbWFuZHM6IG5vcm1hbGl6ZWRDb21tYW5kcy5jb2xsZWN0aW9uQ29tbWFuZHMsXG4gICAgbWVtYmVyQ29tbWFuZHM6IG5vcm1hbGl6ZWRDb21tYW5kcy5tZW1iZXJDb21tYW5kc1xuICB9XG59XG5cbi8qKlxuICogUnVucyBub3JtYWxpemUgZnJvbnRlbmQgbW9kZWwgcmVzb3VyY2UgYWJpbGl0aWVzLlxuICogQHBhcmFtIHtzdHJpbmdbXSB8IHVuZGVmaW5lZH0gYWJpbGl0aWVzIC0gUmVzb3VyY2UgYWJpbGl0aWVzIGNvbmZpZyAoY2FtZWxDYXNlIGFjdGlvbiBsaXN0KS5cbiAqIEByZXR1cm5zIHtSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+fSAtIE5vcm1hbGl6ZWQgYWJpbGl0aWVzIGNvbmZpZy5cbiAqL1xuZnVuY3Rpb24gbm9ybWFsaXplRnJvbnRlbmRNb2RlbFJlc291cmNlQWJpbGl0aWVzKGFiaWxpdGllcykge1xuICBpZiAoYWJpbGl0aWVzID09PSB1bmRlZmluZWQpIHtcbiAgICByZXR1cm4gZGVmYXVsdENydWRBYmlsaXRpZXMoKVxuICB9XG5cbiAgaWYgKCFBcnJheS5pc0FycmF5KGFiaWxpdGllcykpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJSZXNvdXJjZSBhYmlsaXRpZXMgbXVzdCBiZSBhbiBhcnJheSBvZiBhY3Rpb24gbmFtZXMuIE9iamVjdCBmb3JtIGlzIG5vIGxvbmdlciBzdXBwb3J0ZWQuXCIpXG4gIH1cblxuICBpZiAoYWJpbGl0aWVzLmluY2x1ZGVzKFwibWFuYWdlXCIpKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGNyZWF0ZTogXCJtYW5hZ2VcIixcbiAgICAgIGRlc3Ryb3k6IFwibWFuYWdlXCIsXG4gICAgICBmaW5kOiBcIm1hbmFnZVwiLFxuICAgICAgaW5kZXg6IFwibWFuYWdlXCIsXG4gICAgICB1cGRhdGU6IFwibWFuYWdlXCJcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogTm9ybWFsaXplZC5cbiAgICBAdHlwZSB7UmVjb3JkPHN0cmluZywgc3RyaW5nPn0gKi9cbiAgY29uc3Qgbm9ybWFsaXplZCA9IHt9XG5cbiAgaWYgKGFiaWxpdGllcy5pbmNsdWRlcyhcImNyZWF0ZVwiKSkgbm9ybWFsaXplZC5jcmVhdGUgPSBcImNyZWF0ZVwiXG4gIGlmIChhYmlsaXRpZXMuaW5jbHVkZXMoXCJkZXN0cm95XCIpKSBub3JtYWxpemVkLmRlc3Ryb3kgPSBcImRlc3Ryb3lcIlxuICBpZiAoYWJpbGl0aWVzLmluY2x1ZGVzKFwicmVhZFwiKSkge1xuICAgIG5vcm1hbGl6ZWQuZmluZCA9IFwicmVhZFwiXG4gICAgbm9ybWFsaXplZC5pbmRleCA9IFwicmVhZFwiXG4gIH1cbiAgaWYgKGFiaWxpdGllcy5pbmNsdWRlcyhcInVwZGF0ZVwiKSkgbm9ybWFsaXplZC51cGRhdGUgPSBcInVwZGF0ZVwiXG5cbiAgcmV0dXJuIG5vcm1hbGl6ZWRcbn1cblxuLyoqXG4gKiBSdW5zIGRlZmF1bHQgY3J1ZCBhYmlsaXRpZXMuXG4gKiBAcmV0dXJucyB7UmVjb3JkPHN0cmluZywgc3RyaW5nPn0gLSBEZWZhdWx0IENSVUQgYWJpbGl0eSBtYXAuXG4gKi9cbmZ1bmN0aW9uIGRlZmF1bHRDcnVkQWJpbGl0aWVzKCkge1xuICByZXR1cm4ge1xuICAgIGNyZWF0ZTogXCJjcmVhdGVcIixcbiAgICBkZXN0cm95OiBcImRlc3Ryb3lcIixcbiAgICBmaW5kOiBcInJlYWRcIixcbiAgICBpbmRleDogXCJyZWFkXCIsXG4gICAgdXBkYXRlOiBcInVwZGF0ZVwiXG4gIH1cbn1cblxuLyoqXG4gKiBSdW5zIG5vcm1hbGl6ZSBmcm9udGVuZCBtb2RlbCByZXNvdXJjZSBjb21tYW5kcy5cbiAqIEBwYXJhbSB7aW1wb3J0KFwiLi4vY29uZmlndXJhdGlvbi10eXBlcy5qc1wiKS5Gcm9udGVuZE1vZGVsUmVzb3VyY2VDb25maWd1cmF0aW9ufSByZXNvdXJjZUNvbmZpZ3VyYXRpb24gLSBSYXcgcmVzb3VyY2UgY29uZmlndXJhdGlvbi5cbiAqIEByZXR1cm5zIHt7YnVpbHRJbkNvbGxlY3Rpb25Db21tYW5kczogUmVjb3JkPHN0cmluZywgc3RyaW5nPiwgYnVpbHRJbk1lbWJlckNvbW1hbmRzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+LCBjb2xsZWN0aW9uQ29tbWFuZHM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4sIG1lbWJlckNvbW1hbmRzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+fX0gLSBOb3JtYWxpemVkIGNvbW1hbmQgY29uZmlndXJhdGlvbi5cbiAqL1xuZnVuY3Rpb24gbm9ybWFsaXplRnJvbnRlbmRNb2RlbFJlc291cmNlQ29tbWFuZHMocmVzb3VyY2VDb25maWd1cmF0aW9uKSB7XG4gIGNvbnN0IGJ1aWx0SW5Db2xsZWN0aW9uQ29tbWFuZHMgPSByZXNvdXJjZUNvbmZpZ3VyYXRpb24uYnVpbHRJbkNvbGxlY3Rpb25Db21tYW5kc1xuICBjb25zdCBidWlsdEluTWVtYmVyQ29tbWFuZHMgPSByZXNvdXJjZUNvbmZpZ3VyYXRpb24uYnVpbHRJbk1lbWJlckNvbW1hbmRzXG4gIGNvbnN0IGN1c3RvbUNvbGxlY3Rpb25Db21tYW5kcyA9IHJlc291cmNlQ29uZmlndXJhdGlvbi5jb2xsZWN0aW9uQ29tbWFuZHNcbiAgY29uc3QgY3VzdG9tTWVtYmVyQ29tbWFuZHMgPSByZXNvdXJjZUNvbmZpZ3VyYXRpb24ubWVtYmVyQ29tbWFuZHNcbiAgY29uc3Qgbm9ybWFsaXplZEJ1aWx0SW5Db2xsZWN0aW9uQ29tbWFuZHMgPSBub3JtYWxpemVGcm9udGVuZE1vZGVsQnVpbHRJbkNvbW1hbmRzKHtcbiAgICBjb21tYW5kRGVmYXVsdHM6IHtcbiAgICAgIGNyZWF0ZTogXCJjcmVhdGVcIixcbiAgICAgIGluZGV4OiBcImluZGV4XCJcbiAgICB9LFxuICAgIGNvbW1hbmRzQ29uZmlnOiBidWlsdEluQ29sbGVjdGlvbkNvbW1hbmRzLFxuICAgIG1vZGVsTmFtZTogXCJDb2xsZWN0aW9uQ29tbWFuZFwiXG4gIH0pXG4gIGNvbnN0IG5vcm1hbGl6ZWRCdWlsdEluTWVtYmVyQ29tbWFuZHMgPSBub3JtYWxpemVGcm9udGVuZE1vZGVsQnVpbHRJbkNvbW1hbmRzKHtcbiAgICBjb21tYW5kRGVmYXVsdHM6IHtcbiAgICAgIGF0dGFjaDogXCJhdHRhY2hcIixcbiAgICAgIGRlc3Ryb3k6IFwiZGVzdHJveVwiLFxuICAgICAgZG93bmxvYWQ6IFwiZG93bmxvYWRcIixcbiAgICAgIGZpbmQ6IFwiZmluZFwiLFxuICAgICAgdXBkYXRlOiBcInVwZGF0ZVwiLFxuICAgICAgdXJsOiBcInVybFwiXG4gICAgfSxcbiAgICBjb21tYW5kc0NvbmZpZzogYnVpbHRJbk1lbWJlckNvbW1hbmRzLFxuICAgIG1vZGVsTmFtZTogXCJNZW1iZXJDb21tYW5kXCJcbiAgfSlcblxuICByZXR1cm4ge1xuICAgIGJ1aWx0SW5Db2xsZWN0aW9uQ29tbWFuZHM6IG5vcm1hbGl6ZWRCdWlsdEluQ29sbGVjdGlvbkNvbW1hbmRzLFxuICAgIGJ1aWx0SW5NZW1iZXJDb21tYW5kczogbm9ybWFsaXplZEJ1aWx0SW5NZW1iZXJDb21tYW5kcyxcbiAgICBjb2xsZWN0aW9uQ29tbWFuZHM6IG5vcm1hbGl6ZUZyb250ZW5kTW9kZWxDdXN0b21Db21tYW5kcyh7Y29tbWFuZHNDb25maWc6IGN1c3RvbUNvbGxlY3Rpb25Db21tYW5kcywgbW9kZWxOYW1lOiBcIkNvbGxlY3Rpb25Db21tYW5kXCJ9KSxcbiAgICBtZW1iZXJDb21tYW5kczogbm9ybWFsaXplRnJvbnRlbmRNb2RlbEN1c3RvbUNvbW1hbmRzKHtjb21tYW5kc0NvbmZpZzogY3VzdG9tTWVtYmVyQ29tbWFuZHMsIG1vZGVsTmFtZTogXCJNZW1iZXJDb21tYW5kXCJ9KVxuICB9XG59XG5cbi8qKlxuICogUnVucyBub3JtYWxpemUgZnJvbnRlbmQgbW9kZWwgYnVpbHQgaW4gY29tbWFuZHMuXG4gKiBAcGFyYW0ge29iamVjdH0gYXJncyAtIEFyZ3VtZW50cy5cbiAqIEBwYXJhbSB7UmVjb3JkPHN0cmluZywgc3RyaW5nPn0gYXJncy5jb21tYW5kRGVmYXVsdHMgLSBCdWlsdC1pbiBkZWZhdWx0IGNvbW1hbmQgbmFtZXMuXG4gKiBAcGFyYW0ge3N0cmluZ1tdIHwgdW5kZWZpbmVkfSBhcmdzLmNvbW1hbmRzQ29uZmlnIC0gQnVpbHQtaW4gY29tbWFuZHMgY29uZmlnIChjYW1lbENhc2UgY29tbWFuZCB0eXBlIGxpc3QpLlxuICogQHBhcmFtIHtzdHJpbmd9IGFyZ3MubW9kZWxOYW1lIC0gRGlhZ25vc3RpYyBtb2RlbCBuYW1lLlxuICogQHJldHVybnMge1JlY29yZDxzdHJpbmcsIHN0cmluZz59IC0gTm9ybWFsaXplZCBidWlsdC1pbiBjb21tYW5kIGNvbmZpZy5cbiAqL1xuZnVuY3Rpb24gbm9ybWFsaXplRnJvbnRlbmRNb2RlbEJ1aWx0SW5Db21tYW5kcyh7Y29tbWFuZERlZmF1bHRzLCBjb21tYW5kc0NvbmZpZywgbW9kZWxOYW1lfSkge1xuICBpZiAoIWNvbW1hbmRzQ29uZmlnKSB7XG4gICAgcmV0dXJuIGNvbW1hbmREZWZhdWx0c1xuICB9XG5cbiAgaWYgKCFBcnJheS5pc0FycmF5KGNvbW1hbmRzQ29uZmlnKSkge1xuICAgIHRocm93IG5ldyBFcnJvcihgJHttb2RlbE5hbWV9IGNvbmZpZ3VyYXRpb24gbXVzdCB1c2UgdGhlIGFycmF5IGZvcm0uIE9iamVjdCBmb3JtIGlzIG5vIGxvbmdlciBzdXBwb3J0ZWQuYClcbiAgfVxuXG4gIC8qKlxuICAgKiBOb3JtYWxpemVkIGNvbW1hbmRzLlxuICAgIEB0eXBlIHtSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+fSAqL1xuICBjb25zdCBub3JtYWxpemVkQ29tbWFuZHMgPSB7fVxuXG4gIGZvciAoY29uc3QgY29tbWFuZFR5cGUgb2YgY29tbWFuZHNDb25maWcpIHtcbiAgICBjb25zdCBkZWZhdWx0Q29tbWFuZE5hbWUgPSBjb21tYW5kRGVmYXVsdHNbY29tbWFuZFR5cGVdXG5cbiAgICBpZiAoIWRlZmF1bHRDb21tYW5kTmFtZSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBVbmtub3duIGJ1aWx0LWluIGZyb250ZW5kIG1vZGVsIGNvbW1hbmQgJyR7Y29tbWFuZFR5cGV9JyBmb3IgJHttb2RlbE5hbWV9YClcbiAgICB9XG5cbiAgICBub3JtYWxpemVkQ29tbWFuZHNbY29tbWFuZFR5cGVdID0gdmFsaWRhdGVGcm9udGVuZE1vZGVsUmVzb3VyY2VDb21tYW5kTmFtZSh7XG4gICAgICBjb21tYW5kTmFtZTogZGVmYXVsdENvbW1hbmROYW1lLFxuICAgICAgY29tbWFuZFR5cGU6IGRlZmF1bHRDb21tYW5kTmFtZSxcbiAgICAgIG1vZGVsTmFtZVxuICAgIH0pXG4gIH1cblxuICByZXR1cm4gbm9ybWFsaXplZENvbW1hbmRzXG59XG5cbi8qKlxuICogUnVucyBub3JtYWxpemUgZnJvbnRlbmQgbW9kZWwgY3VzdG9tIGNvbW1hbmRzLlxuICogQHBhcmFtIHtvYmplY3R9IGFyZ3MgLSBBcmd1bWVudHMuXG4gKiBAcGFyYW0ge3N0cmluZ1tdIHwgdW5kZWZpbmVkfSBhcmdzLmNvbW1hbmRzQ29uZmlnIC0gQ3VzdG9tIGNvbW1hbmRzIGNvbmZpZyAoY2FtZWxDYXNlIG1ldGhvZC1uYW1lIGxpc3QpLlxuICogQHBhcmFtIHtzdHJpbmd9IGFyZ3MubW9kZWxOYW1lIC0gRGlhZ25vc3RpYyBtb2RlbCBuYW1lLlxuICogQHJldHVybnMge1JlY29yZDxzdHJpbmcsIHN0cmluZz59IC0gTm9ybWFsaXplZCBjdXN0b20gY29tbWFuZCBjb25maWcgKGNhbWVsQ2FzZSBtZXRob2QgbmFtZSDihpIga2ViYWItY2FzZSBjb21tYW5kIHNsdWcpLlxuICovXG5mdW5jdGlvbiBub3JtYWxpemVGcm9udGVuZE1vZGVsQ3VzdG9tQ29tbWFuZHMoe2NvbW1hbmRzQ29uZmlnLCBtb2RlbE5hbWV9KSB7XG4gIGlmICghY29tbWFuZHNDb25maWcpIHtcbiAgICByZXR1cm4ge31cbiAgfVxuXG4gIGlmICghQXJyYXkuaXNBcnJheShjb21tYW5kc0NvbmZpZykpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYCR7bW9kZWxOYW1lfSBjb25maWd1cmF0aW9uIG11c3QgdXNlIHRoZSBhcnJheSBmb3JtLiBPYmplY3QgZm9ybSBpcyBubyBsb25nZXIgc3VwcG9ydGVkLmApXG4gIH1cblxuICAvKipcbiAgICogTm9ybWFsaXplZCBjb21tYW5kcy5cbiAgICBAdHlwZSB7UmVjb3JkPHN0cmluZywgc3RyaW5nPn0gKi9cbiAgY29uc3Qgbm9ybWFsaXplZENvbW1hbmRzID0ge31cblxuICBmb3IgKGNvbnN0IG1ldGhvZE5hbWUgb2YgY29tbWFuZHNDb25maWcpIHtcbiAgICBjb25zdCB2YWxpZGF0ZWRNZXRob2ROYW1lID0gdmFsaWRhdGVGcm9udGVuZE1vZGVsUmVzb3VyY2VDb21tYW5kTmFtZSh7XG4gICAgICBjb21tYW5kTmFtZTogbWV0aG9kTmFtZSxcbiAgICAgIGNvbW1hbmRUeXBlOiBtZXRob2ROYW1lLFxuICAgICAgbW9kZWxOYW1lXG4gICAgfSlcbiAgICBjb25zdCBjb21tYW5kU2x1ZyA9IGluZmxlY3Rpb24uZGFzaGVyaXplKGluZmxlY3Rpb24udW5kZXJzY29yZSh2YWxpZGF0ZWRNZXRob2ROYW1lKSlcblxuICAgIG5vcm1hbGl6ZWRDb21tYW5kc1t2YWxpZGF0ZWRNZXRob2ROYW1lXSA9IGNvbW1hbmRTbHVnXG4gIH1cblxuICByZXR1cm4gbm9ybWFsaXplZENvbW1hbmRzXG59XG5cbi8qKlxuICogUnVucyB0aGUgZnJvbnRlbmRNb2RlbFJlc291cmNlUGF0aCBoZWxwZXIuXG4gKiBAcGFyYW0ge3N0cmluZ30gbW9kZWxOYW1lIC0gTW9kZWwgY2xhc3MgbmFtZS5cbiAqIEBwYXJhbSB7P30gcmVzb3VyY2VEZWZpbml0aW9uIC0gUmVzb3VyY2UgZGVmaW5pdGlvbi5cbiAqIEByZXR1cm5zIHtzdHJpbmd9IC0gTm9ybWFsaXplZCByZXNvdXJjZSBwYXRoLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZnJvbnRlbmRNb2RlbFJlc291cmNlUGF0aChtb2RlbE5hbWUsIHJlc291cmNlRGVmaW5pdGlvbikge1xuICBjb25zdCByZXNvdXJjZUNvbmZpZ3VyYXRpb24gPSBmcm9udGVuZE1vZGVsUmVzb3VyY2VDb25maWd1cmF0aW9uRnJvbURlZmluaXRpb24ocmVzb3VyY2VEZWZpbml0aW9uKVxuXG4gIGlmICghcmVzb3VyY2VDb25maWd1cmF0aW9uKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIGZyb250ZW5kIG1vZGVsIHJlc291cmNlIGRlZmluaXRpb24gZm9yICR7bW9kZWxOYW1lfWApXG4gIH1cblxuICByZXR1cm4gYC8ke2luZmxlY3Rpb24uZGFzaGVyaXplKGluZmxlY3Rpb24ucGx1cmFsaXplKGluZmxlY3Rpb24udW5kZXJzY29yZShtb2RlbE5hbWUpKSl9YFxufVxuXG4vKipcbiAqIFJ1bnMgdGhlIGZyb250ZW5kTW9kZWxBY3Rpb25Gb3JDb21tYW5kIGhlbHBlci5cbiAqIEBwYXJhbSB7b2JqZWN0fSBhcmdzIC0gQXJndW1lbnRzLlxuICogQHBhcmFtIHtzdHJpbmd9IGFyZ3MuY29tbWFuZE5hbWUgLSBDb21tYW5kIHBhdGggc2VnbWVudC5cbiAqIEBwYXJhbSB7c3RyaW5nfSBhcmdzLm1vZGVsTmFtZSAtIE1vZGVsIGNsYXNzIG5hbWUuXG4gKiBAcGFyYW0gez99IGFyZ3MucmVzb3VyY2VEZWZpbml0aW9uIC0gUmVzb3VyY2UgZGVmaW5pdGlvbi5cbiAqIEByZXR1cm5zIHtcImRlc3Ryb3lcIiB8IFwiZmluZFwiIHwgXCJpbmRleFwiIHwgXCJjcmVhdGVcIiB8IFwidXBkYXRlXCIgfCBcImF0dGFjaFwiIHwgXCJkb3dubG9hZFwiIHwgXCJ1cmxcIiB8IG51bGx9IC0gRnJvbnRlbmQgYWN0aW9uLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZnJvbnRlbmRNb2RlbEFjdGlvbkZvckNvbW1hbmQoe2NvbW1hbmROYW1lLCBtb2RlbE5hbWUsIHJlc291cmNlRGVmaW5pdGlvbn0pIHtcbiAgY29uc3QgcmVzb3VyY2VDb25maWd1cmF0aW9uID0gZnJvbnRlbmRNb2RlbFJlc291cmNlQ29uZmlndXJhdGlvbkZyb21EZWZpbml0aW9uKHJlc291cmNlRGVmaW5pdGlvbilcblxuICBpZiAoIXJlc291cmNlQ29uZmlndXJhdGlvbikge1xuICAgIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCBmcm9udGVuZCBtb2RlbCByZXNvdXJjZSBkZWZpbml0aW9uIGZvciAke21vZGVsTmFtZX1gKVxuICB9XG5cbiAgZm9yIChjb25zdCBbYWN0aW9uLCBjb25maWd1cmVkQ29tbWFuZE5hbWVdIG9mIE9iamVjdC5lbnRyaWVzKHtcbiAgICAuLi5yZXNvdXJjZUNvbmZpZ3VyYXRpb24uYnVpbHRJbkNvbGxlY3Rpb25Db21tYW5kcyxcbiAgICAuLi5yZXNvdXJjZUNvbmZpZ3VyYXRpb24uYnVpbHRJbk1lbWJlckNvbW1hbmRzXG4gIH0pKSB7XG4gICAgaWYgKGNvbmZpZ3VyZWRDb21tYW5kTmFtZSA9PT0gdW5kZWZpbmVkKSBjb250aW51ZVxuXG4gICAgY29uc3QgdmFsaWRhdGVkQ29tbWFuZE5hbWUgPSB2YWxpZGF0ZUZyb250ZW5kTW9kZWxSZXNvdXJjZUNvbW1hbmROYW1lKHtcbiAgICAgIGNvbW1hbmROYW1lOiBjb25maWd1cmVkQ29tbWFuZE5hbWUsXG4gICAgICBjb21tYW5kVHlwZTogLyoqXG4gICAgICAgICAgICAgICAgICAgICogTmFycm93cyB0aGUgcnVudGltZSB2YWx1ZSB0byB0aGUgZG9jdW1lbnRlZCB0eXBlLlxuICAgICAgICAgICAgICAgICAgICAgQHR5cGUge1wiYXR0YWNoXCIgfCBcImNyZWF0ZVwiIHwgXCJkZXN0cm95XCIgfCBcImRvd25sb2FkXCIgfCBcImZpbmRcIiB8IFwiaW5kZXhcIiB8IFwidXBkYXRlXCIgfCBcInVybFwifSAqLyAoYWN0aW9uKSxcbiAgICAgIG1vZGVsTmFtZVxuICAgIH0pXG5cbiAgICBpZiAoY29tbWFuZE5hbWUgPT09IHZhbGlkYXRlZENvbW1hbmROYW1lKSB7XG4gICAgICByZXR1cm4gLyoqIE5hcnJvd3MgdGhlIHJ1bnRpbWUgdmFsdWUgdG8gdGhlIGRvY3VtZW50ZWQgdHlwZS4gQHR5cGUge1wiYXR0YWNoXCIgfCBcImNyZWF0ZVwiIHwgXCJkZXN0cm95XCIgfCBcImRvd25sb2FkXCIgfCBcImZpbmRcIiB8IFwiaW5kZXhcIiB8IFwidXBkYXRlXCIgfCBcInVybFwifSAqLyAoYWN0aW9uKVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBudWxsXG59XG5cbi8qKlxuICogUnVucyB0aGUgZnJvbnRlbmRNb2RlbEN1c3RvbUNvbW1hbmRGb3JQYXRoIGhlbHBlci5cbiAqIEBwYXJhbSB7b2JqZWN0fSBhcmdzIC0gQXJndW1lbnRzLlxuICogQHBhcmFtIHtpbXBvcnQoXCIuLi9jb25maWd1cmF0aW9uLXR5cGVzLmpzXCIpLkJhY2tlbmRQcm9qZWN0Q29uZmlndXJhdGlvbltdfSBhcmdzLmJhY2tlbmRQcm9qZWN0cyAtIEJhY2tlbmQgcHJvamVjdHMgdG8gc2Nhbi5cbiAqIEBwYXJhbSB7c3RyaW5nfSBhcmdzLmN1cnJlbnRQYXRoIC0gUmVxdWVzdCBwYXRoIHdpdGhvdXQgcXVlcnkuXG4gKiBAcmV0dXJucyB7e2NvbW1hbmROYW1lOiBzdHJpbmcsIG1lbWJlcklkPzogc3RyaW5nLCBtZXRob2ROYW1lOiBzdHJpbmcsIG1vZGVsTmFtZTogc3RyaW5nLCByZXNvdXJjZVBhdGg6IHN0cmluZywgc2NvcGU6IFwiY29sbGVjdGlvblwiIHwgXCJtZW1iZXJcIn0gfCBudWxsfSAtIE1hdGNoZWQgY3VzdG9tIGNvbW1hbmQgbWV0YWRhdGEuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmcm9udGVuZE1vZGVsQ3VzdG9tQ29tbWFuZEZvclBhdGgoe2JhY2tlbmRQcm9qZWN0cywgY3VycmVudFBhdGh9KSB7XG4gIGNvbnN0IG5vcm1hbGl6ZWRDdXJyZW50UGF0aCA9IG5vcm1hbGl6ZUZyb250ZW5kTW9kZWxSZXNvdXJjZVBhdGhGb3JNYXRjaChjdXJyZW50UGF0aClcblxuICBmb3IgKGNvbnN0IGJhY2tlbmRQcm9qZWN0IG9mIGJhY2tlbmRQcm9qZWN0cykge1xuICAgIGNvbnN0IHJlc291cmNlcyA9IGZyb250ZW5kTW9kZWxSZXNvdXJjZXNGb3JCYWNrZW5kUHJvamVjdChiYWNrZW5kUHJvamVjdClcblxuICAgIGZvciAoY29uc3QgbW9kZWxOYW1lIGluIHJlc291cmNlcykge1xuICAgICAgY29uc3QgcmVzb3VyY2VEZWZpbml0aW9uID0gcmVzb3VyY2VzW21vZGVsTmFtZV1cbiAgICAgIGNvbnN0IHJlc291cmNlQ29uZmlndXJhdGlvbiA9IGZyb250ZW5kTW9kZWxSZXNvdXJjZUNvbmZpZ3VyYXRpb25Gcm9tRGVmaW5pdGlvbihyZXNvdXJjZURlZmluaXRpb24pXG5cbiAgICAgIGlmICghcmVzb3VyY2VDb25maWd1cmF0aW9uKSB7XG4gICAgICAgIGNvbnRpbnVlXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHJlc291cmNlUGF0aCA9IG5vcm1hbGl6ZUZyb250ZW5kTW9kZWxSZXNvdXJjZVBhdGhGb3JNYXRjaChmcm9udGVuZE1vZGVsUmVzb3VyY2VQYXRoKG1vZGVsTmFtZSwgcmVzb3VyY2VEZWZpbml0aW9uKSlcbiAgICAgIGNvbnN0IGV4cGVjdGVkUHJlZml4ID0gYCR7cmVzb3VyY2VQYXRofS9gXG5cbiAgICAgIGlmICghbm9ybWFsaXplZEN1cnJlbnRQYXRoLnN0YXJ0c1dpdGgoZXhwZWN0ZWRQcmVmaXgpKSB7XG4gICAgICAgIGNvbnRpbnVlXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHBhdGhTZWdtZW50cyA9IG5vcm1hbGl6ZWRDdXJyZW50UGF0aFxuICAgICAgICAuc2xpY2UoZXhwZWN0ZWRQcmVmaXgubGVuZ3RoKVxuICAgICAgICAuc3BsaXQoXCIvXCIpXG4gICAgICAgIC5maWx0ZXIoQm9vbGVhbilcblxuICAgICAgaWYgKHBhdGhTZWdtZW50cy5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgY29uc3QgbWF0Y2hlZENvbGxlY3Rpb25Db21tYW5kID0gT2JqZWN0LmVudHJpZXMocmVzb3VyY2VDb25maWd1cmF0aW9uLmNvbGxlY3Rpb25Db21tYW5kcylcbiAgICAgICAgICAuZmluZCgoWywgY29tbWFuZE5hbWVdKSA9PiBjb21tYW5kTmFtZSA9PT0gcGF0aFNlZ21lbnRzWzBdKVxuXG4gICAgICAgIGlmIChtYXRjaGVkQ29sbGVjdGlvbkNvbW1hbmQpIHtcbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgY29tbWFuZE5hbWU6IG1hdGNoZWRDb2xsZWN0aW9uQ29tbWFuZFsxXSxcbiAgICAgICAgICAgIG1ldGhvZE5hbWU6IG1hdGNoZWRDb2xsZWN0aW9uQ29tbWFuZFswXSxcbiAgICAgICAgICAgIG1vZGVsTmFtZSxcbiAgICAgICAgICAgIHJlc291cmNlUGF0aCxcbiAgICAgICAgICAgIHNjb3BlOiBcImNvbGxlY3Rpb25cIlxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAocGF0aFNlZ21lbnRzLmxlbmd0aCA9PT0gMikge1xuICAgICAgICBjb25zdCBtYXRjaGVkTWVtYmVyQ29tbWFuZCA9IE9iamVjdC5lbnRyaWVzKHJlc291cmNlQ29uZmlndXJhdGlvbi5tZW1iZXJDb21tYW5kcylcbiAgICAgICAgICAuZmluZCgoWywgY29tbWFuZE5hbWVdKSA9PiBjb21tYW5kTmFtZSA9PT0gcGF0aFNlZ21lbnRzWzFdKVxuXG4gICAgICAgIGlmIChtYXRjaGVkTWVtYmVyQ29tbWFuZCkge1xuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBjb21tYW5kTmFtZTogbWF0Y2hlZE1lbWJlckNvbW1hbmRbMV0sXG4gICAgICAgICAgICBtZW1iZXJJZDogZGVjb2RlVVJJQ29tcG9uZW50KHBhdGhTZWdtZW50c1swXSksXG4gICAgICAgICAgICBtZXRob2ROYW1lOiBtYXRjaGVkTWVtYmVyQ29tbWFuZFswXSxcbiAgICAgICAgICAgIG1vZGVsTmFtZSxcbiAgICAgICAgICAgIHJlc291cmNlUGF0aCxcbiAgICAgICAgICAgIHNjb3BlOiBcIm1lbWJlclwiXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIG51bGxcbn1cblxuLyoqXG4gKiBSdW5zIG5vcm1hbGl6ZSBmcm9udGVuZCBtb2RlbCByZXNvdXJjZSBwYXRoIGZvciBtYXRjaC5cbiAqIEBwYXJhbSB7c3RyaW5nfSBwYXRoIC0gUGF0aCB2YWx1ZS5cbiAqIEByZXR1cm5zIHtzdHJpbmd9IC0gTm9ybWFsaXplZCBwYXRoIHdpdGggbGVhZGluZyBzbGFzaCBhbmQgbm8gdHJhaWxpbmcgc2xhc2guXG4gKi9cbmZ1bmN0aW9uIG5vcm1hbGl6ZUZyb250ZW5kTW9kZWxSZXNvdXJjZVBhdGhGb3JNYXRjaChwYXRoKSB7XG4gIGNvbnN0IHdpdGhMZWFkaW5nU2xhc2ggPSBwYXRoLnN0YXJ0c1dpdGgoXCIvXCIpID8gcGF0aCA6IGAvJHtwYXRofWBcblxuICBpZiAod2l0aExlYWRpbmdTbGFzaC5sZW5ndGggPiAxKSB7XG4gICAgcmV0dXJuIHdpdGhMZWFkaW5nU2xhc2gucmVwbGFjZSgvXFwvKyQvLCBcIlwiKVxuICB9XG5cbiAgcmV0dXJuIHdpdGhMZWFkaW5nU2xhc2hcbn1cbiJdfQ==
@@ -4,38 +4,41 @@
4
4
  * own data properties instead of mutating the object's prototype chain. This
5
5
  * lets callers receive a regular `{}` object (with `Object.prototype` and a
6
6
  * normal `constructor.name`) while still preventing prototype pollution.
7
- * @param {Record<string, unknown>} target - Target object.
7
+ * @param {Record<string, ?>} target - Target object.
8
8
  * @param {string} key - Property key.
9
- * @param {unknown} value - Property value.
9
+ * @param {?} value - Property value.
10
10
  * @returns {void}
11
11
  */
12
12
  export function assignSafeProperty(target: Record<string, unknown>, key: string, value: unknown): void;
13
13
  /**
14
- * @param {unknown} value - Candidate value.
15
- * @returns {value is {attributes: () => Record<string, any>, constructor: {getModelName?: () => string, name?: string}, getModelClass: () => {getRelationshipsMap: () => Record<string, any>}, getRelationshipByName: (relationshipName: string) => {getPreloaded: () => boolean, loaded: () => any}}} - Whether value looks like a backend model instance.
14
+ * Runs the isBackendModelInstance helper.
15
+ * @param {?} value - Candidate value.
16
+ * @returns {value is {attributes: () => Record<string, ?>, constructor: {getModelName?: () => string, name?: string}, getModelClass: () => {getRelationshipsMap: () => Record<string, ?>}, getRelationshipByName: (relationshipName: string) => {getPreloaded: () => boolean, loaded: () => ?}}} - Whether value looks like a backend model instance.
16
17
  */
17
18
  export function isBackendModelInstance(value: unknown): value is {
18
- attributes: () => Record<string, any>;
19
+ attributes: () => Record<string, unknown>;
19
20
  constructor: {
20
21
  getModelName?: () => string;
21
22
  name?: string;
22
23
  };
23
24
  getModelClass: () => {
24
- getRelationshipsMap: () => Record<string, any>;
25
+ getRelationshipsMap: () => Record<string, unknown>;
25
26
  };
26
27
  getRelationshipByName: (relationshipName: string) => {
27
28
  getPreloaded: () => boolean;
28
- loaded: () => any;
29
+ loaded: () => unknown;
29
30
  };
30
31
  };
31
32
  /**
32
- * @param {unknown} value - Value to serialize.
33
- * @returns {unknown} - Serialized value with transport markers.
33
+ * Runs the serializeFrontendModelTransportValue helper.
34
+ * @param {?} value - Value to serialize.
35
+ * @returns {?} - Serialized value with transport markers.
34
36
  */
35
37
  export function serializeFrontendModelTransportValue(value: unknown): unknown;
36
38
  /**
37
- * @param {unknown} value - Value to deserialize.
38
- * @returns {unknown} - Deserialized value with transport markers restored.
39
+ * Runs the deserializeFrontendModelTransportValue helper.
40
+ * @param {?} value - Value to deserialize.
41
+ * @returns {?} - Deserialized value with transport markers restored.
39
42
  */
40
43
  export function deserializeFrontendModelTransportValue(value: unknown): unknown;
41
44
  //# sourceMappingURL=transport-serialization.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"transport-serialization.d.ts","sourceRoot":"","sources":["../../../src/frontend-models/transport-serialization.js"],"names":[],"mappings":"AAeA;;;;;;;;;;GAUG;AACH,2CALW,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,OACvB,MAAM,SACN,OAAO,GACL,IAAI,CAShB;AAuGD;;;GAGG;AACH,8CAHW,OAAO,GACL,KAAK,IAAI;IAAC,UAAU,EAAE,MAAM,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAAC,WAAW,EAAE;QAAC,YAAY,CAAC,EAAE,MAAM,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAC,CAAC;IAAC,aAAa,EAAE,MAAM;QAAC,mBAAmB,EAAE,MAAM,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;KAAC,CAAC;IAAC,qBAAqB,EAAE,CAAC,gBAAgB,EAAE,MAAM,KAAK;QAAC,YAAY,EAAE,MAAM,OAAO,CAAC;QAAC,MAAM,EAAE,MAAM,GAAG,CAAA;KAAC,CAAA;CAAC,CAYrS;AA0ID;;;GAGG;AACH,4DAHW,OAAO,GACL,OAAO,CAInB;AAED;;;GAGG;AACH,8DAHW,OAAO,GACL,OAAO,CAgDnB"}
1
+ {"version":3,"file":"transport-serialization.d.ts","sourceRoot":"","sources":["../../../src/frontend-models/transport-serialization.js"],"names":[],"mappings":"AAgBA;;;;;;;;;;GAUG;AACH,2CALW,MAAM,CAAC,MAAM,EAAE,OAAC,CAAC,OACjB,MAAM,SACN,OAAC,GACC,IAAI,CAShB;AAiGD;;;;GAIG;AACH,8CAHW,OAAC,GACC,KAAK,IAAI;IAAC,UAAU,EAAE,MAAM,MAAM,CAAC,MAAM,EAAE,OAAC,CAAC,CAAC;IAAC,WAAW,EAAE;QAAC,YAAY,CAAC,EAAE,MAAM,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAC,CAAC;IAAC,aAAa,EAAE,MAAM;QAAC,mBAAmB,EAAE,MAAM,MAAM,CAAC,MAAM,EAAE,OAAC,CAAC,CAAA;KAAC,CAAC;IAAC,qBAAqB,EAAE,CAAC,gBAAgB,EAAE,MAAM,KAAK;QAAC,YAAY,EAAE,MAAM,OAAO,CAAC;QAAC,MAAM,EAAE,MAAM,OAAC,CAAA;KAAC,CAAA;CAAC,CAc/R;AAwJD;;;;GAIG;AACH,4DAHW,OAAC,GACC,OAAC,CAIb;AAED;;;;GAIG;AACH,8DAHW,OAAC,GACC,OAAC,CAwDb"}