@supersoniks/concorde 4.7.4 → 4.9.0

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 (679) hide show
  1. package/.github/workflows/ci.yml +21 -0
  2. package/.github-export-ignore +30 -0
  3. package/.gitlab-ci.yml +13 -0
  4. package/CONTRIBUTING.md +59 -0
  5. package/DEV.md +54 -0
  6. package/LICENSE +21 -0
  7. package/OPEN_SOURCE_CHECKPOINT.md +133 -0
  8. package/README.md +30 -16
  9. package/ai/cursor/rules/concorde.mdc +1 -1
  10. package/ai/skills/concorde-scope/SKILL.md +2 -2
  11. package/build-infos.json +1 -1
  12. package/concorde-core.bundle.js +214 -214
  13. package/concorde-core.es.js +4517 -4133
  14. package/dist/concorde-core.bundle.js +214 -214
  15. package/dist/concorde-core.es.js +4517 -4133
  16. package/dist/docs-mock-api-sw.js +19 -0
  17. package/dist/docs-mock-api-sw.js.map +2 -2
  18. package/dist/js/components.js +12 -0
  19. package/dist/js/components.js.map +1 -0
  20. package/dist/js/concorde-loaded.js +5 -0
  21. package/dist/js/concorde-loaded.js.map +1 -0
  22. package/dist/js/core/_types/endpoint.js +5 -0
  23. package/dist/js/core/_types/endpoint.js.map +1 -0
  24. package/dist/js/core/_types/key.js +2 -0
  25. package/dist/js/core/_types/key.js.map +1 -0
  26. package/dist/js/core/_types/types.js +3 -0
  27. package/dist/js/core/_types/types.js.map +1 -0
  28. package/dist/js/core/components/functional/date/date.js +272 -0
  29. package/dist/js/core/components/functional/date/date.js.map +1 -0
  30. package/dist/js/core/components/functional/example/example.js +44 -0
  31. package/dist/js/core/components/functional/example/example.js.map +1 -0
  32. package/dist/js/core/components/functional/fetch/fetch.js +79 -0
  33. package/dist/js/core/components/functional/fetch/fetch.js.map +1 -0
  34. package/dist/js/core/components/functional/functional.js +17 -0
  35. package/dist/js/core/components/functional/functional.js.map +1 -0
  36. package/dist/js/core/components/functional/if/if.js +39 -0
  37. package/dist/js/core/components/functional/if/if.js.map +1 -0
  38. package/dist/js/core/components/functional/list/list.js +341 -0
  39. package/dist/js/core/components/functional/list/list.js.map +1 -0
  40. package/dist/js/core/components/functional/mix/mix.js +103 -0
  41. package/dist/js/core/components/functional/mix/mix.js.map +1 -0
  42. package/dist/js/core/components/functional/queue/queue.js +386 -0
  43. package/dist/js/core/components/functional/queue/queue.js.map +1 -0
  44. package/dist/js/core/components/functional/router/redirect.js +54 -0
  45. package/dist/js/core/components/functional/router/redirect.js.map +1 -0
  46. package/dist/js/core/components/functional/router/router.js +179 -0
  47. package/dist/js/core/components/functional/router/router.js.map +1 -0
  48. package/dist/js/core/components/functional/sdui/SDUIDescriptorTransformer.js +216 -0
  49. package/dist/js/core/components/functional/sdui/SDUIDescriptorTransformer.js.map +1 -0
  50. package/dist/js/core/components/functional/sdui/default-library.json +108 -0
  51. package/dist/js/core/components/functional/sdui/sdui-utils.js +64 -0
  52. package/dist/js/core/components/functional/sdui/sdui-utils.js.map +1 -0
  53. package/dist/js/core/components/functional/sdui/sdui.js +266 -0
  54. package/dist/js/core/components/functional/sdui/sdui.js.map +1 -0
  55. package/dist/js/core/components/functional/sdui/types.js +2 -0
  56. package/dist/js/core/components/functional/sdui/types.js.map +1 -0
  57. package/dist/js/core/components/functional/sonic-scope/sonic-scope.js +22 -0
  58. package/dist/js/core/components/functional/sonic-scope/sonic-scope.js.map +1 -0
  59. package/dist/js/core/components/functional/states/states.js +172 -0
  60. package/dist/js/core/components/functional/states/states.js.map +1 -0
  61. package/dist/js/core/components/functional/submit/submit.js +284 -0
  62. package/dist/js/core/components/functional/submit/submit.js.map +1 -0
  63. package/dist/js/core/components/functional/subscriber/subscriber.js +39 -0
  64. package/dist/js/core/components/functional/subscriber/subscriber.js.map +1 -0
  65. package/dist/js/core/components/functional/translation/translation.js +28 -0
  66. package/dist/js/core/components/functional/translation/translation.js.map +1 -0
  67. package/dist/js/core/components/functional/value/value.js +28 -0
  68. package/dist/js/core/components/functional/value/value.js.map +1 -0
  69. package/dist/js/core/components/ui/_css/scroll.js +25 -0
  70. package/dist/js/core/components/ui/_css/scroll.js.map +1 -0
  71. package/dist/js/core/components/ui/_css/shadow.js +22 -0
  72. package/dist/js/core/components/ui/_css/shadow.js.map +1 -0
  73. package/dist/js/core/components/ui/_css/size.js +36 -0
  74. package/dist/js/core/components/ui/_css/size.js.map +1 -0
  75. package/dist/js/core/components/ui/_css/type.js +92 -0
  76. package/dist/js/core/components/ui/_css/type.js.map +1 -0
  77. package/dist/js/core/components/ui/alert/alert.js +213 -0
  78. package/dist/js/core/components/ui/alert/alert.js.map +1 -0
  79. package/dist/js/core/components/ui/alert-messages/alert-messages.js +68 -0
  80. package/dist/js/core/components/ui/alert-messages/alert-messages.js.map +1 -0
  81. package/dist/js/core/components/ui/badge/badge.js +199 -0
  82. package/dist/js/core/components/ui/badge/badge.js.map +1 -0
  83. package/dist/js/core/components/ui/button/button.js +697 -0
  84. package/dist/js/core/components/ui/button/button.js.map +1 -0
  85. package/dist/js/core/components/ui/captcha/altchaStyles.js +226 -0
  86. package/dist/js/core/components/ui/captcha/altchaStyles.js.map +1 -0
  87. package/dist/js/core/components/ui/captcha/captcha.js +167 -0
  88. package/dist/js/core/components/ui/captcha/captcha.js.map +1 -0
  89. package/dist/js/core/components/ui/card/card-footer.js +26 -0
  90. package/dist/js/core/components/ui/card/card-footer.js.map +1 -0
  91. package/dist/js/core/components/ui/card/card-header-descripton.js +30 -0
  92. package/dist/js/core/components/ui/card/card-header-descripton.js.map +1 -0
  93. package/dist/js/core/components/ui/card/card-header.js +79 -0
  94. package/dist/js/core/components/ui/card/card-header.js.map +1 -0
  95. package/dist/js/core/components/ui/card/card-main.js +26 -0
  96. package/dist/js/core/components/ui/card/card-main.js.map +1 -0
  97. package/dist/js/core/components/ui/card/card.js +67 -0
  98. package/dist/js/core/components/ui/card/card.js.map +1 -0
  99. package/dist/js/core/components/ui/divider/divider.js +200 -0
  100. package/dist/js/core/components/ui/divider/divider.js.map +1 -0
  101. package/dist/js/core/components/ui/form/checkbox/checkbox.js +257 -0
  102. package/dist/js/core/components/ui/form/checkbox/checkbox.js.map +1 -0
  103. package/dist/js/core/components/ui/form/css/form-control.js +393 -0
  104. package/dist/js/core/components/ui/form/css/form-control.js.map +1 -0
  105. package/dist/js/core/components/ui/form/fieldset/fieldset.js +124 -0
  106. package/dist/js/core/components/ui/form/fieldset/fieldset.js.map +1 -0
  107. package/dist/js/core/components/ui/form/fieldset/legend-description.js +38 -0
  108. package/dist/js/core/components/ui/form/fieldset/legend-description.js.map +1 -0
  109. package/dist/js/core/components/ui/form/fieldset/legend.js +130 -0
  110. package/dist/js/core/components/ui/form/fieldset/legend.js.map +1 -0
  111. package/dist/js/core/components/ui/form/form-actions/form-actions.js +47 -0
  112. package/dist/js/core/components/ui/form/form-actions/form-actions.js.map +1 -0
  113. package/dist/js/core/components/ui/form/form-layout/form-layout.js +84 -0
  114. package/dist/js/core/components/ui/form/form-layout/form-layout.js.map +1 -0
  115. package/dist/js/core/components/ui/form/input/input.js +316 -0
  116. package/dist/js/core/components/ui/form/input/input.js.map +1 -0
  117. package/dist/js/core/components/ui/form/input/password-helper.js +134 -0
  118. package/dist/js/core/components/ui/form/input/password-helper.js.map +1 -0
  119. package/dist/js/core/components/ui/form/input/same-value-helper.js +85 -0
  120. package/dist/js/core/components/ui/form/input/same-value-helper.js.map +1 -0
  121. package/dist/js/core/components/ui/form/input-autocomplete/input-autocomplete.js +405 -0
  122. package/dist/js/core/components/ui/form/input-autocomplete/input-autocomplete.js.map +1 -0
  123. package/dist/js/core/components/ui/form/radio/radio.js +63 -0
  124. package/dist/js/core/components/ui/form/radio/radio.js.map +1 -0
  125. package/dist/js/core/components/ui/form/select/select.js +323 -0
  126. package/dist/js/core/components/ui/form/select/select.js.map +1 -0
  127. package/dist/js/core/components/ui/form/switch/switch.js +90 -0
  128. package/dist/js/core/components/ui/form/switch/switch.js.map +1 -0
  129. package/dist/js/core/components/ui/form/textarea/textarea.js +162 -0
  130. package/dist/js/core/components/ui/form/textarea/textarea.js.map +1 -0
  131. package/dist/js/core/components/ui/group/group.js +128 -0
  132. package/dist/js/core/components/ui/group/group.js.map +1 -0
  133. package/dist/js/core/components/ui/icon/icon.js +129 -0
  134. package/dist/js/core/components/ui/icon/icon.js.map +1 -0
  135. package/dist/js/core/components/ui/icon/icons.js +163 -0
  136. package/dist/js/core/components/ui/icon/icons.js.map +1 -0
  137. package/dist/js/core/components/ui/icon/icons.json +1 -0
  138. package/dist/js/core/components/ui/image/image.js +160 -0
  139. package/dist/js/core/components/ui/image/image.js.map +1 -0
  140. package/dist/js/core/components/ui/link/link.js +125 -0
  141. package/dist/js/core/components/ui/link/link.js.map +1 -0
  142. package/dist/js/core/components/ui/loader/loader.js +106 -0
  143. package/dist/js/core/components/ui/loader/loader.js.map +1 -0
  144. package/dist/js/core/components/ui/loader/styles/fixed.js +56 -0
  145. package/dist/js/core/components/ui/loader/styles/fixed.js.map +1 -0
  146. package/dist/js/core/components/ui/loader/styles/inline.js +70 -0
  147. package/dist/js/core/components/ui/loader/styles/inline.js.map +1 -0
  148. package/dist/js/core/components/ui/menu/menu-item.js +35 -0
  149. package/dist/js/core/components/ui/menu/menu-item.js.map +1 -0
  150. package/dist/js/core/components/ui/menu/menu.js +436 -0
  151. package/dist/js/core/components/ui/menu/menu.js.map +1 -0
  152. package/dist/js/core/components/ui/modal/modal-actions.js +44 -0
  153. package/dist/js/core/components/ui/modal/modal-actions.js.map +1 -0
  154. package/dist/js/core/components/ui/modal/modal-close.js +56 -0
  155. package/dist/js/core/components/ui/modal/modal-close.js.map +1 -0
  156. package/dist/js/core/components/ui/modal/modal-content.js +27 -0
  157. package/dist/js/core/components/ui/modal/modal-content.js.map +1 -0
  158. package/dist/js/core/components/ui/modal/modal-subtitle.js +34 -0
  159. package/dist/js/core/components/ui/modal/modal-subtitle.js.map +1 -0
  160. package/dist/js/core/components/ui/modal/modal-title.js +35 -0
  161. package/dist/js/core/components/ui/modal/modal-title.js.map +1 -0
  162. package/dist/js/core/components/ui/modal/modal-utils.js +32 -0
  163. package/dist/js/core/components/ui/modal/modal-utils.js.map +1 -0
  164. package/dist/js/core/components/ui/modal/modal.js +568 -0
  165. package/dist/js/core/components/ui/modal/modal.js.map +1 -0
  166. package/dist/js/core/components/ui/pop/pop.js +337 -0
  167. package/dist/js/core/components/ui/pop/pop.js.map +1 -0
  168. package/dist/js/core/components/ui/progress/progress.js +164 -0
  169. package/dist/js/core/components/ui/progress/progress.js.map +1 -0
  170. package/dist/js/core/components/ui/table/table-caption.js +29 -0
  171. package/dist/js/core/components/ui/table/table-caption.js.map +1 -0
  172. package/dist/js/core/components/ui/table/table-tbody.js +41 -0
  173. package/dist/js/core/components/ui/table/table-tbody.js.map +1 -0
  174. package/dist/js/core/components/ui/table/table-td.js +69 -0
  175. package/dist/js/core/components/ui/table/table-td.js.map +1 -0
  176. package/dist/js/core/components/ui/table/table-tfoot.js +28 -0
  177. package/dist/js/core/components/ui/table/table-tfoot.js.map +1 -0
  178. package/dist/js/core/components/ui/table/table-th.js +80 -0
  179. package/dist/js/core/components/ui/table/table-th.js.map +1 -0
  180. package/dist/js/core/components/ui/table/table-thead.js +26 -0
  181. package/dist/js/core/components/ui/table/table-thead.js.map +1 -0
  182. package/dist/js/core/components/ui/table/table-tr.js +67 -0
  183. package/dist/js/core/components/ui/table/table-tr.js.map +1 -0
  184. package/dist/js/core/components/ui/table/table.js +106 -0
  185. package/dist/js/core/components/ui/table/table.js.map +1 -0
  186. package/dist/js/core/components/ui/theme/theme-collection/core-variables.js +74 -0
  187. package/dist/js/core/components/ui/theme/theme-collection/core-variables.js.map +1 -0
  188. package/dist/js/core/components/ui/theme/theme-collection/dark.js +39 -0
  189. package/dist/js/core/components/ui/theme/theme-collection/dark.js.map +1 -0
  190. package/dist/js/core/components/ui/theme/theme-collection/light.js +32 -0
  191. package/dist/js/core/components/ui/theme/theme-collection/light.js.map +1 -0
  192. package/dist/js/core/components/ui/theme/theme.js +150 -0
  193. package/dist/js/core/components/ui/theme/theme.js.map +1 -0
  194. package/dist/js/core/components/ui/toast/message-subscriber.js +41 -0
  195. package/dist/js/core/components/ui/toast/message-subscriber.js.map +1 -0
  196. package/dist/js/core/components/ui/toast/toast-item.js +379 -0
  197. package/dist/js/core/components/ui/toast/toast-item.js.map +1 -0
  198. package/dist/js/core/components/ui/toast/toast.js +269 -0
  199. package/dist/js/core/components/ui/toast/toast.js.map +1 -0
  200. package/dist/js/core/components/ui/toast/types.js +2 -0
  201. package/dist/js/core/components/ui/toast/types.js.map +1 -0
  202. package/dist/js/core/components/ui/tooltip/tooltip.js +219 -0
  203. package/dist/js/core/components/ui/tooltip/tooltip.js.map +1 -0
  204. package/dist/js/core/components/ui/ui.js +41 -0
  205. package/dist/js/core/components/ui/ui.js.map +1 -0
  206. package/dist/js/core/core.js +14 -0
  207. package/dist/js/core/core.js.map +1 -0
  208. package/dist/js/core/decorators/Subscriber.js +9 -0
  209. package/dist/js/core/decorators/Subscriber.js.map +1 -0
  210. package/dist/js/core/decorators/api.js +559 -0
  211. package/dist/js/core/decorators/api.js.map +1 -0
  212. package/dist/js/core/decorators/lifecycle.js +67 -0
  213. package/dist/js/core/decorators/lifecycle.js.map +1 -0
  214. package/dist/js/core/decorators/subscriber/ancestorAttribute.js +27 -0
  215. package/dist/js/core/decorators/subscriber/ancestorAttribute.js.map +1 -0
  216. package/dist/js/core/decorators/subscriber/autoFill.js +26 -0
  217. package/dist/js/core/decorators/subscriber/autoFill.js.map +1 -0
  218. package/dist/js/core/decorators/subscriber/autoSubscribe.js +46 -0
  219. package/dist/js/core/decorators/subscriber/autoSubscribe.js.map +1 -0
  220. package/dist/js/core/decorators/subscriber/bind.js +150 -0
  221. package/dist/js/core/decorators/subscriber/bind.js.map +1 -0
  222. package/dist/js/core/decorators/subscriber/common.js +44 -0
  223. package/dist/js/core/decorators/subscriber/common.js.map +1 -0
  224. package/dist/js/core/decorators/subscriber/dynamicPath.js +75 -0
  225. package/dist/js/core/decorators/subscriber/dynamicPath.js.map +1 -0
  226. package/dist/js/core/decorators/subscriber/dynamicPropertyWatch.js +138 -0
  227. package/dist/js/core/decorators/subscriber/dynamicPropertyWatch.js.map +1 -0
  228. package/dist/js/core/decorators/subscriber/handle.js +22 -0
  229. package/dist/js/core/decorators/subscriber/handle.js.map +1 -0
  230. package/dist/js/core/decorators/subscriber/onAssign.js +199 -0
  231. package/dist/js/core/decorators/subscriber/onAssign.js.map +1 -0
  232. package/dist/js/core/decorators/subscriber/publish.js +108 -0
  233. package/dist/js/core/decorators/subscriber/publish.js.map +1 -0
  234. package/dist/js/core/decorators/subscriber/publisherPath.js +16 -0
  235. package/dist/js/core/decorators/subscriber/publisherPath.js.map +1 -0
  236. package/dist/js/core/decorators/subscriber/subscribe.js +20 -0
  237. package/dist/js/core/decorators/subscriber/subscribe.js.map +1 -0
  238. package/dist/js/core/directives/DataProvider.js +127 -0
  239. package/dist/js/core/directives/DataProvider.js.map +1 -0
  240. package/dist/js/core/directives/Wording.js +221 -0
  241. package/dist/js/core/directives/Wording.js.map +1 -0
  242. package/dist/js/core/mixins/Fetcher.js +325 -0
  243. package/dist/js/core/mixins/Fetcher.js.map +1 -0
  244. package/dist/js/core/mixins/FormCheckable.js +313 -0
  245. package/dist/js/core/mixins/FormCheckable.js.map +1 -0
  246. package/dist/js/core/mixins/FormElement.js +304 -0
  247. package/dist/js/core/mixins/FormElement.js.map +1 -0
  248. package/dist/js/core/mixins/FormInput.js +82 -0
  249. package/dist/js/core/mixins/FormInput.js.map +1 -0
  250. package/dist/js/core/mixins/Subscriber.js +354 -0
  251. package/dist/js/core/mixins/Subscriber.js.map +1 -0
  252. package/dist/js/core/mixins/TemplatesContainer.js +70 -0
  253. package/dist/js/core/mixins/TemplatesContainer.js.map +1 -0
  254. package/dist/js/core/mixins/mixins.js +7 -0
  255. package/dist/js/core/mixins/mixins.js.map +1 -0
  256. package/dist/js/core/utils/AncestorAttributeObserver.js +140 -0
  257. package/dist/js/core/utils/AncestorAttributeObserver.js.map +1 -0
  258. package/dist/js/core/utils/Arrays.js +141 -0
  259. package/dist/js/core/utils/Arrays.js.map +1 -0
  260. package/dist/js/core/utils/DataBindObserver.js +265 -0
  261. package/dist/js/core/utils/DataBindObserver.js.map +1 -0
  262. package/dist/js/core/utils/Electron.js +14 -0
  263. package/dist/js/core/utils/Electron.js.map +1 -0
  264. package/dist/js/core/utils/Format.js +43 -0
  265. package/dist/js/core/utils/Format.js.map +1 -0
  266. package/dist/js/core/utils/HTML.js +248 -0
  267. package/dist/js/core/utils/HTML.js.map +1 -0
  268. package/dist/js/core/utils/LocationHandler.js +143 -0
  269. package/dist/js/core/utils/LocationHandler.js.map +1 -0
  270. package/dist/js/core/utils/Objects.js +111 -0
  271. package/dist/js/core/utils/Objects.js.map +1 -0
  272. package/dist/js/core/utils/PublisherProxy.js +946 -0
  273. package/dist/js/core/utils/PublisherProxy.js.map +1 -0
  274. package/dist/js/core/utils/Utils.js +19 -0
  275. package/dist/js/core/utils/Utils.js.map +1 -0
  276. package/dist/js/core/utils/aesCrypto.js +98 -0
  277. package/dist/js/core/utils/aesCrypto.js.map +1 -0
  278. package/dist/js/core/utils/api.js +574 -0
  279. package/dist/js/core/utils/api.js.map +1 -0
  280. package/dist/js/core/utils/dataProviderKey.js +64 -0
  281. package/dist/js/core/utils/dataProviderKey.js.map +1 -0
  282. package/dist/js/core/utils/endpoint.js +74 -0
  283. package/dist/js/core/utils/endpoint.js.map +1 -0
  284. package/dist/js/core/utils/route.js +149 -0
  285. package/dist/js/core/utils/route.js.map +1 -0
  286. package/dist/js/core/utils/url-pattern.js +3 -0
  287. package/dist/js/core/utils/url-pattern.js.map +1 -0
  288. package/dist/js/dataprovider.js +2 -0
  289. package/dist/js/dataprovider.js.map +1 -0
  290. package/dist/js/decorators.js +39 -0
  291. package/dist/js/decorators.js.map +1 -0
  292. package/dist/js/directives.js +30 -0
  293. package/dist/js/directives.js.map +1 -0
  294. package/dist/js/index.js +8 -0
  295. package/dist/js/index.js.map +1 -0
  296. package/dist/js/mixins.js +23 -0
  297. package/dist/js/mixins.js.map +1 -0
  298. package/dist/js/test-utils/TestUtils.js +10 -0
  299. package/dist/js/test-utils/TestUtils.js.map +1 -0
  300. package/dist/js/utils.js +41 -0
  301. package/dist/js/utils.js.map +1 -0
  302. package/dist/types/components.d.ts +5 -0
  303. package/dist/types/components.d.ts.map +1 -0
  304. package/dist/types/concorde-loaded.d.ts +2 -0
  305. package/dist/types/concorde-loaded.d.ts.map +1 -0
  306. package/dist/types/core/_types/endpoint.d.ts +5 -0
  307. package/dist/types/core/_types/endpoint.d.ts.map +1 -0
  308. package/dist/types/core/_types/key.d.ts +2 -0
  309. package/dist/types/core/_types/key.d.ts.map +1 -0
  310. package/dist/types/core/_types/types.d.ts +28 -0
  311. package/dist/types/core/_types/types.d.ts.map +1 -0
  312. package/dist/types/core/components/functional/date/date.d.ts +52 -0
  313. package/dist/types/core/components/functional/date/date.d.ts.map +1 -0
  314. package/dist/types/core/components/functional/example/example.d.ts +15 -0
  315. package/dist/types/core/components/functional/example/example.d.ts.map +1 -0
  316. package/dist/types/core/components/functional/fetch/fetch.d.ts +102 -0
  317. package/dist/types/core/components/functional/fetch/fetch.d.ts.map +1 -0
  318. package/dist/types/core/components/functional/functional.d.ts +17 -0
  319. package/dist/types/core/components/functional/functional.d.ts.map +1 -0
  320. package/dist/types/core/components/functional/if/if.d.ts +13 -0
  321. package/dist/types/core/components/functional/if/if.d.ts.map +1 -0
  322. package/dist/types/core/components/functional/list/list.d.ts +149 -0
  323. package/dist/types/core/components/functional/list/list.d.ts.map +1 -0
  324. package/dist/types/core/components/functional/mix/mix.d.ts +23 -0
  325. package/dist/types/core/components/functional/mix/mix.d.ts.map +1 -0
  326. package/dist/types/core/components/functional/queue/queue.d.ts +79 -0
  327. package/dist/types/core/components/functional/queue/queue.d.ts.map +1 -0
  328. package/dist/types/core/components/functional/router/redirect.d.ts +19 -0
  329. package/dist/types/core/components/functional/router/redirect.d.ts.map +1 -0
  330. package/dist/types/core/components/functional/router/router.d.ts +46 -0
  331. package/dist/types/core/components/functional/router/router.d.ts.map +1 -0
  332. package/dist/types/core/components/functional/sdui/SDUIDescriptorTransformer.d.ts +59 -0
  333. package/dist/types/core/components/functional/sdui/SDUIDescriptorTransformer.d.ts.map +1 -0
  334. package/dist/types/core/components/functional/sdui/sdui-utils.d.ts +6 -0
  335. package/dist/types/core/components/functional/sdui/sdui-utils.d.ts.map +1 -0
  336. package/dist/types/core/components/functional/sdui/sdui.d.ts +145 -0
  337. package/dist/types/core/components/functional/sdui/sdui.d.ts.map +1 -0
  338. package/dist/types/core/components/functional/sdui/types.d.ts +38 -0
  339. package/dist/types/core/components/functional/sdui/types.d.ts.map +1 -0
  340. package/dist/types/core/components/functional/sonic-scope/sonic-scope.d.ts +6 -0
  341. package/dist/types/core/components/functional/sonic-scope/sonic-scope.d.ts.map +1 -0
  342. package/dist/types/core/components/functional/states/states.d.ts +42 -0
  343. package/dist/types/core/components/functional/states/states.d.ts.map +1 -0
  344. package/dist/types/core/components/functional/submit/submit.d.ts +37 -0
  345. package/dist/types/core/components/functional/submit/submit.d.ts.map +1 -0
  346. package/dist/types/core/components/functional/subscriber/subscriber.d.ts +13 -0
  347. package/dist/types/core/components/functional/subscriber/subscriber.d.ts.map +1 -0
  348. package/dist/types/core/components/functional/translation/translation.d.ts +7 -0
  349. package/dist/types/core/components/functional/translation/translation.d.ts.map +1 -0
  350. package/dist/types/core/components/functional/value/value.d.ts +8 -0
  351. package/dist/types/core/components/functional/value/value.d.ts.map +1 -0
  352. package/dist/types/core/components/ui/_css/scroll.d.ts +2 -0
  353. package/dist/types/core/components/ui/_css/scroll.d.ts.map +1 -0
  354. package/dist/types/core/components/ui/_css/shadow.d.ts +3 -0
  355. package/dist/types/core/components/ui/_css/shadow.d.ts.map +1 -0
  356. package/dist/types/core/components/ui/_css/size.d.ts +3 -0
  357. package/dist/types/core/components/ui/_css/size.d.ts.map +1 -0
  358. package/dist/types/core/components/ui/_css/type.d.ts +3 -0
  359. package/dist/types/core/components/ui/_css/type.d.ts.map +1 -0
  360. package/dist/types/core/components/ui/alert/alert.d.ts +37 -0
  361. package/dist/types/core/components/ui/alert/alert.d.ts.map +1 -0
  362. package/dist/types/core/components/ui/alert-messages/alert-messages.d.ts +15 -0
  363. package/dist/types/core/components/ui/alert-messages/alert-messages.d.ts.map +1 -0
  364. package/dist/types/core/components/ui/badge/badge.d.ts +27 -0
  365. package/dist/types/core/components/ui/badge/badge.d.ts.map +1 -0
  366. package/dist/types/core/components/ui/button/button.d.ts +180 -0
  367. package/dist/types/core/components/ui/button/button.d.ts.map +1 -0
  368. package/dist/types/core/components/ui/captcha/altchaStyles.d.ts +2 -0
  369. package/dist/types/core/components/ui/captcha/altchaStyles.d.ts.map +1 -0
  370. package/dist/types/core/components/ui/captcha/captcha.d.ts +30 -0
  371. package/dist/types/core/components/ui/captcha/captcha.d.ts.map +1 -0
  372. package/dist/types/core/components/ui/card/card-footer.d.ts +6 -0
  373. package/dist/types/core/components/ui/card/card-footer.d.ts.map +1 -0
  374. package/dist/types/core/components/ui/card/card-header-descripton.d.ts +6 -0
  375. package/dist/types/core/components/ui/card/card-header-descripton.d.ts.map +1 -0
  376. package/dist/types/core/components/ui/card/card-header.d.ts +9 -0
  377. package/dist/types/core/components/ui/card/card-header.d.ts.map +1 -0
  378. package/dist/types/core/components/ui/card/card-main.d.ts +6 -0
  379. package/dist/types/core/components/ui/card/card-main.d.ts.map +1 -0
  380. package/dist/types/core/components/ui/card/card.d.ts +13 -0
  381. package/dist/types/core/components/ui/card/card.d.ts.map +1 -0
  382. package/dist/types/core/components/ui/divider/divider.d.ts +16 -0
  383. package/dist/types/core/components/ui/divider/divider.d.ts.map +1 -0
  384. package/dist/types/core/components/ui/form/checkbox/checkbox.d.ts +176 -0
  385. package/dist/types/core/components/ui/form/checkbox/checkbox.d.ts.map +1 -0
  386. package/dist/types/core/components/ui/form/css/form-control.d.ts +5 -0
  387. package/dist/types/core/components/ui/form/css/form-control.d.ts.map +1 -0
  388. package/dist/types/core/components/ui/form/fieldset/fieldset.d.ts +24 -0
  389. package/dist/types/core/components/ui/form/fieldset/fieldset.d.ts.map +1 -0
  390. package/dist/types/core/components/ui/form/fieldset/legend-description.d.ts +6 -0
  391. package/dist/types/core/components/ui/form/fieldset/legend-description.d.ts.map +1 -0
  392. package/dist/types/core/components/ui/form/fieldset/legend.d.ts +17 -0
  393. package/dist/types/core/components/ui/form/fieldset/legend.d.ts.map +1 -0
  394. package/dist/types/core/components/ui/form/form-actions/form-actions.d.ts +8 -0
  395. package/dist/types/core/components/ui/form/form-actions/form-actions.d.ts.map +1 -0
  396. package/dist/types/core/components/ui/form/form-layout/form-layout.d.ts +13 -0
  397. package/dist/types/core/components/ui/form/form-layout/form-layout.d.ts.map +1 -0
  398. package/dist/types/core/components/ui/form/input/input.d.ts +123 -0
  399. package/dist/types/core/components/ui/form/input/input.d.ts.map +1 -0
  400. package/dist/types/core/components/ui/form/input/password-helper.d.ts +26 -0
  401. package/dist/types/core/components/ui/form/input/password-helper.d.ts.map +1 -0
  402. package/dist/types/core/components/ui/form/input/same-value-helper.d.ts +17 -0
  403. package/dist/types/core/components/ui/form/input/same-value-helper.d.ts.map +1 -0
  404. package/dist/types/core/components/ui/form/input-autocomplete/input-autocomplete.d.ts +155 -0
  405. package/dist/types/core/components/ui/form/input-autocomplete/input-autocomplete.d.ts.map +1 -0
  406. package/dist/types/core/components/ui/form/radio/radio.d.ts +15 -0
  407. package/dist/types/core/components/ui/form/radio/radio.d.ts.map +1 -0
  408. package/dist/types/core/components/ui/form/select/select.d.ts +59 -0
  409. package/dist/types/core/components/ui/form/select/select.d.ts.map +1 -0
  410. package/dist/types/core/components/ui/form/switch/switch.d.ts +6 -0
  411. package/dist/types/core/components/ui/form/switch/switch.d.ts.map +1 -0
  412. package/dist/types/core/components/ui/form/textarea/textarea.d.ts +94 -0
  413. package/dist/types/core/components/ui/form/textarea/textarea.d.ts.map +1 -0
  414. package/dist/types/core/components/ui/group/group.d.ts +17 -0
  415. package/dist/types/core/components/ui/group/group.d.ts.map +1 -0
  416. package/dist/types/core/components/ui/icon/icon.d.ts +28 -0
  417. package/dist/types/core/components/ui/icon/icon.d.ts.map +1 -0
  418. package/dist/types/core/components/ui/icon/icons.d.ts +11 -0
  419. package/dist/types/core/components/ui/icon/icons.d.ts.map +1 -0
  420. package/dist/types/core/components/ui/image/image.d.ts +16 -0
  421. package/dist/types/core/components/ui/image/image.d.ts.map +1 -0
  422. package/dist/types/core/components/ui/link/link.d.ts +30 -0
  423. package/dist/types/core/components/ui/link/link.d.ts.map +1 -0
  424. package/dist/types/core/components/ui/loader/loader.d.ts +24 -0
  425. package/dist/types/core/components/ui/loader/loader.d.ts.map +1 -0
  426. package/dist/types/core/components/ui/loader/styles/fixed.d.ts +2 -0
  427. package/dist/types/core/components/ui/loader/styles/fixed.d.ts.map +1 -0
  428. package/dist/types/core/components/ui/loader/styles/inline.d.ts +2 -0
  429. package/dist/types/core/components/ui/loader/styles/inline.d.ts.map +1 -0
  430. package/dist/types/core/components/ui/menu/menu-item.d.ts +6 -0
  431. package/dist/types/core/components/ui/menu/menu-item.d.ts.map +1 -0
  432. package/dist/types/core/components/ui/menu/menu.d.ts +52 -0
  433. package/dist/types/core/components/ui/menu/menu.d.ts.map +1 -0
  434. package/dist/types/core/components/ui/modal/modal-actions.d.ts +9 -0
  435. package/dist/types/core/components/ui/modal/modal-actions.d.ts.map +1 -0
  436. package/dist/types/core/components/ui/modal/modal-close.d.ts +11 -0
  437. package/dist/types/core/components/ui/modal/modal-close.d.ts.map +1 -0
  438. package/dist/types/core/components/ui/modal/modal-content.d.ts +6 -0
  439. package/dist/types/core/components/ui/modal/modal-content.d.ts.map +1 -0
  440. package/dist/types/core/components/ui/modal/modal-subtitle.d.ts +6 -0
  441. package/dist/types/core/components/ui/modal/modal-subtitle.d.ts.map +1 -0
  442. package/dist/types/core/components/ui/modal/modal-title.d.ts +6 -0
  443. package/dist/types/core/components/ui/modal/modal-title.d.ts.map +1 -0
  444. package/dist/types/core/components/ui/modal/modal-utils.d.ts +4 -0
  445. package/dist/types/core/components/ui/modal/modal-utils.d.ts.map +1 -0
  446. package/dist/types/core/components/ui/modal/modal.d.ts +79 -0
  447. package/dist/types/core/components/ui/modal/modal.d.ts.map +1 -0
  448. package/dist/types/core/components/ui/pop/pop.d.ts +42 -0
  449. package/dist/types/core/components/ui/pop/pop.d.ts.map +1 -0
  450. package/dist/types/core/components/ui/progress/progress.d.ts +12 -0
  451. package/dist/types/core/components/ui/progress/progress.d.ts.map +1 -0
  452. package/dist/types/core/components/ui/table/table-caption.d.ts +6 -0
  453. package/dist/types/core/components/ui/table/table-caption.d.ts.map +1 -0
  454. package/dist/types/core/components/ui/table/table-tbody.d.ts +6 -0
  455. package/dist/types/core/components/ui/table/table-tbody.d.ts.map +1 -0
  456. package/dist/types/core/components/ui/table/table-td.d.ts +13 -0
  457. package/dist/types/core/components/ui/table/table-td.d.ts.map +1 -0
  458. package/dist/types/core/components/ui/table/table-tfoot.d.ts +6 -0
  459. package/dist/types/core/components/ui/table/table-tfoot.d.ts.map +1 -0
  460. package/dist/types/core/components/ui/table/table-th.d.ts +12 -0
  461. package/dist/types/core/components/ui/table/table-th.d.ts.map +1 -0
  462. package/dist/types/core/components/ui/table/table-thead.d.ts +6 -0
  463. package/dist/types/core/components/ui/table/table-thead.d.ts.map +1 -0
  464. package/dist/types/core/components/ui/table/table-tr.d.ts +14 -0
  465. package/dist/types/core/components/ui/table/table-tr.d.ts.map +1 -0
  466. package/dist/types/core/components/ui/table/table.d.ts +18 -0
  467. package/dist/types/core/components/ui/table/table.d.ts.map +1 -0
  468. package/dist/types/core/components/ui/theme/theme-collection/core-variables.d.ts +2 -0
  469. package/dist/types/core/components/ui/theme/theme-collection/core-variables.d.ts.map +1 -0
  470. package/dist/types/core/components/ui/theme/theme-collection/dark.d.ts +2 -0
  471. package/dist/types/core/components/ui/theme/theme-collection/dark.d.ts.map +1 -0
  472. package/dist/types/core/components/ui/theme/theme-collection/light.d.ts +2 -0
  473. package/dist/types/core/components/ui/theme/theme-collection/light.d.ts.map +1 -0
  474. package/dist/types/core/components/ui/theme/theme.d.ts +20 -0
  475. package/dist/types/core/components/ui/theme/theme.d.ts.map +1 -0
  476. package/dist/types/core/components/ui/toast/message-subscriber.d.ts +19 -0
  477. package/dist/types/core/components/ui/toast/message-subscriber.d.ts.map +1 -0
  478. package/dist/types/core/components/ui/toast/toast-item.d.ts +41 -0
  479. package/dist/types/core/components/ui/toast/toast-item.d.ts.map +1 -0
  480. package/dist/types/core/components/ui/toast/toast.d.ts +28 -0
  481. package/dist/types/core/components/ui/toast/toast.d.ts.map +1 -0
  482. package/dist/types/core/components/ui/toast/types.d.ts +12 -0
  483. package/dist/types/core/components/ui/toast/types.d.ts.map +1 -0
  484. package/dist/types/core/components/ui/tooltip/tooltip.d.ts +21 -0
  485. package/dist/types/core/components/ui/tooltip/tooltip.d.ts.map +1 -0
  486. package/dist/types/core/components/ui/ui.d.ts +35 -0
  487. package/dist/types/core/components/ui/ui.d.ts.map +1 -0
  488. package/dist/types/core/core.d.ts +5 -0
  489. package/dist/types/core/core.d.ts.map +1 -0
  490. package/dist/types/core/decorators/Subscriber.d.ts +11 -0
  491. package/dist/types/core/decorators/Subscriber.d.ts.map +1 -0
  492. package/dist/types/core/decorators/api.d.ts +106 -0
  493. package/dist/types/core/decorators/api.d.ts.map +1 -0
  494. package/dist/types/core/decorators/lifecycle.d.ts +19 -0
  495. package/dist/types/core/decorators/lifecycle.d.ts.map +1 -0
  496. package/dist/types/core/decorators/subscriber/ancestorAttribute.d.ts +11 -0
  497. package/dist/types/core/decorators/subscriber/ancestorAttribute.d.ts.map +1 -0
  498. package/dist/types/core/decorators/subscriber/autoFill.d.ts +2 -0
  499. package/dist/types/core/decorators/subscriber/autoFill.d.ts.map +1 -0
  500. package/dist/types/core/decorators/subscriber/autoSubscribe.d.ts +2 -0
  501. package/dist/types/core/decorators/subscriber/autoSubscribe.d.ts.map +1 -0
  502. package/dist/types/core/decorators/subscriber/bind.d.ts +28 -0
  503. package/dist/types/core/decorators/subscriber/bind.d.ts.map +1 -0
  504. package/dist/types/core/decorators/subscriber/common.d.ts +14 -0
  505. package/dist/types/core/decorators/subscriber/common.d.ts.map +1 -0
  506. package/dist/types/core/decorators/subscriber/dynamicPath.d.ts +23 -0
  507. package/dist/types/core/decorators/subscriber/dynamicPath.d.ts.map +1 -0
  508. package/dist/types/core/decorators/subscriber/dynamicPropertyWatch.d.ts +42 -0
  509. package/dist/types/core/decorators/subscriber/dynamicPropertyWatch.d.ts.map +1 -0
  510. package/dist/types/core/decorators/subscriber/handle.d.ts +74 -0
  511. package/dist/types/core/decorators/subscriber/handle.d.ts.map +1 -0
  512. package/dist/types/core/decorators/subscriber/onAssign.d.ts +53 -0
  513. package/dist/types/core/decorators/subscriber/onAssign.d.ts.map +1 -0
  514. package/dist/types/core/decorators/subscriber/publish.d.ts +23 -0
  515. package/dist/types/core/decorators/subscriber/publish.d.ts.map +1 -0
  516. package/dist/types/core/decorators/subscriber/publisherPath.d.ts +3 -0
  517. package/dist/types/core/decorators/subscriber/publisherPath.d.ts.map +1 -0
  518. package/dist/types/core/decorators/subscriber/subscribe.d.ts +20 -0
  519. package/dist/types/core/decorators/subscriber/subscribe.d.ts.map +1 -0
  520. package/dist/types/core/directives/DataProvider.d.ts +45 -0
  521. package/dist/types/core/directives/DataProvider.d.ts.map +1 -0
  522. package/dist/types/core/directives/Wording.d.ts +44 -0
  523. package/dist/types/core/directives/Wording.d.ts.map +1 -0
  524. package/dist/types/core/mixins/Fetcher.d.ts +108 -0
  525. package/dist/types/core/mixins/Fetcher.d.ts.map +1 -0
  526. package/dist/types/core/mixins/FormCheckable.d.ts +95 -0
  527. package/dist/types/core/mixins/FormCheckable.d.ts.map +1 -0
  528. package/dist/types/core/mixins/FormElement.d.ts +37 -0
  529. package/dist/types/core/mixins/FormElement.d.ts.map +1 -0
  530. package/dist/types/core/mixins/FormInput.d.ts +79 -0
  531. package/dist/types/core/mixins/FormInput.d.ts.map +1 -0
  532. package/dist/types/core/mixins/Subscriber.d.ts +38 -0
  533. package/dist/types/core/mixins/Subscriber.d.ts.map +1 -0
  534. package/dist/types/core/mixins/TemplatesContainer.d.ts +14 -0
  535. package/dist/types/core/mixins/TemplatesContainer.d.ts.map +1 -0
  536. package/dist/types/core/mixins/mixins.d.ts +7 -0
  537. package/dist/types/core/mixins/mixins.d.ts.map +1 -0
  538. package/dist/types/core/utils/AncestorAttributeObserver.d.ts +38 -0
  539. package/dist/types/core/utils/AncestorAttributeObserver.d.ts.map +1 -0
  540. package/dist/types/core/utils/Arrays.d.ts +98 -0
  541. package/dist/types/core/utils/Arrays.d.ts.map +1 -0
  542. package/dist/types/core/utils/DataBindObserver.d.ts +84 -0
  543. package/dist/types/core/utils/DataBindObserver.d.ts.map +1 -0
  544. package/dist/types/core/utils/Electron.d.ts +8 -0
  545. package/dist/types/core/utils/Electron.d.ts.map +1 -0
  546. package/dist/types/core/utils/Format.d.ts +13 -0
  547. package/dist/types/core/utils/Format.d.ts.map +1 -0
  548. package/dist/types/core/utils/HTML.d.ts +64 -0
  549. package/dist/types/core/utils/HTML.d.ts.map +1 -0
  550. package/dist/types/core/utils/LocationHandler.d.ts +48 -0
  551. package/dist/types/core/utils/LocationHandler.d.ts.map +1 -0
  552. package/dist/types/core/utils/Objects.d.ts +31 -0
  553. package/dist/types/core/utils/Objects.d.ts.map +1 -0
  554. package/dist/types/core/utils/PublisherProxy.d.ts +230 -0
  555. package/dist/types/core/utils/PublisherProxy.d.ts.map +1 -0
  556. package/dist/types/core/utils/Utils.d.ts +6 -0
  557. package/dist/types/core/utils/Utils.d.ts.map +1 -0
  558. package/dist/types/core/utils/aesCrypto.d.ts +53 -0
  559. package/dist/types/core/utils/aesCrypto.d.ts.map +1 -0
  560. package/dist/types/core/utils/api.d.ts +173 -0
  561. package/dist/types/core/utils/api.d.ts.map +1 -0
  562. package/dist/types/core/utils/dataProviderKey.d.ts +56 -0
  563. package/dist/types/core/utils/dataProviderKey.d.ts.map +1 -0
  564. package/dist/types/core/utils/endpoint.d.ts +37 -0
  565. package/dist/types/core/utils/endpoint.d.ts.map +1 -0
  566. package/dist/types/core/utils/route.d.ts +41 -0
  567. package/dist/types/core/utils/route.d.ts.map +1 -0
  568. package/dist/types/core/utils/url-pattern.d.ts +3 -0
  569. package/dist/types/core/utils/url-pattern.d.ts.map +1 -0
  570. package/dist/types/dataprovider.d.ts +2 -0
  571. package/dist/types/dataprovider.d.ts.map +1 -0
  572. package/dist/types/decorators.d.ts +28 -0
  573. package/dist/types/decorators.d.ts.map +1 -0
  574. package/dist/types/directives.d.ts +21 -0
  575. package/dist/types/directives.d.ts.map +1 -0
  576. package/dist/types/index.d.ts +8 -0
  577. package/dist/types/index.d.ts.map +1 -0
  578. package/dist/types/mixins.d.ts +204 -0
  579. package/dist/types/mixins.d.ts.map +1 -0
  580. package/dist/types/test-utils/TestUtils.d.ts +4 -0
  581. package/dist/types/test-utils/TestUtils.d.ts.map +1 -0
  582. package/dist/types/utils.d.ts +17 -0
  583. package/dist/types/utils.d.ts.map +1 -0
  584. package/docs/assets/index-BEgZEIbv.js +11196 -0
  585. package/docs/docs-mock-api-sw.js +19 -0
  586. package/docs/docs-mock-api-sw.js.map +2 -2
  587. package/docs/index.html +1 -1
  588. package/docs/src/docs/_core-concept/dataFlow.md +9 -3
  589. package/docs/src/docs/_decorators/bind.md +2 -2
  590. package/docs/src/docs/_decorators/get.md +13 -4
  591. package/docs/src/docs/_decorators/handle.md +5 -1
  592. package/docs/src/docs/_decorators/on-assign.md +2 -0
  593. package/docs/src/docs/_decorators/patch.md +45 -0
  594. package/docs/src/docs/_decorators/post.md +93 -0
  595. package/docs/src/docs/_decorators/publish.md +1 -1
  596. package/docs/src/docs/_decorators/put.md +43 -0
  597. package/docs/src/docs/_decorators/subscribe.md +4 -1
  598. package/docs/src/docs/_directives/sub.md +1 -1
  599. package/docs/src/docs/_getting-started/my-first-component.md +1 -1
  600. package/docs/src/docs/_misc/api-configuration.md +3 -1
  601. package/docs/src/docs/_misc/dataProviderKey.md +2 -2
  602. package/docs/src/docs/_misc/dynamic-path.md +71 -0
  603. package/docs/src/docs/_misc/endpoint.md +5 -3
  604. package/docs/src/docs/search/docs-search.json +540 -15
  605. package/docs/src/tsconfig.json +377 -353
  606. package/gitlab/job_github_mirror.sh +39 -0
  607. package/index.html +0 -1
  608. package/package.json +1084 -356
  609. package/public/docs-mock-api-sw.js +19 -0
  610. package/public/docs-mock-api-sw.js.map +2 -2
  611. package/scripts/github-export.mjs +150 -0
  612. package/scripts/post-build.mjs +43 -0
  613. package/scripts/pre-build.mjs +32 -4
  614. package/scripts/pre-publish.mjs +2 -0
  615. package/src/core/components/functional/example/example.ts +3 -3
  616. package/src/core/components/functional/queue/queue.ts +2 -2
  617. package/src/core/components/ui/icon/icon.ts +17 -2
  618. package/src/core/components/ui/menu/menu.ts +12 -3
  619. package/src/core/components/ui/modal/modal.ts +1 -1
  620. package/src/core/decorators/Subscriber.ts +1 -0
  621. package/src/core/decorators/api.post.spec.ts +293 -0
  622. package/src/core/decorators/api.spec.ts +6 -6
  623. package/src/core/decorators/api.ts +641 -12
  624. package/src/core/decorators/subscriber/ancestorAttribute.spec.ts +197 -0
  625. package/src/core/decorators/subscriber/ancestorAttribute.ts +40 -7
  626. package/src/core/decorators/subscriber/autoSubscribe.ts +7 -3
  627. package/src/core/decorators/subscriber/bind.ts +13 -5
  628. package/src/core/decorators/subscriber/dynamicPath.spec.ts +53 -0
  629. package/src/core/decorators/subscriber/dynamicPath.ts +23 -1
  630. package/src/core/decorators/subscriber/handle.ts +3 -1
  631. package/src/core/decorators/subscriber/onAssign.ts +10 -2
  632. package/src/core/decorators/subscriber/publish.ts +12 -2
  633. package/src/core/mixins/Fetcher.ts +12 -6
  634. package/src/core/utils/AncestorAttributeObserver.ts +199 -0
  635. package/src/core/utils/HTML.ts +3 -11
  636. package/src/core/utils/PublisherProxy.ts +123 -48
  637. package/src/core/utils/api.ts +82 -13
  638. package/src/core/utils/dpOptions.spec.ts +56 -0
  639. package/src/core/utils/endpoint.ts +3 -3
  640. package/src/css.d.ts +19 -0
  641. package/src/decorators.ts +17 -1
  642. package/src/directives.ts +3 -2
  643. package/src/docs/_core-concept/dataFlow.md +9 -3
  644. package/src/docs/_decorators/ancestor-attribute.md +56 -8
  645. package/src/docs/_decorators/bind.md +2 -2
  646. package/src/docs/_decorators/get.md +13 -4
  647. package/src/docs/_decorators/handle.md +5 -1
  648. package/src/docs/_decorators/on-assign.md +2 -0
  649. package/src/docs/_decorators/patch.md +45 -0
  650. package/src/docs/_decorators/post.md +93 -0
  651. package/src/docs/_decorators/publish.md +1 -1
  652. package/src/docs/_decorators/put.md +43 -0
  653. package/src/docs/_decorators/subscribe.md +4 -1
  654. package/src/docs/_directives/sub.md +1 -1
  655. package/src/docs/_getting-started/my-first-component.md +1 -1
  656. package/src/docs/_misc/api-configuration.md +3 -1
  657. package/src/docs/_misc/dataProviderKey.md +2 -2
  658. package/src/docs/_misc/dynamic-path.md +71 -0
  659. package/src/docs/_misc/endpoint.md +5 -3
  660. package/src/docs/components/docs-demo-sources.ts +115 -4
  661. package/src/docs/components/docs-lit-demo-raw.ts +2 -26
  662. package/src/docs/components/docs-lit-demo.ts +9 -42
  663. package/src/docs/components/docs-source-excerpt.ts +53 -0
  664. package/src/docs/components/docs-source-link.ts +24 -8
  665. package/src/docs/components/docs-source-raw.ts +34 -0
  666. package/src/docs/example/decorators-demo-geo.ts +2 -2
  667. package/src/docs/example/decorators-demo-post.ts +249 -0
  668. package/src/docs/example/decorators-demo-subscribe-publish-get-demos.ts +5 -5
  669. package/src/docs/example/decorators-demo.ts +165 -8
  670. package/src/docs/example/docs-api-config-demos.ts +5 -5
  671. package/src/docs/mock-api/router.ts +20 -0
  672. package/src/docs/navigation/navigation.ts +16 -0
  673. package/src/docs/search/docs-search.json +602 -17
  674. package/src/tsconfig.declarations.json +22 -0
  675. package/src/tsconfig.emit.json +23 -0
  676. package/src/tsconfig.json +3 -261
  677. package/src/tsconfig.tsbuildinfo +1 -1
  678. package/vite.config.mts +1 -1
  679. package/docs/assets/index-CwtPzTFq.js +0 -7508
