@beinformed/ui 1.18.3 → 1.18.6

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 (236) hide show
  1. package/CHANGELOG.md +17 -0
  2. package/esm/constants/Constants.js +1 -0
  3. package/esm/constants/Constants.js.map +1 -1
  4. package/esm/constants/Settings.js +10 -3
  5. package/esm/constants/Settings.js.map +1 -1
  6. package/esm/hooks/useAuthentication.js +7 -50
  7. package/esm/hooks/useAuthentication.js.map +1 -1
  8. package/esm/i18n/Locales.js.map +1 -1
  9. package/esm/models/concepts/ConceptDetailModel.js.map +1 -1
  10. package/esm/models/form/FormModel.js +3 -1
  11. package/esm/models/form/FormModel.js.map +1 -1
  12. package/esm/models/layouthint/LayoutHintCollection.js.map +1 -1
  13. package/esm/models/tab/TabModel.js.map +1 -1
  14. package/esm/modularui/Authenticate.js +100 -21
  15. package/esm/modularui/Authenticate.js.map +1 -1
  16. package/esm/redux/actions/Preferences.js +2 -2
  17. package/esm/redux/actions/Preferences.js.map +1 -1
  18. package/esm/redux/actions/SignOut.js +6 -2
  19. package/esm/redux/actions/SignOut.js.map +1 -1
  20. package/esm/redux/connectors/SignIn.js +3 -2
  21. package/esm/redux/connectors/SignIn.js.map +1 -1
  22. package/esm/redux/connectors/SignOut.js +4 -1
  23. package/esm/redux/connectors/SignOut.js.map +1 -1
  24. package/esm/redux/reducers/AuthReducer.js +0 -10
  25. package/esm/redux/reducers/AuthReducer.js.map +1 -1
  26. package/esm/redux/types.js.map +1 -1
  27. package/esm/utils/helpers/checkResource.js +2 -0
  28. package/esm/utils/helpers/checkResource.js.map +1 -1
  29. package/lib/constants/Constants.js +3 -1
  30. package/lib/constants/Constants.js.flow +1 -0
  31. package/lib/constants/Constants.js.map +1 -1
  32. package/lib/constants/LayoutHints.js.map +1 -1
  33. package/lib/constants/Settings.js +13 -3
  34. package/lib/constants/Settings.js.flow +8 -3
  35. package/lib/constants/Settings.js.map +1 -1
  36. package/lib/exceptions/FetchException.js.map +1 -1
  37. package/lib/hooks/__tests__/useAuthentication.spec.js.flow +15 -1
  38. package/lib/hooks/useAllFormsOnModel.js.map +1 -1
  39. package/lib/hooks/useAuthentication.js +7 -55
  40. package/lib/hooks/useAuthentication.js.flow +4 -37
  41. package/lib/hooks/useAuthentication.js.map +1 -1
  42. package/lib/hooks/useContent.js.map +1 -1
  43. package/lib/hooks/useDeepCompareEffect.js.map +1 -1
  44. package/lib/hooks/useForm.js.map +1 -1
  45. package/lib/hooks/useI18n.js.map +1 -1
  46. package/lib/hooks/useModal.js.map +1 -1
  47. package/lib/hooks/useModelCatalog.js.map +1 -1
  48. package/lib/hooks/useModels.js.map +1 -1
  49. package/lib/hooks/useModularUI.js.map +1 -1
  50. package/lib/hooks/useModularUIBasic.js.map +1 -1
  51. package/lib/hooks/useModularUIModel.js.map +1 -1
  52. package/lib/hooks/useModularUIRequest.js.map +1 -1
  53. package/lib/hooks/useNotification.js.map +1 -1
  54. package/lib/hooks/usePreference.js.map +1 -1
  55. package/lib/hooks/useProgressIndicator.js.map +1 -1
  56. package/lib/hooks/useRouter.js.map +1 -1
  57. package/lib/i18n/Locale.js.map +1 -1
  58. package/lib/i18n/Locales.js.map +1 -1
  59. package/lib/i18n/Message.js.map +1 -1
  60. package/lib/i18n/withMessage.js.map +1 -1
  61. package/lib/models/actions/ActionModel.js.map +1 -1
  62. package/lib/models/application/ApplicationModel.js.map +1 -1
  63. package/lib/models/attributes/AttributeCollection.js.map +1 -1
  64. package/lib/models/attributes/AttributeContent.js.map +1 -1
  65. package/lib/models/attributes/AttributeDataHelper.js.map +1 -1
  66. package/lib/models/attributes/AttributeModel.js.map +1 -1
  67. package/lib/models/attributes/AttributeSetModel.js.map +1 -1
  68. package/lib/models/attributes/BooleanAttributeModel.js.map +1 -1
  69. package/lib/models/attributes/ChoiceAttributeModel.js.map +1 -1
  70. package/lib/models/attributes/ChoiceAttributeOptionCollection.js.map +1 -1
  71. package/lib/models/attributes/ChoiceAttributeOptionModel.js.map +1 -1
  72. package/lib/models/attributes/CompositeAttributeChildCollection.js.map +1 -1
  73. package/lib/models/attributes/CompositeAttributeModel.js.map +1 -1
  74. package/lib/models/attributes/DatetimeAttributeModel.js.map +1 -1
  75. package/lib/models/attributes/HelptextAttributeModel.js.map +1 -1
  76. package/lib/models/attributes/MemoAttributeModel.js.map +1 -1
  77. package/lib/models/attributes/MoneyAttributeModel.js.map +1 -1
  78. package/lib/models/attributes/NumberAttributeModel.js.map +1 -1
  79. package/lib/models/attributes/StringAttributeModel.js.map +1 -1
  80. package/lib/models/attributes/XMLAttributeModel.js.map +1 -1
  81. package/lib/models/attributes/_createAttribute.js.map +1 -1
  82. package/lib/models/attributes/input-constraints/ConstraintCollection.js.map +1 -1
  83. package/lib/models/attributes/input-constraints/ConstraintModel.js.map +1 -1
  84. package/lib/models/attributes/input-constraints/DateTimeDateFormatConstraint.js.map +1 -1
  85. package/lib/models/attributes/input-constraints/DateTimeTimeFormatConstraint.js.map +1 -1
  86. package/lib/models/attributes/input-constraints/FileSizeConstraint.js.map +1 -1
  87. package/lib/models/attributes/input-constraints/IBANConstraint.js.map +1 -1
  88. package/lib/models/attributes/input-constraints/NumberBoundaryConstraint.js.map +1 -1
  89. package/lib/models/attributes/input-constraints/NumberFormatConstraint.js.map +1 -1
  90. package/lib/models/base/BaseCollection.js.map +1 -1
  91. package/lib/models/base/BaseModel.js.map +1 -1
  92. package/lib/models/caseview/CaseViewModel.js.map +1 -1
  93. package/lib/models/concepts/BusinessScenarioModel.js.map +1 -1
  94. package/lib/models/concepts/ConceptDetailModel.js.map +1 -1
  95. package/lib/models/concepts/ConceptLinkModel.js.map +1 -1
  96. package/lib/models/concepts/SourceReferenceModel.js.map +1 -1
  97. package/lib/models/content/ContentLinkModel.js.map +1 -1
  98. package/lib/models/content/ContentTOCModel.js.map +1 -1
  99. package/lib/models/content/SectionModel.js.map +1 -1
  100. package/lib/models/content/SubSectionModel.js.map +1 -1
  101. package/lib/models/contentconfiguration/ContentConfigurationResults.js.map +1 -1
  102. package/lib/models/detail/DetailModel.js.map +1 -1
  103. package/lib/models/filters/BaseFilterModel.js.map +1 -1
  104. package/lib/models/form/FormModel.js +3 -1
  105. package/lib/models/form/FormModel.js.flow +1 -1
  106. package/lib/models/form/FormModel.js.map +1 -1
  107. package/lib/models/form/FormObjectModel.js.map +1 -1
  108. package/lib/models/href/Href.js.map +1 -1
  109. package/lib/models/layouthint/LayoutHintCollection.js.map +1 -1
  110. package/lib/models/links/LinkCollection.js.map +1 -1
  111. package/lib/models/links/LinkModel.js.map +1 -1
  112. package/lib/models/list/ListDetailModel.js.map +1 -1
  113. package/lib/models/list/ListHeaderModel.js.map +1 -1
  114. package/lib/models/list/ListItemCollection.js.map +1 -1
  115. package/lib/models/list/ListModel.js.map +1 -1
  116. package/lib/models/lookup/LookupOptionsModel.js.map +1 -1
  117. package/lib/models/paging/PagingModel.js.map +1 -1
  118. package/lib/models/panels/GroupingPanelModel.js.map +1 -1
  119. package/lib/models/parameter/Parameter.js.map +1 -1
  120. package/lib/models/process/ProcessStatusSettingsModel.js.map +1 -1
  121. package/lib/models/resolveModel.js.map +1 -1
  122. package/lib/models/sorting/SortingModel.js.map +1 -1
  123. package/lib/models/tab/TabModel.js.map +1 -1
  124. package/lib/models/user/UserProfileModel.js.map +1 -1
  125. package/lib/models/user/UserServicesModel.js.map +1 -1
  126. package/lib/modularui/Authenticate.js +102 -21
  127. package/lib/modularui/Authenticate.js.flow +75 -20
  128. package/lib/modularui/Authenticate.js.map +1 -1
  129. package/lib/modularui/ModularUIRequest.js.map +1 -1
  130. package/lib/modularui/ModularUIResponse.js.map +1 -1
  131. package/lib/react/ErrorBoundaryFallback.js.map +1 -1
  132. package/lib/react-client/client.js.map +1 -1
  133. package/lib/react-client/rehydrate.js.map +1 -1
  134. package/lib/react-server/__tests__/serverUtil.spec.js.flow +6 -4
  135. package/lib/react-server/createSSRComplete.js.map +1 -1
  136. package/lib/react-server/renderSSRComplete.js.map +1 -1
  137. package/lib/react-server/renderSSRMinimal.js.map +1 -1
  138. package/lib/react-server/serverNoSSR.js.map +1 -1
  139. package/lib/react-server/serverSSR.js.map +1 -1
  140. package/lib/react-server/serverUtil.js.map +1 -1
  141. package/lib/react-theme/ThemeProvider.js.map +1 -1
  142. package/lib/react-theme/createTheme.js.map +1 -1
  143. package/lib/react-theme/useTheme.js.map +1 -1
  144. package/lib/react-theme/utils/background.js.map +1 -1
  145. package/lib/react-theme/utils/colors.js.map +1 -1
  146. package/lib/react-theme/utils/contrast.js.map +1 -1
  147. package/lib/react-theme/utils/corners.js.map +1 -1
  148. package/lib/react-theme/utils/spacers.js.map +1 -1
  149. package/lib/react-theme/utils/themeProps.js.map +1 -1
  150. package/lib/redux/_i18n/actions.js.map +1 -1
  151. package/lib/redux/_i18n/reducer.js.map +1 -1
  152. package/lib/redux/_modularui/actions.js.map +1 -1
  153. package/lib/redux/_modularui/connector.js.map +1 -1
  154. package/lib/redux/_modularui/middleware.js.map +1 -1
  155. package/lib/redux/_modularui/modularuiUtils.js.map +1 -1
  156. package/lib/redux/_modularui/reducer.js.map +1 -1
  157. package/lib/redux/_modularui/selectors.js.map +1 -1
  158. package/lib/redux/_modularui/withModularUI.js.map +1 -1
  159. package/lib/redux/_router/connectors.js.map +1 -1
  160. package/lib/redux/actions/Application.js.map +1 -1
  161. package/lib/redux/actions/Authorization.js.map +1 -1
  162. package/lib/redux/actions/Error.js.map +1 -1
  163. package/lib/redux/actions/Form.js.map +1 -1
  164. package/lib/redux/actions/FormAttributeSet.js.map +1 -1
  165. package/lib/redux/actions/FormAttributeSetRepeatable.js.map +1 -1
  166. package/lib/redux/actions/FormAutosave.js.map +1 -1
  167. package/lib/redux/actions/FormAutosubmit.js.map +1 -1
  168. package/lib/redux/actions/FormValidations.js.map +1 -1
  169. package/lib/redux/actions/Notification.js.map +1 -1
  170. package/lib/redux/actions/Preferences.js +1 -1
  171. package/lib/redux/actions/Preferences.js.flow +7 -3
  172. package/lib/redux/actions/Preferences.js.map +1 -1
  173. package/lib/redux/actions/SignIn.js.map +1 -1
  174. package/lib/redux/actions/SignOut.js +6 -1
  175. package/lib/redux/actions/SignOut.js.flow +9 -5
  176. package/lib/redux/actions/SignOut.js.map +1 -1
  177. package/lib/redux/connectors/Application.js.map +1 -1
  178. package/lib/redux/connectors/Breadcrumb.js.map +1 -1
  179. package/lib/redux/connectors/CaseView.js.map +1 -1
  180. package/lib/redux/connectors/ConceptDetail.js.map +1 -1
  181. package/lib/redux/connectors/ContentBrowser.js.map +1 -1
  182. package/lib/redux/connectors/ContentDetail.js.map +1 -1
  183. package/lib/redux/connectors/ContentDetailSection.js.map +1 -1
  184. package/lib/redux/connectors/Form.js.map +1 -1
  185. package/lib/redux/connectors/FormAttributeSet.js.map +1 -1
  186. package/lib/redux/connectors/ListDetail.js.map +1 -1
  187. package/lib/redux/connectors/Modal.js.map +1 -1
  188. package/lib/redux/connectors/ModelCatalog.js.map +1 -1
  189. package/lib/redux/connectors/Notification.js.map +1 -1
  190. package/lib/redux/connectors/PanelRenderer.js.map +1 -1
  191. package/lib/redux/connectors/Preferences.js.map +1 -1
  192. package/lib/redux/connectors/Progress.js.map +1 -1
  193. package/lib/redux/connectors/ProgressIndicator.js.map +1 -1
  194. package/lib/redux/connectors/QuickSearch.js.map +1 -1
  195. package/lib/redux/connectors/SignIn.js +3 -5
  196. package/lib/redux/connectors/SignIn.js.flow +1 -6
  197. package/lib/redux/connectors/SignIn.js.map +1 -1
  198. package/lib/redux/connectors/SignOut.js +5 -1
  199. package/lib/redux/connectors/SignOut.js.flow +2 -1
  200. package/lib/redux/connectors/SignOut.js.map +1 -1
  201. package/lib/redux/connectors/Tab.js.map +1 -1
  202. package/lib/redux/reducers/AuthReducer.js +0 -11
  203. package/lib/redux/reducers/AuthReducer.js.flow +0 -11
  204. package/lib/redux/reducers/AuthReducer.js.map +1 -1
  205. package/lib/redux/reducers/__tests__/AuthReducer.spec.js.flow +0 -9
  206. package/lib/redux/store/configureStore.js.map +1 -1
  207. package/lib/redux/types.js.flow +0 -1
  208. package/lib/redux/types.js.map +1 -1
  209. package/lib/utils/browser/Cookies.js.map +1 -1
  210. package/lib/utils/datetime/DateTimeUtil.js.map +1 -1
  211. package/lib/utils/fetch/universalFetch.js.map +1 -1
  212. package/lib/utils/fetch/xhr.js.map +1 -1
  213. package/lib/utils/helpers/checkResource.js +2 -0
  214. package/lib/utils/helpers/checkResource.js.flow +3 -0
  215. package/lib/utils/helpers/checkResource.js.map +1 -1
  216. package/lib/utils/helpers/objects.js.map +1 -1
  217. package/lib/utils/helpers/sanitizeHtml.js.map +1 -1
  218. package/lib/utils/helpers/text.js.map +1 -1
  219. package/lib/utils/number/formatValue.js.map +1 -1
  220. package/lib/utils/number/parseNumbers.js.map +1 -1
  221. package/package.json +22 -22
  222. package/src/constants/Constants.js +1 -0
  223. package/src/constants/Settings.js +8 -3
  224. package/src/hooks/__tests__/useAuthentication.spec.js +15 -1
  225. package/src/hooks/useAuthentication.js +4 -37
  226. package/src/models/form/FormModel.js +1 -1
  227. package/src/modularui/Authenticate.js +75 -20
  228. package/src/react-server/__tests__/serverUtil.spec.js +6 -4
  229. package/src/redux/actions/Preferences.js +7 -3
  230. package/src/redux/actions/SignOut.js +9 -5
  231. package/src/redux/connectors/SignIn.js +1 -6
  232. package/src/redux/connectors/SignOut.js +2 -1
  233. package/src/redux/reducers/AuthReducer.js +0 -11
  234. package/src/redux/reducers/__tests__/AuthReducer.spec.js +0 -9
  235. package/src/redux/types.js +0 -1
  236. package/src/utils/helpers/checkResource.js +3 -0
