intelicoreact 2.0.18 → 2.0.19

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 (730) hide show
  1. package/dist/es/Atomic/FormElements/ActionAlert/ActionAlert.js +44 -0
  2. package/dist/es/Atomic/FormElements/ActionAlert/ActionAlert.js.map +1 -0
  3. package/dist/es/Atomic/FormElements/ActionAlert/ActionAlert.styles.css +39 -0
  4. package/dist/es/Atomic/FormElements/ActionAlert/index.js +7 -0
  5. package/dist/es/Atomic/FormElements/ActionAlert/index.js.map +1 -0
  6. package/dist/es/Atomic/FormElements/AdvancedStatus/AdvancedStatus.js +35 -0
  7. package/dist/es/Atomic/FormElements/AdvancedStatus/AdvancedStatus.js.map +1 -0
  8. package/dist/es/Atomic/FormElements/AdvancedStatus/AdvancedStatus.styles.css +84 -0
  9. package/dist/es/Atomic/FormElements/AdvancedStatus/index.js +7 -0
  10. package/dist/es/Atomic/FormElements/AdvancedStatus/index.js.map +1 -0
  11. package/dist/es/Atomic/FormElements/Calendar/Calendar.js +154 -0
  12. package/dist/es/Atomic/FormElements/Calendar/Calendar.js.map +1 -0
  13. package/dist/es/Atomic/FormElements/Calendar/Calendar.styles.css +142 -0
  14. package/dist/es/Atomic/FormElements/CheckboxInput/CheckboxInput.js +45 -0
  15. package/dist/es/Atomic/FormElements/CheckboxInput/CheckboxInput.js.map +1 -0
  16. package/dist/es/Atomic/FormElements/CheckboxInput/CheckboxInput.styles.css +105 -0
  17. package/dist/es/Atomic/FormElements/CheckboxInput/index.js +7 -0
  18. package/dist/es/Atomic/FormElements/CheckboxInput/index.js.map +1 -0
  19. package/dist/es/Atomic/FormElements/CheckboxesLine/CheckboxesLine.js +32 -0
  20. package/dist/es/Atomic/FormElements/CheckboxesLine/CheckboxesLine.js.map +1 -0
  21. package/dist/es/Atomic/FormElements/CheckboxesLine/CheckboxesLine.styles.css +26 -0
  22. package/dist/es/Atomic/FormElements/CheckboxesLine/index.js +7 -0
  23. package/dist/es/Atomic/FormElements/CheckboxesLine/index.js.map +1 -0
  24. package/dist/es/Atomic/FormElements/Datepicker/Datepicker.js +307 -0
  25. package/dist/es/Atomic/FormElements/Datepicker/Datepicker.js.map +1 -0
  26. package/dist/es/Atomic/FormElements/Datepicker/components/DatepickerCalendar.js +95 -0
  27. package/dist/es/Atomic/FormElements/Datepicker/components/DatepickerCalendar.js.map +1 -0
  28. package/dist/es/Atomic/FormElements/Dropdown/Dropdown.js +472 -0
  29. package/dist/es/Atomic/FormElements/Dropdown/Dropdown.js.map +1 -0
  30. package/dist/es/Atomic/FormElements/Dropdown/Dropdown.styles.css +529 -0
  31. package/dist/es/Atomic/FormElements/Dropdown/_utils.js +68 -0
  32. package/dist/es/Atomic/FormElements/Dropdown/_utils.js.map +1 -0
  33. package/dist/es/Atomic/FormElements/Dropdown/components/DropdownLoader.js +23 -0
  34. package/dist/es/Atomic/FormElements/Dropdown/components/DropdownLoader.js.map +1 -0
  35. package/dist/es/Atomic/FormElements/Dropdown/components/DropdownLoader.styles.css +61 -0
  36. package/dist/es/Atomic/FormElements/Dropdown/index.js +7 -0
  37. package/dist/es/Atomic/FormElements/Dropdown/index.js.map +1 -0
  38. package/dist/es/Atomic/FormElements/Dropdown/useDropdown.js +118 -0
  39. package/dist/es/Atomic/FormElements/Dropdown/useDropdown.js.map +1 -0
  40. package/dist/es/Atomic/FormElements/DropdownLiveSearch/DropdownLiveSearch.js +373 -0
  41. package/dist/es/Atomic/FormElements/DropdownLiveSearch/DropdownLiveSearch.js.map +1 -0
  42. package/dist/es/Atomic/FormElements/DropdownLiveSearch/DropdownLiveSearch.styles.css +411 -0
  43. package/dist/es/Atomic/FormElements/FileLoader/FileLoader.js +55 -0
  44. package/dist/es/Atomic/FormElements/FileLoader/FileLoader.js.map +1 -0
  45. package/dist/es/Atomic/FormElements/FileLoader/FileLoader.styles.css +127 -0
  46. package/dist/es/Atomic/FormElements/FileLoader/partial/LoadZone.js +86 -0
  47. package/dist/es/Atomic/FormElements/FileLoader/partial/LoadZone.js.map +1 -0
  48. package/dist/es/Atomic/FormElements/FileLoader/partial/LoadedContent.js +52 -0
  49. package/dist/es/Atomic/FormElements/FileLoader/partial/LoadedContent.js.map +1 -0
  50. package/dist/es/Atomic/FormElements/FileLoaderDescription/FileLoaderDescription.js +174 -0
  51. package/dist/es/Atomic/FormElements/FileLoaderDescription/FileLoaderDescription.js.map +1 -0
  52. package/dist/es/Atomic/FormElements/FileLoaderDescription/FileLoaderDescription.styles.css +88 -0
  53. package/dist/es/Atomic/FormElements/FileLoaderLocal/FileLoaderLocal.js +137 -0
  54. package/dist/es/Atomic/FormElements/FileLoaderLocal/FileLoaderLocal.js.map +1 -0
  55. package/dist/es/Atomic/FormElements/FileLoaderLocal/FileLoaderLocal.styles.css +101 -0
  56. package/dist/es/Atomic/FormElements/FileLoaderLocalGroup/FileLoaderLocalGroup.js +150 -0
  57. package/dist/es/Atomic/FormElements/FileLoaderLocalGroup/FileLoaderLocalGroup.js.map +1 -0
  58. package/dist/es/Atomic/FormElements/FileLoaderLocalGroup/FileLoaderLocalGroup.styles.css +14 -0
  59. package/dist/es/Atomic/FormElements/FormattedRawSSN/FormattedRawSSN.js +75 -0
  60. package/dist/es/Atomic/FormElements/FormattedRawSSN/FormattedRawSSN.js.map +1 -0
  61. package/dist/es/Atomic/FormElements/FormattedRawSSN/FormattedRawSSN.styles.css +54 -0
  62. package/dist/es/Atomic/FormElements/FormattedRawSSN/index.js +7 -0
  63. package/dist/es/Atomic/FormElements/FormattedRawSSN/index.js.map +1 -0
  64. package/dist/es/Atomic/FormElements/Input/Input.js +119 -0
  65. package/dist/es/Atomic/FormElements/Input/Input.js.map +1 -0
  66. package/dist/es/Atomic/FormElements/Input/Input.styles.css +125 -0
  67. package/dist/es/Atomic/FormElements/Input/hooks/useErrorBlink.js +57 -0
  68. package/dist/es/Atomic/FormElements/Input/hooks/useErrorBlink.js.map +1 -0
  69. package/dist/es/Atomic/FormElements/Input/hooks/useInputFocus.js +34 -0
  70. package/dist/es/Atomic/FormElements/Input/hooks/useInputFocus.js.map +1 -0
  71. package/dist/es/Atomic/FormElements/Input/hooks/useInputHover.js +16 -0
  72. package/dist/es/Atomic/FormElements/Input/hooks/useInputHover.js.map +1 -0
  73. package/dist/es/Atomic/FormElements/Input/hooks/useInputValueProcessing.js +126 -0
  74. package/dist/es/Atomic/FormElements/Input/hooks/useInputValueProcessing.js.map +1 -0
  75. package/dist/es/Atomic/FormElements/Input/hooks/useKeyboardHandling.js +32 -0
  76. package/dist/es/Atomic/FormElements/Input/hooks/useKeyboardHandling.js.map +1 -0
  77. package/dist/es/Atomic/FormElements/Input/index.js +7 -0
  78. package/dist/es/Atomic/FormElements/Input/index.js.map +1 -0
  79. package/dist/es/Atomic/FormElements/InputCalendar/InputCalendar.js +89 -0
  80. package/dist/es/Atomic/FormElements/InputCalendar/InputCalendar.js.map +1 -0
  81. package/dist/es/Atomic/FormElements/InputCalendar/InputCalendar.styles.css +20 -0
  82. package/dist/es/Atomic/FormElements/InputColor/InputColor.js +52 -0
  83. package/dist/es/Atomic/FormElements/InputColor/InputColor.js.map +1 -0
  84. package/dist/es/Atomic/FormElements/InputColor/InputColor.styles.css +17 -0
  85. package/dist/es/Atomic/FormElements/InputColor/index.js +7 -0
  86. package/dist/es/Atomic/FormElements/InputColor/index.js.map +1 -0
  87. package/dist/es/Atomic/FormElements/InputCurrency/InputCurrency.js +133 -0
  88. package/dist/es/Atomic/FormElements/InputCurrency/InputCurrency.js.map +1 -0
  89. package/dist/es/Atomic/FormElements/InputCurrency/InputCurrency.styles.css +13 -0
  90. package/dist/es/Atomic/FormElements/InputDateRange/InputDateRange.js +215 -0
  91. package/dist/es/Atomic/FormElements/InputDateRange/InputDateRange.js.map +1 -0
  92. package/dist/es/Atomic/FormElements/InputDateRange/InputDateRange.styles.css +594 -0
  93. package/dist/es/Atomic/FormElements/InputDateRange/components/DateInput.js +45 -0
  94. package/dist/es/Atomic/FormElements/InputDateRange/components/DateInput.js.map +1 -0
  95. package/dist/es/Atomic/FormElements/InputDateRange/components/Datepicker.js +422 -0
  96. package/dist/es/Atomic/FormElements/InputDateRange/components/Datepicker.js.map +1 -0
  97. package/dist/es/Atomic/FormElements/InputDateRange/components/OpenedPart.js +171 -0
  98. package/dist/es/Atomic/FormElements/InputDateRange/components/OpenedPart.js.map +1 -0
  99. package/dist/es/Atomic/FormElements/InputDateRange/components/SelectItem.js +22 -0
  100. package/dist/es/Atomic/FormElements/InputDateRange/components/SelectItem.js.map +1 -0
  101. package/dist/es/Atomic/FormElements/InputDateRange/dependencies.js +166 -0
  102. package/dist/es/Atomic/FormElements/InputDateRange/dependencies.js.map +1 -0
  103. package/dist/es/Atomic/FormElements/InputLink/InputLink.js +64 -0
  104. package/dist/es/Atomic/FormElements/InputLink/InputLink.js.map +1 -0
  105. package/dist/es/Atomic/FormElements/InputLink/InputLink.styles.css +46 -0
  106. package/dist/es/Atomic/FormElements/InputLink/index.js +7 -0
  107. package/dist/es/Atomic/FormElements/InputLink/index.js.map +1 -0
  108. package/dist/es/Atomic/FormElements/InputMask/InputMask.js +7 -0
  109. package/dist/es/Atomic/FormElements/InputMask/InputMask.js.map +1 -0
  110. package/dist/es/Atomic/FormElements/InputMask3/InputMask3.js +486 -0
  111. package/dist/es/Atomic/FormElements/InputMask3/InputMask3.js.map +1 -0
  112. package/dist/es/Atomic/FormElements/InputMask3/InputMask3.styles.css +133 -0
  113. package/dist/es/Atomic/FormElements/InputMask3/config.js +18 -0
  114. package/dist/es/Atomic/FormElements/InputMask3/config.js.map +1 -0
  115. package/dist/es/Atomic/FormElements/InputMask3/functions.js +43 -0
  116. package/dist/es/Atomic/FormElements/InputMask3/functions.js.map +1 -0
  117. package/dist/es/Atomic/FormElements/InputWithAction/InputWithAction.js +74 -0
  118. package/dist/es/Atomic/FormElements/InputWithAction/InputWithAction.js.map +1 -0
  119. package/dist/es/Atomic/FormElements/InputWithAction/InputWithAction.styles.css +88 -0
  120. package/dist/es/Atomic/FormElements/InputWithAction/index.js +7 -0
  121. package/dist/es/Atomic/FormElements/InputWithAction/index.js.map +1 -0
  122. package/dist/es/Atomic/FormElements/InputsRow/InputsRow.js +118 -0
  123. package/dist/es/Atomic/FormElements/InputsRow/InputsRow.js.map +1 -0
  124. package/dist/es/Atomic/FormElements/InputsRow/InputsRow.styles.css +32 -0
  125. package/dist/es/Atomic/FormElements/InputsRow/index.js +7 -0
  126. package/dist/es/Atomic/FormElements/InputsRow/index.js.map +1 -0
  127. package/dist/es/Atomic/FormElements/Label/Label.js +73 -0
  128. package/dist/es/Atomic/FormElements/Label/Label.js.map +1 -0
  129. package/dist/es/Atomic/FormElements/Label/Label.styles.css +30 -0
  130. package/dist/es/Atomic/FormElements/Label/index.js +7 -0
  131. package/dist/es/Atomic/FormElements/Label/index.js.map +1 -0
  132. package/dist/es/Atomic/FormElements/MobileCalendar/MobileCalendar.js +339 -0
  133. package/dist/es/Atomic/FormElements/MobileCalendar/MobileCalendar.js.map +1 -0
  134. package/dist/es/Atomic/FormElements/MobileCalendar/MobileCalendar.styles.css +74 -0
  135. package/dist/es/Atomic/FormElements/MultiSelect/MultiSelect.js +40 -0
  136. package/dist/es/Atomic/FormElements/MultiSelect/MultiSelect.js.map +1 -0
  137. package/dist/es/Atomic/FormElements/MultiSelect/MultiSelect.styles.css +14 -0
  138. package/dist/es/Atomic/FormElements/NumericInput/NumericInput.js +204 -0
  139. package/dist/es/Atomic/FormElements/NumericInput/NumericInput.js.map +1 -0
  140. package/dist/es/Atomic/FormElements/NumericInput/NumericInput.styles.css +129 -0
  141. package/dist/es/Atomic/FormElements/RadioGroup/RadioGroup.js +44 -0
  142. package/dist/es/Atomic/FormElements/RadioGroup/RadioGroup.js.map +1 -0
  143. package/dist/es/Atomic/FormElements/RadioGroup/RadioGroup.styles.css +20 -0
  144. package/dist/es/Atomic/FormElements/RadioGroupWithInput/RadioGroupWithInput.js +57 -0
  145. package/dist/es/Atomic/FormElements/RadioGroupWithInput/RadioGroupWithInput.js.map +1 -0
  146. package/dist/es/Atomic/FormElements/RadioGroupWithInput/RadioGroupWithInput.styles.css +23 -0
  147. package/dist/es/Atomic/FormElements/RadioInput/RadioInput.js +35 -0
  148. package/dist/es/Atomic/FormElements/RadioInput/RadioInput.js.map +1 -0
  149. package/dist/es/Atomic/FormElements/RadioInput/RadioInput.styles.css +70 -0
  150. package/dist/es/Atomic/FormElements/RadioInput/index.js +7 -0
  151. package/dist/es/Atomic/FormElements/RadioInput/index.js.map +1 -0
  152. package/dist/es/Atomic/FormElements/RadioRowSwitcher/RadioRowSwitcher.js +42 -0
  153. package/dist/es/Atomic/FormElements/RadioRowSwitcher/RadioRowSwitcher.js.map +1 -0
  154. package/dist/es/Atomic/FormElements/RadioRowSwitcher/RadioRowSwitcher.styles.css +123 -0
  155. package/dist/es/Atomic/FormElements/RangeCalendar/RangeCalendar.js +98 -0
  156. package/dist/es/Atomic/FormElements/RangeCalendar/RangeCalendar.js.map +1 -0
  157. package/dist/es/Atomic/FormElements/RangeCalendar/RangeCalendar.styles.css +103 -0
  158. package/dist/es/Atomic/FormElements/RangeInputs/RangeInputs.js +128 -0
  159. package/dist/es/Atomic/FormElements/RangeInputs/RangeInputs.js.map +1 -0
  160. package/dist/es/Atomic/FormElements/RangeInputs/RangeInputs.styles.css +50 -0
  161. package/dist/es/Atomic/FormElements/RangeInputs/index.js +7 -0
  162. package/dist/es/Atomic/FormElements/RangeInputs/index.js.map +1 -0
  163. package/dist/es/Atomic/FormElements/RangeList/RangeList.js +147 -0
  164. package/dist/es/Atomic/FormElements/RangeList/RangeList.js.map +1 -0
  165. package/dist/es/Atomic/FormElements/RangeList/RangeList.styles.css +143 -0
  166. package/dist/es/Atomic/FormElements/RangeList/index.js +7 -0
  167. package/dist/es/Atomic/FormElements/RangeList/index.js.map +1 -0
  168. package/dist/es/Atomic/FormElements/RangeList/partial/RangeListRow.js +40 -0
  169. package/dist/es/Atomic/FormElements/RangeList/partial/RangeListRow.js.map +1 -0
  170. package/dist/es/Atomic/FormElements/RangeSlider/RangeSlider.js +342 -0
  171. package/dist/es/Atomic/FormElements/RangeSlider/RangeSlider.js.map +1 -0
  172. package/dist/es/Atomic/FormElements/RangeSlider/RangeSlider.styles.css +134 -0
  173. package/dist/es/Atomic/FormElements/RangeSlider2/RangeSlider2.interface.js +23 -0
  174. package/dist/es/Atomic/FormElements/RangeSlider2/RangeSlider2.interface.js.map +1 -0
  175. package/dist/es/Atomic/FormElements/RangeSlider2/RangeSlider2.js +590 -0
  176. package/dist/es/Atomic/FormElements/RangeSlider2/RangeSlider2.js.map +1 -0
  177. package/dist/es/Atomic/FormElements/RangeSlider2/RangeSlider2.styles.css +360 -0
  178. package/dist/es/Atomic/FormElements/SwitchableRow/SwitchableRow.js +29 -0
  179. package/dist/es/Atomic/FormElements/SwitchableRow/SwitchableRow.js.map +1 -0
  180. package/dist/es/Atomic/FormElements/SwitchableRow/SwitchableRow.styles.css +14 -0
  181. package/dist/es/Atomic/FormElements/Switcher/Switcher.js +36 -0
  182. package/dist/es/Atomic/FormElements/Switcher/Switcher.js.map +1 -0
  183. package/dist/es/Atomic/FormElements/Switcher/Switcher.styles.css +83 -0
  184. package/dist/es/Atomic/FormElements/Switcher/index.js +7 -0
  185. package/dist/es/Atomic/FormElements/Switcher/index.js.map +1 -0
  186. package/dist/es/Atomic/FormElements/SwitcherCheckbox/SwitcherCheckbox.js +36 -0
  187. package/dist/es/Atomic/FormElements/SwitcherCheckbox/SwitcherCheckbox.js.map +1 -0
  188. package/dist/es/Atomic/FormElements/SwitcherCheckbox/SwitcherCheckbox.styles.css +21 -0
  189. package/dist/es/Atomic/FormElements/SwitcherHide/SwitcherHide.js +31 -0
  190. package/dist/es/Atomic/FormElements/SwitcherHide/SwitcherHide.js.map +1 -0
  191. package/dist/es/Atomic/FormElements/SwitcherHide/index.js +7 -0
  192. package/dist/es/Atomic/FormElements/SwitcherHide/index.js.map +1 -0
  193. package/dist/es/Atomic/FormElements/SwitcherRadio/SwitcherRadio.js +43 -0
  194. package/dist/es/Atomic/FormElements/SwitcherRadio/SwitcherRadio.js.map +1 -0
  195. package/dist/es/Atomic/FormElements/SwitcherRadio/SwitcherRadio.styles.css +22 -0
  196. package/dist/es/Atomic/FormElements/SwitcherRadio/index.js +7 -0
  197. package/dist/es/Atomic/FormElements/SwitcherRadio/index.js.map +1 -0
  198. package/dist/es/Atomic/FormElements/SwitcherRange/SwitcherRange.js +33 -0
  199. package/dist/es/Atomic/FormElements/SwitcherRange/SwitcherRange.js.map +1 -0
  200. package/dist/es/Atomic/FormElements/SwitcherRange/index.js +7 -0
  201. package/dist/es/Atomic/FormElements/SwitcherRange/index.js.map +1 -0
  202. package/dist/es/Atomic/FormElements/SwitcherRangeList/SwitcherRangeList.js +56 -0
  203. package/dist/es/Atomic/FormElements/SwitcherRangeList/SwitcherRangeList.js.map +1 -0
  204. package/dist/es/Atomic/FormElements/SwitcherRangeList/SwitcherRangeList.styles.css +0 -0
  205. package/dist/es/Atomic/FormElements/SwitcherTagsDropdown/SwitcherTagsDropdown.js +99 -0
  206. package/dist/es/Atomic/FormElements/SwitcherTagsDropdown/SwitcherTagsDropdown.js.map +1 -0
  207. package/dist/es/Atomic/FormElements/SwitcherTagsDropdown/SwitcherTagsDropdown.styles.css +55 -0
  208. package/dist/es/Atomic/FormElements/SwitcherTextarea/SwitcherTextarea.js +49 -0
  209. package/dist/es/Atomic/FormElements/SwitcherTextarea/SwitcherTextarea.js.map +1 -0
  210. package/dist/es/Atomic/FormElements/SwitcherTextarea/SwitcherTextarea.styles.css +38 -0
  211. package/dist/es/Atomic/FormElements/TagListToDropdown/TagListToDropdown.js +82 -0
  212. package/dist/es/Atomic/FormElements/TagListToDropdown/TagListToDropdown.js.map +1 -0
  213. package/dist/es/Atomic/FormElements/TagsDropdown/TagsDropdown.js +800 -0
  214. package/dist/es/Atomic/FormElements/TagsDropdown/TagsDropdown.js.map +1 -0
  215. package/dist/es/Atomic/FormElements/TagsDropdown/TagsDropdown.styles.css +707 -0
  216. package/dist/es/Atomic/FormElements/Text/Text.js +67 -0
  217. package/dist/es/Atomic/FormElements/Text/Text.js.map +1 -0
  218. package/dist/es/Atomic/FormElements/Text/Text.styles.css +12 -0
  219. package/dist/es/Atomic/FormElements/Text/index.js +7 -0
  220. package/dist/es/Atomic/FormElements/Text/index.js.map +1 -0
  221. package/dist/es/Atomic/FormElements/TextSwitcher/TextSwitcher.js +35 -0
  222. package/dist/es/Atomic/FormElements/TextSwitcher/TextSwitcher.js.map +1 -0
  223. package/dist/es/Atomic/FormElements/TextSwitcher/TextSwitcher.styles.css +84 -0
  224. package/dist/es/Atomic/FormElements/Textarea/Textarea.js +73 -0
  225. package/dist/es/Atomic/FormElements/Textarea/Textarea.js.map +1 -0
  226. package/dist/es/Atomic/FormElements/Textarea/Textarea.styles.css +102 -0
  227. package/dist/es/Atomic/FormElements/TieredCheckboxes/TieredCheckboxes.js +124 -0
  228. package/dist/es/Atomic/FormElements/TieredCheckboxes/TieredCheckboxes.js.map +1 -0
  229. package/dist/es/Atomic/FormElements/TieredCheckboxes/TieredCheckboxes.styles.css +46 -0
  230. package/dist/es/Atomic/FormElements/TieredCheckboxes/index.js +7 -0
  231. package/dist/es/Atomic/FormElements/TieredCheckboxes/index.js.map +1 -0
  232. package/dist/es/Atomic/FormElements/TieredCheckboxes/partial/AccordionWithCheckbox.js +36 -0
  233. package/dist/es/Atomic/FormElements/TieredCheckboxes/partial/AccordionWithCheckbox.js.map +1 -0
  234. package/dist/es/Atomic/FormElements/TimeRange/TimeRange.js +55 -0
  235. package/dist/es/Atomic/FormElements/TimeRange/TimeRange.js.map +1 -0
  236. package/dist/es/Atomic/FormElements/TimeRange/TimeRange.styles.css +18 -0
  237. package/dist/es/Atomic/FormElements/TimeRange/index.js +7 -0
  238. package/dist/es/Atomic/FormElements/TimeRange/index.js.map +1 -0
  239. package/dist/es/Atomic/FormElements/UserContacts/UserContacts.js +115 -0
  240. package/dist/es/Atomic/FormElements/UserContacts/UserContacts.js.map +1 -0
  241. package/dist/es/Atomic/FormElements/UserContacts/UserContacts.styles.css +15 -0
  242. package/dist/es/Atomic/FormElements/UserContacts/index.js +7 -0
  243. package/dist/es/Atomic/FormElements/UserContacts/index.js.map +1 -0
  244. package/dist/es/Atomic/FormElements/VariantsListRadio/VariantsListRadio.js +52 -0
  245. package/dist/es/Atomic/FormElements/VariantsListRadio/VariantsListRadio.js.map +1 -0
  246. package/dist/es/Atomic/FormElements/VariantsListRadio/VariantsListRadio.styles.css +213 -0
  247. package/dist/es/Atomic/FormElements/VariantsListRadio/partials/VariantsListRadioItem.js +61 -0
  248. package/dist/es/Atomic/FormElements/VariantsListRadio/partials/VariantsListRadioItem.js.map +1 -0
  249. package/dist/es/Atomic/FormElements/WidgetPseudoTable/WidgetPseudoTable.js +62 -0
  250. package/dist/es/Atomic/FormElements/WidgetPseudoTable/WidgetPseudoTable.js.map +1 -0
  251. package/dist/es/Atomic/FormElements/WidgetPseudoTable/WidgetPseudoTable.styles.css +70 -0
  252. package/dist/es/Atomic/FormElements/WidgetWithSwitchableRows/WidgetWithSwitchableRows.js +82 -0
  253. package/dist/es/Atomic/FormElements/WidgetWithSwitchableRows/WidgetWithSwitchableRows.js.map +1 -0
  254. package/dist/es/Atomic/FormElements/WidgetWithSwitchableRows/WidgetWithSwitchableRows.styles.css +70 -0
  255. package/dist/es/Atomic/Layout/Header/Header.js +87 -0
  256. package/dist/es/Atomic/Layout/Header/Header.js.map +1 -0
  257. package/dist/es/Atomic/Layout/Header/Header.styles.css +82 -0
  258. package/dist/es/Atomic/Layout/MainMenu/MainMenu.js +134 -0
  259. package/dist/es/Atomic/Layout/MainMenu/MainMenu.js.map +1 -0
  260. package/dist/es/Atomic/Layout/MainMenu/MainMenu.styles.css +205 -0
  261. package/dist/es/Atomic/Layout/Spinner/Spinner.js +32 -0
  262. package/dist/es/Atomic/Layout/Spinner/Spinner.js.map +1 -0
  263. package/dist/es/Atomic/Layout/Spinner/Spinner.styles.css +82 -0
  264. package/dist/es/Atomic/Layout/Spinner/index.js +7 -0
  265. package/dist/es/Atomic/Layout/Spinner/index.js.map +1 -0
  266. package/dist/es/Atomic/UI/Accordion/Accordion.js +48 -0
  267. package/dist/es/Atomic/UI/Accordion/Accordion.js.map +1 -0
  268. package/dist/es/Atomic/UI/Accordion/Accordion.styles.css +133 -0
  269. package/dist/es/Atomic/UI/Accordion/AccordionItem.js +110 -0
  270. package/dist/es/Atomic/UI/Accordion/AccordionItem.js.map +1 -0
  271. package/dist/es/Atomic/UI/Accordion/index.js +7 -0
  272. package/dist/es/Atomic/UI/Accordion/index.js.map +1 -0
  273. package/dist/es/Atomic/UI/AccordionTable/AccordionTable.js +167 -0
  274. package/dist/es/Atomic/UI/AccordionTable/AccordionTable.js.map +1 -0
  275. package/dist/es/Atomic/UI/AccordionTable/AccordionTable.styles.css +228 -0
  276. package/dist/es/Atomic/UI/AccordionText/AccordionText.js +47 -0
  277. package/dist/es/Atomic/UI/AccordionText/AccordionText.js.map +1 -0
  278. package/dist/es/Atomic/UI/AccordionText/AccordionText.styles.css +48 -0
  279. package/dist/es/Atomic/UI/AdvancedTag/AdvTag.js +148 -0
  280. package/dist/es/Atomic/UI/AdvancedTag/AdvTag.js.map +1 -0
  281. package/dist/es/Atomic/UI/AdvancedTag/AdvancedTags.js +40 -0
  282. package/dist/es/Atomic/UI/AdvancedTag/AdvancedTags.js.map +1 -0
  283. package/dist/es/Atomic/UI/AdvancedTag/AdvancedTags.styles.css +106 -0
  284. package/dist/es/Atomic/UI/AdvancedTag/index.js +8 -0
  285. package/dist/es/Atomic/UI/AdvancedTag/index.js.map +1 -0
  286. package/dist/es/Atomic/UI/Alert/Alert.js +54 -0
  287. package/dist/es/Atomic/UI/Alert/Alert.js.map +1 -0
  288. package/dist/es/Atomic/UI/Alert/Alert.styles.css +65 -0
  289. package/dist/es/Atomic/UI/Alert/index.js +7 -0
  290. package/dist/es/Atomic/UI/Alert/index.js.map +1 -0
  291. package/dist/es/Atomic/UI/Arrow/Arrow.js +107 -0
  292. package/dist/es/Atomic/UI/Arrow/Arrow.js.map +1 -0
  293. package/dist/es/Atomic/UI/Arrow/Arrow.styles.css +14 -0
  294. package/dist/es/Atomic/UI/Box/Box.js +33 -0
  295. package/dist/es/Atomic/UI/Box/Box.js.map +1 -0
  296. package/dist/es/Atomic/UI/Box/Box.styles.css +62 -0
  297. package/dist/es/Atomic/UI/Button/Button.js +35 -0
  298. package/dist/es/Atomic/UI/Button/Button.js.map +1 -0
  299. package/dist/es/Atomic/UI/Button/Button.styles.css +124 -0
  300. package/dist/es/Atomic/UI/ButtonsBar/ButtonsBar.js +49 -0
  301. package/dist/es/Atomic/UI/ButtonsBar/ButtonsBar.js.map +1 -0
  302. package/dist/es/Atomic/UI/ButtonsBar/ButtonsBar.styles.css +7 -0
  303. package/dist/es/Atomic/UI/ButtonsBar/index.js +7 -0
  304. package/dist/es/Atomic/UI/ButtonsBar/index.js.map +1 -0
  305. package/dist/es/Atomic/UI/Chart/Chart.js +96 -0
  306. package/dist/es/Atomic/UI/Chart/Chart.js.map +1 -0
  307. package/dist/es/Atomic/UI/Chart/Chart.styles.css +45 -0
  308. package/dist/es/Atomic/UI/Chart/index.js +7 -0
  309. package/dist/es/Atomic/UI/Chart/index.js.map +1 -0
  310. package/dist/es/Atomic/UI/Chart/partial/Chart.constants.js +89 -0
  311. package/dist/es/Atomic/UI/Chart/partial/Chart.constants.js.map +1 -0
  312. package/dist/es/Atomic/UI/Chart/partial/ChartTypeSwitcherIcon/ChartTypeSwitcherIcon.js +80 -0
  313. package/dist/es/Atomic/UI/Chart/partial/ChartTypeSwitcherIcon/ChartTypeSwitcherIcon.js.map +1 -0
  314. package/dist/es/Atomic/UI/Chart/partial/ChartTypeSwitcherIcon/ChartTypeSwitcherIcon.styles.css +16 -0
  315. package/dist/es/Atomic/UI/Chart/partial/datasetSetters.js +78 -0
  316. package/dist/es/Atomic/UI/Chart/partial/datasetSetters.js.map +1 -0
  317. package/dist/es/Atomic/UI/Chart/partial/optionsConstructor.js +259 -0
  318. package/dist/es/Atomic/UI/Chart/partial/optionsConstructor.js.map +1 -0
  319. package/dist/es/Atomic/UI/Chart/partial/optionsSetters.js +35 -0
  320. package/dist/es/Atomic/UI/Chart/partial/optionsSetters.js.map +1 -0
  321. package/dist/es/Atomic/UI/Chart/partial/utils.js +37 -0
  322. package/dist/es/Atomic/UI/Chart/partial/utils.js.map +1 -0
  323. package/dist/es/Atomic/UI/CircleProgressBar/CircleProgressBar.js +85 -0
  324. package/dist/es/Atomic/UI/CircleProgressBar/CircleProgressBar.js.map +1 -0
  325. package/dist/es/Atomic/UI/CircleProgressBar/CircleProgressBar.styles.css +31 -0
  326. package/dist/es/Atomic/UI/DateTime/DateTime.js +45 -0
  327. package/dist/es/Atomic/UI/DateTime/DateTime.js.map +1 -0
  328. package/dist/es/Atomic/UI/DateTime/DateTime.styles.css +33 -0
  329. package/dist/es/Atomic/UI/DebugContainer/DebugContainer.js +45 -0
  330. package/dist/es/Atomic/UI/DebugContainer/DebugContainer.js.map +1 -0
  331. package/dist/es/Atomic/UI/DebugContainer/DebugContainer.styles.css +32 -0
  332. package/dist/es/Atomic/UI/DebugContainer/useDebugContainer.js +16 -0
  333. package/dist/es/Atomic/UI/DebugContainer/useDebugContainer.js.map +1 -0
  334. package/dist/es/Atomic/UI/DoubleString/DoubleString.js +77 -0
  335. package/dist/es/Atomic/UI/DoubleString/DoubleString.js.map +1 -0
  336. package/dist/es/Atomic/UI/DoubleString/DoubleString.styles.css +42 -0
  337. package/dist/es/Atomic/UI/DoubleString/index.js +7 -0
  338. package/dist/es/Atomic/UI/DoubleString/index.js.map +1 -0
  339. package/dist/es/Atomic/UI/Hint/Hint.js +218 -0
  340. package/dist/es/Atomic/UI/Hint/Hint.js.map +1 -0
  341. package/dist/es/Atomic/UI/Hint/Hint.styles.css +107 -0
  342. package/dist/es/Atomic/UI/Hint/index.js +7 -0
  343. package/dist/es/Atomic/UI/Hint/index.js.map +1 -0
  344. package/dist/es/Atomic/UI/Hint/partials/_constants.js +11 -0
  345. package/dist/es/Atomic/UI/Hint/partials/_constants.js.map +1 -0
  346. package/dist/es/Atomic/UI/Hint/partials/_utils.js +35 -0
  347. package/dist/es/Atomic/UI/Hint/partials/_utils.js.map +1 -0
  348. package/dist/es/Atomic/UI/Modal/Modal.js +178 -0
  349. package/dist/es/Atomic/UI/Modal/Modal.js.map +1 -0
  350. package/dist/es/Atomic/UI/Modal/Modal.styles.css +337 -0
  351. package/dist/es/Atomic/UI/Modal/ModalHOC.js +64 -0
  352. package/dist/es/Atomic/UI/Modal/ModalHOC.js.map +1 -0
  353. package/dist/es/Atomic/UI/Modal/ModalMobile.styles.css +60 -0
  354. package/dist/es/Atomic/UI/Modal/index.js +13 -0
  355. package/dist/es/Atomic/UI/Modal/index.js.map +1 -0
  356. package/dist/es/Atomic/UI/Modal/partials/ModalFooter.js +19 -0
  357. package/dist/es/Atomic/UI/Modal/partials/ModalFooter.js.map +1 -0
  358. package/dist/es/Atomic/UI/Modal/partials/ModalTitle.js +43 -0
  359. package/dist/es/Atomic/UI/Modal/partials/ModalTitle.js.map +1 -0
  360. package/dist/es/Atomic/UI/Modal/partials/_constants.js +26 -0
  361. package/dist/es/Atomic/UI/Modal/partials/_constants.js.map +1 -0
  362. package/dist/es/Atomic/UI/Modal/partials/_utils.js +45 -0
  363. package/dist/es/Atomic/UI/Modal/partials/_utils.js.map +1 -0
  364. package/dist/es/Atomic/UI/Modal/partials/useMobileModal.js +141 -0
  365. package/dist/es/Atomic/UI/Modal/partials/useMobileModal.js.map +1 -0
  366. package/dist/es/Atomic/UI/MonoAccordion/MonoAccordion.js +59 -0
  367. package/dist/es/Atomic/UI/MonoAccordion/MonoAccordion.js.map +1 -0
  368. package/dist/es/Atomic/UI/MonoAccordion/MonoAccordion.styles.css +110 -0
  369. package/dist/es/Atomic/UI/MonoAccordion/index.js +7 -0
  370. package/dist/es/Atomic/UI/MonoAccordion/index.js.map +1 -0
  371. package/dist/es/Atomic/UI/NavLine/NavLine.js +209 -0
  372. package/dist/es/Atomic/UI/NavLine/NavLine.js.map +1 -0
  373. package/dist/es/Atomic/UI/NavLine/NavLine.styles.css +187 -0
  374. package/dist/es/Atomic/UI/NavLine/index.js +7 -0
  375. package/dist/es/Atomic/UI/NavLine/index.js.map +1 -0
  376. package/dist/es/Atomic/UI/PageTitle/PageTitle.js +49 -0
  377. package/dist/es/Atomic/UI/PageTitle/PageTitle.js.map +1 -0
  378. package/dist/es/Atomic/UI/PageTitle/PageTitle.styles.css +89 -0
  379. package/dist/es/Atomic/UI/PageTitle/index.js +7 -0
  380. package/dist/es/Atomic/UI/PageTitle/index.js.map +1 -0
  381. package/dist/es/Atomic/UI/PieChart/PieChart.js +41 -0
  382. package/dist/es/Atomic/UI/PieChart/PieChart.js.map +1 -0
  383. package/dist/es/Atomic/UI/PieChart/PieChart.styles.css +44 -0
  384. package/dist/es/Atomic/UI/Price/Price.js +20 -0
  385. package/dist/es/Atomic/UI/Price/Price.js.map +1 -0
  386. package/dist/es/Atomic/UI/Price/index.js +7 -0
  387. package/dist/es/Atomic/UI/Price/index.js.map +1 -0
  388. package/dist/es/Atomic/UI/PriceRange/PriceRange.js +33 -0
  389. package/dist/es/Atomic/UI/PriceRange/PriceRange.js.map +1 -0
  390. package/dist/es/Atomic/UI/PriceRange/index.js +7 -0
  391. package/dist/es/Atomic/UI/PriceRange/index.js.map +1 -0
  392. package/dist/es/Atomic/UI/ProgressLine/ProgressLine.js +74 -0
  393. package/dist/es/Atomic/UI/ProgressLine/ProgressLine.js.map +1 -0
  394. package/dist/es/Atomic/UI/ProgressLine/ProgressLine.styles.css +243 -0
  395. package/dist/es/Atomic/UI/ProgressLine/index.js +7 -0
  396. package/dist/es/Atomic/UI/ProgressLine/index.js.map +1 -0
  397. package/dist/es/Atomic/UI/Status/Status.js +48 -0
  398. package/dist/es/Atomic/UI/Status/Status.js.map +1 -0
  399. package/dist/es/Atomic/UI/Status/Status.styles.css +98 -0
  400. package/dist/es/Atomic/UI/Status/index.js +7 -0
  401. package/dist/es/Atomic/UI/Status/index.js.map +1 -0
  402. package/dist/es/Atomic/UI/Table/Partials/TdCell.js +67 -0
  403. package/dist/es/Atomic/UI/Table/Partials/TdCell.js.map +1 -0
  404. package/dist/es/Atomic/UI/Table/Partials/TdHeader.js +43 -0
  405. package/dist/es/Atomic/UI/Table/Partials/TdHeader.js.map +1 -0
  406. package/dist/es/Atomic/UI/Table/Partials/TdRow.js +56 -0
  407. package/dist/es/Atomic/UI/Table/Partials/TdRow.js.map +1 -0
  408. package/dist/es/Atomic/UI/Table/Table.js +36 -0
  409. package/dist/es/Atomic/UI/Table/Table.js.map +1 -0
  410. package/dist/es/Atomic/UI/Table/Table.styles.css +63 -0
  411. package/dist/es/Atomic/UI/Table/TdTypes/TdActions.js +56 -0
  412. package/dist/es/Atomic/UI/Table/TdTypes/TdActions.js.map +1 -0
  413. package/dist/es/Atomic/UI/Table/TdTypes/TdPriority.js +29 -0
  414. package/dist/es/Atomic/UI/Table/TdTypes/TdPriority.js.map +1 -0
  415. package/dist/es/Atomic/UI/Table/TdTypes/TdRange.js +14 -0
  416. package/dist/es/Atomic/UI/Table/TdTypes/TdRange.js.map +1 -0
  417. package/dist/es/Atomic/UI/Table/TdTypes/TdTypes.styles.css +29 -0
  418. package/dist/es/Atomic/UI/Table/TdTypes/TdWeight.js +43 -0
  419. package/dist/es/Atomic/UI/Table/TdTypes/TdWeight.js.map +1 -0
  420. package/dist/es/Atomic/UI/Tag/Tag.js +110 -0
  421. package/dist/es/Atomic/UI/Tag/Tag.js.map +1 -0
  422. package/dist/es/Atomic/UI/Tag/Tag.styles.css +148 -0
  423. package/dist/es/Atomic/UI/Tag/index.js +7 -0
  424. package/dist/es/Atomic/UI/Tag/index.js.map +1 -0
  425. package/dist/es/Atomic/UI/TagList/TagList.js +152 -0
  426. package/dist/es/Atomic/UI/TagList/TagList.js.map +1 -0
  427. package/dist/es/Atomic/UI/TagList/TagList.styles.css +59 -0
  428. package/dist/es/Atomic/UI/UserBox/UserBox.js +49 -0
  429. package/dist/es/Atomic/UI/UserBox/UserBox.js.map +1 -0
  430. package/dist/es/Atomic/UI/UserBox/UserBox.styles.css +64 -0
  431. package/dist/es/Atomic/UI/UserBox/index.js +7 -0
  432. package/dist/es/Atomic/UI/UserBox/index.js.map +1 -0
  433. package/dist/es/Atomic/UI/WizardStepper/constructor.js +12 -0
  434. package/dist/es/Atomic/UI/WizardStepper/constructor.js.map +1 -0
  435. package/dist/es/Atomic/UI/WizardStepper/index.js +7 -0
  436. package/dist/es/Atomic/UI/WizardStepper/index.js.map +1 -0
  437. package/dist/es/Atomic/UI/WizardStepper/ui/StateIcon/StateIcon.js +52 -0
  438. package/dist/es/Atomic/UI/WizardStepper/ui/StateIcon/StateIcon.js.map +1 -0
  439. package/dist/es/Atomic/UI/WizardStepper/ui/StateIcon/StateIcon.styles.css +23 -0
  440. package/dist/es/Atomic/UI/WizardStepper/ui/StateIcon/index.js +7 -0
  441. package/dist/es/Atomic/UI/WizardStepper/ui/StateIcon/index.js.map +1 -0
  442. package/dist/es/Atomic/UI/WizardStepper/ui/StepRow/StepRow.js +67 -0
  443. package/dist/es/Atomic/UI/WizardStepper/ui/StepRow/StepRow.js.map +1 -0
  444. package/dist/es/Atomic/UI/WizardStepper/ui/StepRow/StepRow.styles.css +60 -0
  445. package/dist/es/Atomic/UI/WizardStepper/ui/StepWrapper/StepWrapper.js +43 -0
  446. package/dist/es/Atomic/UI/WizardStepper/ui/StepWrapper/StepWrapper.js.map +1 -0
  447. package/dist/es/Atomic/UI/WizardStepper/ui/StepWrapper/StepWrapper.styles.css +64 -0
  448. package/dist/es/Atomic/UI/WizardStepper/ui/StepWrapper/index.js +7 -0
  449. package/dist/es/Atomic/UI/WizardStepper/ui/StepWrapper/index.js.map +1 -0
  450. package/dist/es/Atomic/UI/WizardStepper/ui/icons.js +124 -0
  451. package/dist/es/Atomic/UI/WizardStepper/ui/icons.js.map +1 -0
  452. package/dist/es/Atomic/UI/WizardStepper/ui/index.js +7 -0
  453. package/dist/es/Atomic/UI/WizardStepper/ui/index.js.map +1 -0
  454. package/dist/es/Classes/AbortableFetch.js +271 -0
  455. package/dist/es/Classes/AbortableFetch.js.map +1 -0
  456. package/dist/es/Classes/AnimatedHandler.js +27 -0
  457. package/dist/es/Classes/AnimatedHandler.js.map +1 -0
  458. package/dist/es/Classes/RESTAPI/index.js +112 -0
  459. package/dist/es/Classes/RESTAPI/index.js.map +1 -0
  460. package/dist/es/Classes/RESTAPI/partials/AbortableFetch.js +323 -0
  461. package/dist/es/Classes/RESTAPI/partials/AbortableFetch.js.map +1 -0
  462. package/dist/es/Classes/RESTAPI/partials/ApiBase.js +38 -0
  463. package/dist/es/Classes/RESTAPI/partials/ApiBase.js.map +1 -0
  464. package/dist/es/Classes/RESTAPI/partials/ApiRequestCreators.js +151 -0
  465. package/dist/es/Classes/RESTAPI/partials/ApiRequestCreators.js.map +1 -0
  466. package/dist/es/Classes/RESTAPI/partials/ApiUtils.js +142 -0
  467. package/dist/es/Classes/RESTAPI/partials/ApiUtils.js.map +1 -0
  468. package/dist/es/Classes/RESTAPI/partials/CredentialsProcessing.js +212 -0
  469. package/dist/es/Classes/RESTAPI/partials/CredentialsProcessing.js.map +1 -0
  470. package/dist/es/Classes/RESTAPI/partials/Utils.js +70 -0
  471. package/dist/es/Classes/RESTAPI/partials/Utils.js.map +1 -0
  472. package/dist/es/Classes/RESTAPI/partials/_utils.js +144 -0
  473. package/dist/es/Classes/RESTAPI/partials/_utils.js.map +1 -0
  474. package/dist/es/Classes/RESTAPI/partials/sse.js +127 -0
  475. package/dist/es/Classes/RESTAPI/partials/sse.js.map +1 -0
  476. package/dist/es/Constants/index.constants.js +78 -0
  477. package/dist/es/Constants/index.constants.js.map +1 -0
  478. package/dist/es/Functions/Portal.js +21 -0
  479. package/dist/es/Functions/Portal.js.map +1 -0
  480. package/dist/es/Functions/customEventListener.js +67 -0
  481. package/dist/es/Functions/customEventListener.js.map +1 -0
  482. package/dist/es/Functions/dateTime.js +113 -0
  483. package/dist/es/Functions/dateTime.js.map +1 -0
  484. package/dist/es/Functions/fieldValueFormatters.js +193 -0
  485. package/dist/es/Functions/fieldValueFormatters.js.map +1 -0
  486. package/dist/es/Functions/guards/assertions.js +265 -0
  487. package/dist/es/Functions/guards/assertions.js.map +1 -0
  488. package/dist/es/Functions/guards/safeValue.js +66 -0
  489. package/dist/es/Functions/guards/safeValue.js.map +1 -0
  490. package/dist/es/Functions/guards/typeGuards.js +397 -0
  491. package/dist/es/Functions/guards/typeGuards.js.map +1 -0
  492. package/dist/es/Functions/hooks/useFormFieldsChangesManager.js +84 -0
  493. package/dist/es/Functions/hooks/useFormFieldsChangesManager.js.map +1 -0
  494. package/dist/es/Functions/locale/createTranslator.js +23 -0
  495. package/dist/es/Functions/locale/createTranslator.js.map +1 -0
  496. package/dist/es/Functions/operations.js +88 -0
  497. package/dist/es/Functions/operations.js.map +1 -0
  498. package/dist/es/Functions/presets/inputMaskPresets.js +82 -0
  499. package/dist/es/Functions/presets/inputMaskPresets.js.map +1 -0
  500. package/dist/es/Functions/presets/inputPresets.js +50 -0
  501. package/dist/es/Functions/presets/inputPresets.js.map +1 -0
  502. package/dist/es/Functions/presets/mobileKeyboardTypesPresets.js +11 -0
  503. package/dist/es/Functions/presets/mobileKeyboardTypesPresets.js.map +1 -0
  504. package/dist/es/Functions/sdk/runtime-sdk/client.js +161 -0
  505. package/dist/es/Functions/sdk/runtime-sdk/client.js.map +1 -0
  506. package/dist/es/Functions/sdk/runtime-sdk/config.js +77 -0
  507. package/dist/es/Functions/sdk/runtime-sdk/config.js.map +1 -0
  508. package/dist/es/Functions/sdk/runtime-sdk/queue.js +131 -0
  509. package/dist/es/Functions/sdk/runtime-sdk/queue.js.map +1 -0
  510. package/dist/es/Functions/sdk/runtime-sdk/transport.js +114 -0
  511. package/dist/es/Functions/sdk/runtime-sdk/transport.js.map +1 -0
  512. package/dist/es/Functions/useBodyScrollLock.js +15 -0
  513. package/dist/es/Functions/useBodyScrollLock.js.map +1 -0
  514. package/dist/es/Functions/useClickOutside.js +17 -0
  515. package/dist/es/Functions/useClickOutside.js.map +1 -0
  516. package/dist/es/Functions/useDebounce.js +18 -0
  517. package/dist/es/Functions/useDebounce.js.map +1 -0
  518. package/dist/es/Functions/useFieldFocus.js +62 -0
  519. package/dist/es/Functions/useFieldFocus.js.map +1 -0
  520. package/dist/es/Functions/useFormTools/form-drivers/ArrayWithObjects.js +29 -0
  521. package/dist/es/Functions/useFormTools/form-drivers/ArrayWithObjects.js.map +1 -0
  522. package/dist/es/Functions/useFormTools/form-drivers/ObjectWithIterableObjects.js +95 -0
  523. package/dist/es/Functions/useFormTools/form-drivers/ObjectWithIterableObjects.js.map +1 -0
  524. package/dist/es/Functions/useFormTools/form-drivers/ObjectWithNamedKeyObjects.js +49 -0
  525. package/dist/es/Functions/useFormTools/form-drivers/ObjectWithNamedKeyObjects.js.map +1 -0
  526. package/dist/es/Functions/useFormTools/functions/General.js +87 -0
  527. package/dist/es/Functions/useFormTools/functions/General.js.map +1 -0
  528. package/dist/es/Functions/useFormTools/functions/RenderFields.js +70 -0
  529. package/dist/es/Functions/useFormTools/functions/RenderFields.js.map +1 -0
  530. package/dist/es/Functions/useFormTools/index.js +464 -0
  531. package/dist/es/Functions/useFormTools/index.js.map +1 -0
  532. package/dist/es/Functions/useInputHighlightError.js +50 -0
  533. package/dist/es/Functions/useInputHighlightError.js.map +1 -0
  534. package/dist/es/Functions/useIsMobile/index.js +7 -0
  535. package/dist/es/Functions/useIsMobile/index.js.map +1 -0
  536. package/dist/es/Functions/useIsMobile/useIsMobile.js +32 -0
  537. package/dist/es/Functions/useIsMobile/useIsMobile.js.map +1 -0
  538. package/dist/es/Functions/useKeyPress/useHandleKeyPress.js +38 -0
  539. package/dist/es/Functions/useKeyPress/useHandleKeyPress.js.map +1 -0
  540. package/dist/es/Functions/useKeyPress/useKeyPress.js +54 -0
  541. package/dist/es/Functions/useKeyPress/useKeyPress.js.map +1 -0
  542. package/dist/es/Functions/useLocalStorage.js +28 -0
  543. package/dist/es/Functions/useLocalStorage.js.map +1 -0
  544. package/dist/es/Functions/useLocationParams.js +27 -0
  545. package/dist/es/Functions/useLocationParams.js.map +1 -0
  546. package/dist/es/Functions/useMediaQuery.js +14 -0
  547. package/dist/es/Functions/useMediaQuery.js.map +1 -0
  548. package/dist/es/Functions/useMetaInfo.js +33 -0
  549. package/dist/es/Functions/useMetaInfo.js.map +1 -0
  550. package/dist/es/Functions/useMouseUpOutside.js +17 -0
  551. package/dist/es/Functions/useMouseUpOutside.js.map +1 -0
  552. package/dist/es/Functions/useOnlineStatus.js +23 -0
  553. package/dist/es/Functions/useOnlineStatus.js.map +1 -0
  554. package/dist/es/Functions/usePasswordChecker.js +116 -0
  555. package/dist/es/Functions/usePasswordChecker.js.map +1 -0
  556. package/dist/es/Functions/usePrevious.js +13 -0
  557. package/dist/es/Functions/usePrevious.js.map +1 -0
  558. package/dist/es/Functions/useResize.js +24 -0
  559. package/dist/es/Functions/useResize.js.map +1 -0
  560. package/dist/es/Functions/useScrollTo.js +17 -0
  561. package/dist/es/Functions/useScrollTo.js.map +1 -0
  562. package/dist/es/Functions/useToggle.js +15 -0
  563. package/dist/es/Functions/useToggle.js.map +1 -0
  564. package/dist/es/Functions/utils/disableDefaultBehavior/disableDefaultBehavior.js +9 -0
  565. package/dist/es/Functions/utils/disableDefaultBehavior/disableDefaultBehavior.js.map +1 -0
  566. package/dist/es/Functions/utils/getLimitedMask/getLimitedMask.js +39 -0
  567. package/dist/es/Functions/utils/getLimitedMask/getLimitedMask.js.map +1 -0
  568. package/dist/es/Functions/utils.js +288 -0
  569. package/dist/es/Functions/utils.js.map +1 -0
  570. package/dist/es/Langs.js +166 -0
  571. package/dist/es/Langs.js.map +1 -0
  572. package/dist/es/Molecular/CustomIcons/components/AffiliateNetworks.js +33 -0
  573. package/dist/es/Molecular/CustomIcons/components/AffiliateNetworks.js.map +1 -0
  574. package/dist/es/Molecular/CustomIcons/components/AlertCircle.js +30 -0
  575. package/dist/es/Molecular/CustomIcons/components/AlertCircle.js.map +1 -0
  576. package/dist/es/Molecular/CustomIcons/components/AppStore.js +34 -0
  577. package/dist/es/Molecular/CustomIcons/components/AppStore.js.map +1 -0
  578. package/dist/es/Molecular/CustomIcons/components/Arrow.js +43 -0
  579. package/dist/es/Molecular/CustomIcons/components/Arrow.js.map +1 -0
  580. package/dist/es/Molecular/CustomIcons/components/ArrowDown.js +21 -0
  581. package/dist/es/Molecular/CustomIcons/components/ArrowDown.js.map +1 -0
  582. package/dist/es/Molecular/CustomIcons/components/ArrowLeft.js +21 -0
  583. package/dist/es/Molecular/CustomIcons/components/ArrowLeft.js.map +1 -0
  584. package/dist/es/Molecular/CustomIcons/components/ArrowRight.js +21 -0
  585. package/dist/es/Molecular/CustomIcons/components/ArrowRight.js.map +1 -0
  586. package/dist/es/Molecular/CustomIcons/components/ArrowUp.js +21 -0
  587. package/dist/es/Molecular/CustomIcons/components/ArrowUp.js.map +1 -0
  588. package/dist/es/Molecular/CustomIcons/components/Bell.js +19 -0
  589. package/dist/es/Molecular/CustomIcons/components/Bell.js.map +1 -0
  590. package/dist/es/Molecular/CustomIcons/components/Button.js +19 -0
  591. package/dist/es/Molecular/CustomIcons/components/Button.js.map +1 -0
  592. package/dist/es/Molecular/CustomIcons/components/Campaigns.js +20 -0
  593. package/dist/es/Molecular/CustomIcons/components/Campaigns.js.map +1 -0
  594. package/dist/es/Molecular/CustomIcons/components/Check.js +15 -0
  595. package/dist/es/Molecular/CustomIcons/components/Check.js.map +1 -0
  596. package/dist/es/Molecular/CustomIcons/components/Check2.js +19 -0
  597. package/dist/es/Molecular/CustomIcons/components/Check2.js.map +1 -0
  598. package/dist/es/Molecular/CustomIcons/components/ChevronDown.js +19 -0
  599. package/dist/es/Molecular/CustomIcons/components/ChevronDown.js.map +1 -0
  600. package/dist/es/Molecular/CustomIcons/components/ChevronDownDisabled.js +19 -0
  601. package/dist/es/Molecular/CustomIcons/components/ChevronDownDisabled.js.map +1 -0
  602. package/dist/es/Molecular/CustomIcons/components/ChevronLeft.js +19 -0
  603. package/dist/es/Molecular/CustomIcons/components/ChevronLeft.js.map +1 -0
  604. package/dist/es/Molecular/CustomIcons/components/ChevronRight.js +19 -0
  605. package/dist/es/Molecular/CustomIcons/components/ChevronRight.js.map +1 -0
  606. package/dist/es/Molecular/CustomIcons/components/ChevronUp.js +19 -0
  607. package/dist/es/Molecular/CustomIcons/components/ChevronUp.js.map +1 -0
  608. package/dist/es/Molecular/CustomIcons/components/ChevronUpDown.js +33 -0
  609. package/dist/es/Molecular/CustomIcons/components/ChevronUpDown.js.map +1 -0
  610. package/dist/es/Molecular/CustomIcons/components/Close.js +20 -0
  611. package/dist/es/Molecular/CustomIcons/components/Close.js.map +1 -0
  612. package/dist/es/Molecular/CustomIcons/components/ColumnsOrder.js +53 -0
  613. package/dist/es/Molecular/CustomIcons/components/ColumnsOrder.js.map +1 -0
  614. package/dist/es/Molecular/CustomIcons/components/Delete.js +20 -0
  615. package/dist/es/Molecular/CustomIcons/components/Delete.js.map +1 -0
  616. package/dist/es/Molecular/CustomIcons/components/Edit.js +19 -0
  617. package/dist/es/Molecular/CustomIcons/components/Edit.js.map +1 -0
  618. package/dist/es/Molecular/CustomIcons/components/Email.js +36 -0
  619. package/dist/es/Molecular/CustomIcons/components/Email.js.map +1 -0
  620. package/dist/es/Molecular/CustomIcons/components/FinturfLogo.js +33 -0
  621. package/dist/es/Molecular/CustomIcons/components/FinturfLogo.js.map +1 -0
  622. package/dist/es/Molecular/CustomIcons/components/FinturfLogo2.js +41 -0
  623. package/dist/es/Molecular/CustomIcons/components/FinturfLogo2.js.map +1 -0
  624. package/dist/es/Molecular/CustomIcons/components/Flows.js +19 -0
  625. package/dist/es/Molecular/CustomIcons/components/Flows.js.map +1 -0
  626. package/dist/es/Molecular/CustomIcons/components/Gift.js +21 -0
  627. package/dist/es/Molecular/CustomIcons/components/Gift.js.map +1 -0
  628. package/dist/es/Molecular/CustomIcons/components/GoogleAuth.js +34 -0
  629. package/dist/es/Molecular/CustomIcons/components/GoogleAuth.js.map +1 -0
  630. package/dist/es/Molecular/CustomIcons/components/GooglePlay.js +34 -0
  631. package/dist/es/Molecular/CustomIcons/components/GooglePlay.js.map +1 -0
  632. package/dist/es/Molecular/CustomIcons/components/HelpCircle.js +22 -0
  633. package/dist/es/Molecular/CustomIcons/components/HelpCircle.js.map +1 -0
  634. package/dist/es/Molecular/CustomIcons/components/HelpCircle2.js +23 -0
  635. package/dist/es/Molecular/CustomIcons/components/HelpCircle2.js.map +1 -0
  636. package/dist/es/Molecular/CustomIcons/components/HelpCircleFilled.js +22 -0
  637. package/dist/es/Molecular/CustomIcons/components/HelpCircleFilled.js.map +1 -0
  638. package/dist/es/Molecular/CustomIcons/components/Home.js +22 -0
  639. package/dist/es/Molecular/CustomIcons/components/Home.js.map +1 -0
  640. package/dist/es/Molecular/CustomIcons/components/Home2.js +25 -0
  641. package/dist/es/Molecular/CustomIcons/components/Home2.js.map +1 -0
  642. package/dist/es/Molecular/CustomIcons/components/Key.js +24 -0
  643. package/dist/es/Molecular/CustomIcons/components/Key.js.map +1 -0
  644. package/dist/es/Molecular/CustomIcons/components/Landers.js +23 -0
  645. package/dist/es/Molecular/CustomIcons/components/Landers.js.map +1 -0
  646. package/dist/es/Molecular/CustomIcons/components/Lock.js +19 -0
  647. package/dist/es/Molecular/CustomIcons/components/Lock.js.map +1 -0
  648. package/dist/es/Molecular/CustomIcons/components/Mail.js +28 -0
  649. package/dist/es/Molecular/CustomIcons/components/Mail.js.map +1 -0
  650. package/dist/es/Molecular/CustomIcons/components/Mastercard.js +81 -0
  651. package/dist/es/Molecular/CustomIcons/components/Mastercard.js.map +1 -0
  652. package/dist/es/Molecular/CustomIcons/components/Minus.js +34 -0
  653. package/dist/es/Molecular/CustomIcons/components/Minus.js.map +1 -0
  654. package/dist/es/Molecular/CustomIcons/components/Offers.js +20 -0
  655. package/dist/es/Molecular/CustomIcons/components/Offers.js.map +1 -0
  656. package/dist/es/Molecular/CustomIcons/components/Pause.js +34 -0
  657. package/dist/es/Molecular/CustomIcons/components/Pause.js.map +1 -0
  658. package/dist/es/Molecular/CustomIcons/components/PayPal.js +54 -0
  659. package/dist/es/Molecular/CustomIcons/components/PayPal.js.map +1 -0
  660. package/dist/es/Molecular/CustomIcons/components/PayPalLightLarge.js +39 -0
  661. package/dist/es/Molecular/CustomIcons/components/PayPalLightLarge.js.map +1 -0
  662. package/dist/es/Molecular/CustomIcons/components/Phone.js +33 -0
  663. package/dist/es/Molecular/CustomIcons/components/Phone.js.map +1 -0
  664. package/dist/es/Molecular/CustomIcons/components/Play.js +34 -0
  665. package/dist/es/Molecular/CustomIcons/components/Play.js.map +1 -0
  666. package/dist/es/Molecular/CustomIcons/components/Plus.js +34 -0
  667. package/dist/es/Molecular/CustomIcons/components/Plus.js.map +1 -0
  668. package/dist/es/Molecular/CustomIcons/components/Profile.js +24 -0
  669. package/dist/es/Molecular/CustomIcons/components/Profile.js.map +1 -0
  670. package/dist/es/Molecular/CustomIcons/components/QRCode.js +35 -0
  671. package/dist/es/Molecular/CustomIcons/components/QRCode.js.map +1 -0
  672. package/dist/es/Molecular/CustomIcons/components/Rectangle.js +19 -0
  673. package/dist/es/Molecular/CustomIcons/components/Rectangle.js.map +1 -0
  674. package/dist/es/Molecular/CustomIcons/components/Revert.js +22 -0
  675. package/dist/es/Molecular/CustomIcons/components/Revert.js.map +1 -0
  676. package/dist/es/Molecular/CustomIcons/components/Star.js +18 -0
  677. package/dist/es/Molecular/CustomIcons/components/Star.js.map +1 -0
  678. package/dist/es/Molecular/CustomIcons/components/Star2.js +20 -0
  679. package/dist/es/Molecular/CustomIcons/components/Star2.js.map +1 -0
  680. package/dist/es/Molecular/CustomIcons/components/TrafficSources.js +19 -0
  681. package/dist/es/Molecular/CustomIcons/components/TrafficSources.js.map +1 -0
  682. package/dist/es/Molecular/CustomIcons/components/Trash.js +19 -0
  683. package/dist/es/Molecular/CustomIcons/components/Trash.js.map +1 -0
  684. package/dist/es/Molecular/CustomIcons/components/TrashRed.js +19 -0
  685. package/dist/es/Molecular/CustomIcons/components/TrashRed.js.map +1 -0
  686. package/dist/es/Molecular/CustomIcons/components/Triggers.js +19 -0
  687. package/dist/es/Molecular/CustomIcons/components/Triggers.js.map +1 -0
  688. package/dist/es/Molecular/CustomIcons/components/User.js +21 -0
  689. package/dist/es/Molecular/CustomIcons/components/User.js.map +1 -0
  690. package/dist/es/Molecular/CustomIcons/components/Visa.js +41 -0
  691. package/dist/es/Molecular/CustomIcons/components/Visa.js.map +1 -0
  692. package/dist/es/Molecular/CustomIcons/components/X.js +19 -0
  693. package/dist/es/Molecular/CustomIcons/components/X.js.map +1 -0
  694. package/dist/es/Molecular/FormElement/FormElement.js +37 -0
  695. package/dist/es/Molecular/FormElement/FormElement.js.map +1 -0
  696. package/dist/es/Molecular/FormElement/FormElement.styles.css +21 -0
  697. package/dist/es/Molecular/FormWithDependOn/FormWithDependOn.js +111 -0
  698. package/dist/es/Molecular/FormWithDependOn/FormWithDependOn.js.map +1 -0
  699. package/dist/es/Molecular/FormWithDependOn/partials/_utils.js +33 -0
  700. package/dist/es/Molecular/FormWithDependOn/partials/_utils.js.map +1 -0
  701. package/dist/es/Molecular/InputAddress/InputAddress.js +352 -0
  702. package/dist/es/Molecular/InputAddress/InputAddress.js.map +1 -0
  703. package/dist/es/Molecular/InputAddress/InputAddress.styles.css +353 -0
  704. package/dist/es/Molecular/InputCustomFetch/InputCustomFetch.js +355 -0
  705. package/dist/es/Molecular/InputCustomFetch/InputCustomFetch.js.map +1 -0
  706. package/dist/es/Molecular/InputCustomFetch/InputCustomFetch.styles.css +358 -0
  707. package/dist/es/Molecular/InputCustomFetch/lib/hooks/useDebouncedCallback.js +27 -0
  708. package/dist/es/Molecular/InputCustomFetch/lib/hooks/useDebouncedCallback.js.map +1 -0
  709. package/dist/es/Molecular/InputCustomFetch/lib/hooks/useFetchWithAbort.js +50 -0
  710. package/dist/es/Molecular/InputCustomFetch/lib/hooks/useFetchWithAbort.js.map +1 -0
  711. package/dist/es/Molecular/InputCustomFetch/lib/utils.js +24 -0
  712. package/dist/es/Molecular/InputCustomFetch/lib/utils.js.map +1 -0
  713. package/dist/es/Molecular/InputPassword/InputPassword.js +47 -0
  714. package/dist/es/Molecular/InputPassword/InputPassword.js.map +1 -0
  715. package/dist/es/Molecular/InputPassword/InputPassword.styles.css +23 -0
  716. package/dist/es/_virtual/_rolldown/runtime.js +1 -15
  717. package/dist/es/charts.js +2 -3
  718. package/dist/es/classes.js +1 -1
  719. package/dist/es/form.js +68 -93
  720. package/dist/es/hooks.js +12 -17
  721. package/dist/es/icons.js +126 -6
  722. package/dist/es/index.js +145 -70
  723. package/dist/es/layout.js +3 -3
  724. package/dist/es/presets.js +6 -6
  725. package/dist/es/router-ui.js +5 -8
  726. package/dist/es/sdk.js +3 -1
  727. package/dist/es/types/index.js +0 -2
  728. package/dist/es/ui.js +30 -39
  729. package/dist/es/utils.js +5 -6
  730. package/package.json +2 -1
