@kaspernj/api-maker 1.0.2160 → 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 (524) 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 +12 -0
  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 +8 -0
  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 +17 -0
  28. package/build/bootstrap/card.d.ts.map +1 -1
  29. package/build/bootstrap/card.js +30 -10
  30. package/build/bootstrap/checkbox.d.ts +16 -0
  31. package/build/bootstrap/checkbox.d.ts.map +1 -1
  32. package/build/bootstrap/checkbox.js +20 -2
  33. package/build/bootstrap/checkboxes.d.ts +31 -0
  34. package/build/bootstrap/checkboxes.d.ts.map +1 -1
  35. package/build/bootstrap/checkboxes.js +35 -3
  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 +5 -0
  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 +10 -0
  48. package/build/bootstrap/sort-link.d.ts.map +1 -1
  49. package/build/bootstrap/sort-link.js +15 -4
  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.js +2 -1
  68. package/build/collection.d.ts +361 -370
  69. package/build/collection.d.ts.map +1 -1
  70. package/build/collection.js +59 -19
  71. package/build/command-execution.d.ts +50 -26
  72. package/build/command-execution.d.ts.map +1 -1
  73. package/build/command-execution.js +31 -13
  74. package/build/command-submit-data.d.ts +50 -37
  75. package/build/command-submit-data.d.ts.map +1 -1
  76. package/build/command-submit-data.js +35 -22
  77. package/build/commands-pool.d.ts +65 -27
  78. package/build/commands-pool.d.ts.map +1 -1
  79. package/build/commands-pool.js +67 -20
  80. package/build/compose.d.ts +8 -2
  81. package/build/compose.d.ts.map +1 -1
  82. package/build/compose.js +9 -2
  83. package/build/config.d.ts +31 -15
  84. package/build/config.d.ts.map +1 -1
  85. package/build/config.js +60 -23
  86. package/build/custom-error.d.ts.map +1 -1
  87. package/build/custom-error.js +2 -1
  88. package/build/data-set-to-attributes.d.ts +14 -2
  89. package/build/data-set-to-attributes.d.ts.map +1 -1
  90. package/build/data-set-to-attributes.js +12 -3
  91. package/build/deserializer.d.ts +116 -2
  92. package/build/deserializer.d.ts.map +1 -1
  93. package/build/deserializer.js +13 -2
  94. package/build/destroy-error.d.ts.map +1 -1
  95. package/build/destroy-error.js +2 -1
  96. package/build/devise.d.ts +638 -39
  97. package/build/devise.d.ts.map +1 -1
  98. package/build/devise.js +97 -28
  99. package/build/draggable-sort/controller.d.ts +126 -35
  100. package/build/draggable-sort/controller.d.ts.map +1 -1
  101. package/build/draggable-sort/controller.js +100 -28
  102. package/build/draggable-sort/index.d.ts +55 -0
  103. package/build/draggable-sort/index.d.ts.map +1 -1
  104. package/build/draggable-sort/index.js +71 -3
  105. package/build/draggable-sort/item.d.ts +54 -0
  106. package/build/draggable-sort/item.d.ts.map +1 -1
  107. package/build/draggable-sort/item.js +94 -6
  108. package/build/error-logger.d.ts +30 -14
  109. package/build/error-logger.d.ts.map +1 -1
  110. package/build/error-logger.js +22 -11
  111. package/build/event-connection.d.ts.map +1 -1
  112. package/build/event-connection.js +3 -2
  113. package/build/event-emitter-listener.d.ts.map +1 -1
  114. package/build/event-emitter-listener.js +2 -1
  115. package/build/event-model-class.d.ts.map +1 -1
  116. package/build/event-model-class.js +2 -1
  117. package/build/events.d.ts.map +1 -1
  118. package/build/events.js +2 -1
  119. package/build/form.d.ts +23 -0
  120. package/build/form.d.ts.map +1 -1
  121. package/build/form.js +16 -4
  122. package/build/history-expo.d.ts +6 -2
  123. package/build/history-expo.d.ts.map +1 -1
  124. package/build/history-expo.js +5 -2
  125. package/build/history-react-native.d.ts +6 -2
  126. package/build/history-react-native.d.ts.map +1 -1
  127. package/build/history-react-native.js +5 -2
  128. package/build/history.js +2 -1
  129. package/build/index.d.ts.map +1 -1
  130. package/build/index.js +2 -1
  131. package/build/inputs/attachment.d.ts +11 -0
  132. package/build/inputs/attachment.d.ts.map +1 -1
  133. package/build/inputs/attachment.js +17 -4
  134. package/build/inputs/auto-submit.d.ts +41 -13
  135. package/build/inputs/auto-submit.d.ts.map +1 -1
  136. package/build/inputs/auto-submit.js +16 -4
  137. package/build/inputs/checkbox.d.ts +15 -0
  138. package/build/inputs/checkbox.d.ts.map +1 -1
  139. package/build/inputs/checkbox.js +22 -6
  140. package/build/inputs/checkboxes.d.ts +16 -0
  141. package/build/inputs/checkboxes.d.ts.map +1 -1
  142. package/build/inputs/checkboxes.js +20 -4
  143. package/build/inputs/id-for-component.d.ts +21 -2
  144. package/build/inputs/id-for-component.d.ts.map +1 -1
  145. package/build/inputs/id-for-component.js +9 -2
  146. package/build/inputs/input-wrapper.d.ts.map +1 -1
  147. package/build/inputs/input-wrapper.js +2 -1
  148. package/build/inputs/input.d.ts +36 -0
  149. package/build/inputs/input.d.ts.map +1 -1
  150. package/build/inputs/input.js +26 -7
  151. package/build/inputs/money.d.ts +2 -0
  152. package/build/inputs/money.d.ts.map +1 -1
  153. package/build/inputs/money.js +6 -3
  154. package/build/inputs/name-for-component.d.ts +21 -2
  155. package/build/inputs/name-for-component.d.ts.map +1 -1
  156. package/build/inputs/name-for-component.js +9 -2
  157. package/build/inputs/select.d.ts +33 -0
  158. package/build/inputs/select.d.ts.map +1 -1
  159. package/build/inputs/select.js +21 -4
  160. package/build/instance-of-class-name.d.ts +7 -2
  161. package/build/instance-of-class-name.d.ts.map +1 -1
  162. package/build/instance-of-class-name.js +8 -4
  163. package/build/is-expo.d.ts.map +1 -1
  164. package/build/is-expo.js +2 -1
  165. package/build/key-value-store.d.ts +24 -14
  166. package/build/key-value-store.d.ts.map +1 -1
  167. package/build/key-value-store.js +22 -12
  168. package/build/link.d.ts +30 -0
  169. package/build/link.d.ts.map +1 -1
  170. package/build/link.js +76 -30
  171. package/build/logger.d.ts +10 -6
  172. package/build/logger.d.ts.map +1 -1
  173. package/build/logger.js +7 -4
  174. package/build/merge-styles.d.ts +10 -2
  175. package/build/merge-styles.d.ts.map +1 -1
  176. package/build/merge-styles.js +10 -3
  177. package/build/modal.d.ts +2 -0
  178. package/build/modal.d.ts.map +1 -1
  179. package/build/modal.js +6 -4
  180. package/build/model-class-require.d.ts +4 -2
  181. package/build/model-class-require.d.ts.map +1 -1
  182. package/build/model-class-require.js +4 -2
  183. package/build/model-events.d.ts +139 -346
  184. package/build/model-events.d.ts.map +1 -1
  185. package/build/model-events.js +21 -9
  186. package/build/model-name.d.ts +21 -7
  187. package/build/model-name.d.ts.map +1 -1
  188. package/build/model-name.js +12 -2
  189. package/build/model-prop-type.d.ts +533 -26
  190. package/build/model-prop-type.d.ts.map +1 -1
  191. package/build/model-prop-type.js +69 -11
  192. package/build/model-recipes-loader.d.ts +7 -3
  193. package/build/model-recipes-loader.d.ts.map +1 -1
  194. package/build/model-recipes-loader.js +4 -2
  195. package/build/model-recipes-model-loader.d.ts +189 -1493
  196. package/build/model-recipes-model-loader.d.ts.map +1 -1
  197. package/build/model-recipes-model-loader.js +119 -17
  198. package/build/models-response-reader.d.ts +600 -195
  199. package/build/models-response-reader.d.ts.map +1 -1
  200. package/build/models-response-reader.js +12 -4
  201. package/build/models.d.ts +438 -1
  202. package/build/models.d.ts.map +1 -1
  203. package/build/models.js +2 -1
  204. package/build/money-formatter.d.ts +25 -31
  205. package/build/money-formatter.d.ts.map +1 -1
  206. package/build/money-formatter.js +11 -8
  207. package/build/not-loaded-error.d.ts.map +1 -1
  208. package/build/not-loaded-error.js +2 -1
  209. package/build/params.d.ts +25 -17
  210. package/build/params.d.ts.map +1 -1
  211. package/build/params.js +19 -15
  212. package/build/preloaded.d.ts +61 -64
  213. package/build/preloaded.d.ts.map +1 -1
  214. package/build/preloaded.js +10 -4
  215. package/build/reset-realtime-runtime-state.d.ts.map +1 -1
  216. package/build/reset-realtime-runtime-state.js +2 -1
  217. package/build/resize-observer.d.ts.map +1 -1
  218. package/build/resize-observer.js +2 -1
  219. package/build/rest-props-validator.d.ts +2 -2
  220. package/build/rest-props-validator.d.ts.map +1 -1
  221. package/build/rest-props-validator.js +3 -2
  222. package/build/result.d.ts +142 -175
  223. package/build/result.d.ts.map +1 -1
  224. package/build/result.js +3 -2
  225. package/build/router/route.d.ts +50 -0
  226. package/build/router/route.d.ts.map +1 -1
  227. package/build/router/route.js +39 -10
  228. package/build/router/switch.d.ts +37 -1
  229. package/build/router/switch.d.ts.map +1 -1
  230. package/build/router/switch.js +29 -7
  231. package/build/router.d.ts +20 -0
  232. package/build/router.d.ts.map +1 -1
  233. package/build/router.js +15 -4
  234. package/build/routes-native.d.ts +13 -13
  235. package/build/routes-native.d.ts.map +1 -1
  236. package/build/routes-native.js +23 -11
  237. package/build/routes.d.ts +17 -9
  238. package/build/routes.d.ts.map +1 -1
  239. package/build/routes.js +7 -2
  240. package/build/run-last.d.ts.map +1 -1
  241. package/build/run-last.js +2 -1
  242. package/build/serializer.d.ts +44 -12
  243. package/build/serializer.d.ts.map +1 -1
  244. package/build/serializer.js +36 -7
  245. package/build/services.d.ts +29 -4
  246. package/build/services.d.ts.map +1 -1
  247. package/build/services.js +16 -4
  248. package/build/session-status-updater.d.ts +73 -25
  249. package/build/session-status-updater.d.ts.map +1 -1
  250. package/build/session-status-updater.js +52 -14
  251. package/build/source-maps-loader.d.ts +88 -33
  252. package/build/source-maps-loader.d.ts.map +1 -1
  253. package/build/source-maps-loader.js +74 -18
  254. package/build/super-admin/config-reader.d.ts.map +1 -1
  255. package/build/super-admin/config-reader.js +11 -16
  256. package/build/super-admin/edit-page/edit-attribute-checkbox.d.ts +10 -0
  257. package/build/super-admin/edit-page/edit-attribute-checkbox.d.ts.map +1 -1
  258. package/build/super-admin/edit-page/edit-attribute-checkbox.js +16 -4
  259. package/build/super-admin/edit-page/edit-attribute-content.d.ts +9 -0
  260. package/build/super-admin/edit-page/edit-attribute-content.d.ts.map +1 -1
  261. package/build/super-admin/edit-page/edit-attribute-content.js +15 -4
  262. package/build/super-admin/edit-page/edit-attribute-input.d.ts +8 -0
  263. package/build/super-admin/edit-page/edit-attribute-input.d.ts.map +1 -1
  264. package/build/super-admin/edit-page/edit-attribute-input.js +13 -4
  265. package/build/super-admin/edit-page/edit-attribute.d.ts +6 -0
  266. package/build/super-admin/edit-page/edit-attribute.d.ts.map +1 -1
  267. package/build/super-admin/edit-page/edit-attribute.js +11 -4
  268. package/build/super-admin/edit-page.d.ts +5 -0
  269. package/build/super-admin/edit-page.d.ts.map +1 -1
  270. package/build/super-admin/edit-page.js +11 -5
  271. package/build/super-admin/has-edit-config.d.ts.map +1 -1
  272. package/build/super-admin/has-edit-config.js +2 -1
  273. package/build/super-admin/index-page.d.ts +4 -0
  274. package/build/super-admin/index-page.d.ts.map +1 -1
  275. package/build/super-admin/index-page.js +9 -4
  276. package/build/super-admin/index.d.ts +4 -0
  277. package/build/super-admin/index.d.ts.map +1 -1
  278. package/build/super-admin/index.js +12 -6
  279. package/build/super-admin/layout/header/index.d.ts +4 -0
  280. package/build/super-admin/layout/header/index.d.ts.map +1 -1
  281. package/build/super-admin/layout/header/index.js +13 -8
  282. package/build/super-admin/layout/index.d.ts +24 -0
  283. package/build/super-admin/layout/index.d.ts.map +1 -1
  284. package/build/super-admin/layout/index.js +33 -5
  285. package/build/super-admin/layout/menu/index.d.ts +2 -0
  286. package/build/super-admin/layout/menu/index.d.ts.map +1 -1
  287. package/build/super-admin/layout/menu/index.js +8 -6
  288. package/build/super-admin/layout/menu/menu-content.d.ts +2 -0
  289. package/build/super-admin/layout/menu/menu-content.d.ts.map +1 -1
  290. package/build/super-admin/layout/menu/menu-content.js +6 -4
  291. package/build/super-admin/layout/menu/menu-item.d.ts +9 -0
  292. package/build/super-admin/layout/menu/menu-item.d.ts.map +1 -1
  293. package/build/super-admin/layout/menu/menu-item.js +15 -4
  294. package/build/super-admin/layout/no-access.d.ts +2 -0
  295. package/build/super-admin/layout/no-access.d.ts.map +1 -1
  296. package/build/super-admin/layout/no-access.js +7 -5
  297. package/build/super-admin/model-class-table.d.ts +4 -0
  298. package/build/super-admin/model-class-table.d.ts.map +1 -1
  299. package/build/super-admin/model-class-table.js +9 -4
  300. package/build/super-admin/models.d.ts.map +1 -1
  301. package/build/super-admin/models.js +2 -1
  302. package/build/super-admin/show-nav.d.ts +2 -0
  303. package/build/super-admin/show-nav.d.ts.map +1 -1
  304. package/build/super-admin/show-nav.js +6 -4
  305. package/build/super-admin/show-page/belongs-to-attribute-row.d.ts +17 -1
  306. package/build/super-admin/show-page/belongs-to-attribute-row.d.ts.map +1 -1
  307. package/build/super-admin/show-page/belongs-to-attribute-row.js +14 -5
  308. package/build/super-admin/show-page/index.d.ts +4 -0
  309. package/build/super-admin/show-page/index.d.ts.map +1 -1
  310. package/build/super-admin/show-page/index.js +9 -4
  311. package/build/super-admin/show-reflection-actions.d.ts +6 -0
  312. package/build/super-admin/show-reflection-actions.d.ts.map +1 -1
  313. package/build/super-admin/show-reflection-actions.js +11 -4
  314. package/build/super-admin/show-reflection-link.d.ts +4 -0
  315. package/build/super-admin/show-reflection-link.d.ts.map +1 -1
  316. package/build/super-admin/show-reflection-link.js +9 -4
  317. package/build/super-admin/show-reflection-page.d.ts +5 -0
  318. package/build/super-admin/show-reflection-page.d.ts.map +1 -1
  319. package/build/super-admin/show-reflection-page.js +10 -4
  320. package/build/table/column-content.d.ts +155 -19
  321. package/build/table/column-content.d.ts.map +1 -1
  322. package/build/table/column-content.js +55 -12
  323. package/build/table/column-identifier.d.ts +11 -2
  324. package/build/table/column-identifier.d.ts.map +1 -1
  325. package/build/table/column-identifier.js +7 -2
  326. package/build/table/column-visible.d.ts +11 -2
  327. package/build/table/column-visible.d.ts.map +1 -1
  328. package/build/table/column-visible.js +8 -2
  329. package/build/table/components/column.d.ts +2 -0
  330. package/build/table/components/column.d.ts.map +1 -1
  331. package/build/table/components/column.js +6 -4
  332. package/build/table/components/flat-list.d.ts +2 -0
  333. package/build/table/components/flat-list.d.ts.map +1 -1
  334. package/build/table/components/flat-list.js +6 -4
  335. package/build/table/components/header.d.ts +2 -0
  336. package/build/table/components/header.d.ts.map +1 -1
  337. package/build/table/components/header.js +6 -4
  338. package/build/table/components/row.d.ts +2 -0
  339. package/build/table/components/row.d.ts.map +1 -1
  340. package/build/table/components/row.js +6 -4
  341. package/build/table/filters/attribute-element.d.ts +2 -0
  342. package/build/table/filters/attribute-element.d.ts.map +1 -1
  343. package/build/table/filters/attribute-element.js +7 -7
  344. package/build/table/filters/filter-form.d.ts +58 -0
  345. package/build/table/filters/filter-form.d.ts.map +1 -1
  346. package/build/table/filters/filter-form.js +72 -9
  347. package/build/table/filters/filter.d.ts +2 -0
  348. package/build/table/filters/filter.d.ts.map +1 -1
  349. package/build/table/filters/filter.js +6 -4
  350. package/build/table/filters/index.d.ts +127 -0
  351. package/build/table/filters/index.d.ts.map +1 -1
  352. package/build/table/filters/index.js +21 -4
  353. package/build/table/filters/load-search-modal.d.ts +130 -0
  354. package/build/table/filters/load-search-modal.d.ts.map +1 -1
  355. package/build/table/filters/load-search-modal.js +28 -6
  356. package/build/table/filters/reflection-element.d.ts +2 -0
  357. package/build/table/filters/reflection-element.d.ts.map +1 -1
  358. package/build/table/filters/reflection-element.js +6 -4
  359. package/build/table/filters/save-search-modal.d.ts +134 -0
  360. package/build/table/filters/save-search-modal.d.ts.map +1 -1
  361. package/build/table/filters/save-search-modal.js +36 -5
  362. package/build/table/filters/scope-element.d.ts +6 -0
  363. package/build/table/filters/scope-element.d.ts.map +1 -1
  364. package/build/table/filters/scope-element.js +13 -8
  365. package/build/table/header-column-content.d.ts +7 -0
  366. package/build/table/header-column-content.d.ts.map +1 -1
  367. package/build/table/header-column-content.js +12 -4
  368. package/build/table/header-column.d.ts +50 -0
  369. package/build/table/header-column.d.ts.map +1 -1
  370. package/build/table/header-column.js +32 -5
  371. package/build/table/header-select.d.ts +18 -0
  372. package/build/table/header-select.d.ts.map +1 -1
  373. package/build/table/header-select.js +19 -4
  374. package/build/table/model-callback-args.d.ts +116 -3
  375. package/build/table/model-callback-args.d.ts.map +1 -1
  376. package/build/table/model-callback-args.js +10 -3
  377. package/build/table/model-column.d.ts +136 -0
  378. package/build/table/model-column.d.ts.map +1 -1
  379. package/build/table/model-column.js +27 -4
  380. package/build/table/model-row.d.ts +19 -0
  381. package/build/table/model-row.d.ts.map +1 -1
  382. package/build/table/model-row.js +24 -4
  383. package/build/table/select-calculator.d.ts +37 -2
  384. package/build/table/select-calculator.d.ts.map +1 -1
  385. package/build/table/select-calculator.js +29 -6
  386. package/build/table/settings/column-row.d.ts +6 -0
  387. package/build/table/settings/column-row.d.ts.map +1 -1
  388. package/build/table/settings/column-row.js +13 -12
  389. package/build/table/settings/download-action.d.ts +5 -0
  390. package/build/table/settings/download-action.d.ts.map +1 -1
  391. package/build/table/settings/download-action.js +10 -4
  392. package/build/table/settings/index.d.ts +5 -0
  393. package/build/table/settings/index.d.ts.map +1 -1
  394. package/build/table/settings/index.js +10 -4
  395. package/build/table/should-render-loading-content.d.ts +2 -2
  396. package/build/table/should-render-loading-content.d.ts.map +1 -1
  397. package/build/table/should-render-loading-content.js +3 -2
  398. package/build/table/table-settings.d.ts +236 -43
  399. package/build/table/table-settings.d.ts.map +1 -1
  400. package/build/table/table-settings.js +104 -20
  401. package/build/table/table.d.ts +271 -0
  402. package/build/table/table.d.ts.map +1 -1
  403. package/build/table/table.js +167 -16
  404. package/build/table/use-sorting.d.ts +10 -8
  405. package/build/table/use-sorting.d.ts.map +1 -1
  406. package/build/table/use-sorting.js +16 -8
  407. package/build/table/widths.d.ts +55 -8
  408. package/build/table/widths.d.ts.map +1 -1
  409. package/build/table/widths.js +25 -2
  410. package/build/table/worker-plugins-check-all-checkbox.d.ts +18 -0
  411. package/build/table/worker-plugins-check-all-checkbox.d.ts.map +1 -1
  412. package/build/table/worker-plugins-check-all-checkbox.js +25 -5
  413. package/build/table/worker-plugins-checkbox.d.ts +5 -0
  414. package/build/table/worker-plugins-checkbox.d.ts.map +1 -1
  415. package/build/table/worker-plugins-checkbox.js +10 -4
  416. package/build/translated-attributes.d.ts +7 -2
  417. package/build/translated-attributes.d.ts.map +1 -1
  418. package/build/translated-attributes.js +8 -2
  419. package/build/translated-collections.d.ts +11 -2
  420. package/build/translated-collections.d.ts.map +1 -1
  421. package/build/translated-collections.js +9 -3
  422. package/build/updated-attribute.d.ts.map +1 -1
  423. package/build/updated-attribute.js +2 -1
  424. package/build/url-encode.d.ts.map +1 -1
  425. package/build/url-encode.js +2 -1
  426. package/build/use-can-can.d.ts +2 -2
  427. package/build/use-can-can.d.ts.map +1 -1
  428. package/build/use-can-can.js +27 -12
  429. package/build/use-collection.d.ts +167 -121
  430. package/build/use-collection.d.ts.map +1 -1
  431. package/build/use-collection.js +113 -44
  432. package/build/use-created-event.d.ts +120 -11
  433. package/build/use-created-event.d.ts.map +1 -1
  434. package/build/use-created-event.js +10 -7
  435. package/build/use-current-user-context.d.ts +2 -2
  436. package/build/use-current-user-context.d.ts.map +1 -1
  437. package/build/use-current-user-context.js +3 -2
  438. package/build/use-current-user.d.ts +86 -70
  439. package/build/use-current-user.d.ts.map +1 -1
  440. package/build/use-current-user.js +36 -8
  441. package/build/use-destroyed-event.d.ts +117 -8
  442. package/build/use-destroyed-event.d.ts.map +1 -1
  443. package/build/use-destroyed-event.js +29 -22
  444. package/build/use-input.d.ts +74 -12
  445. package/build/use-input.d.ts.map +1 -1
  446. package/build/use-input.js +33 -5
  447. package/build/use-model-class-event.d.ts +124 -10
  448. package/build/use-model-class-event.d.ts.map +1 -1
  449. package/build/use-model-class-event.js +26 -16
  450. package/build/use-model-event.d.ts +121 -8
  451. package/build/use-model-event.d.ts.map +1 -1
  452. package/build/use-model-event.js +24 -19
  453. package/build/use-model.d.ts +162 -244
  454. package/build/use-model.d.ts.map +1 -1
  455. package/build/use-model.js +85 -32
  456. package/build/use-resize-observer.d.ts.map +1 -1
  457. package/build/use-resize-observer.js +2 -1
  458. package/build/use-router.d.ts.map +1 -1
  459. package/build/use-router.js +2 -1
  460. package/build/use-screen-layout.d.ts +7 -2
  461. package/build/use-screen-layout.d.ts.map +1 -1
  462. package/build/use-screen-layout.js +8 -5
  463. package/build/use-shape.js +2 -1
  464. package/build/use-styles.d.ts +11 -5
  465. package/build/use-styles.d.ts.map +1 -1
  466. package/build/use-styles.js +16 -9
  467. package/build/use-updated-event.d.ts +66 -182
  468. package/build/use-updated-event.d.ts.map +1 -1
  469. package/build/use-updated-event.js +22 -18
  470. package/build/use-validation-errors.d.ts.map +1 -1
  471. package/build/use-validation-errors.js +2 -1
  472. package/build/utils/button.d.ts +14 -0
  473. package/build/utils/button.d.ts.map +1 -1
  474. package/build/utils/button.js +24 -7
  475. package/build/utils/card.d.ts +9 -0
  476. package/build/utils/card.d.ts.map +1 -1
  477. package/build/utils/card.js +13 -2
  478. package/build/utils/checkbox.d.ts +12 -0
  479. package/build/utils/checkbox.d.ts.map +1 -1
  480. package/build/utils/checkbox.js +18 -4
  481. package/build/utils/checkboxes.d.ts +25 -0
  482. package/build/utils/checkboxes.d.ts.map +1 -1
  483. package/build/utils/checkboxes.js +29 -3
  484. package/build/utils/default-style.d.ts +10 -4
  485. package/build/utils/default-style.d.ts.map +1 -1
  486. package/build/utils/default-style.js +12 -4
  487. package/build/utils/header.d.ts +6 -1
  488. package/build/utils/header.d.ts.map +1 -1
  489. package/build/utils/header.js +4 -2
  490. package/build/utils/icon.d.ts +7 -6
  491. package/build/utils/icon.d.ts.map +1 -1
  492. package/build/utils/icon.js +12 -11
  493. package/build/utils/invalid-feedback.d.ts +4 -0
  494. package/build/utils/invalid-feedback.d.ts.map +1 -1
  495. package/build/utils/invalid-feedback.js +8 -2
  496. package/build/utils/modal.d.ts +2 -0
  497. package/build/utils/modal.d.ts.map +1 -1
  498. package/build/utils/modal.js +9 -7
  499. package/build/utils/text.d.ts +8 -1
  500. package/build/utils/text.d.ts.map +1 -1
  501. package/build/utils/text.js +9 -2
  502. package/build/validation-error.d.ts +5 -2
  503. package/build/validation-error.d.ts.map +1 -1
  504. package/build/validation-error.js +5 -2
  505. package/build/validation-errors.d.ts +57 -15
  506. package/build/validation-errors.d.ts.map +1 -1
  507. package/build/validation-errors.js +37 -8
  508. package/build/websocket-request-client.d.ts +61 -15
  509. package/build/websocket-request-client.d.ts.map +1 -1
  510. package/build/websocket-request-client.js +35 -9
  511. package/build/with-api-maker.d.ts.map +1 -1
  512. package/build/with-api-maker.js +2 -1
  513. package/build/with-collection.d.ts.map +1 -1
  514. package/build/with-collection.js +2 -1
  515. package/build/with-current-user.d.ts.map +1 -1
  516. package/build/with-current-user.js +2 -1
  517. package/build/with-model.d.ts.map +1 -1
  518. package/build/with-model.js +2 -1
  519. package/build/with-router.d.ts.map +1 -1
  520. package/build/with-router.js +2 -1
  521. package/package.json +4 -3
  522. package/build/base-component.d.ts +0 -5
  523. package/build/base-component.d.ts.map +0 -1
  524. package/build/base-component.js +0 -4
