@kaspernj/api-maker 1.0.2159 → 1.0.2161

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 (529) hide show
  1. package/build/api.d.ts +46 -34
  2. package/build/api.d.ts.map +1 -1
  3. package/build/api.js +32 -25
  4. package/build/attribute-not-loaded-error.d.ts.map +1 -1
  5. package/build/attribute-not-loaded-error.js +2 -1
  6. package/build/base-error.d.ts +49 -60
  7. package/build/base-error.d.ts.map +1 -1
  8. package/build/base-error.js +3 -2
  9. package/build/base-model/column.d.ts +2 -2
  10. package/build/base-model/column.d.ts.map +1 -1
  11. package/build/base-model/column.js +3 -2
  12. package/build/base-model/reflection.d.ts +8 -3
  13. package/build/base-model/reflection.d.ts.map +1 -1
  14. package/build/base-model/reflection.js +8 -3
  15. package/build/base-model/scope.d.ts +1 -1
  16. package/build/base-model/scope.d.ts.map +1 -1
  17. package/build/base-model/scope.js +3 -2
  18. package/build/base-model.d.ts +3801 -117
  19. package/build/base-model.d.ts.map +1 -1
  20. package/build/base-model.js +271 -143
  21. package/build/bootstrap/attribute-row.d.ts +14 -1
  22. package/build/bootstrap/attribute-row.d.ts.map +1 -1
  23. package/build/bootstrap/attribute-row.js +23 -5
  24. package/build/bootstrap/attribute-rows.d.ts +10 -1
  25. package/build/bootstrap/attribute-rows.d.ts.map +1 -1
  26. package/build/bootstrap/attribute-rows.js +14 -5
  27. package/build/bootstrap/card.d.ts +19 -1
  28. package/build/bootstrap/card.d.ts.map +1 -1
  29. package/build/bootstrap/card.js +33 -13
  30. package/build/bootstrap/checkbox.d.ts +18 -1
  31. package/build/bootstrap/checkbox.d.ts.map +1 -1
  32. package/build/bootstrap/checkbox.js +23 -3
  33. package/build/bootstrap/checkboxes.d.ts +33 -1
  34. package/build/bootstrap/checkboxes.d.ts.map +1 -1
  35. package/build/bootstrap/checkboxes.js +50 -17
  36. package/build/bootstrap/index.js +2 -1
  37. package/build/bootstrap/input.d.ts +24 -0
  38. package/build/bootstrap/input.d.ts.map +1 -1
  39. package/build/bootstrap/input.js +27 -2
  40. package/build/bootstrap/invalid-feedback.d.ts.map +1 -1
  41. package/build/bootstrap/invalid-feedback.js +2 -1
  42. package/build/bootstrap/paginate.d.ts +7 -1
  43. package/build/bootstrap/paginate.d.ts.map +1 -1
  44. package/build/bootstrap/paginate.js +9 -4
  45. package/build/bootstrap/radio-buttons.js +2 -1
  46. package/build/bootstrap/select.js +2 -1
  47. package/build/bootstrap/sort-link.d.ts +12 -1
  48. package/build/bootstrap/sort-link.d.ts.map +1 -1
  49. package/build/bootstrap/sort-link.js +19 -10
  50. package/build/cable-connection-pool.d.ts +201 -24
  51. package/build/cable-connection-pool.d.ts.map +1 -1
  52. package/build/cable-connection-pool.js +76 -16
  53. package/build/cable-subscription-pool.d.ts +186 -20
  54. package/build/cable-subscription-pool.d.ts.map +1 -1
  55. package/build/cable-subscription-pool.js +61 -22
  56. package/build/cable-subscription.d.ts.map +1 -1
  57. package/build/cable-subscription.js +3 -2
  58. package/build/cache-key-generator.d.ts +194 -20
  59. package/build/cache-key-generator.d.ts.map +1 -1
  60. package/build/cache-key-generator.js +63 -12
  61. package/build/can-can.d.ts +146 -29
  62. package/build/can-can.d.ts.map +1 -1
  63. package/build/can-can.js +105 -19
  64. package/build/channels-consumer.d.ts +23 -1
  65. package/build/channels-consumer.d.ts.map +1 -1
  66. package/build/channels-consumer.js +26 -8
  67. package/build/collection-loader.d.ts +4 -1
  68. package/build/collection-loader.js +2 -1
  69. package/build/collection.d.ts +361 -370
  70. package/build/collection.d.ts.map +1 -1
  71. package/build/collection.js +59 -19
  72. package/build/command-execution.d.ts +50 -26
  73. package/build/command-execution.d.ts.map +1 -1
  74. package/build/command-execution.js +31 -13
  75. package/build/command-submit-data.d.ts +50 -37
  76. package/build/command-submit-data.d.ts.map +1 -1
  77. package/build/command-submit-data.js +35 -22
  78. package/build/commands-pool.d.ts +65 -27
  79. package/build/commands-pool.d.ts.map +1 -1
  80. package/build/commands-pool.js +67 -20
  81. package/build/compose.d.ts +8 -2
  82. package/build/compose.d.ts.map +1 -1
  83. package/build/compose.js +9 -2
  84. package/build/config.d.ts +31 -15
  85. package/build/config.d.ts.map +1 -1
  86. package/build/config.js +60 -23
  87. package/build/custom-error.d.ts.map +1 -1
  88. package/build/custom-error.js +2 -1
  89. package/build/data-set-to-attributes.d.ts +14 -2
  90. package/build/data-set-to-attributes.d.ts.map +1 -1
  91. package/build/data-set-to-attributes.js +12 -3
  92. package/build/deserializer.d.ts +116 -2
  93. package/build/deserializer.d.ts.map +1 -1
  94. package/build/deserializer.js +13 -2
  95. package/build/destroy-error.d.ts.map +1 -1
  96. package/build/destroy-error.js +2 -1
  97. package/build/devise.d.ts +638 -39
  98. package/build/devise.d.ts.map +1 -1
  99. package/build/devise.js +97 -28
  100. package/build/draggable-sort/controller.d.ts +126 -35
  101. package/build/draggable-sort/controller.d.ts.map +1 -1
  102. package/build/draggable-sort/controller.js +100 -28
  103. package/build/draggable-sort/index.d.ts +57 -1
  104. package/build/draggable-sort/index.d.ts.map +1 -1
  105. package/build/draggable-sort/index.js +71 -3
  106. package/build/draggable-sort/item.d.ts +56 -1
  107. package/build/draggable-sort/item.d.ts.map +1 -1
  108. package/build/draggable-sort/item.js +98 -10
  109. package/build/error-logger.d.ts +30 -14
  110. package/build/error-logger.d.ts.map +1 -1
  111. package/build/error-logger.js +22 -11
  112. package/build/event-connection.d.ts.map +1 -1
  113. package/build/event-connection.js +3 -2
  114. package/build/event-emitter-listener.d.ts.map +1 -1
  115. package/build/event-emitter-listener.js +2 -1
  116. package/build/event-model-class.d.ts.map +1 -1
  117. package/build/event-model-class.js +2 -1
  118. package/build/events.d.ts.map +1 -1
  119. package/build/events.js +2 -1
  120. package/build/form.d.ts +24 -1
  121. package/build/form.d.ts.map +1 -1
  122. package/build/form.js +16 -4
  123. package/build/history-expo.d.ts +6 -2
  124. package/build/history-expo.d.ts.map +1 -1
  125. package/build/history-expo.js +5 -2
  126. package/build/history-react-native.d.ts +6 -2
  127. package/build/history-react-native.d.ts.map +1 -1
  128. package/build/history-react-native.js +5 -2
  129. package/build/history.js +2 -1
  130. package/build/index.d.ts.map +1 -1
  131. package/build/index.js +2 -1
  132. package/build/inputs/attachment.d.ts +13 -1
  133. package/build/inputs/attachment.d.ts.map +1 -1
  134. package/build/inputs/attachment.js +22 -8
  135. package/build/inputs/auto-submit.d.ts +41 -13
  136. package/build/inputs/auto-submit.d.ts.map +1 -1
  137. package/build/inputs/auto-submit.js +16 -4
  138. package/build/inputs/checkbox.d.ts +17 -1
  139. package/build/inputs/checkbox.d.ts.map +1 -1
  140. package/build/inputs/checkbox.js +25 -11
  141. package/build/inputs/checkboxes.d.ts +16 -0
  142. package/build/inputs/checkboxes.d.ts.map +1 -1
  143. package/build/inputs/checkboxes.js +20 -4
  144. package/build/inputs/id-for-component.d.ts +21 -2
  145. package/build/inputs/id-for-component.d.ts.map +1 -1
  146. package/build/inputs/id-for-component.js +9 -2
  147. package/build/inputs/input-wrapper.d.ts.map +1 -1
  148. package/build/inputs/input-wrapper.js +2 -1
  149. package/build/inputs/input.d.ts +38 -1
  150. package/build/inputs/input.d.ts.map +1 -1
  151. package/build/inputs/input.js +29 -10
  152. package/build/inputs/money.d.ts +4 -1
  153. package/build/inputs/money.d.ts.map +1 -1
  154. package/build/inputs/money.js +6 -3
  155. package/build/inputs/name-for-component.d.ts +21 -2
  156. package/build/inputs/name-for-component.d.ts.map +1 -1
  157. package/build/inputs/name-for-component.js +9 -2
  158. package/build/inputs/select.d.ts +35 -1
  159. package/build/inputs/select.d.ts.map +1 -1
  160. package/build/inputs/select.js +21 -4
  161. package/build/instance-of-class-name.d.ts +7 -2
  162. package/build/instance-of-class-name.d.ts.map +1 -1
  163. package/build/instance-of-class-name.js +8 -4
  164. package/build/is-expo.d.ts.map +1 -1
  165. package/build/is-expo.js +2 -1
  166. package/build/key-value-store.d.ts +24 -14
  167. package/build/key-value-store.d.ts.map +1 -1
  168. package/build/key-value-store.js +22 -12
  169. package/build/link.d.ts +32 -1
  170. package/build/link.d.ts.map +1 -1
  171. package/build/link.js +76 -30
  172. package/build/logger.d.ts +10 -6
  173. package/build/logger.d.ts.map +1 -1
  174. package/build/logger.js +7 -4
  175. package/build/merge-styles.d.ts +10 -2
  176. package/build/merge-styles.d.ts.map +1 -1
  177. package/build/merge-styles.js +10 -3
  178. package/build/modal.d.ts +4 -1
  179. package/build/modal.d.ts.map +1 -1
  180. package/build/modal.js +6 -4
  181. package/build/model-class-require.d.ts +4 -2
  182. package/build/model-class-require.d.ts.map +1 -1
  183. package/build/model-class-require.js +4 -2
  184. package/build/model-events.d.ts +139 -346
  185. package/build/model-events.d.ts.map +1 -1
  186. package/build/model-events.js +21 -9
  187. package/build/model-name.d.ts +21 -7
  188. package/build/model-name.d.ts.map +1 -1
  189. package/build/model-name.js +12 -2
  190. package/build/model-prop-type.d.ts +533 -26
  191. package/build/model-prop-type.d.ts.map +1 -1
  192. package/build/model-prop-type.js +69 -11
  193. package/build/model-recipes-loader.d.ts +7 -3
  194. package/build/model-recipes-loader.d.ts.map +1 -1
  195. package/build/model-recipes-loader.js +4 -2
  196. package/build/model-recipes-model-loader.d.ts +189 -1493
  197. package/build/model-recipes-model-loader.d.ts.map +1 -1
  198. package/build/model-recipes-model-loader.js +119 -17
  199. package/build/models-response-reader.d.ts +600 -195
  200. package/build/models-response-reader.d.ts.map +1 -1
  201. package/build/models-response-reader.js +12 -4
  202. package/build/models.d.ts +438 -1
  203. package/build/models.d.ts.map +1 -1
  204. package/build/models.js +2 -1
  205. package/build/money-formatter.d.ts +25 -31
  206. package/build/money-formatter.d.ts.map +1 -1
  207. package/build/money-formatter.js +11 -8
  208. package/build/not-loaded-error.d.ts.map +1 -1
  209. package/build/not-loaded-error.js +2 -1
  210. package/build/params.d.ts +25 -17
  211. package/build/params.d.ts.map +1 -1
  212. package/build/params.js +19 -15
  213. package/build/preloaded.d.ts +61 -64
  214. package/build/preloaded.d.ts.map +1 -1
  215. package/build/preloaded.js +10 -4
  216. package/build/reset-realtime-runtime-state.d.ts.map +1 -1
  217. package/build/reset-realtime-runtime-state.js +2 -1
  218. package/build/resize-observer.d.ts +1 -1
  219. package/build/resize-observer.d.ts.map +1 -1
  220. package/build/resize-observer.js +2 -1
  221. package/build/rest-props-validator.d.ts +2 -2
  222. package/build/rest-props-validator.d.ts.map +1 -1
  223. package/build/rest-props-validator.js +3 -2
  224. package/build/result.d.ts +142 -175
  225. package/build/result.d.ts.map +1 -1
  226. package/build/result.js +3 -2
  227. package/build/router/route.d.ts +51 -1
  228. package/build/router/route.d.ts.map +1 -1
  229. package/build/router/route.js +48 -12
  230. package/build/router/switch.d.ts +38 -2
  231. package/build/router/switch.d.ts.map +1 -1
  232. package/build/router/switch.js +34 -13
  233. package/build/router.d.ts +21 -1
  234. package/build/router.d.ts.map +1 -1
  235. package/build/router.js +15 -4
  236. package/build/routes-native.d.ts +13 -13
  237. package/build/routes-native.d.ts.map +1 -1
  238. package/build/routes-native.js +23 -11
  239. package/build/routes.d.ts +17 -9
  240. package/build/routes.d.ts.map +1 -1
  241. package/build/routes.js +7 -2
  242. package/build/run-last.d.ts.map +1 -1
  243. package/build/run-last.js +2 -1
  244. package/build/serializer.d.ts +44 -12
  245. package/build/serializer.d.ts.map +1 -1
  246. package/build/serializer.js +36 -7
  247. package/build/services.d.ts +29 -4
  248. package/build/services.d.ts.map +1 -1
  249. package/build/services.js +16 -4
  250. package/build/session-status-updater.d.ts +73 -25
  251. package/build/session-status-updater.d.ts.map +1 -1
  252. package/build/session-status-updater.js +52 -14
  253. package/build/source-maps-loader.d.ts +88 -33
  254. package/build/source-maps-loader.d.ts.map +1 -1
  255. package/build/source-maps-loader.js +74 -18
  256. package/build/super-admin/config-reader.d.ts.map +1 -1
  257. package/build/super-admin/config-reader.js +11 -16
  258. package/build/super-admin/edit-page/edit-attribute-checkbox.d.ts +12 -1
  259. package/build/super-admin/edit-page/edit-attribute-checkbox.d.ts.map +1 -1
  260. package/build/super-admin/edit-page/edit-attribute-checkbox.js +22 -8
  261. package/build/super-admin/edit-page/edit-attribute-content.d.ts +10 -1
  262. package/build/super-admin/edit-page/edit-attribute-content.d.ts.map +1 -1
  263. package/build/super-admin/edit-page/edit-attribute-content.js +20 -9
  264. package/build/super-admin/edit-page/edit-attribute-input.d.ts +10 -1
  265. package/build/super-admin/edit-page/edit-attribute-input.d.ts.map +1 -1
  266. package/build/super-admin/edit-page/edit-attribute-input.js +13 -4
  267. package/build/super-admin/edit-page/edit-attribute.d.ts +8 -1
  268. package/build/super-admin/edit-page/edit-attribute.d.ts.map +1 -1
  269. package/build/super-admin/edit-page/edit-attribute.js +11 -4
  270. package/build/super-admin/edit-page.d.ts +7 -1
  271. package/build/super-admin/edit-page.d.ts.map +1 -1
  272. package/build/super-admin/edit-page.js +11 -5
  273. package/build/super-admin/has-edit-config.d.ts.map +1 -1
  274. package/build/super-admin/has-edit-config.js +2 -1
  275. package/build/super-admin/index-page.d.ts +6 -1
  276. package/build/super-admin/index-page.d.ts.map +1 -1
  277. package/build/super-admin/index-page.js +9 -4
  278. package/build/super-admin/index.d.ts +6 -1
  279. package/build/super-admin/index.d.ts.map +1 -1
  280. package/build/super-admin/index.js +16 -10
  281. package/build/super-admin/layout/header/index.d.ts +6 -1
  282. package/build/super-admin/layout/header/index.d.ts.map +1 -1
  283. package/build/super-admin/layout/header/index.js +18 -12
  284. package/build/super-admin/layout/index.d.ts +26 -1
  285. package/build/super-admin/layout/index.d.ts.map +1 -1
  286. package/build/super-admin/layout/index.js +41 -7
  287. package/build/super-admin/layout/menu/index.d.ts +4 -1
  288. package/build/super-admin/layout/menu/index.d.ts.map +1 -1
  289. package/build/super-admin/layout/menu/index.js +13 -7
  290. package/build/super-admin/layout/menu/menu-content.d.ts +4 -1
  291. package/build/super-admin/layout/menu/menu-content.d.ts.map +1 -1
  292. package/build/super-admin/layout/menu/menu-content.js +6 -4
  293. package/build/super-admin/layout/menu/menu-item.d.ts +11 -1
  294. package/build/super-admin/layout/menu/menu-item.d.ts.map +1 -1
  295. package/build/super-admin/layout/menu/menu-item.js +19 -9
  296. package/build/super-admin/layout/no-access.d.ts +4 -1
  297. package/build/super-admin/layout/no-access.d.ts.map +1 -1
  298. package/build/super-admin/layout/no-access.js +7 -5
  299. package/build/super-admin/model-class-table.d.ts +6 -1
  300. package/build/super-admin/model-class-table.d.ts.map +1 -1
  301. package/build/super-admin/model-class-table.js +9 -4
  302. package/build/super-admin/models.d.ts.map +1 -1
  303. package/build/super-admin/models.js +2 -1
  304. package/build/super-admin/show-nav.d.ts +4 -1
  305. package/build/super-admin/show-nav.d.ts.map +1 -1
  306. package/build/super-admin/show-nav.js +6 -4
  307. package/build/super-admin/show-page/belongs-to-attribute-row.d.ts +18 -1
  308. package/build/super-admin/show-page/belongs-to-attribute-row.d.ts.map +1 -1
  309. package/build/super-admin/show-page/belongs-to-attribute-row.js +14 -5
  310. package/build/super-admin/show-page/index.d.ts +6 -1
  311. package/build/super-admin/show-page/index.d.ts.map +1 -1
  312. package/build/super-admin/show-page/index.js +11 -5
  313. package/build/super-admin/show-reflection-actions.d.ts +8 -1
  314. package/build/super-admin/show-reflection-actions.d.ts.map +1 -1
  315. package/build/super-admin/show-reflection-actions.js +11 -4
  316. package/build/super-admin/show-reflection-link.d.ts +6 -1
  317. package/build/super-admin/show-reflection-link.d.ts.map +1 -1
  318. package/build/super-admin/show-reflection-link.js +12 -5
  319. package/build/super-admin/show-reflection-page.d.ts +7 -1
  320. package/build/super-admin/show-reflection-page.d.ts.map +1 -1
  321. package/build/super-admin/show-reflection-page.js +10 -4
  322. package/build/table/column-content.d.ts +155 -19
  323. package/build/table/column-content.d.ts.map +1 -1
  324. package/build/table/column-content.js +55 -12
  325. package/build/table/column-identifier.d.ts +11 -2
  326. package/build/table/column-identifier.d.ts.map +1 -1
  327. package/build/table/column-identifier.js +7 -2
  328. package/build/table/column-visible.d.ts +11 -2
  329. package/build/table/column-visible.d.ts.map +1 -1
  330. package/build/table/column-visible.js +8 -2
  331. package/build/table/components/column.d.ts +4 -1
  332. package/build/table/components/column.d.ts.map +1 -1
  333. package/build/table/components/column.js +6 -4
  334. package/build/table/components/flat-list.d.ts +4 -1
  335. package/build/table/components/flat-list.d.ts.map +1 -1
  336. package/build/table/components/flat-list.js +6 -4
  337. package/build/table/components/header.d.ts +4 -1
  338. package/build/table/components/header.d.ts.map +1 -1
  339. package/build/table/components/header.js +6 -4
  340. package/build/table/components/row.d.ts +4 -1
  341. package/build/table/components/row.d.ts.map +1 -1
  342. package/build/table/components/row.js +6 -4
  343. package/build/table/filters/attribute-element.d.ts +4 -1
  344. package/build/table/filters/attribute-element.d.ts.map +1 -1
  345. package/build/table/filters/attribute-element.js +7 -7
  346. package/build/table/filters/filter-form.d.ts +60 -1
  347. package/build/table/filters/filter-form.d.ts.map +1 -1
  348. package/build/table/filters/filter-form.js +89 -28
  349. package/build/table/filters/filter.d.ts +4 -1
  350. package/build/table/filters/filter.d.ts.map +1 -1
  351. package/build/table/filters/filter.js +6 -4
  352. package/build/table/filters/index.d.ts +129 -1
  353. package/build/table/filters/index.d.ts.map +1 -1
  354. package/build/table/filters/index.js +26 -9
  355. package/build/table/filters/load-search-modal.d.ts +132 -1
  356. package/build/table/filters/load-search-modal.d.ts.map +1 -1
  357. package/build/table/filters/load-search-modal.js +32 -10
  358. package/build/table/filters/reflection-element.d.ts +4 -1
  359. package/build/table/filters/reflection-element.d.ts.map +1 -1
  360. package/build/table/filters/reflection-element.js +6 -4
  361. package/build/table/filters/save-search-modal.d.ts +136 -1
  362. package/build/table/filters/save-search-modal.d.ts.map +1 -1
  363. package/build/table/filters/save-search-modal.js +39 -6
  364. package/build/table/filters/scope-element.d.ts +8 -1
  365. package/build/table/filters/scope-element.d.ts.map +1 -1
  366. package/build/table/filters/scope-element.js +13 -8
  367. package/build/table/header-column-content.d.ts +9 -1
  368. package/build/table/header-column-content.d.ts.map +1 -1
  369. package/build/table/header-column-content.js +12 -4
  370. package/build/table/header-column.d.ts +52 -1
  371. package/build/table/header-column.d.ts.map +1 -1
  372. package/build/table/header-column.js +39 -10
  373. package/build/table/header-select.d.ts +20 -1
  374. package/build/table/header-select.d.ts.map +1 -1
  375. package/build/table/header-select.js +27 -8
  376. package/build/table/model-callback-args.d.ts +116 -3
  377. package/build/table/model-callback-args.d.ts.map +1 -1
  378. package/build/table/model-callback-args.js +10 -3
  379. package/build/table/model-column.d.ts +138 -1
  380. package/build/table/model-column.d.ts.map +1 -1
  381. package/build/table/model-column.js +27 -4
  382. package/build/table/model-row.d.ts +21 -1
  383. package/build/table/model-row.d.ts.map +1 -1
  384. package/build/table/model-row.js +24 -4
  385. package/build/table/select-calculator.d.ts +37 -2
  386. package/build/table/select-calculator.d.ts.map +1 -1
  387. package/build/table/select-calculator.js +29 -6
  388. package/build/table/settings/column-row.d.ts +8 -1
  389. package/build/table/settings/column-row.d.ts.map +1 -1
  390. package/build/table/settings/column-row.js +13 -12
  391. package/build/table/settings/download-action.d.ts +7 -1
  392. package/build/table/settings/download-action.d.ts.map +1 -1
  393. package/build/table/settings/download-action.js +10 -4
  394. package/build/table/settings/index.d.ts +7 -1
  395. package/build/table/settings/index.d.ts.map +1 -1
  396. package/build/table/settings/index.js +10 -4
  397. package/build/table/should-render-loading-content.d.ts +2 -2
  398. package/build/table/should-render-loading-content.d.ts.map +1 -1
  399. package/build/table/should-render-loading-content.js +3 -2
  400. package/build/table/table-settings.d.ts +236 -43
  401. package/build/table/table-settings.d.ts.map +1 -1
  402. package/build/table/table-settings.js +105 -21
  403. package/build/table/table.d.ts +273 -1
  404. package/build/table/table.d.ts.map +1 -1
  405. package/build/table/table.js +210 -53
  406. package/build/table/use-sorting.d.ts +10 -8
  407. package/build/table/use-sorting.d.ts.map +1 -1
  408. package/build/table/use-sorting.js +16 -8
  409. package/build/table/widths.d.ts +55 -8
  410. package/build/table/widths.d.ts.map +1 -1
  411. package/build/table/widths.js +25 -2
  412. package/build/table/worker-plugins-check-all-checkbox.d.ts +20 -1
  413. package/build/table/worker-plugins-check-all-checkbox.d.ts.map +1 -1
  414. package/build/table/worker-plugins-check-all-checkbox.js +29 -9
  415. package/build/table/worker-plugins-checkbox.d.ts +7 -1
  416. package/build/table/worker-plugins-checkbox.d.ts.map +1 -1
  417. package/build/table/worker-plugins-checkbox.js +14 -8
  418. package/build/translated-attributes.d.ts +7 -2
  419. package/build/translated-attributes.d.ts.map +1 -1
  420. package/build/translated-attributes.js +8 -2
  421. package/build/translated-collections.d.ts +11 -2
  422. package/build/translated-collections.d.ts.map +1 -1
  423. package/build/translated-collections.js +9 -3
  424. package/build/updated-attribute.d.ts.map +1 -1
  425. package/build/updated-attribute.js +2 -1
  426. package/build/url-encode.d.ts.map +1 -1
  427. package/build/url-encode.js +2 -1
  428. package/build/use-can-can.d.ts +8 -0
  429. package/build/use-can-can.d.ts.map +1 -1
  430. package/build/use-can-can.js +39 -13
  431. package/build/use-collection.d.ts +174 -117
  432. package/build/use-collection.d.ts.map +1 -1
  433. package/build/use-collection.js +133 -51
  434. package/build/use-created-event.d.ts +120 -11
  435. package/build/use-created-event.d.ts.map +1 -1
  436. package/build/use-created-event.js +10 -7
  437. package/build/use-current-user-context.d.ts +2 -2
  438. package/build/use-current-user-context.d.ts.map +1 -1
  439. package/build/use-current-user-context.js +3 -2
  440. package/build/use-current-user.d.ts +86 -70
  441. package/build/use-current-user.d.ts.map +1 -1
  442. package/build/use-current-user.js +36 -8
  443. package/build/use-destroyed-event.d.ts +117 -8
  444. package/build/use-destroyed-event.d.ts.map +1 -1
  445. package/build/use-destroyed-event.js +29 -22
  446. package/build/use-input.d.ts +74 -12
  447. package/build/use-input.d.ts.map +1 -1
  448. package/build/use-input.js +33 -5
  449. package/build/use-model-class-event.d.ts +124 -10
  450. package/build/use-model-class-event.d.ts.map +1 -1
  451. package/build/use-model-class-event.js +26 -16
  452. package/build/use-model-event.d.ts +121 -8
  453. package/build/use-model-event.d.ts.map +1 -1
  454. package/build/use-model-event.js +24 -19
  455. package/build/use-model.d.ts +165 -243
  456. package/build/use-model.d.ts.map +1 -1
  457. package/build/use-model.js +94 -35
  458. package/build/use-resize-observer.d.ts.map +1 -1
  459. package/build/use-resize-observer.js +2 -1
  460. package/build/use-router.d.ts.map +1 -1
  461. package/build/use-router.js +2 -1
  462. package/build/use-screen-layout.d.ts +7 -2
  463. package/build/use-screen-layout.d.ts.map +1 -1
  464. package/build/use-screen-layout.js +8 -5
  465. package/build/use-shape.js +2 -1
  466. package/build/use-styles.d.ts +11 -5
  467. package/build/use-styles.d.ts.map +1 -1
  468. package/build/use-styles.js +16 -9
  469. package/build/use-updated-event.d.ts +66 -182
  470. package/build/use-updated-event.d.ts.map +1 -1
  471. package/build/use-updated-event.js +22 -18
  472. package/build/use-validation-errors.d.ts.map +1 -1
  473. package/build/use-validation-errors.js +2 -1
  474. package/build/utils/button.d.ts +16 -1
  475. package/build/utils/button.d.ts.map +1 -1
  476. package/build/utils/button.js +27 -8
  477. package/build/utils/card.d.ts +11 -1
  478. package/build/utils/card.d.ts.map +1 -1
  479. package/build/utils/card.js +13 -2
  480. package/build/utils/checkbox.d.ts +14 -1
  481. package/build/utils/checkbox.d.ts.map +1 -1
  482. package/build/utils/checkbox.js +22 -9
  483. package/build/utils/checkboxes.d.ts +27 -1
  484. package/build/utils/checkboxes.d.ts.map +1 -1
  485. package/build/utils/checkboxes.js +44 -17
  486. package/build/utils/default-style.d.ts +11 -4
  487. package/build/utils/default-style.d.ts.map +1 -1
  488. package/build/utils/default-style.js +12 -4
  489. package/build/utils/header.d.ts +6 -1
  490. package/build/utils/header.d.ts.map +1 -1
  491. package/build/utils/header.js +4 -2
  492. package/build/utils/icon.d.ts +9 -7
  493. package/build/utils/icon.d.ts.map +1 -1
  494. package/build/utils/icon.js +12 -11
  495. package/build/utils/invalid-feedback.d.ts +6 -1
  496. package/build/utils/invalid-feedback.d.ts.map +1 -1
  497. package/build/utils/invalid-feedback.js +8 -2
  498. package/build/utils/modal.d.ts +4 -1
  499. package/build/utils/modal.d.ts.map +1 -1
  500. package/build/utils/modal.js +11 -9
  501. package/build/utils/text.d.ts +9 -1
  502. package/build/utils/text.d.ts.map +1 -1
  503. package/build/utils/text.js +9 -2
  504. package/build/validation-error.d.ts +5 -2
  505. package/build/validation-error.d.ts.map +1 -1
  506. package/build/validation-error.js +5 -2
  507. package/build/validation-errors.d.ts +57 -15
  508. package/build/validation-errors.d.ts.map +1 -1
  509. package/build/validation-errors.js +37 -8
  510. package/build/websocket-request-client.d.ts +61 -15
  511. package/build/websocket-request-client.d.ts.map +1 -1
  512. package/build/websocket-request-client.js +35 -9
  513. package/build/with-api-maker.d.ts +2 -1
  514. package/build/with-api-maker.d.ts.map +1 -1
  515. package/build/with-api-maker.js +2 -1
  516. package/build/with-collection.d.ts +2 -1
  517. package/build/with-collection.d.ts.map +1 -1
  518. package/build/with-collection.js +2 -1
  519. package/build/with-current-user.d.ts.map +1 -1
  520. package/build/with-current-user.js +2 -1
  521. package/build/with-model.d.ts +2 -1
  522. package/build/with-model.d.ts.map +1 -1
  523. package/build/with-model.js +2 -1
  524. package/build/with-router.d.ts.map +1 -1
  525. package/build/with-router.js +2 -1
  526. package/package.json +6 -5
  527. package/build/base-component.d.ts +0 -4
  528. package/build/base-component.d.ts.map +0 -1
  529. package/build/base-component.js +0 -4