@@ -0,0 +1,199 @@
1
+ import HTML, { SearchableDomElement } from "./HTML";
2
+
3
+ /**
4
+ * Observateur pour `@ancestorAttribute({ dynamic: true })`.
5
+ *
6
+ * Un MutationObserver sur `document` ne voit pas les mutations dans les shadow
7
+ * roots (Lit par défaut). Chaque abonnement observe donc directement les nœuds
8
+ * de sa chaîne d'ancêtres (composant → parent → … → host shadow), comme
9
+ * `watchScopedConfiguration` dans `api.ts`.
10
+ *
11
+ * Après un `childList` (wrapper plus proche, reparenting), la chaîne est
12
+ * recalculée pour écouter les nouveaux ancêtres.
13
+ */
14
+
15
+ type SyncOptions = {
16
+ /** En mode dynamique : écrire `null` si l'attribut ancêtre disparaît. */
17
+ assignNull: boolean;
18
+ };
19
+
20
+ type Subscription = {
21
+ component: HTMLElement;
22
+ attributeName: string;
23
+ propertyKey: string;
24
+ syncOptions: SyncOptions;
25
+ disconnectObservers: (() => void) | null;
26
+ };
27
+
28
+ /** Chaîne composant → ancêtres, en traversant les shadow roots. */
29
+ function walkAncestorElements(node: Node): Element[] {
30
+ const elements: Element[] = [];
31
+ let current: Node | null = node;
32
+ while (current) {
33
+ if (current instanceof Element) {
34
+ elements.push(current);
35
+ }
36
+ const parent: Node | null =
37
+ current.parentNode || ((current as ShadowRoot).host ?? null);
38
+ current = parent;
39
+ }
40
+ return elements;
41
+ }
42
+
43
+ /**
44
+ * Observe attributs + enfants directs de chaque ancêtre.
45
+ * Retourne une fonction de nettoyage (disconnect).
46
+ */
47
+ function attachAncestorChainObservers(
48
+ subscription: Subscription,
49
+ onMutation: () => void,
50
+ ): () => void {
51
+ const observers: MutationObserver[] = [];
52
+ let disconnected = false;
53
+ const attributeFilter = HTML.scopeAttributeNames(subscription.attributeName);
54
+
55
+ const reconnect = () => {
56
+ for (const observer of observers) {
57
+ observer.disconnect();
58
+ }
59
+ observers.length = 0;
60
+ if (disconnected) return;
61
+
62
+ for (const element of walkAncestorElements(subscription.component)) {
63
+ const observer = new MutationObserver((records) => {
64
+ if (disconnected) return;
65
+ if (records.some((record) => record.type === "childList")) {
66
+ reconnect();
67
+ }
68
+ onMutation();
69
+ });
70
+ observer.observe(element, {
71
+ attributes: true,
72
+ attributeFilter,
73
+ childList: true,
74
+ subtree: false,
75
+ });
76
+ observers.push(observer);
77
+ }
78
+ };
79
+
80
+ reconnect();
81
+
82
+ return () => {
83
+ disconnected = true;
84
+ for (const observer of observers) {
85
+ observer.disconnect();
86
+ }
87
+ observers.length = 0;
88
+ };
89
+ }
90
+
91
+ /**
92
+ * Point unique de synchronisation DOM → propriété du composant.
93
+ * N'assigne que si la valeur change (`Object.is`) pour limiter les re-renders Lit
94
+ * et éviter de reboucler inutilement `observeDynamicProperty` (@bind / @subscribe).
95
+ */
96
+ export function syncAncestorAttributeValue(
97
+ component: object,
98
+ attributeName: string,
99
+ propertyKey: string,
100
+ options: SyncOptions,
101
+ ): void {
102
+ const record = component as Record<string, unknown>;
103
+ const value = HTML.getAncestorAttributeValue(
104
+ component as unknown as SearchableDomElement,
105
+ attributeName,
106
+ );
107
+ if (!options.assignNull && value === null) return;
108
+ if (!Object.is(record[propertyKey], value)) {
109
+ record[propertyKey] = value;
110
+ }
111
+ }
112
+
113
+ export default class AncestorAttributeObserver {
114
+ private static subscriptions = new Set<Subscription>();
115
+ private static pendingRefresh = new Set<Subscription>();
116
+ private static animationFrameId: number | null = null;
117
+
118
+ /**
119
+ * Enregistre un composant en mode `{ dynamic: true }`.
120
+ * Le `unsubscribe` retourné doit être appelé au `disconnectedCallback`.
121
+ */
122
+ static subscribe(
123
+ component: HTMLElement,
124
+ attributeName: string,
125
+ propertyKey: string,
126
+ syncOptions: SyncOptions = { assignNull: true },
127
+ ): () => void {
128
+ const subscription: Subscription = {
129
+ component,
130
+ attributeName,
131
+ propertyKey,
132
+ syncOptions,
133
+ disconnectObservers: null,
134
+ };
135
+
136
+ subscription.disconnectObservers = attachAncestorChainObservers(
137
+ subscription,
138
+ () => {
139
+ if (!AncestorAttributeObserver.subscriptions.has(subscription)) return;
140
+ AncestorAttributeObserver.pendingRefresh.add(subscription);
141
+ AncestorAttributeObserver.scheduleRefresh();
142
+ },
143
+ );
144
+
145
+ AncestorAttributeObserver.subscriptions.add(subscription);
146
+
147
+ return () => {
148
+ AncestorAttributeObserver.unsubscribe(subscription);
149
+ };
150
+ }
151
+
152
+ /** Coupe les observateurs et retire l'abonnement (pas de fuite après disconnect). */
153
+ private static unsubscribe(subscription: Subscription): void {
154
+ if (!AncestorAttributeObserver.subscriptions.has(subscription)) return;
155
+
156
+ subscription.disconnectObservers?.();
157
+ subscription.disconnectObservers = null;
158
+
159
+ AncestorAttributeObserver.subscriptions.delete(subscription);
160
+ AncestorAttributeObserver.pendingRefresh.delete(subscription);
161
+
162
+ if (AncestorAttributeObserver.subscriptions.size === 0) {
163
+ AncestorAttributeObserver.cancelScheduledRefresh();
164
+ }
165
+ }
166
+
167
+ private static scheduleRefresh(): void {
168
+ if (AncestorAttributeObserver.pendingRefresh.size === 0) return;
169
+ if (AncestorAttributeObserver.animationFrameId !== null) return;
170
+ AncestorAttributeObserver.animationFrameId = requestAnimationFrame(() => {
171
+ AncestorAttributeObserver.flushRefresh();
172
+ });
173
+ }
174
+
175
+ private static cancelScheduledRefresh(): void {
176
+ if (AncestorAttributeObserver.animationFrameId !== null) {
177
+ cancelAnimationFrame(AncestorAttributeObserver.animationFrameId);
178
+ AncestorAttributeObserver.animationFrameId = null;
179
+ }
180
+ AncestorAttributeObserver.pendingRefresh.clear();
181
+ }
182
+
183
+ private static flushRefresh(): void {
184
+ AncestorAttributeObserver.animationFrameId = null;
185
+ const subscriptions = Array.from(AncestorAttributeObserver.pendingRefresh);
186
+ AncestorAttributeObserver.pendingRefresh.clear();
187
+
188
+ for (const subscription of subscriptions) {
189
+ if (!AncestorAttributeObserver.subscriptions.has(subscription)) continue;
190
+ if (!subscription.component.isConnected) continue;
191
+ syncAncestorAttributeValue(
192
+ subscription.component,
193
+ subscription.attributeName,
194
+ subscription.propertyKey,
195
+ subscription.syncOptions,
196
+ );
197
+ }
198
+ }
199
+ }
@@ -60,21 +60,15 @@ class HTML {
60
60
  }