@@ -1,26 +1,200 @@
1
+ /** @typedef {import("./base-model.js").default} BaseModel */
2
+ /** @typedef {{append(value: string): void, end(): string}} HashWriter */
3
+ /** @typedef {string | number} ModelIdentifier */
4
+ /** @typedef {string | number | boolean | null | undefined | {toString(): string}} CacheKeyAttributeValue */
5
+ /** @typedef {{name: string}} CacheKeyModelClassData */
6
+ /**
7
+ * @typedef {object} CacheKeyModel
8
+ * @property {() => Record<string, CacheKeyAttributeValue>} attributes
9
+ * @property {() => boolean} markedForDestruction
10
+ * @property {() => CacheKeyModelClassData} modelClassData
11
+ * @property {() => {primaryKey(): string}} modelClass
12
+ * @property {() => ModelIdentifier | null | undefined | ""} primaryKey
13
+ * @property {(attributeName: string) => CacheKeyAttributeValue} readAttributeUnderscore
14
+ * @property {(attributeName: string) => boolean} isAttributeLoaded
15
+ * @property {Record<string, CacheKeyModel | Array<CacheKeyModel> | null | undefined>} relationships
16
+ * @property {() => ModelIdentifier} uniqueKey
17
+ */
1
18
  /** Generates local/full cache keys for models. */