@@ -1,7 +1,7 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ // @ts-check
2
3
  import * as inflection from "inflection";
3
- import { shapeComponent } from "set-state-compare/build/shape-component.js";
4
- import BaseComponent from "../base-component"; // eslint-disable-line sort-imports
4
+ import { ShapeComponent, shapeComponent } from "set-state-compare/build/shape-component.js";
5
5
  import Icon from "../utils/icon";
6
6
  import Link from "../link";
7
7
  import PropTypes from "prop-types";
@@ -12,7 +12,18 @@ import qs from "qs";
12
12
  import urlEncode from "../url-encode.js";
13
13
  import useQueryParams from "on-location-changed/build/use-query-params.js";
14
14
  import useSorting from "../table/use-sorting.js";
15
- export default memo(shapeComponent(class ApiMakerBootstrapSortLink extends BaseComponent {
15
+ /**
16
+ * @typedef {object} Props
17
+ * @property {string} attribute
18
+ * @property {string} [className]
19
+ * @property {object} [defaultParams]
20
+ * @property {object} [linkComponent]
21
+ * @property {Function} [onChanged]
22
+ * @property {object} query
23
+ * @property {React.ReactNode} [title]
24
+ */
25
+ /** @typedef {Record<string, never>} State */
26
+ export default memo(shapeComponent(/** @augments {ShapeComponent<Props, State>} */ class ApiMakerBootstrapSortLink extends ShapeComponent {
16
27
  static propTypes = {
17
28
  attribute: PropTypes.string.isRequired,
18
29
  className: PropTypes.string,
@@ -25,12 +36,10 @@ export default memo(shapeComponent(class ApiMakerBootstrapSortLink extends BaseC
25
36
  setup() {
26
37
  const { attribute, defaultParams, query } = this.props;
27
38
  const { qParams, searchKey, sortAttribute, sortMode } = useSorting({ defaultParams, query });
28
- this.setInstance({
29
- isSortedByAttribute: sortAttribute == attribute,
30
- qParams,
31
- searchKey,
32
- sortMode
33
- });
39
+ this.isSortedByAttribute = sortAttribute == attribute;
40
+ this.qParams = qParams;
41
+ this.searchKey = searchKey;
42
+ this.sortMode = sortMode;
34
43
  this.queryParams = useQueryParams();
35
44
  this.searchKey = this.p.query.queryArgs.searchKey || "q";
36
45
  this.attribute = inflection.underscore(this.p.attribute);
@@ -75,4 +84,4 @@ export default memo(shapeComponent(class ApiMakerBootstrapSortLink extends BaseC
75
84
  return query.modelClass().humanAttributeName(attribute);
76
85
  }
77
86
  }));
78
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic29ydC1saW5rLmpzIiwic291cmNlUm9vdCI6Ii9zcmMvIiwic291cmNlcyI6WyJib290c3RyYXAvc29ydC1saW5rLmpzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxLQUFLLFVBQVUsTUFBTSxZQUFZLENBQUE7QUFDeEMsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLDRDQUE0QyxDQUFBO0FBQ3pFLE9BQU8sYUFBYSxNQUFNLG1CQUFtQixDQUFBLENBQUMsbUNBQW1DO0FBQ2pGLE9BQU8sSUFBSSxNQUFNLGVBQWUsQ0FBQTtBQUNoQyxPQUFPLElBQUksTUFBTSxTQUFTLENBQUE7QUFDMUIsT0FBTyxTQUFTLE1BQU0sWUFBWSxDQUFBO0FBQ2xDLE9BQU8sS0FBSyxNQUFNLE9BQU8sQ0FBQTtBQUN6QixPQUFPLElBQUksTUFBTSxlQUFlLENBQUE7QUFDaEMsT0FBTyxJQUFJLE1BQU0saUNBQWlDLENBQUE7QUFDbEQsT0FBTyxFQUFFLE1BQU0sSUFBSSxDQUFBO0FBQ25CLE9BQU8sU0FBUyxNQUFNLGtCQUFrQixDQUFBO0FBQ3hDLE9BQU8sY0FBYyxNQUFNLCtDQUErQyxDQUFBO0FBQzFFLE9BQU8sVUFBVSxNQUFNLHlCQUF5QixDQUFBO0FBRWhELGVBQWUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLHlCQUEwQixTQUFRLGFBQWE7SUFDdEYsTUFBTSxDQUFDLFNBQVMsR0FBRztRQUNqQixTQUFTLEVBQUUsU0FBUyxDQUFDLE1BQU0sQ0FBQyxVQUFVO1FBQ3RDLFNBQVMsRUFBRSxTQUFTLENBQUMsTUFBTTtRQUMzQixhQUFhLEVBQUUsU0FBUyxDQUFDLE1BQU07UUFDL0IsYUFBYSxFQUFFLFNBQVMsQ0FBQyxNQUFNO1FBQy9CLFNBQVMsRUFBRSxTQUFTLENBQUMsSUFBSTtRQUN6QixLQUFLLEVBQUUsU0FBUyxDQUFDLE1BQU0sQ0FBQyxVQUFVO1FBQ2xDLEtBQUssRUFBRSxTQUFTLENBQUMsR0FBRztLQUNyQixDQUFBO0lBRUQsS0FBSztRQUNI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QUMsY0FBYyxFQUFDLElBQUksRUFBRSxFQUFFLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsZUFBZSxFQUFFLEVBQUMsVUFBVSxFQUFFLENBQUMsRUFBQyxDQUFDLEdBQUksRUFFNUYsbUJBQW1CLElBQUksUUFBUSxJQUFJLE1BQU07b0JBQ3hDLEtBQUMsSUFBSSxJQUFDLElBQUksRUFBQyxZQUFZLEVBQUMsSUFBSSxFQUFFLEVBQUUsRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhLEVBQUUsRUFBQyxVQUFVLEVBQUUsQ0FBQyxFQUFDLENBQUMsR0FBSSxJQUUzRSxDQUNqQixDQUFBO0lBQ0gsQ0FBQztJQUVELGFBQWEsR0FBRyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsSUFBSSxJQUFJLENBQUE7SUFFdEQsS0FBSztRQUNILE1BQU0sRUFBQyxTQUFTLEVBQUUsS0FBSyxFQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQTtRQUNqQyxNQUFNLEVBQUMsS0FBSyxFQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQTtRQUUxQixJQUFJLEtBQUs7WUFBRSxPQUFPLEtBQUssQ0FBQTtRQUV2QixPQUFPLEtBQUssQ0FBQyxVQUFVLEVBQUUsQ0FBQyxrQkFBa0IsQ0FBQyxTQUFTLENBQUMsQ0FBQTtJQUN6RCxDQUFDO0NBQ0YsQ0FBQyxDQUFDLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBpbmZsZWN0aW9uIGZyb20gXCJpbmZsZWN0aW9uXCJcbmltcG9ydCB7c2hhcGVDb21wb25lbnR9IGZyb20gXCJzZXQtc3RhdGUtY29tcGFyZS9idWlsZC9zaGFwZS1jb21wb25lbnQuanNcIlxuaW1wb3J0IEJhc2VDb21wb25lbnQgZnJvbSBcIi4uL2Jhc2UtY29tcG9uZW50XCIgLy8gZXNsaW50LWRpc2FibGUtbGluZSBzb3J0LWltcG9ydHNcbmltcG9ydCBJY29uIGZyb20gXCIuLi91dGlscy9pY29uXCJcbmltcG9ydCBMaW5rIGZyb20gXCIuLi9saW5rXCJcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIlxuaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiXG5pbXBvcnQgVGV4dCBmcm9tIFwiLi4vdXRpbHMvdGV4dFwiXG5pbXBvcnQgbWVtbyBmcm9tIFwic2V0LXN0YXRlLWNvbXBhcmUvYnVpbGQvbWVtby5qc1wiXG5pbXBvcnQgcXMgZnJvbSBcInFzXCJcbmltcG9ydCB1cmxFbmNvZGUgZnJvbSBcIi4uL3VybC1lbmNvZGUuanNcIlxuaW1wb3J0IHVzZVF1ZXJ5UGFyYW1zIGZyb20gXCJvbi1sb2NhdGlvbi1jaGFuZ2VkL2J1aWxkL3VzZS1xdWVyeS1wYXJhbXMuanNcIlxuaW1wb3J0IHVzZVNvcnRpbmcgZnJvbSBcIi4uL3RhYmxlL3VzZS1zb3J0aW5nLmpzXCJcblxuZXhwb3J0IGRlZmF1bHQgbWVtbyhzaGFwZUNvbXBvbmVudChjbGFzcyBBcGlNYWtlckJvb3RzdHJhcFNvcnRMaW5rIGV4dGVuZHMgQmFzZUNvbXBvbmVudCB7XG4gIHN0YXRpYyBwcm9wVHlwZXMgPSB7XG4gICAgYXR0cmlidXRlOiBQcm9wVHlwZXMuc3RyaW5nLmlzUmVxdWlyZWQsXG4gICAgY2xhc3NOYW1lOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAgIGRlZmF1bHRQYXJhbXM6IFByb3BUeXBlcy5vYmplY3QsXG4gICAgbGlua0NvbXBvbmVudDogUHJvcFR5cGVzLm9iamVjdCxcbiAgICBvbkNoYW5nZWQ6IFByb3BUeXBlcy5mdW5jLFxuICAgIHF1ZXJ5OiBQcm9wVHlwZXMub2JqZWN0LmlzUmVxdWlyZWQsXG4gICAgdGl0bGU6IFByb3BUeXBlcy5hbnlcbiAgfVxuXG4gIHNldHVwKCkge1xuICAgIGNvbnN0IHthdHRyaWJ1dGUsIGRlZmF1bHRQYXJhbXMsIHF1ZXJ5fSA9IHRoaXMucHJvcHNcbiAgICBjb25zdCB7cVBhcmFtcywgc2VhcmNoS2V5LCBzb3J0QXR0cmlidXRlLCBzb3J0TW9kZX0gPSB1c2VTb3J0aW5nKHtkZWZhdWx0UGFyYW1zLCBxdWVyeX0pXG5cbiAgICB0aGlzLnNldEluc3RhbmNlKHtcbiAgICAgIGlzU29ydGVkQnlBdHRyaWJ1dGU6IHNvcnRBdHRyaWJ1dGUgPT0gYXR0cmlidXRlLFxuICAgICAgcVBhcmFtcyxcbiAgICAgIHNlYXJjaEtleSxcbiAgICAgIHNvcnRNb2RlXG4gICAgfSlcblxuICAgIHRoaXMucXVlcnlQYXJhbXMgPSB1c2VRdWVyeVBhcmFtcygpXG4gICAgdGhpcy5zZWFyY2hLZXkgPSB0aGlzLnAucXVlcnkucXVlcnlBcmdzLnNlYXJjaEtleSB8fCBcInFcIlxuICAgIHRoaXMuYXR0cmlidXRlID0gaW5mbGVjdGlvbi51bmRlcnNjb3JlKHRoaXMucC5hdHRyaWJ1dGUpXG4gIH1cblxuICBocmVmICgpIHtcbiAgICBjb25zdCBxUGFyYW1zID0gey4uLnRoaXMudHQucVBhcmFtc31cbiAgICBjb25zdCB7YXR0cmlidXRlLCBxdWVyeVBhcmFtcywgc2VhcmNoS2V5LCBzb3J0TW9kZX0gPSB0aGlzLnR0XG4gICAgY29uc3QgbmV3UXVlcnlQYXJhbXMgPSB7Li4ucXVlcnlQYXJhbXN9XG5cbiAgICBxUGFyYW1zLnMgPSBgJHthdHRyaWJ1dGV9ICR7c29ydE1vZGUgPT0gXCJhc2NcIiA/IFwiZGVzY1wiIDogXCJhc2NcIn1gXG5cbiAgICBuZXdRdWVyeVBhcmFtc1tzZWFyY2hLZXldID0gSlNPTi5zdHJpbmdpZnkocVBhcmFtcylcblxuICAgIGNvbnN0IG5ld1BhcmFtcyA9IHFzLnN0cmluZ2lmeShuZXdRdWVyeVBhcmFtcywge2VuY29kZXI6IHVybEVuY29kZX0pXG4gICAgY29uc3QgbmV3UGF0aCA9IGAke2xvY2F0aW9uLnBhdGhuYW1lfT8ke25ld1BhcmFtc31gXG5cbiAgICByZXR1cm4gbmV3UGF0aFxuICB9XG5cbiAgcmVuZGVyICgpIHtcbiAgICBjb25zdCB7aXNTb3J0ZWRCeUF0dHJpYnV0ZSwgc29ydE1vZGV9ID0gdGhpcy50dFxuICAgIGNvbnN0IExpbmtDb21wb25lbnQgPSB0aGlzLmxpbmtDb21wb25lbnQoKVxuICAgIGNvbnN0IHthdHRyaWJ1dGUsIGNsYXNzTmFtZSwgZGF0YVNldCwgZGVmYXVsdFBhcmFtcywgbGlua0NvbXBvbmVudCwgb25DaGFuZ2VkLCBxdWVyeSwgc3R5bGUsIHRleHRQcm9wcywgdGl0bGUsIC4uLnJlc3RQcm9wc30gPSB0aGlzLnByb3BzXG4gICAgY29uc3QgYWN0dWFsRGF0YVNldCA9IHtcbiAgICAgIGF0dHJpYnV0ZSxcbiAgICAgIGNsYXNzOiBjbGFzc05hbWUsXG4gICAgICBjb21wb25lbnQ6IFwiYXBpLW1ha2VyL2Jvb3RzdHJhcC9zb3J0LWxpbmtcIixcbiAgICAgIHNvcnRNb2RlOiB0aGlzLnR0LnNvcnRNb2RlLFxuICAgICAgLi4uZGF0YVNldFxuICAgIH1cbiAgICBjb25zdCBhY3R1YWxTdHlsZSA9IHtcbiAgICAgIGRpc3BsYXk6IFwiZmxleFwiLFxuICAgICAgZmxleERpcmVjdGlvbjogXCJyb3dcIixcbiAgICAgIGFsaWduSXRlbXM6IFwiY2VudGVyXCIsXG4gICAgICAuLi5zdHlsZVxuICAgIH1cblxuICAgIHJldHVybiAoXG4gICAgICA8TGlua0NvbXBvbmVudFxuICAgICAgICBkYXRhU2V0PXthY3R1YWxEYXRhU2V0fVxuICAgICAgICBzdHlsZT17YWN0dWFsU3R5bGV9XG4gICAgICAgIHRvPXt0aGlzLmhyZWYoKX1cbiAgICAgICAgey4uLnJlc3RQcm9wc31cbiAgICAgID5cbiAgICAgICAgPFRleHQgey4uLnRleHRQcm9wc30+XG4gICAgICAgICAge3RoaXMudGl0bGUoKX1cbiAgICAgICAgPC9UZXh0PlxuICAgICAgICB7aXNTb3J0ZWRCeUF0dHJpYnV0ZSAmJiBzb3J0TW9kZSA9PSBcImFzY1wiICYmXG4gICAgICAgICAgPEljb24gbmFtZT1cImNoZXZyb24tZG93blwiIHNpemU9ezE0fSBzdHlsZT17dGhpcy5jYWNoZShcImRvd25JY29uU3R5bGVcIiwge21hcmdpbkxlZnQ6IDN9KX0gLz5cbiAgICAgICAgfVxuICAgICAgICB7aXNTb3J0ZWRCeUF0dHJpYnV0ZSAmJiBzb3J0TW9kZSA9PSBcImRlc2NcIiAmJlxuICAgICAgICAgIDxJY29uIG5hbWU9XCJjaGV2cm9uLXVwXCIgc2l6ZT17MTR9IHN0eWxlPXt0aGlzLmNhY2hlKFwidXBJY29uU3R5bGVcIiwge21hcmdpbkxlZnQ6IDN9KX0gLz5cbiAgICAgICAgfVxuICAgICAgPC9MaW5rQ29tcG9uZW50PlxuICAgIClcbiAgfVxuXG4gIGxpbmtDb21wb25lbnQgPSAoKSA9PiB0aGlzLnByb3BzLmxpbmtDb21wb25lbnQgfHwgTGlua1xuXG4gIHRpdGxlICgpIHtcbiAgICBjb25zdCB7YXR0cmlidXRlLCBxdWVyeX0gPSB0aGlzLnBcbiAgICBjb25zdCB7dGl0bGV9ID0gdGhpcy5wcm9wc1xuXG4gICAgaWYgKHRpdGxlKSByZXR1cm4gdGl0bGVcblxuICAgIHJldHVybiBxdWVyeS5tb2RlbENsYXNzKCkuaHVtYW5BdHRyaWJ1dGVOYW1lKGF0dHJpYnV0ZSlcbiAgfVxufSkpXG4iXX0=
87
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic29ydC1saW5rLmpzIiwic291cmNlUm9vdCI6Ii9zcmMvIiwic291cmNlcyI6WyJib290c3RyYXAvc29ydC1saW5rLmpzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsWUFBWTtBQUNaLE9BQU8sS0FBSyxVQUFVLE1BQU0sWUFBWSxDQUFBO0FBQ3hDLE9BQU8sRUFBQyxjQUFjLEVBQUUsY0FBYyxFQUFDLE1BQU0sNENBQTRDLENBQUE7QUFDekYsT0FBTyxJQUFJLE1BQU0sZUFBZSxDQUFBO0FBQ2hDLE9BQU8sSUFBSSxNQUFNLFNBQVMsQ0FBQTtBQUMxQixPQUFPLFNBQVMsTUFBTSxZQUFZLENBQUE7QUFDbEMsT0FBTyxLQUFLLE1BQU0sT0FBTyxDQUFBO0FBQ3pCLE9BQU8sSUFBSSxNQUFNLGVBQWUsQ0FBQTtBQUNoQyxPQUFPLElBQUksTUFBTSxpQ0FBaUMsQ0FBQTtBQUNsRCxPQUFPLEVBQUUsTUFBTSxJQUFJLENBQUE7QUFDbkIsT0FBTyxTQUFTLE1BQU0sa0JBQWtCLENBQUE7QUFDeEMsT0FBTyxjQUFjLE1BQU0sK0NBQStDLENBQUE7QUFDMUUsT0FBTyxVQUFVLE1BQU0seUJBQXlCLENBQUE7QUFFaEQ7Ozs7Ozs7OztHQVNHO0FBQ0gsNkNBQTZDO0FBQzdDLGVBQWUsSUFBSSxDQUFDLGNBQWMsQ0FBQywrQ0FBK0MsQ0FBQyxNQUFNLHlCQUEwQixTQUFRLGNBQWM7SUFDdkksTUFBTSxDQUFDLFNBQVMsR0FBRztRQUNqQixTQUFTLEVBQUUsU0FBUyxDQUFDLE1BQU0sQ0FBQyxVQUFVO1FBQ3RDLFNBQVMsRUFBRSxTQUFTLENBQUMsTUFBTTtRQUMzQixhQUFhLEVBQUUsU0FBUyxDQUFDLE1BQU07UUFDL0IsYUFBYSxFQUFFLFNBQVMsQ0FBQyxNQUFNO1FBQy9CLFNBQVMsRUFBRSxTQUFTLENBQUMsSUFBSTtRQUN6QixLQUFLLEVBQUUsU0FBUyxDQUFDLE1BQU0sQ0FBQyxVQUFVO1FBQ2xDLEtBQUssRUFBRSxTQUFTLENBQUMsR0FBRztLQUNyQixD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RUFBRSxHQUNSLEVBQ04sbUJBQW1CLElBQUksUUFBUSxJQUFJLEtBQUs7b0JBQ3ZDLEtBQUMsSUFBSSxJQUFDLElBQUksRUFBQyxjQUFjLEVBQUMsSUFBSSxFQUFFLEVBQUUsRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxlQUFlLEVBQUUsRUFBQyxVQUFVLEVBQUUsQ0FBQyxFQUFDLENBQUMsR0FBSSxFQUU1RixtQkFBbUIsSUFBSSxRQUFRLElBQUksTUFBTTtvQkFDeEMsS0FBQyxJQUFJLElBQUMsSUFBSSxFQUFDLFlBQVksRUFBQyxJQUFJLEVBQUUsRUFBRSxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsRUFBRSxFQUFDLFVBQVUsRUFBRSxDQUFDLEVBQUMsQ0FBQyxHQUFJLElBRTNFLENBQ2pCLENBQUE7SUFDSCxDQUFDO0lBRUQsYUFBYSxHQUFHLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYSxJQUFJLElBQUksQ0FBQTtJQUV0RCxLQUFLO1FBQ0gsTUFBTSxFQUFDLFNBQVMsRUFBRSxLQUFLLEVBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFBO1FBQ2pDLE1BQU0sRUFBQyxLQUFLLEVBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFBO1FBRTFCLElBQUksS0FBSztZQUFFLE9BQU8sS0FBSyxDQUFBO1FBRXZCLE9BQU8sS0FBSyxDQUFDLFVBQVUsRUFBRSxDQUFDLGtCQUFrQixDQUFDLFNBQVMsQ0FBQyxDQUFBO0lBQ3pELENBQUM7Q0FDRixDQUFDLENBQUMsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbIi8vIEB0cy1jaGVja1xuaW1wb3J0ICogYXMgaW5mbGVjdGlvbiBmcm9tIFwiaW5mbGVjdGlvblwiXG5pbXBvcnQge1NoYXBlQ29tcG9uZW50LCBzaGFwZUNvbXBvbmVudH0gZnJvbSBcInNldC1zdGF0ZS1jb21wYXJlL2J1aWxkL3NoYXBlLWNvbXBvbmVudC5qc1wiXG5pbXBvcnQgSWNvbiBmcm9tIFwiLi4vdXRpbHMvaWNvblwiXG5pbXBvcnQgTGluayBmcm9tIFwiLi4vbGlua1wiXG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCJcbmltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIlxuaW1wb3J0IFRleHQgZnJvbSBcIi4uL3V0aWxzL3RleHRcIlxuaW1wb3J0IG1lbW8gZnJvbSBcInNldC1zdGF0ZS1jb21wYXJlL2J1aWxkL21lbW8uanNcIlxuaW1wb3J0IHFzIGZyb20gXCJxc1wiXG5pbXBvcnQgdXJsRW5jb2RlIGZyb20gXCIuLi91cmwtZW5jb2RlLmpzXCJcbmltcG9ydCB1c2VRdWVyeVBhcmFtcyBmcm9tIFwib24tbG9jYXRpb24tY2hhbmdlZC9idWlsZC91c2UtcXVlcnktcGFyYW1zLmpzXCJcbmltcG9ydCB1c2VTb3J0aW5nIGZyb20gXCIuLi90YWJsZS91c2Utc29ydGluZy5qc1wiXG5cbi8qKlxuICogQHR5cGVkZWYge29iamVjdH0gUHJvcHNcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBhdHRyaWJ1dGVcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBbY2xhc3NOYW1lXVxuICogQHByb3BlcnR5IHtvYmplY3R9IFtkZWZhdWx0UGFyYW1zXVxuICogQHByb3BlcnR5IHtvYmplY3R9IFtsaW5rQ29tcG9uZW50XVxuICogQHByb3BlcnR5IHtGdW5jdGlvbn0gW29uQ2hhbmdlZF1cbiAqIEBwcm9wZXJ0eSB7b2JqZWN0fSBxdWVyeVxuICogQHByb3BlcnR5IHtSZWFjdC5SZWFjdE5vZGV9IFt0aXRsZV1cbiAqL1xuLyoqIEB0eXBlZGVmIHtSZWNvcmQ8c3RyaW5nLCBuZXZlcj59IFN0YXRlICovXG5leHBvcnQgZGVmYXVsdCBtZW1vKHNoYXBlQ29tcG9uZW50KC8qKiBAYXVnbWVudHMge1NoYXBlQ29tcG9uZW50PFByb3BzLCBTdGF0ZT59ICovIGNsYXNzIEFwaU1ha2VyQm9vdHN0cmFwU29ydExpbmsgZXh0ZW5kcyBTaGFwZUNvbXBvbmVudCB7XG4gIHN0YXRpYyBwcm9wVHlwZXMgPSB7XG4gICAgYXR0cmlidXRlOiBQcm9wVHlwZXMuc3RyaW5nLmlzUmVxdWlyZWQsXG4gICAgY2xhc3NOYW1lOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAgIGRlZmF1bHRQYXJhbXM6IFByb3BUeXBlcy5vYmplY3QsXG4gICAgbGlua0NvbXBvbmVudDogUHJvcFR5cGVzLm9iamVjdCxcbiAgICBvbkNoYW5nZWQ6IFByb3BUeXBlcy5mdW5jLFxuICAgIHF1ZXJ5OiBQcm9wVHlwZXMub2JqZWN0LmlzUmVxdWlyZWQsXG4gICAgdGl0bGU6IFByb3BUeXBlcy5hbnlcbiAgfVxuXG4gIHNldHVwKCkge1xuICAgIGNvbnN0IHthdHRyaWJ1dGUsIGRlZmF1bHRQYXJhbXMsIHF1ZXJ5fSA9IHRoaXMucHJvcHNcbiAgICBjb25zdCB7cVBhcmFtcywgc2VhcmNoS2V5LCBzb3J0QXR0cmlidXRlLCBzb3J0TW9kZX0gPSB1c2VTb3J0aW5nKHtkZWZhdWx0UGFyYW1zLCBxdWVyeX0pXG5cbiAgICB0aGlzLmlzU29ydGVkQnlBdHRyaWJ1dGUgPSBzb3J0QXR0cmlidXRlID09IGF0dHJpYnV0ZVxuICAgIHRoaXMucVBhcmFtcyA9IHFQYXJhbXNcbiAgICB0aGlzLnNlYXJjaEtleSA9IHNlYXJjaEtleVxuICAgIHRoaXMuc29ydE1vZGUgPSBzb3J0TW9kZVxuXG4gICAgdGhpcy5xdWVyeVBhcmFtcyA9IHVzZVF1ZXJ5UGFyYW1zKClcbiAgICB0aGlzLnNlYXJjaEtleSA9IHRoaXMucC5xdWVyeS5xdWVyeUFyZ3Muc2VhcmNoS2V5IHx8IFwicVwiXG4gICAgdGhpcy5hdHRyaWJ1dGUgPSBpbmZsZWN0aW9uLnVuZGVyc2NvcmUodGhpcy5wLmF0dHJpYnV0ZSlcbiAgfVxuXG4gIGhyZWYgKCkge1xuICAgIGNvbnN0IHFQYXJhbXMgPSB7Li4udGhpcy50dC5xUGFyYW1zfVxuICAgIGNvbnN0IHthdHRyaWJ1dGUsIHF1ZXJ5UGFyYW1zLCBzZWFyY2hLZXksIHNvcnRNb2RlfSA9IHRoaXMudHRcbiAgICBjb25zdCBuZXdRdWVyeVBhcmFtcyA9IHsuLi5xdWVyeVBhcmFtc31cblxuICAgIHFQYXJhbXMucyA9IGAke2F0dHJpYnV0ZX0gJHtzb3J0TW9kZSA9PSBcImFzY1wiID8gXCJkZXNjXCIgOiBcImFzY1wifWBcblxuICAgIG5ld1F1ZXJ5UGFyYW1zW3NlYXJjaEtleV0gPSBKU09OLnN0cmluZ2lmeShxUGFyYW1zKVxuXG4gICAgY29uc3QgbmV3UGFyYW1zID0gcXMuc3RyaW5naWZ5KG5ld1F1ZXJ5UGFyYW1zLCB7ZW5jb2RlcjogdXJsRW5jb2RlfSlcbiAgICBjb25zdCBuZXdQYXRoID0gYCR7bG9jYXRpb24ucGF0aG5hbWV9PyR7bmV3UGFyYW1zfWBcblxuICAgIHJldHVybiBuZXdQYXRoXG4gIH1cblxuICByZW5kZXIgKCkge1xuICAgIGNvbnN0IHtpc1NvcnRlZEJ5QXR0cmlidXRlLCBzb3J0TW9kZX0gPSB0aGlzLnR0XG4gICAgY29uc3QgTGlua0NvbXBvbmVudCA9IHRoaXMubGlua0NvbXBvbmVudCgpXG4gICAgY29uc3Qge2F0dHJpYnV0ZSwgY2xhc3NOYW1lLCBkYXRhU2V0LCBkZWZhdWx0UGFyYW1zLCBsaW5rQ29tcG9uZW50LCBvbkNoYW5nZWQsIHF1ZXJ5LCBzdHlsZSwgdGV4dFByb3BzLCB0aXRsZSwgLi4ucmVzdFByb3BzfSA9IHRoaXMucHJvcHNcbiAgICBjb25zdCBhY3R1YWxEYXRhU2V0ID0ge1xuICAgICAgYXR0cmlidXRlLFxuICAgICAgY2xhc3M6IGNsYXNzTmFtZSxcbiAgICAgIGNvbXBvbmVudDogXCJhcGktbWFrZXIvYm9vdHN0cmFwL3NvcnQtbGlua1wiLFxuICAgICAgc29ydE1vZGU6IHRoaXMudHQuc29ydE1vZGUsXG4gICAgICAuLi5kYXRhU2V0XG4gICAgfVxuICAgIGNvbnN0IGFjdHVhbFN0eWxlID0ge1xuICAgICAgZGlzcGxheTogXCJmbGV4XCIsXG4gICAgICBmbGV4RGlyZWN0aW9uOiBcInJvd1wiLFxuICAgICAgYWxpZ25JdGVtczogXCJjZW50ZXJcIixcbiAgICAgIC4uLnN0eWxlXG4gICAgfVxuXG4gICAgcmV0dXJuIChcbiAgICAgIDxMaW5rQ29tcG9uZW50XG4gICAgICAgIGRhdGFTZXQ9e2FjdHVhbERhdGFTZXR9XG4gICAgICAgIHN0eWxlPXthY3R1YWxTdHlsZX1cbiAgICAgICAgdG89e3RoaXMuaHJlZigpfVxuICAgICAgICB7Li4ucmVzdFByb3BzfVxuICAgICAgPlxuICAgICAgICA8VGV4dCB7Li4udGV4dFByb3BzfT5cbiAgICAgICAgICB7dGhpcy50aXRsZSgpfVxuICAgICAgICA8L1RleHQ+XG4gICAgICAgIHtpc1NvcnRlZEJ5QXR0cmlidXRlICYmIHNvcnRNb2RlID09IFwiYXNjXCIgJiZcbiAgICAgICAgICA8SWNvbiBuYW1lPVwiY2hldnJvbi1kb3duXCIgc2l6ZT17MTR9IHN0eWxlPXt0aGlzLmNhY2hlKFwiZG93bkljb25TdHlsZVwiLCB7bWFyZ2luTGVmdDogM30pfSAvPlxuICAgICAgICB9XG4gICAgICAgIHtpc1NvcnRlZEJ5QXR0cmlidXRlICYmIHNvcnRNb2RlID09IFwiZGVzY1wiICYmXG4gICAgICAgICAgPEljb24gbmFtZT1cImNoZXZyb24tdXBcIiBzaXplPXsxNH0gc3R5bGU9e3RoaXMuY2FjaGUoXCJ1cEljb25TdHlsZVwiLCB7bWFyZ2luTGVmdDogM30pfSAvPlxuICAgICAgICB9XG4gICAgICA8L0xpbmtDb21wb25lbnQ+XG4gICAgKVxuICB9XG5cbiAgbGlua0NvbXBvbmVudCA9ICgpID0+IHRoaXMucHJvcHMubGlua0NvbXBvbmVudCB8fCBMaW5rXG5cbiAgdGl0bGUgKCkge1xuICAgIGNvbnN0IHthdHRyaWJ1dGUsIHF1ZXJ5fSA9IHRoaXMucFxuICAgIGNvbnN0IHt0aXRsZX0gPSB0aGlzLnByb3BzXG5cbiAgICBpZiAodGl0bGUpIHJldHVybiB0aXRsZVxuXG4gICAgcmV0dXJuIHF1ZXJ5Lm1vZGVsQ2xhc3MoKS5odW1hbkF0dHJpYnV0ZU5hbWUoYXR0cmlidXRlKVxuICB9XG59KSlcbiJdfQ==
@@ -1,48 +1,225 @@
1
+ /** @typedef {import("./cable-subscription.js").default} CableSubscription */
2
+ /** @typedef {import("./base-model.js").default} BaseModel */
3
+ /** @typedef {object | string | number | boolean | null | Array<object | string | number | boolean | null>} CableRequestValue */
4
+ /** @typedef {Record<string, CableRequestValue>} CableRefreshArgs */
5
+ /** @typedef {string | number | boolean} ConnectionEventValue */
6
+ /** @typedef {string[]} ModelSubscriptionPath */
7
+ /** @typedef {{model: BaseModel}} ModelMutationPayload */
8
+ /** @typedef {Record<string, string | number | boolean | null | Array<string | number | boolean | null>>} CableEventArgs */
9
+ /** @typedef {{args: CableEventArgs, eventName: string, model: BaseModel}} ModelEventPayload */
10
+ /** @typedef {{args: CableEventArgs, eventName: string}} ModelClassEventPayload */
11
+ /** @typedef {(payload: ModelMutationPayload | ModelEventPayload | ModelClassEventPayload) => void} ModelEventCallback */
1
12
  /** ActionCable connection pool keyed by stream identifiers. */
2
13
  export default class ApiMakerCableConnectionPool {
3
- /** current. */
4
- static current(): any;
14
+ /**
15
+ * Returns the shared connection pool instance.
16
+ * @returns {ApiMakerCableConnectionPool}
17
+ */
18
+ static current(): ApiMakerCableConnectionPool;
5
19
  /** @returns {void} */
6
20
  static resetCurrent(): void;
7
21
  cableSubscriptionPools: any[];
8
22
  connections: {};
9
23
  upcomingSubscriptionData: {};
10
24
  upcomingSubscriptions: {};
11
- /** connectEventToExistingSubscription. */
25
+ /**
26
+ * Attaches a logical subscription to an already-open shared ActionCable stream when possible.
27
+ * @param {object} root0
28
+ * @param {ModelSubscriptionPath} root0.path
29
+ * @param {CableSubscription} root0.subscription
30
+ * @param {ConnectionEventValue} root0.value
31
+ * @returns {boolean}
32
+ */
12
33
  connectEventToExistingSubscription({ path, subscription, value }: {
13
- path: any;
14
- subscription: any;
15
- value: any;
34
+ path: ModelSubscriptionPath;
35
+ subscription: CableSubscription;
36
+ value: ConnectionEventValue;
16
37
  }): boolean;
17
- /** connectModelEvent. */
38
+ /**
39
+ * Registers one logical model subscription, reusing an existing shared connection when available.
40
+ * @param {object} root0
41
+ * @param {ModelEventCallback} root0.callback
42
+ * @param {ModelSubscriptionPath} root0.path
43
+ * @param {ConnectionEventValue} root0.value
44
+ * @returns {CableSubscription}
45
+ */
18
46
  connectModelEvent({ callback, path, value }: {
19
- callback: any;
20
- path: any;
21
- value: any;
47
+ callback: ModelEventCallback;
48
+ path: ModelSubscriptionPath;
49
+ value: ConnectionEventValue;
22
50
  }): CableSubscription;
23
- /** connectCreated. */
24
- connectCreated: (modelName: any, callback: any) => CableSubscription;
25
- /** connectEvent. */
26
- connectEvent: (modelName: any, modelId: any, eventName: any, callback: any) => CableSubscription;
27
- /** connectDestroyed. */
28
- connectDestroyed: (modelName: any, modelId: any, callback: any) => CableSubscription;
29
- /** connectModelClassEvent. */
30
- connectModelClassEvent: (modelName: any, eventName: any, callback: any) => CableSubscription;
31
- /** connectUpdate. */
32
- connectUpdate: (modelName: any, modelId: any, callback: any) => CableSubscription;
33
- /** connectUpcoming. */
51
+ /**
52
+ * Subscribes to created events for a model class.
53
+ * @param {string} modelName
54
+ * @param {(payload: ModelMutationPayload) => void} callback
55
+ * @returns {CableSubscription}
56
+ */
57
+ connectCreated: (modelName: string, callback: (payload: ModelMutationPayload) => void) => CableSubscription;
58
+ /**
59
+ * Subscribes to a named event for one persisted model instance.
60
+ * @param {string} modelName
61
+ * @param {string | number} modelId
62
+ * @param {string} eventName
63
+ * @param {(payload: ModelEventPayload) => void} callback
64
+ * @returns {CableSubscription}
65
+ */
66
+ connectEvent: (modelName: string, modelId: string | number, eventName: string, callback: (payload: ModelEventPayload) => void) => CableSubscription;
67
+ /**
68
+ * Subscribes to destroy events for one persisted model instance.
69
+ * @param {string} modelName
70
+ * @param {string | number} modelId
71
+ * @param {(payload: ModelMutationPayload) => void} callback
72
+ * @returns {CableSubscription}
73
+ */
74
+ connectDestroyed: (modelName: string, modelId: string | number, callback: (payload: ModelMutationPayload) => void) => CableSubscription;
75
+ /**
76
+ * Subscribes to one named model-class event stream.
77
+ * @param {string} modelName
78
+ * @param {string} eventName
79
+ * @param {(payload: ModelClassEventPayload) => void} callback
80
+ * @returns {CableSubscription}
81
+ */
82
+ connectModelClassEvent: (modelName: string, eventName: string, callback: (payload: ModelClassEventPayload) => void) => CableSubscription;
83
+ /**
84
+ * Subscribes to update events for one persisted model instance.
85
+ * @param {string} modelName
86
+ * @param {string | number} modelId
87
+ * @param {(payload: ModelMutationPayload) => void} callback
88
+ * @returns {CableSubscription}
89
+ */
90
+ connectUpdate: (modelName: string, modelId: string | number, callback: (payload: ModelMutationPayload) => void) => CableSubscription;
91
+ /** Opens one shared ActionCable subscription for all queued logical subscriptions. */
34
92
  connectUpcoming: () => void;
35
93
  /**
36
94
  * Refreshes auth across the existing subscription pools.
37
95
  *
38
- * @param {Record<string, any>} args
96
+ * @param {CableRefreshArgs} args
39
97
  * @returns {Promise<void>}
40
98
  */
41
- refreshAuthentication(args: Record<string, any>): Promise<void>;
99
+ refreshAuthentication(args: CableRefreshArgs): Promise<void>;
42
100
  /** @returns {void} */
43
101
  reset(): void;
44
102
  scheduleConnectUpcomingRunLast: RunLast;
45
103
  }
46
- import CableSubscription from "./cable-subscription.js";
104
+ export type CableSubscription = import("./cable-subscription.js").default;
105
+ export type BaseModel = {
106
+ abilities: import("./base-model.js").ModelAbilityMap;
107
+ changes: import("./base-model.js").ModelDataMap;
108
+ collection: import("./collection.js").default<any>;
109
+ _identifierKey: string | number;
110
+ _markedForDestruction: boolean;
111
+ modelData: import("./base-model.js").ModelDataMap;
112
+ newRecord: boolean;
113
+ previousModelData: any;
114
+ preloadedRelationships: import("./base-model.js").PreloadedRelationshipMap;
115
+ relationshipsCache: import("./base-model.js").LoadedRelationshipMap;
116
+ relationships: import("./base-model.js").LoadedRelationshipMap;
117
+ uniqueKeyValue: number;
118
+ assignAttributes(newAttributes: ModelDataMap): void;
119
+ attributes(): ModelDataMap;
120
+ can(givenAbilityName: string): boolean;
121
+ clone(): /*elided*/ any;
122
+ cacheKey(): number | string;
123
+ localCacheKey(): string;
124
+ fullCacheKey(): string;
125
+ create(attributes?: ModelDataMap, options?: ParseValidationErrorsOptions): Promise<{
126
+ model: /*elided*/ any;
127
+ response: ModelCommandResponse;
128
+ }>;
129
+ createRaw(rawData: RawDataInput, options?: ParseValidationErrorsOptions): Promise<{
130
+ model: /*elided*/ any;
131
+ response: ModelCommandResponse;
132
+ }>;
133
+ destroy(): Promise<{
134
+ model: /*elided*/ any;
135
+ response: ModelCommandResponse;
136
+ }>;
137
+ ensureAbilities(listOfAbilities: string[]): Promise<void>;
138
+ getAttributes(): ModelDataMap;
139
+ handleResponseError(response: ModelCommandResponse): never;
140
+ identifierKey(): number | string;
141
+ isAssociationLoaded(associationName: string): boolean;
142
+ isAssociationLoadedUnderscore(associationNameUnderscore: string): boolean;
143
+ isAssociationPresent(associationName: string): boolean;
144
+ ensureAssociationLoaded(associationName: string): Promise<LoadedRelationshipValue>;
145
+ ensureAssociationLoadedUnderscore(associationNameUnderscore: string): Promise<LoadedRelationshipValue>;
146
+ isAttributeChanged(attributeName: string): boolean;
147
+ isChanged(): boolean;
148
+ isNewRecord(): boolean;
149
+ isPersisted(): boolean;
150
+ savedChangeToAttribute(attributeName: string): boolean;
151
+ setNewModel(model: /*elided*/ any): void;
152
+ setNewModelData(model: /*elided*/ any): void;
153
+ _isDateChanged(oldValue: ModelValue | null | undefined, newValue: ModelValue | null | undefined): boolean | void;
154
+ _isIntegerChanged(oldValue: ModelValue | null | undefined, newValue: ModelValue | null | undefined): boolean | void;
155
+ _isStringChanged(oldValue: ModelValue | null | undefined, newValue: ModelValue | null | undefined): boolean | void;
156
+ modelClassData(): ModelClassDataType;
157
+ reload(): Promise<void>;
158
+ save(): Promise<{
159
+ model: /*elided*/ any;
160
+ response?: object;
161
+ }>;
162
+ saveRaw(rawData: RawDataInput, options?: ParseValidationErrorsOptions & {
163
+ simpleModelErrors?: boolean;
164
+ }): Promise<{
165
+ model: /*elided*/ any;
166
+ response: ModelCommandResponse;
167
+ }>;
168
+ update(newAttributes?: ModelDataMap, options?: ParseValidationErrorsOptions): Promise<{
169
+ model: /*elided*/ any;
170
+ response?: object;
171
+ }>;
172
+ _refreshModelFromResponse(response: ModelCommandResponse): void;
173
+ _refreshModelDataFromResponse(response: ModelCommandResponse): void;
174
+ updateRaw(rawData: RawDataInput, options?: ParseValidationErrorsOptions & {
175
+ simpleModelErrors?: boolean;
176
+ }): Promise<{
177
+ response: ModelCommandResponse;
178
+ model: /*elided*/ any;
179
+ }>;
180
+ isValid(): never;
181
+ isValidOnServer(): Promise<{
182
+ valid: boolean;
183
+ errors: ValidationResponseErrors;
184
+ }>;
185
+ modelClass(): BaseModelClassType;
186
+ preloadRelationship(relationshipName: string, model: /*elided*/ any | /*elided*/ any[] | null): void;
187
+ markForDestruction(): void;
188
+ markedForDestruction(): boolean;
189
+ uniqueKey(): number;
190
+ _callMemberCommand(args: ModelCommandDescriptor, commandArgs: ModelCommandOptions): import("./command-execution.js").default;
191
+ readAttribute(attributeName: string): ModelValue | null | undefined;
192
+ readAttributeUnderscore(attributeName: string): ModelValue | null | undefined;
193
+ isAttributeLoaded(attributeName: string): boolean;
194
+ _isPresent(value: ModelValue | null | undefined): boolean;
195
+ _loadBelongsToReflection(args: RelationshipLoadArgs, queryArgs?: import("./collection.js").QueryArgsType): Promise</*elided*/ any | null>;
196
+ _readBelongsToReflection({ reflectionName }: RelationshipLoadArgs): /*elided*/ any | null;
197
+ _loadHasManyReflection(args: RelationshipLoadArgs, queryArgs?: import("./collection.js").QueryArgsType): Promise</*elided*/ any[]>;
198
+ _loadHasOneReflection(args: RelationshipLoadArgs, queryArgs?: import("./collection.js").QueryArgsType): Promise</*elided*/ any | null>;
199
+ _readHasOneReflection({ reflectionName }: RelationshipLoadArgs): /*elided*/ any | null;
200
+ _readModelDataFromArgs(args?: BaseModelArgsObject): void;
201
+ _readPreloadedRelationships(preloaded: {
202
+ getModel: (relationshipType: string, relationshipId: number | string) => /*elided*/ any;
203
+ }): void;
204
+ primaryKey(): number | string;
205
+ };
206
+ export type CableRequestValue = object | string | number | boolean | null | Array<object | string | number | boolean | null>;
207
+ export type CableRefreshArgs = Record<string, CableRequestValue>;
208
+ export type ConnectionEventValue = string | number | boolean;
209
+ export type ModelSubscriptionPath = string[];
210
+ export type ModelMutationPayload = {
211
+ model: BaseModel;
212
+ };
213
+ export type CableEventArgs = Record<string, string | number | boolean | null | Array<string | number | boolean | null>>;
214
+ export type ModelEventPayload = {
215
+ args: CableEventArgs;
216
+ eventName: string;
217
+ model: BaseModel;
218
+ };
219
+ export type ModelClassEventPayload = {
220
+ args: CableEventArgs;
221
+ eventName: string;
222
+ };
223
+ export type ModelEventCallback = (payload: ModelMutationPayload | ModelEventPayload | ModelClassEventPayload) => void;
47
224
  import RunLast from "./run-last.js";
48
225
  //# sourceMappingURL=cable-connection-pool.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"cable-connection-pool.d.ts","sourceRoot":"/src/","sources":["cable-connection-pool.js"],"names":[],"mappings":"AAOA,+DAA+D;AAC/D;IAME,eAAe;IACf,sBAIC;IAED,sBAAsB;IACtB,uBADc,IAAI,CAQjB;IApBD,8BAA2B;IAC3B,gBAAgB;IAChB,6BAA6B;IAC7B,0BAA0B;IAmB1B,0CAA0C;IAC1C;;;;gBA0BC;IAED,yBAAyB;IACzB;;;;0BAsDC;IAED,sBAAsB;IACtB,iBAAkB,cAAS,EAAE,aAAQ,uBAAkF;IAEvH,oBAAoB;IACpB,eAAgB,cAAS,EAAE,YAAO,EAAE,cAAS,EAAE,aAAQ,uBAIrD;IAEF,wBAAwB;IACxB,mBAAoB,cAAS,EAAE,YAAO,EAAE,aAAQ,uBAAsF;IAEtI,8BAA8B;IAC9B,yBAA0B,cAAS,EAAE,cAAS,EAAE,aAAQ,uBAAkG;IAE1J,qBAAqB;IACrB,gBAAiB,cAAS,EAAE,YAAO,EAAE,aAAQ,uBAAqF;IAElI,uBAAuB;IACvB,4BAaC;IAED;;;;;OAKG;IACH,4BAHW,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GACjB,OAAO,CAAC,IAAI,CAAC,CAMzB;IAED,sBAAsB;IACtB,SADc,IAAI,CAYjB;IAED,wCAAkE;CACnE;8BAlL6B,yBAAyB;oBAEnC,eAAe"}
1
+ {"version":3,"file":"cable-connection-pool.d.ts","sourceRoot":"/src/","sources":["cable-connection-pool.js"],"names":[],"mappings":"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"}
@@ -1,15 +1,30 @@
1
+ // @ts-check
1
2
  import { dig } from "diggerize";
2
- import CableSubscription from "./cable-subscription.js"; // eslint-disable-line sort-imports
3
+ import CableSubscriptionClass from "./cable-subscription.js"; // eslint-disable-line sort-imports
3
4
  import CableSubscriptionPool from "./cable-subscription-pool.js";
4
5
  import RunLast from "./run-last.js";
5
6
  const shared = {};
7
+ /** @typedef {import("./cable-subscription.js").default} CableSubscription */
8
+ /** @typedef {import("./base-model.js").default} BaseModel */
9
+ /** @typedef {object | string | number | boolean | null | Array<object | string | number | boolean | null>} CableRequestValue */
10
+ /** @typedef {Record<string, CableRequestValue>} CableRefreshArgs */
11
+ /** @typedef {string | number | boolean} ConnectionEventValue */
12
+ /** @typedef {string[]} ModelSubscriptionPath */
13
+ /** @typedef {{model: BaseModel}} ModelMutationPayload */
14
+ /** @typedef {Record<string, string | number | boolean | null | Array<string | number | boolean | null>>} CableEventArgs */
15
+ /** @typedef {{args: CableEventArgs, eventName: string, model: BaseModel}} ModelEventPayload */
16
+ /** @typedef {{args: CableEventArgs, eventName: string}} ModelClassEventPayload */
17
+ /** @typedef {(payload: ModelMutationPayload | ModelEventPayload | ModelClassEventPayload) => void} ModelEventCallback */
6
18
  /** ActionCable connection pool keyed by stream identifiers. */
7
19
  export default class ApiMakerCableConnectionPool {
8
20
  cableSubscriptionPools = [];
9
21
  connections = {};
10
22
  upcomingSubscriptionData = {};
11
23
  upcomingSubscriptions = {};
12
- /** current. */
24
+ /**
25
+ * Returns the shared connection pool instance.
26
+ * @returns {ApiMakerCableConnectionPool}
27
+ */
13
28
  static current() {
14
29
  if (!shared.apiMakerCableConnectionPool)
15
30
  shared.apiMakerCableConnectionPool = new ApiMakerCableConnectionPool();
@@ -23,7 +38,14 @@ export default class ApiMakerCableConnectionPool {
23
38
  shared.apiMakerCableConnectionPool.reset();
24
39
  delete shared.apiMakerCableConnectionPool;
25
40
  }
26
- /** connectEventToExistingSubscription. */
41
+ /**
42
+ * Attaches a logical subscription to an already-open shared ActionCable stream when possible.
43
+ * @param {object} root0
44
+ * @param {ModelSubscriptionPath} root0.path
45
+ * @param {CableSubscription} root0.subscription
46
+ * @param {ConnectionEventValue} root0.value
47
+ * @returns {boolean}
48
+ */
27
49
  connectEventToExistingSubscription({ path, subscription, value }) {
28
50
  for (const cableSubscriptionPool of this.cableSubscriptionPools) {
29
51
  if (cableSubscriptionPool.isConnected()) {
@@ -47,9 +69,16 @@ export default class ApiMakerCableConnectionPool {
47
69
  }
48
70
  return false;
49
71
  }
50
- /** connectModelEvent. */
72
+ /**
73
+ * Registers one logical model subscription, reusing an existing shared connection when available.
74
+ * @param {object} root0
75
+ * @param {ModelEventCallback} root0.callback
76
+ * @param {ModelSubscriptionPath} root0.path
77
+ * @param {ConnectionEventValue} root0.value
78
+ * @returns {CableSubscription}
79
+ */
51
80
  connectModelEvent({ callback, path, value }) {
52
- const subscription = new CableSubscription();
81
+ const subscription = new CableSubscriptionClass();
53
82
  subscription.events.addListener("received", callback);
54
83
  if (this.connectEventToExistingSubscription({ path, subscription, value })) {
55
84
  // Managed to connect to existing connection
@@ -85,29 +114,60 @@ export default class ApiMakerCableConnectionPool {
85
114
  currentSubscription.push(subscription);
86
115
  }
87
116
  else {
88
- if (!(value in currentSubscription)) {
89
- currentSubscription[value] = [];
117
+ const subscriptionKey = String(value);
118
+ if (!(subscriptionKey in currentSubscription)) {
119
+ currentSubscription[subscriptionKey] = [];
90
120
  }
91
- currentSubscription[value].push(subscription);
121
+ currentSubscription[subscriptionKey].push(subscription);
92
122
  }
93
123
  this.scheduleConnectUpcomingRunLast.queue();
94
124
  return subscription;
95
125
  }
96
- /** connectCreated. */
126
+ /**
127
+ * Subscribes to created events for a model class.
128
+ * @param {string} modelName
129
+ * @param {(payload: ModelMutationPayload) => void} callback
130
+ * @returns {CableSubscription}
131
+ */
97
132
  connectCreated = (modelName, callback) => this.connectModelEvent({ callback, value: true, path: [modelName, "creates"] });
98
- /** connectEvent. */
133
+ /**
134
+ * Subscribes to a named event for one persisted model instance.
135
+ * @param {string} modelName
136
+ * @param {string | number} modelId
137
+ * @param {string} eventName
138
+ * @param {(payload: ModelEventPayload) => void} callback
139
+ * @returns {CableSubscription}
140
+ */
99
141
  connectEvent = (modelName, modelId, eventName, callback) => this.connectModelEvent({
100
142
  callback,
101
143
  value: modelId,
102
144
  path: [modelName, "events", eventName]
103
145
  });
104
- /** connectDestroyed. */
146
+ /**
147
+ * Subscribes to destroy events for one persisted model instance.
148
+ * @param {string} modelName
149
+ * @param {string | number} modelId
150
+ * @param {(payload: ModelMutationPayload) => void} callback
151
+ * @returns {CableSubscription}
152
+ */
105
153
  connectDestroyed = (modelName, modelId, callback) => this.connectModelEvent({ callback, value: modelId, path: [modelName, "destroys"] });
106
- /** connectModelClassEvent. */
154
+ /**
155
+ * Subscribes to one named model-class event stream.
156
+ * @param {string} modelName
157
+ * @param {string} eventName
158
+ * @param {(payload: ModelClassEventPayload) => void} callback
159
+ * @returns {CableSubscription}
160
+ */
107
161
  connectModelClassEvent = (modelName, eventName, callback) => this.connectModelEvent({ callback, value: eventName, path: [modelName, "model_class_events"] });
108
- /** connectUpdate. */
162
+ /**
163
+ * Subscribes to update events for one persisted model instance.
164
+ * @param {string} modelName
165
+ * @param {string | number} modelId
166
+ * @param {(payload: ModelMutationPayload) => void} callback
167
+ * @returns {CableSubscription}
168
+ */
109
169
  connectUpdate = (modelName, modelId, callback) => this.connectModelEvent({ callback, value: modelId, path: [modelName, "updates"] });
110
- /** connectUpcoming. */
170
+ /** Opens one shared ActionCable subscription for all queued logical subscriptions. */
111
171
  connectUpcoming = () => {
112
172
  const subscriptionData = this.upcomingSubscriptionData;
113
173
  const subscriptions = this.upcomingSubscriptions;
@@ -121,7 +181,7 @@ export default class ApiMakerCableConnectionPool {
121
181
  /**
122
182
  * Refreshes auth across the existing subscription pools.
123
183
  *
124
- * @param {Record<string, any>} args
184
+ * @param {CableRefreshArgs} args
125
185
  * @returns {Promise<void>}
126
186
  */
127
187
  async refreshAuthentication(args) {
@@ -140,4 +200,4 @@ export default class ApiMakerCableConnectionPool {
140
200
  }
141
201
  scheduleConnectUpcomingRunLast = new RunLast(this.connectUpcoming);
142
202
  }
143
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FibGUtY29ubmVjdGlvbi1wb29sLmpzIiwic291cmNlUm9vdCI6Ii9zcmMvIiwic291cmNlcyI6WyJjYWJsZS1jb25uZWN0aW9uLXBvb2wuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLEdBQUcsRUFBQyxNQUFNLFdBQVcsQ0FBQTtBQUM3QixPQUFPLGlCQUFpQixNQUFNLHlCQUF5QixDQUFBLENBQUMsbUNBQW1DO0FBQzNGLE9BQU8scUJBQXFCLE1BQU0sOEJBQThCLENBQUE7QUFDaEUsT0FBTyxPQUFPLE1BQU0sZUFBZSxDQUFBO0FBRW5DLE1BQU0sTUFBTSxHQUFHLEVBQUUsQ0FBQTtBQUVqQiwrREFBK0Q7QUFDL0QsTUFBTSxDQUFDLE9BQU8sT0FBTywyQkFBMkI7SUFDOUMsc0JBQXNCLEdBQUcsRUFBRSxDQUFBO0lBQzNCLFdBQVcsR0FBRyxFQUFFLENBQUE7SUFDaEIsd0JBQXdCLEdBQUcsRUFBRSxDQUFBO0lBQzdCLHFCQUFxQixHQUFHLEVBQUUsQ0FBQTtJQUUxQixlQUFlO0lBQ2YsTUFBTSxDQUFDLE9BQU87UUFDWixJQUFJLENBQUMsTUFBTSxDQUFDLDJCQUEyQjtZQUFFLE1BQU0sQ0FBQywyQkFBMkIsR0FBRyxJQUFJLDJCQUEyQixFQUFFLENBQUE7UUFFL0csT0FBTyxNQUFNLENBQUMsMkJBQTJCLENBQUE7SUFDM0MsQ0FBQztJQUVELHNCQUFzQjtJQUN0QixNQUFNLENBQUMsWUFBWTtRQUNqQixJQUFJLENBQUMsTUFBTSxDQUFDLDJCQUEyQixFQUFFLENBQUM7WUFDeEMsT0FBTTtRQUNSLENBQUM7UUFFRCxNQUFNLENBQUMsMkJBQTJCLENBQUMsS0FBSyxFQUFFLENBQUE7UUFDMUMsT0FBTyxNQUFNLENBQUMsMkJBQTJCLENBQUE7SUFDM0MsQ0FBQztJQUVELDBDQUEwQztJQUMxQyxrQ0FBa0MsQ0FBRSxFQUFDLElBQUksRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFDO1FBQzdELEtBQUssTUFBTSxxQkFBcUIsSUFBSSxJQUFJLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztZQUNoRSxJQUFJLHFCQUFxQixDQUFDLFdBQVcsRUFBRSxFQUFFLENBQUM7Z0JBQ3hDLElBQUkscUJBQXFCLENBQUE7Z0JBRXpCLElBQUksS0FBSyxLQUFLLElBQUksRUFBRSxDQUFDO29CQUNuQixxQkFBcUIsR0FBRyxHQUFHLENBQUMscUJBQXFCLENBQUMsYUFBYSxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUE7Z0JBQzNFLENBQUM7cUJBQU0sQ0FBQztvQkFDTixxQkFBcUIsR0FBRyxHQUFHLENBQUMscUJBQXFCLENBQUMsYUFBYSxFQUFFLEdBQUcsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFBO2dCQUNsRixDQUFDO2dCQUVELElBQUkscUJBQXFCLEtBQUssU0FBUyxFQUFFLENBQUM7b0JBQ3hDLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLHFCQUFxQixDQUFDLEVBQUUsQ0FBQzt3QkFDMUMsTUFBTSxJQUFJLEtBQUssQ0FBQywwQ0FBMEMsT0FBTyxxQkFBcUIsS0FBSyxHQUFHLENBQUMscUJBQXFCLEVBQUUsYUFBYSxFQUFFLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQTtvQkFDbEosQ0FBQztvQkFFRCxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUE7b0JBQ3hDLHFCQUFxQixDQUFDLG9DQUFvQyxDQUFDLFlBQVksQ0FBQyxDQUFBO29CQUN4RSxZQUFZLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQTtvQkFFckMsT0FBTyxJQUFJLENBQUE7Z0JBQ2IsQ0FBQztZQUNILENBQUM7UUFDSCxDQUFDO1FBRUQsT0FBTyxLQUFLLENBQUE7SUFDZCxDQUFDO0lBRUQseUJBQXlCO0lBQ3pCLGlCQUFpQixDQUFFLEVBQUMsUUFBUSxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUM7UUFDeEMsTUFBTSxZQUFZLEdBQUcsSUFBSSxpQkFBaUIsRUFBRSxDQUFBO1FBRTVDLFlBQVksQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLFVBQVUsRUFBRSxRQUFRLENBQUMsQ0FBQTtRQUVyRCxJQUFJLElBQUksQ0FBQyxrQ0FBa0MsQ0FBQyxFQUFDLElBQUksRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFDLENBQUMsRUFBRSxDQUFDO1lBQ3pFLDRDQUE0QztZQUM1QyxPQUFPLFlBQVksQ0FBQTtRQUNyQixDQUFDO1FBRUQsSUFBSSx1QkFBdUIsR0FBRyxJQUFJLENBQUMsd0JBQXdCLENBQUE7UUFDM0QsSUFBSSxtQkFBbUIsR0FBRyxJQUFJLENBQUMscUJBQXFCLENBQUE7UUFFcEQsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztZQUNyQyxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUE7WUFFeEIsSUFBSSxDQUFDLENBQUMsUUFBUSxJQUFJLHVCQUF1QixDQUFDLEVBQUUsQ0FBQztnQkFDM0MsSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztvQkFDekIsdUJBQXVCLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFBO2dCQUN4QyxDQUFDO3FCQUFNLENBQUM7b0JBQ04sdUJBQXVCLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFBO2dCQUN4QyxDQUFDO1lBQ0gsQ0FBQztZQUVELHVCQUF1QixHQUFHLHVCQUF1QixDQUFDLFFBQVEsQ0FBQyxDQUFBO1lBRTNELElBQUksQ0FBQyxDQUFDLFFBQVEsSUFBSSxtQkFBbUIsQ0FBQyxFQUFFLENBQUM7Z0JBQ3ZDLElBQUksS0FBSyxLQUFLLElBQUksSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztvQkFDM0MsbUJBQW1CLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFBO2dCQUNwQyxDQUFDO3FCQUFNLENBQUM7b0JBQ04sbUJBQW1CLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFBO2dCQUNwQyxDQUFDO1lBQ0gsQ0FBQztZQUVELG1CQUFtQixHQUFHLG1CQUFtQixDQUFDLFFBQVEsQ0FBQyxDQUFBO1FBQ3JELENBQUM7UUFFRCxJQUFJLENBQUMsdUJBQXVCLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDN0MsdUJBQXVCLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFBO1FBQ3JDLENBQUM7UUFFRCxJQUFJLEtBQUssS0FBSyxJQUFJLEVBQUUsQ0FBQztZQUNuQixtQkFBbUIsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUE7UUFDeEMsQ0FBQzthQUFNLENBQUM7WUFDTixJQUFJLENBQUMsQ0FBQyxLQUFLLElBQUksbUJBQW1CLENBQUMsRUFBRSxDQUFDO2dCQUNwQyxtQkFBbUIsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLENBQUE7WUFDakMsQ0FBQztZQUVELG1CQUFtQixDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQTtRQUMvQyxDQUFDO1FBRUQsSUFBSSxDQUFDLDhCQUE4QixDQUFDLEtBQUssRUFBRSxDQUFBO1FBRTNDLE9BQU8sWUFBWSxDQUFBO0lBQ3JCLENBQUM7SUFFRCxzQkFBc0I7SUFDdEIsY0FBYyxHQUFHLENBQUMsU0FBUyxFQUFFLFFBQVEsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEVBQUMsUUFBUSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLENBQUMsU0FBUyxFQUFFLFNBQVMsQ0FBQyxFQUFDLENBQUMsQ0FBQTtJQUV2SCxvQkFBb0I7SUFDcEIsWUFBWSxHQUFHLENBQUMsU0FBUyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUM7UUFDakYsUUFBUTtRQUNSLEtBQUssRUFBRSxPQUFPO1FBQ2QsSUFBSSxFQUFFLENBQUMsU0FBUyxFQUFFLFFBQVEsRUFBRSxTQUFTLENBQUM7S0FDdkMsQ0FBQyxDQUFBO0lBRUYsd0JBQXdCO0lBQ3hCLGdCQUFnQixHQUFHLENBQUMsU0FBUyxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxFQUFDLFFBQVEsRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxDQUFDLFNBQVMsRUFBRSxVQUFVLENBQUMsRUFBQyxDQUFDLENBQUE7SUFFdEksOEJBQThCO0lBQzlCLHNCQUFzQixHQUFHLENBQUMsU0FBUyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxFQUFDLFFBQVEsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxDQUFDLFNBQVMsRUFBRSxvQkFBb0IsQ0FBQyxFQUFDLENBQUMsQ0FBQTtJQUUxSixxQkFBcUI7SUFDckIsYUFBYSxHQUFHLENBQUMsU0FBUyxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxFQUFDLFFBQVEsRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxDQUFDLFNBQVMsRUFBRSxTQUFTLENBQUMsRUFBQyxDQUFDLENBQUE7SUFFbEksdUJBQXVCO0lBQ3ZCLGVBQWUsR0FBRyxHQUFHLEVBQUU7UUFDckIsTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsd0JBQXdCLENBQUE7UUFDdEQsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLHFCQUFxQixDQUFBO1FBRWhELElBQUksQ0FBQyx3QkFBd0IsR0FBRyxFQUFFLENBQUE7UUFDbEMsSUFBSSxDQUFDLHFCQUFxQixHQUFHLEVBQUUsQ0FBQTtRQUUvQixNQUFNLHFCQUFxQixHQUFHLElBQUkscUJBQXFCLEVBQUUsQ0FBQTtRQUV6RCxxQkFBcUIsQ0FBQyxxQkFBcUIsQ0FBQyxhQUFhLENBQUMsQ0FBQTtRQUMxRCxxQkFBcUIsQ0FBQyxPQUFPLENBQUMsZ0JBQWdCLENBQUMsQ0FBQTtRQUUvQyxJQUFJLENBQUMsc0JBQXNCLENBQUMsSUFBSSxDQUFDLHFCQUFxQixDQUFDLENBQUE7SUFDekQsQ0FBQyxDQUFBO0lBRUQ7Ozs7O09BS0c7SUFDSCxLQUFLLENBQUMscUJBQXFCLENBQUUsSUFBSTtRQUMvQixNQUFNLE9BQU8sQ0FBQyxHQUFHLENBQ2YsSUFBSSxDQUFDLHNCQUFzQixDQUFDLEdBQUcsQ0FBQyxDQUFDLHFCQUFxQixFQUFFLEVBQUUsQ0FBQyxxQkFBcUIsQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUM5RyxDQUFBO0lBQ0gsQ0FBQztJQUVELHNCQUFzQjtJQUN0QixLQUFLO1FBQ0gsSUFBSSxDQUFDLDhCQUE4QixDQUFDLFlBQVksRUFBRSxDQUFBO1FBRWxELElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxPQUFPLENBQUMsQ0FBQyxxQkFBcUIsRUFBRSxFQUFFO1lBQzVELHFCQUFxQixDQUFDLEtBQUssRUFBRSxDQUFBO1FBQy9CLENBQUMsQ0FBQyxDQUFBO1FBRUYsSUFBSSxDQUFDLHNCQUFzQixHQUFHLEVBQUUsQ0FBQTtRQUNoQyxJQUFJLENBQUMsV0FBVyxHQUFHLEVBQUUsQ0FBQTtRQUNyQixJQUFJLENBQUMsd0JBQXdCLEdBQUcsRUFBRSxDQUFBO1FBQ2xDLElBQUksQ0FBQyxxQkFBcUIsR0FBRyxFQUFFLENBQUE7SUFDakMsQ0FBQztJQUVELDhCQUE4QixHQUFHLElBQUksT0FBTyxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQTtDQUNuRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7ZGlnfSBmcm9tIFwiZGlnZ2VyaXplXCJcbmltcG9ydCBDYWJsZVN1YnNjcmlwdGlvbiBmcm9tIFwiLi9jYWJsZS1zdWJzY3JpcHRpb24uanNcIiAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIHNvcnQtaW1wb3J0c1xuaW1wb3J0IENhYmxlU3Vic2NyaXB0aW9uUG9vbCBmcm9tIFwiLi9jYWJsZS1zdWJzY3JpcHRpb24tcG9vbC5qc1wiXG5pbXBvcnQgUnVuTGFzdCBmcm9tIFwiLi9ydW4tbGFzdC5qc1wiXG5cbmNvbnN0IHNoYXJlZCA9IHt9XG5cbi8qKiBBY3Rpb25DYWJsZSBjb25uZWN0aW9uIHBvb2wga2V5ZWQgYnkgc3RyZWFtIGlkZW50aWZpZXJzLiAqL1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQXBpTWFrZXJDYWJsZUNvbm5lY3Rpb25Qb29sIHtcbiAgY2FibGVTdWJzY3JpcHRpb25Qb29scyA9IFtdXG4gIGNvbm5lY3Rpb25zID0ge31cbiAgdXBjb21pbmdTdWJzY3JpcHRpb25EYXRhID0ge31cbiAgdXBjb21pbmdTdWJzY3JpcHRpb25zID0ge31cblxuICAvKiogY3VycmVudC4gKi9cbiAgc3RhdGljIGN1cnJlbnQgKCkge1xuICAgIGlmICghc2hhcmVkLmFwaU1ha2VyQ2FibGVDb25uZWN0aW9uUG9vbCkgc2hhcmVkLmFwaU1ha2VyQ2FibGVDb25uZWN0aW9uUG9vbCA9IG5ldyBBcGlNYWtlckNhYmxlQ29ubmVjdGlvblBvb2woKVxuXG4gICAgcmV0dXJuIHNoYXJlZC5hcGlNYWtlckNhYmxlQ29ubmVjdGlvblBvb2xcbiAgfVxuXG4gIC8qKiBAcmV0dXJucyB7dm9pZH0gKi9cbiAgc3RhdGljIHJlc2V0Q3VycmVudCAoKSB7XG4gICAgaWYgKCFzaGFyZWQuYXBpTWFrZXJDYWJsZUNvbm5lY3Rpb25Qb29sKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBzaGFyZWQuYXBpTWFrZXJDYWJsZUNvbm5lY3Rpb25Qb29sLnJlc2V0KClcbiAgICBkZWxldGUgc2hhcmVkLmFwaU1ha2VyQ2FibGVDb25uZWN0aW9uUG9vbFxuICB9XG5cbiAgLyoqIGNvbm5lY3RFdmVudFRvRXhpc3RpbmdTdWJzY3JpcHRpb24uICovXG4gIGNvbm5lY3RFdmVudFRvRXhpc3RpbmdTdWJzY3JpcHRpb24gKHtwYXRoLCBzdWJzY3JpcHRpb24sIHZhbHVlfSkge1xuICAgIGZvciAoY29uc3QgY2FibGVTdWJzY3JpcHRpb25Qb29sIG9mIHRoaXMuY2FibGVTdWJzY3JpcHRpb25Qb29scykge1xuICAgICAgaWYgKGNhYmxlU3Vic2NyaXB0aW9uUG9vbC5pc0Nvbm5lY3RlZCgpKSB7XG4gICAgICAgIGxldCBleGlzdGluZ1N1YnNjcmlwdGlvbnNcblxuICAgICAgICBpZiAodmFsdWUgPT09IHRydWUpIHtcbiAgICAgICAgICBleGlzdGluZ1N1YnNjcmlwdGlvbnMgPSBkaWcoY2FibGVTdWJzY3JpcHRpb25Qb29sLnN1YnNjcmlwdGlvbnMsIC4uLnBhdGgpXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgZXhpc3RpbmdTdWJzY3JpcHRpb25zID0gZGlnKGNhYmxlU3Vic2NyaXB0aW9uUG9vbC5zdWJzY3JpcHRpb25zLCAuLi5wYXRoLCB2YWx1ZSlcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChleGlzdGluZ1N1YnNjcmlwdGlvbnMgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIGlmICghQXJyYXkuaXNBcnJheShleGlzdGluZ1N1YnNjcmlwdGlvbnMpKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYGV4aXN0aW5nU3Vic2NyaXB0aW9ucyB3YXNuJ3QgYW4gYXJyYXk6ICR7dHlwZW9mIGV4aXN0aW5nU3Vic2NyaXB0aW9uc30gKCR7ZGlnKGV4aXN0aW5nU3Vic2NyaXB0aW9ucywgXCJjb25zdHJ1Y3RvclwiLCBcIm5hbWVcIil9KWApXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgZXhpc3RpbmdTdWJzY3JpcHRpb25zLnB1c2goc3Vic2NyaXB0aW9uKVxuICAgICAgICAgIGNhYmxlU3Vic2NyaXB0aW9uUG9vbC5jb25uZWN0VW5zdWJzY3JpcHRpb25Gb3JTdWJzY3JpcHRpb24oc3Vic2NyaXB0aW9uKVxuICAgICAgICAgIHN1YnNjcmlwdGlvbi5ldmVudHMuZW1pdChcImNvbm5lY3RlZFwiKVxuXG4gICAgICAgICAgcmV0dXJuIHRydWVcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBmYWxzZVxuICB9XG5cbiAgLyoqIGNvbm5lY3RNb2RlbEV2ZW50LiAqL1xuICBjb25uZWN0TW9kZWxFdmVudCAoe2NhbGxiYWNrLCBwYXRoLCB2YWx1ZX0pIHtcbiAgICBjb25zdCBzdWJzY3JpcHRpb24gPSBuZXcgQ2FibGVTdWJzY3JpcHRpb24oKVxuXG4gICAgc3Vic2NyaXB0aW9uLmV2ZW50cy5hZGRMaXN0ZW5lcihcInJlY2VpdmVkXCIsIGNhbGxiYWNrKVxuXG4gICAgaWYgKHRoaXMuY29ubmVjdEV2ZW50VG9FeGlzdGluZ1N1YnNjcmlwdGlvbih7cGF0aCwgc3Vic2NyaXB0aW9uLCB2YWx1ZX0pKSB7XG4gICAgICAvLyBNYW5hZ2VkIHRvIGNvbm5lY3QgdG8gZXhpc3RpbmcgY29ubmVjdGlvblxuICAgICAgcmV0dXJuIHN1YnNjcmlwdGlvblxuICAgIH1cblxuICAgIGxldCBjdXJyZW50U3Vic2NyaXB0aW9uRGF0YSA9IHRoaXMudXBjb21pbmdTdWJzY3JpcHRpb25EYXRhXG4gICAgbGV0IGN1cnJlbnRTdWJzY3JpcHRpb24gPSB0aGlzLnVwY29taW5nU3Vic2NyaXB0aW9uc1xuXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBwYXRoLmxlbmd0aDsgaSsrKSB7XG4gICAgICBjb25zdCBwYXRoUGFydCA9IHBhdGhbaV1cblxuICAgICAgaWYgKCEocGF0aFBhcnQgaW4gY3VycmVudFN1YnNjcmlwdGlvbkRhdGEpKSB7XG4gICAgICAgIGlmIChpID09IHBhdGgubGVuZ3RoIC0gMSkge1xuICAgICAgICAgIGN1cnJlbnRTdWJzY3JpcHRpb25EYXRhW3BhdGhQYXJ0XSA9IFtdXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY3VycmVudFN1YnNjcmlwdGlvbkRhdGFbcGF0aFBhcnRdID0ge31cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBjdXJyZW50U3Vic2NyaXB0aW9uRGF0YSA9IGN1cnJlbnRTdWJzY3JpcHRpb25EYXRhW3BhdGhQYXJ0XVxuXG4gICAgICBpZiAoIShwYXRoUGFydCBpbiBjdXJyZW50U3Vic2NyaXB0aW9uKSkge1xuICAgICAgICBpZiAodmFsdWUgPT09IHRydWUgJiYgaSA9PSBwYXRoLmxlbmd0aCAtIDEpIHtcbiAgICAgICAgICBjdXJyZW50U3Vic2NyaXB0aW9uW3BhdGhQYXJ0XSA9IFtdXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY3VycmVudFN1YnNjcmlwdGlvbltwYXRoUGFydF0gPSB7fVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGN1cnJlbnRTdWJzY3JpcHRpb24gPSBjdXJyZW50U3Vic2NyaXB0aW9uW3BhdGhQYXJ0XVxuICAgIH1cblxuICAgIGlmICghY3VycmVudFN1YnNjcmlwdGlvbkRhdGEuaW5jbHVkZXModmFsdWUpKSB7XG4gICAgICBjdXJyZW50U3Vic2NyaXB0aW9uRGF0YS5wdXNoKHZhbHVlKVxuICAgIH1cblxuICAgIGlmICh2YWx1ZSA9PT0gdHJ1ZSkge1xuICAgICAgY3VycmVudFN1YnNjcmlwdGlvbi5wdXNoKHN1YnNjcmlwdGlvbilcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKCEodmFsdWUgaW4gY3VycmVudFN1YnNjcmlwdGlvbikpIHtcbiAgICAgICAgY3VycmVudFN1YnNjcmlwdGlvblt2YWx1ZV0gPSBbXVxuICAgICAgfVxuXG4gICAgICBjdXJyZW50U3Vic2NyaXB0aW9uW3ZhbHVlXS5wdXNoKHN1YnNjcmlwdGlvbilcbiAgICB9XG5cbiAgICB0aGlzLnNjaGVkdWxlQ29ubmVjdFVwY29taW5nUnVuTGFzdC5xdWV1ZSgpXG5cbiAgICByZXR1cm4gc3Vic2NyaXB0aW9uXG4gIH1cblxuICAvKiogY29ubmVjdENyZWF0ZWQuICovXG4gIGNvbm5lY3RDcmVhdGVkID0gKG1vZGVsTmFtZSwgY2FsbGJhY2spID0+IHRoaXMuY29ubmVjdE1vZGVsRXZlbnQoe2NhbGxiYWNrLCB2YWx1ZTogdHJ1ZSwgcGF0aDogW21vZGVsTmFtZSwgXCJjcmVhdGVzXCJdfSlcblxuICAvKiogY29ubmVjdEV2ZW50LiAqL1xuICBjb25uZWN0RXZlbnQgPSAobW9kZWxOYW1lLCBtb2RlbElkLCBldmVudE5hbWUsIGNhbGxiYWNrKSA9PiB0aGlzLmNvbm5lY3RNb2RlbEV2ZW50KHsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBtYXgtcGFyYW1zXG4gICAgY2FsbGJhY2ssXG4gICAgdmFsdWU6IG1vZGVsSWQsXG4gICAgcGF0aDogW21vZGVsTmFtZSwgXCJldmVudHNcIiwgZXZlbnROYW1lXVxuICB9KVxuXG4gIC8qKiBjb25uZWN0RGVzdHJveWVkLiAqL1xuICBjb25uZWN0RGVzdHJveWVkID0gKG1vZGVsTmFtZSwgbW9kZWxJZCwgY2FsbGJhY2spID0+IHRoaXMuY29ubmVjdE1vZGVsRXZlbnQoe2NhbGxiYWNrLCB2YWx1ZTogbW9kZWxJZCwgcGF0aDogW21vZGVsTmFtZSwgXCJkZXN0cm95c1wiXX0pXG5cbiAgLyoqIGNvbm5lY3RNb2RlbENsYXNzRXZlbnQuICovXG4gIGNvbm5lY3RNb2RlbENsYXNzRXZlbnQgPSAobW9kZWxOYW1lLCBldmVudE5hbWUsIGNhbGxiYWNrKSA9PiB0aGlzLmNvbm5lY3RNb2RlbEV2ZW50KHtjYWxsYmFjaywgdmFsdWU6IGV2ZW50TmFtZSwgcGF0aDogW21vZGVsTmFtZSwgXCJtb2RlbF9jbGFzc19ldmVudHNcIl19KVxuXG4gIC8qKiBjb25uZWN0VXBkYXRlLiAqL1xuICBjb25uZWN0VXBkYXRlID0gKG1vZGVsTmFtZSwgbW9kZWxJZCwgY2FsbGJhY2spID0+IHRoaXMuY29ubmVjdE1vZGVsRXZlbnQoe2NhbGxiYWNrLCB2YWx1ZTogbW9kZWxJZCwgcGF0aDogW21vZGVsTmFtZSwgXCJ1cGRhdGVzXCJdfSlcblxuICAvKiogY29ubmVjdFVwY29taW5nLiAqL1xuICBjb25uZWN0VXBjb21pbmcgPSAoKSA9PiB7XG4gICAgY29uc3Qgc3Vic2NyaXB0aW9uRGF0YSA9IHRoaXMudXBjb21pbmdTdWJzY3JpcHRpb25EYXRhXG4gICAgY29uc3Qgc3Vic2NyaXB0aW9ucyA9IHRoaXMudXBjb21pbmdTdWJzY3JpcHRpb25zXG5cbiAgICB0aGlzLnVwY29taW5nU3Vic2NyaXB0aW9uRGF0YSA9IHt9XG4gICAgdGhpcy51cGNvbWluZ1N1YnNjcmlwdGlvbnMgPSB7fVxuXG4gICAgY29uc3QgY2FibGVTdWJzY3JpcHRpb25Qb29sID0gbmV3IENhYmxlU3Vic2NyaXB0aW9uUG9vbCgpXG5cbiAgICBjYWJsZVN1YnNjcmlwdGlvblBvb2wucmVnaXN0ZXJTdWJzY3JpcHRpb25zKHN1YnNjcmlwdGlvbnMpXG4gICAgY2FibGVTdWJzY3JpcHRpb25Qb29sLmNvbm5lY3Qoc3Vic2NyaXB0aW9uRGF0YSlcblxuICAgIHRoaXMuY2FibGVTdWJzY3JpcHRpb25Qb29scy5wdXNoKGNhYmxlU3Vic2NyaXB0aW9uUG9vbClcbiAgfVxuXG4gIC8qKlxuICAgKiBSZWZyZXNoZXMgYXV0aCBhY3Jvc3MgdGhlIGV4aXN0aW5nIHN1YnNjcmlwdGlvbiBwb29scy5cbiAgICpcbiAgICogQHBhcmFtIHtSZWNvcmQ8c3RyaW5nLCBhbnk+fSBhcmdzXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPHZvaWQ+fVxuICAgKi9cbiAgYXN5bmMgcmVmcmVzaEF1dGhlbnRpY2F0aW9uIChhcmdzKSB7XG4gICAgYXdhaXQgUHJvbWlzZS5hbGwoXG4gICAgICB0aGlzLmNhYmxlU3Vic2NyaXB0aW9uUG9vbHMubWFwKChjYWJsZVN1YnNjcmlwdGlvblBvb2wpID0+IGNhYmxlU3Vic2NyaXB0aW9uUG9vbC5yZWZyZXNoQXV0aGVudGljYXRpb24oYXJncykpXG4gICAgKVxuICB9XG5cbiAgLyoqIEByZXR1cm5zIHt2b2lkfSAqL1xuICByZXNldCAoKSB7XG4gICAgdGhpcy5zY2hlZHVsZUNvbm5lY3RVcGNvbWluZ1J1bkxhc3QuY2xlYXJUaW1lb3V0KClcblxuICAgIHRoaXMuY2FibGVTdWJzY3JpcHRpb25Qb29scy5mb3JFYWNoKChjYWJsZVN1YnNjcmlwdGlvblBvb2wpID0+IHtcbiAgICAgIGNhYmxlU3Vic2NyaXB0aW9uUG9vbC5yZXNldCgpXG4gICAgfSlcblxuICAgIHRoaXMuY2FibGVTdWJzY3JpcHRpb25Qb29scyA9IFtdXG4gICAgdGhpcy5jb25uZWN0aW9ucyA9IHt9XG4gICAgdGhpcy51cGNvbWluZ1N1YnNjcmlwdGlvbkRhdGEgPSB7fVxuICAgIHRoaXMudXBjb21pbmdTdWJzY3JpcHRpb25zID0ge31cbiAgfVxuXG4gIHNjaGVkdWxlQ29ubmVjdFVwY29taW5nUnVuTGFzdCA9IG5ldyBSdW5MYXN0KHRoaXMuY29ubmVjdFVwY29taW5nKVxufVxuIl19
203
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FibGUtY29ubmVjdGlvbi1wb29sLmpzIiwic291cmNlUm9vdCI6Ii9zcmMvIiwic291cmNlcyI6WyJjYWJsZS1jb25uZWN0aW9uLXBvb2wuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsWUFBWTtBQUNaLE9BQU8sRUFBQyxHQUFHLEVBQUMsTUFBTSxXQUFXLENBQUE7QUFDN0IsT0FBTyxzQkFBc0IsTUFBTSx5QkFBeUIsQ0FBQSxDQUFDLG1DQUFtQztBQUNoRyxPQUFPLHFCQUFxQixNQUFNLDhCQUE4QixDQUFBO0FBQ2hFLE9BQU8sT0FBTyxNQUFNLGVBQWUsQ0FBQTtBQUVuQyxNQUFNLE1BQU0sR0FBRyxFQUFFLENBQUE7QUFFakIsNkVBQTZFO0FBQzdFLDZEQUE2RDtBQUM3RCxnSUFBZ0k7QUFDaEksb0VBQW9FO0FBQ3BFLGdFQUFnRTtBQUNoRSxnREFBZ0Q7QUFDaEQseURBQXlEO0FBQ3pELDJIQUEySDtBQUMzSCwrRkFBK0Y7QUFDL0Ysa0ZBQWtGO0FBQ2xGLHlIQUF5SDtBQUV6SCwrREFBK0Q7QUFDL0QsTUFBTSxDQUFDLE9BQU8sT0FBTywyQkFBMkI7SUFDOUMsc0JBQXNCLEdBQUcsRUFBRSxDQUFBO0lBQzNCLFdBQVcsR0FBRyxFQUFFLENBQUE7SUFDaEIsd0JBQXdCLEdBQUcsRUFBRSxDQUFBO0lBQzdCLHFCQUFxQixHQUFHLEVBQUUsQ0FBQTtJQUUxQjs7O09BR0c7SUFDSCxNQUFNLENBQUMsT0FBTztRQUNaLElBQUksQ0FBQyxNQUFNLENBQUMsMkJBQTJCO1lBQUUsTUFBTSxDQUFDLDJCQUEyQixHQUFHLElBQUksMkJBQTJCLEVBQUUsQ0FBQTtRQUUvRyxPQUFPLE1BQU0sQ0FBQywyQkFBMkIsQ0FBQTtJQUMzQyxDQUFDO0lBRUQsc0JBQXNCO0lBQ3RCLE1BQU0sQ0FBQyxZQUFZO1FBQ2pCLElBQUksQ0FBQyxNQUFNLENBQUMsMkJBQTJCLEVBQUUsQ0FBQztZQUN4QyxPQUFNO1FBQ1IsQ0FBQztRQUVELE1BQU0sQ0FBQywyQkFBMkIs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dCI6WyIvLyBAdHMtY2hlY2tcbmltcG9ydCB7ZGlnfSBmcm9tIFwiZGlnZ2VyaXplXCJcbmltcG9ydCBDYWJsZVN1YnNjcmlwdGlvbkNsYXNzIGZyb20gXCIuL2NhYmxlLXN1YnNjcmlwdGlvbi5qc1wiIC8vIGVzbGludC1kaXNhYmxlLWxpbmUgc29ydC1pbXBvcnRzXG5pbXBvcnQgQ2FibGVTdWJzY3JpcHRpb25Qb29sIGZyb20gXCIuL2NhYmxlLXN1YnNjcmlwdGlvbi1wb29sLmpzXCJcbmltcG9ydCBSdW5MYXN0IGZyb20gXCIuL3J1bi1sYXN0LmpzXCJcblxuY29uc3Qgc2hhcmVkID0ge31cblxuLyoqIEB0eXBlZGVmIHtpbXBvcnQoXCIuL2NhYmxlLXN1YnNjcmlwdGlvbi5qc1wiKS5kZWZhdWx0fSBDYWJsZVN1YnNjcmlwdGlvbiAqL1xuLyoqIEB0eXBlZGVmIHtpbXBvcnQoXCIuL2Jhc2UtbW9kZWwuanNcIikuZGVmYXVsdH0gQmFzZU1vZGVsICovXG4vKiogQHR5cGVkZWYge29iamVjdCB8IHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4gfCBudWxsIHwgQXJyYXk8b2JqZWN0IHwgc3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhbiB8IG51bGw+fSBDYWJsZVJlcXVlc3RWYWx1ZSAqL1xuLyoqIEB0eXBlZGVmIHtSZWNvcmQ8c3RyaW5nLCBDYWJsZVJlcXVlc3RWYWx1ZT59IENhYmxlUmVmcmVzaEFyZ3MgKi9cbi8qKiBAdHlwZWRlZiB7c3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhbn0gQ29ubmVjdGlvbkV2ZW50VmFsdWUgKi9cbi8qKiBAdHlwZWRlZiB7c3RyaW5nW119IE1vZGVsU3Vic2NyaXB0aW9uUGF0aCAqL1xuLyoqIEB0eXBlZGVmIHt7bW9kZWw6IEJhc2VNb2RlbH19IE1vZGVsTXV0YXRpb25QYXlsb2FkICovXG4vKiogQHR5cGVkZWYge1JlY29yZDxzdHJpbmcsIHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4gfCBudWxsIHwgQXJyYXk8c3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhbiB8IG51bGw+Pn0gQ2FibGVFdmVudEFyZ3MgKi9cbi8qKiBAdHlwZWRlZiB7e2FyZ3M6IENhYmxlRXZlbnRBcmdzLCBldmVudE5hbWU6IHN0cmluZywgbW9kZWw6IEJhc2VNb2RlbH19IE1vZGVsRXZlbnRQYXlsb2FkICovXG4vKiogQHR5cGVkZWYge3thcmdzOiBDYWJsZUV2ZW50QXJncywgZXZlbnROYW1lOiBzdHJpbmd9fSBNb2RlbENsYXNzRXZlbnRQYXlsb2FkICovXG4vKiogQHR5cGVkZWYgeyhwYXlsb2FkOiBNb2RlbE11dGF0aW9uUGF5bG9hZCB8IE1vZGVsRXZlbnRQYXlsb2FkIHwgTW9kZWxDbGFzc0V2ZW50UGF5bG9hZCkgPT4gdm9pZH0gTW9kZWxFdmVudENhbGxiYWNrICovXG5cbi8qKiBBY3Rpb25DYWJsZSBjb25uZWN0aW9uIHBvb2wga2V5ZWQgYnkgc3RyZWFtIGlkZW50aWZpZXJzLiAqL1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQXBpTWFrZXJDYWJsZUNvbm5lY3Rpb25Qb29sIHtcbiAgY2FibGVTdWJzY3JpcHRpb25Qb29scyA9IFtdXG4gIGNvbm5lY3Rpb25zID0ge31cbiAgdXBjb21pbmdTdWJzY3JpcHRpb25EYXRhID0ge31cbiAgdXBjb21pbmdTdWJzY3JpcHRpb25zID0ge31cblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgc2hhcmVkIGNvbm5lY3Rpb24gcG9vbCBpbnN0YW5jZS5cbiAgICogQHJldHVybnMge0FwaU1ha2VyQ2FibGVDb25uZWN0aW9uUG9vbH1cbiAgICovXG4gIHN0YXRpYyBjdXJyZW50ICgpIHtcbiAgICBpZiAoIXNoYXJlZC5hcGlNYWtlckNhYmxlQ29ubmVjdGlvblBvb2wpIHNoYXJlZC5hcGlNYWtlckNhYmxlQ29ubmVjdGlvblBvb2wgPSBuZXcgQXBpTWFrZXJDYWJsZUNvbm5lY3Rpb25Qb29sKClcblxuICAgIHJldHVybiBzaGFyZWQuYXBpTWFrZXJDYWJsZUNvbm5lY3Rpb25Qb29sXG4gIH1cblxuICAvKiogQHJldHVybnMge3ZvaWR9ICovXG4gIHN0YXRpYyByZXNldEN1cnJlbnQgKCkge1xuICAgIGlmICghc2hhcmVkLmFwaU1ha2VyQ2FibGVDb25uZWN0aW9uUG9vbCkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgc2hhcmVkLmFwaU1ha2VyQ2FibGVDb25uZWN0aW9uUG9vbC5yZXNldCgpXG4gICAgZGVsZXRlIHNoYXJlZC5hcGlNYWtlckNhYmxlQ29ubmVjdGlvblBvb2xcbiAgfVxuXG4gIC8qKlxuICAgKiBBdHRhY2hlcyBhIGxvZ2ljYWwgc3Vic2NyaXB0aW9uIHRvIGFuIGFscmVhZHktb3BlbiBzaGFyZWQgQWN0aW9uQ2FibGUgc3RyZWFtIHdoZW4gcG9zc2libGUuXG4gICAqIEBwYXJhbSB7b2JqZWN0fSByb290MFxuICAgKiBAcGFyYW0ge01vZGVsU3Vic2NyaXB0aW9uUGF0aH0gcm9vdDAucGF0aFxuICAgKiBAcGFyYW0ge0NhYmxlU3Vic2NyaXB0aW9ufSByb290MC5zdWJzY3JpcHRpb25cbiAgICogQHBhcmFtIHtDb25uZWN0aW9uRXZlbnRWYWx1ZX0gcm9vdDAudmFsdWVcbiAgICogQHJldHVybnMge2Jvb2xlYW59XG4gICAqL1xuICBjb25uZWN0RXZlbnRUb0V4aXN0aW5nU3Vic2NyaXB0aW9uICh7cGF0aCwgc3Vic2NyaXB0aW9uLCB2YWx1ZX0pIHtcbiAgICBmb3IgKGNvbnN0IGNhYmxlU3Vic2NyaXB0aW9uUG9vbCBvZiB0aGlzLmNhYmxlU3Vic2NyaXB0aW9uUG9vbHMpIHtcbiAgICAgIGlmIChjYWJsZVN1YnNjcmlwdGlvblBvb2wuaXNDb25uZWN0ZWQoKSkge1xuICAgICAgICBsZXQgZXhpc3RpbmdTdWJzY3JpcHRpb25zXG5cbiAgICAgICAgaWYgKHZhbHVlID09PSB0cnVlKSB7XG4gICAgICAgICAgZXhpc3RpbmdTdWJzY3JpcHRpb25zID0gZGlnKGNhYmxlU3Vic2NyaXB0aW9uUG9vbC5zdWJzY3JpcHRpb25zLCAuLi5wYXRoKVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGV4aXN0aW5nU3Vic2NyaXB0aW9ucyA9IGRpZyhjYWJsZVN1YnNjcmlwdGlvblBvb2wuc3Vic2NyaXB0aW9ucywgLi4ucGF0aCwgdmFsdWUpXG4gICAgICAgIH1cblxuICAgICAgICBpZiAoZXhpc3RpbmdTdWJzY3JpcHRpb25zICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBpZiAoIUFycmF5LmlzQXJyYXkoZXhpc3RpbmdTdWJzY3JpcHRpb25zKSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBleGlzdGluZ1N1YnNjcmlwdGlvbnMgd2Fzbid0IGFuIGFycmF5OiAke3R5cGVvZiBleGlzdGluZ1N1YnNjcmlwdGlvbnN9ICgke2RpZyhleGlzdGluZ1N1YnNjcmlwdGlvbnMsIFwiY29uc3RydWN0b3JcIiwgXCJuYW1lXCIpfSlgKVxuICAgICAgICAgIH1cblxuICAgICAgICAgIGV4aXN0aW5nU3Vic2NyaXB0aW9ucy5wdXNoKHN1YnNjcmlwdGlvbilcbiAgICAgICAgICBjYWJsZVN1YnNjcmlwdGlvblBvb2wuY29ubmVjdFVuc3Vic2NyaXB0aW9uRm9yU3Vic2NyaXB0aW9uKHN1YnNjcmlwdGlvbilcbiAgICAgICAgICBzdWJzY3JpcHRpb24uZXZlbnRzLmVtaXQoXCJjb25uZWN0ZWRcIilcblxuICAgICAgICAgIHJldHVybiB0cnVlXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gZmFsc2VcbiAgfVxuXG4gIC8qKlxuICAgKiBSZWdpc3RlcnMgb25lIGxvZ2ljYWwgbW9kZWwgc3Vic2NyaXB0aW9uLCByZXVzaW5nIGFuIGV4aXN0aW5nIHNoYXJlZCBjb25uZWN0aW9uIHdoZW4gYXZhaWxhYmxlLlxuICAgKiBAcGFyYW0ge29iamVjdH0gcm9vdDBcbiAgICogQHBhcmFtIHtNb2RlbEV2ZW50Q2FsbGJhY2t9IHJvb3QwLmNhbGxiYWNrXG4gICAqIEBwYXJhbSB7TW9kZWxTdWJzY3JpcHRpb25QYXRofSByb290MC5wYXRoXG4gICAqIEBwYXJhbSB7Q29ubmVjdGlvbkV2ZW50VmFsdWV9IHJvb3QwLnZhbHVlXG4gICAqIEByZXR1cm5zIHtDYWJsZVN1YnNjcmlwdGlvbn1cbiAgICovXG4gIGNvbm5lY3RNb2RlbEV2ZW50ICh7Y2FsbGJhY2ssIHBhdGgsIHZhbHVlfSkge1xuICAgIGNvbnN0IHN1YnNjcmlwdGlvbiA9IG5ldyBDYWJsZVN1YnNjcmlwdGlvbkNsYXNzKClcblxuICAgIHN1YnNjcmlwdGlvbi5ldmVudHMuYWRkTGlzdGVuZXIoXCJyZWNlaXZlZFwiLCBjYWxsYmFjaylcblxuICAgIGlmICh0aGlzLmNvbm5lY3RFdmVudFRvRXhpc3RpbmdTdWJzY3JpcHRpb24oe3BhdGgsIHN1YnNjcmlwdGlvbiwgdmFsdWV9KSkge1xuICAgICAgLy8gTWFuYWdlZCB0byBjb25uZWN0IHRvIGV4aXN0aW5nIGNvbm5lY3Rpb25cbiAgICAgIHJldHVybiBzdWJzY3JpcHRpb25cbiAgICB9XG5cbiAgICBsZXQgY3VycmVudFN1YnNjcmlwdGlvbkRhdGEgPSB0aGlzLnVwY29taW5nU3Vic2NyaXB0aW9uRGF0YVxuICAgIGxldCBjdXJyZW50U3Vic2NyaXB0aW9uID0gdGhpcy51cGNvbWluZ1N1YnNjcmlwdGlvbnNcblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcGF0aC5sZW5ndGg7IGkrKykge1xuICAgICAgY29uc3QgcGF0aFBhcnQgPSBwYXRoW2ldXG5cbiAgICAgIGlmICghKHBhdGhQYXJ0IGluIGN1cnJlbnRTdWJzY3JpcHRpb25EYXRhKSkge1xuICAgICAgICBpZiAoaSA9PSBwYXRoLmxlbmd0aCAtIDEpIHtcbiAgICAgICAgICBjdXJyZW50U3Vic2NyaXB0aW9uRGF0YVtwYXRoUGFydF0gPSBbXVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGN1cnJlbnRTdWJzY3JpcHRpb25EYXRhW3BhdGhQYXJ0XSA9IHt9XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgY3VycmVudFN1YnNjcmlwdGlvbkRhdGEgPSBjdXJyZW50U3Vic2NyaXB0aW9uRGF0YVtwYXRoUGFydF1cblxuICAgICAgaWYgKCEocGF0aFBhcnQgaW4gY3VycmVudFN1YnNjcmlwdGlvbikpIHtcbiAgICAgICAgaWYgKHZhbHVlID09PSB0cnVlICYmIGkgPT0gcGF0aC5sZW5ndGggLSAxKSB7XG4gICAgICAgICAgY3VycmVudFN1YnNjcmlwdGlvbltwYXRoUGFydF0gPSBbXVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGN1cnJlbnRTdWJzY3JpcHRpb25bcGF0aFBhcnRdID0ge31cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBjdXJyZW50U3Vic2NyaXB0aW9uID0gY3VycmVudFN1YnNjcmlwdGlvbltwYXRoUGFydF1cbiAgICB9XG5cbiAgICBpZiAoIWN1cnJlbnRTdWJzY3JpcHRpb25EYXRhLmluY2x1ZGVzKHZhbHVlKSkge1xuICAgICAgY3VycmVudFN1YnNjcmlwdGlvbkRhdGEucHVzaCh2YWx1ZSlcbiAgICB9XG5cbiAgICBpZiAodmFsdWUgPT09IHRydWUpIHtcbiAgICAgIGN1cnJlbnRTdWJzY3JpcHRpb24ucHVzaChzdWJzY3JpcHRpb24pXG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHN1YnNjcmlwdGlvbktleSA9IFN0cmluZyh2YWx1ZSlcblxuICAgICAgaWYgKCEoc3Vic2NyaXB0aW9uS2V5IGluIGN1cnJlbnRTdWJzY3JpcHRpb24pKSB7XG4gICAgICAgIGN1cnJlbnRTdWJzY3JpcHRpb25bc3Vic2NyaXB0aW9uS2V5XSA9IFtdXG4gICAgICB9XG5cbiAgICAgIGN1cnJlbnRTdWJzY3JpcHRpb25bc3Vic2NyaXB0aW9uS2V5XS5wdXNoKHN1YnNjcmlwdGlvbilcbiAgICB9XG5cbiAgICB0aGlzLnNjaGVkdWxlQ29ubmVjdFVwY29taW5nUnVuTGFzdC5xdWV1ZSgpXG5cbiAgICByZXR1cm4gc3Vic2NyaXB0aW9uXG4gIH1cblxuICAvKipcbiAgICogU3Vic2NyaWJlcyB0byBjcmVhdGVkIGV2ZW50cyBmb3IgYSBtb2RlbCBjbGFzcy5cbiAgICogQHBhcmFtIHtzdHJpbmd9IG1vZGVsTmFtZVxuICAgKiBAcGFyYW0geyhwYXlsb2FkOiBNb2RlbE11dGF0aW9uUGF5bG9hZCkgPT4gdm9pZH0gY2FsbGJhY2tcbiAgICogQHJldHVybnMge0NhYmxlU3Vic2NyaXB0aW9ufVxuICAgKi9cbiAgY29ubmVjdENyZWF0ZWQgPSAobW9kZWxOYW1lLCBjYWxsYmFjaykgPT4gdGhpcy5jb25uZWN0TW9kZWxFdmVudCh7Y2FsbGJhY2ssIHZhbHVlOiB0cnVlLCBwYXRoOiBbbW9kZWxOYW1lLCBcImNyZWF0ZXNcIl19KVxuXG4gIC8qKlxuICAgKiBTdWJzY3JpYmVzIHRvIGEgbmFtZWQgZXZlbnQgZm9yIG9uZSBwZXJzaXN0ZWQgbW9kZWwgaW5zdGFuY2UuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBtb2RlbE5hbWVcbiAgICogQHBhcmFtIHtzdHJpbmcgfCBudW1iZXJ9IG1vZGVsSWRcbiAgICogQHBhcmFtIHtzdHJpbmd9IGV2ZW50TmFtZVxuICAgKiBAcGFyYW0geyhwYXlsb2FkOiBNb2RlbEV2ZW50UGF5bG9hZCkgPT4gdm9pZH0gY2FsbGJhY2tcbiAgICogQHJldHVybnMge0NhYmxlU3Vic2NyaXB0aW9ufVxuICAgKi9cbiAgY29ubmVjdEV2ZW50ID0gKG1vZGVsTmFtZSwgbW9kZWxJZCwgZXZlbnROYW1lLCBjYWxsYmFjaykgPT4gdGhpcy5jb25uZWN0TW9kZWxFdmVudCh7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbWF4LXBhcmFtc1xuICAgIGNhbGxiYWNrLFxuICAgIHZhbHVlOiBtb2RlbElkLFxuICAgIHBhdGg6IFttb2RlbE5hbWUsIFwiZXZlbnRzXCIsIGV2ZW50TmFtZV1cbiAgfSlcblxuICAvKipcbiAgICogU3Vic2NyaWJlcyB0byBkZXN0cm95IGV2ZW50cyBmb3Igb25lIHBlcnNpc3RlZCBtb2RlbCBpbnN0YW5jZS5cbiAgICogQHBhcmFtIHtzdHJpbmd9IG1vZGVsTmFtZVxuICAgKiBAcGFyYW0ge3N0cmluZyB8IG51bWJlcn0gbW9kZWxJZFxuICAgKiBAcGFyYW0geyhwYXlsb2FkOiBNb2RlbE11dGF0aW9uUGF5bG9hZCkgPT4gdm9pZH0gY2FsbGJhY2tcbiAgICogQHJldHVybnMge0NhYmxlU3Vic2NyaXB0aW9ufVxuICAgKi9cbiAgY29ubmVjdERlc3Ryb3llZCA9IChtb2RlbE5hbWUsIG1vZGVsSWQsIGNhbGxiYWNrKSA9PiB0aGlzLmNvbm5lY3RNb2RlbEV2ZW50KHtjYWxsYmFjaywgdmFsdWU6IG1vZGVsSWQsIHBhdGg6IFttb2RlbE5hbWUsIFwiZGVzdHJveXNcIl19KVxuXG4gIC8qKlxuICAgKiBTdWJzY3JpYmVzIHRvIG9uZSBuYW1lZCBtb2RlbC1jbGFzcyBldmVudCBzdHJlYW0uXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBtb2RlbE5hbWVcbiAgICogQHBhcmFtIHtzdHJpbmd9IGV2ZW50TmFtZVxuICAgKiBAcGFyYW0geyhwYXlsb2FkOiBNb2RlbENsYXNzRXZlbnRQYXlsb2FkKSA9PiB2b2lkfSBjYWxsYmFja1xuICAgKiBAcmV0dXJucyB7Q2FibGVTdWJzY3JpcHRpb259XG4gICAqL1xuICBjb25uZWN0TW9kZWxDbGFzc0V2ZW50ID0gKG1vZGVsTmFtZSwgZXZlbnROYW1lLCBjYWxsYmFjaykgPT4gdGhpcy5jb25uZWN0TW9kZWxFdmVudCh7Y2FsbGJhY2ssIHZhbHVlOiBldmVudE5hbWUsIHBhdGg6IFttb2RlbE5hbWUsIFwibW9kZWxfY2xhc3NfZXZlbnRzXCJdfSlcblxuICAvKipcbiAgICogU3Vic2NyaWJlcyB0byB1cGRhdGUgZXZlbnRzIGZvciBvbmUgcGVyc2lzdGVkIG1vZGVsIGluc3RhbmNlLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gbW9kZWxOYW1lXG4gICAqIEBwYXJhbSB7c3RyaW5nIHwgbnVtYmVyfSBtb2RlbElkXG4gICAqIEBwYXJhbSB7KHBheWxvYWQ6IE1vZGVsTXV0YXRpb25QYXlsb2FkKSA9PiB2b2lkfSBjYWxsYmFja1xuICAgKiBAcmV0dXJucyB7Q2FibGVTdWJzY3JpcHRpb259XG4gICAqL1xuICBjb25uZWN0VXBkYXRlID0gKG1vZGVsTmFtZSwgbW9kZWxJZCwgY2FsbGJhY2spID0+IHRoaXMuY29ubmVjdE1vZGVsRXZlbnQoe2NhbGxiYWNrLCB2YWx1ZTogbW9kZWxJZCwgcGF0aDogW21vZGVsTmFtZSwgXCJ1cGRhdGVzXCJdfSlcblxuICAvKiogT3BlbnMgb25lIHNoYXJlZCBBY3Rpb25DYWJsZSBzdWJzY3JpcHRpb24gZm9yIGFsbCBxdWV1ZWQgbG9naWNhbCBzdWJzY3JpcHRpb25zLiAqL1xuICBjb25uZWN0VXBjb21pbmcgPSAoKSA9PiB7XG4gICAgY29uc3Qgc3Vic2NyaXB0aW9uRGF0YSA9IHRoaXMudXBjb21pbmdTdWJzY3JpcHRpb25EYXRhXG4gICAgY29uc3Qgc3Vic2NyaXB0aW9ucyA9IHRoaXMudXBjb21pbmdTdWJzY3JpcHRpb25zXG5cbiAgICB0aGlzLnVwY29taW5nU3Vic2NyaXB0aW9uRGF0YSA9IHt9XG4gICAgdGhpcy51cGNvbWluZ1N1YnNjcmlwdGlvbnMgPSB7fVxuXG4gICAgY29uc3QgY2FibGVTdWJzY3JpcHRpb25Qb29sID0gbmV3IENhYmxlU3Vic2NyaXB0aW9uUG9vbCgpXG5cbiAgICBjYWJsZVN1YnNjcmlwdGlvblBvb2wucmVnaXN0ZXJTdWJzY3JpcHRpb25zKHN1YnNjcmlwdGlvbnMpXG4gICAgY2FibGVTdWJzY3JpcHRpb25Qb29sLmNvbm5lY3Qoc3Vic2NyaXB0aW9uRGF0YSlcblxuICAgIHRoaXMuY2FibGVTdWJzY3JpcHRpb25Qb29scy5wdXNoKGNhYmxlU3Vic2NyaXB0aW9uUG9vbClcbiAgfVxuXG4gIC8qKlxuICAgKiBSZWZyZXNoZXMgYXV0aCBhY3Jvc3MgdGhlIGV4aXN0aW5nIHN1YnNjcmlwdGlvbiBwb29scy5cbiAgICpcbiAgICogQHBhcmFtIHtDYWJsZVJlZnJlc2hBcmdzfSBhcmdzXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPHZvaWQ+fVxuICAgKi9cbiAgYXN5bmMgcmVmcmVzaEF1dGhlbnRpY2F0aW9uIChhcmdzKSB7XG4gICAgYXdhaXQgUHJvbWlzZS5hbGwoXG4gICAgICB0aGlzLmNhYmxlU3Vic2NyaXB0aW9uUG9vbHMubWFwKChjYWJsZVN1YnNjcmlwdGlvblBvb2wpID0+IGNhYmxlU3Vic2NyaXB0aW9uUG9vbC5yZWZyZXNoQXV0aGVudGljYXRpb24oYXJncykpXG4gICAgKVxuICB9XG5cbiAgLyoqIEByZXR1cm5zIHt2b2lkfSAqL1xuICByZXNldCAoKSB7XG4gICAgdGhpcy5zY2hlZHVsZUNvbm5lY3RVcGNvbWluZ1J1bkxhc3QuY2xlYXJUaW1lb3V0KClcblxuICAgIHRoaXMuY2FibGVTdWJzY3JpcHRpb25Qb29scy5mb3JFYWNoKChjYWJsZVN1YnNjcmlwdGlvblBvb2wpID0+IHtcbiAgICAgIGNhYmxlU3Vic2NyaXB0aW9uUG9vbC5yZXNldCgpXG4gICAgfSlcblxuICAgIHRoaXMuY2FibGVTdWJzY3JpcHRpb25Qb29scyA9IFtdXG4gICAgdGhpcy5jb25uZWN0aW9ucyA9IHt9XG4gICAgdGhpcy51cGNvbWluZ1N1YnNjcmlwdGlvbkRhdGEgPSB7fVxuICAgIHRoaXMudXBjb21pbmdTdWJzY3JpcHRpb25zID0ge31cbiAgfVxuXG4gIHNjaGVkdWxlQ29ubmVjdFVwY29taW5nUnVuTGFzdCA9IG5ldyBSdW5MYXN0KHRoaXMuY29ubmVjdFVwY29taW5nKVxufVxuIl19