@@ -0,0 +1,151 @@
1
+ import { addCustomMethods, getIsOnlyAnObject, getResponseClone, omitKeys } from "./_utils.js";
2
+ import ApiUtils from "./ApiUtils.js";
3
+ import { readSSE } from "./sse.js";
4
+ //#region src/Classes/RESTAPI/partials/ApiRequestCreators.ts
5
+ function isStreamResponse(value) {
6
+ if (!getIsOnlyAnObject(value) || !value.ok) return false;
7
+ const body = value.body;
8
+ return typeof body === "object" && body !== null && "getReader" in body && typeof body.getReader === "function";
9
+ }
10
+ var PREFIX_OF_CLASS_UTILS = "createRequest_";
11
+ /**
12
+ * Слой реквест-крейтеров: методы `createRequest_<type>`, которые конфигурируют обработку ответа
13
+ * под конкретный сценарий (toJson, blob, sse и т.д.) и возвращают аргументы для doRequest.
14
+ * Пользовательские крейтеры подключаются через настройку `requestsCreators`.
15
+ */
16
+ var ApiRequestCreators = class extends ApiUtils {
17
+ constructor(settings) {
18
+ super(settings);
19
+ const { requestsCreators } = settings || {};
20
+ if (getIsOnlyAnObject(requestsCreators)) addCustomMethods.call(this, requestsCreators, PREFIX_OF_CLASS_UTILS);
21
+ }
22
+ /**
23
+ * Крейтер типа `toJson`: пользовательский callback получит тело ответа (Response.json()).
24
+ *
25
+ * @param props - объект описания запроса.
26
+ * @param variant - вариант обработки splitProperties.
27
+ */
28
+ async createRequest_toJson(props, variant) {
29
+ const safelyProps = omitKeys(props, ["getBodyAs"]);
30
+ return this.splitProperties({
31
+ ...safelyProps,
32
+ isGetBody: false,
33
+ callback: async (res) => {
34
+ const output = await this.getResponseBody(res, "json");
35
+ return await (props.callback?.(output) ?? output);
36
+ }
37
+ }, variant);
38
+ }
39
+ /**
40
+ * Крейтер типа `toJsonAdvanced`: callback получит структуру `{ response, result }`.
41
+ *
42
+ * @param props - объект описания запроса.
43
+ * @param variant - вариант обработки splitProperties.
44
+ */
45
+ async createRequest_toJsonAdvanced(props, variant) {
46
+ const safelyProps = omitKeys(props, ["getBodyAs"]);
47
+ return this.splitProperties({
48
+ ...safelyProps,
49
+ isGetBody: false,
50
+ callback: async (res) => {
51
+ const output = {
52
+ response: res,
53
+ result: await this.getResponseBody(await getResponseClone(res), "json")
54
+ };
55
+ return await (props.callback?.(output) ?? output);
56
+ }
57
+ }, variant);
58
+ }
59
+ /**
60
+ * Крейтер типа `blob`: callback получит тело ответа (Response.blob()).
61
+ *
62
+ * @param props - объект описания запроса.
63
+ * @param variant - вариант обработки splitProperties.
64
+ */
65
+ async createRequest_blob(props, variant) {
66
+ const safelyProps = omitKeys(props, ["getBodyAs"]);
67
+ return this.splitProperties({
68
+ ...safelyProps,
69
+ isGetBody: false,
70
+ callback: async (res) => {
71
+ const output = await this.getResponseBody(await getResponseClone(res), "blob");
72
+ return await (props.callback?.(output) ?? output);
73
+ }
74
+ }, variant);
75
+ }
76
+ /**
77
+ * Крейтер типа `sse`: обрабатывает ответ как поток Server-Sent Events (text/event-stream).
78
+ *
79
+ * Дополнительные пропы объекта описания запроса: `onEvent`, `onChunk`, `handlers`, `parseJson`.
80
+ * По умолчанию добавляется заголовок `Accept: text/event-stream`. Метод doRequest резолвится
81
+ * массивом всех событий ПОСЛЕ закрытия потока; отмена — методом `.abort()` возвращённого промиса.
82
+ *
83
+ * @param props - объект описания запроса (плюс onEvent/onChunk/handlers/parseJson).
84
+ * @param variant - вариант обработки splitProperties.
85
+ */
86
+ async createRequest_sse(props, variant) {
87
+ const safelyProps = omitKeys(props, [
88
+ "getBodyAs",
89
+ "onChunk",
90
+ "onEvent",
91
+ "handlers",
92
+ "parseJson"
93
+ ]);
94
+ const { onChunk, onEvent, handlers, parseJson } = props;
95
+ const sseOptions = {
96
+ onChunk: typeof onChunk === "function" ? (data, event) => onChunk(data, event) : void 0,
97
+ onEvent: typeof onEvent === "function" ? (event) => onEvent(event) : void 0,
98
+ parseJson: Boolean(parseJson),
99
+ handlers: getIsOnlyAnObject(handlers) ? Object.keys(handlers).reduce((acc, key) => {
100
+ const fn = handlers[key];
101
+ acc[key] = typeof fn === "function" ? (data, event) => fn(data, event) : void 0;
102
+ return acc;
103
+ }, {}) : void 0
104
+ };
105
+ return this.splitProperties({
106
+ ...safelyProps,
107
+ headers: {
108
+ Accept: "text/event-stream",
109
+ ...getIsOnlyAnObject(safelyProps.headers) ? safelyProps.headers : {}
110
+ },
111
+ isGetBody: false,
112
+ callback: async (res) => {
113
+ const output = isStreamResponse(res) ? await readSSE(res, sseOptions) : res;
114
+ return await (props.callback?.(output) ?? output);
115
+ }
116
+ }, variant);
117
+ }
118
+ /**
119
+ * Крейтер типа `testBadResponse`: callback получит синтетический Response со статусом 401.
120
+ *
121
+ * @param props - объект описания запроса.
122
+ * @param variant - вариант обработки splitProperties.
123
+ */
124
+ async createRequest_testBadResponse(props, variant) {
125
+ return this.splitProperties({
126
+ ...props,
127
+ callback: async () => Promise.resolve(new Response(JSON.stringify({ errors: [{ message: "test bad Response" }] }), {
128
+ status: 401,
129
+ statusText: "test bad Response",
130
+ headers: (() => {
131
+ const headers = new Headers();
132
+ headers.append("content-type", "application/json");
133
+ return headers;
134
+ })()
135
+ })).then((res) => props.callback?.(res) ?? res)
136
+ }, variant);
137
+ }
138
+ /**
139
+ * Крейтер по умолчанию: callback получит объект Response (или тело ответа при isGetBody: 'first').
140
+ *
141
+ * @param props - объект описания запроса.
142
+ * @param variant - вариант обработки splitProperties.
143
+ */
144
+ async createRequest_default(props, variant) {
145
+ return this.splitProperties(props, variant);
146
+ }
147
+ };
148
+ //#endregion
149
+ export { ApiRequestCreators as default };
150
+
151
+ //# sourceMappingURL=ApiRequestCreators.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ApiRequestCreators.js","names":[],"sources":["../../../../../src/Classes/RESTAPI/partials/ApiRequestCreators.ts"],"sourcesContent":["import type { RequestDescriptor, RESTAPISettings, SSEEvent, SSEReadOptions, StreamResponseLike, UnknownRecord } from './types';\nimport { addCustomMethods, getIsOnlyAnObject, getResponseClone, omitKeys } from './_utils';\nimport ApiUtils from './ApiUtils';\nimport { readSSE } from './sse';\n\n// ? Результат любого крейтера — то, что возвращает splitProperties.\ntype CreatorResult = Promise<UnknownRecord | UnknownRecord[]>;\n\n// ? Type-guard: ответ пригоден для чтения как поток (есть тело с getReader и код ok).\nfunction isStreamResponse(value: unknown): value is StreamResponseLike {\n if (!getIsOnlyAnObject(value) || !value.ok) return false;\n const body = value.body;\n return typeof body === 'object' && body !== null && 'getReader' in body && typeof body.getReader === 'function';\n}\n\n// ? Префикс createRequest_ добавляется к крейтерам с целью разгрузить пространство имен\nconst PREFIX_OF_CLASS_UTILS = 'createRequest_';\n\n/**\n * Слой реквест-крейтеров: методы `createRequest_<type>`, которые конфигурируют обработку ответа\n * под конкретный сценарий (toJson, blob, sse и т.д.) и возвращают аргументы для doRequest.\n * Пользовательские крейтеры подключаются через настройку `requestsCreators`.\n */\nclass ApiRequestCreators extends ApiUtils {\n constructor(settings?: RESTAPISettings) {\n super(settings);\n const { requestsCreators } = settings || {};\n\n if (getIsOnlyAnObject(requestsCreators)) addCustomMethods.call(this, requestsCreators, PREFIX_OF_CLASS_UTILS);\n }\n\n /**\n * Крейтер типа `toJson`: пользовательский callback получит тело ответа (Response.json()).\n *\n * @param props - объект описания запроса.\n * @param variant - вариант обработки splitProperties.\n */\n // ? При типе toJson пользовательский callback на вход получит тело ответа реализованное методом Response.json()\n // ? независимо от насторойки isGetBody\n async createRequest_toJson(props: RequestDescriptor, variant?: string): CreatorResult {\n const safelyProps = omitKeys(props, ['getBodyAs']);\n\n return this.splitProperties(\n {\n ...safelyProps,\n isGetBody: false,\n callback: async (res: unknown) => {\n const output = await this.getResponseBody(res, 'json');\n return await (props.callback?.(output) ?? output);\n },\n },\n variant,\n );\n }\n\n /**\n * Крейтер типа `toJsonAdvanced`: callback получит структуру `{ response, result }`.\n *\n * @param props - объект описания запроса.\n * @param variant - вариант обработки splitProperties.\n */\n // ? При типе toJsonAdvanced пользовательский callback на вход получит структуру { response, result },\n // ? где response - объект Response, result - тело ответа реализованное методом Response.json()\n // ? независимо от насторойки isGetBody\n async createRequest_toJsonAdvanced(props: RequestDescriptor, variant?: string): CreatorResult {\n const safelyProps = omitKeys(props, ['getBodyAs']);\n\n return this.splitProperties(\n {\n ...safelyProps,\n isGetBody: false,\n callback: async (res: unknown) => {\n const output = {\n response: res,\n result: await this.getResponseBody(await getResponseClone(res), 'json'),\n };\n return await (props.callback?.(output) ?? output);\n },\n },\n variant,\n );\n }\n\n /**\n * Крейтер типа `blob`: callback получит тело ответа (Response.blob()).\n *\n * @param props - объект описания запроса.\n * @param variant - вариант обработки splitProperties.\n */\n // ? При типе blob пользовательский callback на вход получит тело ответа реализованное методом Response.blob(),\n // ? независимо от насторойки isGetBody\n async createRequest_blob(props: RequestDescriptor, variant?: string): CreatorResult {\n const safelyProps = omitKeys(props, ['getBodyAs']);\n\n return this.splitProperties(\n {\n ...safelyProps,\n isGetBody: false,\n callback: async (res: unknown) => {\n const output = await this.getResponseBody(await getResponseClone(res), 'blob');\n return await (props.callback?.(output) ?? output);\n },\n },\n variant,\n );\n }\n\n /**\n * Крейтер типа `sse`: обрабатывает ответ как поток Server-Sent Events (text/event-stream).\n *\n * Дополнительные пропы объекта описания запроса: `onEvent`, `onChunk`, `handlers`, `parseJson`.\n * По умолчанию добавляется заголовок `Accept: text/event-stream`. Метод doRequest резолвится\n * массивом всех событий ПОСЛЕ закрытия потока; отмена — методом `.abort()` возвращённого промиса.\n *\n * @param props - объект описания запроса (плюс onEvent/onChunk/handlers/parseJson).\n * @param variant - вариант обработки splitProperties.\n */\n // ? При типе sse запрос обрабатывается как поток Server-Sent Events (text/event-stream).\n // ? Дополнительные пропы объекта описания запроса:\n // ? - onEvent(event) — вызывается на каждое распарсенное событие { event, data, id, retry };\n // ? - onChunk(data, event) — вызывается на полезную нагрузку (поле data) каждого события;\n // ? - handlers — карта { имяСобытия: cb } для типизированной обработки по полю event\n // ? (например { delta, status, done }); cb получает (data, event);\n // ? - parseJson — если true, поле data каждого события прогоняется через JSON.parse.\n // ? По умолчанию добавляется заголовок Accept: text/event-stream (его можно переопределить через headers).\n // ? Пользовательский callback (если передан) на вход получит итоговый массив всех событий.\n // ? Метод doRequest резолвится массивом всех событий ПОСЛЕ закрытия потока;\n // ? отмена потока выполняется методом .abort() возвращённого промиса (через встроенный AbortController).\n async createRequest_sse(props: RequestDescriptor, variant?: string): CreatorResult {\n const safelyProps = omitKeys(props, ['getBodyAs', 'onChunk', 'onEvent', 'handlers', 'parseJson']);\n const { onChunk, onEvent, handlers, parseJson } = props;\n\n // ? Типобезопасно собираем опции потока из «сырых» пропов запроса (значения сужаем guard-ами).\n const sseOptions: SSEReadOptions = {\n onChunk: typeof onChunk === 'function' ? (data: unknown, event: SSEEvent) => onChunk(data, event) : undefined,\n onEvent: typeof onEvent === 'function' ? (event: SSEEvent) => onEvent(event) : undefined,\n parseJson: Boolean(parseJson),\n handlers: getIsOnlyAnObject(handlers)\n ? Object.keys(handlers).reduce<Record<string, ((data: unknown, event: SSEEvent) => void) | undefined>>((acc, key) => {\n const fn = handlers[key];\n acc[key] = typeof fn === 'function' ? (data: unknown, event: SSEEvent) => fn(data, event) : undefined;\n return acc;\n }, {})\n : undefined,\n };\n\n return this.splitProperties(\n {\n ...safelyProps,\n headers: { Accept: 'text/event-stream', ...(getIsOnlyAnObject(safelyProps.headers) ? safelyProps.headers : {}) },\n isGetBody: false,\n callback: async (res: unknown) => {\n // ? Стримим только успешный ответ с читаемым телом.\n // ? Иначе (ошибка/нет тела) отдаём res как есть — обработают checkResponseCode/catchCallback/пользователь.\n const output = isStreamResponse(res) ? await readSSE(res, sseOptions) : res;\n return await (props.callback?.(output) ?? output);\n },\n },\n variant,\n );\n }\n\n /**\n * Крейтер типа `testBadResponse`: callback получит синтетический Response со статусом 401.\n *\n * @param props - объект описания запроса.\n * @param variant - вариант обработки splitProperties.\n */\n // ? При типе testBadResponse пользовательский callback на вход получит объект Response в 401-м статусе\n // ? независимо независимо вообще ни от чего\n async createRequest_testBadResponse(props: RequestDescriptor, variant?: string): CreatorResult {\n return this.splitProperties(\n {\n ...props,\n callback: async () =>\n Promise.resolve(\n new Response(JSON.stringify({ errors: [{ message: 'test bad Response' }] }), {\n status: 401,\n statusText: 'test bad Response',\n headers: (() => {\n const headers = new Headers();\n headers.append('content-type', 'application/json');\n return headers;\n })(),\n }),\n ).then(res => props.callback?.(res) ?? res),\n },\n variant,\n );\n }\n\n /**\n * Крейтер по умолчанию: callback получит объект Response (или тело ответа при isGetBody: 'first').\n *\n * @param props - объект описания запроса.\n * @param variant - вариант обработки splitProperties.\n */\n // ? По умолчанию пользовательский callback на вход получит\n // ? - либо объект Response\n // ? - либо тело ответа (в случае isGetBody: 'first') полученное методом getResponseBody (смотри класс ApiUtils)\n async createRequest_default(props: RequestDescriptor, variant?: string): CreatorResult {\n return this.splitProperties(props, variant);\n }\n}\n\nexport default ApiRequestCreators;\n"],"mappings":"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"}
@@ -0,0 +1,142 @@
1
+ import { addCustomMethods, getIsOnlyAnObject, getResponseClone } from "./_utils.js";
2
+ import Utils from "./Utils.js";
3
+ //#region src/Classes/RESTAPI/partials/ApiUtils.ts
4
+ /**
5
+ * Утилитарный слой API: разбор настроек на части (splitProperties), извлечение тела ответа,
6
+ * проверка кода ответа и точки расширения (getRootPath / addAsCommon / processQueryParams).
7
+ * Поддерживает добавление пользовательских методов-утилит через настройку `utils`.
8
+ */
9
+ var ApiUtils = class extends Utils {
10
+ /** Корневой путь API (раскладывается в ApiBase из constants.API_PATH). */
11
+ API_PATH;
12
+ constructor(settings) {
13
+ super();
14
+ const { utils } = settings || {};
15
+ if (getIsOnlyAnObject(utils)) addCustomMethods.call(this, utils);
16
+ }
17
+ /**
18
+ * Разбирает единый объект параметров запроса на части в зависимости от варианта использования.
19
+ *
20
+ * @param apiParams - объединённые параметры запроса.
21
+ * @param variant - `'doRequestMapping'` для мультизапроса либо `undefined` для одиночного.
22
+ * @returns Для `doRequestMapping` — объект параметров; иначе кортеж `[параметры, настройки]`.
23
+ */
24
+ async splitProperties(apiParams, variant) {
25
+ const { isResponseAsObject, isGetBody, finalCallback, isToastResult, toastOptions, isNoToastSuccess, isNoToastError, isNoToast, successMess, commonSuccessMessage, successMessages, successMessageType, errorMess, commonErrorMessage, errorMessages, ...restParams } = apiParams || {};
26
+ switch (variant) {
27
+ case "doRequestMapping": return {
28
+ ...restParams,
29
+ isGetBody,
30
+ isToastResult,
31
+ toastOptions,
32
+ isNoToastSuccess,
33
+ isNoToastError,
34
+ isNoToast,
35
+ successMess,
36
+ commonSuccessMessage,
37
+ successMessages,
38
+ successMessageType,
39
+ errorMess,
40
+ commonErrorMessage,
41
+ errorMessages
42
+ };
43
+ default: return [restParams, {
44
+ isGetBody,
45
+ isResponseAsObject,
46
+ ...finalCallback ? { callback: finalCallback } : {},
47
+ isToastResult,
48
+ toastOptions,
49
+ isNoToastSuccess,
50
+ isNoToastError,
51
+ isNoToast,
52
+ commonSuccessMessage: successMess || commonSuccessMessage,
53
+ successMessages,
54
+ successMessageType,
55
+ commonErrorMessage: errorMess || commonErrorMessage,
56
+ errorMessages
57
+ }];
58
+ }
59
+ }
60
+ /**
61
+ * Обработчик пропы `api` из объекта описания запроса — возвращает корневой путь API.
62
+ *
63
+ * @returns Корневой путь (по умолчанию — API_PATH).
64
+ */
65
+ async getRootPath(_apiProp) {
66
+ return this.API_PATH;
67
+ }
68
+ /**
69
+ * Извлекает тело ответа в нужном виде (json/blob/text/arrayBuffer/formData) либо по content-type.
70
+ *
71
+ * @param response - объект Response (иначе значение возвращается как есть).
72
+ * @param getBodyAs - желаемый способ извлечения тела.
73
+ * @returns Промис с телом ответа (или исходным значением / null при ошибке).
74
+ */
75
+ async getResponseBody(response, getBodyAs) {
76
+ if (!(response instanceof Response)) return response;
77
+ const contentType = response.headers.get("content-type");
78
+ if (!contentType) return "";
79
+ const bodyReaders = {
80
+ json: (r) => r.json(),
81
+ blob: (r) => r.blob(),
82
+ text: (r) => r.text(),
83
+ arrayBuffer: (r) => r.arrayBuffer(),
84
+ formData: (r) => r.formData()
85
+ };
86
+ const isBodyKey = (key) => key in bodyReaders;
87
+ const reader = typeof getBodyAs === "string" && isBodyKey(getBodyAs) ? bodyReaders[getBodyAs] : contentType.includes("text/csv") ? bodyReaders.blob : contentType.includes("json") ? bodyReaders.json : bodyReaders.text;
88
+ try {
89
+ return await reader(response);
90
+ } catch {
91
+ console.log("Failed to extract the body");
92
+ return null;
93
+ }
94
+ }
95
+ /**
96
+ * Формирует структуру ошибки из тела ответа (точка расширения под формат бэкенда).
97
+ *
98
+ * @param res - уже извлечённое тело ответа.
99
+ * @returns Структура сообщения об ошибке.
100
+ */
101
+ async getErrorMessage(res) {
102
+ return res;
103
+ }
104
+ /**
105
+ * Проверяет код ответа и (если задан sendMessage) информирует пользователя об успехе/ошибке.
106
+ *
107
+ * @param res - объект Response (или совместимый с полем `ok`).
108
+ * @param settings - сообщения и настройки тостов для данного запроса.
109
+ * @returns Исходный `res` (метод не меняет ответ, только сигналит сообщением).
110
+ */
111
+ async checkResponseCode(res, settings) {
112
+ const send = this.sendMessage;
113
+ if (typeof send !== "function") return res;
114
+ const { successMess, errorMess } = settings || {};
115
+ const message = (getIsOnlyAnObject(res) ? Boolean(res.ok) : false) ? successMess || this.DEFAULT_SUCCESS_MESSAGE : errorMess || await this.getErrorMessage(await this.getResponseBody(await getResponseClone(res)));
116
+ try {
117
+ send(message, settings, await getResponseClone(res));
118
+ } catch {}
119
+ return res;
120
+ }
121
+ /**
122
+ * Структуры, которые будут использоваться для КАЖДОГО запроса, сделанного экземпляром RESTAPI.
123
+ *
124
+ * @returns Объект `{ headers, queryParameters, options }` (по умолчанию пустой).
125
+ */
126
+ async addAsCommon() {
127
+ return {};
128
+ }
129
+ /**
130
+ * Общий обработчик query-параметров (точка расширения, напр. кодирование/приведение к массиву).
131
+ *
132
+ * @param queryParams - входные query-параметры.
133
+ * @returns Обработанные query-параметры (по умолчанию — без изменений).
134
+ */
135
+ async processQueryParams(queryParams) {
136
+ return queryParams;
137
+ }
138
+ };
139
+ //#endregion
140
+ export { ApiUtils as default };
141
+
142
+ //# sourceMappingURL=ApiUtils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ApiUtils.js","names":[],"sources":["../../../../../src/Classes/RESTAPI/partials/ApiUtils.ts"],"sourcesContent":["import type { AddAsCommonResult, RESTAPISettings, UnknownRecord } from './types';\nimport { addCustomMethods, getIsOnlyAnObject, getResponseClone } from './_utils';\nimport Utils from './Utils';\n\n/**\n * Утилитарный слой API: разбор настроек на части (splitProperties), извлечение тела ответа,\n * проверка кода ответа и точки расширения (getRootPath / addAsCommon / processQueryParams).\n * Поддерживает добавление пользовательских методов-утилит через настройку `utils`.\n */\nclass ApiUtils extends Utils {\n /** Корневой путь API (раскладывается в ApiBase из constants.API_PATH). */\n API_PATH!: string;\n\n constructor(settings?: RESTAPISettings) {\n super();\n const { utils } = settings || {};\n if (getIsOnlyAnObject(utils)) addCustomMethods.call(this, utils);\n }\n\n /**\n * Разбирает единый объект параметров запроса на части в зависимости от варианта использования.\n *\n * @param apiParams - объединённые параметры запроса.\n * @param variant - `'doRequestMapping'` для мультизапроса либо `undefined` для одиночного.\n * @returns Для `doRequestMapping` — объект параметров; иначе кортеж `[параметры, настройки]`.\n */\n // ? Планируется, что метод будет использоваться неизменно, однако технически его можно перегрузить на экземпляре\n // ? Метод не планировался как асинхронный,\n // ? однако ввиду того что он может быть перегружен на экземпляре асинхронность предусматривается\n async splitProperties(apiParams: UnknownRecord, variant?: string): Promise<UnknownRecord | UnknownRecord[]> {\n const {\n isResponseAsObject,\n isGetBody,\n finalCallback,\n\n isToastResult,\n toastOptions,\n isNoToastSuccess,\n isNoToastError,\n isNoToast,\n\n successMess,\n commonSuccessMessage,\n successMessages,\n successMessageType,\n\n errorMess,\n commonErrorMessage,\n errorMessages,\n\n ...restParams\n } = apiParams || {};\n\n switch (variant) {\n case 'doRequestMapping':\n return {\n ...restParams,\n\n isGetBody,\n\n isToastResult,\n toastOptions,\n isNoToastSuccess,\n isNoToastError,\n isNoToast,\n\n successMess,\n commonSuccessMessage,\n successMessages,\n successMessageType,\n\n errorMess,\n commonErrorMessage,\n errorMessages,\n };\n default:\n return [\n restParams,\n {\n isGetBody,\n isResponseAsObject,\n ...(finalCallback ? { callback: finalCallback } : {}),\n\n isToastResult,\n toastOptions,\n isNoToastSuccess,\n isNoToastError,\n isNoToast,\n\n commonSuccessMessage: successMess || commonSuccessMessage,\n successMessages,\n successMessageType,\n\n commonErrorMessage: errorMess || commonErrorMessage,\n errorMessages,\n },\n ];\n }\n }\n\n /**\n * Обработчик пропы `api` из объекта описания запроса — возвращает корневой путь API.\n *\n * @returns Корневой путь (по умолчанию — API_PATH).\n */\n // ! Обработчик пропы api из объекта описания запроса\n // ? Планируется, что метод будет перегружаться на экземпляре,\n // ? т.к. на разных проектах могут быть разные интерпретации пропы api\n // ? Метод не планировался как асинхронный,\n // ? однако ввиду того что он может быть перегружен на экземпляре асинхронность предусматривается\n async getRootPath(_apiProp?: unknown): Promise<string> {\n // ? Базовая реализация игнорирует apiProp и отдаёт API_PATH.\n // ? Переопределяется на экземпляре (через settings.utils), где apiProp (поле `api`\n // ? объекта описания запроса) используется для вычисления корневого пути.\n return this.API_PATH;\n }\n\n /**\n * Извлекает тело ответа в нужном виде (json/blob/text/arrayBuffer/formData) либо по content-type.\n *\n * @param response - объект Response (иначе значение возвращается как есть).\n * @param getBodyAs - желаемый способ извлечения тела.\n * @returns Промис с телом ответа (или исходным значением / null при ошибке).\n */\n // ? Планируется, что метод будет использоваться неизменно, однако технически его можно перегрузить на экземпляре\n // ? Метод планировался как асинхронный\n async getResponseBody(response: unknown, getBodyAs?: string): Promise<unknown> {\n // ? Если response не экземпляр Response, то вернуть по факту\n if (!(response instanceof Response)) return response;\n\n // ? В этом месте все методы должны быть, т.к. response точно экземпляр Response.\n // ? А вот contentType-а походу может не быть. Наверное...\n const contentType = response.headers.get('content-type');\n if (!contentType) return '';\n\n // ? Набор «читателей» тела Response — типобезопасная замена динамического response[getBodyAs].\n const bodyReaders = {\n json: (r: Response) => r.json(),\n blob: (r: Response) => r.blob(),\n text: (r: Response) => r.text(),\n arrayBuffer: (r: Response) => r.arrayBuffer(),\n formData: (r: Response) => r.formData(),\n };\n const isBodyKey = (key: string): key is keyof typeof bodyReaders => key in bodyReaders;\n\n // ToDo - ошибка была в получении executor-а...\n // ToDo - Все было через if. В случае, если не попадало ни в одну if-ку, то возвращался undefined по умолчанию,\n // ToDo - а после этот undefined пытался запустить через call...\n const reader\n = typeof getBodyAs === 'string' && isBodyKey(getBodyAs)\n ? bodyReaders[getBodyAs]\n : contentType.includes('text/csv')\n ? bodyReaders.blob\n : contentType.includes('json')\n ? bodyReaders.json\n : bodyReaders.text;\n\n // обработка случаев краша метода json при отсутствии тела ответа\n try {\n return await reader(response);\n }\n catch {\n // ? думаю стоит знать места, где ожидалось тело, а бэк его не положил\n // eslint-disable-next-line no-console\n console.log('Failed to extract the body');\n return null;\n }\n }\n\n /**\n * Формирует структуру ошибки из тела ответа (точка расширения под формат бэкенда).\n *\n * @param res - уже извлечённое тело ответа.\n * @returns Структура сообщения об ошибке.\n */\n // ! Обработчик структуры для ошибки (не рендер месседжа, а имеено формирование ошибки),\n // ? Планируется, что метод будет перегружаться на экземпляре,\n // ? т.к. на разных проектах могут быть разные структуры тела ответа для ошибки\n // ? Метод не планировался как асинхронный,\n // ? однако ввиду того что он может быть перегружен на экземпляре асинхронность предусматривается\n // ? res - уже тело ответа\n async getErrorMessage(res: unknown): Promise<unknown> {\n return res;\n }\n\n /**\n * Проверяет код ответа и (если задан sendMessage) информирует пользователя об успехе/ошибке.\n *\n * @param res - объект Response (или совместимый с полем `ok`).\n * @param settings - сообщения и настройки тостов для данного запроса.\n * @returns Исходный `res` (метод не меняет ответ, только сигналит сообщением).\n */\n // ? Планируется, что метод будет использоваться неизменно, однако технически его можно перегрузить на экземпляре\n // ? Метод планировался как асинхронный\n async checkResponseCode(res: unknown, settings?: UnknownRecord): Promise<unknown> {\n // ! При получении экземпляра, если sendMessage не является ф-ей,\n // ! то это воспринимается как отключение шага информирования об ошибке запроса как такового\n const send = this.sendMessage;\n if (typeof send !== 'function') return res;\n\n const { successMess, errorMess } = settings || {};\n\n const isOk = getIsOnlyAnObject(res) ? Boolean(res.ok) : false;\n\n const message = isOk\n ? successMess || this.DEFAULT_SUCCESS_MESSAGE\n : errorMess || (await this.getErrorMessage(await this.getResponseBody(await getResponseClone(res))));\n\n try {\n send(message, settings, await getResponseClone(res));\n }\n catch {\n /* ошибки информирования не должны влиять на обработку ответа */\n }\n return res;\n }\n\n /**\n * Структуры, которые будут использоваться для КАЖДОГО запроса, сделанного экземпляром RESTAPI.\n *\n * @returns Объект `{ headers, queryParameters, options }` (по умолчанию пустой).\n */\n // ? Суть метода:\n // ? передать из вне структуры, которые будут использоваться для КАЖДОГО запроса сделанного экземпляром RESTAPI\n // ! Данные затрут прочие настройки КРОМЕ данных по логике авторизации\n // ? Планируется, что метод будет перегружаться на экземпляре\n // ? Метод не планировался как асинхронный,\n // ? однако ввиду того что он может быть перегружен на экземпляре асинхронность предусматривается\n async addAsCommon(): Promise<AddAsCommonResult> {\n // ! Планируемая структура { headers, queryParameters, options }, где\n // ! - headers и options - объекты,\n // ! - queryParameters - строка, массив или объект\n return {};\n }\n\n /**\n * Общий обработчик query-параметров (точка расширения, напр. кодирование/приведение к массиву).\n *\n * @param queryParams - входные query-параметры.\n * @returns Обработанные query-параметры (по умолчанию — без изменений).\n */\n // ! Обработчик квери-параметров для общего процессинга,\n // ! Например для кодирования decodeURIComponent или/и приведения в формат массива\n // ? Планируется, что метод будет перегружаться на экземпляре,\n // ? т.к. на разных проектах могут быть разные договоренности по форматам\n // ? Метод не планировался как асинхронный,\n // ? однако ввиду того что он может быть перегружен на экземпляре асинхронность предусматривается\n async processQueryParams(queryParams: unknown): Promise<unknown> {\n return queryParams;\n }\n}\n\nexport default ApiUtils;\n"],"mappings":";;;;;;;;AASA,IAAM,WAAN,cAAuB,MAAM;;CAE3B;CAEA,YAAY,UAA4B;EACtC,MAAM;EACN,MAAM,EAAE,UAAU,YAAY,CAAC;EAC/B,IAAI,kBAAkB,KAAK,GAAG,iBAAiB,KAAK,MAAM,KAAK;CACjE;;;;;;;;CAYA,MAAM,gBAAgB,WAA0B,SAA4D;EAC1G,MAAM,EACJ,oBACA,WACA,eAEA,eACA,cACA,kBACA,gBACA,WAEA,aACA,sBACA,iBACA,oBAEA,WACA,oBACA,eAEA,GAAG,eACD,aAAa,CAAC;EAElB,QAAQ,SAAR;GACE,KAAK,oBACH,OAAO;IACL,GAAG;IAEH;IAEA;IACA;IACA;IACA;IACA;IAEA;IACA;IACA;IACA;IAEA;IACA;IACA;GACF;GACF,SACE,OAAO,CACL,YACA;IACE;IACA;IACA,GAAI,gBAAgB,EAAE,UAAU,cAAc,IAAI,CAAC;IAEnD;IACA;IACA;IACA;IACA;IAEA,sBAAsB,eAAe;IACrC;IACA;IAEA,oBAAoB,aAAa;IACjC;GACF,CACF;EACJ;CACF;;;;;;CAYA,MAAM,YAAY,UAAqC;EAIrD,OAAO,KAAK;CACd;;;;;;;;CAWA,MAAM,gBAAgB,UAAmB,WAAsC;EAE7E,IAAI,EAAE,oBAAoB,WAAW,OAAO;EAI5C,MAAM,cAAc,SAAS,QAAQ,IAAI,cAAc;EACvD,IAAI,CAAC,aAAa,OAAO;EAGzB,MAAM,cAAc;GAClB,OAAO,MAAgB,EAAE,KAAK;GAC9B,OAAO,MAAgB,EAAE,KAAK;GAC9B,OAAO,MAAgB,EAAE,KAAK;GAC9B,cAAc,MAAgB,EAAE,YAAY;GAC5C,WAAW,MAAgB,EAAE,SAAS;EACxC;EACA,MAAM,aAAa,QAAiD,OAAO;EAK3E,MAAM,SACF,OAAO,cAAc,YAAY,UAAU,SAAS,IAClD,YAAY,aACZ,YAAY,SAAS,UAAU,IAC7B,YAAY,OACZ,YAAY,SAAS,MAAM,IACzB,YAAY,OACZ,YAAY;EAGtB,IAAI;GACF,OAAO,MAAM,OAAO,QAAQ;EAC9B,QACM;GAGJ,QAAQ,IAAI,4BAA4B;GACxC,OAAO;EACT;CACF;;;;;;;CAcA,MAAM,gBAAgB,KAAgC;EACpD,OAAO;CACT;;;;;;;;CAWA,MAAM,kBAAkB,KAAc,UAA4C;EAGhF,MAAM,OAAO,KAAK;EAClB,IAAI,OAAO,SAAS,YAAY,OAAO;EAEvC,MAAM,EAAE,aAAa,cAAc,YAAY,CAAC;EAIhD,MAAM,WAFO,kBAAkB,GAAG,IAAI,QAAQ,IAAI,EAAE,IAAI,SAGpD,eAAe,KAAK,0BACpB,aAAc,MAAM,KAAK,gBAAgB,MAAM,KAAK,gBAAgB,MAAM,iBAAiB,GAAG,CAAC,CAAC;EAEpG,IAAI;GACF,KAAK,SAAS,UAAU,MAAM,iBAAiB,GAAG,CAAC;EACrD,QACM,CAEN;EACA,OAAO;CACT;;;;;;CAaA,MAAM,cAA0C;EAI9C,OAAO,CAAC;CACV;;;;;;;CAcA,MAAM,mBAAmB,aAAwC;EAC/D,OAAO;CACT;AACF"}
@@ -0,0 +1,212 @@
1
+ import { getIsOnlyAnObject } from "./_utils.js";
2
+ //#region src/Classes/RESTAPI/partials/CredentialsProcessing.ts
3
+ /**
4
+ * Декодирует payload JWT-токена.
5
+ *
6
+ * @param token - JWT-строка вида `header.payload.signature`.
7
+ * @returns Распарсенный payload (объект) либо `null`, если декодирование не удалось.
8
+ */
9
+ function decodeJWT(token) {
10
+ try {
11
+ const payload = token.split(".")[1] ?? "";
12
+ const decoded = JSON.parse(atob(payload));
13
+ return getIsOnlyAnObject(decoded) ? decoded : null;
14
+ } catch {
15
+ return null;
16
+ }
17
+ }
18
+ /**
19
+ * Обработчик учётных данных (токенов): добавляет токен в запросы и (опционально) реализует
20
+ * флоу рефреша токенов. Конфигурируется через настройку `credentialsProcessing`.
21
+ */
22
+ var CredentialsProcessing = class {
23
+ /** Включён ли флоу рефреша токенов. */
24
+ isUseRefreshTokensPropcessing = false;
25
+ /** Учётные данные по умолчанию (пустые). */
26
+ DEFAULT_CREDENTIALS = {};
27
+ /** Внешний метод получения учётных данных. */
28
+ getCredentialsByOuter;
29
+ /** Внешний метод формирования заголовков авторизации по токену. */
30
+ getHeadersForAuthorize;
31
+ /** Необязательный преобразователь учётных данных после getCredentials. */
32
+ importCredentials;
33
+ /** Необязательный метод сохранения учётных данных (обязателен для флоу рефреша). */
34
+ saveCredentials;
35
+ /** Внешний метод рефреша учётных данных. */
36
+ refreshCredentialsByOuter;
37
+ /** Полный путь до эндпоинта рефреша токена. */
38
+ REFRESH_TOKEN_PATH;
39
+ /** Коды ответа, по которым триггерится попытка рефреша. */
40
+ CODES_USING_THE_REFRESH_ATTEMPT;
41
+ /** Ключ флага «рефреш начат» в localStorage. */
42
+ REFRESH_TOKEN_FLAG = "refreshTokenFlag";
43
+ /** Интервал опроса флага обновления токена, мс. */
44
+ INTERVAL_FOR_CHECKING_TOKEN_UPDATE = 50;
45
+ /** Колбэк, вызываемый после неудачного рефреша. */
46
+ callbackAfterRejectRefresh;
47
+ /** Доступ к верхнему контексту RESTAPI (навешивается из конструктора RESTAPI). */
48
+ getRESTAPIContext;
49
+ constructor(settings) {
50
+ const { credentialsProcessing } = settings;
51
+ const { getCredentials, getHeadersForAuthorize, importCredentials, saveCredentials, isUseRefreshTokensPropcessing = false, refreshCredentials, REFRESH_TOKEN_PATH, CODES_USING_THE_REFRESH_ATTEMPT, REFRESH_TOKEN_FLAG = "refreshTokenFlag", INTERVAL_FOR_CHECKING_TOKEN_UPDATE = 50, callbackAfterRejectRefresh } = credentialsProcessing || {};
52
+ if (typeof getCredentials !== "function") throw new Error("No getCredentials method [CredentialsProcessing]");
53
+ if (typeof getHeadersForAuthorize !== "function") throw new TypeError("No getHeadersForAuthorize method [CredentialsProcessing]");
54
+ if (importCredentials && typeof importCredentials !== "function") throw new Error("Bad importCredentials method [CredentialsProcessing]");
55
+ this.isUseRefreshTokensPropcessing = Boolean(isUseRefreshTokensPropcessing);
56
+ this.DEFAULT_CREDENTIALS = {};
57
+ this.getCredentialsByOuter = () => getCredentials();
58
+ this.getHeadersForAuthorize = (token) => {
59
+ const result = getHeadersForAuthorize(token);
60
+ return getIsOnlyAnObject(result) ? result : {};
61
+ };
62
+ if (typeof importCredentials === "function") this.importCredentials = (cred) => importCredentials(cred);
63
+ if (saveCredentials || isUseRefreshTokensPropcessing) if (typeof saveCredentials !== "function") throw new Error("No saveCredentials method [CredentialsProcessing]");
64
+ else this.saveCredentials = (cred) => saveCredentials(cred);
65
+ if (isUseRefreshTokensPropcessing) {
66
+ if (typeof refreshCredentials === "function") this.refreshCredentialsByOuter = (cred) => refreshCredentials(cred);
67
+ else {
68
+ if (typeof this.refreshCredentialsByOuter === "function" && typeof REFRESH_TOKEN_PATH !== "string") throw new TypeError("No REFRESH_TOKEN_PATH [CredentialsProcessing]");
69
+ this.REFRESH_TOKEN_PATH = typeof REFRESH_TOKEN_PATH === "string" ? REFRESH_TOKEN_PATH : void 0;
70
+ }
71
+ if (!Array.isArray(CODES_USING_THE_REFRESH_ATTEMPT)) throw new TypeError("No CODES_USING_THE_REFRESH_ATTEMPT [CredentialsProcessing]");
72
+ if (!CODES_USING_THE_REFRESH_ATTEMPT.every((i) => typeof i === "number")) throw new Error("Invalid format of CODES_USING_THE_REFRESH_ATTEMPT elements [CredentialsProcessing]");
73
+ if (typeof REFRESH_TOKEN_FLAG !== "string") throw new Error("Bad REFRESH_TOKEN_FLAG [CredentialsProcessing]");
74
+ if (typeof INTERVAL_FOR_CHECKING_TOKEN_UPDATE !== "number") throw new TypeError("Bad INTERVAL_FOR_CHECKING_TOKEN_UPDATE [CredentialsProcessing]");
75
+ if (typeof INTERVAL_FOR_CHECKING_TOKEN_UPDATE !== "number") throw new TypeError("Bad INTERVAL_FOR_CHECKING_TOKEN_UPDATE [CredentialsProcessing]");
76
+ if (callbackAfterRejectRefresh && typeof callbackAfterRejectRefresh !== "function") throw new Error("Bad INTERVAL_FOR_CHECKING_TOKEN_UPDATE [CredentialsProcessing]");
77
+ this.CODES_USING_THE_REFRESH_ATTEMPT = CODES_USING_THE_REFRESH_ATTEMPT;
78
+ this.REFRESH_TOKEN_FLAG = REFRESH_TOKEN_FLAG;
79
+ this.INTERVAL_FOR_CHECKING_TOKEN_UPDATE = INTERVAL_FOR_CHECKING_TOKEN_UPDATE;
80
+ if (typeof callbackAfterRejectRefresh === "function") this.callbackAfterRejectRefresh = () => callbackAfterRejectRefresh();
81
+ }
82
+ }
83
+ /** Возвращает значение флага «рефреш начат» из localStorage. */
84
+ getIsTokenStartRefresh() {
85
+ return localStorage.getItem(this.REFRESH_TOKEN_FLAG);
86
+ }
87
+ /** Выставляет флаг «рефреш начат» в localStorage. */
88
+ setIsTokenStartRefresh() {
89
+ localStorage.setItem(this.REFRESH_TOKEN_FLAG, String(true));
90
+ }
91
+ /** Снимает флаг «рефреш начат» из localStorage. */
92
+ removeIsTokenStartRefresh() {
93
+ localStorage.removeItem(this.REFRESH_TOKEN_FLAG);
94
+ }
95
+ /**
96
+ * Возвращает текущие учётные данные (с учётом importCredentials и проверки истечения JWT).
97
+ *
98
+ * @param isCatchCallbackProcess - флаг процесса обработки ошибки (отключает проверку истечения).
99
+ * @param callback - необязательный колбэк, получающий итоговые учётные данные.
100
+ * @returns Промис с учётными данными.
101
+ */
102
+ async getCredentials(isCatchCallbackProcess, callback) {
103
+ let credentials = await this.getCredentialsByOuter();
104
+ if (typeof this.importCredentials === "function") credentials = await this.importCredentials(credentials);
105
+ const credObj = getIsOnlyAnObject(credentials) ? credentials : {};
106
+ const token = credObj.token || null;
107
+ if (token && !isCatchCallbackProcess) {
108
+ let decoded;
109
+ try {
110
+ decoded = decodeJWT(token);
111
+ } catch {
112
+ decoded = null;
113
+ }
114
+ const currentTime = Date.now() / 1e3;
115
+ if (decoded !== null && Number(decoded.exp) < currentTime) credObj.isNeedRefresh = true;
116
+ }
117
+ if (callback) await callback({
118
+ ...credObj,
119
+ isCatchCallbackProcess
120
+ });
121
+ return {
122
+ ...credObj,
123
+ isCatchCallbackProcess
124
+ };
125
+ }
126
+ /**
127
+ * Выполняет рефреш учётных данных (внешним методом либо дефолтным OAuth-флоу).
128
+ *
129
+ * @param currentCredentials - текущие учётные данные.
130
+ * @param callback - необязательный колбэк сохранения новых учётных данных.
131
+ * @returns Промис с новыми учётными данными.
132
+ */
133
+ async refreshCredentials(currentCredentials, callback) {
134
+ const CONTEXT = this;
135
+ async function finalize(cred) {
136
+ if (callback) await callback(cred);
137
+ return Promise.resolve(cred).then(async (res) => {
138
+ CONTEXT.removeIsTokenStartRefresh();
139
+ return res;
140
+ });
141
+ }
142
+ if (!currentCredentials?.token || !currentCredentials?.refreshToken) return finalize(CONTEXT.DEFAULT_CREDENTIALS);
143
+ async function refreshCredentialsByDefault() {
144
+ const { token, refreshToken } = currentCredentials;
145
+ const headers = new Headers(Object.entries(CONTEXT.getHeadersForAuthorize(token || "")).map(([key, value]) => [key, `${value}`]));
146
+ const body = new FormData();
147
+ body.append("grant_type", "refresh_token");
148
+ body.append("refresh_token", refreshToken || "");
149
+ body.append("client_id", "oauth");
150
+ body.append("client_secret", "secret");
151
+ body.append("access_type", "offline");
152
+ return fetch(`${CONTEXT.REFRESH_TOKEN_PATH}`, {
153
+ mode: "cors",
154
+ method: "POST",
155
+ headers,
156
+ body,
157
+ redirect: "follow"
158
+ });
159
+ }
160
+ const newCredentials = typeof CONTEXT.refreshCredentialsByOuter === "function" ? await CONTEXT.refreshCredentialsByOuter(currentCredentials) : await refreshCredentialsByDefault();
161
+ return finalize(getIsOnlyAnObject(newCredentials) ? newCredentials : CONTEXT.DEFAULT_CREDENTIALS);
162
+ }
163
+ /**
164
+ * Ожидает завершения рефреша токена (или запускает его флаг при необходимости).
165
+ *
166
+ * @param isNeedRefresh - выставить ли флаг «рефреш начат» при отсутствии активного рефреша.
167
+ * @returns Промис, который резолвится по завершении ожидания.
168
+ */
169
+ async waitRefresh(isNeedRefresh) {
170
+ return new Promise((resolve) => {
171
+ if (!this.getIsTokenStartRefresh()) {
172
+ if (isNeedRefresh) this.setIsTokenStartRefresh();
173
+ resolve();
174
+ } else {
175
+ const intervalId = setInterval(() => {
176
+ if (!this.getIsTokenStartRefresh()) {
177
+ clearInterval(intervalId);
178
+ resolve();
179
+ }
180
+ }, this.INTERVAL_FOR_CHECKING_TOKEN_UPDATE);
181
+ }
182
+ });
183
+ }
184
+ /**
185
+ * Обрабатывает учётные данные: при необходимости рефрешит токен и возвращает актуальные данные.
186
+ *
187
+ * @param cred - текущие учётные данные.
188
+ * @returns Промис с актуальными учётными данными (с флагом isRefreshFailed при неудаче).
189
+ */
190
+ async processCredentials(cred) {
191
+ if (!cred.isNeedRefresh && !cred.isCatchCallbackProcess) return cred;
192
+ const CONTEXT = this;
193
+ return CONTEXT.refreshCredentials(cred, (response) => CONTEXT.saveCredentials?.(response)).then(() => {
194
+ return new Promise((resolve) => {
195
+ setTimeout(async () => {
196
+ const newCredentials = await CONTEXT.getCredentials();
197
+ if (!newCredentials?.token) {
198
+ newCredentials.isRefreshFailed = true;
199
+ setTimeout(() => {
200
+ CONTEXT?.callbackAfterRejectRefresh?.();
201
+ }, 0);
202
+ }
203
+ resolve(newCredentials);
204
+ }, 0);
205
+ });
206
+ });
207
+ }
208
+ };
209
+ //#endregion
210
+ export { decodeJWT, CredentialsProcessing as default };
211
+
212
+ //# sourceMappingURL=CredentialsProcessing.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CredentialsProcessing.js","names":[],"sources":["../../../../../src/Classes/RESTAPI/partials/CredentialsProcessing.ts"],"sourcesContent":["import type { CredentialsState, RESTAPISettings, UnknownRecord } from './types';\nimport { getIsOnlyAnObject } from './_utils';\n\n/**\n * Декодирует payload JWT-токена.\n *\n * @param token - JWT-строка вида `header.payload.signature`.\n * @returns Распарсенный payload (объект) либо `null`, если декодирование не удалось.\n */\nexport function decodeJWT(token: string): UnknownRecord | null {\n try {\n const payload = token.split('.')[1] ?? '';\n const decoded: unknown = JSON.parse(atob(payload));\n return getIsOnlyAnObject(decoded) ? decoded : null;\n }\n catch {\n return null;\n }\n}\n\n/**\n * Обработчик учётных данных (токенов): добавляет токен в запросы и (опционально) реализует\n * флоу рефреша токенов. Конфигурируется через настройку `credentialsProcessing`.\n */\nclass CredentialsProcessing {\n // ? Индекс-сигнатура: getRESTAPIContext навешивается извне (из конструктора RESTAPI).\n [key: string]: unknown;\n\n /** Включён ли флоу рефреша токенов. */\n isUseRefreshTokensPropcessing = false;\n\n /** Учётные данные по умолчанию (пустые). */\n DEFAULT_CREDENTIALS: CredentialsState = {};\n\n /** Внешний метод получения учётных данных. */\n getCredentialsByOuter!: () => unknown;\n\n /** Внешний метод формирования заголовков авторизации по токену. */\n getHeadersForAuthorize!: (token: string) => UnknownRecord;\n\n /** Необязательный преобразователь учётных данных после getCredentials. */\n importCredentials?: (cred: unknown) => unknown;\n\n /** Необязательный метод сохранения учётных данных (обязателен для флоу рефреша). */\n saveCredentials?: (cred: unknown) => unknown;\n\n /** Внешний метод рефреша учётных данных. */\n refreshCredentialsByOuter?: (cred: CredentialsState) => unknown;\n\n /** Полный путь до эндпоинта рефреша токена. */\n REFRESH_TOKEN_PATH?: string;\n\n /** Коды ответа, по которым триггерится попытка рефреша. */\n CODES_USING_THE_REFRESH_ATTEMPT?: number[];\n\n /** Ключ флага «рефреш начат» в localStorage. */\n REFRESH_TOKEN_FLAG = 'refreshTokenFlag';\n\n /** Интервал опроса флага обновления токена, мс. */\n INTERVAL_FOR_CHECKING_TOKEN_UPDATE = 50;\n\n /** Колбэк, вызываемый после неудачного рефреша. */\n callbackAfterRejectRefresh?: () => unknown;\n\n /** Доступ к верхнему контексту RESTAPI (навешивается из конструктора RESTAPI). */\n getRESTAPIContext?: () => unknown;\n\n constructor(settings: RESTAPISettings) {\n const { credentialsProcessing } = settings;\n const {\n // ? Для корректной работы установки токенов в запросы от API\n // ? нужно передавать методы getCredentials и getHeadersForAuthorize\n getCredentials,\n getHeadersForAuthorize, // ? На вход получит токен, должна вернуть объект для коструктора Headers\n\n // ? Так же опционально можно передавать\n importCredentials, // ? если он передается, то он будет применяться к выводу от вызова getCredentials\n saveCredentials, // ? можно будет найти в объекте credentialsProcessing, чтобы использовать кастомными методами\n\n // ! Либо вызов getCredentials, либо цепочка вызовов importCredentials(getCredentials())\n // ! должна возвращать требуемую классом структуру\n // ! Класс требует структуры\n // ! - { token }, если флоу рефреш токена НЕ используется\n // ! - { token, refreshToken, expires }, если используется флоу рефреш токена\n\n // *********\n\n // ? Подключает флоу рефреша токенов\n isUseRefreshTokensPropcessing = false,\n\n // ! Для корректной работы флоу рефреша токенов передача метода saveCredentials становится ОБЯЗАТЕЛЬНОЙ\n\n // ? Так же для корректной работы флоу рефреша токенов нужно\n // ? - либо\n refreshCredentials, // ! метод должен возвращать такую же структуру как и метод getCredentials,\n // ? на вход получит текущие креды, к выходу будет применен importCredentials, если этот метод передавался\n // ? - либо\n REFRESH_TOKEN_PATH, // ! REFRESH_TOKEN_PATH передается ПОЛНОСТЬЮ (глобальная адресация)!\n CODES_USING_THE_REFRESH_ATTEMPT, // ? указывает по каким кодам ответа триггериться рефреш, массив чисел\n\n // ? Опционально\n REFRESH_TOKEN_FLAG = 'refreshTokenFlag',\n INTERVAL_FOR_CHECKING_TOKEN_UPDATE = 50, // ms\n callbackAfterRejectRefresh,\n } = credentialsProcessing || {};\n\n if (typeof getCredentials !== 'function') throw new Error('No getCredentials method [CredentialsProcessing]');\n if (typeof getHeadersForAuthorize !== 'function') {\n throw new TypeError('No getHeadersForAuthorize method [CredentialsProcessing]');\n }\n if (importCredentials && typeof importCredentials !== 'function') {\n throw new Error('Bad importCredentials method [CredentialsProcessing]');\n }\n\n this.isUseRefreshTokensPropcessing = Boolean(isUseRefreshTokensPropcessing);\n this.DEFAULT_CREDENTIALS = {};\n // ? Внешние функции оборачиваем в типизированные обёртки (без приведения типов / типа Function).\n this.getCredentialsByOuter = () => getCredentials();\n this.getHeadersForAuthorize = (token: string) => {\n const result = getHeadersForAuthorize(token);\n return getIsOnlyAnObject(result) ? result : {};\n };\n if (typeof importCredentials === 'function') this.importCredentials = (cred: unknown) => importCredentials(cred);\n\n // ? Если метод передан или если не передан, но включен флоу обновления токенов (тогда saveCredentials обязателен)\n if (saveCredentials || isUseRefreshTokensPropcessing) {\n if (typeof saveCredentials !== 'function') throw new Error('No saveCredentials method [CredentialsProcessing]');\n else this.saveCredentials = (cred: unknown) => saveCredentials(cred);\n }\n\n if (isUseRefreshTokensPropcessing) {\n if (typeof refreshCredentials === 'function') {\n this.refreshCredentialsByOuter = (cred: CredentialsState) => refreshCredentials(cred);\n }\n else {\n if (typeof this.refreshCredentialsByOuter === 'function' && typeof REFRESH_TOKEN_PATH !== 'string') {\n throw new TypeError('No REFRESH_TOKEN_PATH [CredentialsProcessing]');\n }\n this.REFRESH_TOKEN_PATH = typeof REFRESH_TOKEN_PATH === 'string' ? REFRESH_TOKEN_PATH : undefined;\n }\n\n if (!Array.isArray(CODES_USING_THE_REFRESH_ATTEMPT)) {\n throw new TypeError('No CODES_USING_THE_REFRESH_ATTEMPT [CredentialsProcessing]');\n }\n if (!CODES_USING_THE_REFRESH_ATTEMPT.every(i => typeof i === 'number')) {\n throw new Error('Invalid format of CODES_USING_THE_REFRESH_ATTEMPT elements [CredentialsProcessing]');\n }\n\n if (typeof REFRESH_TOKEN_FLAG !== 'string') throw new Error('Bad REFRESH_TOKEN_FLAG [CredentialsProcessing]');\n if (typeof INTERVAL_FOR_CHECKING_TOKEN_UPDATE !== 'number') {\n throw new TypeError('Bad INTERVAL_FOR_CHECKING_TOKEN_UPDATE [CredentialsProcessing]');\n }\n if (typeof INTERVAL_FOR_CHECKING_TOKEN_UPDATE !== 'number') {\n throw new TypeError('Bad INTERVAL_FOR_CHECKING_TOKEN_UPDATE [CredentialsProcessing]');\n }\n if (callbackAfterRejectRefresh && typeof callbackAfterRejectRefresh !== 'function') {\n throw new Error('Bad INTERVAL_FOR_CHECKING_TOKEN_UPDATE [CredentialsProcessing]');\n }\n\n this.CODES_USING_THE_REFRESH_ATTEMPT = CODES_USING_THE_REFRESH_ATTEMPT;\n this.REFRESH_TOKEN_FLAG = REFRESH_TOKEN_FLAG;\n this.INTERVAL_FOR_CHECKING_TOKEN_UPDATE = INTERVAL_FOR_CHECKING_TOKEN_UPDATE;\n\n if (typeof callbackAfterRejectRefresh === 'function') this.callbackAfterRejectRefresh = () => callbackAfterRejectRefresh();\n }\n }\n\n /** Возвращает значение флага «рефреш начат» из localStorage. */\n getIsTokenStartRefresh(): string | null {\n return localStorage.getItem(this.REFRESH_TOKEN_FLAG);\n }\n\n /** Выставляет флаг «рефреш начат» в localStorage. */\n setIsTokenStartRefresh(): void {\n localStorage.setItem(this.REFRESH_TOKEN_FLAG, String(true));\n }\n\n /** Снимает флаг «рефреш начат» из localStorage. */\n removeIsTokenStartRefresh(): void {\n localStorage.removeItem(this.REFRESH_TOKEN_FLAG);\n }\n\n /**\n * Возвращает текущие учётные данные (с учётом importCredentials и проверки истечения JWT).\n *\n * @param isCatchCallbackProcess - флаг процесса обработки ошибки (отключает проверку истечения).\n * @param callback - необязательный колбэк, получающий итоговые учётные данные.\n * @returns Промис с учётными данными.\n */\n async getCredentials(isCatchCallbackProcess?: boolean, callback?: (cred: CredentialsState) => unknown): Promise<CredentialsState> {\n let credentials: unknown = await this.getCredentialsByOuter();\n\n if (typeof this.importCredentials === 'function') credentials = await this.importCredentials(credentials);\n const credObj: CredentialsState = getIsOnlyAnObject(credentials) ? credentials : {};\n\n const token = credObj.token || null;\n\n if (token && !isCatchCallbackProcess) {\n let decoded: UnknownRecord | null;\n try {\n decoded = decodeJWT(token);\n }\n catch {\n decoded = null;\n }\n const currentTime = Date.now() / 1000;\n if (decoded !== null && Number(decoded.exp) < currentTime) credObj.isNeedRefresh = true;\n }\n\n if (callback) await callback({ ...credObj, isCatchCallbackProcess });\n return { ...credObj, isCatchCallbackProcess };\n }\n\n /**\n * Выполняет рефреш учётных данных (внешним методом либо дефолтным OAuth-флоу).\n *\n * @param currentCredentials - текущие учётные данные.\n * @param callback - необязательный колбэк сохранения новых учётных данных.\n * @returns Промис с новыми учётными данными.\n */\n async refreshCredentials(currentCredentials: CredentialsState, callback?: (cred: CredentialsState) => unknown): Promise<CredentialsState> {\n const CONTEXT = this;\n\n async function finalize(cred: CredentialsState): Promise<CredentialsState> {\n if (callback) await callback(cred);\n return Promise.resolve(cred).then(async (res) => {\n CONTEXT.removeIsTokenStartRefresh();\n return res;\n });\n }\n\n if (!currentCredentials?.token || !currentCredentials?.refreshToken) return finalize(CONTEXT.DEFAULT_CREDENTIALS);\n\n // ! ВНИМАНИЕ! Данный механизм рефреша принят на проекте finturfreactfrontend (админка)\n // ! На кабинете он ТОЧНО НЕ ТАКОЙ\n async function refreshCredentialsByDefault(): Promise<Response> {\n const { token, refreshToken } = currentCredentials;\n // ? Заголовки авторизации формируем через конструктор Headers из пар «ключ-значение».\n const headers = new Headers(Object.entries(CONTEXT.getHeadersForAuthorize(token || '')).map(([key, value]): [string, string] => [key, `${value}`]));\n\n const body = new FormData();\n body.append('grant_type', 'refresh_token');\n body.append('refresh_token', refreshToken || '');\n body.append('client_id', 'oauth');\n body.append('client_secret', 'secret');\n body.append('access_type', 'offline');\n\n return fetch(`${CONTEXT.REFRESH_TOKEN_PATH}`, {\n mode: 'cors',\n method: 'POST',\n headers,\n body,\n redirect: 'follow',\n });\n }\n\n // ? Передавайте собственный refreshCredentials при получении экземляра RESTAPI, если не уверены,\n // ? что механизм рефреша токенов ИМЕННО ТАКОЙ как в ф-и refreshCredentialsByDefault!\n // ! currentCredentials передаются в формате класса! ({ token, refreshToken, expires })\n const newCredentials\n = typeof CONTEXT.refreshCredentialsByOuter === 'function'\n ? await CONTEXT.refreshCredentialsByOuter(currentCredentials)\n : await refreshCredentialsByDefault();\n\n return finalize(getIsOnlyAnObject(newCredentials) ? newCredentials : CONTEXT.DEFAULT_CREDENTIALS);\n }\n\n /**\n * Ожидает завершения рефреша токена (или запускает его флаг при необходимости).\n *\n * @param isNeedRefresh - выставить ли флаг «рефреш начат» при отсутствии активного рефреша.\n * @returns Промис, который резолвится по завершении ожидания.\n */\n async waitRefresh(isNeedRefresh?: boolean): Promise<void> {\n return new Promise<void>((resolve) => {\n if (!this.getIsTokenStartRefresh()) {\n if (isNeedRefresh) this.setIsTokenStartRefresh();\n resolve();\n }\n else {\n const intervalId = setInterval(() => {\n if (!this.getIsTokenStartRefresh()) {\n clearInterval(intervalId);\n resolve();\n }\n }, this.INTERVAL_FOR_CHECKING_TOKEN_UPDATE);\n }\n });\n }\n\n /**\n * Обрабатывает учётные данные: при необходимости рефрешит токен и возвращает актуальные данные.\n *\n * @param cred - текущие учётные данные.\n * @returns Промис с актуальными учётными данными (с флагом isRefreshFailed при неудаче).\n */\n async processCredentials(cred: CredentialsState): Promise<CredentialsState> {\n if (!cred.isNeedRefresh && !cred.isCatchCallbackProcess) return cred;\n\n const CONTEXT = this;\n\n return CONTEXT.refreshCredentials(cred, response => CONTEXT.saveCredentials?.(response)).then(() => {\n return new Promise<CredentialsState>((resolve) => {\n setTimeout(async () => {\n const newCredentials = await CONTEXT.getCredentials();\n if (!newCredentials?.token) {\n newCredentials.isRefreshFailed = true;\n setTimeout(() => {\n CONTEXT?.callbackAfterRejectRefresh?.();\n }, 0);\n }\n resolve(newCredentials);\n }, 0);\n });\n });\n }\n}\n\nexport default CredentialsProcessing;\n"],"mappings":"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"}