2
19
  export default class CacheKeyGenerator {
3
- /** Constructor. */
4
- constructor(model: any);
5
- model: any;
6
- allModels: any[];
20
+ /**
21
+ * Creates a cache-key generator rooted at one model instance.
22
+ * @param {CacheKeyModel} model
23
+ */
24
+ constructor(model: CacheKeyModel);
25
+ model: CacheKeyModel;
26
+ allModels: CacheKeyModel[];
7
27
  readModels: {};
8
28
  filledModels: boolean;
9
- /** local. */
10
- local(): any;
11
- /** recordModelType. */
12
- recordModelType(relationshipType: any): void;
13
- /** recordModel. */
14
- recordModel(relationshipType: any, model: any): void;
15
- /** isModelRecorded. */
16
- isModelRecorded(relationshipType: any, model: any): boolean;
17
- /** fillModels. */
18
- fillModels(model: any): void;
19
- /** cacheKey. */
20
- cacheKey(): any;
21
- /** feedModel. */
22
- feedModel(model: any, md5: any): void;
23
- /** @returns {number | string} */
24
- modelIdentity(model: any): number | string;
29
+ /**
30
+ * Builds a cache key from the root model only.
31
+ * @returns {string}
32
+ */
33
+ local(): string;
34
+ /**
35
+ * Ensures one relationship type has a tracking bucket.
36
+ * @param {string} relationshipType
37
+ */
38
+ recordModelType(relationshipType: string): void;
39
+ /**
40
+ * Records one related model under its relationship type.
41
+ * @param {string} relationshipType
42
+ * @param {CacheKeyModel} model
43
+ */
44
+ recordModel(relationshipType: string, model: CacheKeyModel): void;
45
+ /**
46
+ * Returns true when a related model has already been visited for one relationship type.
47
+ * @param {string} relationshipType
48
+ * @param {CacheKeyModel} model
49
+ * @returns {boolean}
50
+ */
51
+ isModelRecorded(relationshipType: string, model: CacheKeyModel): boolean;
52
+ /**
53
+ * Traverses loaded relationships so they are included in the full cache key.
54
+ * @param {CacheKeyModel} model
55
+ */
56
+ fillModels(model: CacheKeyModel): void;
57
+ /**
58
+ * Builds a cache key that includes the root model and all loaded related models.
59
+ * @returns {string}
60
+ */
61
+ cacheKey(): string;
62
+ /**
63
+ * Appends one model's identity and loaded attributes to the running hash.
64
+ * @param {CacheKeyModel} model
65
+ * @param {HashWriter} md5
66
+ */
67
+ feedModel(model: CacheKeyModel, md5: HashWriter): void;
68
+ /**
69
+ * Returns the persisted primary key when available, otherwise the temporary unique key.
70
+ * @param {CacheKeyModel} model
71
+ * @returns {ModelIdentifier}
72
+ */
73
+ modelIdentity(model: CacheKeyModel): ModelIdentifier;
25
74
  }