61
61
 
62
62
  /** Noms d'attribut DOM à tester (Lit reflect → minuscules, ex. serviceURL → serviceurl). */
63
- private static scopeAttributeNames(attributeName: string): string[] {
63
+ static scopeAttributeNames(attributeName: string): string[] {
64
64
  const lower = attributeName.toLowerCase();
65
65
  return lower === attributeName ? [attributeName] : [attributeName, lower];
66
66
  }
67
67
 
68
- private static readScopeValueOnElement(
68
+ private static readScopeAttributeOnElement(
69
69
  element: HTMLElement,
70
70
  attributeName: string,
71
71
  ): string | null {
72
- // Lit : la propriété est fiable avant le reflect ; un attribut vide (serviceurl="")
73
- // ne doit pas masquer la propriété.
74
- const prop = (element as unknown as Record<string, unknown>)[attributeName];
75
- if (typeof prop === "string" && prop.length > 0) {
76
- return prop;
77
- }
78
72
  for (const attrName of HTML.scopeAttributeNames(attributeName)) {
79
73
  if (element.hasAttribute(attrName)) {
80
74
  const attr = element.getAttribute(attrName);
@@ -88,8 +82,6 @@ class HTML {
88
82
 
89
83
  /**
90
84
  * Va de parent en parent en partant de node pour trouver un attribut.
91
- * Si l'attribut n'est pas encore reflété (ex. Lit `@property({ reflect: true })`
92
- * au premier `connectedCallback`), lit la propriété homonyme sur l'élément.
93
85
  * @param attributeName nom de l'attribut
94
86
  * @returns valeur de l'attribut ou null si l'attribut n'est pas trouvé
95
87
  */
@@ -101,7 +93,7 @@ class HTML {
101
93
  let current: SearchableDomElement | null = node;
102
94
  while (current) {
103
95
  if (current instanceof HTMLElement) {
104
- const value = HTML.readScopeValueOnElement(current, attributeName);
96
+ const value = HTML.readScopeAttributeOnElement(current, attributeName);
105
97
  if (value != null && value.length > 0) {
106
98
  return value;
107
99
  }
@@ -28,6 +28,24 @@ type PublisherProxyOptions = {
28
28
  invalidateOnPageShow?: boolean;
29
29
  };
30
30
 
31
+ /** Options de `dp()` / `dataProvider()` — même surface que `PublisherManager.get()`. */
32
+ export type DpOptions = PublisherProxyOptions;
33
+
34
+ const DP_OPTION_KEYS = new Set<keyof DpOptions>([
35
+ "localStorageMode",
36
+ "expirationDelayMs",
37
+ "invalidateOnPageShow",
38
+ ]);
39
+
40
+ function isDpOptions(value: unknown): value is DpOptions {
41
+ if (value == null || typeof value !== "object" || Array.isArray(value)) {
42
+ return false;
43
+ }
44
+ return Object.keys(value).some((key) =>
45
+ DP_OPTION_KEYS.has(key as keyof DpOptions),
46
+ );
47
+ }
48
+
31
49
  function isLeaf(value: any) {
32
50
  return Object.prototype.hasOwnProperty.call(value, "__value");
33
51
  }
@@ -463,8 +481,7 @@ export class PublisherProxy<T = any> {
463
481
  */
464
482
  _cachedGet_?: T;
465
483
  get(): T {
466
- if (PublisherManager.modifiedCollectore.length > 0)
467
- PublisherManager.modifiedCollectore[0].add(this);
484
+ trackModifiedPublisher(this);
468
485
  if (this._cachedGet_ !== undefined) return this._cachedGet_;
469
486
  if (Object.prototype.hasOwnProperty.call(this._value_, "__value")) {
470
487
  const v = (this._value_ as any).__value;
@@ -501,6 +518,20 @@ export class PublisherProxy<T = any> {
501
518
  *
502
519
  */
503
520
 
521
+ const modifiedCollectore: Set<any>[] = [];
522
+
523
+ function trackModifiedPublisher(proxy: any) {
524
+ if (modifiedCollectore.length > 0) modifiedCollectore[0].add(proxy);
525
+ }
526
+
527
+ export function collectModifiedPublisher() {
528
+ modifiedCollectore.unshift(new Set<any>());
529
+ }
530
+
531
+ export function getModifiedPublishers() {
532
+ return modifiedCollectore.shift() as Set<any>;
533
+ }
534
+
504
535
  export class PublisherManager {
505
536
  static buildDate = __BUILD_DATE__;
506
537
  static changed = false;
@@ -523,9 +554,19 @@ export class PublisherManager {
523
554
  if (PublisherManager.instance != null) throw "Singleton / use getInstance";
524
555
  PublisherManager.instance = this;
525
556
  this.isLocalStrorageReady = this.cleanStorageData() as Promise<boolean>;
557
+ PublisherManager.initPageShowHandler();
558
+ }
559
+
560
+ private static pageShowHandlerInitialized = false;
561
+ private static initPageShowHandler() {
562
+ if (PublisherManager.pageShowHandlerInitialized) return;
563
+ PublisherManager.pageShowHandlerInitialized = true;
564
+ window.addEventListener("pageshow", (e) => {
565
+ if (e.persisted) PublisherManager.getInstance().invalidateAll();
566
+ });
526
567
  }
527
568
 
528
- invalidateAll() {
569
+ private invalidateAll() {
529
570
  this.publishers.forEach((publisher) => {
530
571
  if (!publisher._invalidate_on_page_show_) {
531
572
  return;
@@ -599,16 +640,6 @@ export class PublisherManager {
599
640
  return PublisherManager.instance;
600
641
  }
601
642
 
602
- static registerInstance(id: string, instance: PublisherManager) {
603
- if (PublisherManager.instances.has(id)) {
604
- console.warn(
605
- "PublisherManager instance already registered with id: ",
606
- id,
607
- );
608
- }
609
- PublisherManager.instances.set(id, instance);
610
- }
611
-
612
643
  /**
613
644
  * shortcut static pour obtenir un publisher vias sont id/adresse sans taper getInstance.
614
645
  * Si le publisher n'existe pas, il est créé.
@@ -620,22 +651,6 @@ export class PublisherManager {
620
651
  return PublisherManager.getInstance().get(id, options);
621
652
  }
622
653
 
623
- public static modifiedCollectore: Set<any>[] = [];
624
- public static collectModifiedPublisher() {
625
- PublisherManager.modifiedCollectore.unshift(new Set<any>());
626
- }
627
- public static getModifiedPublishers() {
628
- return PublisherManager.modifiedCollectore.shift() as Set<any>;
629
- }
630
-
631
- /**
632
- * shortcut static pour supprimer un publisher de la liste et appel également delete sur le publisher ce qui le supprime, de même que ses sous publishers
633
- */
634
- static delete(id: string | null) {
635
- if (!id) return false;
636
- return PublisherManager.getInstance().delete(id);
637
- }
638
-
639
654
  /**
640
655
  * Obtenir un publisher vias sont id/adresse
641
656
  * Si le publisher n'existe pas, il est créé.
@@ -1041,17 +1056,18 @@ try {
1041
1056
 
1042
1057
  export const getObservables = <T = any>(
1043
1058
  observable: string,
1059
+ options?: DpOptions,
1044
1060
  ): Set<DataProvider<T>> => {
1045
1061
  if (typeof observable === "function") {
1046
1062
  const func = observable as () => any;
1047
- PublisherManager.collectModifiedPublisher();
1063
+ collectModifiedPublisher();
1048
1064
  func();
1049
- return PublisherManager.getModifiedPublishers() as Set<DataProvider<T>>;
1065
+ return getModifiedPublishers() as Set<DataProvider<T>>;
1050
1066
  }
1051
1067
  if (typeof observable === "string") {
1052
1068
  const split = observable.split(".");
1053
1069
  const dataProvider: string = split.shift() || "";
1054
- let publisher = PublisherManager.get(dataProvider);
1070
+ let publisher = PublisherManager.get(dataProvider, options);
1055
1071
  publisher = Objects.traverse(publisher, split);
1056
1072
  const set = new Set<DataProvider<T>>();
1057
1073
  set.add(publisher as DataProvider<T>);
@@ -1068,9 +1084,14 @@ export function get<T>(id: string | DataProviderKey<T>): T {
1068
1084
  return getObservables<T>(path).values().next().value?.get() as T;
1069
1085
  }
1070
1086
 
1071
- function deepee<T>(id: string | DataProviderKey<T>, _defaultValue?: T) {
1087
+ function deepee<T>(
1088
+ id: string | DataProviderKey<T>,
1089
+ _defaultValue?: T,
1090
+ options?: DpOptions,
1091
+ ) {
1072
1092
  const path = resolveStaticPublisherPath(id);
1073
- const value = getObservables<T>(path).values().next().value as DataProvider<T>;
1093
+ const value = getObservables<T>(path, options).values().next()
1094
+ .value as DataProvider<T>;
1074
1095
  // if (defaultValue !== undefined && value) {
1075
1096
  // const innerValue = value.get();
1076
1097
  // if (Objects.isEmpty(innerValue as Record<string, any>)) {
@@ -1081,19 +1102,79 @@ function deepee<T>(id: string | DataProviderKey<T>, _defaultValue?: T) {
1081
1102
  return value;
1082
1103
  }
1083
1104
 
1084
- export function dataProvider<T>(id: DataProviderKey<T>, defaultValue?: T): DataProvider<T>;
1085
- export function dataProvider<T = any>(id: string, defaultValue?: T): DataProvider<T>;
1105
+ type MirrorDpSource = DataProvider<any> | string | DataProviderKey<any>;
1106
+
1107
+ function isDataProvider(value: unknown): value is DataProvider<any> {
1108
+ return (
1109
+ value != null &&
1110
+ typeof value === "object" &&
1111
+ typeof (value as DataProvider<any>).get === "function" &&
1112
+ typeof (value as DataProvider<any>).set === "function" &&
1113
+ typeof (value as DataProvider<any>).onAssign === "function"
1114
+ );
1115
+ }
1116
+
1117
+ function resolvePublisherRef(
1118
+ ref: MirrorDpSource,
1119
+ options?: DpOptions,
1120
+ ): DataProvider<any> {
1121
+ if (isDataProvider(ref)) return ref;
1122
+ return deepee(ref, undefined, options);
1123
+ }
1124
+
1125
+ export function dataProvider<T>(
1126
+ id: DataProviderKey<T>,
1127
+ options: DpOptions,
1128
+ ): DataProvider<T>;
1129
+ export function dataProvider<T = any>(id: string, options: DpOptions): DataProvider<T>;
1130
+ export function dataProvider<T>(id: DataProviderKey<T>): DataProvider<T>;
1131
+ export function dataProvider<T = any>(id: string): DataProvider<T>;
1132
+ export function dataProvider<T>(id: DataProviderKey<T>, defaultValue: T): DataProvider<T>;
1133
+ export function dataProvider<T = any>(id: string, defaultValue: T): DataProvider<T>;
1086
1134
  export function dataProvider<T>(
1087
1135
  id: string | DataProviderKey<T>,
1088
- defaultValue?: T,
1136
+ second?: T | DpOptions,
1089
1137
  ): DataProvider<T> {
1090
- return deepee(id, defaultValue);
1138
+ if (isDpOptions(second)) return deepee(id, undefined, second);
1139
+ return deepee(id, second as T | undefined);
1091
1140
  }
1092
1141
 
1093
- export function dp<T>(id: DataProviderKey<T>, defaultValue?: T): DataProvider<T>;
1094
- export function dp<T = any>(id: string, defaultValue?: T): DataProvider<T>;
1095
- export function dp<T>(id: string | DataProviderKey<T>, defaultValue?: T): DataProvider<T> {
1096
- return deepee(id, defaultValue);
1142
+ export function dp<T>(id: DataProviderKey<T>, options: DpOptions): DataProvider<T>;
1143
+ export function dp<T = any>(id: string, options: DpOptions): DataProvider<T>;
1144
+ export function dp<T>(id: DataProviderKey<T>): DataProvider<T>;
1145
+ export function dp<T = any>(id: string): DataProvider<T>;
1146
+ export function dp<T>(id: DataProviderKey<T>, defaultValue: T): DataProvider<T>;
1147
+ export function dp<T = any>(id: string, defaultValue: T): DataProvider<T>;
1148
+ export function dp<T>(
1149
+ id: string | DataProviderKey<T>,
1150
+ second?: T | DpOptions,
1151
+ ): DataProvider<T> {
1152
+ if (isDpOptions(second)) return deepee(id, undefined, second);
1153
+ return deepee(id, second as T | undefined);
1154
+ }
1155
+
1156
+ /**
1157
+ * Alias sémantique pour `PublisherManager.set` : enregistre `aliasKey` sur la même
1158
+ * instance publisher que `source`. Utile pour exposer une clé legacy (`scan`) tout en
1159
+ * stockant l'état sous une racine (`app.scan`) — `dp("scan")` et `appState.scan` partagent
1160
+ * alors la même instance, sans copie à chaque assignation.
1161
+ */
1162
+ export function mirrorDp<T>(
1163
+ aliasKey: string | DataProviderKey<any>,
1164
+ source: DataProvider<T>,
1165
+ ): void;
1166
+ export function mirrorDp(
1167
+ aliasKey: string | DataProviderKey<any>,
1168
+ source: string | DataProviderKey<any>,
1169
+ ): void;
1170
+ export function mirrorDp(
1171
+ aliasKey: string | DataProviderKey<any>,
1172
+ source: DataProvider<any> | string | DataProviderKey<any>,
1173
+ ): void {
1174
+ PublisherManager.getInstance().set(
1175
+ resolveStaticPublisherPath(aliasKey),
1176
+ resolvePublisherRef(source),
1177
+ );
1097
1178
  }
1098
1179
 
1099
1180
  export function set<T>(id: DataProviderKey<T>, value: T): void;
@@ -1103,9 +1184,3 @@ export function set<T>(id: string | DataProviderKey<T>, value: T): void {
1103
1184
  getObservables(path).values().next().value?.set(value);
1104
1185
  }
1105
1186
 
1106
- /**
1107
- * next back handling data invalidation
1108
- */
1109
- window.addEventListener("pageshow", (e) => {
1110
- if (e.persisted) PublisherManager.getInstance().invalidateAll();
1111
- });
@@ -37,8 +37,8 @@ export type APIResponse = {
37
37
  processed: ResultTypeInterface;
38
38
  };
39
39
 
40
- /** Valeur assignée par `@get` : requête native, réponse `fetch` si HTTP, résultat métier typé `T`. */
41
- export type ApiGetResult<T> = {
40
+ /** Valeur assignée par `@get`, `@post`, `@put`, `@patch`. */
41
+ export type ApiResult<T> = {
42
42
  request: Request;
43
43
  /** Absent / `undefined` pour les chemins `dataProvider(...)` (pas d’appel réseau). */
44
44
  response?: Response;
@@ -46,8 +46,11 @@ export type ApiGetResult<T> = {
46
46
  result: T;
47
47
  };
48
48
 
49
+ /** @deprecated Utiliser `ApiResult`. */
50
+ export type ApiGetResult<T> = ApiResult<T>;
51
+
49
52
  /** Extrait le corps typé depuis le résultat traité par `handleResult`. */
50
- export function extractTypedApiResult<T>(
53
+ function extractTypedApiResult<T>(
51
54
  processed: ResultTypeInterface | null | undefined,
52
55
  ): T {
53
56
  if (processed == null || typeof processed !== "object") {
@@ -64,7 +67,7 @@ class API {
64
67
  /**
65
68
  * Ce tableau static permet de ne pas appeler plusieurs fois le même service lors d'appel concurrents en GET.
66
69
  */
67
- static loadingGetPromises: Map<string, Promise<unknown>> = new Map();
70
+ private static loadingGetPromises: Map<string, Promise<unknown>> = new Map();
68
71
  /**
69
72
  * L'url de base du service sans endpoint
70
73
  */
@@ -120,14 +123,14 @@ class API {
120
123
  /**
121
124
  * Tableau static des tokens stokés en memoire vive (comportement à revoir à l'occasion)
122
125
  */
123
- static tokens = new Map<string | null, string | null | undefined>();
126
+ private static tokens = new Map<string | null, string | null | undefined>();
124
127
 
125
128
  /**
126
129
  * Tableau stockant l'ensemble des tokens invalides
127
130
  */
128
- static invalidTokens: (string | null | undefined)[] = [];
131
+ private static invalidTokens: (string | null | undefined)[] = [];
129
132
 
130
- handleInvalidToken(token: string | null | undefined) {
133
+ private handleInvalidToken(token: string | null | undefined) {
131
134
  if (!token) return;
132
135
 
133
136
  if (API.invalidTokens.includes(token)) return;
@@ -139,11 +142,11 @@ class API {
139
142
  /**
140
143
  * Tableau static des tentatives échouées de récupération auto du token
141
144
  */
142
- static failledTokenUpdates = new Map<string | null, true>();
145
+ private static failledTokenUpdates = new Map<string | null, true>();
143
146
  /**
144
147
  * Tableau static des flags pour savoir si le premier appel a été fait pour chaque serviceURL
145
148
  */
146
- static firstCallDoneFlags = new Map<string | null, CallState>();
149
+ private static firstCallDoneFlags = new Map<string | null, CallState>();
147
150
 
148
151
  /**
149
152
  * Le endPoint pour obtenir le bearer token qui sera concaténé à l'url du service
@@ -171,7 +174,7 @@ class API {
171
174
  this.cache = config.cache || "default";
172
175
  this.keepAlive = config.keepAlive || false;
173
176
  }
174
- async handleResult(
177
+ private async handleResult(
175
178
  fetchResult: Response,
176
179
  lastCall: APICall,
177
180
  ): Promise<ResultTypeInterface> {
@@ -228,7 +231,7 @@ class API {
228
231
  /**
229
232
  * Basic auth
230
233
  */
231
- async auth() {
234
+ private async auth() {
232
235
  if (this.token) return;
233
236
  if (API.tokens.has(this.serviceURL)) {
234
237
  this.token = API.tokens.get(this.serviceURL);
@@ -359,7 +362,7 @@ class API {
359
362
  /**
360
363
  * firstCallDone is a function that returns a promise that is resolved when the first call to the API is done for each serviceURL whatever api instance is used
361
364
  */
362
- firstCallDone() {
365
+ private firstCallDone() {
363
366
  return new Promise((resolve) => {
364
367
  if (!API.firstCallDoneFlags.has(this.serviceURL)) {
365
368
  API.firstCallDoneFlags.set(this.serviceURL, "loading");
@@ -434,7 +437,7 @@ class API {
434
437
  async getDetailed<T>(
435
438
  path: string,
436
439
  additionalHeaders?: HeadersInit,
437
- ): Promise<ApiGetResult<T> | undefined> {
440
+ ): Promise<ApiResult<T> | undefined> {
438
441
  const isDataProvider = /dataProvider\((.*?)\)(.*?)$/.test(path);
439
442
 
440
443
  const processed = await this.get<T>(path, additionalHeaders);
@@ -468,6 +471,72 @@ class API {
468
471
  };
469
472
  }
470
473
 
474
+ /**
475
+ * S’appuie sur `post()` puis reformate la réponse : `Request` avec body JSON,
476
+ * `Response` via `lastResult`, `result` typé `T`.
477
+ */
478
+ async sendDetailed<T, B>(
479
+ path: string,
480
+ body: B,
481
+ method: "POST" | "PUT" | "PATCH",
482
+ additionalHeaders?: HeadersInit,
483
+ ): Promise<ApiResult<T> | undefined> {
484
+ const processed = await this.send<T, B>(
485
+ path,
486
+ body,
487
+ method,
488
+ additionalHeaders,
489
+ );
490
+ if (processed == null) {
491
+ return undefined;
492
+ }
493
+
494
+ const result = extractTypedApiResult<T>(processed as ResultTypeInterface);
495
+ const url = this.computeURL(path);
496
+ const headers = await this.createHeaders({
497
+ Accept: "application/json",
498
+ "Content-Type": "application/json",
499
+ ...(additionalHeaders as Record<string, string> | undefined),
500
+ });
501
+ const request = new Request(url, {
502
+ method,
503
+ headers: new Headers(headers as HeadersInit),
504
+ credentials: this.credentials,
505
+ body: JSON.stringify(body),
506
+ keepalive: this.keepAlive,
507
+ });
508
+
509
+ return {
510
+ request,
511
+ response: this.lastResult,
512
+ result,
513
+ };
514
+ }
515
+
516
+ async postDetailed<T, B>(
517
+ path: string,
518
+ body: B,
519
+ additionalHeaders?: HeadersInit,
520
+ ): Promise<ApiResult<T> | undefined> {
521
+ return this.sendDetailed<T, B>(path, body, "POST", additionalHeaders);
522
+ }
523
+
524
+ async putDetailed<T, B>(
525
+ path: string,
526
+ body: B,
527
+ additionalHeaders?: HeadersInit,
528
+ ): Promise<ApiResult<T> | undefined> {
529
+ return this.sendDetailed<T, B>(path, body, "PUT", additionalHeaders);
530
+ }
531
+
532
+ async patchDetailed<T, B>(
533
+ path: string,
534
+ body: B,
535
+ additionalHeaders?: HeadersInit,
536
+ ): Promise<ApiResult<T> | undefined> {
537
+ return this.sendDetailed<T, B>(path, body, "PATCH", additionalHeaders);
538
+ }
539
+
471
540
  /**
472
541
  * Création du header, avec authentification si besoin
473
542
  * ajout du language via le header accept-language qui contient le langue du navigateur