@@ -1 +1 @@
1
- {"version":3,"file":"DateTimeUtil.js","names":["BaseDateTimeUtil","isoFormat","_isoFormat","locale","nl","enGB","weekStartsOn","DEFAULT_WEEK_STARTS_ON","firstWeekContainsDate","DEFAULT_FIRST_WEEK_CONTAINS_DATE","date","inputFormat","getOptions","Date","targetFormat","parsedDate","toDate","getLocale","sourceFormat","toISO","realDate","formattedValue","isOutsideRange","replace","toUpperCase","inputDate","afterISODate","isAfter","isSame","beforeISODate","isBefore","compareDate","getTime","SATURDAY_NUMBER","SUNDAY_NUMBER","weekDay","amount","year","month","hour","minute","second","milliseconds","hours","minutes","seconds","DateUtil","ISO_DATE_FORMAT","DateTimeUtil","ISO_DATETIME_FORMAT","TimeUtil","ISO_TIME_FORMAT","TimestampUtil","ISO_TIMESTAMP_FORMAT"],"sources":["../../../src/utils/datetime/DateTimeUtil.js"],"sourcesContent":["// @flow\nimport {\n parse,\n format,\n isValid,\n isAfter,\n isBefore,\n isSameDay,\n addSeconds,\n addMinutes,\n addHours,\n addDays,\n addWeeks,\n addMonths,\n addYears,\n subSeconds,\n subMinutes,\n subHours,\n subDays,\n subWeeks,\n subMonths,\n subYears,\n startOfMonth,\n endOfMonth,\n startOfWeek,\n getHours,\n getMinutes,\n getDay,\n getWeek,\n setMilliseconds,\n setSeconds,\n setMinutes,\n setHours,\n setMonth,\n setYear,\n set,\n} from \"date-fns\";\nimport { nl, enGB } from \"date-fns/locale\";\n\nimport { getCookie } from \"../browser/Cookies\";\n\nimport { getSetting } from \"../../constants/Settings\";\n\nimport {\n ISO_DATE_FORMAT,\n ISO_DATETIME_FORMAT,\n ISO_TIME_FORMAT,\n ISO_TIMESTAMP_FORMAT,\n DEFAULT_WEEK_STARTS_ON,\n DEFAULT_FIRST_WEEK_CONTAINS_DATE,\n} from \"../../constants\";\n\n/**\n * @hideconstructor\n */\nclass BaseDateTimeUtil {\n _isoFormat: string;\n\n constructor(isoFormat: string) {\n this._isoFormat = isoFormat;\n }\n\n /**\n */\n getLocale(): typeof nl | typeof enGB {\n const locale = getCookie(\"locale\") || \"en\";\n\n if (locale === \"nl\") {\n return nl;\n }\n\n return enGB;\n }\n\n // returns the options defined in settings\n getOptions(): {\n weekStartsOn: 0 | 1 | 2 | 3 | 4 | 5 | 6,\n firstWeekContainsDate: 1 | 2 | 3 | 4 | 5 | 6 | 7,\n } {\n // indicates on what day the week starts\n const weekStartsOn = getSetting(\n \"CALENDAR_WEEK_STARTS_ON\",\n DEFAULT_WEEK_STARTS_ON\n );\n\n // indicates which date indicates the first week of the year\n const firstWeekContainsDate = getSetting(\n \"CALENDAR_FIRST_WEEK_CONTAINS_DATE\",\n DEFAULT_FIRST_WEEK_CONTAINS_DATE\n );\n\n return { weekStartsOn, firstWeekContainsDate };\n }\n\n /**\n */\n toDate(date: string, inputFormat: string = this._isoFormat): Date {\n const { weekStartsOn, firstWeekContainsDate } = this.getOptions();\n\n return parse(date, inputFormat, new Date(), {\n weekStartsOn,\n firstWeekContainsDate,\n });\n }\n\n /**\n */\n toFormat(date: string | Date, targetFormat: string): string {\n const { weekStartsOn } = this.getOptions();\n\n const parsedDate = typeof date === \"string\" ? this.toDate(date) : date;\n\n if (isValid(parsedDate)) {\n return format(parsedDate, targetFormat, {\n weekStartsOn,\n locale: this.getLocale(),\n });\n }\n\n return \"Invalid Date\";\n }\n\n /**\n */\n toISO(date: string | Date, sourceFormat: string = this._isoFormat): string {\n const { weekStartsOn } = this.getOptions();\n\n const parsedDate =\n typeof date === \"string\" ? this.toDate(date, sourceFormat) : date;\n\n if (isValid(parsedDate)) {\n return format(parsedDate, this._isoFormat, {\n weekStartsOn,\n });\n }\n\n return \"Invalid Date\";\n }\n\n /**\n */\n now(): string {\n return this.toISO(new Date());\n }\n\n /**\n */\n convertFormat(sourceFormat: string): string {\n return sourceFormat ? sourceFormat : this._isoFormat;\n }\n\n /**\n * VALIDATION\n */\n hasFormat(date: string, sourceFormat: string): boolean {\n const { weekStartsOn } = this.getOptions();\n\n const realDate = this.toDate(date, sourceFormat);\n if (isValid(realDate)) {\n const formattedValue = format(realDate, sourceFormat, {\n weekStartsOn,\n });\n\n const isOutsideRange =\n isBefore(realDate, new Date(1000, 1, 1)) ||\n isAfter(realDate, new Date(9999, 11, 31));\n if (isOutsideRange) {\n return false;\n }\n\n return (\n formattedValue.replace(/0/gu, \"\").toUpperCase() ===\n date.replace(/0/gu, \"\").toUpperCase()\n );\n }\n\n return false;\n }\n\n /**\n */\n isValid(date: string, inputFormat: string = this._isoFormat): boolean {\n return isValid(this.toDate(date, inputFormat));\n }\n\n /**\n */\n isAfter(\n inputDate: string,\n afterISODate: ?string,\n inputFormat: string = this._isoFormat\n ): boolean {\n return (\n afterISODate != null &&\n isAfter(this.toDate(inputDate, inputFormat), this.toDate(afterISODate))\n );\n }\n\n /**\n */\n isSameOrAfter(\n inputDate: string,\n afterISODate: ?string,\n inputFormat: string = this._isoFormat\n ): boolean {\n return (\n afterISODate != null &&\n (this.isAfter(inputDate, afterISODate, inputFormat) ||\n this.isSame(inputDate, afterISODate, inputFormat))\n );\n }\n\n /**\n */\n isBefore(\n inputDate: string,\n beforeISODate: ?string,\n inputFormat: string = this._isoFormat\n ): boolean {\n return (\n beforeISODate != null &&\n isBefore(this.toDate(inputDate, inputFormat), this.toDate(beforeISODate))\n );\n }\n\n /**\n */\n isSameOrBefore(\n inputDate: string,\n beforeISODate: ?string,\n inputFormat: string = this._isoFormat\n ): boolean {\n return (\n beforeISODate != null &&\n (this.isBefore(inputDate, beforeISODate, inputFormat) ||\n this.isSame(inputDate, beforeISODate, inputFormat))\n );\n }\n\n /**\n */\n isSame(\n inputDate: string,\n compareDate: ?string,\n inputFormat: string = this._isoFormat\n ): boolean {\n return (\n compareDate != null &&\n this.toDate(inputDate, inputFormat).getTime() ===\n this.toDate(compareDate).getTime()\n );\n }\n\n /**\n */\n isSameDay(\n inputDate: string,\n compareDate: string,\n inputFormat: string = this._isoFormat\n ): boolean {\n return (\n compareDate != null &&\n isSameDay(\n this.toDate(inputDate, inputFormat),\n this.toDate(compareDate, inputFormat)\n )\n );\n }\n\n /**\n */\n isOther(\n inputDate: string,\n compareDate: ?string,\n inputFormat: string = this._isoFormat\n ): boolean {\n return !this.isSame(inputDate, compareDate, inputFormat);\n }\n\n /**\n */\n isWeekend(inputDate: string): boolean {\n const SATURDAY_NUMBER = 6;\n const SUNDAY_NUMBER = 0;\n const weekDay = getDay(this.toDate(inputDate));\n\n return weekDay === SATURDAY_NUMBER || weekDay === SUNDAY_NUMBER;\n }\n\n /**\n * CALCULATIONS\n */\n addSeconds(date: string, amount: number): string {\n return this.toISO(addSeconds(this.toDate(date), amount));\n }\n\n /**\n */\n addMinutes(date: string, amount: number): string {\n return this.toISO(addMinutes(this.toDate(date), amount));\n }\n\n /**\n */\n addHours(date: string, amount: number): string {\n return this.toISO(addHours(this.toDate(date), amount));\n }\n\n /**\n */\n addDays(date: string, amount: number): string {\n return this.toISO(addDays(this.toDate(date), amount));\n }\n\n /**\n */\n addWeeks(date: string, amount: number): string {\n return this.toISO(addWeeks(this.toDate(date), amount));\n }\n\n /**\n */\n addMonths(date: string, amount: number): string {\n return this.toISO(addMonths(this.toDate(date), amount));\n }\n\n /**\n */\n addYears(date: string, amount: number): string {\n return this.toISO(addYears(this.toDate(date), amount));\n }\n\n /**\n */\n subtractSeconds(date: string, amount: number): string {\n return this.toISO(subSeconds(this.toDate(date), amount));\n }\n\n /**\n */\n subtractMinutes(date: string, amount: number): string {\n return this.toISO(subMinutes(this.toDate(date), amount));\n }\n\n /**\n */\n subtractHours(date: string, amount: number): string {\n return this.toISO(subHours(this.toDate(date), amount));\n }\n\n /**\n */\n subtractDays(date: string, amount: number): string {\n return this.toISO(subDays(this.toDate(date), amount));\n }\n\n /**\n */\n subtractWeeks(date: string, amount: number): string {\n return this.toISO(subWeeks(this.toDate(date), amount));\n }\n\n /**\n */\n subtractMonths(date: string, amount: number): string {\n return this.toISO(subMonths(this.toDate(date), amount));\n }\n\n /**\n */\n subtractYears(date: string, amount: number): string {\n return this.toISO(subYears(this.toDate(date), amount));\n }\n\n /**\n * GETTERS\n */\n startOfMonth(date: string, inputFormat: string = this._isoFormat): string {\n return this.toISO(startOfMonth(this.toDate(date, inputFormat)));\n }\n\n /**\n */\n endOfMonth(date: string, inputFormat: string = this._isoFormat): string {\n return this.toISO(endOfMonth(this.toDate(date, inputFormat)));\n }\n\n /**\n */\n startOfWeek(date: string, inputFormat: string = this._isoFormat): string {\n const { weekStartsOn } = this.getOptions();\n\n return this.toISO(\n startOfWeek(this.toDate(date, inputFormat), {\n weekStartsOn,\n })\n );\n }\n\n /**\n */\n getHours(date: string | Date): number {\n const parsedDate = typeof date === \"string\" ? this.toDate(date) : date;\n return getHours(parsedDate);\n }\n\n /**\n */\n getMinutes(date: string | Date): number {\n const parsedDate = typeof date === \"string\" ? this.toDate(date) : date;\n return getMinutes(parsedDate);\n }\n\n /**\n */\n getWeek(date: string): number {\n const { weekStartsOn, firstWeekContainsDate } = this.getOptions();\n\n return getWeek(this.toDate(date), {\n weekStartsOn,\n firstWeekContainsDate,\n });\n }\n\n /**\n * SETTERS\n */\n setYear(date: string, year: number): string {\n return this.toISO(setYear(this.toDate(date), year));\n }\n\n /**\n */\n setMonth(date: string, month: number): string {\n return this.toISO(setMonth(this.toDate(date), month));\n }\n\n /**\n */\n setHour(date: string, hour: number): string {\n return this.toISO(setHours(this.toDate(date), hour));\n }\n\n /**\n */\n setMinute(date: string, minute: number): string {\n return this.toISO(setMinutes(this.toDate(date), minute));\n }\n\n /**\n */\n setSecond(date: string, second: number): string {\n return this.toISO(setSeconds(this.toDate(date), second));\n }\n\n /**\n */\n setMilliseconds(date: string, milliseconds: number): string {\n return this.toISO(setMilliseconds(this.toDate(date), milliseconds));\n }\n\n /**\n */\n setTime(\n date: string,\n hours: number,\n minutes: number,\n seconds: number,\n milliseconds: number\n ): string {\n return this.toISO(\n set(this.toDate(date), {\n hours,\n minutes,\n seconds,\n milliseconds,\n })\n );\n }\n}\n\n/**\n * DateUtil\n */\nconst DateUtil: BaseDateTimeUtil = new BaseDateTimeUtil(ISO_DATE_FORMAT);\n\n/**\n * DateTimeUtil\n */\nconst DateTimeUtil: BaseDateTimeUtil = new BaseDateTimeUtil(\n ISO_DATETIME_FORMAT\n);\n\n/**\n * TimeUtil\n */\nconst TimeUtil: BaseDateTimeUtil = new BaseDateTimeUtil(ISO_TIME_FORMAT);\n\n/**\n * TimestampUtil\n */\nconst TimestampUtil: BaseDateTimeUtil = new BaseDateTimeUtil(\n ISO_TIMESTAMP_FORMAT\n);\n\nexport { DateUtil, DateTimeUtil, TimeUtil, TimestampUtil };\n"],"mappings":"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"}
1
+ {"version":3,"file":"DateTimeUtil.js","names":["BaseDateTimeUtil","isoFormat","_isoFormat","locale","getCookie","nl","enGB","weekStartsOn","getSetting","DEFAULT_WEEK_STARTS_ON","firstWeekContainsDate","DEFAULT_FIRST_WEEK_CONTAINS_DATE","date","inputFormat","getOptions","parse","Date","targetFormat","parsedDate","toDate","isValid","format","getLocale","sourceFormat","toISO","realDate","formattedValue","isOutsideRange","isBefore","isAfter","replace","toUpperCase","inputDate","afterISODate","isSame","beforeISODate","compareDate","getTime","isSameDay","SATURDAY_NUMBER","SUNDAY_NUMBER","weekDay","getDay","amount","addSeconds","addMinutes","addHours","addDays","addWeeks","addMonths","addYears","subSeconds","subMinutes","subHours","subDays","subWeeks","subMonths","subYears","startOfMonth","endOfMonth","startOfWeek","getHours","getMinutes","getWeek","year","setYear","month","setMonth","hour","setHours","minute","setMinutes","second","setSeconds","milliseconds","setMilliseconds","hours","minutes","seconds","set","DateUtil","ISO_DATE_FORMAT","DateTimeUtil","ISO_DATETIME_FORMAT","TimeUtil","ISO_TIME_FORMAT","TimestampUtil","ISO_TIMESTAMP_FORMAT"],"sources":["../../../src/utils/datetime/DateTimeUtil.js"],"sourcesContent":["// @flow\nimport {\n parse,\n format,\n isValid,\n isAfter,\n isBefore,\n isSameDay,\n addSeconds,\n addMinutes,\n addHours,\n addDays,\n addWeeks,\n addMonths,\n addYears,\n subSeconds,\n subMinutes,\n subHours,\n subDays,\n subWeeks,\n subMonths,\n subYears,\n startOfMonth,\n endOfMonth,\n startOfWeek,\n getHours,\n getMinutes,\n getDay,\n getWeek,\n setMilliseconds,\n setSeconds,\n setMinutes,\n setHours,\n setMonth,\n setYear,\n set,\n} from \"date-fns\";\nimport { nl, enGB } from \"date-fns/locale\";\n\nimport { getCookie } from \"../browser/Cookies\";\n\nimport { getSetting } from \"../../constants/Settings\";\n\nimport {\n ISO_DATE_FORMAT,\n ISO_DATETIME_FORMAT,\n ISO_TIME_FORMAT,\n ISO_TIMESTAMP_FORMAT,\n DEFAULT_WEEK_STARTS_ON,\n DEFAULT_FIRST_WEEK_CONTAINS_DATE,\n} from \"../../constants\";\n\n/**\n * @hideconstructor\n */\nclass BaseDateTimeUtil {\n _isoFormat: string;\n\n constructor(isoFormat: string) {\n this._isoFormat = isoFormat;\n }\n\n /**\n */\n getLocale(): typeof nl | typeof enGB {\n const locale = getCookie(\"locale\") || \"en\";\n\n if (locale === \"nl\") {\n return nl;\n }\n\n return enGB;\n }\n\n // returns the options defined in settings\n getOptions(): {\n weekStartsOn: 0 | 1 | 2 | 3 | 4 | 5 | 6,\n firstWeekContainsDate: 1 | 2 | 3 | 4 | 5 | 6 | 7,\n } {\n // indicates on what day the week starts\n const weekStartsOn = getSetting(\n \"CALENDAR_WEEK_STARTS_ON\",\n DEFAULT_WEEK_STARTS_ON\n );\n\n // indicates which date indicates the first week of the year\n const firstWeekContainsDate = getSetting(\n \"CALENDAR_FIRST_WEEK_CONTAINS_DATE\",\n DEFAULT_FIRST_WEEK_CONTAINS_DATE\n );\n\n return { weekStartsOn, firstWeekContainsDate };\n }\n\n /**\n */\n toDate(date: string, inputFormat: string = this._isoFormat): Date {\n const { weekStartsOn, firstWeekContainsDate } = this.getOptions();\n\n return parse(date, inputFormat, new Date(), {\n weekStartsOn,\n firstWeekContainsDate,\n });\n }\n\n /**\n */\n toFormat(date: string | Date, targetFormat: string): string {\n const { weekStartsOn } = this.getOptions();\n\n const parsedDate = typeof date === \"string\" ? this.toDate(date) : date;\n\n if (isValid(parsedDate)) {\n return format(parsedDate, targetFormat, {\n weekStartsOn,\n locale: this.getLocale(),\n });\n }\n\n return \"Invalid Date\";\n }\n\n /**\n */\n toISO(date: string | Date, sourceFormat: string = this._isoFormat): string {\n const { weekStartsOn } = this.getOptions();\n\n const parsedDate =\n typeof date === \"string\" ? this.toDate(date, sourceFormat) : date;\n\n if (isValid(parsedDate)) {\n return format(parsedDate, this._isoFormat, {\n weekStartsOn,\n });\n }\n\n return \"Invalid Date\";\n }\n\n /**\n */\n now(): string {\n return this.toISO(new Date());\n }\n\n /**\n */\n convertFormat(sourceFormat: string): string {\n return sourceFormat ? sourceFormat : this._isoFormat;\n }\n\n /**\n * VALIDATION\n */\n hasFormat(date: string, sourceFormat: string): boolean {\n const { weekStartsOn } = this.getOptions();\n\n const realDate = this.toDate(date, sourceFormat);\n if (isValid(realDate)) {\n const formattedValue = format(realDate, sourceFormat, {\n weekStartsOn,\n });\n\n const isOutsideRange =\n isBefore(realDate, new Date(1000, 1, 1)) ||\n isAfter(realDate, new Date(9999, 11, 31));\n if (isOutsideRange) {\n return false;\n }\n\n return (\n formattedValue.replace(/0/gu, \"\").toUpperCase() ===\n date.replace(/0/gu, \"\").toUpperCase()\n );\n }\n\n return false;\n }\n\n /**\n */\n isValid(date: string, inputFormat: string = this._isoFormat): boolean {\n return isValid(this.toDate(date, inputFormat));\n }\n\n /**\n */\n isAfter(\n inputDate: string,\n afterISODate: ?string,\n inputFormat: string = this._isoFormat\n ): boolean {\n return (\n afterISODate != null &&\n isAfter(this.toDate(inputDate, inputFormat), this.toDate(afterISODate))\n );\n }\n\n /**\n */\n isSameOrAfter(\n inputDate: string,\n afterISODate: ?string,\n inputFormat: string = this._isoFormat\n ): boolean {\n return (\n afterISODate != null &&\n (this.isAfter(inputDate, afterISODate, inputFormat) ||\n this.isSame(inputDate, afterISODate, inputFormat))\n );\n }\n\n /**\n */\n isBefore(\n inputDate: string,\n beforeISODate: ?string,\n inputFormat: string = this._isoFormat\n ): boolean {\n return (\n beforeISODate != null &&\n isBefore(this.toDate(inputDate, inputFormat), this.toDate(beforeISODate))\n );\n }\n\n /**\n */\n isSameOrBefore(\n inputDate: string,\n beforeISODate: ?string,\n inputFormat: string = this._isoFormat\n ): boolean {\n return (\n beforeISODate != null &&\n (this.isBefore(inputDate, beforeISODate, inputFormat) ||\n this.isSame(inputDate, beforeISODate, inputFormat))\n );\n }\n\n /**\n */\n isSame(\n inputDate: string,\n compareDate: ?string,\n inputFormat: string = this._isoFormat\n ): boolean {\n return (\n compareDate != null &&\n this.toDate(inputDate, inputFormat).getTime() ===\n this.toDate(compareDate).getTime()\n );\n }\n\n /**\n */\n isSameDay(\n inputDate: string,\n compareDate: string,\n inputFormat: string = this._isoFormat\n ): boolean {\n return (\n compareDate != null &&\n isSameDay(\n this.toDate(inputDate, inputFormat),\n this.toDate(compareDate, inputFormat)\n )\n );\n }\n\n /**\n */\n isOther(\n inputDate: string,\n compareDate: ?string,\n inputFormat: string = this._isoFormat\n ): boolean {\n return !this.isSame(inputDate, compareDate, inputFormat);\n }\n\n /**\n */\n isWeekend(inputDate: string): boolean {\n const SATURDAY_NUMBER = 6;\n const SUNDAY_NUMBER = 0;\n const weekDay = getDay(this.toDate(inputDate));\n\n return weekDay === SATURDAY_NUMBER || weekDay === SUNDAY_NUMBER;\n }\n\n /**\n * CALCULATIONS\n */\n addSeconds(date: string, amount: number): string {\n return this.toISO(addSeconds(this.toDate(date), amount));\n }\n\n /**\n */\n addMinutes(date: string, amount: number): string {\n return this.toISO(addMinutes(this.toDate(date), amount));\n }\n\n /**\n */\n addHours(date: string, amount: number): string {\n return this.toISO(addHours(this.toDate(date), amount));\n }\n\n /**\n */\n addDays(date: string, amount: number): string {\n return this.toISO(addDays(this.toDate(date), amount));\n }\n\n /**\n */\n addWeeks(date: string, amount: number): string {\n return this.toISO(addWeeks(this.toDate(date), amount));\n }\n\n /**\n */\n addMonths(date: string, amount: number): string {\n return this.toISO(addMonths(this.toDate(date), amount));\n }\n\n /**\n */\n addYears(date: string, amount: number): string {\n return this.toISO(addYears(this.toDate(date), amount));\n }\n\n /**\n */\n subtractSeconds(date: string, amount: number): string {\n return this.toISO(subSeconds(this.toDate(date), amount));\n }\n\n /**\n */\n subtractMinutes(date: string, amount: number): string {\n return this.toISO(subMinutes(this.toDate(date), amount));\n }\n\n /**\n */\n subtractHours(date: string, amount: number): string {\n return this.toISO(subHours(this.toDate(date), amount));\n }\n\n /**\n */\n subtractDays(date: string, amount: number): string {\n return this.toISO(subDays(this.toDate(date), amount));\n }\n\n /**\n */\n subtractWeeks(date: string, amount: number): string {\n return this.toISO(subWeeks(this.toDate(date), amount));\n }\n\n /**\n */\n subtractMonths(date: string, amount: number): string {\n return this.toISO(subMonths(this.toDate(date), amount));\n }\n\n /**\n */\n subtractYears(date: string, amount: number): string {\n return this.toISO(subYears(this.toDate(date), amount));\n }\n\n /**\n * GETTERS\n */\n startOfMonth(date: string, inputFormat: string = this._isoFormat): string {\n return this.toISO(startOfMonth(this.toDate(date, inputFormat)));\n }\n\n /**\n */\n endOfMonth(date: string, inputFormat: string = this._isoFormat): string {\n return this.toISO(endOfMonth(this.toDate(date, inputFormat)));\n }\n\n /**\n */\n startOfWeek(date: string, inputFormat: string = this._isoFormat): string {\n const { weekStartsOn } = this.getOptions();\n\n return this.toISO(\n startOfWeek(this.toDate(date, inputFormat), {\n weekStartsOn,\n })\n );\n }\n\n /**\n */\n getHours(date: string | Date): number {\n const parsedDate = typeof date === \"string\" ? this.toDate(date) : date;\n return getHours(parsedDate);\n }\n\n /**\n */\n getMinutes(date: string | Date): number {\n const parsedDate = typeof date === \"string\" ? this.toDate(date) : date;\n return getMinutes(parsedDate);\n }\n\n /**\n */\n getWeek(date: string): number {\n const { weekStartsOn, firstWeekContainsDate } = this.getOptions();\n\n return getWeek(this.toDate(date), {\n weekStartsOn,\n firstWeekContainsDate,\n });\n }\n\n /**\n * SETTERS\n */\n setYear(date: string, year: number): string {\n return this.toISO(setYear(this.toDate(date), year));\n }\n\n /**\n */\n setMonth(date: string, month: number): string {\n return this.toISO(setMonth(this.toDate(date), month));\n }\n\n /**\n */\n setHour(date: string, hour: number): string {\n return this.toISO(setHours(this.toDate(date), hour));\n }\n\n /**\n */\n setMinute(date: string, minute: number): string {\n return this.toISO(setMinutes(this.toDate(date), minute));\n }\n\n /**\n */\n setSecond(date: string, second: number): string {\n return this.toISO(setSeconds(this.toDate(date), second));\n }\n\n /**\n */\n setMilliseconds(date: string, milliseconds: number): string {\n return this.toISO(setMilliseconds(this.toDate(date), milliseconds));\n }\n\n /**\n */\n setTime(\n date: string,\n hours: number,\n minutes: number,\n seconds: number,\n milliseconds: number\n ): string {\n return this.toISO(\n set(this.toDate(date), {\n hours,\n minutes,\n seconds,\n milliseconds,\n })\n );\n }\n}\n\n/**\n * DateUtil\n */\nconst DateUtil: BaseDateTimeUtil = new BaseDateTimeUtil(ISO_DATE_FORMAT);\n\n/**\n * DateTimeUtil\n */\nconst DateTimeUtil: BaseDateTimeUtil = new BaseDateTimeUtil(\n ISO_DATETIME_FORMAT\n);\n\n/**\n * TimeUtil\n */\nconst TimeUtil: BaseDateTimeUtil = new BaseDateTimeUtil(ISO_TIME_FORMAT);\n\n/**\n * TimestampUtil\n */\nconst TimestampUtil: BaseDateTimeUtil = new BaseDateTimeUtil(\n ISO_TIMESTAMP_FORMAT\n);\n\nexport { DateUtil, DateTimeUtil, TimeUtil, TimestampUtil };\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"universalFetch.js","names":["IS_FETCHING","waitForCachedItem","cacheKey","TIMEOUT","CHECK_TIMEOUT","resolve","reject","check","Cache","getItem","cachedItem","Error","setTimeout","browserFetch","args","USE_CACHE","cache","createResourceKey","hasItem","cacheItem","addItem","then","response","universalFetch","locale","headers","includeContext","url","IS_SYNC"],"sources":["../../../src/utils/fetch/universalFetch.js"],"sourcesContent":["// @flow\nimport { isPlainObject } from \"../helpers/objects\";\n\nimport { IS_SYNC, USE_CACHE } from \"../../constants/Constants\";\nimport serverFetch from \"./serverFetch\";\nimport xhr from \"./xhr\";\nimport Cache from \"../browser/Cache\";\n\nimport type { RequestOptions } from \"./types\";\n\ntype CachedResponse = string | { ... };\n\nconst IS_FETCHING = \"is-fetching\";\n\n/**\n * Checks each x ms if a cache item is set after fetching the item.\n * @private\n */\nconst waitForCachedItem = (cacheKey) => {\n let TIMEOUT = 3000;\n const CHECK_TIMEOUT = 100;\n\n return new Promise<CachedResponse>((resolve, reject) => {\n const check = () => {\n if (Cache.getItem(cacheKey) !== IS_FETCHING) {\n const cachedItem = Cache.getItem(cacheKey);\n if (cachedItem != null) {\n resolve(cachedItem);\n } else {\n reject(new Error(\"Empty cached item\"));\n }\n } else if (TIMEOUT <= 0) {\n reject(new Error(\"Empty cached item\"));\n } else {\n TIMEOUT = TIMEOUT - CHECK_TIMEOUT;\n setTimeout(check, CHECK_TIMEOUT);\n }\n };\n\n setTimeout(check, CHECK_TIMEOUT);\n });\n};\n\n/**\n * @private\n */\nconst browserFetch = (args) => {\n if (USE_CACHE && args.cache) {\n const cacheKey = Cache.createResourceKey(args);\n\n if (Cache.hasItem(cacheKey)) {\n const cacheItem = Cache.getItem(cacheKey);\n\n if (cacheItem != null) {\n if (cacheItem === IS_FETCHING) {\n return waitForCachedItem(cacheKey);\n } else if (isPlainObject(cacheItem)) {\n return Promise.resolve(cacheItem);\n }\n }\n }\n\n Cache.addItem(cacheKey, IS_FETCHING);\n }\n\n return xhr(args).then((response) => {\n if (USE_CACHE && args.cache) {\n const cacheKey = Cache.createResourceKey(args);\n\n Cache.addItem(cacheKey, response);\n }\n\n return response;\n });\n};\n\n/**\n * Request data from server, uses server datafetcher or xhr in browser.\n */\nexport default function universalFetch(\n args: RequestOptions\n): Promise<CachedResponse> | Promise<?(string | { ... })> {\n // Set locale as Accept-Language header\n if (args.locale) {\n args.headers = {\n \"Accept-Language\": args.locale,\n };\n }\n\n if (args.includeContext) {\n args.url = `${args.url}?includeContext=true`;\n }\n\n // server side no access to the browser cache apis, no cache available\n if (IS_SYNC) {\n return serverFetch(args);\n }\n\n return browserFetch(args);\n}\n"],"mappings":";;;;;;;;;;;AACA;;AAEA;;AACA;;AACA;;AACA;;AAMA,IAAMA,WAAW,GAAG,aAApB;AAEA;AACA;AACA;AACA;;AACA,IAAMC,iBAAiB,GAAG,SAApBA,iBAAoB,CAACC,QAAD,EAAc;EACtC,IAAIC,OAAO,GAAG,IAAd;EACA,IAAMC,aAAa,GAAG,GAAtB;EAEA,OAAO,qBAA4B,UAACC,OAAD,EAAUC,MAAV,EAAqB;IACtD,IAAMC,KAAK,GAAG,SAARA,KAAQ,GAAM;MAClB,IAAIC,eAAMC,OAAN,CAAcP,QAAd,MAA4BF,WAAhC,EAA6C;QAC3C,IAAMU,UAAU,GAAGF,eAAMC,OAAN,CAAcP,QAAd,CAAnB;;QACA,IAAIQ,UAAU,IAAI,IAAlB,EAAwB;UACtBL,OAAO,CAACK,UAAD,CAAP;QACD,CAFD,MAEO;UACLJ,MAAM,CAAC,IAAIK,KAAJ,CAAU,mBAAV,CAAD,CAAN;QACD;MACF,CAPD,MAOO,IAAIR,OAAO,IAAI,CAAf,EAAkB;QACvBG,MAAM,CAAC,IAAIK,KAAJ,CAAU,mBAAV,CAAD,CAAN;MACD,CAFM,MAEA;QACLR,OAAO,GAAGA,OAAO,GAAGC,aAApB;QACAQ,UAAU,CAACL,KAAD,EAAQH,aAAR,CAAV;MACD;IACF,CAdD;;IAgBAQ,UAAU,CAACL,KAAD,EAAQH,aAAR,CAAV;EACD,CAlBM,CAAP;AAmBD,CAvBD;AAyBA;AACA;AACA;;;AACA,IAAMS,YAAY,GAAG,SAAfA,YAAe,CAACC,IAAD,EAAU;EAC7B,IAAIC,wBAAaD,IAAI,CAACE,KAAtB,EAA6B;IAC3B,IAAMd,QAAQ,GAAGM,eAAMS,iBAAN,CAAwBH,IAAxB,CAAjB;;IAEA,IAAIN,eAAMU,OAAN,CAAchB,QAAd,CAAJ,EAA6B;MAC3B,IAAMiB,SAAS,GAAGX,eAAMC,OAAN,CAAcP,QAAd,CAAlB;;MAEA,IAAIiB,SAAS,IAAI,IAAjB,EAAuB;QACrB,IAAIA,SAAS,KAAKnB,WAAlB,EAA+B;UAC7B,OAAOC,iBAAiB,CAACC,QAAD,CAAxB;QACD,CAFD,MAEO,IAAI,4BAAciB,SAAd,CAAJ,EAA8B;UACnC,OAAO,iBAAQd,OAAR,CAAgBc,SAAhB,CAAP;QACD;MACF;IACF;;IAEDX,eAAMY,OAAN,CAAclB,QAAd,EAAwBF,WAAxB;EACD;;EAED,OAAO,kBAAIc,IAAJ,EAAUO,IAAV,CAAe,UAACC,QAAD,EAAc;IAClC,IAAIP,wBAAaD,IAAI,CAACE,KAAtB,EAA6B;MAC3B,IAAMd,SAAQ,GAAGM,eAAMS,iBAAN,CAAwBH,IAAxB,CAAjB;;MAEAN,eAAMY,OAAN,CAAclB,SAAd,EAAwBoB,QAAxB;IACD;;IAED,OAAOA,QAAP;EACD,CARM,CAAP;AASD,CA5BD;AA8BA;AACA;AACA;;;AACe,SAASC,cAAT,CACbT,IADa,EAE2C;EACxD;EACA,IAAIA,IAAI,CAACU,MAAT,EAAiB;IACfV,IAAI,CAACW,OAAL,GAAe;MACb,mBAAmBX,IAAI,CAACU;IADX,CAAf;EAGD;;EAED,IAAIV,IAAI,CAACY,cAAT,EAAyB;IACvBZ,IAAI,CAACa,GAAL,aAAcb,IAAI,CAACa,GAAnB;EACD,CAVuD,CAYxD;;;EACA,IAAIC,kBAAJ,EAAa;IACX,OAAO,0BAAYd,IAAZ,CAAP;EACD;;EAED,OAAOD,YAAY,CAACC,IAAD,CAAnB;AACD"}
1
+ {"version":3,"file":"universalFetch.js","names":["IS_FETCHING","waitForCachedItem","cacheKey","TIMEOUT","CHECK_TIMEOUT","resolve","reject","check","Cache","getItem","cachedItem","Error","setTimeout","browserFetch","args","USE_CACHE","cache","createResourceKey","hasItem","cacheItem","isPlainObject","addItem","xhr","then","response","universalFetch","locale","headers","includeContext","url","IS_SYNC","serverFetch"],"sources":["../../../src/utils/fetch/universalFetch.js"],"sourcesContent":["// @flow\nimport { isPlainObject } from \"../helpers/objects\";\n\nimport { IS_SYNC, USE_CACHE } from \"../../constants/Constants\";\nimport serverFetch from \"./serverFetch\";\nimport xhr from \"./xhr\";\nimport Cache from \"../browser/Cache\";\n\nimport type { RequestOptions } from \"./types\";\n\ntype CachedResponse = string | { ... };\n\nconst IS_FETCHING = \"is-fetching\";\n\n/**\n * Checks each x ms if a cache item is set after fetching the item.\n * @private\n */\nconst waitForCachedItem = (cacheKey) => {\n let TIMEOUT = 3000;\n const CHECK_TIMEOUT = 100;\n\n return new Promise<CachedResponse>((resolve, reject) => {\n const check = () => {\n if (Cache.getItem(cacheKey) !== IS_FETCHING) {\n const cachedItem = Cache.getItem(cacheKey);\n if (cachedItem != null) {\n resolve(cachedItem);\n } else {\n reject(new Error(\"Empty cached item\"));\n }\n } else if (TIMEOUT <= 0) {\n reject(new Error(\"Empty cached item\"));\n } else {\n TIMEOUT = TIMEOUT - CHECK_TIMEOUT;\n setTimeout(check, CHECK_TIMEOUT);\n }\n };\n\n setTimeout(check, CHECK_TIMEOUT);\n });\n};\n\n/**\n * @private\n */\nconst browserFetch = (args) => {\n if (USE_CACHE && args.cache) {\n const cacheKey = Cache.createResourceKey(args);\n\n if (Cache.hasItem(cacheKey)) {\n const cacheItem = Cache.getItem(cacheKey);\n\n if (cacheItem != null) {\n if (cacheItem === IS_FETCHING) {\n return waitForCachedItem(cacheKey);\n } else if (isPlainObject(cacheItem)) {\n return Promise.resolve(cacheItem);\n }\n }\n }\n\n Cache.addItem(cacheKey, IS_FETCHING);\n }\n\n return xhr(args).then((response) => {\n if (USE_CACHE && args.cache) {\n const cacheKey = Cache.createResourceKey(args);\n\n Cache.addItem(cacheKey, response);\n }\n\n return response;\n });\n};\n\n/**\n * Request data from server, uses server datafetcher or xhr in browser.\n */\nexport default function universalFetch(\n args: RequestOptions\n): Promise<CachedResponse> | Promise<?(string | { ... })> {\n // Set locale as Accept-Language header\n if (args.locale) {\n args.headers = {\n \"Accept-Language\": args.locale,\n };\n }\n\n if (args.includeContext) {\n args.url = `${args.url}?includeContext=true`;\n }\n\n // server side no access to the browser cache apis, no cache available\n if (IS_SYNC) {\n return serverFetch(args);\n }\n\n return browserFetch(args);\n}\n"],"mappings":";;;;;;;;;;;AACA;;AAEA;;AACA;;AACA;;AACA;;AAMA,IAAMA,WAAW,GAAG,aAApB;AAEA;AACA;AACA;AACA;;AACA,IAAMC,iBAAiB,GAAG,SAApBA,iBAAoB,CAACC,QAAD,EAAc;EACtC,IAAIC,OAAO,GAAG,IAAd;EACA,IAAMC,aAAa,GAAG,GAAtB;EAEA,OAAO,qBAA4B,UAACC,OAAD,EAAUC,MAAV,EAAqB;IACtD,IAAMC,KAAK,GAAG,SAARA,KAAQ,GAAM;MAClB,IAAIC,cAAA,CAAMC,OAAN,CAAcP,QAAd,MAA4BF,WAAhC,EAA6C;QAC3C,IAAMU,UAAU,GAAGF,cAAA,CAAMC,OAAN,CAAcP,QAAd,CAAnB;;QACA,IAAIQ,UAAU,IAAI,IAAlB,EAAwB;UACtBL,OAAO,CAACK,UAAD,CAAP;QACD,CAFD,MAEO;UACLJ,MAAM,CAAC,IAAIK,KAAJ,CAAU,mBAAV,CAAD,CAAN;QACD;MACF,CAPD,MAOO,IAAIR,OAAO,IAAI,CAAf,EAAkB;QACvBG,MAAM,CAAC,IAAIK,KAAJ,CAAU,mBAAV,CAAD,CAAN;MACD,CAFM,MAEA;QACLR,OAAO,GAAGA,OAAO,GAAGC,aAApB;QACAQ,UAAU,CAACL,KAAD,EAAQH,aAAR,CAAV;MACD;IACF,CAdD;;IAgBAQ,UAAU,CAACL,KAAD,EAAQH,aAAR,CAAV;EACD,CAlBM,CAAP;AAmBD,CAvBD;AAyBA;AACA;AACA;;;AACA,IAAMS,YAAY,GAAG,SAAfA,YAAe,CAACC,IAAD,EAAU;EAC7B,IAAIC,oBAAA,IAAaD,IAAI,CAACE,KAAtB,EAA6B;IAC3B,IAAMd,QAAQ,GAAGM,cAAA,CAAMS,iBAAN,CAAwBH,IAAxB,CAAjB;;IAEA,IAAIN,cAAA,CAAMU,OAAN,CAAchB,QAAd,CAAJ,EAA6B;MAC3B,IAAMiB,SAAS,GAAGX,cAAA,CAAMC,OAAN,CAAcP,QAAd,CAAlB;;MAEA,IAAIiB,SAAS,IAAI,IAAjB,EAAuB;QACrB,IAAIA,SAAS,KAAKnB,WAAlB,EAA+B;UAC7B,OAAOC,iBAAiB,CAACC,QAAD,CAAxB;QACD,CAFD,MAEO,IAAI,IAAAkB,sBAAA,EAAcD,SAAd,CAAJ,EAA8B;UACnC,OAAO,iBAAQd,OAAR,CAAgBc,SAAhB,CAAP;QACD;MACF;IACF;;IAEDX,cAAA,CAAMa,OAAN,CAAcnB,QAAd,EAAwBF,WAAxB;EACD;;EAED,OAAO,IAAAsB,YAAA,EAAIR,IAAJ,EAAUS,IAAV,CAAe,UAACC,QAAD,EAAc;IAClC,IAAIT,oBAAA,IAAaD,IAAI,CAACE,KAAtB,EAA6B;MAC3B,IAAMd,SAAQ,GAAGM,cAAA,CAAMS,iBAAN,CAAwBH,IAAxB,CAAjB;;MAEAN,cAAA,CAAMa,OAAN,CAAcnB,SAAd,EAAwBsB,QAAxB;IACD;;IAED,OAAOA,QAAP;EACD,CARM,CAAP;AASD,CA5BD;AA8BA;AACA;AACA;;;AACe,SAASC,cAAT,CACbX,IADa,EAE2C;EACxD;EACA,IAAIA,IAAI,CAACY,MAAT,EAAiB;IACfZ,IAAI,CAACa,OAAL,GAAe;MACb,mBAAmBb,IAAI,CAACY;IADX,CAAf;EAGD;;EAED,IAAIZ,IAAI,CAACc,cAAT,EAAyB;IACvBd,IAAI,CAACe,GAAL,aAAcf,IAAI,CAACe,GAAnB;EACD,CAVuD,CAYxD;;;EACA,IAAIC,kBAAJ,EAAa;IACX,OAAO,IAAAC,oBAAA,EAAYjB,IAAZ,CAAP;EACD;;EAED,OAAOD,YAAY,CAACC,IAAD,CAAnB;AACD"}
@@ -1 +1 @@
1
- {"version":3,"file":"xhr.js","names":["NETWORK_ERROR_CODE","SUCCESS_CODE","CLIENT_ERROR_CODE","UNAUTHORIZED_CODE","REDIRECTION_CODE","NOT_FOUND_CODE","JSON_TYPE","XHR","options","_options","_attempts","_xmlhttp","xmlhttp","attempts","url","params","aUrl","split","data","method","HTTP_METHODS","GET","timeout","responseType","onProgress","events","baseHeaders","Accept","headers","reject","TimeoutException","responseJSON","status","isReload","NetworkException","NotFoundException","UnauthorizedException","FetchException","response","getResponseHeader","JSON","parse","error","JsonParseException","resolve","getResponse","errorHandler","forEach","eventType","addEventListener","timeoutHandler","responseHandler","eventName","open","Cache","hasItem","withCredentials","basicToken","getItem","setRequestHeader","headerName","send","stringData","XMLHttpRequest","setEventListeners","openConnection","setBasicAuthentication","setCustomHeaders","setOtherOptions","sendData","setXMLHttpRequest","fetch","validateInputArguments","args","IllegalArgumentException","toString","xhr"],"sources":["../../../src/utils/fetch/xhr.js"],"sourcesContent":["// @flow\nimport { has, isPlainObject } from \"../helpers/objects\";\n\nimport {\n IllegalArgumentException,\n UnauthorizedException,\n FetchException,\n TimeoutException,\n NotFoundException,\n JsonParseException,\n NetworkException,\n} from \"../../exceptions\";\n\nimport Cache from \"../browser/Cache\";\n\nimport { HTTP_METHODS } from \"../../constants/Constants\";\n\nimport { getSetting } from \"../../constants/Settings\";\n\nimport type { RequestOptions } from \"./types\";\n\nconst NETWORK_ERROR_CODE = 0;\nconst SUCCESS_CODE = 200;\nconst CLIENT_ERROR_CODE = 400;\nconst UNAUTHORIZED_CODE = 401;\nconst REDIRECTION_CODE = 300;\nconst NOT_FOUND_CODE = 404;\n\nconst JSON_TYPE = \"application/json\";\n\n/**\n * @private\n */\nclass XHR {\n _options: RequestOptions;\n _xmlhttp: XMLHttpRequest;\n _attempts: number;\n\n /**\n */\n constructor(options: RequestOptions) {\n this._options = options;\n this._attempts = 0;\n }\n\n /**\n */\n get xmlhttp() {\n return this._xmlhttp;\n }\n\n /**\n */\n set xmlhttp(xmlhttp) {\n this._xmlhttp = xmlhttp;\n }\n\n /**\n */\n get options() {\n return this._options;\n }\n\n /**\n */\n set options(options: RequestOptions) {\n this._options = options;\n }\n\n /**\n */\n get attempts() {\n return this._attempts;\n }\n\n /**\n */\n set attempts(attempts) {\n this._attempts = attempts;\n }\n\n /**\n * Create and fix url when params or both querystring and params exist.\n */\n get url() {\n const { url } = this.options;\n if (this.params !== \"\") {\n if (url.includes(\"?\")) {\n const aUrl = url.split(\"?\");\n\n return `${aUrl[0]}?${aUrl[1]}&${this.params}`;\n }\n\n return `${url}?${this.params}`;\n }\n\n return url;\n }\n\n /**\n */\n get params() {\n return this.options.params || \"\";\n }\n\n /**\n */\n get data() {\n return this.options.data || null;\n }\n\n /**\n */\n get method() {\n return this.options.method || HTTP_METHODS.GET;\n }\n\n /**\n */\n get timeout() {\n return this.options.timeout || getSetting(\"XHR_TIMEOUT_MS\", 300000);\n }\n\n /**\n */\n get responseType() {\n return this.options.responseType || \"json\";\n }\n\n /**\n */\n get onProgress(): ProgressEventHandler {\n if (this.options.onProgress) {\n return this.options.onProgress;\n }\n\n return () => {\n // do nothing\n };\n }\n\n /**\n */\n get events() {\n return this.options.events || {};\n }\n\n /**\n */\n get headers() {\n const baseHeaders = {\n Accept: JSON_TYPE,\n \"Content-Type\": JSON_TYPE,\n\n // needed for csrf, see: https://plaza.beinformed.com/amdoc/csrf-protection-in-modular-ui-services-40054554.html\n \"X-Requested-With\": \"XMLHttpRequest\",\n\n \"Accept-Language\": \"en\",\n };\n\n if (this.options.headers) {\n // $FlowFixMe[cannot-spread-indexer]\n return {\n ...baseHeaders,\n ...this.options.headers,\n };\n }\n\n return baseHeaders;\n }\n\n /**\n */\n timeoutHandler(reject) {\n return reject(new TimeoutException(this.url, this.method));\n }\n\n /**\n */\n errorHandler(reject, responseJSON = null) {\n const { status } = this.xmlhttp;\n const { isReload } = this.options;\n\n if (status === NETWORK_ERROR_CODE) {\n return reject(new NetworkException(this.url, this.method));\n }\n\n if (status === NOT_FOUND_CODE) {\n return reject(new NotFoundException(this.url, this.method, isReload));\n }\n\n if (status === UNAUTHORIZED_CODE) {\n return reject(\n new UnauthorizedException(this.url, this.method, responseJSON)\n );\n }\n\n return reject(new FetchException(responseJSON, this.xmlhttp, this.options));\n }\n\n /**\n */\n getResponse() {\n const { responseType, response } = this.xmlhttp;\n\n if (\n (responseType === \"\" || responseType === \"text\") &&\n this.getResponseHeader(\"Content-Type\") === JSON_TYPE\n ) {\n if (isPlainObject(response)) {\n return response;\n }\n\n try {\n return JSON.parse(response);\n } catch (error) {\n throw new JsonParseException(error);\n }\n }\n\n return response;\n }\n\n /**\n */\n responseHandler(resolve, reject) {\n const { status } = this.xmlhttp;\n\n let response = null;\n try {\n response = this.getResponse();\n } catch (error) {\n return reject(error);\n }\n\n if (\n (status >= SUCCESS_CODE && status < REDIRECTION_CODE) ||\n (status === CLIENT_ERROR_CODE && has(response, \"formresponse\"))\n ) {\n return resolve(response);\n }\n\n return this.errorHandler(reject, response);\n }\n\n /**\n */\n setEventListeners(resolve, reject) {\n if (this.options.onProgress) {\n [\"load\", \"loadend\", \"loadstart\", \"progress\"].forEach((eventType) => {\n this.xmlhttp.addEventListener(eventType, this.onProgress);\n });\n }\n\n [\"abort\", \"error\"].forEach((eventType) => {\n this.xmlhttp.addEventListener(eventType, () => this.errorHandler(reject));\n });\n\n this.xmlhttp.addEventListener(\"timeout\", () => this.timeoutHandler(reject));\n\n this.xmlhttp.addEventListener(\"load\", () =>\n this.responseHandler(resolve, reject)\n );\n\n // Set custom events\n Object.keys(this.events).forEach((eventName) => {\n this.xmlhttp.addEventListener(eventName, this.events[eventName]);\n });\n }\n\n /**\n */\n openConnection() {\n this.xmlhttp.open(this.method, this.url, true);\n }\n\n /**\n */\n setBasicAuthentication() {\n if (Cache.hasItem(\"basic\")) {\n this.xmlhttp.withCredentials = true;\n const basicToken = Cache.getItem(\"basic\");\n\n if (typeof basicToken === \"string\") {\n this.xmlhttp.setRequestHeader(\"Authorization\", `Basic ${basicToken}`);\n }\n }\n }\n\n /**\n */\n getResponseHeader(headerName) {\n return this.xmlhttp.getResponseHeader(headerName);\n }\n\n /**\n */\n setCustomHeaders() {\n Object.keys(this.headers).forEach((headerName) => {\n this.xmlhttp.setRequestHeader(headerName, this.headers[headerName]);\n });\n }\n\n /**\n */\n setOtherOptions() {\n this.xmlhttp.responseType = this.responseType;\n this.xmlhttp.timeout = this.timeout;\n }\n\n /**\n */\n sendData() {\n if (this.data == null) {\n this.xmlhttp.send();\n } else {\n const stringData = isPlainObject(this.data)\n ? JSON.stringify(this.data)\n : this.data;\n this.xmlhttp.send(stringData);\n }\n }\n\n /**\n */\n setXMLHttpRequest() {\n return new Promise((resolve, reject) => {\n this.xmlhttp = new XMLHttpRequest();\n\n this.setEventListeners(resolve, reject);\n\n this.openConnection();\n\n this.setBasicAuthentication();\n\n this.setCustomHeaders();\n\n this.setOtherOptions();\n\n this.sendData();\n });\n }\n\n /**\n */\n async fetch() {\n try {\n return await this.setXMLHttpRequest();\n } catch (err) {\n if (err instanceof NetworkException && this.attempts < 2) {\n this.attempts += 1;\n return this.fetch();\n }\n\n throw err;\n }\n }\n}\n\n/**\n */\nconst validateInputArguments = (args: RequestOptions) => {\n if (args == null) {\n throw new IllegalArgumentException(\n \"Missing request options, expecting an object as argument for xhr\"\n );\n }\n\n if (!isPlainObject(args)) {\n throw new IllegalArgumentException(\n `Expecting an object as argument for xhr, but received: ${args.toString()}`\n );\n }\n\n if (!has(args, \"url\")) {\n throw new IllegalArgumentException(\n `No url property found in arguments of xhr, received: ${JSON.stringify(\n args\n )}`\n );\n }\n\n return true;\n};\n\n/**\n */\nconst xhr = (args: RequestOptions): Promise<any> => {\n validateInputArguments(args);\n\n return new XHR(args).fetch();\n};\n\nexport default xhr;\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA;;AAEA;;AAUA;;AAEA;;AAEA;;;;;;AAIA,IAAMA,kBAAkB,GAAG,CAA3B;AACA,IAAMC,YAAY,GAAG,GAArB;AACA,IAAMC,iBAAiB,GAAG,GAA1B;AACA,IAAMC,iBAAiB,GAAG,GAA1B;AACA,IAAMC,gBAAgB,GAAG,GAAzB;AACA,IAAMC,cAAc,GAAG,GAAvB;AAEA,IAAMC,SAAS,GAAG,kBAAlB;AAEA;AACA;AACA;;IACMC,G;EAKJ;AACF;EACE,aAAYC,OAAZ,EAAqC;IAAA;IAAA;IAAA;IAAA;IACnC,KAAKC,QAAL,GAAgBD,OAAhB;IACA,KAAKE,SAAL,GAAiB,CAAjB;EACD;EAED;AACF;;;;;SACE,eAAc;MACZ,OAAO,KAAKC,QAAZ;IACD;IAED;AACF;;SACE,aAAYC,OAAZ,EAAqB;MACnB,KAAKD,QAAL,GAAgBC,OAAhB;IACD;IAED;AACF;;;;SACE,eAAc;MACZ,OAAO,KAAKH,QAAZ;IACD;IAED;AACF;;SACE,aAAYD,OAAZ,EAAqC;MACnC,KAAKC,QAAL,GAAgBD,OAAhB;IACD;IAED;AACF;;;;SACE,eAAe;MACb,OAAO,KAAKE,SAAZ;IACD;IAED;AACF;;SACE,aAAaG,QAAb,EAAuB;MACrB,KAAKH,SAAL,GAAiBG,QAAjB;IACD;IAED;AACF;AACA;;;;SACE,eAAU;MACR,IAAQC,GAAR,GAAgB,KAAKN,OAArB,CAAQM,GAAR;;MACA,IAAI,KAAKC,MAAL,KAAgB,EAApB,EAAwB;QAAA;;QACtB,IAAI,uBAAAD,GAAG,MAAH,CAAAA,GAAG,EAAU,GAAV,CAAP,EAAuB;UAAA;;UACrB,IAAME,IAAI,GAAGF,GAAG,CAACG,KAAJ,CAAU,GAAV,CAAb;UAEA,kFAAUD,IAAI,CAAC,CAAD,CAAd,wBAAqBA,IAAI,CAAC,CAAD,CAAzB,uBAAgC,KAAKD,MAArC;QACD;;QAED,kDAAUD,GAAV,wBAAiB,KAAKC,MAAtB;MACD;;MAED,OAAOD,GAAP;IACD;IAED;AACF;;;;SACE,eAAa;MACX,OAAO,KAAKN,OAAL,CAAaO,MAAb,IAAuB,EAA9B;IACD;IAED;AACF;;;;SACE,eAAW;MACT,OAAO,KAAKP,OAAL,CAAaU,IAAb,IAAqB,IAA5B;IACD;IAED;AACF;;;;SACE,eAAa;MACX,OAAO,KAAKV,OAAL,CAAaW,MAAb,IAAuBC,wBAAaC,GAA3C;IACD;IAED;AACF;;;;SACE,eAAc;MACZ,OAAO,KAAKb,OAAL,CAAac,OAAb,IAAwB,0BAAW,gBAAX,EAA6B,MAA7B,CAA/B;IACD;IAED;AACF;;;;SACE,eAAmB;MACjB,OAAO,KAAKd,OAAL,CAAae,YAAb,IAA6B,MAApC;IACD;IAED;AACF;;;;SACE,eAAuC;MACrC,IAAI,KAAKf,OAAL,CAAagB,UAAjB,EAA6B;QAC3B,OAAO,KAAKhB,OAAL,CAAagB,UAApB;MACD;;MAED,OAAO,YAAM,CACX;MACD,CAFD;IAGD;IAED;AACF;;;;SACE,eAAa;MACX,OAAO,KAAKhB,OAAL,CAAaiB,MAAb,IAAuB,EAA9B;IACD;IAED;AACF;;;;SACE,eAAc;MACZ,IAAMC,WAAW,GAAG;QAClBC,MAAM,EAAErB,SADU;QAElB,gBAAgBA,SAFE;QAIlB;QACA,oBAAoB,gBALF;QAOlB,mBAAmB;MAPD,CAApB;;MAUA,IAAI,KAAKE,OAAL,CAAaoB,OAAjB,EAA0B;QACxB;QACA,uCACKF,WADL,GAEK,KAAKlB,OAAL,CAAaoB,OAFlB;MAID;;MAED,OAAOF,WAAP;IACD;IAED;AACF;;;;WACE,wBAAeG,MAAf,EAAuB;MACrB,OAAOA,MAAM,CAAC,IAAIC,4BAAJ,CAAqB,KAAKhB,GAA1B,EAA+B,KAAKK,MAApC,CAAD,CAAb;IACD;IAED;AACF;;;;WACE,sBAAaU,MAAb,EAA0C;MAAA,IAArBE,YAAqB,uEAAN,IAAM;MACxC,IAAQC,MAAR,GAAmB,KAAKpB,OAAxB,CAAQoB,MAAR;MACA,IAAQC,QAAR,GAAqB,KAAKzB,OAA1B,CAAQyB,QAAR;;MAEA,IAAID,MAAM,KAAKhC,kBAAf,EAAmC;QACjC,OAAO6B,MAAM,CAAC,IAAIK,4BAAJ,CAAqB,KAAKpB,GAA1B,EAA+B,KAAKK,MAApC,CAAD,CAAb;MACD;;MAED,IAAIa,MAAM,KAAK3B,cAAf,EAA+B;QAC7B,OAAOwB,MAAM,CAAC,IAAIM,6BAAJ,CAAsB,KAAKrB,GAA3B,EAAgC,KAAKK,MAArC,EAA6Cc,QAA7C,CAAD,CAAb;MACD;;MAED,IAAID,MAAM,KAAK7B,iBAAf,EAAkC;QAChC,OAAO0B,MAAM,CACX,IAAIO,iCAAJ,CAA0B,KAAKtB,GAA/B,EAAoC,KAAKK,MAAzC,EAAiDY,YAAjD,CADW,CAAb;MAGD;;MAED,OAAOF,MAAM,CAAC,IAAIQ,0BAAJ,CAAmBN,YAAnB,EAAiC,KAAKnB,OAAtC,EAA+C,KAAKJ,OAApD,CAAD,CAAb;IACD;IAED;AACF;;;;WACE,uBAAc;MACZ,oBAAmC,KAAKI,OAAxC;MAAA,IAAQW,YAAR,iBAAQA,YAAR;MAAA,IAAsBe,QAAtB,iBAAsBA,QAAtB;;MAEA,IACE,CAACf,YAAY,KAAK,EAAjB,IAAuBA,YAAY,KAAK,MAAzC,KACA,KAAKgB,iBAAL,CAAuB,cAAvB,MAA2CjC,SAF7C,EAGE;QACA,IAAI,4BAAcgC,QAAd,CAAJ,EAA6B;UAC3B,OAAOA,QAAP;QACD;;QAED,IAAI;UACF,OAAOE,IAAI,CAACC,KAAL,CAAWH,QAAX,CAAP;QACD,CAFD,CAEE,OAAOI,KAAP,EAAc;UACd,MAAM,IAAIC,8BAAJ,CAAuBD,KAAvB,CAAN;QACD;MACF;;MAED,OAAOJ,QAAP;IACD;IAED;AACF;;;;WACE,yBAAgBM,OAAhB,EAAyBf,MAAzB,EAAiC;MAC/B,IAAQG,MAAR,GAAmB,KAAKpB,OAAxB,CAAQoB,MAAR;MAEA,IAAIM,QAAQ,GAAG,IAAf;;MACA,IAAI;QACFA,QAAQ,GAAG,KAAKO,WAAL,EAAX;MACD,CAFD,CAEE,OAAOH,KAAP,EAAc;QACd,OAAOb,MAAM,CAACa,KAAD,CAAb;MACD;;MAED,IACGV,MAAM,IAAI/B,YAAV,IAA0B+B,MAAM,GAAG5B,gBAApC,IACC4B,MAAM,KAAK9B,iBAAX,IAAgC,kBAAIoC,QAAJ,EAAc,cAAd,CAFnC,EAGE;QACA,OAAOM,OAAO,CAACN,QAAD,CAAd;MACD;;MAED,OAAO,KAAKQ,YAAL,CAAkBjB,MAAlB,EAA0BS,QAA1B,CAAP;IACD;IAED;AACF;;;;WACE,2BAAkBM,OAAlB,EAA2Bf,MAA3B,EAAmC;MAAA;;MACjC,IAAI,KAAKrB,OAAL,CAAagB,UAAjB,EAA6B;QAC3B,CAAC,MAAD,EAAS,SAAT,EAAoB,WAApB,EAAiC,UAAjC,EAA6CuB,OAA7C,CAAqD,UAACC,SAAD,EAAe;UAClE,KAAI,CAACpC,OAAL,CAAaqC,gBAAb,CAA8BD,SAA9B,EAAyC,KAAI,CAACxB,UAA9C;QACD,CAFD;MAGD;;MAED,CAAC,OAAD,EAAU,OAAV,EAAmBuB,OAAnB,CAA2B,UAACC,SAAD,EAAe;QACxC,KAAI,CAACpC,OAAL,CAAaqC,gBAAb,CAA8BD,SAA9B,EAAyC;UAAA,OAAM,KAAI,CAACF,YAAL,CAAkBjB,MAAlB,CAAN;QAAA,CAAzC;MACD,CAFD;MAIA,KAAKjB,OAAL,CAAaqC,gBAAb,CAA8B,SAA9B,EAAyC;QAAA,OAAM,KAAI,CAACC,cAAL,CAAoBrB,MAApB,CAAN;MAAA,CAAzC;MAEA,KAAKjB,OAAL,CAAaqC,gBAAb,CAA8B,MAA9B,EAAsC;QAAA,OACpC,KAAI,CAACE,eAAL,CAAqBP,OAArB,EAA8Bf,MAA9B,CADoC;MAAA,CAAtC,EAbiC,CAiBjC;;MACA,mBAAY,KAAKJ,MAAjB,EAAyBsB,OAAzB,CAAiC,UAACK,SAAD,EAAe;QAC9C,KAAI,CAACxC,OAAL,CAAaqC,gBAAb,CAA8BG,SAA9B,EAAyC,KAAI,CAAC3B,MAAL,CAAY2B,SAAZ,CAAzC;MACD,CAFD;IAGD;IAED;AACF;;;;WACE,0BAAiB;MACf,KAAKxC,OAAL,CAAayC,IAAb,CAAkB,KAAKlC,MAAvB,EAA+B,KAAKL,GAApC,EAAyC,IAAzC;IACD;IAED;AACF;;;;WACE,kCAAyB;MACvB,IAAIwC,eAAMC,OAAN,CAAc,OAAd,CAAJ,EAA4B;QAC1B,KAAK3C,OAAL,CAAa4C,eAAb,GAA+B,IAA/B;;QACA,IAAMC,UAAU,GAAGH,eAAMI,OAAN,CAAc,OAAd,CAAnB;;QAEA,IAAI,OAAOD,UAAP,KAAsB,QAA1B,EAAoC;UAClC,KAAK7C,OAAL,CAAa+C,gBAAb,CAA8B,eAA9B,kBAAwDF,UAAxD;QACD;MACF;IACF;IAED;AACF;;;;WACE,2BAAkBG,UAAlB,EAA8B;MAC5B,OAAO,KAAKhD,OAAL,CAAa2B,iBAAb,CAA+BqB,UAA/B,CAAP;IACD;IAED;AACF;;;;WACE,4BAAmB;MAAA;;MACjB,mBAAY,KAAKhC,OAAjB,EAA0BmB,OAA1B,CAAkC,UAACa,UAAD,EAAgB;QAChD,MAAI,CAAChD,OAAL,CAAa+C,gBAAb,CAA8BC,UAA9B,EAA0C,MAAI,CAAChC,OAAL,CAAagC,UAAb,CAA1C;MACD,CAFD;IAGD;IAED;AACF;;;;WACE,2BAAkB;MAChB,KAAKhD,OAAL,CAAaW,YAAb,GAA4B,KAAKA,YAAjC;MACA,KAAKX,OAAL,CAAaU,OAAb,GAAuB,KAAKA,OAA5B;IACD;IAED;AACF;;;;WACE,oBAAW;MACT,IAAI,KAAKJ,IAAL,IAAa,IAAjB,EAAuB;QACrB,KAAKN,OAAL,CAAaiD,IAAb;MACD,CAFD,MAEO;QACL,IAAMC,UAAU,GAAG,4BAAc,KAAK5C,IAAnB,IACf,wBAAe,KAAKA,IAApB,CADe,GAEf,KAAKA,IAFT;QAGA,KAAKN,OAAL,CAAaiD,IAAb,CAAkBC,UAAlB;MACD;IACF;IAED;AACF;;;;WACE,6BAAoB;MAAA;;MAClB,OAAO,qBAAY,UAAClB,OAAD,EAAUf,MAAV,EAAqB;QACtC,MAAI,CAACjB,OAAL,GAAe,IAAImD,cAAJ,EAAf;;QAEA,MAAI,CAACC,iBAAL,CAAuBpB,OAAvB,EAAgCf,MAAhC;;QAEA,MAAI,CAACoC,cAAL;;QAEA,MAAI,CAACC,sBAAL;;QAEA,MAAI,CAACC,gBAAL;;QAEA,MAAI,CAACC,eAAL;;QAEA,MAAI,CAACC,QAAL;MACD,CAdM,CAAP;IAeD;IAED;AACF;;;;;2FACE;QAAA;UAAA;YAAA;cAAA;gBAAA;gBAAA;gBAAA,OAEiB,KAAKC,iBAAL,EAFjB;;cAAA;gBAAA;;cAAA;gBAAA;gBAAA;;gBAAA,MAIQ,wBAAepC,4BAAf,IAAmC,KAAKrB,QAAL,GAAgB,CAJ3D;kBAAA;kBAAA;gBAAA;;gBAKM,KAAKA,QAAL,IAAiB,CAAjB;gBALN,kCAMa,KAAK0D,KAAL,EANb;;cAAA;gBAAA;;cAAA;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,C;;;;;;;;;;;AAcF;AACA;;;AACA,IAAMC,sBAAsB,GAAG,SAAzBA,sBAAyB,CAACC,IAAD,EAA0B;EACvD,IAAIA,IAAI,IAAI,IAAZ,EAAkB;IAChB,MAAM,IAAIC,oCAAJ,CACJ,kEADI,CAAN;EAGD;;EAED,IAAI,CAAC,4BAAcD,IAAd,CAAL,EAA0B;IACxB,MAAM,IAAIC,oCAAJ,kEACsDD,IAAI,CAACE,QAAL,EADtD,EAAN;EAGD;;EAED,IAAI,CAAC,kBAAIF,IAAJ,EAAU,KAAV,CAAL,EAAuB;IACrB,MAAM,IAAIC,oCAAJ,gEACoD,wBACtDD,IADsD,CADpD,EAAN;EAKD;;EAED,OAAO,IAAP;AACD,CAtBD;AAwBA;AACA;;;AACA,IAAMG,GAAG,GAAG,SAANA,GAAM,CAACH,IAAD,EAAwC;EAClDD,sBAAsB,CAACC,IAAD,CAAtB;EAEA,OAAO,IAAIlE,GAAJ,CAAQkE,IAAR,EAAcF,KAAd,EAAP;AACD,CAJD;;eAMeK,G"}
1
+ {"version":3,"file":"xhr.js","names":["NETWORK_ERROR_CODE","SUCCESS_CODE","CLIENT_ERROR_CODE","UNAUTHORIZED_CODE","REDIRECTION_CODE","NOT_FOUND_CODE","JSON_TYPE","XHR","options","_options","_attempts","_xmlhttp","xmlhttp","attempts","url","params","aUrl","split","data","method","HTTP_METHODS","GET","timeout","getSetting","responseType","onProgress","events","baseHeaders","Accept","headers","reject","TimeoutException","responseJSON","status","isReload","NetworkException","NotFoundException","UnauthorizedException","FetchException","response","getResponseHeader","isPlainObject","JSON","parse","error","JsonParseException","resolve","getResponse","has","errorHandler","forEach","eventType","addEventListener","timeoutHandler","responseHandler","eventName","open","Cache","hasItem","withCredentials","basicToken","getItem","setRequestHeader","headerName","send","stringData","XMLHttpRequest","setEventListeners","openConnection","setBasicAuthentication","setCustomHeaders","setOtherOptions","sendData","setXMLHttpRequest","fetch","validateInputArguments","args","IllegalArgumentException","toString","xhr"],"sources":["../../../src/utils/fetch/xhr.js"],"sourcesContent":["// @flow\nimport { has, isPlainObject } from \"../helpers/objects\";\n\nimport {\n IllegalArgumentException,\n UnauthorizedException,\n FetchException,\n TimeoutException,\n NotFoundException,\n JsonParseException,\n NetworkException,\n} from \"../../exceptions\";\n\nimport Cache from \"../browser/Cache\";\n\nimport { HTTP_METHODS } from \"../../constants/Constants\";\n\nimport { getSetting } from \"../../constants/Settings\";\n\nimport type { RequestOptions } from \"./types\";\n\nconst NETWORK_ERROR_CODE = 0;\nconst SUCCESS_CODE = 200;\nconst CLIENT_ERROR_CODE = 400;\nconst UNAUTHORIZED_CODE = 401;\nconst REDIRECTION_CODE = 300;\nconst NOT_FOUND_CODE = 404;\n\nconst JSON_TYPE = \"application/json\";\n\n/**\n * @private\n */\nclass XHR {\n _options: RequestOptions;\n _xmlhttp: XMLHttpRequest;\n _attempts: number;\n\n /**\n */\n constructor(options: RequestOptions) {\n this._options = options;\n this._attempts = 0;\n }\n\n /**\n */\n get xmlhttp() {\n return this._xmlhttp;\n }\n\n /**\n */\n set xmlhttp(xmlhttp) {\n this._xmlhttp = xmlhttp;\n }\n\n /**\n */\n get options() {\n return this._options;\n }\n\n /**\n */\n set options(options: RequestOptions) {\n this._options = options;\n }\n\n /**\n */\n get attempts() {\n return this._attempts;\n }\n\n /**\n */\n set attempts(attempts) {\n this._attempts = attempts;\n }\n\n /**\n * Create and fix url when params or both querystring and params exist.\n */\n get url() {\n const { url } = this.options;\n if (this.params !== \"\") {\n if (url.includes(\"?\")) {\n const aUrl = url.split(\"?\");\n\n return `${aUrl[0]}?${aUrl[1]}&${this.params}`;\n }\n\n return `${url}?${this.params}`;\n }\n\n return url;\n }\n\n /**\n */\n get params() {\n return this.options.params || \"\";\n }\n\n /**\n */\n get data() {\n return this.options.data || null;\n }\n\n /**\n */\n get method() {\n return this.options.method || HTTP_METHODS.GET;\n }\n\n /**\n */\n get timeout() {\n return this.options.timeout || getSetting(\"XHR_TIMEOUT_MS\", 300000);\n }\n\n /**\n */\n get responseType() {\n return this.options.responseType || \"json\";\n }\n\n /**\n */\n get onProgress(): ProgressEventHandler {\n if (this.options.onProgress) {\n return this.options.onProgress;\n }\n\n return () => {\n // do nothing\n };\n }\n\n /**\n */\n get events() {\n return this.options.events || {};\n }\n\n /**\n */\n get headers() {\n const baseHeaders = {\n Accept: JSON_TYPE,\n \"Content-Type\": JSON_TYPE,\n\n // needed for csrf, see: https://plaza.beinformed.com/amdoc/csrf-protection-in-modular-ui-services-40054554.html\n \"X-Requested-With\": \"XMLHttpRequest\",\n\n \"Accept-Language\": \"en\",\n };\n\n if (this.options.headers) {\n // $FlowFixMe[cannot-spread-indexer]\n return {\n ...baseHeaders,\n ...this.options.headers,\n };\n }\n\n return baseHeaders;\n }\n\n /**\n */\n timeoutHandler(reject) {\n return reject(new TimeoutException(this.url, this.method));\n }\n\n /**\n */\n errorHandler(reject, responseJSON = null) {\n const { status } = this.xmlhttp;\n const { isReload } = this.options;\n\n if (status === NETWORK_ERROR_CODE) {\n return reject(new NetworkException(this.url, this.method));\n }\n\n if (status === NOT_FOUND_CODE) {\n return reject(new NotFoundException(this.url, this.method, isReload));\n }\n\n if (status === UNAUTHORIZED_CODE) {\n return reject(\n new UnauthorizedException(this.url, this.method, responseJSON)\n );\n }\n\n return reject(new FetchException(responseJSON, this.xmlhttp, this.options));\n }\n\n /**\n */\n getResponse() {\n const { responseType, response } = this.xmlhttp;\n\n if (\n (responseType === \"\" || responseType === \"text\") &&\n this.getResponseHeader(\"Content-Type\") === JSON_TYPE\n ) {\n if (isPlainObject(response)) {\n return response;\n }\n\n try {\n return JSON.parse(response);\n } catch (error) {\n throw new JsonParseException(error);\n }\n }\n\n return response;\n }\n\n /**\n */\n responseHandler(resolve, reject) {\n const { status } = this.xmlhttp;\n\n let response = null;\n try {\n response = this.getResponse();\n } catch (error) {\n return reject(error);\n }\n\n if (\n (status >= SUCCESS_CODE && status < REDIRECTION_CODE) ||\n (status === CLIENT_ERROR_CODE && has(response, \"formresponse\"))\n ) {\n return resolve(response);\n }\n\n return this.errorHandler(reject, response);\n }\n\n /**\n */\n setEventListeners(resolve, reject) {\n if (this.options.onProgress) {\n [\"load\", \"loadend\", \"loadstart\", \"progress\"].forEach((eventType) => {\n this.xmlhttp.addEventListener(eventType, this.onProgress);\n });\n }\n\n [\"abort\", \"error\"].forEach((eventType) => {\n this.xmlhttp.addEventListener(eventType, () => this.errorHandler(reject));\n });\n\n this.xmlhttp.addEventListener(\"timeout\", () => this.timeoutHandler(reject));\n\n this.xmlhttp.addEventListener(\"load\", () =>\n this.responseHandler(resolve, reject)\n );\n\n // Set custom events\n Object.keys(this.events).forEach((eventName) => {\n this.xmlhttp.addEventListener(eventName, this.events[eventName]);\n });\n }\n\n /**\n */\n openConnection() {\n this.xmlhttp.open(this.method, this.url, true);\n }\n\n /**\n */\n setBasicAuthentication() {\n if (Cache.hasItem(\"basic\")) {\n this.xmlhttp.withCredentials = true;\n const basicToken = Cache.getItem(\"basic\");\n\n if (typeof basicToken === \"string\") {\n this.xmlhttp.setRequestHeader(\"Authorization\", `Basic ${basicToken}`);\n }\n }\n }\n\n /**\n */\n getResponseHeader(headerName) {\n return this.xmlhttp.getResponseHeader(headerName);\n }\n\n /**\n */\n setCustomHeaders() {\n Object.keys(this.headers).forEach((headerName) => {\n this.xmlhttp.setRequestHeader(headerName, this.headers[headerName]);\n });\n }\n\n /**\n */\n setOtherOptions() {\n this.xmlhttp.responseType = this.responseType;\n this.xmlhttp.timeout = this.timeout;\n }\n\n /**\n */\n sendData() {\n if (this.data == null) {\n this.xmlhttp.send();\n } else {\n const stringData = isPlainObject(this.data)\n ? JSON.stringify(this.data)\n : this.data;\n this.xmlhttp.send(stringData);\n }\n }\n\n /**\n */\n setXMLHttpRequest() {\n return new Promise((resolve, reject) => {\n this.xmlhttp = new XMLHttpRequest();\n\n this.setEventListeners(resolve, reject);\n\n this.openConnection();\n\n this.setBasicAuthentication();\n\n this.setCustomHeaders();\n\n this.setOtherOptions();\n\n this.sendData();\n });\n }\n\n /**\n */\n async fetch() {\n try {\n return await this.setXMLHttpRequest();\n } catch (err) {\n if (err instanceof NetworkException && this.attempts < 2) {\n this.attempts += 1;\n return this.fetch();\n }\n\n throw err;\n }\n }\n}\n\n/**\n */\nconst validateInputArguments = (args: RequestOptions) => {\n if (args == null) {\n throw new IllegalArgumentException(\n \"Missing request options, expecting an object as argument for xhr\"\n );\n }\n\n if (!isPlainObject(args)) {\n throw new IllegalArgumentException(\n `Expecting an object as argument for xhr, but received: ${args.toString()}`\n );\n }\n\n if (!has(args, \"url\")) {\n throw new IllegalArgumentException(\n `No url property found in arguments of xhr, received: ${JSON.stringify(\n args\n )}`\n );\n }\n\n return true;\n};\n\n/**\n */\nconst xhr = (args: RequestOptions): Promise<any> => {\n validateInputArguments(args);\n\n return new XHR(args).fetch();\n};\n\nexport default xhr;\n"],"mappings":"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"}
@@ -25,6 +25,7 @@ var resourceExists = function resourceExists(url) {
25
25
  xhr.open("HEAD", fullUrl, false);
26
26
  xhr.setRequestHeader("Accept", "application/json");
27
27
  xhr.setRequestHeader("Content-Type", "application/json");
28
+ xhr.setRequestHeader("X-Requested-With", "XMLHttpRequest");
28
29
  xhr.send();
29
30
  return xhr.status !== 404;
30
31
  };
@@ -45,6 +46,7 @@ var resourceRedirectsToSecureLogin = function resourceRedirectsToSecureLogin(url
45
46
  xhr.open("HEAD", fullUrl, false);
46
47
  xhr.setRequestHeader("Accept", "application/json");
47
48
  xhr.setRequestHeader("Content-Type", "application/json");
49
+ xhr.setRequestHeader("X-Requested-With", "XMLHttpRequest");
48
50
  xhr.send();
49
51
  var responseURL = (_xhr$responseURL = xhr.responseURL) !== null && _xhr$responseURL !== void 0 ? _xhr$responseURL : "";
50
52
  return xhr.status === 400 && (0, _endsWith.default)(responseURL).call(responseURL, "/secureLogin");
@@ -17,6 +17,8 @@ export const resourceExists = (url: string | Href): boolean => {
17
17
  xhr.open("HEAD", fullUrl, false);
18
18
  xhr.setRequestHeader("Accept", "application/json");
19
19
  xhr.setRequestHeader("Content-Type", "application/json");
20
+ xhr.setRequestHeader("X-Requested-With", "XMLHttpRequest");
21
+
20
22
  xhr.send();
21
23
 
22
24
  return xhr.status !== 404;
@@ -34,6 +36,7 @@ export const resourceRedirectsToSecureLogin = (url: string | Href): boolean => {
34
36
  xhr.open("HEAD", fullUrl, false);
35
37
  xhr.setRequestHeader("Accept", "application/json");
36
38
  xhr.setRequestHeader("Content-Type", "application/json");
39
+ xhr.setRequestHeader("X-Requested-With", "XMLHttpRequest");
37
40
  xhr.send();
38
41
 
39
42
  const responseURL = xhr.responseURL ?? "";
@@ -1 +1 @@
1
- {"version":3,"file":"checkResource.js","names":["resourceExists","url","fullUrl","Href","absolutehref","xhr","XMLHttpRequest","open","setRequestHeader","send","status","resourceRedirectsToSecureLogin","responseURL"],"sources":["../../../src/utils/helpers/checkResource.js"],"sourcesContent":["// @flow\nimport Href from \"../../models/href/Href\";\n\n/**\n * Checks if a given url to a modular ui resource exists using a HEAD request to the resource (synchronous)\n * When the resource returns a 404, the resource does not exists and the method returns false\n *\n * @param url\n * @returns {boolean}\n */\nexport const resourceExists = (url: string | Href): boolean => {\n const fullUrl = new Href(url).absolutehref;\n\n // const fullUrl = `${BASE}/${url}`.replace(/\\/\\//g, \"/\");\n\n const xhr = new XMLHttpRequest();\n xhr.open(\"HEAD\", fullUrl, false);\n xhr.setRequestHeader(\"Accept\", \"application/json\");\n xhr.setRequestHeader(\"Content-Type\", \"application/json\");\n xhr.send();\n\n return xhr.status !== 404;\n};\n\n/**\n * Indicates if a request to the given url resuls in a redirect to /secureRedirect\n * @param url\n * @returns {boolean}\n */\nexport const resourceRedirectsToSecureLogin = (url: string | Href): boolean => {\n const fullUrl = new Href(url).absolutehref;\n\n const xhr = new XMLHttpRequest();\n xhr.open(\"HEAD\", fullUrl, false);\n xhr.setRequestHeader(\"Accept\", \"application/json\");\n xhr.setRequestHeader(\"Content-Type\", \"application/json\");\n xhr.send();\n\n const responseURL = xhr.responseURL ?? \"\";\n\n return xhr.status === 400 && responseURL.endsWith(\"/secureLogin\");\n};\n"],"mappings":";;;;;;;;;;;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,IAAMA,cAAc,GAAG,SAAjBA,cAAiB,CAACC,GAAD,EAAiC;EAC7D,IAAMC,OAAO,GAAG,IAAIC,aAAJ,CAASF,GAAT,EAAcG,YAA9B,CAD6D,CAG7D;;EAEA,IAAMC,GAAG,GAAG,IAAIC,cAAJ,EAAZ;EACAD,GAAG,CAACE,IAAJ,CAAS,MAAT,EAAiBL,OAAjB,EAA0B,KAA1B;EACAG,GAAG,CAACG,gBAAJ,CAAqB,QAArB,EAA+B,kBAA/B;EACAH,GAAG,CAACG,gBAAJ,CAAqB,cAArB,EAAqC,kBAArC;EACAH,GAAG,CAACI,IAAJ;EAEA,OAAOJ,GAAG,CAACK,MAAJ,KAAe,GAAtB;AACD,CAZM;AAcP;AACA;AACA;AACA;AACA;;;;;AACO,IAAMC,8BAA8B,GAAG,SAAjCA,8BAAiC,CAACV,GAAD,EAAiC;EAAA;;EAC7E,IAAMC,OAAO,GAAG,IAAIC,aAAJ,CAASF,GAAT,EAAcG,YAA9B;EAEA,IAAMC,GAAG,GAAG,IAAIC,cAAJ,EAAZ;EACAD,GAAG,CAACE,IAAJ,CAAS,MAAT,EAAiBL,OAAjB,EAA0B,KAA1B;EACAG,GAAG,CAACG,gBAAJ,CAAqB,QAArB,EAA+B,kBAA/B;EACAH,GAAG,CAACG,gBAAJ,CAAqB,cAArB,EAAqC,kBAArC;EACAH,GAAG,CAACI,IAAJ;EAEA,IAAMG,WAAW,uBAAGP,GAAG,CAACO,WAAP,+DAAsB,EAAvC;EAEA,OAAOP,GAAG,CAACK,MAAJ,KAAe,GAAf,IAAsB,uBAAAE,WAAW,MAAX,CAAAA,WAAW,EAAU,cAAV,CAAxC;AACD,CAZM"}
1
+ {"version":3,"file":"checkResource.js","names":["resourceExists","url","fullUrl","Href","absolutehref","xhr","XMLHttpRequest","open","setRequestHeader","send","status","resourceRedirectsToSecureLogin","responseURL"],"sources":["../../../src/utils/helpers/checkResource.js"],"sourcesContent":["// @flow\nimport Href from \"../../models/href/Href\";\n\n/**\n * Checks if a given url to a modular ui resource exists using a HEAD request to the resource (synchronous)\n * When the resource returns a 404, the resource does not exists and the method returns false\n *\n * @param url\n * @returns {boolean}\n */\nexport const resourceExists = (url: string | Href): boolean => {\n const fullUrl = new Href(url).absolutehref;\n\n // const fullUrl = `${BASE}/${url}`.replace(/\\/\\//g, \"/\");\n\n const xhr = new XMLHttpRequest();\n xhr.open(\"HEAD\", fullUrl, false);\n xhr.setRequestHeader(\"Accept\", \"application/json\");\n xhr.setRequestHeader(\"Content-Type\", \"application/json\");\n xhr.setRequestHeader(\"X-Requested-With\", \"XMLHttpRequest\");\n\n xhr.send();\n\n return xhr.status !== 404;\n};\n\n/**\n * Indicates if a request to the given url resuls in a redirect to /secureRedirect\n * @param url\n * @returns {boolean}\n */\nexport const resourceRedirectsToSecureLogin = (url: string | Href): boolean => {\n const fullUrl = new Href(url).absolutehref;\n\n const xhr = new XMLHttpRequest();\n xhr.open(\"HEAD\", fullUrl, false);\n xhr.setRequestHeader(\"Accept\", \"application/json\");\n xhr.setRequestHeader(\"Content-Type\", \"application/json\");\n xhr.setRequestHeader(\"X-Requested-With\", \"XMLHttpRequest\");\n xhr.send();\n\n const responseURL = xhr.responseURL ?? \"\";\n\n return xhr.status === 400 && responseURL.endsWith(\"/secureLogin\");\n};\n"],"mappings":";;;;;;;;;;;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,IAAMA,cAAc,GAAG,SAAjBA,cAAiB,CAACC,GAAD,EAAiC;EAC7D,IAAMC,OAAO,GAAG,IAAIC,aAAJ,CAASF,GAAT,EAAcG,YAA9B,CAD6D,CAG7D;;EAEA,IAAMC,GAAG,GAAG,IAAIC,cAAJ,EAAZ;EACAD,GAAG,CAACE,IAAJ,CAAS,MAAT,EAAiBL,OAAjB,EAA0B,KAA1B;EACAG,GAAG,CAACG,gBAAJ,CAAqB,QAArB,EAA+B,kBAA/B;EACAH,GAAG,CAACG,gBAAJ,CAAqB,cAArB,EAAqC,kBAArC;EACAH,GAAG,CAACG,gBAAJ,CAAqB,kBAArB,EAAyC,gBAAzC;EAEAH,GAAG,CAACI,IAAJ;EAEA,OAAOJ,GAAG,CAACK,MAAJ,KAAe,GAAtB;AACD,CAdM;AAgBP;AACA;AACA;AACA;AACA;;;;;AACO,IAAMC,8BAA8B,GAAG,SAAjCA,8BAAiC,CAACV,GAAD,EAAiC;EAAA;;EAC7E,IAAMC,OAAO,GAAG,IAAIC,aAAJ,CAASF,GAAT,EAAcG,YAA9B;EAEA,IAAMC,GAAG,GAAG,IAAIC,cAAJ,EAAZ;EACAD,GAAG,CAACE,IAAJ,CAAS,MAAT,EAAiBL,OAAjB,EAA0B,KAA1B;EACAG,GAAG,CAACG,gBAAJ,CAAqB,QAArB,EAA+B,kBAA/B;EACAH,GAAG,CAACG,gBAAJ,CAAqB,cAArB,EAAqC,kBAArC;EACAH,GAAG,CAACG,gBAAJ,CAAqB,kBAArB,EAAyC,gBAAzC;EACAH,GAAG,CAACI,IAAJ;EAEA,IAAMG,WAAW,uBAAGP,GAAG,CAACO,WAAP,+DAAsB,EAAvC;EAEA,OAAOP,GAAG,CAACK,MAAJ,KAAe,GAAf,IAAsB,uBAAAE,WAAW,MAAX,CAAAA,WAAW,EAAU,cAAV,CAAxC;AACD,CAbM"}
@@ -1 +1 @@
1
- {"version":3,"file":"objects.js","names":["isPlainObject","value","has","obj","propName","get","path","defaultValue","String","split","reduce","acc","v"],"sources":["../../../src/utils/helpers/objects.js"],"sourcesContent":["// @flow\nimport _has from \"lodash/has\";\nimport _isPlainObject from \"lodash/isPlainObject\";\n\n/**\n */\nexport const isPlainObject = (value: any): boolean => _isPlainObject(value);\n\n/**\n */\nexport const has = (obj: any, propName: string): boolean => {\n if (!isPlainObject(obj)) {\n return false;\n }\n\n return _has(obj, propName);\n};\n\n/**\n * Retrieve property of an object\n * When path is only one deep better use optional chaining\n */\nexport const get = (obj: { ... }, path: string, defaultValue?: any): any =>\n String(path)\n .split(\".\")\n .reduce((acc, v) => {\n if (typeof acc === \"object\") {\n return acc[v] ?? defaultValue;\n }\n return defaultValue;\n }, obj);\n"],"mappings":";;;;;;;;;;;AACA;;AACA;;AAEA;AACA;AACO,IAAMA,aAAa,GAAG,SAAhBA,aAAgB,CAACC,KAAD;EAAA,OAAyB,6BAAeA,KAAf,CAAzB;AAAA,CAAtB;AAEP;AACA;;;;;AACO,IAAMC,GAAG,GAAG,SAANA,GAAM,CAACC,GAAD,EAAWC,QAAX,EAAyC;EAC1D,IAAI,CAACJ,aAAa,CAACG,GAAD,CAAlB,EAAyB;IACvB,OAAO,KAAP;EACD;;EAED,OAAO,mBAAKA,GAAL,EAAUC,QAAV,CAAP;AACD,CANM;AAQP;AACA;AACA;AACA;;;;;AACO,IAAMC,GAAG,GAAG,SAANA,GAAM,CAACF,GAAD,EAAeG,IAAf,EAA6BC,YAA7B;EAAA,OACjBC,MAAM,CAACF,IAAD,CAAN,CACGG,KADH,CACS,GADT,EAEGC,MAFH,CAEU,UAACC,GAAD,EAAMC,CAAN,EAAY;IAClB,IAAI,sBAAOD,GAAP,MAAe,QAAnB,EAA6B;MAAA;;MAC3B,iBAAOA,GAAG,CAACC,CAAD,CAAV,2CAAiBL,YAAjB;IACD;;IACD,OAAOA,YAAP;EACD,CAPH,EAOKJ,GAPL,CADiB;AAAA,CAAZ"}
1
+ {"version":3,"file":"objects.js","names":["isPlainObject","value","_isPlainObject","has","obj","propName","_has","get","path","defaultValue","String","split","reduce","acc","v"],"sources":["../../../src/utils/helpers/objects.js"],"sourcesContent":["// @flow\nimport _has from \"lodash/has\";\nimport _isPlainObject from \"lodash/isPlainObject\";\n\n/**\n */\nexport const isPlainObject = (value: any): boolean => _isPlainObject(value);\n\n/**\n */\nexport const has = (obj: any, propName: string): boolean => {\n if (!isPlainObject(obj)) {\n return false;\n }\n\n return _has(obj, propName);\n};\n\n/**\n * Retrieve property of an object\n * When path is only one deep better use optional chaining\n */\nexport const get = (obj: { ... }, path: string, defaultValue?: any): any =>\n String(path)\n .split(\".\")\n .reduce((acc, v) => {\n if (typeof acc === \"object\") {\n return acc[v] ?? defaultValue;\n }\n return defaultValue;\n }, obj);\n"],"mappings":";;;;;;;;;;;AACA;;AACA;;AAEA;AACA;AACO,IAAMA,aAAa,GAAG,SAAhBA,aAAgB,CAACC,KAAD;EAAA,OAAyB,IAAAC,uBAAA,EAAeD,KAAf,CAAzB;AAAA,CAAtB;AAEP;AACA;;;;;AACO,IAAME,GAAG,GAAG,SAANA,GAAM,CAACC,GAAD,EAAWC,QAAX,EAAyC;EAC1D,IAAI,CAACL,aAAa,CAACI,GAAD,CAAlB,EAAyB;IACvB,OAAO,KAAP;EACD;;EAED,OAAO,IAAAE,aAAA,EAAKF,GAAL,EAAUC,QAAV,CAAP;AACD,CANM;AAQP;AACA;AACA;AACA;;;;;AACO,IAAME,GAAG,GAAG,SAANA,GAAM,CAACH,GAAD,EAAeI,IAAf,EAA6BC,YAA7B;EAAA,OACjBC,MAAM,CAACF,IAAD,CAAN,CACGG,KADH,CACS,GADT,EAEGC,MAFH,CAEU,UAACC,GAAD,EAAMC,CAAN,EAAY;IAClB,IAAI,sBAAOD,GAAP,MAAe,QAAnB,EAA6B;MAAA;;MAC3B,iBAAOA,GAAG,CAACC,CAAD,CAAV,2CAAiBL,YAAjB;IACD;;IACD,OAAOA,YAAP;EACD,CAPH,EAOKL,GAPL,CADiB;AAAA,CAAZ"}
@@ -1 +1 @@
1
- {"version":3,"file":"sanitizeHtml.js","names":["properEntityEncoding","html","escapedGt","replace","escapedLt","properEntities","he","encode","decode","decimal","unescapedGt","removeUnwantedHtml","options","allowedTags","IllegalArgumentException","correctEntityHtml","htmlWithoutAttributes","htmlWithCorrectBR","Array","isArray","join","pattern","regex","RegExp"],"sources":["../../../src/utils/helpers/sanitizeHtml.js"],"sourcesContent":["// @flow\nimport he from \"he\";\n\nimport { IllegalArgumentException } from \"../../exceptions\";\n\ntype removeUnwantedHtmlOptions = {\n allowedTags?: Array<string>,\n};\n\n/**\n * Translates html entities to their correct decimal equivalent\n * When path is only one deep better use optional chaining\n */\nconst properEntityEncoding = (html) => {\n const escapedGt = html.replace(/</g, \"[\");\n const escapedLt = escapedGt.replace(/>/g, \"]\");\n\n const properEntities = he.encode(he.decode(escapedLt), {\n decimal: true,\n });\n\n const unescapedGt = properEntities.replace(/\\[/g, \"<\");\n\n return unescapedGt.replace(/]/g, \">\");\n};\n\n/**\n * removes unwanted html, this might result in incorrect html, as it removes all html that we don't except,\n * like <b style=\"font-weight: 400\">bold</b> will result in bold</b>\n */\nconst removeUnwantedHtml = (\n html: string,\n options: removeUnwantedHtmlOptions = {\n allowedTags: [\"p\", \"br\", \"b\", \"i\", \"u\", \"strike\"],\n }\n): string => {\n if (typeof html !== \"string\") {\n throw new IllegalArgumentException(\"sanitizeHTML method expects a string\");\n }\n\n const correctEntityHtml = properEntityEncoding(html);\n\n // remove attributes from html elements\n const htmlWithoutAttributes = correctEntityHtml.replace(\n /<(\\w+)(.|[\\r\\n])*?>/gi,\n \"<$1>\"\n );\n\n const htmlWithCorrectBR = htmlWithoutAttributes.replace(\n /<br\\s*>/gi,\n \"<br />\"\n );\n\n // remove not allowed tags\n const allowedTags = Array.isArray(options.allowedTags)\n ? options.allowedTags.join(\"|\")\n : \"\";\n const pattern = `<(?!\\\\/?(${allowedTags})(>|\\\\s\\\\/))[^<]+?>`;\n const regex = new RegExp(pattern, \"gi\");\n\n return htmlWithCorrectBR.replace(regex, \"\");\n};\n\nexport { removeUnwantedHtml };\n"],"mappings":";;;;;;;;;AACA;;AAEA;;AAMA;AACA;AACA;AACA;AACA,IAAMA,oBAAoB,GAAG,SAAvBA,oBAAuB,CAACC,IAAD,EAAU;EACrC,IAAMC,SAAS,GAAGD,IAAI,CAACE,OAAL,CAAa,IAAb,EAAmB,GAAnB,CAAlB;EACA,IAAMC,SAAS,GAAGF,SAAS,CAACC,OAAV,CAAkB,IAAlB,EAAwB,GAAxB,CAAlB;;EAEA,IAAME,cAAc,GAAGC,YAAGC,MAAH,CAAUD,YAAGE,MAAH,CAAUJ,SAAV,CAAV,EAAgC;IACrDK,OAAO,EAAE;EAD4C,CAAhC,CAAvB;;EAIA,IAAMC,WAAW,GAAGL,cAAc,CAACF,OAAf,CAAuB,KAAvB,EAA8B,GAA9B,CAApB;EAEA,OAAOO,WAAW,CAACP,OAAZ,CAAoB,IAApB,EAA0B,GAA1B,CAAP;AACD,CAXD;AAaA;AACA;AACA;AACA;;;AACA,IAAMQ,kBAAkB,GAAG,SAArBA,kBAAqB,CACzBV,IADyB,EAKd;EAAA,IAHXW,OAGW,uEAH0B;IACnCC,WAAW,EAAE,CAAC,GAAD,EAAM,IAAN,EAAY,GAAZ,EAAiB,GAAjB,EAAsB,GAAtB,EAA2B,QAA3B;EADsB,CAG1B;;EACX,IAAI,OAAOZ,IAAP,KAAgB,QAApB,EAA8B;IAC5B,MAAM,IAAIa,oCAAJ,CAA6B,sCAA7B,CAAN;EACD;;EAED,IAAMC,iBAAiB,GAAGf,oBAAoB,CAACC,IAAD,CAA9C,CALW,CAOX;;EACA,IAAMe,qBAAqB,GAAGD,iBAAiB,CAACZ,OAAlB,CAC5B,uBAD4B,EAE5B,MAF4B,CAA9B;EAKA,IAAMc,iBAAiB,GAAGD,qBAAqB,CAACb,OAAtB,CACxB,WADwB,EAExB,QAFwB,CAA1B,CAbW,CAkBX;;EACA,IAAMU,WAAW,GAAGK,KAAK,CAACC,OAAN,CAAcP,OAAO,CAACC,WAAtB,IAChBD,OAAO,CAACC,WAAR,CAAoBO,IAApB,CAAyB,GAAzB,CADgB,GAEhB,EAFJ;EAGA,IAAMC,OAAO,sBAAeR,WAAf,wBAAb;EACA,IAAMS,KAAK,GAAG,IAAIC,MAAJ,CAAWF,OAAX,EAAoB,IAApB,CAAd;EAEA,OAAOJ,iBAAiB,CAACd,OAAlB,CAA0BmB,KAA1B,EAAiC,EAAjC,CAAP;AACD,CA/BD"}
1
+ {"version":3,"file":"sanitizeHtml.js","names":["properEntityEncoding","html","escapedGt","replace","escapedLt","properEntities","he","encode","decode","decimal","unescapedGt","removeUnwantedHtml","options","allowedTags","IllegalArgumentException","correctEntityHtml","htmlWithoutAttributes","htmlWithCorrectBR","Array","isArray","join","pattern","regex","RegExp"],"sources":["../../../src/utils/helpers/sanitizeHtml.js"],"sourcesContent":["// @flow\nimport he from \"he\";\n\nimport { IllegalArgumentException } from \"../../exceptions\";\n\ntype removeUnwantedHtmlOptions = {\n allowedTags?: Array<string>,\n};\n\n/**\n * Translates html entities to their correct decimal equivalent\n * When path is only one deep better use optional chaining\n */\nconst properEntityEncoding = (html) => {\n const escapedGt = html.replace(/</g, \"[\");\n const escapedLt = escapedGt.replace(/>/g, \"]\");\n\n const properEntities = he.encode(he.decode(escapedLt), {\n decimal: true,\n });\n\n const unescapedGt = properEntities.replace(/\\[/g, \"<\");\n\n return unescapedGt.replace(/]/g, \">\");\n};\n\n/**\n * removes unwanted html, this might result in incorrect html, as it removes all html that we don't except,\n * like <b style=\"font-weight: 400\">bold</b> will result in bold</b>\n */\nconst removeUnwantedHtml = (\n html: string,\n options: removeUnwantedHtmlOptions = {\n allowedTags: [\"p\", \"br\", \"b\", \"i\", \"u\", \"strike\"],\n }\n): string => {\n if (typeof html !== \"string\") {\n throw new IllegalArgumentException(\"sanitizeHTML method expects a string\");\n }\n\n const correctEntityHtml = properEntityEncoding(html);\n\n // remove attributes from html elements\n const htmlWithoutAttributes = correctEntityHtml.replace(\n /<(\\w+)(.|[\\r\\n])*?>/gi,\n \"<$1>\"\n );\n\n const htmlWithCorrectBR = htmlWithoutAttributes.replace(\n /<br\\s*>/gi,\n \"<br />\"\n );\n\n // remove not allowed tags\n const allowedTags = Array.isArray(options.allowedTags)\n ? options.allowedTags.join(\"|\")\n : \"\";\n const pattern = `<(?!\\\\/?(${allowedTags})(>|\\\\s\\\\/))[^<]+?>`;\n const regex = new RegExp(pattern, \"gi\");\n\n return htmlWithCorrectBR.replace(regex, \"\");\n};\n\nexport { removeUnwantedHtml };\n"],"mappings":";;;;;;;;;AACA;;AAEA;;AAMA;AACA;AACA;AACA;AACA,IAAMA,oBAAoB,GAAG,SAAvBA,oBAAuB,CAACC,IAAD,EAAU;EACrC,IAAMC,SAAS,GAAGD,IAAI,CAACE,OAAL,CAAa,IAAb,EAAmB,GAAnB,CAAlB;EACA,IAAMC,SAAS,GAAGF,SAAS,CAACC,OAAV,CAAkB,IAAlB,EAAwB,GAAxB,CAAlB;;EAEA,IAAME,cAAc,GAAGC,WAAA,CAAGC,MAAH,CAAUD,WAAA,CAAGE,MAAH,CAAUJ,SAAV,CAAV,EAAgC;IACrDK,OAAO,EAAE;EAD4C,CAAhC,CAAvB;;EAIA,IAAMC,WAAW,GAAGL,cAAc,CAACF,OAAf,CAAuB,KAAvB,EAA8B,GAA9B,CAApB;EAEA,OAAOO,WAAW,CAACP,OAAZ,CAAoB,IAApB,EAA0B,GAA1B,CAAP;AACD,CAXD;AAaA;AACA;AACA;AACA;;;AACA,IAAMQ,kBAAkB,GAAG,SAArBA,kBAAqB,CACzBV,IADyB,EAKd;EAAA,IAHXW,OAGW,uEAH0B;IACnCC,WAAW,EAAE,CAAC,GAAD,EAAM,IAAN,EAAY,GAAZ,EAAiB,GAAjB,EAAsB,GAAtB,EAA2B,QAA3B;EADsB,CAG1B;;EACX,IAAI,OAAOZ,IAAP,KAAgB,QAApB,EAA8B;IAC5B,MAAM,IAAIa,oCAAJ,CAA6B,sCAA7B,CAAN;EACD;;EAED,IAAMC,iBAAiB,GAAGf,oBAAoB,CAACC,IAAD,CAA9C,CALW,CAOX;;EACA,IAAMe,qBAAqB,GAAGD,iBAAiB,CAACZ,OAAlB,CAC5B,uBAD4B,EAE5B,MAF4B,CAA9B;EAKA,IAAMc,iBAAiB,GAAGD,qBAAqB,CAACb,OAAtB,CACxB,WADwB,EAExB,QAFwB,CAA1B,CAbW,CAkBX;;EACA,IAAMU,WAAW,GAAGK,KAAK,CAACC,OAAN,CAAcP,OAAO,CAACC,WAAtB,IAChBD,OAAO,CAACC,WAAR,CAAoBO,IAApB,CAAyB,GAAzB,CADgB,GAEhB,EAFJ;EAGA,IAAMC,OAAO,sBAAeR,WAAf,wBAAb;EACA,IAAMS,KAAK,GAAG,IAAIC,MAAJ,CAAWF,OAAX,EAAoB,IAApB,CAAd;EAEA,OAAOJ,iBAAiB,CAACd,OAAlB,CAA0BmB,KAA1B,EAAiC,EAAjC,CAAP;AACD,CA/BD"}
@@ -1 +1 @@
1
- {"version":3,"file":"text.js","names":["retrieveText","text","message"],"sources":["../../../src/utils/helpers/text.js"],"sourcesContent":["// @flow\nimport { isPlainObject } from \"./objects\";\n\n/**\n * Handles text that is in the ApplicationMessage form ({ id: string, message: string, properties: object })\n * @param text\n * @returns {string}\n */\nexport const retrieveText = (\n text:\n | string\n | { id?: string, message: string, properties?: { [key: string]: any } }\n): string => {\n if (typeof text === \"string\") {\n return text;\n }\n\n if (isPlainObject(text) && \"message\" in text) {\n return text.message;\n }\n\n return \"\";\n};\n"],"mappings":";;;;;;;AACA;;AAEA;AACA;AACA;AACA;AACA;AACO,IAAMA,YAAY,GAAG,SAAfA,YAAe,CAC1BC,IAD0B,EAIf;EACX,IAAI,OAAOA,IAAP,KAAgB,QAApB,EAA8B;IAC5B,OAAOA,IAAP;EACD;;EAED,IAAI,4BAAcA,IAAd,KAAuB,aAAaA,IAAxC,EAA8C;IAC5C,OAAOA,IAAI,CAACC,OAAZ;EACD;;EAED,OAAO,EAAP;AACD,CAdM"}
1
+ {"version":3,"file":"text.js","names":["retrieveText","text","isPlainObject","message"],"sources":["../../../src/utils/helpers/text.js"],"sourcesContent":["// @flow\nimport { isPlainObject } from \"./objects\";\n\n/**\n * Handles text that is in the ApplicationMessage form ({ id: string, message: string, properties: object })\n * @param text\n * @returns {string}\n */\nexport const retrieveText = (\n text:\n | string\n | { id?: string, message: string, properties?: { [key: string]: any } }\n): string => {\n if (typeof text === \"string\") {\n return text;\n }\n\n if (isPlainObject(text) && \"message\" in text) {\n return text.message;\n }\n\n return \"\";\n};\n"],"mappings":";;;;;;;AACA;;AAEA;AACA;AACA;AACA;AACA;AACO,IAAMA,YAAY,GAAG,SAAfA,YAAe,CAC1BC,IAD0B,EAIf;EACX,IAAI,OAAOA,IAAP,KAAgB,QAApB,EAA8B;IAC5B,OAAOA,IAAP;EACD;;EAED,IAAI,IAAAC,sBAAA,EAAcD,IAAd,KAAuB,aAAaA,IAAxC,EAA8C;IAC5C,OAAOA,IAAI,CAACE,OAAZ;EACD;;EAED,OAAO,EAAP;AACD,CAdM"}
@@ -1 +1 @@
1
- {"version":3,"file":"formatValue.js","names":["updateGroupingSeparator","input","groupingSeparator","replace","formatValue","value","format","decimalSeparator","numberValue","IllegalArgumentException","stringValue","formattedValue","DecimalFormat","split","integer","decimal","integerPart"],"sources":["../../../src/utils/number/formatValue.js"],"sourcesContent":["// @flow\nimport { IllegalArgumentException } from \"../../exceptions\";\n\nimport DecimalFormat from \"./DecimalFormat\";\nimport { parseNumberToString, parseToNumber } from \"./parseNumbers\";\n\n/**\n * @private\n */\nconst updateGroupingSeparator = (input: string, groupingSeparator: string) => {\n if (groupingSeparator == null) {\n return input;\n }\n\n return input.replace(/,/g, groupingSeparator);\n};\n\n/**\n */\nconst formatValue = (\n value: ?number | ?string,\n format: ?string = \"0\",\n groupingSeparator: string = \",\",\n decimalSeparator: string = \".\"\n): string => {\n if (value == null) {\n return \"\";\n }\n\n const numberValue =\n typeof value === \"number\"\n ? value\n : parseToNumber(value, groupingSeparator, decimalSeparator);\n\n if (typeof numberValue !== \"number\") {\n throw new IllegalArgumentException(\n `Not a valid number: ${value} for formatValue`\n );\n }\n\n const stringValue = parseNumberToString(numberValue);\n\n if (format != null) {\n const formattedValue = new DecimalFormat(format).format(stringValue);\n\n const [integer, decimal] = formattedValue.split(\".\");\n\n const integerPart = updateGroupingSeparator(integer, groupingSeparator);\n\n if (decimal) {\n return `${integerPart}${decimalSeparator}${decimal}`;\n }\n\n return integerPart;\n }\n\n return stringValue;\n};\n\nexport default formatValue;\n"],"mappings":";;;;;;;;;;;;;AACA;;AAEA;;AACA;;AAEA;AACA;AACA;AACA,IAAMA,uBAAuB,GAAG,SAA1BA,uBAA0B,CAACC,KAAD,EAAgBC,iBAAhB,EAA8C;EAC5E,IAAIA,iBAAiB,IAAI,IAAzB,EAA+B;IAC7B,OAAOD,KAAP;EACD;;EAED,OAAOA,KAAK,CAACE,OAAN,CAAc,IAAd,EAAoBD,iBAApB,CAAP;AACD,CAND;AAQA;AACA;;;AACA,IAAME,WAAW,GAAG,SAAdA,WAAc,CAClBC,KADkB,EAKP;EAAA,IAHXC,MAGW,uEAHO,GAGP;EAAA,IAFXJ,iBAEW,uEAFiB,GAEjB;EAAA,IADXK,gBACW,uEADgB,GAChB;;EACX,IAAIF,KAAK,IAAI,IAAb,EAAmB;IACjB,OAAO,EAAP;EACD;;EAED,IAAMG,WAAW,GACf,OAAOH,KAAP,KAAiB,QAAjB,GACIA,KADJ,GAEI,iCAAcA,KAAd,EAAqBH,iBAArB,EAAwCK,gBAAxC,CAHN;;EAKA,IAAI,OAAOC,WAAP,KAAuB,QAA3B,EAAqC;IACnC,MAAM,IAAIC,oCAAJ,+BACmBJ,KADnB,sBAAN;EAGD;;EAED,IAAMK,WAAW,GAAG,uCAAoBF,WAApB,CAApB;;EAEA,IAAIF,MAAM,IAAI,IAAd,EAAoB;IAClB,IAAMK,cAAc,GAAG,IAAIC,sBAAJ,CAAkBN,MAAlB,EAA0BA,MAA1B,CAAiCI,WAAjC,CAAvB;;IAEA,4BAA2BC,cAAc,CAACE,KAAf,CAAqB,GAArB,CAA3B;IAAA;IAAA,IAAOC,OAAP;IAAA,IAAgBC,OAAhB;;IAEA,IAAMC,WAAW,GAAGhB,uBAAuB,CAACc,OAAD,EAAUZ,iBAAV,CAA3C;;IAEA,IAAIa,OAAJ,EAAa;MAAA;;MACX,kFAAUC,WAAV,mBAAwBT,gBAAxB,kBAA2CQ,OAA3C;IACD;;IAED,OAAOC,WAAP;EACD;;EAED,OAAON,WAAP;AACD,CAtCD;;eAwCeN,W"}
1
+ {"version":3,"file":"formatValue.js","names":["updateGroupingSeparator","input","groupingSeparator","replace","formatValue","value","format","decimalSeparator","numberValue","parseToNumber","IllegalArgumentException","stringValue","parseNumberToString","formattedValue","DecimalFormat","split","integer","decimal","integerPart"],"sources":["../../../src/utils/number/formatValue.js"],"sourcesContent":["// @flow\nimport { IllegalArgumentException } from \"../../exceptions\";\n\nimport DecimalFormat from \"./DecimalFormat\";\nimport { parseNumberToString, parseToNumber } from \"./parseNumbers\";\n\n/**\n * @private\n */\nconst updateGroupingSeparator = (input: string, groupingSeparator: string) => {\n if (groupingSeparator == null) {\n return input;\n }\n\n return input.replace(/,/g, groupingSeparator);\n};\n\n/**\n */\nconst formatValue = (\n value: ?number | ?string,\n format: ?string = \"0\",\n groupingSeparator: string = \",\",\n decimalSeparator: string = \".\"\n): string => {\n if (value == null) {\n return \"\";\n }\n\n const numberValue =\n typeof value === \"number\"\n ? value\n : parseToNumber(value, groupingSeparator, decimalSeparator);\n\n if (typeof numberValue !== \"number\") {\n throw new IllegalArgumentException(\n `Not a valid number: ${value} for formatValue`\n );\n }\n\n const stringValue = parseNumberToString(numberValue);\n\n if (format != null) {\n const formattedValue = new DecimalFormat(format).format(stringValue);\n\n const [integer, decimal] = formattedValue.split(\".\");\n\n const integerPart = updateGroupingSeparator(integer, groupingSeparator);\n\n if (decimal) {\n return `${integerPart}${decimalSeparator}${decimal}`;\n }\n\n return integerPart;\n }\n\n return stringValue;\n};\n\nexport default formatValue;\n"],"mappings":";;;;;;;;;;;;;AACA;;AAEA;;AACA;;AAEA;AACA;AACA;AACA,IAAMA,uBAAuB,GAAG,SAA1BA,uBAA0B,CAACC,KAAD,EAAgBC,iBAAhB,EAA8C;EAC5E,IAAIA,iBAAiB,IAAI,IAAzB,EAA+B;IAC7B,OAAOD,KAAP;EACD;;EAED,OAAOA,KAAK,CAACE,OAAN,CAAc,IAAd,EAAoBD,iBAApB,CAAP;AACD,CAND;AAQA;AACA;;;AACA,IAAME,WAAW,GAAG,SAAdA,WAAc,CAClBC,KADkB,EAKP;EAAA,IAHXC,MAGW,uEAHO,GAGP;EAAA,IAFXJ,iBAEW,uEAFiB,GAEjB;EAAA,IADXK,gBACW,uEADgB,GAChB;;EACX,IAAIF,KAAK,IAAI,IAAb,EAAmB;IACjB,OAAO,EAAP;EACD;;EAED,IAAMG,WAAW,GACf,OAAOH,KAAP,KAAiB,QAAjB,GACIA,KADJ,GAEI,IAAAI,2BAAA,EAAcJ,KAAd,EAAqBH,iBAArB,EAAwCK,gBAAxC,CAHN;;EAKA,IAAI,OAAOC,WAAP,KAAuB,QAA3B,EAAqC;IACnC,MAAM,IAAIE,oCAAJ,+BACmBL,KADnB,sBAAN;EAGD;;EAED,IAAMM,WAAW,GAAG,IAAAC,iCAAA,EAAoBJ,WAApB,CAApB;;EAEA,IAAIF,MAAM,IAAI,IAAd,EAAoB;IAClB,IAAMO,cAAc,GAAG,IAAIC,sBAAJ,CAAkBR,MAAlB,EAA0BA,MAA1B,CAAiCK,WAAjC,CAAvB;;IAEA,4BAA2BE,cAAc,CAACE,KAAf,CAAqB,GAArB,CAA3B;IAAA;IAAA,IAAOC,OAAP;IAAA,IAAgBC,OAAhB;;IAEA,IAAMC,WAAW,GAAGlB,uBAAuB,CAACgB,OAAD,EAAUd,iBAAV,CAA3C;;IAEA,IAAIe,OAAJ,EAAa;MAAA;;MACX,kFAAUC,WAAV,mBAAwBX,gBAAxB,kBAA2CU,OAA3C;IACD;;IAED,OAAOC,WAAP;EACD;;EAED,OAAOP,WAAP;AACD,CAtCD;;eAwCeP,W"}
@@ -1 +1 @@
1
- {"version":3,"file":"parseNumbers.js","names":["removeGroupingSeparator","input","groupingSeparator","escapedGroupingSeparator","replace","RegExp","updateDecimalSeparator","decimalSeparator","parseToNumber","NaN","inputNoGrouping","inputCorrectDecimalSeparator","Number","parseNumberToString","toFixed","error"],"sources":["../../../src/utils/number/parseNumbers.js"],"sourcesContent":["// @flow\nimport big from \"big.js\";\n\n/**\n * @private\n */\nconst removeGroupingSeparator = (input, groupingSeparator) => {\n if (typeof input === \"number\") {\n return input;\n }\n\n if (groupingSeparator == null) {\n return input;\n }\n\n const escapedGroupingSeparator = groupingSeparator.replace(\n /[$()*+.?[\\\\\\]^{|}]/g,\n \"\\\\$&\"\n );\n\n return input.replace(new RegExp(escapedGroupingSeparator, \"g\"), \"\");\n};\n\n/**\n * @private\n */\nconst updateDecimalSeparator = (input, decimalSeparator) => {\n if (typeof input === \"number\") {\n return input;\n }\n\n if (decimalSeparator == null || decimalSeparator === \"\") {\n return input;\n }\n\n return input.replace(decimalSeparator, \".\");\n};\n\n/**\n * Parses input into a number, removes the grouping separator from the input and\n * replaces the decimal separator with a dot to make it a JavaScript parseable number\n */\nconst parseToNumber = (\n input: ?string | ?number,\n groupingSeparator: ?string = \",\",\n decimalSeparator: ?string = \".\"\n): number => {\n if (input == null || input === \"\") {\n return NaN;\n }\n\n const inputNoGrouping = removeGroupingSeparator(input, groupingSeparator);\n\n const inputCorrectDecimalSeparator = updateDecimalSeparator(\n inputNoGrouping,\n decimalSeparator\n );\n\n return Number(inputCorrectDecimalSeparator);\n};\n\n/**\n * parses Numbers To String\n */\nconst parseNumberToString = (\n input: ?string | ?number,\n groupingSeparator: ?string = \",\",\n decimalSeparator: ?string = \".\"\n): string => {\n if (input == null || input === \"\") {\n return \"NaN\";\n }\n\n const inputNoGrouping = removeGroupingSeparator(input, groupingSeparator);\n\n const inputCorrectDecimalSeparator = updateDecimalSeparator(\n inputNoGrouping,\n decimalSeparator\n );\n\n try {\n return big(inputCorrectDecimalSeparator).toFixed();\n } catch (error) {\n return \"NaN\";\n }\n};\n\nexport { parseToNumber, parseNumberToString };\n"],"mappings":";;;;;;;;;AACA;;AAEA;AACA;AACA;AACA,IAAMA,uBAAuB,GAAG,SAA1BA,uBAA0B,CAACC,KAAD,EAAQC,iBAAR,EAA8B;EAC5D,IAAI,OAAOD,KAAP,KAAiB,QAArB,EAA+B;IAC7B,OAAOA,KAAP;EACD;;EAED,IAAIC,iBAAiB,IAAI,IAAzB,EAA+B;IAC7B,OAAOD,KAAP;EACD;;EAED,IAAME,wBAAwB,GAAGD,iBAAiB,CAACE,OAAlB,CAC/B,qBAD+B,EAE/B,MAF+B,CAAjC;EAKA,OAAOH,KAAK,CAACG,OAAN,CAAc,IAAIC,MAAJ,CAAWF,wBAAX,EAAqC,GAArC,CAAd,EAAyD,EAAzD,CAAP;AACD,CAfD;AAiBA;AACA;AACA;;;AACA,IAAMG,sBAAsB,GAAG,SAAzBA,sBAAyB,CAACL,KAAD,EAAQM,gBAAR,EAA6B;EAC1D,IAAI,OAAON,KAAP,KAAiB,QAArB,EAA+B;IAC7B,OAAOA,KAAP;EACD;;EAED,IAAIM,gBAAgB,IAAI,IAApB,IAA4BA,gBAAgB,KAAK,EAArD,EAAyD;IACvD,OAAON,KAAP;EACD;;EAED,OAAOA,KAAK,CAACG,OAAN,CAAcG,gBAAd,EAAgC,GAAhC,CAAP;AACD,CAVD;AAYA;AACA;AACA;AACA;;;AACA,IAAMC,aAAa,GAAG,SAAhBA,aAAgB,CACpBP,KADoB,EAIT;EAAA,IAFXC,iBAEW,uEAFkB,GAElB;EAAA,IADXK,gBACW,uEADiB,GACjB;;EACX,IAAIN,KAAK,IAAI,IAAT,IAAiBA,KAAK,KAAK,EAA/B,EAAmC;IACjC,OAAOQ,GAAP;EACD;;EAED,IAAMC,eAAe,GAAGV,uBAAuB,CAACC,KAAD,EAAQC,iBAAR,CAA/C;EAEA,IAAMS,4BAA4B,GAAGL,sBAAsB,CACzDI,eADyD,EAEzDH,gBAFyD,CAA3D;EAKA,OAAOK,MAAM,CAACD,4BAAD,CAAb;AACD,CAjBD;AAmBA;AACA;AACA;;;;;AACA,IAAME,mBAAmB,GAAG,SAAtBA,mBAAsB,CAC1BZ,KAD0B,EAIf;EAAA,IAFXC,iBAEW,uEAFkB,GAElB;EAAA,IADXK,gBACW,uEADiB,GACjB;;EACX,IAAIN,KAAK,IAAI,IAAT,IAAiBA,KAAK,KAAK,EAA/B,EAAmC;IACjC,OAAO,KAAP;EACD;;EAED,IAAMS,eAAe,GAAGV,uBAAuB,CAACC,KAAD,EAAQC,iBAAR,CAA/C;EAEA,IAAMS,4BAA4B,GAAGL,sBAAsB,CACzDI,eADyD,EAEzDH,gBAFyD,CAA3D;;EAKA,IAAI;IACF,OAAO,kBAAII,4BAAJ,EAAkCG,OAAlC,EAAP;EACD,CAFD,CAEE,OAAOC,KAAP,EAAc;IACd,OAAO,KAAP;EACD;AACF,CArBD"}
1
+ {"version":3,"file":"parseNumbers.js","names":["removeGroupingSeparator","input","groupingSeparator","escapedGroupingSeparator","replace","RegExp","updateDecimalSeparator","decimalSeparator","parseToNumber","NaN","inputNoGrouping","inputCorrectDecimalSeparator","Number","parseNumberToString","big","toFixed","error"],"sources":["../../../src/utils/number/parseNumbers.js"],"sourcesContent":["// @flow\nimport big from \"big.js\";\n\n/**\n * @private\n */\nconst removeGroupingSeparator = (input, groupingSeparator) => {\n if (typeof input === \"number\") {\n return input;\n }\n\n if (groupingSeparator == null) {\n return input;\n }\n\n const escapedGroupingSeparator = groupingSeparator.replace(\n /[$()*+.?[\\\\\\]^{|}]/g,\n \"\\\\$&\"\n );\n\n return input.replace(new RegExp(escapedGroupingSeparator, \"g\"), \"\");\n};\n\n/**\n * @private\n */\nconst updateDecimalSeparator = (input, decimalSeparator) => {\n if (typeof input === \"number\") {\n return input;\n }\n\n if (decimalSeparator == null || decimalSeparator === \"\") {\n return input;\n }\n\n return input.replace(decimalSeparator, \".\");\n};\n\n/**\n * Parses input into a number, removes the grouping separator from the input and\n * replaces the decimal separator with a dot to make it a JavaScript parseable number\n */\nconst parseToNumber = (\n input: ?string | ?number,\n groupingSeparator: ?string = \",\",\n decimalSeparator: ?string = \".\"\n): number => {\n if (input == null || input === \"\") {\n return NaN;\n }\n\n const inputNoGrouping = removeGroupingSeparator(input, groupingSeparator);\n\n const inputCorrectDecimalSeparator = updateDecimalSeparator(\n inputNoGrouping,\n decimalSeparator\n );\n\n return Number(inputCorrectDecimalSeparator);\n};\n\n/**\n * parses Numbers To String\n */\nconst parseNumberToString = (\n input: ?string | ?number,\n groupingSeparator: ?string = \",\",\n decimalSeparator: ?string = \".\"\n): string => {\n if (input == null || input === \"\") {\n return \"NaN\";\n }\n\n const inputNoGrouping = removeGroupingSeparator(input, groupingSeparator);\n\n const inputCorrectDecimalSeparator = updateDecimalSeparator(\n inputNoGrouping,\n decimalSeparator\n );\n\n try {\n return big(inputCorrectDecimalSeparator).toFixed();\n } catch (error) {\n return \"NaN\";\n }\n};\n\nexport { parseToNumber, parseNumberToString };\n"],"mappings":";;;;;;;;;AACA;;AAEA;AACA;AACA;AACA,IAAMA,uBAAuB,GAAG,SAA1BA,uBAA0B,CAACC,KAAD,EAAQC,iBAAR,EAA8B;EAC5D,IAAI,OAAOD,KAAP,KAAiB,QAArB,EAA+B;IAC7B,OAAOA,KAAP;EACD;;EAED,IAAIC,iBAAiB,IAAI,IAAzB,EAA+B;IAC7B,OAAOD,KAAP;EACD;;EAED,IAAME,wBAAwB,GAAGD,iBAAiB,CAACE,OAAlB,CAC/B,qBAD+B,EAE/B,MAF+B,CAAjC;EAKA,OAAOH,KAAK,CAACG,OAAN,CAAc,IAAIC,MAAJ,CAAWF,wBAAX,EAAqC,GAArC,CAAd,EAAyD,EAAzD,CAAP;AACD,CAfD;AAiBA;AACA;AACA;;;AACA,IAAMG,sBAAsB,GAAG,SAAzBA,sBAAyB,CAACL,KAAD,EAAQM,gBAAR,EAA6B;EAC1D,IAAI,OAAON,KAAP,KAAiB,QAArB,EAA+B;IAC7B,OAAOA,KAAP;EACD;;EAED,IAAIM,gBAAgB,IAAI,IAApB,IAA4BA,gBAAgB,KAAK,EAArD,EAAyD;IACvD,OAAON,KAAP;EACD;;EAED,OAAOA,KAAK,CAACG,OAAN,CAAcG,gBAAd,EAAgC,GAAhC,CAAP;AACD,CAVD;AAYA;AACA;AACA;AACA;;;AACA,IAAMC,aAAa,GAAG,SAAhBA,aAAgB,CACpBP,KADoB,EAIT;EAAA,IAFXC,iBAEW,uEAFkB,GAElB;EAAA,IADXK,gBACW,uEADiB,GACjB;;EACX,IAAIN,KAAK,IAAI,IAAT,IAAiBA,KAAK,KAAK,EAA/B,EAAmC;IACjC,OAAOQ,GAAP;EACD;;EAED,IAAMC,eAAe,GAAGV,uBAAuB,CAACC,KAAD,EAAQC,iBAAR,CAA/C;EAEA,IAAMS,4BAA4B,GAAGL,sBAAsB,CACzDI,eADyD,EAEzDH,gBAFyD,CAA3D;EAKA,OAAOK,MAAM,CAACD,4BAAD,CAAb;AACD,CAjBD;AAmBA;AACA;AACA;;;;;AACA,IAAME,mBAAmB,GAAG,SAAtBA,mBAAsB,CAC1BZ,KAD0B,EAIf;EAAA,IAFXC,iBAEW,uEAFkB,GAElB;EAAA,IADXK,gBACW,uEADiB,GACjB;;EACX,IAAIN,KAAK,IAAI,IAAT,IAAiBA,KAAK,KAAK,EAA/B,EAAmC;IACjC,OAAO,KAAP;EACD;;EAED,IAAMS,eAAe,GAAGV,uBAAuB,CAACC,KAAD,EAAQC,iBAAR,CAA/C;EAEA,IAAMS,4BAA4B,GAAGL,sBAAsB,CACzDI,eADyD,EAEzDH,gBAFyD,CAA3D;;EAKA,IAAI;IACF,OAAO,IAAAO,YAAA,EAAIH,4BAAJ,EAAkCI,OAAlC,EAAP;EACD,CAFD,CAEE,OAAOC,KAAP,EAAc;IACd,OAAO,KAAP;EACD;AACF,CArBD"}
package/package.json CHANGED
@@ -1,13 +1,13 @@
1
1
  {
2
2
  "name": "@beinformed/ui",
3
- "version": "1.18.3",
3
+ "version": "1.18.6",
4
4
  "description": "Toolbox for be informed javascript layouts",
5
5
  "license": "SEE LICENSE IN LICENSE.md",
6
6
  "bugs": "http://support.beinformed.com",
7
7
  "main": "lib/index.js",
8
8
  "module": "esm/index.js",
9
9
  "engines": {
10
- "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
10
+ "node": "^14.13.1 || >=16.0.0"
11
11
  },
12
12
  "esnext": "src/index.js",
13
13
  "sideEffects": false,
@@ -78,7 +78,7 @@
78
78
  "styled-components": "^5.2.0"
79
79
  },
80
80
  "dependencies": {
81
- "@babel/runtime-corejs3": "^7.17.9",
81
+ "@babel/runtime-corejs3": "^7.18.0",
82
82
  "big.js": "^6.1.1",
83
83
  "date-fns": "^2.28.0",
84
84
  "deepmerge": "^4.2.2",
@@ -96,41 +96,41 @@
96
96
  },
97
97
  "devDependencies": {
98
98
  "@babel/cli": "^7.17.10",
99
- "@babel/core": "^7.17.10",
99
+ "@babel/core": "^7.18.0",
100
100
  "@babel/eslint-parser": "^7.17.0",
101
101
  "@babel/eslint-plugin": "^7.16.5",
102
- "@babel/plugin-proposal-class-properties": "^7.16.7",
102
+ "@babel/plugin-proposal-class-properties": "^7.17.12",
103
103
  "@babel/plugin-syntax-dynamic-import": "^7.8.3",
104
- "@babel/plugin-transform-runtime": "^7.17.10",
105
- "@babel/preset-env": "^7.17.10",
106
- "@babel/preset-flow": "^7.16.7",
107
- "@babel/preset-react": "^7.16.7",
108
- "@commitlint/cli": "^16.2.4",
109
- "@commitlint/config-conventional": "^16.2.4",
104
+ "@babel/plugin-transform-runtime": "^7.18.0",
105
+ "@babel/preset-env": "^7.18.0",
106
+ "@babel/preset-flow": "^7.17.12",
107
+ "@babel/preset-react": "^7.17.12",
108
+ "@commitlint/cli": "^17.0.0",
109
+ "@commitlint/config-conventional": "^17.0.0",
110
110
  "@testing-library/react-hooks": "^8.0.0",
111
111
  "auditjs": "^4.0.37",
112
- "babel-jest": "^28.0.3",
112
+ "babel-jest": "^28.1.0",
113
113
  "babel-plugin-styled-components": "^2.0.7",
114
114
  "cherry-pick": "^0.5.0",
115
115
  "cross-env": "^7.0.3",
116
116
  "documentation": "^13.2.5",
117
- "eslint": "^8.14.0",
117
+ "eslint": "^8.15.0",
118
118
  "eslint-config-prettier": "^8.3.0",
119
119
  "eslint-plugin-babel": "^5.3.1",
120
120
  "eslint-plugin-ft-flow": "^2.0.1",
121
121
  "eslint-plugin-import": "^2.26.0",
122
- "eslint-plugin-jest": "^26.1.5",
123
- "eslint-plugin-jsdoc": "^39.2.9",
124
- "eslint-plugin-react": "^7.28.0",
122
+ "eslint-plugin-jest": "^26.2.2",
123
+ "eslint-plugin-jsdoc": "^39.3.0",
124
+ "eslint-plugin-react": "^7.30.0",
125
125
  "eslint-plugin-react-hooks": "^4.5.0",
126
- "flow-bin": "^0.176.3",
126
+ "flow-bin": "^0.178.0",
127
127
  "flow-copy-source": "^2.0.9",
128
128
  "flow-typed": "^3.6.1",
129
- "glob": "^8.0.1",
129
+ "glob": "^8.0.3",
130
130
  "history": "^4.0.0",
131
- "husky": "^7.0.4",
132
- "jest": "^28.0.3",
133
- "jest-environment-jsdom": "^28.0.2",
131
+ "husky": "^8.0.1",
132
+ "jest": "^28.1.0",
133
+ "jest-environment-jsdom": "^28.1.0",
134
134
  "jest-junit": "^13.2.0",
135
135
  "jest-sonar-reporter": "^2.0.0",
136
136
  "jscodeshift": "^0.13.1",
@@ -147,7 +147,7 @@
147
147
  "redux-mock-store": "^1.5.4",
148
148
  "redux-thunk": "^2.4.1",
149
149
  "rimraf": "^3.0.2",
150
- "standard-version": "^9.3.2",
150
+ "standard-version": "^9.5.0",
151
151
  "styled-components": "^5.3.5",
152
152
  "xhr-mock": "^2.5.1"
153
153
  },
@@ -198,6 +198,7 @@ export const ATTRIBUTE_WIDTH = {
198
198
 
199
199
  export const ALL_CONTENT_IN_DATA_SETTING = "hasAllContentInData";
200
200
 
201
+ export const LOGIN_TYPE = "security.clients";
201
202
  export const LOGIN_PATH_SETTING = "FormClient.login_url";
202
203
  export const LOGIN_USERNAME_SETTING = "FormClient.username_field_name";
203
204
  export const LOGIN_PASSWORD_SETTING = "FormClient.password_field_name";
@@ -1,8 +1,8 @@
1
1
  // @flow
2
2
  import { isPlainObject, has } from "../utils/helpers/objects";
3
3
  import {
4
- BASE,
5
4
  ALL_CONTENT_IN_DATA_SETTING,
5
+ LOGIN_TYPE,
6
6
  LOGIN_PATH_SETTING,
7
7
  LOGIN_USERNAME_SETTING,
8
8
  LOGIN_PASSWORD_SETTING,
@@ -123,10 +123,15 @@ export const allSettings = (): { [name: string]: Setting } => settings;
123
123
  export const hasAllContentInData = (): boolean =>
124
124
  getSetting(ALL_CONTENT_IN_DATA_SETTING, true);
125
125
 
126
+ /**
127
+ * Login type, only available when pac4j is configured
128
+ */
129
+ export const loginType = (): string => getSetting(LOGIN_TYPE, "JAAS");
130
+
126
131
  /**
127
132
  */
128
133
  export const loginPath = (): string =>
129
- getSetting(LOGIN_PATH_SETTING, `${BASE}/j_security_check`);
134
+ getSetting(LOGIN_PATH_SETTING, "/j_security_check");
130
135
  /**
131
136
  */
132
137
  export const loginUsernameField = (): string =>
@@ -138,4 +143,4 @@ export const loginPasswordField = (): string =>
138
143
  /**
139
144
  */
140
145
  export const logoutPath = (): string =>
141
- getSetting(LOGOUT_PATH_SETTING, `${BASE}/Logoff`);
146
+ getSetting(LOGOUT_PATH_SETTING, "/Logoff");
@@ -88,7 +88,8 @@ describe("authentication hooks", () => {
88
88
  return res.status(200).body({ data: "ok" });
89
89
  });
90
90
 
91
- const store = mockStore({ auth: {} });
91
+ const store = mockStore({ auth: {}, i18n: { locale: "en" } });
92
+
92
93
  /**
93
94
  */
94
95
  const wrapper = ({ children }) => (
@@ -107,6 +108,19 @@ describe("authentication hooks", () => {
107
108
  expect(store.getActions()).toStrictEqual([
108
109
  { type: "START_PROGRESS" },
109
110
  { type: "MODULARUI/RESET" },
111
+ {
112
+ type: "MODULARUI/STATUS",
113
+ payload: { key: "application(/)(en)", status: "LOADING" },
114
+ },
115
+ { type: "START_PROGRESS" },
116
+ expect.objectContaining({
117
+ type: "MODULARUI/FETCH",
118
+ payload: expect.objectContaining({
119
+ href: new Href("/", "Application"),
120
+ }),
121
+ }),
122
+ { type: "FINISH_PROGRESS" },
123
+
110
124
  { type: "AUTHENTICATION_LOGOUT" },
111
125
  { type: "FINISH_PROGRESS" },
112
126
  ]);
@@ -1,9 +1,8 @@
1
1
  // @flow
2
2
  import { useSelector, useDispatch } from "react-redux";
3
+
3
4
  import { getApplication } from "../redux/_modularui/selectors";
4
5
  import { login, logout, resetAuthErrors } from "../redux/actions";
5
- import UserServicesModel from "../models/user/UserServicesModel";
6
- import { useState, useEffect } from "react";
7
6
 
8
7
  import type { ResetAuthErrorsAction } from "../redux/types";
9
8
  type LoginHook = {
@@ -17,19 +16,6 @@ type LogoutHook = {
17
16
  logout: () => void,
18
17
  };
19
18
 
20
- const getIsAuthenticated = (isAuthenticated, application) => {
21
- if (!application) {
22
- return false;
23
- }
24
-
25
- const userServicesModel = application.userServices;
26
- if (userServicesModel instanceof UserServicesModel) {
27
- return isAuthenticated && userServicesModel.isLoggedIn;
28
- }
29
-
30
- return false;
31
- };
32
-
33
19
  /**
34
20
  */
35
21
  export const useLogin = (): LoginHook => {
@@ -39,7 +25,7 @@ export const useLogin = (): LoginHook => {
39
25
  const auth = useSelector((state) => state.auth);
40
26
 
41
27
  return {
42
- isAuthenticated: getIsAuthenticated(auth.isAuthenticated, application),
28
+ isAuthenticated: application?.isLoggedIn ?? false,
43
29
  errorMessage: auth.error,
44
30
  resetErrors: () => dispatch(resetAuthErrors()),
45
31
  login: (username: string, password: string) =>
@@ -52,28 +38,9 @@ export const useLogin = (): LoginHook => {
52
38
  export const useLogout = (): LogoutHook => {
53
39
  const dispatch = useDispatch();
54
40
  const application = useSelector(getApplication);
55
- const auth = useSelector((state) => state.auth?.isAuthenticated || false);
56
-
57
- const [cancel, setCancel] = useState(false);
58
- const [isAuthenticated, setIsAuthenticated] = useState(() =>
59
- getIsAuthenticated(auth, application)
60
- );
61
-
62
- // set cancel to true when the component this hook is used on, has been unmounted
63
- // prevents state changes after unmount
64
- useEffect(() => {
65
- return () => {
66
- setCancel(true);
67
- };
68
- }, []);
69
41
 
70
42
  return {
71
- isAuthenticated,
72
- logout: () =>
73
- dispatch(logout()).then(() => {
74
- if (!cancel) {
75
- setIsAuthenticated(false);
76
- }
77
- }),
43
+ isAuthenticated: application?.isLoggedIn ?? false,
44
+ logout: () => dispatch(logout()),
78
45
  };
79
46
  };
@@ -472,7 +472,7 @@ class FormModel extends ResourceModel {
472
472
  }
473
473
  }
474
474
 
475
- return this.currentFormObject.isValid;
475
+ return this.currentFormObject?.isValid ?? true;
476
476
  }
477
477
 
478
478
  return true;