75
+ export type BaseModel = {
76
+ abilities: import("./base-model.js").ModelAbilityMap;
77
+ changes: import("./base-model.js").ModelDataMap;
78
+ collection: import("./collection.js").default<any>;
79
+ _identifierKey: string | number;
80
+ _markedForDestruction: boolean;
81
+ modelData: import("./base-model.js").ModelDataMap;
82
+ newRecord: boolean;
83
+ previousModelData: any;
84
+ preloadedRelationships: import("./base-model.js").PreloadedRelationshipMap;
85
+ relationshipsCache: import("./base-model.js").LoadedRelationshipMap;
86
+ relationships: import("./base-model.js").LoadedRelationshipMap;
87
+ uniqueKeyValue: number;
88
+ assignAttributes(newAttributes: ModelDataMap): void;
89
+ attributes(): ModelDataMap;
90
+ can(givenAbilityName: string): boolean;
91
+ clone(): /*elided*/ any;
92
+ cacheKey(): number | string;
93
+ localCacheKey(): string;
94
+ fullCacheKey(): string;
95
+ create(attributes?: ModelDataMap, options?: ParseValidationErrorsOptions): Promise<{
96
+ model: /*elided*/ any;
97
+ response: ModelCommandResponse;
98
+ }>;
99
+ createRaw(rawData: RawDataInput, options?: ParseValidationErrorsOptions): Promise<{
100
+ model: /*elided*/ any;
101
+ response: ModelCommandResponse;
102
+ }>;
103
+ destroy(): Promise<{
104
+ model: /*elided*/ any;
105
+ response: ModelCommandResponse;
106
+ }>;
107
+ ensureAbilities(listOfAbilities: string[]): Promise<void>;
108
+ getAttributes(): ModelDataMap;
109
+ handleResponseError(response: ModelCommandResponse): never;
110
+ identifierKey(): number | string;
111
+ isAssociationLoaded(associationName: string): boolean;
112
+ isAssociationLoadedUnderscore(associationNameUnderscore: string): boolean;
113
+ isAssociationPresent(associationName: string): boolean;
114
+ ensureAssociationLoaded(associationName: string): Promise<LoadedRelationshipValue>;
115
+ ensureAssociationLoadedUnderscore(associationNameUnderscore: string): Promise<LoadedRelationshipValue>;
116
+ isAttributeChanged(attributeName: string): boolean;
117
+ isChanged(): boolean;
118
+ isNewRecord(): boolean;
119
+ isPersisted(): boolean;
120
+ savedChangeToAttribute(attributeName: string): boolean;
121
+ setNewModel(model: /*elided*/ any): void;
122
+ setNewModelData(model: /*elided*/ any): void;
123
+ _isDateChanged(oldValue: ModelValue | null | undefined, newValue: ModelValue | null | undefined): boolean | void;
124
+ _isIntegerChanged(oldValue: ModelValue | null | undefined, newValue: ModelValue | null | undefined): boolean | void;
125
+ _isStringChanged(oldValue: ModelValue | null | undefined, newValue: ModelValue | null | undefined): boolean | void;
126
+ modelClassData(): ModelClassDataType;
127
+ reload(): Promise<void>;
128
+ save(): Promise<{
129
+ model: /*elided*/ any;
130
+ response?: object;
131
+ }>;
132
+ saveRaw(rawData: RawDataInput, options?: ParseValidationErrorsOptions & {
133
+ simpleModelErrors?: boolean;
134
+ }): Promise<{
135
+ model: /*elided*/ any;
136
+ response: ModelCommandResponse;
137
+ }>;
138
+ update(newAttributes?: ModelDataMap, options?: ParseValidationErrorsOptions): Promise<{
139
+ model: /*elided*/ any;
140
+ response?: object;
141
+ }>;
142
+ _refreshModelFromResponse(response: ModelCommandResponse): void;
143
+ _refreshModelDataFromResponse(response: ModelCommandResponse): void;
144
+ updateRaw(rawData: RawDataInput, options?: ParseValidationErrorsOptions & {
145
+ simpleModelErrors?: boolean;
146
+ }): Promise<{
147
+ response: ModelCommandResponse;
148
+ model: /*elided*/ any;
149
+ }>;
150
+ isValid(): never;
151
+ isValidOnServer(): Promise<{
152
+ valid: boolean;
153
+ errors: ValidationResponseErrors;
154
+ }>;
155
+ modelClass(): BaseModelClassType;
156
+ preloadRelationship(relationshipName: string, model: /*elided*/ any | /*elided*/ any[] | null): void;
157
+ markForDestruction(): void;
158
+ markedForDestruction(): boolean;
159
+ uniqueKey(): number;
160
+ _callMemberCommand(args: ModelCommandDescriptor, commandArgs: ModelCommandOptions): import("./command-execution.js").default;
161
+ readAttribute(attributeName: string): ModelValue | null | undefined;
162
+ readAttributeUnderscore(attributeName: string): ModelValue | null | undefined;
163
+ isAttributeLoaded(attributeName: string): boolean;
164
+ _isPresent(value: ModelValue | null | undefined): boolean;
165
+ _loadBelongsToReflection(args: RelationshipLoadArgs, queryArgs?: import("./collection.js").QueryArgsType): Promise</*elided*/ any | null>;
166
+ _readBelongsToReflection({ reflectionName }: RelationshipLoadArgs): /*elided*/ any | null;
167
+ _loadHasManyReflection(args: RelationshipLoadArgs, queryArgs?: import("./collection.js").QueryArgsType): Promise</*elided*/ any[]>;
168
+ _loadHasOneReflection(args: RelationshipLoadArgs, queryArgs?: import("./collection.js").QueryArgsType): Promise</*elided*/ any | null>;
169
+ _readHasOneReflection({ reflectionName }: RelationshipLoadArgs): /*elided*/ any | null;
170
+ _readModelDataFromArgs(args?: BaseModelArgsObject): void;
171
+ _readPreloadedRelationships(preloaded: {
172
+ getModel: (relationshipType: string, relationshipId: number | string) => /*elided*/ any;
173
+ }): void;
174
+ primaryKey(): number | string;
175
+ };
176
+ export type HashWriter = {
177
+ append(value: string): void;
178
+ end(): string;
179
+ };
180
+ export type ModelIdentifier = string | number;
181
+ export type CacheKeyAttributeValue = string | number | boolean | null | undefined | {
182
+ toString(): string;
183
+ };
184
+ export type CacheKeyModelClassData = {
185
+ name: string;
186
+ };
187
+ export type CacheKeyModel = {
188
+ attributes: () => Record<string, CacheKeyAttributeValue>;
189
+ markedForDestruction: () => boolean;
190
+ modelClassData: () => CacheKeyModelClassData;
191
+ modelClass: () => {
192
+ primaryKey(): string;
193
+ };
194
+ primaryKey: () => ModelIdentifier | null | undefined | "";
195
+ readAttributeUnderscore: (attributeName: string) => CacheKeyAttributeValue;
196
+ isAttributeLoaded: (attributeName: string) => boolean;
197
+ relationships: Record<string, CacheKeyModel | Array<CacheKeyModel> | null | undefined>;
198
+ uniqueKey: () => ModelIdentifier;
199
+ };
26
200
  //# sourceMappingURL=cache-key-generator.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"cache-key-generator.d.ts","sourceRoot":"/src/","sources":["cache-key-generator.js"],"names":[],"mappings":"AAEA,kDAAkD;AAClD;IACE,mBAAmB;IACnB,wBAOC;IANC,WAAkB;IAClB,iBAAwB;IACxB,eAAoB;IAGpB,sBAAyB;IAG3B,aAAa;IACb,aAMC;IAED,uBAAuB;IACvB,6CAIC;IAED,mBAAmB;IACnB,qDAGC;IAED,uBAAuB;IACvB,4DAIC;IAED,kBAAkB;IAClB,6BAsBC;IAED,gBAAgB;IAChB,gBAYC;IAED,iBAAiB;IACjB,sCAmBC;IAED,iCAAiC;IACjC,2BADc,MAAM,GAAG,MAAM,CAa5B;CACF"}
1
+ {"version":3,"file":"cache-key-generator.d.ts","sourceRoot":"/src/","sources":["cache-key-generator.js"],"names":[],"mappings":"AAGA,6DAA6D;AAC7D,yEAAyE;AACzE,iDAAiD;AACjD,4GAA4G;AAC5G,uDAAuD;AACvD;;;;;;;;;;;GAWG;AAEH,kDAAkD;AAClD;IACE;;;OAGG;IACH,mBAFW,aAAa,EASvB;IANC,qBAAkB;IAClB,2BAAwB;IACxB,eAAoB;IAGpB,sBAAyB;IAG3B;;;OAGG;IACH,SAFa,MAAM,CAQlB;IAED;;;OAGG;IACH,kCAFW,MAAM,QAMhB;IAED;;;;OAIG;IACH,8BAHW,MAAM,SACN,aAAa,QAKvB;IAED;;;;;OAKG;IACH,kCAJW,MAAM,SACN,aAAa,GACX,OAAO,CAQnB;IAED;;;OAGG;IACH,kBAFW,aAAa,QAwBvB;IAED;;;OAGG;IACH,YAFa,MAAM,CAclB;IAED;;;;OAIG;IACH,iBAHW,aAAa,OACb,UAAU,QAqBpB;IAED;;;;OAIG;IACH,qBAHW,aAAa,GACX,eAAe,CAc3B;CACF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;gBACggwB,CAAC;;;yBAA6O,CAAC;;;;;;;gBAAoc,CAAC;;;;;yBAAm7E,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;yBAzK3l2B;IAAC,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,GAAG,IAAI,MAAM,CAAA;CAAC;8BAC5C,MAAM,GAAG,MAAM;qCACf,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,GAAG,SAAS,GAAG;IAAC,QAAQ,IAAI,MAAM,CAAA;CAAC;qCACnE;IAAC,IAAI,EAAE,MAAM,CAAA;CAAC;;gBAGd,MAAM,MAAM,CAAC,MAAM,EAAE,sBAAsB,CAAC;0BAC5C,MAAM,OAAO;oBACb,MAAM,sBAAsB;gBAC5B,MAAM;QAAC,UAAU,IAAI,MAAM,CAAA;KAAC;gBAC5B,MAAM,eAAe,GAAG,IAAI,GAAG,SAAS,GAAG,EAAE;6BAC7C,CAAC,aAAa,EAAE,MAAM,KAAK,sBAAsB;uBACjD,CAAC,aAAa,EAAE,MAAM,KAAK,OAAO;mBAClC,MAAM,CAAC,MAAM,EAAE,aAAa,GAAG,KAAK,CAAC,aAAa,CAAC,GAAG,IAAI,GAAG,SAAS,CAAC;eACvE,MAAM,eAAe"}
@@ -1,7 +1,28 @@
1
+ // @ts-check
1
2
  import SparkMD5 from "spark-md5";
3
+ /** @typedef {import("./base-model.js").default} BaseModel */
4
+ /** @typedef {{append(value: string): void, end(): string}} HashWriter */
5
+ /** @typedef {string | number} ModelIdentifier */
6
+ /** @typedef {string | number | boolean | null | undefined | {toString(): string}} CacheKeyAttributeValue */
7
+ /** @typedef {{name: string}} CacheKeyModelClassData */
8
+ /**
9
+ * @typedef {object} CacheKeyModel
10
+ * @property {() => Record<string, CacheKeyAttributeValue>} attributes
11
+ * @property {() => boolean} markedForDestruction
12
+ * @property {() => CacheKeyModelClassData} modelClassData
13
+ * @property {() => {primaryKey(): string}} modelClass
14
+ * @property {() => ModelIdentifier | null | undefined | ""} primaryKey
15
+ * @property {(attributeName: string) => CacheKeyAttributeValue} readAttributeUnderscore
16
+ * @property {(attributeName: string) => boolean} isAttributeLoaded
17
+ * @property {Record<string, CacheKeyModel | Array<CacheKeyModel> | null | undefined>} relationships
18
+ * @property {() => ModelIdentifier} uniqueKey
19
+ */
2
20
  /** Generates local/full cache keys for models. */
3
21
  export default class CacheKeyGenerator {
4
- /** Constructor. */
22
+ /**
23
+ * Creates a cache-key generator rooted at one model instance.
24
+ * @param {CacheKeyModel} model
25
+ */
5
26
  constructor(model) {
6
27
  this.model = model;
7
28
  this.allModels = [model];
@@ -10,30 +31,49 @@ export default class CacheKeyGenerator {
10
31
  this.recordModel(model.modelClassData().name, model);
11
32
  this.filledModels = false;
12
33
  }
13
- /** local. */
34
+ /**
35
+ * Builds a cache key from the root model only.
36
+ * @returns {string}
37
+ */
14
38
  local() {
15
39
  const md5 = new SparkMD5();
16
40
  this.feedModel(this.model, md5);
17
41
  return md5.end();
18
42
  }
19
- /** recordModelType. */
43
+ /**
44
+ * Ensures one relationship type has a tracking bucket.
45
+ * @param {string} relationshipType
46
+ */
20
47
  recordModelType(relationshipType) {
21
48
  if (!(relationshipType in this.readModels)) {
22
49
  this.readModels[relationshipType] = {};
23
50
  }
24
51
  }
25
- /** recordModel. */
52
+ /**
53
+ * Records one related model under its relationship type.
54
+ * @param {string} relationshipType
55
+ * @param {CacheKeyModel} model
56
+ */
26
57
  recordModel(relationshipType, model) {
27
58
  this.allModels.push(model);
28
59
  this.readModels[relationshipType][this.modelIdentity(model)] = true;
29
60
  }
30
- /** isModelRecorded. */
61
+ /**
62
+ * Returns true when a related model has already been visited for one relationship type.
63
+ * @param {string} relationshipType
64
+ * @param {CacheKeyModel} model
65
+ * @returns {boolean}
66
+ */
31
67
  isModelRecorded(relationshipType, model) {
32
68
  if (this.modelIdentity(model) in this.readModels[relationshipType]) {
33
69
  return true;
34
70
  }
71
+ return false;
35
72
  }
36
- /** fillModels. */
73
+ /**
74
+ * Traverses loaded relationships so they are included in the full cache key.
75
+ * @param {CacheKeyModel} model
76
+ */
37
77
  fillModels(model) {
38
78
  for (const relationshipType in model.relationships) {
39
79
  this.recordModelType(relationshipType);
@@ -55,7 +95,10 @@ export default class CacheKeyGenerator {
55
95
  }
56
96
  this.filledModels = true;
57
97
  }
58
- /** cacheKey. */
98
+ /**
99
+ * Builds a cache key that includes the root model and all loaded related models.
100
+ * @returns {string}
101
+ */
59
102
  cacheKey() {
60
103
  if (!this.filledModels) {
61
104
  this.fillModels(this.model);
@@ -66,12 +109,16 @@ export default class CacheKeyGenerator {
66
109
  }
67
110
  return md5.end();
68
111
  }
69
- /** feedModel. */
112
+ /**
113
+ * Appends one model's identity and loaded attributes to the running hash.
114
+ * @param {CacheKeyModel} model
115
+ * @param {HashWriter} md5
116
+ */
70
117
  feedModel(model, md5) {
71
118
  md5.append("--model--");
72
119
  md5.append(model.modelClassData().name);
73
120
  md5.append("--unique-key--");
74
- md5.append(this.modelIdentity(model));
121
+ md5.append(String(this.modelIdentity(model)));
75
122
  if (model.markedForDestruction()) {
76
123
  md5.append("--marked-for-destruction--");
77
124
  }
@@ -80,10 +127,14 @@ export default class CacheKeyGenerator {
80
127
  for (const attributeName in attributes) {
81
128
  md5.append(attributeName);
82
129
  md5.append("--attribute--");
83
- md5.append(`${model.readAttributeUnderscore(attributeName)}`);
130
+ md5.append(String(model.readAttributeUnderscore(attributeName)));
84
131
  }
85
132
  }
86
- /** @returns {number | string} */
133
+ /**
134
+ * Returns the persisted primary key when available, otherwise the temporary unique key.
135
+ * @param {CacheKeyModel} model
136
+ * @returns {ModelIdentifier}
137
+ */
87
138
  modelIdentity(model) {
88
139
  const primaryKeyName = model.modelClass().primaryKey();
89
140
  if (model.isAttributeLoaded(primaryKeyName)) {
@@ -95,4 +146,4 @@ export default class CacheKeyGenerator {
95
146
  return model.uniqueKey();
96
147
  }
97
148
  }
98
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FjaGUta2V5LWdlbmVyYXRvci5qcyIsInNvdXJjZVJvb3QiOiIvc3JjLyIsInNvdXJjZXMiOlsiY2FjaGUta2V5LWdlbmVyYXRvci5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLFFBQVEsTUFBTSxXQUFXLENBQUE7QUFFaEMsa0RBQWtEO0FBQ2xELE1BQU0sQ0FBQyxPQUFPLE9BQU8saUJBQWlCO0lBQ3BDLG1CQUFtQjtJQUNuQixZQUFZLEtBQUs7UUFDZixJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQTtRQUNsQixJQUFJLENBQUMsU0FBUyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUE7UUFDeEIsSUFBSSxDQUFDLFVBQVUsR0FBRyxFQUFFLENBQUE7UUFDcEIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUFLLENBQUMsY0FBYyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUE7UUFDakQsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsY0FBYyxFQUFFLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFBO1FBQ3BELElBQUksQ0FBQyxZQUFZLEdBQUcsS0FBSyxDQUFBO0lBQzNCLENBQUM7SUFFRCxhQUFhO0lBQ2IsS0FBSztRQUNILE1BQU0sR0FBRyxHQUFHLElBQUksUUFBUSxFQUFFLENBQUE7UUFFMUIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxDQUFBO1FBRS9CLE9BQU8sR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFBO0lBQ2xCLENBQUM7SUFFRCx1QkFBdUI7SUFDdkIsZUFBZSxDQUFDLGdCQUFnQjtRQUM5QixJQUFJLENBQUMsQ0FBQyxnQkFBZ0IsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQztZQUMzQyxJQUFJLENBQUMsVUFBVSxDQUFDLGdCQUFnQixDQUFDLEdBQUcsRUFBRSxDQUFBO1FBQ3hDLENBQUM7SUFDSCxDQUFDO0lBRUQsbUJBQW1CO0lBQ25CLFdBQVcs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QTtRQUMxQyxDQUFDO1FBRUQsR0FBRyxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQTtRQUUxQixNQUFNLFVBQVUsR0FBRyxLQUFLLENBQUMsVUFBVSxFQUFFLENBQUE7UUFFckMsS0FBSyxNQUFNLGFBQWEsSUFBSSxVQUFVLEVBQUUsQ0FBQztZQUN2QyxHQUFHLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFBO1lBQ3pCLEdBQUcsQ0FBQyxNQUFNLENBQUMsZUFBZSxDQUFDLENBQUE7WUFDM0IsR0FBRyxDQUFDLE1BQU0sQ0FBQyxHQUFHLEtBQUssQ0FBQyx1QkFBdUIsQ0FBQyxhQUFhLENBQUMsRUFBRSxDQUFDLENBQUE7UUFDL0QsQ0FBQztJQUNILENBQUM7SUFFRCxpQ0FBaUM7SUFDakMsYUFBYSxDQUFDLEtBQUs7UUFDakIsTUFBTSxjQUFjLEdBQUcsS0FBSyxDQUFDLFVBQVUsRUFBRSxDQUFDLFVBQVUsRUFBRSxDQUFBO1FBRXRELElBQUksS0FBSyxDQUFDLGlCQUFpQixDQUFDLGNBQWMsQ0FBQyxFQUFFLENBQUM7WUFDNUMsTUFBTSxlQUFlLEdBQUcsS0FBSyxDQUFDLFVBQVUsRUFBRSxDQUFBO1lBRTFDLElBQUksZUFBZSxLQUFLLElBQUksSUFBSSxlQUFlLEtBQUssU0FBUyxJQUFJLGVBQWUsS0FBSyxFQUFFLEVBQUUsQ0FBQztnQkFDeEYsT0FBTyxlQUFlLENBQUE7WUFDeEIsQ0FBQztRQUNILENBQUM7UUFFRCxPQUFPLEtBQUssQ0FBQyxTQUFTLEVBQUUsQ0FBQTtJQUMxQixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgU3BhcmtNRDUgZnJvbSBcInNwYXJrLW1kNVwiXG5cbi8qKiBHZW5lcmF0ZXMgbG9jYWwvZnVsbCBjYWNoZSBrZXlzIGZvciBtb2RlbHMuICovXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBDYWNoZUtleUdlbmVyYXRvciB7XG4gIC8qKiBDb25zdHJ1Y3Rvci4gKi9cbiAgY29uc3RydWN0b3IobW9kZWwpIHtcbiAgICB0aGlzLm1vZGVsID0gbW9kZWxcbiAgICB0aGlzLmFsbE1vZGVscyA9IFttb2RlbF1cbiAgICB0aGlzLnJlYWRNb2RlbHMgPSB7fVxuICAgIHRoaXMucmVjb3JkTW9kZWxUeXBlKG1vZGVsLm1vZGVsQ2xhc3NEYXRhKCkubmFtZSlcbiAgICB0aGlzLnJlY29yZE1vZGVsKG1vZGVsLm1vZGVsQ2xhc3NEYXRhKCkubmFtZSwgbW9kZWwpXG4gICAgdGhpcy5maWxsZWRNb2RlbHMgPSBmYWxzZVxuICB9XG5cbiAgLyoqIGxvY2FsLiAqL1xuICBsb2NhbCgpIHtcbiAgICBjb25zdCBtZDUgPSBuZXcgU3BhcmtNRDUoKVxuXG4gICAgdGhpcy5mZWVkTW9kZWwodGhpcy5tb2RlbCwgbWQ1KVxuXG4gICAgcmV0dXJuIG1kNS5lbmQoKVxuICB9XG5cbiAgLyoqIHJlY29yZE1vZGVsVHlwZS4gKi9cbiAgcmVjb3JkTW9kZWxUeXBlKHJlbGF0aW9uc2hpcFR5cGUpIHtcbiAgICBpZiAoIShyZWxhdGlvbnNoaXBUeXBlIGluIHRoaXMucmVhZE1vZGVscykpIHtcbiAgICAgIHRoaXMucmVhZE1vZGVsc1tyZWxhdGlvbnNoaXBUeXBlXSA9IHt9XG4gICAgfVxuICB9XG5cbiAgLyoqIHJlY29yZE1vZGVsLiAqL1xuICByZWNvcmRNb2RlbChyZWxhdGlvbnNoaXBUeXBlLCBtb2RlbCkge1xuICAgIHRoaXMuYWxsTW9kZWxzLnB1c2gobW9kZWwpXG4gICAgdGhpcy5yZWFkTW9kZWxzW3JlbGF0aW9uc2hpcFR5cGVdW3RoaXMubW9kZWxJZGVudGl0eShtb2RlbCldID0gdHJ1ZVxuICB9XG5cbiAgLyoqIGlzTW9kZWxSZWNvcmRlZC4gKi9cbiAgaXNNb2RlbFJlY29yZGVkKHJlbGF0aW9uc2hpcFR5cGUsIG1vZGVsKSB7XG4gICAgaWYgKHRoaXMubW9kZWxJZGVudGl0eShtb2RlbCkgaW4gdGhpcy5yZWFkTW9kZWxzW3JlbGF0aW9uc2hpcFR5cGVdKSB7XG4gICAgICByZXR1cm4gdHJ1ZVxuICAgIH1cbiAgfVxuXG4gIC8qKiBmaWxsTW9kZWxzLiAqL1xuICBmaWxsTW9kZWxzKG1vZGVsKSB7XG4gICAgZm9yIChjb25zdCByZWxhdGlvbnNoaXBUeXBlIGluIG1vZGVsLnJlbGF0aW9uc2hpcHMpIHtcbiAgICAgIHRoaXMucmVjb3JkTW9kZWxUeXBlKHJlbGF0aW9uc2hpcFR5cGUpXG5cbiAgICAgIGNvbnN0IGxvYWRlZFJlbGF0aW9uc2hpcCA9IG1vZGVsLnJlbGF0aW9uc2hpcHNbcmVsYXRpb25zaGlwVHlwZV1cblxuICAgICAgaWYgKEFycmF5LmlzQXJyYXkobG9hZGVkUmVsYXRpb25zaGlwKSkgeyAvLyBoYXNfbWFueVxuICAgICAgICBmb3IgKGNvbnN0IGFub3RoZXJNb2RlbCBvZiBsb2FkZWRSZWxhdGlvbnNoaXApIHtcbiAgICAgICAgICBpZiAoIXRoaXMuaXNNb2RlbFJlY29yZGVkKHJlbGF0aW9uc2hpcFR5cGUsIGFub3RoZXJNb2RlbCkpIHtcbiAgICAgICAgICAgIHRoaXMucmVjb3JkTW9kZWwocmVsYXRpb25zaGlwVHlwZSwgYW5vdGhlck1vZGVsKVxuICAgICAgICAgICAgdGhpcy5maWxsTW9kZWxzKGFub3RoZXJNb2RlbClcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAobG9hZGVkUmVsYXRpb25zaGlwKSB7IC8vIGJlbG9uZ3NfdG8sIGhhc19vbmVcbiAgICAgICAgaWYgKCF0aGlzLmlzTW9kZWxSZWNvcmRlZChyZWxhdGlvbnNoaXBUeXBlLCBsb2FkZWRSZWxhdGlvbnNoaXApKSB7XG4gICAgICAgICAgdGhpcy5yZWNvcmRNb2RlbChyZWxhdGlvbnNoaXBUeXBlLCBsb2FkZWRSZWxhdGlvbnNoaXApXG4gICAgICAgICAgdGhpcy5maWxsTW9kZWxzKGxvYWRlZFJlbGF0aW9uc2hpcClcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMuZmlsbGVkTW9kZWxzID0gdHJ1ZVxuICB9XG5cbiAgLyoqIGNhY2hlS2V5LiAqL1xuICBjYWNoZUtleSgpIHtcbiAgICBpZiAoIXRoaXMuZmlsbGVkTW9kZWxzKSB7XG4gICAgICB0aGlzLmZpbGxNb2RlbHModGhpcy5tb2RlbClcbiAgICB9XG5cbiAgICBjb25zdCBtZDUgPSBuZXcgU3BhcmtNRDUoKVxuXG4gICAgZm9yIChjb25zdCBtb2RlbCBvZiB0aGlzLmFsbE1vZGVscykge1xuICAgICAgdGhpcy5mZWVkTW9kZWwobW9kZWwsIG1kNSlcbiAgICB9XG5cbiAgICByZXR1cm4gbWQ1LmVuZCgpXG4gIH1cblxuICAvKiogZmVlZE1vZGVsLiAqL1xuICBmZWVkTW9kZWwobW9kZWwsIG1kNSkge1xuICAgIG1kNS5hcHBlbmQoXCItLW1vZGVsLS1cIilcbiAgICBtZDUuYXBwZW5kKG1vZGVsLm1vZGVsQ2xhc3NEYXRhKCkubmFtZSlcbiAgICBtZDUuYXBwZW5kKFwiLS11bmlxdWUta2V5LS1cIilcbiAgICBtZDUuYXBwZW5kKHRoaXMubW9kZWxJZGVudGl0eShtb2RlbCkpXG5cbiAgICBpZiAobW9kZWwubWFya2VkRm9yRGVzdHJ1Y3Rpb24oKSkge1xuICAgICAgbWQ1LmFwcGVuZChcIi0tbWFya2VkLWZvci1kZXN0cnVjdGlvbi0tXCIpXG4gICAgfVxuXG4gICAgbWQ1LmFwcGVuZChcIi1hdHRyaWJ1dGVzLVwiKVxuXG4gICAgY29uc3QgYXR0cmlidXRlcyA9IG1vZGVsLmF0dHJpYnV0ZXMoKVxuXG4gICAgZm9yIChjb25zdCBhdHRyaWJ1dGVOYW1lIGluIGF0dHJpYnV0ZXMpIHtcbiAgICAgIG1kNS5hcHBlbmQoYXR0cmlidXRlTmFtZSlcbiAgICAgIG1kNS5hcHBlbmQoXCItLWF0dHJpYnV0ZS0tXCIpXG4gICAgICBtZDUuYXBwZW5kKGAke21vZGVsLnJlYWRBdHRyaWJ1dGVVbmRlcnNjb3JlKGF0dHJpYnV0ZU5hbWUpfWApXG4gICAgfVxuICB9XG5cbiAgLyoqIEByZXR1cm5zIHtudW1iZXIgfCBzdHJpbmd9ICovXG4gIG1vZGVsSWRlbnRpdHkobW9kZWwpIHtcbiAgICBjb25zdCBwcmltYXJ5S2V5TmFtZSA9IG1vZGVsLm1vZGVsQ2xhc3MoKS5wcmltYXJ5S2V5KClcblxuICAgIGlmIChtb2RlbC5pc0F0dHJpYnV0ZUxvYWRlZChwcmltYXJ5S2V5TmFtZSkpIHtcbiAgICAgIGNvbnN0IHByaW1hcnlLZXlWYWx1ZSA9IG1vZGVsLnByaW1hcnlLZXkoKVxuXG4gICAgICBpZiAocHJpbWFyeUtleVZhbHVlICE9PSBudWxsICYmIHByaW1hcnlLZXlWYWx1ZSAhPT0gdW5kZWZpbmVkICYmIHByaW1hcnlLZXlWYWx1ZSAhPT0gXCJcIikge1xuICAgICAgICByZXR1cm4gcHJpbWFyeUtleVZhbHVlXG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIG1vZGVsLnVuaXF1ZUtleSgpXG4gIH1cbn1cbiJdfQ==
149
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FjaGUta2V5LWdlbmVyYXRvci5qcyIsInNvdXJjZVJvb3QiOiIvc3JjLyIsInNvdXJjZXMiOlsiY2FjaGUta2V5LWdlbmVyYXRvci5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxZQUFZO0FBQ1osT0FBTyxRQUFRLE1BQU0sV0FBVyxDQUFBO0FBRWhDLDZEQUE2RDtBQUM3RCx5RUFBeUU7QUFDekUsaURBQWlEO0FBQ2pELDRHQUE0RztBQUM1Ryx1REFBdUQ7QUFDdkQ7Ozs7Ozs7Ozs7O0dBV0c7QUFFSCxrREFBa0Q7QUFDbEQsTUFBTSxDQUFDLE9BQU8sT0FBTyxpQkFBaUI7SUFDcEM7OztPQUdHO0lBQ0gsWUFBWSxLQUFLO1FBQ2YsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUE7UUFDbEIsSUFBSSxDQUFDLFNBQVMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFBO1FBQ3hCLElBQUksQ0FBQyxVQUFVLEdBQUcsRUFBRSxDQUFBO1FBQ3BCLElBQUksQ0FBQyxlQUFlLENBQUMsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFBO1FBQ2pELElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQTtRQUNwRCxJQUFJLENBQUMsWUFBWSxHQUFHLEtBQUssQ0FBQTtJQUMzQixDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsS0FBSztRQUNILE1BQU0sR0FBRyxHQUFHLElBQUksUUFBUSxFQUFFLENBQUE7UUFFMUIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxDQUFBO1FBRS9CLE9BQU8sR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFBO0lBQ2xCLENBQUM7SUFFRDs7O09BR0c7SUFDSCxlQUFlLENBQUMsZ0JBQWdCO1FBQzlCLElBQUksQ0FBQyxDQUFDLGdCQUFnQixJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDO1lB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SUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUE7UUFFN0MsSUFBSSxLQUFLLENBQUMsb0JBQW9CLEVBQUUsRUFBRSxDQUFDO1lBQ2pDLEdBQUcsQ0FBQyxNQUFNLENBQUMsNEJBQTRCLENBQUMsQ0FBQTtRQUMxQyxDQUFDO1FBRUQsR0FBRyxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQTtRQUUxQixNQUFNLFVBQVUsR0FBRyxLQUFLLENBQUMsVUFBVSxFQUFFLENBQUE7UUFFckMsS0FBSyxNQUFNLGFBQWEsSUFBSSxVQUFVLEVBQUUsQ0FBQztZQUN2QyxHQUFHLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFBO1lBQ3pCLEdBQUcsQ0FBQyxNQUFNLENBQUMsZUFBZSxDQUFDLENBQUE7WUFDM0IsR0FBRyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLHVCQUF1QixDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQTtRQUNsRSxDQUFDO0lBQ0gsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxhQUFhLENBQUMsS0FBSztRQUNqQixNQUFNLGNBQWMsR0FBRyxLQUFLLENBQUMsVUFBVSxFQUFFLENBQUMsVUFBVSxFQUFFLENBQUE7UUFFdEQsSUFBSSxLQUFLLENBQUMsaUJBQWlCLENBQUMsY0FBYyxDQUFDLEVBQUUsQ0FBQztZQUM1QyxNQUFNLGVBQWUsR0FBRyxLQUFLLENBQUMsVUFBVSxFQUFFLENBQUE7WUFFMUMsSUFBSSxlQUFlLEtBQUssSUFBSSxJQUFJLGVBQWUsS0FBSyxTQUFTLElBQUksZUFBZSxLQUFLLEVBQUUsRUFBRSxDQUFDO2dCQUN4RixPQUFPLGVBQWUsQ0FBQTtZQUN4QixDQUFDO1FBQ0gsQ0FBQztRQUVELE9BQU8sS0FBSyxDQUFDLFNBQVMsRUFBRSxDQUFBO0lBQzFCLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbIi8vIEB0cy1jaGVja1xuaW1wb3J0IFNwYXJrTUQ1IGZyb20gXCJzcGFyay1tZDVcIlxuXG4vKiogQHR5cGVkZWYge2ltcG9ydChcIi4vYmFzZS1tb2RlbC5qc1wiKS5kZWZhdWx0fSBCYXNlTW9kZWwgKi9cbi8qKiBAdHlwZWRlZiB7e2FwcGVuZCh2YWx1ZTogc3RyaW5nKTogdm9pZCwgZW5kKCk6IHN0cmluZ319IEhhc2hXcml0ZXIgKi9cbi8qKiBAdHlwZWRlZiB7c3RyaW5nIHwgbnVtYmVyfSBNb2RlbElkZW50aWZpZXIgKi9cbi8qKiBAdHlwZWRlZiB7c3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhbiB8IG51bGwgfCB1bmRlZmluZWQgfCB7dG9TdHJpbmcoKTogc3RyaW5nfX0gQ2FjaGVLZXlBdHRyaWJ1dGVWYWx1ZSAqL1xuLyoqIEB0eXBlZGVmIHt7bmFtZTogc3RyaW5nfX0gQ2FjaGVLZXlNb2RlbENsYXNzRGF0YSAqL1xuLyoqXG4gKiBAdHlwZWRlZiB7b2JqZWN0fSBDYWNoZUtleU1vZGVsXG4gKiBAcHJvcGVydHkgeygpID0+IFJlY29yZDxzdHJpbmcsIENhY2hlS2V5QXR0cmlidXRlVmFsdWU+fSBhdHRyaWJ1dGVzXG4gKiBAcHJvcGVydHkgeygpID0+IGJvb2xlYW59IG1hcmtlZEZvckRlc3RydWN0aW9uXG4gKiBAcHJvcGVydHkgeygpID0+IENhY2hlS2V5TW9kZWxDbGFzc0RhdGF9IG1vZGVsQ2xhc3NEYXRhXG4gKiBAcHJvcGVydHkgeygpID0+IHtwcmltYXJ5S2V5KCk6IHN0cmluZ319IG1vZGVsQ2xhc3NcbiAqIEBwcm9wZXJ0eSB7KCkgPT4gTW9kZWxJZGVudGlmaWVyIHwgbnVsbCB8IHVuZGVmaW5lZCB8IFwiXCJ9IHByaW1hcnlLZXlcbiAqIEBwcm9wZXJ0eSB7KGF0dHJpYnV0ZU5hbWU6IHN0cmluZykgPT4gQ2FjaGVLZXlBdHRyaWJ1dGVWYWx1ZX0gcmVhZEF0dHJpYnV0ZVVuZGVyc2NvcmVcbiAqIEBwcm9wZXJ0eSB7KGF0dHJpYnV0ZU5hbWU6IHN0cmluZykgPT4gYm9vbGVhbn0gaXNBdHRyaWJ1dGVMb2FkZWRcbiAqIEBwcm9wZXJ0eSB7UmVjb3JkPHN0cmluZywgQ2FjaGVLZXlNb2RlbCB8IEFycmF5PENhY2hlS2V5TW9kZWw+IHwgbnVsbCB8IHVuZGVmaW5lZD59IHJlbGF0aW9uc2hpcHNcbiAqIEBwcm9wZXJ0eSB7KCkgPT4gTW9kZWxJZGVudGlmaWVyfSB1bmlxdWVLZXlcbiAqL1xuXG4vKiogR2VuZXJhdGVzIGxvY2FsL2Z1bGwgY2FjaGUga2V5cyBmb3IgbW9kZWxzLiAqL1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQ2FjaGVLZXlHZW5lcmF0b3Ige1xuICAvKipcbiAgICogQ3JlYXRlcyBhIGNhY2hlLWtleSBnZW5lcmF0b3Igcm9vdGVkIGF0IG9uZSBtb2RlbCBpbnN0YW5jZS5cbiAgICogQHBhcmFtIHtDYWNoZUtleU1vZGVsfSBtb2RlbFxuICAgKi9cbiAgY29uc3RydWN0b3IobW9kZWwpIHtcbiAgICB0aGlzLm1vZGVsID0gbW9kZWxcbiAgICB0aGlzLmFsbE1vZGVscyA9IFttb2RlbF1cbiAgICB0aGlzLnJlYWRNb2RlbHMgPSB7fVxuICAgIHRoaXMucmVjb3JkTW9kZWxUeXBlKG1vZGVsLm1vZGVsQ2xhc3NEYXRhKCkubmFtZSlcbiAgICB0aGlzLnJlY29yZE1vZGVsKG1vZGVsLm1vZGVsQ2xhc3NEYXRhKCkubmFtZSwgbW9kZWwpXG4gICAgdGhpcy5maWxsZWRNb2RlbHMgPSBmYWxzZVxuICB9XG5cbiAgLyoqXG4gICAqIEJ1aWxkcyBhIGNhY2hlIGtleSBmcm9tIHRoZSByb290IG1vZGVsIG9ubHkuXG4gICAqIEByZXR1cm5zIHtzdHJpbmd9XG4gICAqL1xuICBsb2NhbCgpIHtcbiAgICBjb25zdCBtZDUgPSBuZXcgU3BhcmtNRDUoKVxuXG4gICAgdGhpcy5mZWVkTW9kZWwodGhpcy5tb2RlbCwgbWQ1KVxuXG4gICAgcmV0dXJuIG1kNS5lbmQoKVxuICB9XG5cbiAgLyoqXG4gICAqIEVuc3VyZXMgb25lIHJlbGF0aW9uc2hpcCB0eXBlIGhhcyBhIHRyYWNraW5nIGJ1Y2tldC5cbiAgICogQHBhcmFtIHtzdHJpbmd9IHJlbGF0aW9uc2hpcFR5cGVcbiAgICovXG4gIHJlY29yZE1vZGVsVHlwZShyZWxhdGlvbnNoaXBUeXBlKSB7XG4gICAgaWYgKCEocmVsYXRpb25zaGlwVHlwZSBpbiB0aGlzLnJlYWRNb2RlbHMpKSB7XG4gICAgICB0aGlzLnJlYWRNb2RlbHNbcmVsYXRpb25zaGlwVHlwZV0gPSB7fVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBSZWNvcmRzIG9uZSByZWxhdGVkIG1vZGVsIHVuZGVyIGl0cyByZWxhdGlvbnNoaXAgdHlwZS5cbiAgICogQHBhcmFtIHtzdHJpbmd9IHJlbGF0aW9uc2hpcFR5cGVcbiAgICogQHBhcmFtIHtDYWNoZUtleU1vZGVsfSBtb2RlbFxuICAgKi9cbiAgcmVjb3JkTW9kZWwocmVsYXRpb25zaGlwVHlwZSwgbW9kZWwpIHtcbiAgICB0aGlzLmFsbE1vZGVscy5wdXNoKG1vZGVsKVxuICAgIHRoaXMucmVhZE1vZGVsc1tyZWxhdGlvbnNoaXBUeXBlXVt0aGlzLm1vZGVsSWRlbnRpdHkobW9kZWwpXSA9IHRydWVcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRydWUgd2hlbiBhIHJlbGF0ZWQgbW9kZWwgaGFzIGFscmVhZHkgYmVlbiB2aXNpdGVkIGZvciBvbmUgcmVsYXRpb25zaGlwIHR5cGUuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSByZWxhdGlvbnNoaXBUeXBlXG4gICAqIEBwYXJhbSB7Q2FjaGVLZXlNb2RlbH0gbW9kZWxcbiAgICogQHJldHVybnMge2Jvb2xlYW59XG4gICAqL1xuICBpc01vZGVsUmVjb3JkZWQocmVsYXRpb25zaGlwVHlwZSwgbW9kZWwpIHtcbiAgICBpZiAodGhpcy5tb2RlbElkZW50aXR5KG1vZGVsKSBpbiB0aGlzLnJlYWRNb2RlbHNbcmVsYXRpb25zaGlwVHlwZV0pIHtcbiAgICAgIHJldHVybiB0cnVlXG4gICAgfVxuXG4gICAgcmV0dXJuIGZhbHNlXG4gIH1cblxuICAvKipcbiAgICogVHJhdmVyc2VzIGxvYWRlZCByZWxhdGlvbnNoaXBzIHNvIHRoZXkgYXJlIGluY2x1ZGVkIGluIHRoZSBmdWxsIGNhY2hlIGtleS5cbiAgICogQHBhcmFtIHtDYWNoZUtleU1vZGVsfSBtb2RlbFxuICAgKi9cbiAgZmlsbE1vZGVscyhtb2RlbCkge1xuICAgIGZvciAoY29uc3QgcmVsYXRpb25zaGlwVHlwZSBpbiBtb2RlbC5yZWxhdGlvbnNoaXBzKSB7XG4gICAgICB0aGlzLnJlY29yZE1vZGVsVHlwZShyZWxhdGlvbnNoaXBUeXBlKVxuXG4gICAgICBjb25zdCBsb2FkZWRSZWxhdGlvbnNoaXAgPSBtb2RlbC5yZWxhdGlvbnNoaXBzW3JlbGF0aW9uc2hpcFR5cGVdXG5cbiAgICAgIGlmIChBcnJheS5pc0FycmF5KGxvYWRlZFJlbGF0aW9uc2hpcCkpIHsgLy8gaGFzX21hbnlcbiAgICAgICAgZm9yIChjb25zdCBhbm90aGVyTW9kZWwgb2YgbG9hZGVkUmVsYXRpb25zaGlwKSB7XG4gICAgICAgICAgaWYgKCF0aGlzLmlzTW9kZWxSZWNvcmRlZChyZWxhdGlvbnNoaXBUeXBlLCBhbm90aGVyTW9kZWwpKSB7XG4gICAgICAgICAgICB0aGlzLnJlY29yZE1vZGVsKHJlbGF0aW9uc2hpcFR5cGUsIGFub3RoZXJNb2RlbClcbiAgICAgICAgICAgIHRoaXMuZmlsbE1vZGVscyhhbm90aGVyTW9kZWwpXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKGxvYWRlZFJlbGF0aW9uc2hpcCkgeyAvLyBiZWxvbmdzX3RvLCBoYXNfb25lXG4gICAgICAgIGlmICghdGhpcy5pc01vZGVsUmVjb3JkZWQocmVsYXRpb25zaGlwVHlwZSwgbG9hZGVkUmVsYXRpb25zaGlwKSkge1xuICAgICAgICAgIHRoaXMucmVjb3JkTW9kZWwocmVsYXRpb25zaGlwVHlwZSwgbG9hZGVkUmVsYXRpb25zaGlwKVxuICAgICAgICAgIHRoaXMuZmlsbE1vZGVscyhsb2FkZWRSZWxhdGlvbnNoaXApXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLmZpbGxlZE1vZGVscyA9IHRydWVcbiAgfVxuXG4gIC8qKlxuICAgKiBCdWlsZHMgYSBjYWNoZSBrZXkgdGhhdCBpbmNsdWRlcyB0aGUgcm9vdCBtb2RlbCBhbmQgYWxsIGxvYWRlZCByZWxhdGVkIG1vZGVscy5cbiAgICogQHJldHVybnMge3N0cmluZ31cbiAgICovXG4gIGNhY2hlS2V5KCkge1xuICAgIGlmICghdGhpcy5maWxsZWRNb2RlbHMpIHtcbiAgICAgIHRoaXMuZmlsbE1vZGVscyh0aGlzLm1vZGVsKVxuICAgIH1cblxuICAgIGNvbnN0IG1kNSA9IG5ldyBTcGFya01ENSgpXG5cbiAgICBmb3IgKGNvbnN0IG1vZGVsIG9mIHRoaXMuYWxsTW9kZWxzKSB7XG4gICAgICB0aGlzLmZlZWRNb2RlbChtb2RlbCwgbWQ1KVxuICAgIH1cblxuICAgIHJldHVybiBtZDUuZW5kKClcbiAgfVxuXG4gIC8qKlxuICAgKiBBcHBlbmRzIG9uZSBtb2RlbCdzIGlkZW50aXR5IGFuZCBsb2FkZWQgYXR0cmlidXRlcyB0byB0aGUgcnVubmluZyBoYXNoLlxuICAgKiBAcGFyYW0ge0NhY2hlS2V5TW9kZWx9IG1vZGVsXG4gICAqIEBwYXJhbSB7SGFzaFdyaXRlcn0gbWQ1XG4gICAqL1xuICBmZWVkTW9kZWwobW9kZWwsIG1kNSkge1xuICAgIG1kNS5hcHBlbmQoXCItLW1vZGVsLS1cIilcbiAgICBtZDUuYXBwZW5kKG1vZGVsLm1vZGVsQ2xhc3NEYXRhKCkubmFtZSlcbiAgICBtZDUuYXBwZW5kKFwiLS11bmlxdWUta2V5LS1cIilcbiAgICBtZDUuYXBwZW5kKFN0cmluZyh0aGlzLm1vZGVsSWRlbnRpdHkobW9kZWwpKSlcblxuICAgIGlmIChtb2RlbC5tYXJrZWRGb3JEZXN0cnVjdGlvbigpKSB7XG4gICAgICBtZDUuYXBwZW5kKFwiLS1tYXJrZWQtZm9yLWRlc3RydWN0aW9uLS1cIilcbiAgICB9XG5cbiAgICBtZDUuYXBwZW5kKFwiLWF0dHJpYnV0ZXMtXCIpXG5cbiAgICBjb25zdCBhdHRyaWJ1dGVzID0gbW9kZWwuYXR0cmlidXRlcygpXG5cbiAgICBmb3IgKGNvbnN0IGF0dHJpYnV0ZU5hbWUgaW4gYXR0cmlidXRlcykge1xuICAgICAgbWQ1LmFwcGVuZChhdHRyaWJ1dGVOYW1lKVxuICAgICAgbWQ1LmFwcGVuZChcIi0tYXR0cmlidXRlLS1cIilcbiAgICAgIG1kNS5hcHBlbmQoU3RyaW5nKG1vZGVsLnJlYWRBdHRyaWJ1dGVVbmRlcnNjb3JlKGF0dHJpYnV0ZU5hbWUpKSlcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgcGVyc2lzdGVkIHByaW1hcnkga2V5IHdoZW4gYXZhaWxhYmxlLCBvdGhlcndpc2UgdGhlIHRlbXBvcmFyeSB1bmlxdWUga2V5LlxuICAgKiBAcGFyYW0ge0NhY2hlS2V5TW9kZWx9IG1vZGVsXG4gICAqIEByZXR1cm5zIHtNb2RlbElkZW50aWZpZXJ9XG4gICAqL1xuICBtb2RlbElkZW50aXR5KG1vZGVsKSB7XG4gICAgY29uc3QgcHJpbWFyeUtleU5hbWUgPSBtb2RlbC5tb2RlbENsYXNzKCkucHJpbWFyeUtleSgpXG5cbiAgICBpZiAobW9kZWwuaXNBdHRyaWJ1dGVMb2FkZWQocHJpbWFyeUtleU5hbWUpKSB7XG4gICAgICBjb25zdCBwcmltYXJ5S2V5VmFsdWUgPSBtb2RlbC5wcmltYXJ5S2V5KClcblxuICAgICAgaWYgKHByaW1hcnlLZXlWYWx1ZSAhPT0gbnVsbCAmJiBwcmltYXJ5S2V5VmFsdWUgIT09IHVuZGVmaW5lZCAmJiBwcmltYXJ5S2V5VmFsdWUgIT09IFwiXCIpIHtcbiAgICAgICAgcmV0dXJuIHByaW1hcnlLZXlWYWx1ZVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBtb2RlbC51bmlxdWVLZXkoKVxuICB9XG59XG4iXX0=
@@ -1,7 +1,25 @@
1
+ /**
2
+ * @typedef {{debug?: boolean}} CanOptions
3
+ */
4
+ /**
5
+ * @typedef {import("./base-model.js").BaseModelClassType | {
6
+ * modelClassData?: () => {name?: string},
7
+ * name?: string,
8
+ * resourceData?: () => {name?: string}
9
+ * } | string} AbilitySubject
10
+ */
11
+ /** @typedef {{ability: string, can: boolean, subject: string}} LoadedAbility */
12
+ /** @typedef {{ability: string, callbacks: Array<() => void>, subject: AbilitySubject}} PendingAbility */
13
+ /** @typedef {{request: Array<{ability: string, subject: AbilitySubject}>}} LoadAbilitiesRequest */
14
+ /** @typedef {{abilities: LoadedAbility[]}} LoadAbilitiesResponse */
15
+ /** @typedef {[AbilitySubject, string[]]} AbilityRequest */
1
16
  /** Ability helper and query mapper. */
2
17
  export default class ApiMakerCanCan {
3
- /** current. */
4
- static current(): any;
18
+ /**
19
+ * Returns the shared CanCan helper instance.
20
+ * @returns {ApiMakerCanCan}
21
+ */
22
+ static current(): ApiMakerCanCan;
5
23
  abilities: any[];
6
24
  abilitiesToLoad: any[];
7
25
  abilitiesToLoadData: any[];
@@ -17,47 +35,146 @@ export default class ApiMakerCanCan {
17
35
  lock: ReadersWriterLock;
18
36
  abilitiesByName: Map<any, any>;
19
37
  debugTokens: Set<any>;
20
- /** can. */
21
- can(ability: any, subject: any, options?: {}): any;
22
- /** recordMissingAbility. */
23
- recordMissingAbility(ability: any, subject: any): void;
38
+ /**
39
+ * Returns the loaded permission value for one ability and subject pair.
40
+ * @param {string} ability
41
+ * @param {AbilitySubject} subject
42
+ * @param {CanOptions} options
43
+ * @returns {boolean | null}
44
+ */
45
+ can(ability: string, subject: AbilitySubject, options?: CanOptions): boolean | null;
46
+ /**
47
+ * Queues one ability lookup to be loaded from the backend.
48
+ * @param {string} ability
49
+ * @param {AbilitySubject} subject
50
+ */
51
+ recordMissingAbility(ability: string, subject: AbilitySubject): void;
24
52
  /** queueMissingAbilitiesLoad. */
25
53
  queueMissingAbilitiesLoad(): void;
26
54
  /** loadMissingAbilities. */
27
55
  loadMissingAbilities: () => void;
28
- /** findAbility. */
29
- findAbility(ability: any, subject: any): any;
30
- /** isAbilityLoaded. */
31
- isAbilityLoaded(ability: any, subject: any): boolean;
32
- /** isReloading. */
56
+ /**
57
+ * Finds one previously loaded ability result.
58
+ * @param {string} ability
59
+ * @param {AbilitySubject} subject
60
+ * @returns {LoadedAbility | undefined}
61
+ */
62
+ findAbility(ability: string, subject: AbilitySubject): LoadedAbility | undefined;
63
+ /**
64
+ * Returns whether one ability has already been loaded.
65
+ * @param {string} ability
66
+ * @param {AbilitySubject} subject
67
+ * @returns {boolean}
68
+ */
69
+ isAbilityLoaded(ability: string, subject: AbilitySubject): boolean;
70
+ /**
71
+ * Returns whether abilities are currently loading or resetting.
72
+ * @returns {boolean}
73
+ */
33
74
  isReloading(): boolean;
34
- /** getCacheKey. */
75
+ /**
76
+ * Returns the cache key that changes whenever loaded abilities change.
77
+ * @returns {number}
78
+ */
35
79
  getCacheKey(): number;
36
- /** setDebug. */
37
- setDebug(token: any, enabled: any): void;
38
- /** isDebugging. */
80
+ /**
81
+ * Enables or disables debug logging for one caller token.
82
+ * @param {string | symbol} token
83
+ * @param {boolean} enabled
84
+ */
85
+ setDebug(token: string | symbol, enabled: boolean): void;
86
+ /**
87
+ * Returns whether any caller has enabled CanCan debug logging.
88
+ * @returns {boolean}
89
+ */
39
90
  isDebugging(): boolean;
40
- /** debugLog. */
41
- debugLog(message: any): void;
42
- loadAbilities(abilities: any): Promise<void>;
43
- /** loadAbility. */
44
- loadAbility(ability: any, subject: any): Promise<any>;
91
+ /**
92
+ * Writes one debug log message when debugging is enabled.
93
+ * @param {string} message
94
+ */
95
+ debugLog(message: string): void;
96
+ /**
97
+ * Loads a batch of abilities from the backend.
98
+ * @param {AbilityRequest[]} abilities
99
+ * @returns {Promise<void>}
100
+ */
101
+ loadAbilities(abilities: AbilityRequest[]): Promise<void>;
102
+ /**
103
+ * Loads one ability and resolves once it is available locally.
104
+ * @param {string} ability
105
+ * @param {AbilitySubject} subject
106
+ * @returns {Promise<void>}
107
+ */
108
+ loadAbility(ability: string, subject: AbilitySubject): Promise<void>;
45
109
  /** queueAbilitiesRequest. */
46
110
  queueAbilitiesRequest(): void;
47
111
  queueAbilitiesRequestTimeout: NodeJS.Timeout;
48
112
  resetAbilities(): Promise<any>;
49
- reloadAbilities(abilities: any, reloadKey: any): Promise<any>;
113
+ /**
114
+ * Resets and reloads one batch of abilities, optionally deduped by key.
115
+ * @param {AbilityRequest[]} abilities
116
+ * @param {string | undefined} reloadKey
117
+ * @returns {Promise<void>}
118
+ */
119
+ reloadAbilities(abilities: AbilityRequest[], reloadKey: string | undefined): Promise<void>;
50
120
  /** sendAbilitiesRequest. */
51
121
  sendAbilitiesRequest: () => Promise<void>;
52
- /** indexAbilitiesByName. */
53
- indexAbilitiesByName(abilities: any): void;
54
- /** abilityKey. */
55
- abilityKey(ability: any, subject: any): string;
56
- /** subjectName. */
57
- subjectName(subject: any): any;
58
- /** reportUnhandledAsyncError. */
59
- reportUnhandledAsyncError(error: any): void;
122
+ /**
123
+ * Indexes loaded abilities by the lookup key used by `findAbility`.
124
+ * @param {LoadedAbility[]} abilities
125
+ */
126
+ indexAbilitiesByName(abilities: LoadedAbility[]): void;
127
+ /**
128
+ * Builds the internal key used to look up one ability result.
129
+ * @param {string} ability
130
+ * @param {AbilitySubject} subject
131
+ * @returns {null | string}
132
+ */
133
+ abilityKey(ability: string, subject: AbilitySubject): null | string;
134
+ /**
135
+ * Extracts the subject name sent to the backend ability loader.
136
+ * @param {AbilitySubject} subject
137
+ * @returns {string | null}
138
+ */
139
+ subjectName(subject: AbilitySubject): string | null;
140
+ /**
141
+ * Re-throws an async error on the microtask queue for existing handlers.
142
+ * @param {Error} error
143
+ */
144
+ reportUnhandledAsyncError(error: Error): void;
60
145
  }
146
+ export type CanOptions = {
147
+ debug?: boolean;
148
+ };
149
+ export type AbilitySubject = import("./base-model.js").BaseModelClassType | {
150
+ modelClassData?: () => {
151
+ name?: string;
152
+ };
153
+ name?: string;
154
+ resourceData?: () => {
155
+ name?: string;
156
+ };
157
+ } | string;
158
+ export type LoadedAbility = {
159
+ ability: string;
160
+ can: boolean;
161
+ subject: string;
162
+ };
163
+ export type PendingAbility = {
164
+ ability: string;
165
+ callbacks: Array<() => void>;
166
+ subject: AbilitySubject;
167
+ };
168
+ export type LoadAbilitiesRequest = {
169
+ request: Array<{
170
+ ability: string;
171
+ subject: AbilitySubject;
172
+ }>;
173
+ };
174
+ export type LoadAbilitiesResponse = {
175
+ abilities: LoadedAbility[];
176
+ };
177
+ export type AbilityRequest = [AbilitySubject, string[]];
61
178
  import { EventEmitter } from "eventemitter3";
62
179
  import { ReadersWriterLock } from "epic-locks";
63
180
  //# sourceMappingURL=can-can.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"can-can.d.ts","sourceRoot":"/src/","sources":["can-can.js"],"names":[],"mappings":"AASA,uCAAuC;AACvC;IAiBE,eAAe;IACf,sBAIC;IArBD,iBAAc;IACd,uBAAoB;IACpB,2BAAwB;IACxB,4BAAuB;IACvB,iBAAY;IACZ,qBAAgB;IAChB,gCAA4B;IAC5B,6BAA8B;IAC9B,8BAA0B;IAC1B,kBAAmB;IACnB,yBAA0B;IAC1B,2CAA2B;IAC3B,wBAA8B;IAC9B,+BAA2B;IAC3B,sBAAuB;IASvB,WAAW;IACX,mDAsBC;IAED,4BAA4B;IAC5B,uDAYC;IAED,iCAAiC;IACjC,kCAIC;IAED,4BAA4B;IAC5B,iCAeC;IAED,mBAAmB;IACnB,6CAKC;IAED,uBAAuB;IACvB,qDAEC;IAED,mBAAmB;IACnB,uBAEC;IAED,mBAAmB;IACnB,sBAEC;IAED,gBAAgB;IAChB,yCAQC;IAED,mBAAmB;IACnB,uBAEC;IAED,gBAAgB;IAChB,6BAIC;IAED,6CAyCC;IAED,mBAAmB;IACnB,sDAsBC;IAED,6BAA6B;IAC7B,8BAIC;IADC,6CAA4E;IAG9E,+BA0BC;IAED,8DA4BC;IAED,4BAA4B;IAC5B,0CA2EC;IAED,4BAA4B;IAC5B,2CAUC;IAED,kBAAkB;IAClB,+CAOC;IAED,mBAAmB;IACnB,+BAoBC;IAED,iCAAiC;IACjC,4CAIC;CACF;6BAtZ0B,eAAe;kCACV,YAAY"}
1
+ {"version":3,"file":"can-can.d.ts","sourceRoot":"/src/","sources":["can-can.js"],"names":[],"mappings":"AAUA;;GAEG;AACH;;;;;;GAMG;AACH,gFAAgF;AAChF,yGAAyG;AACzG,mGAAmG;AACnG,oEAAoE;AACpE,2DAA2D;AAE3D,uCAAuC;AACvC;IAiBE;;;OAGG;IACH,kBAFa,cAAc,CAM1B;IAxBD,iBAAc;IACd,uBAAoB;IACpB,2BAAwB;IACxB,4BAAuB;IACvB,iBAAY;IACZ,qBAAgB;IAChB,gCAA4B;IAC5B,6BAA8B;IAC9B,8BAA0B;IAC1B,kBAAmB;IACnB,yBAA0B;IAC1B,2CAA2B;IAC3B,wBAA8B;IAC9B,+BAA2B;IAC3B,sBAAuB;IAYvB;;;;;;OAMG;IACH,aALW,MAAM,WACN,cAAc,YACd,UAAU,GACR,OAAO,GAAG,IAAI,CAwB1B;IAED;;;;OAIG;IACH,8BAHW,MAAM,WACN,cAAc,QAcxB;IAED,iCAAiC;IACjC,kCAIC;IAED,4BAA4B;IAC5B,iCAeC;IAED;;;;;OAKG;IACH,qBAJW,MAAM,WACN,cAAc,GACZ,aAAa,GAAG,SAAS,CAOrC;IAED;;;;;OAKG;IACH,yBAJW,MAAM,WACN,cAAc,GACZ,OAAO,CAInB;IAED;;;OAGG;IACH,eAFa,OAAO,CAInB;IAED;;;OAGG;IACH,eAFa,MAAM,CAIlB;IAED;;;;OAIG;IACH,gBAHW,MAAM,GAAG,MAAM,WACf,OAAO,QAUjB;IAED;;;OAGG;IACH,eAFa,OAAO,CAInB;IAED;;;OAGG;IACH,kBAFW,MAAM,QAMhB;IAED;;;;OAIG;IACH,yBAHW,cAAc,EAAE,GACd,OAAO,CAAC,IAAI,CAAC,CA2CzB;IAED;;;;;OAKG;IACH,qBAJW,MAAM,WACN,cAAc,GACZ,OAAO,CAAC,IAAI,CAAC,CAwBzB;IAED,6BAA6B;IAC7B,8BAIC;IADC,6CAA4E;IAG9E,+BA0BC;IAED;;;;;OAKG;IACH,2BAJW,cAAc,EAAE,aAChB,MAAM,GAAG,SAAS,GAChB,OAAO,CAAC,IAAI,CAAC,CA8BzB;IAED,4BAA4B;IAC5B,0CA2EC;IAED;;;OAGG;IACH,gCAFW,aAAa,EAAE,QAYzB;IAED;;;;;OAKG;IACH,oBAJW,MAAM,WACN,cAAc,GACZ,IAAI,GAAG,MAAM,CASzB;IAED;;;;OAIG;IACH,qBAHW,cAAc,GACZ,MAAM,GAAG,IAAI,CAsBzB;IAED;;;OAGG;IACH,iCAFW,KAAK,QAMf;CACF;yBApeY;IAAC,KAAK,CAAC,EAAE,OAAO,CAAA;CAAC;6BAGjB,OAAO,iBAAiB,EAAE,kBAAkB,GAAG;IACvD,cAAc,CAAC,EAAE,MAAM;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAC,CAAC;IACvC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,YAAY,CAAC,EAAE,MAAM;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAC,CAAA;CACrC,GAAG,MAAM;4BAEC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAC;6BAChD;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,KAAK,CAAC,MAAM,IAAI,CAAC,CAAC;IAAC,OAAO,EAAE,cAAc,CAAA;CAAC;mCACxE;IAAC,OAAO,EAAE,KAAK,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,cAAc,CAAA;KAAC,CAAC,CAAA;CAAC;oCAC5D;IAAC,SAAS,EAAE,aAAa,EAAE,CAAA;CAAC;6BAC5B,CAAC,cAAc,EAAE,MAAM,EAAE,CAAC;6BArBb,eAAe;kCACV,YAAY"}