@gnwebsoft/ui 4.0.3 → 4.0.5
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.
- package/dist/{chunk-DKD73ADK.cjs → chunk-2QTXS736.cjs} +28 -77
- package/dist/{chunk-DS524L7W.cjs → chunk-3RZ4JNO3.cjs} +5 -5
- package/dist/chunk-3TYKVE3E.js +2514 -0
- package/dist/chunk-HKO2FXDM.js +2232 -0
- package/dist/chunk-LUW7V5GI.cjs +1 -1
- package/dist/chunk-MVPLBJRK.cjs +1 -1
- package/dist/{chunk-M3NVOZ7L.cjs → chunk-UBPAGZNC.cjs} +8 -6
- package/dist/chunk-XN3KVY4J.js +467 -0
- package/dist/chunk-XTPFOURJ.cjs +72 -0
- package/dist/chunk-Y3QTSDLJ.cjs +1 -1
- package/dist/core/api/ApiClient.d.ts +329 -0
- package/dist/core/api/ApiClient.d.ts.map +1 -0
- package/dist/core/api/CorrelationIdGenerator.d.ts +52 -0
- package/dist/core/api/CorrelationIdGenerator.d.ts.map +1 -0
- package/dist/core/api/Errors/ErrorNormalizer.d.ts +106 -0
- package/dist/core/api/Errors/ErrorNormalizer.d.ts.map +1 -0
- package/dist/core/api/Interceptors/InterceptorManager.d.ts +236 -0
- package/dist/core/api/Interceptors/InterceptorManager.d.ts.map +1 -0
- package/dist/core/api/Models/FilterModel.d.ts +22 -0
- package/dist/core/api/Models/FilterModel.d.ts.map +1 -0
- package/dist/core/api/Models/QueryParams.d.ts +13 -0
- package/dist/core/api/Models/QueryParams.d.ts.map +1 -0
- package/dist/core/api/Models/index.d.ts +3 -0
- package/dist/core/api/Models/index.d.ts.map +1 -0
- package/dist/core/api/RequestManager.d.ts +142 -0
- package/dist/core/api/RequestManager.d.ts.map +1 -0
- package/dist/core/api/Retry/RetryHandler.d.ts +100 -0
- package/dist/core/api/Retry/RetryHandler.d.ts.map +1 -0
- package/dist/core/api/Signals/SignalManager.d.ts +153 -0
- package/dist/core/api/Signals/SignalManager.d.ts.map +1 -0
- package/dist/core/api/Utils/ResponseParser.d.ts +105 -0
- package/dist/core/api/Utils/ResponseParser.d.ts.map +1 -0
- package/dist/core/api/Utils/UrlBuilder.d.ts +111 -0
- package/dist/core/api/Utils/UrlBuilder.d.ts.map +1 -0
- package/dist/core/api/createApiClient.d.ts +265 -0
- package/dist/core/api/createApiClient.d.ts.map +1 -0
- package/dist/core/api/index.d.ts +7 -0
- package/dist/core/api/index.d.ts.map +1 -0
- package/dist/core/api/types/ApiError.d.ts +17 -0
- package/dist/core/api/types/ApiError.d.ts.map +1 -0
- package/dist/core/api/types/ApiResponse.d.ts +76 -0
- package/dist/core/api/types/ApiResponse.d.ts.map +1 -0
- package/dist/core/api/types/CancelToken.d.ts +15 -0
- package/dist/core/api/types/CancelToken.d.ts.map +1 -0
- package/dist/core/api/types/ErrorInterceptor.d.ts +3 -0
- package/dist/core/api/types/ErrorInterceptor.d.ts.map +1 -0
- package/dist/core/api/types/ErrorResponseData.d.ts +68 -0
- package/dist/core/api/types/ErrorResponseData.d.ts.map +1 -0
- package/dist/core/api/types/RequestConfig.d.ts +21 -0
- package/dist/core/api/types/RequestConfig.d.ts.map +1 -0
- package/dist/core/api/types/RequestInterceptor.d.ts +3 -0
- package/dist/core/api/types/RequestInterceptor.d.ts.map +1 -0
- package/dist/core/api/types/ResponseInterceptor.d.ts +3 -0
- package/dist/core/api/types/ResponseInterceptor.d.ts.map +1 -0
- package/dist/core/api/types/ValidationErrors.d.ts +7 -0
- package/dist/core/api/types/ValidationErrors.d.ts.map +1 -0
- package/dist/core/api/types/index.d.ts +10 -0
- package/dist/core/api/types/index.d.ts.map +1 -0
- package/dist/core/api/useValidationErrors.d.ts +11 -0
- package/dist/core/api/useValidationErrors.d.ts.map +1 -0
- package/dist/core/components/AuthorizedView/AuthorizedView.d.ts +7 -0
- package/dist/core/components/AuthorizedView/AuthorizedView.d.ts.map +1 -0
- package/dist/core/components/AuthorizedView/index.d.ts +2 -0
- package/dist/core/components/AuthorizedView/index.d.ts.map +1 -0
- package/dist/core/components/CancelButton/CancelButton.d.ts +4 -0
- package/dist/core/components/CancelButton/CancelButton.d.ts.map +1 -0
- package/dist/core/components/CancelButton/index.d.ts +2 -0
- package/dist/core/components/CancelButton/index.d.ts.map +1 -0
- package/dist/core/components/ClearButton/ClearButton.d.ts +63 -0
- package/dist/core/components/ClearButton/ClearButton.d.ts.map +1 -0
- package/dist/core/components/ClearButton/index.d.ts +2 -0
- package/dist/core/components/ClearButton/index.d.ts.map +1 -0
- package/dist/core/components/Containers/SimpleContainer.d.ts +10 -0
- package/dist/core/components/Containers/SimpleContainer.d.ts.map +1 -0
- package/dist/core/components/Containers/index.d.ts +2 -0
- package/dist/core/components/Containers/index.d.ts.map +1 -0
- package/dist/core/components/FilterButton/FilterButton.d.ts +86 -0
- package/dist/core/components/FilterButton/FilterButton.d.ts.map +1 -0
- package/dist/core/components/FilterButton/index.d.ts +2 -0
- package/dist/core/components/FilterButton/index.d.ts.map +1 -0
- package/dist/core/components/FilterDisplay/FilterChip.d.ts +9 -0
- package/dist/core/components/FilterDisplay/FilterChip.d.ts.map +1 -0
- package/dist/core/components/FilterDisplay/FilterDisplay.d.ts +10 -0
- package/dist/core/components/FilterDisplay/FilterDisplay.d.ts.map +1 -0
- package/dist/core/components/FilterDisplay/index.d.ts +3 -0
- package/dist/core/components/FilterDisplay/index.d.ts.map +1 -0
- package/dist/core/components/FilterWrapper/FilterWrapper.d.ts +99 -0
- package/dist/core/components/FilterWrapper/FilterWrapper.d.ts.map +1 -0
- package/dist/core/components/FilterWrapper/index.d.ts +2 -0
- package/dist/core/components/FilterWrapper/index.d.ts.map +1 -0
- package/dist/core/components/Footer/Footer.d.ts +3 -0
- package/dist/core/components/Footer/Footer.d.ts.map +1 -0
- package/dist/core/components/Footer/index.d.ts +2 -0
- package/dist/core/components/Footer/index.d.ts.map +1 -0
- package/dist/core/components/LabelText/LabelText.d.ts +103 -0
- package/dist/core/components/LabelText/LabelText.d.ts.map +1 -0
- package/dist/core/components/LabelText/index.d.ts +2 -0
- package/dist/core/components/LabelText/index.d.ts.map +1 -0
- package/dist/core/components/RenderIf/RenderIf.d.ts +7 -0
- package/dist/core/components/RenderIf/RenderIf.d.ts.map +1 -0
- package/dist/core/components/RenderIf/index.d.ts +2 -0
- package/dist/core/components/RenderIf/index.d.ts.map +1 -0
- package/dist/core/components/SectionBox/SectionBox.d.ts +15 -0
- package/dist/core/components/SectionBox/SectionBox.d.ts.map +1 -0
- package/dist/core/components/SectionBox/index.d.ts +2 -0
- package/dist/core/components/SectionBox/index.d.ts.map +1 -0
- package/dist/core/components/SimpleTabs/SimpleTabs.d.ts +17 -0
- package/dist/core/components/SimpleTabs/SimpleTabs.d.ts.map +1 -0
- package/dist/core/components/SimpleTabs/index.d.ts +2 -0
- package/dist/core/components/SimpleTabs/index.d.ts.map +1 -0
- package/dist/core/components/SubmitButton/SubmitButton.d.ts +6 -0
- package/dist/core/components/SubmitButton/SubmitButton.d.ts.map +1 -0
- package/dist/core/components/SubmitButton/index.d.ts +2 -0
- package/dist/core/components/SubmitButton/index.d.ts.map +1 -0
- package/dist/core/components/WithRef/WithRef.d.ts +14 -0
- package/dist/core/components/WithRef/WithRef.d.ts.map +1 -0
- package/dist/core/components/WithRef/index.d.ts +2 -0
- package/dist/core/components/WithRef/index.d.ts.map +1 -0
- package/dist/core/components/index.d.ts +15 -0
- package/dist/core/components/index.d.ts.map +1 -0
- package/dist/core/config.d.ts +24 -0
- package/dist/core/config.d.ts.map +1 -0
- package/dist/core/hooks/index.d.ts +3 -0
- package/dist/core/hooks/index.d.ts.map +1 -0
- package/dist/core/hooks/makeQuery.d.ts +12 -0
- package/dist/core/hooks/makeQuery.d.ts.map +1 -0
- package/dist/core/hooks/useApiClient.d.ts +3 -0
- package/dist/core/hooks/useApiClient.d.ts.map +1 -0
- package/dist/core/hooks/useFormErrorHandler.d.ts +35 -0
- package/dist/core/hooks/useFormErrorHandler.d.ts.map +1 -0
- package/dist/core/hooks/useListView.d.ts +20 -0
- package/dist/core/hooks/useListView.d.ts.map +1 -0
- package/dist/core/index.cjs +3 -3
- package/dist/core/index.d.ts +9 -0
- package/dist/core/index.d.ts.map +1 -0
- package/dist/core/index.js +1 -1
- package/dist/core/models.d.ts +5 -0
- package/dist/core/models.d.ts.map +1 -0
- package/dist/core/types/FilterLabel.d.ts +6 -0
- package/dist/core/types/FilterLabel.d.ts.map +1 -0
- package/dist/core/types/ListModels.d.ts +18 -0
- package/dist/core/types/ListModels.d.ts.map +1 -0
- package/dist/core/types/OptionsRequest.d.ts +4 -0
- package/dist/core/types/OptionsRequest.d.ts.map +1 -0
- package/dist/core/types/index.d.ts +4 -0
- package/dist/core/types/index.d.ts.map +1 -0
- package/dist/core/utils/CacheUtility/index.d.ts +15 -0
- package/dist/core/utils/CacheUtility/index.d.ts.map +1 -0
- package/dist/core/utils/calculateFilterCount.d.ts +2 -0
- package/dist/core/utils/calculateFilterCount.d.ts.map +1 -0
- package/dist/core/utils/format-time.d.ts +79 -0
- package/dist/core/utils/format-time.d.ts.map +1 -0
- package/dist/core/utils/getEmptyObject.d.ts +7 -0
- package/dist/core/utils/getEmptyObject.d.ts.map +1 -0
- package/dist/core/utils/index.d.ts +7 -0
- package/dist/core/utils/index.d.ts.map +1 -0
- package/dist/core/utils/useStableRowCount.d.ts +9 -0
- package/dist/core/utils/useStableRowCount.d.ts.map +1 -0
- package/dist/core/utils/watch/core.d.ts +22 -0
- package/dist/core/utils/watch/core.d.ts.map +1 -0
- package/dist/core/utils/watch/index.d.ts +49 -0
- package/dist/core/utils/watch/index.d.ts.map +1 -0
- package/dist/core/utils/watch/utilities.d.ts +34 -0
- package/dist/core/utils/watch/utilities.d.ts.map +1 -0
- package/dist/hooks/index.cjs +1 -1
- package/dist/hooks/index.d.ts +3 -0
- package/dist/hooks/index.d.ts.map +1 -0
- package/dist/hooks/useTransform/enhanced.d.ts +133 -0
- package/dist/hooks/useTransform/enhanced.d.ts.map +1 -0
- package/dist/hooks/useTransform/index.d.ts +93 -0
- package/dist/hooks/useTransform/index.d.ts.map +1 -0
- package/dist/index.cjs +6 -24
- package/dist/index.d.ts +6 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +4 -22
- package/dist/types/AsyncSelectPayload.d.ts +9 -0
- package/dist/types/AsyncSelectPayload.d.ts.map +1 -0
- package/dist/types/OperationResponse.d.ts +5 -0
- package/dist/types/OperationResponse.d.ts.map +1 -0
- package/dist/types/OptionItem.d.ts +75 -0
- package/dist/types/OptionItem.d.ts.map +1 -0
- package/dist/types/api.d.ts +127 -0
- package/dist/types/api.d.ts.map +1 -0
- package/dist/types/events.d.ts +74 -0
- package/dist/types/events.d.ts.map +1 -0
- package/dist/types/index.cjs +3 -3
- package/dist/types/index.d.ts +17 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +1 -1
- package/dist/types/utilities.d.ts +458 -0
- package/dist/types/utilities.d.ts.map +1 -0
- package/dist/utils/api.d.ts +14 -0
- package/dist/utils/api.d.ts.map +1 -0
- package/dist/utils/api2.d.ts +14 -0
- package/dist/utils/api2.d.ts.map +1 -0
- package/dist/utils/flattenObjectKeys.d.ts +63 -0
- package/dist/utils/flattenObjectKeys.d.ts.map +1 -0
- package/dist/utils/getTimezone.d.ts +4 -0
- package/dist/utils/getTimezone.d.ts.map +1 -0
- package/dist/utils/handleServerErrors.d.ts +70 -0
- package/dist/utils/handleServerErrors.d.ts.map +1 -0
- package/dist/utils/index.cjs +3 -3
- package/dist/utils/index.d.ts +11 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +1 -1
- package/dist/utils/propertyExists.d.ts +35 -0
- package/dist/utils/propertyExists.d.ts.map +1 -0
- package/dist/utils/readValueAsDate.d.ts +4 -0
- package/dist/utils/readValueAsDate.d.ts.map +1 -0
- package/dist/utils/removeLeadingTrailingSlashes.d.ts +2 -0
- package/dist/utils/removeLeadingTrailingSlashes.d.ts.map +1 -0
- package/dist/utils/schemaTools.d.ts +82 -0
- package/dist/utils/schemaTools.d.ts.map +1 -0
- package/dist/utils/typeGuards.d.ts +316 -0
- package/dist/utils/typeGuards.d.ts.map +1 -0
- package/dist/utils/watch/core.d.ts +22 -0
- package/dist/utils/watch/core.d.ts.map +1 -0
- package/dist/utils/watch/index.d.ts +49 -0
- package/dist/utils/watch/index.d.ts.map +1 -0
- package/dist/utils/watch/utilities.d.ts +34 -0
- package/dist/utils/watch/utilities.d.ts.map +1 -0
- package/dist/wrappers/AsyncMultiSelect/AsyncMultiSelect.d.ts +9 -0
- package/dist/wrappers/AsyncMultiSelect/AsyncMultiSelect.d.ts.map +1 -0
- package/dist/wrappers/AsyncMultiSelect/index.d.ts +3 -0
- package/dist/wrappers/AsyncMultiSelect/index.d.ts.map +1 -0
- package/dist/wrappers/AsyncMultiSelect/types.d.ts +19 -0
- package/dist/wrappers/AsyncMultiSelect/types.d.ts.map +1 -0
- package/dist/wrappers/AsyncMultiSelect2/AsyncMultiSelect2.d.ts +8 -0
- package/dist/wrappers/AsyncMultiSelect2/AsyncMultiSelect2.d.ts.map +1 -0
- package/dist/wrappers/AsyncMultiSelect2/index.d.ts +3 -0
- package/dist/wrappers/AsyncMultiSelect2/index.d.ts.map +1 -0
- package/dist/wrappers/AsyncMultiSelect2/types.d.ts +29 -0
- package/dist/wrappers/AsyncMultiSelect2/types.d.ts.map +1 -0
- package/dist/wrappers/AsyncSelect/index.d.ts +9 -0
- package/dist/wrappers/AsyncSelect/index.d.ts.map +1 -0
- package/dist/wrappers/AsyncSelect/types.d.ts +19 -0
- package/dist/wrappers/AsyncSelect/types.d.ts.map +1 -0
- package/dist/wrappers/Button.d.ts +49 -0
- package/dist/wrappers/Button.d.ts.map +1 -0
- package/dist/wrappers/CheckboxElement/CheckboxElement.d.ts +102 -0
- package/dist/wrappers/CheckboxElement/CheckboxElement.d.ts.map +1 -0
- package/dist/wrappers/CheckboxElement/index.d.ts +3 -0
- package/dist/wrappers/CheckboxElement/index.d.ts.map +1 -0
- package/dist/wrappers/CheckboxElement/types.d.ts +76 -0
- package/dist/wrappers/CheckboxElement/types.d.ts.map +1 -0
- package/dist/wrappers/CheckboxGroup/CheckboxGroup.d.ts +96 -0
- package/dist/wrappers/CheckboxGroup/CheckboxGroup.d.ts.map +1 -0
- package/dist/wrappers/CheckboxGroup/EnhancedCheckboxGroup.d.ts +49 -0
- package/dist/wrappers/CheckboxGroup/EnhancedCheckboxGroup.d.ts.map +1 -0
- package/dist/wrappers/CheckboxGroup/enhanced-types.d.ts +171 -0
- package/dist/wrappers/CheckboxGroup/enhanced-types.d.ts.map +1 -0
- package/dist/wrappers/CheckboxGroup/index.d.ts +3 -0
- package/dist/wrappers/CheckboxGroup/index.d.ts.map +1 -0
- package/dist/wrappers/CheckboxGroup/types.d.ts +106 -0
- package/dist/wrappers/CheckboxGroup/types.d.ts.map +1 -0
- package/dist/wrappers/DatePickerElement/DatePickerElement.d.ts +131 -0
- package/dist/wrappers/DatePickerElement/DatePickerElement.d.ts.map +1 -0
- package/dist/wrappers/DatePickerElement/DatePickerElementCore.d.ts +57 -0
- package/dist/wrappers/DatePickerElement/DatePickerElementCore.d.ts.map +1 -0
- package/dist/wrappers/DatePickerElement/hooks/index.d.ts +24 -0
- package/dist/wrappers/DatePickerElement/hooks/index.d.ts.map +1 -0
- package/dist/wrappers/DatePickerElement/hooks/useDatePickerStyles.d.ts +63 -0
- package/dist/wrappers/DatePickerElement/hooks/useDatePickerStyles.d.ts.map +1 -0
- package/dist/wrappers/DatePickerElement/hooks/useDatePickerValidation.d.ts +79 -0
- package/dist/wrappers/DatePickerElement/hooks/useDatePickerValidation.d.ts.map +1 -0
- package/dist/wrappers/DatePickerElement/hooks/useDatePickerValue.d.ts +73 -0
- package/dist/wrappers/DatePickerElement/hooks/useDatePickerValue.d.ts.map +1 -0
- package/dist/wrappers/DatePickerElement/index.d.ts +47 -0
- package/dist/wrappers/DatePickerElement/index.d.ts.map +1 -0
- package/dist/wrappers/DatePickerElement/types.d.ts +183 -0
- package/dist/wrappers/DatePickerElement/types.d.ts.map +1 -0
- package/dist/wrappers/DatePickerElement/utils.d.ts +89 -0
- package/dist/wrappers/DatePickerElement/utils.d.ts.map +1 -0
- package/dist/wrappers/DateTimePickerElement/index.d.ts +1 -0
- package/dist/wrappers/DateTimePickerElement/index.d.ts.map +1 -0
- package/dist/wrappers/DateTimePickerElement/types.d.ts +1 -0
- package/dist/wrappers/DateTimePickerElement/types.d.ts.map +1 -0
- package/dist/wrappers/Field/index.d.ts +42 -0
- package/dist/wrappers/Field/index.d.ts.map +1 -0
- package/dist/wrappers/NumberFieldElement/NumberFieldElement.d.ts +176 -0
- package/dist/wrappers/NumberFieldElement/NumberFieldElement.d.ts.map +1 -0
- package/dist/wrappers/NumberFieldElement/index.d.ts +3 -0
- package/dist/wrappers/NumberFieldElement/index.d.ts.map +1 -0
- package/dist/wrappers/OTPInputElement/HelperText.d.ts +8 -0
- package/dist/wrappers/OTPInputElement/HelperText.d.ts.map +1 -0
- package/dist/wrappers/OTPInputElement/OTPInputElement.d.ts +32 -0
- package/dist/wrappers/OTPInputElement/OTPInputElement.d.ts.map +1 -0
- package/dist/wrappers/OTPInputElement/index.d.ts +3 -0
- package/dist/wrappers/OTPInputElement/index.d.ts.map +1 -0
- package/dist/wrappers/PasswordElement/PasswordElement.d.ts +104 -0
- package/dist/wrappers/PasswordElement/PasswordElement.d.ts.map +1 -0
- package/dist/wrappers/PasswordElement/index.d.ts +2 -0
- package/dist/wrappers/PasswordElement/index.d.ts.map +1 -0
- package/dist/wrappers/RadioButtonGroup/RadioButtonGroup.d.ts +38 -0
- package/dist/wrappers/RadioButtonGroup/RadioButtonGroup.d.ts.map +1 -0
- package/dist/wrappers/RadioButtonGroup/index.d.ts +2 -0
- package/dist/wrappers/RadioButtonGroup/index.d.ts.map +1 -0
- package/dist/wrappers/SelectCascadeElement/SelectCascadeElement.d.ts +22 -0
- package/dist/wrappers/SelectCascadeElement/SelectCascadeElement.d.ts.map +1 -0
- package/dist/wrappers/SelectCascadeElement/index.d.ts +2 -0
- package/dist/wrappers/SelectCascadeElement/index.d.ts.map +1 -0
- package/dist/wrappers/SelectElement/SelectElement.d.ts +152 -0
- package/dist/wrappers/SelectElement/SelectElement.d.ts.map +1 -0
- package/dist/wrappers/SelectElement/index.d.ts +2 -0
- package/dist/wrappers/SelectElement/index.d.ts.map +1 -0
- package/dist/wrappers/SelectMultiElement/SelectMultiElement.d.ts +21 -0
- package/dist/wrappers/SelectMultiElement/SelectMultiElement.d.ts.map +1 -0
- package/dist/wrappers/SelectMultiElement/index.d.ts +2 -0
- package/dist/wrappers/SelectMultiElement/index.d.ts.map +1 -0
- package/dist/wrappers/TextFieldElement/TextFieldElement.d.ts +179 -0
- package/dist/wrappers/TextFieldElement/TextFieldElement.d.ts.map +1 -0
- package/dist/wrappers/TextFieldElement/index.d.ts +3 -0
- package/dist/wrappers/TextFieldElement/index.d.ts.map +1 -0
- package/dist/wrappers/TimePickerElement/TimePickerElement.d.ts +30 -0
- package/dist/wrappers/TimePickerElement/TimePickerElement.d.ts.map +1 -0
- package/dist/wrappers/TimePickerElement/index.d.ts +2 -0
- package/dist/wrappers/TimePickerElement/index.d.ts.map +1 -0
- package/dist/wrappers/index.cjs +3 -4
- package/dist/wrappers/index.d.ts +14 -0
- package/dist/wrappers/index.d.ts.map +1 -0
- package/dist/wrappers/index.js +1 -2
- package/dist/wrappers/types/common.d.ts +87 -0
- package/dist/wrappers/types/common.d.ts.map +1 -0
- package/dist/wrappers/types/index.d.ts +8 -0
- package/dist/wrappers/types/index.d.ts.map +1 -0
- package/package.json +4 -8
- package/dist/chunk-BXWPG6VW.js +0 -108
- package/dist/chunk-EOUSOGZ6.js +0 -2281
- package/dist/chunk-EYXPJMEF.cjs +0 -108
- package/dist/chunk-GHW77WIM.cjs +0 -72
- package/dist/chunk-PUQIPRL2.js +0 -467
- package/dist/chunk-YAYXHYKC.js +0 -2512
- package/dist/i18n/index.cjs +0 -21
- package/dist/i18n/index.js +0 -21
- /package/dist/{chunk-MULSVYFT.js → chunk-6GKAC3KH.js} +0 -0
|
@@ -0,0 +1,236 @@
|
|
|
1
|
+
import type { ApiError } from '../types/ApiError';
|
|
2
|
+
import type { ErrorInterceptor } from '../types/ErrorInterceptor';
|
|
3
|
+
import type { RequestConfig } from '../types/RequestConfig';
|
|
4
|
+
import type { RequestInterceptor } from '../types/RequestInterceptor';
|
|
5
|
+
import type { ResponseInterceptor } from '../types/ResponseInterceptor';
|
|
6
|
+
import type { ApiResponse } from '@/types';
|
|
7
|
+
/**
|
|
8
|
+
* Manages the registration and execution of request/response/error interceptors.
|
|
9
|
+
*
|
|
10
|
+
* This internal class implements the interceptor pattern, allowing middleware-style
|
|
11
|
+
* functions to be registered and executed at different points in the request lifecycle:
|
|
12
|
+
* - **Request Interceptors**: Modify requests before they are sent
|
|
13
|
+
* - **Response Interceptors**: Transform responses before they are returned
|
|
14
|
+
* - **Error Interceptors**: Handle or transform errors before they are thrown
|
|
15
|
+
*
|
|
16
|
+
* Interceptors are executed sequentially in the order they were registered,
|
|
17
|
+
* forming a processing pipeline. Each interceptor can:
|
|
18
|
+
* - Inspect the data passing through
|
|
19
|
+
* - Transform or enhance the data
|
|
20
|
+
* - Short-circuit the pipeline (for errors)
|
|
21
|
+
* - Perform side effects (logging, monitoring, etc.)
|
|
22
|
+
*
|
|
23
|
+
* Key Features:
|
|
24
|
+
* - **Sequential Execution**: Interceptors run in registration order
|
|
25
|
+
* - **Unregistration Support**: Returns cleanup function for each interceptor
|
|
26
|
+
* - **Type Safety**: Fully typed interceptor functions with generics
|
|
27
|
+
* - **Error Handling**: Graceful handling of interceptor failures
|
|
28
|
+
*
|
|
29
|
+
* @internal This class is not exported from the public API
|
|
30
|
+
*
|
|
31
|
+
* @example
|
|
32
|
+
* Common interceptor patterns:
|
|
33
|
+
* ```typescript
|
|
34
|
+
* const manager = new InterceptorManager();
|
|
35
|
+
*
|
|
36
|
+
* // Request logging
|
|
37
|
+
* manager.addRequestInterceptor(async (config) => {
|
|
38
|
+
* console.log('Request:', config.method, config.url);
|
|
39
|
+
* return config;
|
|
40
|
+
* });
|
|
41
|
+
*
|
|
42
|
+
* // Response transformation
|
|
43
|
+
* manager.addResponseInterceptor(async (response) => {
|
|
44
|
+
* if (response.apiData) {
|
|
45
|
+
* response.apiData = camelCaseKeys(response.apiData);
|
|
46
|
+
* }
|
|
47
|
+
* return response;
|
|
48
|
+
* });
|
|
49
|
+
*
|
|
50
|
+
* // Error monitoring
|
|
51
|
+
* manager.addErrorInterceptor(async (error) => {
|
|
52
|
+
* if (error.status >= 500) {
|
|
53
|
+
* await logToMonitoring(error);
|
|
54
|
+
* }
|
|
55
|
+
* throw error; // Re-throw to maintain error flow
|
|
56
|
+
* });
|
|
57
|
+
* ```
|
|
58
|
+
*/
|
|
59
|
+
export declare class InterceptorManager {
|
|
60
|
+
/**
|
|
61
|
+
* Array of registered request interceptors
|
|
62
|
+
* @private
|
|
63
|
+
*/
|
|
64
|
+
private readonly requestInterceptors;
|
|
65
|
+
/**
|
|
66
|
+
* Array of registered response interceptors
|
|
67
|
+
* @private
|
|
68
|
+
*/
|
|
69
|
+
private readonly responseInterceptors;
|
|
70
|
+
/**
|
|
71
|
+
* Array of registered error interceptors
|
|
72
|
+
* @private
|
|
73
|
+
*/
|
|
74
|
+
private readonly errorInterceptors;
|
|
75
|
+
/**
|
|
76
|
+
* Registers a request interceptor to modify requests before they are sent.
|
|
77
|
+
*
|
|
78
|
+
* Request interceptors can:
|
|
79
|
+
* - Add or modify headers
|
|
80
|
+
* - Transform request bodies
|
|
81
|
+
* - Add query parameters
|
|
82
|
+
* - Implement request signing
|
|
83
|
+
* - Log outgoing requests
|
|
84
|
+
*
|
|
85
|
+
* @param interceptor - Async function that receives and returns RequestConfig
|
|
86
|
+
* @returns Cleanup function to unregister this interceptor
|
|
87
|
+
*
|
|
88
|
+
* @example
|
|
89
|
+
* ```typescript
|
|
90
|
+
* // Add authentication header
|
|
91
|
+
* const unregister = manager.addRequestInterceptor(async (config) => {
|
|
92
|
+
* const token = await getAuthToken();
|
|
93
|
+
* config.headers = config.headers || new Headers();
|
|
94
|
+
* config.headers.set('Authorization', `Bearer ${token}`);
|
|
95
|
+
* return config;
|
|
96
|
+
* });
|
|
97
|
+
*
|
|
98
|
+
* // Later, remove the interceptor
|
|
99
|
+
* unregister();
|
|
100
|
+
* ```
|
|
101
|
+
*/
|
|
102
|
+
addRequestInterceptor(interceptor: RequestInterceptor): () => void;
|
|
103
|
+
/**
|
|
104
|
+
* Registers a response interceptor to transform responses before they are returned.
|
|
105
|
+
*
|
|
106
|
+
* Response interceptors can:
|
|
107
|
+
* - Transform response data format
|
|
108
|
+
* - Extract nested data structures
|
|
109
|
+
* - Add computed properties
|
|
110
|
+
* - Cache responses
|
|
111
|
+
* - Log successful responses
|
|
112
|
+
*
|
|
113
|
+
* @param interceptor - Async function that receives and returns ApiResponse
|
|
114
|
+
* @returns Cleanup function to unregister this interceptor
|
|
115
|
+
*
|
|
116
|
+
* @example
|
|
117
|
+
* ```typescript
|
|
118
|
+
* // Extract data from envelope
|
|
119
|
+
* manager.addResponseInterceptor(async (response) => {
|
|
120
|
+
* if (response.apiData?.result) {
|
|
121
|
+
* response.apiData = response.apiData.result;
|
|
122
|
+
* }
|
|
123
|
+
* return response;
|
|
124
|
+
* });
|
|
125
|
+
*
|
|
126
|
+
* // Add timestamps
|
|
127
|
+
* manager.addResponseInterceptor(async (response) => {
|
|
128
|
+
* return {
|
|
129
|
+
* ...response,
|
|
130
|
+
* receivedAt: new Date().toISOString()
|
|
131
|
+
* };
|
|
132
|
+
* });
|
|
133
|
+
* ```
|
|
134
|
+
*/
|
|
135
|
+
addResponseInterceptor(interceptor: ResponseInterceptor): () => void;
|
|
136
|
+
/**
|
|
137
|
+
* Registers an error interceptor to handle or transform errors before they are thrown.
|
|
138
|
+
*
|
|
139
|
+
* Error interceptors can:
|
|
140
|
+
* - Log errors to monitoring services
|
|
141
|
+
* - Transform error formats
|
|
142
|
+
* - Implement retry logic
|
|
143
|
+
* - Show user notifications
|
|
144
|
+
* - Extract validation errors
|
|
145
|
+
*
|
|
146
|
+
* **Note:** Error interceptors should re-throw the error (or a transformed version)
|
|
147
|
+
* to maintain the error flow. The final error is always thrown.
|
|
148
|
+
*
|
|
149
|
+
* @param interceptor - Async function that receives and returns (or throws) ApiError
|
|
150
|
+
* @returns Cleanup function to unregister this interceptor
|
|
151
|
+
*
|
|
152
|
+
* @example
|
|
153
|
+
* ```typescript
|
|
154
|
+
* // Log to monitoring service
|
|
155
|
+
* manager.addErrorInterceptor(async (error) => {
|
|
156
|
+
* if (error.status >= 500) {
|
|
157
|
+
* await Sentry.captureException(error, {
|
|
158
|
+
* extra: { traceId: error.traceId }
|
|
159
|
+
* });
|
|
160
|
+
* }
|
|
161
|
+
* throw error; // Re-throw to continue error flow
|
|
162
|
+
* });
|
|
163
|
+
*
|
|
164
|
+
* // Transform error messages
|
|
165
|
+
* manager.addErrorInterceptor(async (error) => {
|
|
166
|
+
* if (error.status === 404) {
|
|
167
|
+
* error.title = 'Resource not found';
|
|
168
|
+
* }
|
|
169
|
+
* throw error;
|
|
170
|
+
* });
|
|
171
|
+
* ```
|
|
172
|
+
*/
|
|
173
|
+
addErrorInterceptor(interceptor: ErrorInterceptor): () => void;
|
|
174
|
+
/**
|
|
175
|
+
* Applies all registered request interceptors in sequential order.
|
|
176
|
+
*
|
|
177
|
+
* Each interceptor receives the config modified by the previous interceptor,
|
|
178
|
+
* forming a processing pipeline. If any interceptor throws an error,
|
|
179
|
+
* the pipeline stops and the error propagates.
|
|
180
|
+
*
|
|
181
|
+
* @param config - The initial request configuration
|
|
182
|
+
* @returns The modified request configuration after all interceptors
|
|
183
|
+
*
|
|
184
|
+
* @example
|
|
185
|
+
* ```typescript
|
|
186
|
+
* const config = { method: 'GET', url: '/users' };
|
|
187
|
+
* const finalConfig = await manager.applyRequestInterceptors(config);
|
|
188
|
+
* // finalConfig has been processed by all registered interceptors
|
|
189
|
+
* ```
|
|
190
|
+
*/
|
|
191
|
+
applyRequestInterceptors(config: RequestConfig): Promise<RequestConfig>;
|
|
192
|
+
/**
|
|
193
|
+
* Applies all registered response interceptors in sequential order.
|
|
194
|
+
*
|
|
195
|
+
* Each interceptor receives the response modified by the previous interceptor,
|
|
196
|
+
* forming a processing pipeline. If any interceptor throws an error,
|
|
197
|
+
* the pipeline stops and the error propagates.
|
|
198
|
+
*
|
|
199
|
+
* @template T - The type of the response data
|
|
200
|
+
* @param response - The initial API response
|
|
201
|
+
* @returns The modified response after all interceptors
|
|
202
|
+
*
|
|
203
|
+
* @example
|
|
204
|
+
* ```typescript
|
|
205
|
+
* const response = { data: { id: 1, name: 'John' } };
|
|
206
|
+
* const finalResponse = await manager.applyResponseInterceptors(response);
|
|
207
|
+
* // finalResponse has been processed by all registered interceptors
|
|
208
|
+
* ```
|
|
209
|
+
*/
|
|
210
|
+
applyResponseInterceptors<T>(response: ApiResponse<T>): Promise<ApiResponse<T>>;
|
|
211
|
+
/**
|
|
212
|
+
* Applies all registered error interceptors in sequential order and re-throws.
|
|
213
|
+
*
|
|
214
|
+
* Each interceptor receives the error (potentially modified by previous interceptors).
|
|
215
|
+
* Interceptors can transform the error before re-throwing it. The final error
|
|
216
|
+
* is always thrown to maintain error flow.
|
|
217
|
+
*
|
|
218
|
+
* If an interceptor itself throws an error, that becomes the new error to process
|
|
219
|
+
* by subsequent interceptors.
|
|
220
|
+
*
|
|
221
|
+
* @param error - The initial API error
|
|
222
|
+
* @returns Never returns (always throws)
|
|
223
|
+
* @throws The final error after all interceptors have processed it
|
|
224
|
+
*
|
|
225
|
+
* @example
|
|
226
|
+
* ```typescript
|
|
227
|
+
* try {
|
|
228
|
+
* await manager.applyErrorInterceptors(error);
|
|
229
|
+
* } catch (finalError) {
|
|
230
|
+
* // finalError has been processed by all registered error interceptors
|
|
231
|
+
* }
|
|
232
|
+
* ```
|
|
233
|
+
*/
|
|
234
|
+
applyErrorInterceptors(error: ApiError): Promise<never>;
|
|
235
|
+
}
|
|
236
|
+
//# sourceMappingURL=InterceptorManager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"InterceptorManager.d.ts","sourceRoot":"","sources":["../../../../src/core/api/Interceptors/InterceptorManager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAClE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAC5D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AACtE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AAExE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAE3C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmDG;AACH,qBAAa,kBAAkB;IAC7B;;;OAGG;IACH,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAA4B;IAEhE;;;OAGG;IACH,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAA6B;IAElE;;;OAGG;IACH,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAA0B;IAE5D;;;;;;;;;;;;;;;;;;;;;;;;;;OA0BG;IACH,qBAAqB,CAAC,WAAW,EAAE,kBAAkB,GAAG,MAAM,IAAI;IAUlE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA+BG;IACH,sBAAsB,CAAC,WAAW,EAAE,mBAAmB,GAAG,MAAM,IAAI;IAUpE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAoCG;IACH,mBAAmB,CAAC,WAAW,EAAE,gBAAgB,GAAG,MAAM,IAAI;IAU9D;;;;;;;;;;;;;;;;OAgBG;IACG,wBAAwB,CAC5B,MAAM,EAAE,aAAa,GACpB,OAAO,CAAC,aAAa,CAAC;IAUzB;;;;;;;;;;;;;;;;;OAiBG;IACG,yBAAyB,CAAC,CAAC,EAC/B,QAAQ,EAAE,WAAW,CAAC,CAAC,CAAC,GACvB,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;IAU1B;;;;;;;;;;;;;;;;;;;;;;OAsBG;IACG,sBAAsB,CAAC,KAAK,EAAE,QAAQ,GAAG,OAAO,CAAC,KAAK,CAAC;CAa9D"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import type { GridSortModel } from '@mui/x-data-grid';
|
|
2
|
+
/**
|
|
3
|
+
* Generic filter model for list requests with pagination and sorting
|
|
4
|
+
* @template TFilterModel - The specific filter criteria type
|
|
5
|
+
*/
|
|
6
|
+
export interface PostModel<TFilterModel = Record<string, unknown>> {
|
|
7
|
+
filterModel?: TFilterModel;
|
|
8
|
+
pageOffset: number;
|
|
9
|
+
pageSize: number;
|
|
10
|
+
sortField: string | null;
|
|
11
|
+
sortOrder: 'asc' | 'desc' | null | undefined;
|
|
12
|
+
sortModel?: GridSortModel;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Standardized list response structure for paginated data
|
|
16
|
+
* @template TListModel - The type of individual list items
|
|
17
|
+
*/
|
|
18
|
+
export interface ListResponse<TListModel> {
|
|
19
|
+
Data: TListModel[];
|
|
20
|
+
Total: number;
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=FilterModel.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FilterModel.d.ts","sourceRoot":"","sources":["../../../../src/core/api/Models/FilterModel.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEtD;;;GAGG;AACH,MAAM,WAAW,SAAS,CAAC,YAAY,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAC/D,WAAW,CAAC,EAAE,YAAY,CAAC;IAC3B,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,SAAS,EAAE,KAAK,GAAG,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;IAC7C,SAAS,CAAC,EAAE,aAAa,CAAC;CAC3B;AAED;;;GAGG;AACH,MAAM,WAAW,YAAY,CAAC,UAAU;IACtC,IAAI,EAAE,UAAU,EAAE,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;CACf"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Primitive types that can be used as query parameters
|
|
3
|
+
*/
|
|
4
|
+
export type QueryParamValue = string | number | boolean | null | undefined;
|
|
5
|
+
/**
|
|
6
|
+
* Record type for URL query parameters
|
|
7
|
+
*/
|
|
8
|
+
export type QueryParams = Record<string, QueryParamValue | QueryParamValue[]>;
|
|
9
|
+
/**
|
|
10
|
+
* Response data types supported by the API client
|
|
11
|
+
*/
|
|
12
|
+
export type ResponseData = Record<string, unknown> | string | Blob;
|
|
13
|
+
//# sourceMappingURL=QueryParams.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"QueryParams.d.ts","sourceRoot":"","sources":["../../../../src/core/api/Models/QueryParams.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,MAAM,eAAe,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,GAAG,SAAS,CAAC;AAE3E;;GAEG;AACH,MAAM,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,EAAE,eAAe,GAAG,eAAe,EAAE,CAAC,CAAC;AAE9E;;GAEG;AACH,MAAM,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,GAAG,IAAI,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/core/api/Models/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAE7D,YAAY,EAAE,eAAe,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC"}
|
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Manages active HTTP requests with support for cancellation and correlation tracking.
|
|
3
|
+
*
|
|
4
|
+
* This internal class maintains a registry of in-flight requests, allowing them to be
|
|
5
|
+
* cancelled individually or in bulk. Each request is tracked by a unique key and
|
|
6
|
+
* associated with a correlation ID for distributed tracing.
|
|
7
|
+
*
|
|
8
|
+
* Key Features:
|
|
9
|
+
* - **Request Deduplication**: Automatically cancels duplicate requests with the same key
|
|
10
|
+
* - **Correlation Tracking**: Maps request keys to correlation IDs for tracing
|
|
11
|
+
* - **Bulk Cancellation**: Cancel all pending requests at once (useful for cleanup)
|
|
12
|
+
* - **Memory Management**: Automatically cleans up tracking data when requests complete
|
|
13
|
+
*
|
|
14
|
+
* @internal This class is not exported from the public API
|
|
15
|
+
*
|
|
16
|
+
* @example
|
|
17
|
+
* ```typescript
|
|
18
|
+
* const manager = new RequestManager();
|
|
19
|
+
* const controller = new AbortController();
|
|
20
|
+
*
|
|
21
|
+
* // Track a request
|
|
22
|
+
* manager.add('GET_/users/123', controller, 'api-abc123');
|
|
23
|
+
*
|
|
24
|
+
* // Cancel specific request
|
|
25
|
+
* manager.cancel('GET_/users/123');
|
|
26
|
+
*
|
|
27
|
+
* // Or cancel all requests
|
|
28
|
+
* manager.cancelAll();
|
|
29
|
+
* ```
|
|
30
|
+
*/
|
|
31
|
+
export declare class RequestManager {
|
|
32
|
+
/**
|
|
33
|
+
* Map of active request keys to their abort controllers
|
|
34
|
+
* @private
|
|
35
|
+
*/
|
|
36
|
+
private activeRequests;
|
|
37
|
+
/**
|
|
38
|
+
* Map of request keys to their correlation IDs for tracing
|
|
39
|
+
* @private
|
|
40
|
+
*/
|
|
41
|
+
private correlationMap;
|
|
42
|
+
/**
|
|
43
|
+
* Registers a new request for tracking and cancellation management.
|
|
44
|
+
*
|
|
45
|
+
* If a request with the same key already exists, it will be automatically
|
|
46
|
+
* cancelled before the new one is registered (request deduplication).
|
|
47
|
+
*
|
|
48
|
+
* @param key - Unique identifier for the request (typically method + URL + timestamp)
|
|
49
|
+
* @param controller - AbortController for cancelling the request
|
|
50
|
+
* @param correlationId - Correlation ID for distributed tracing
|
|
51
|
+
*
|
|
52
|
+
* @example
|
|
53
|
+
* ```typescript
|
|
54
|
+
* const controller = new AbortController();
|
|
55
|
+
* manager.add('GET_/api/users_1699999999', controller, 'api-abc123');
|
|
56
|
+
* ```
|
|
57
|
+
*/
|
|
58
|
+
add(key: string, controller: AbortController, correlationId: string): void;
|
|
59
|
+
/**
|
|
60
|
+
* Removes a request from tracking without cancelling it.
|
|
61
|
+
*
|
|
62
|
+
* This is typically called when a request completes successfully or fails.
|
|
63
|
+
* Use {@link cancel} instead if you need to abort the request.
|
|
64
|
+
*
|
|
65
|
+
* @param key - Unique identifier for the request to remove
|
|
66
|
+
*
|
|
67
|
+
* @example
|
|
68
|
+
* ```typescript
|
|
69
|
+
* // Called automatically after request completes
|
|
70
|
+
* manager.remove('GET_/api/users_1699999999');
|
|
71
|
+
* ```
|
|
72
|
+
*/
|
|
73
|
+
remove(key: string): void;
|
|
74
|
+
/**
|
|
75
|
+
* Cancels a specific request and removes it from tracking.
|
|
76
|
+
*
|
|
77
|
+
* If the request doesn't exist or was already cancelled, this operation is a no-op.
|
|
78
|
+
* The associated AbortController's signal will be triggered, causing any active
|
|
79
|
+
* fetch operations to abort.
|
|
80
|
+
*
|
|
81
|
+
* @param key - Unique identifier for the request to cancel
|
|
82
|
+
*
|
|
83
|
+
* @example
|
|
84
|
+
* ```typescript
|
|
85
|
+
* // User navigates away, cancel the pending request
|
|
86
|
+
* manager.cancel('GET_/api/users_1699999999');
|
|
87
|
+
* ```
|
|
88
|
+
*/
|
|
89
|
+
cancel(key: string): void;
|
|
90
|
+
/**
|
|
91
|
+
* Cancels all active requests and clears all tracking data.
|
|
92
|
+
*
|
|
93
|
+
* This is useful for cleanup scenarios such as:
|
|
94
|
+
* - User logout
|
|
95
|
+
* - Component unmount
|
|
96
|
+
* - Navigation to a different part of the application
|
|
97
|
+
* - Error recovery that requires a clean slate
|
|
98
|
+
*
|
|
99
|
+
* @example
|
|
100
|
+
* ```typescript
|
|
101
|
+
* // Cancel all pending requests on logout
|
|
102
|
+
* function handleLogout() {
|
|
103
|
+
* apiClient.cancelAllRequests();
|
|
104
|
+
* // ... rest of logout logic
|
|
105
|
+
* }
|
|
106
|
+
* ```
|
|
107
|
+
*/
|
|
108
|
+
cancelAll(): void;
|
|
109
|
+
/**
|
|
110
|
+
* Checks if a request with the given key is currently being tracked.
|
|
111
|
+
*
|
|
112
|
+
* @param key - Unique identifier for the request
|
|
113
|
+
* @returns `true` if the request is active, `false` otherwise
|
|
114
|
+
*
|
|
115
|
+
* @example
|
|
116
|
+
* ```typescript
|
|
117
|
+
* if (manager.has('GET_/api/users_1699999999')) {
|
|
118
|
+
* console.log('Request is still pending');
|
|
119
|
+
* }
|
|
120
|
+
* ```
|
|
121
|
+
*/
|
|
122
|
+
has(key: string): boolean;
|
|
123
|
+
/**
|
|
124
|
+
* Retrieves the correlation ID for a given request key.
|
|
125
|
+
*
|
|
126
|
+
* Correlation IDs are used for distributed tracing and request tracking
|
|
127
|
+
* across services and logs.
|
|
128
|
+
*
|
|
129
|
+
* @param key - Unique identifier for the request
|
|
130
|
+
* @returns The correlation ID if found, `undefined` otherwise
|
|
131
|
+
*
|
|
132
|
+
* @example
|
|
133
|
+
* ```typescript
|
|
134
|
+
* const correlationId = manager.getCorrelationId('GET_/api/users_1699999999');
|
|
135
|
+
* if (correlationId) {
|
|
136
|
+
* console.log('Trace request with ID:', correlationId);
|
|
137
|
+
* }
|
|
138
|
+
* ```
|
|
139
|
+
*/
|
|
140
|
+
getCorrelationId(key: string): string | undefined;
|
|
141
|
+
}
|
|
142
|
+
//# sourceMappingURL=RequestManager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RequestManager.d.ts","sourceRoot":"","sources":["../../../src/core/api/RequestManager.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,qBAAa,cAAc;IACzB;;;OAGG;IACH,OAAO,CAAC,cAAc,CAA2C;IAEjE;;;OAGG;IACH,OAAO,CAAC,cAAc,CAAkC;IAExD;;;;;;;;;;;;;;;OAeG;IACH,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,UAAU,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,GAAG,IAAI;IAO1E;;;;;;;;;;;;;OAaG;IACH,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAKzB;;;;;;;;;;;;;;OAcG;IACH,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAUzB;;;;;;;;;;;;;;;;;OAiBG;IACH,SAAS,IAAI,IAAI;IAMjB;;;;;;;;;;;;OAYG;IACH,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAIzB;;;;;;;;;;;;;;;;OAgBG;IACH,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;CAGlD"}
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Implements automatic retry logic with exponential backoff for failed HTTP requests.
|
|
3
|
+
*
|
|
4
|
+
* This internal class handles transient failures by automatically retrying requests
|
|
5
|
+
* with progressively increasing delays between attempts. The exponential backoff
|
|
6
|
+
* strategy helps prevent overwhelming a struggling server while giving temporary
|
|
7
|
+
* issues time to resolve.
|
|
8
|
+
*
|
|
9
|
+
* Key Features:
|
|
10
|
+
* - **Exponential Backoff**: Doubles delay between retries (e.g., 1s, 2s, 4s, 8s)
|
|
11
|
+
* - **Smart Error Detection**: Skips retry for non-retryable errors (validation, aborts)
|
|
12
|
+
* - **Abort Support**: Respects cancellation signals during retry delays
|
|
13
|
+
* - **Type Safety**: Fully generic implementation preserving return types
|
|
14
|
+
*
|
|
15
|
+
* Retry Strategy:
|
|
16
|
+
* - **Retryable**: Network errors, 5xx server errors, timeouts
|
|
17
|
+
* - **Non-Retryable**: Validation errors (400), AbortErrors, cancelled requests
|
|
18
|
+
*
|
|
19
|
+
* @internal This class is not exported from the public API
|
|
20
|
+
*
|
|
21
|
+
* @example
|
|
22
|
+
* Retry configuration in ApiClient:
|
|
23
|
+
* ```typescript
|
|
24
|
+
* const client = new ApiClient('https://api.example.com');
|
|
25
|
+
*
|
|
26
|
+
* // Retry up to 3 times with 1s initial delay
|
|
27
|
+
* const { apiData } = await client.get('/users', {
|
|
28
|
+
* retries: 3,
|
|
29
|
+
* retryDelay: 1000 // 1s, 2s, 4s
|
|
30
|
+
* });
|
|
31
|
+
* ```
|
|
32
|
+
*/
|
|
33
|
+
export declare class RetryHandler {
|
|
34
|
+
/**
|
|
35
|
+
* Retries a failed request with exponential backoff strategy.
|
|
36
|
+
*
|
|
37
|
+
* The retry logic works as follows:
|
|
38
|
+
* 1. Attempts the request immediately
|
|
39
|
+
* 2. On failure, checks if the error is retryable
|
|
40
|
+
* 3. If retryable and retries remain, waits for the current delay
|
|
41
|
+
* 4. Doubles the delay for the next attempt
|
|
42
|
+
* 5. Repeats until success or retries exhausted
|
|
43
|
+
*
|
|
44
|
+
* **Non-Retryable Errors:**
|
|
45
|
+
* - Validation errors (400) - Client sent bad data
|
|
46
|
+
* - AbortErrors - Request was explicitly cancelled
|
|
47
|
+
* - Requests with aborted signals
|
|
48
|
+
*
|
|
49
|
+
* **Abort Handling:**
|
|
50
|
+
* If the signal is aborted during a retry delay, the retry is immediately
|
|
51
|
+
* cancelled and an AbortError is thrown.
|
|
52
|
+
*
|
|
53
|
+
* @template T - The return type of the function being retried
|
|
54
|
+
* @param fn - Async function to retry on failure
|
|
55
|
+
* @param retries - Number of retry attempts remaining (decrements each retry)
|
|
56
|
+
* @param delay - Current delay in milliseconds before next retry
|
|
57
|
+
* @param signal - Optional AbortSignal to cancel retries
|
|
58
|
+
* @returns Promise resolving to the function's result on success
|
|
59
|
+
* @throws The last error encountered if all retries are exhausted
|
|
60
|
+
* @throws AbortError if the signal is aborted during execution or delay
|
|
61
|
+
*
|
|
62
|
+
* @example
|
|
63
|
+
* Basic retry usage:
|
|
64
|
+
* ```typescript
|
|
65
|
+
* const handler = new RetryHandler();
|
|
66
|
+
* const fetchUser = () => fetch('/api/users/123').then(r => r.json());
|
|
67
|
+
*
|
|
68
|
+
* try {
|
|
69
|
+
* const user = await handler.retryRequest(
|
|
70
|
+
* fetchUser,
|
|
71
|
+
* 3, // 3 retries
|
|
72
|
+
* 1000 // Start with 1s delay
|
|
73
|
+
* );
|
|
74
|
+
* console.log('User:', user);
|
|
75
|
+
* } catch (error) {
|
|
76
|
+
* console.error('Failed after all retries:', error);
|
|
77
|
+
* }
|
|
78
|
+
* ```
|
|
79
|
+
*
|
|
80
|
+
* @example
|
|
81
|
+
* With cancellation support:
|
|
82
|
+
* ```typescript
|
|
83
|
+
* const controller = new AbortController();
|
|
84
|
+
* const signal = controller.signal;
|
|
85
|
+
*
|
|
86
|
+
* // Cancel after 5 seconds
|
|
87
|
+
* setTimeout(() => controller.abort(), 5000);
|
|
88
|
+
*
|
|
89
|
+
* try {
|
|
90
|
+
* await handler.retryRequest(fetchUser, 5, 1000, signal);
|
|
91
|
+
* } catch (error) {
|
|
92
|
+
* if (error.name === 'AbortError') {
|
|
93
|
+
* console.log('Retry cancelled');
|
|
94
|
+
* }
|
|
95
|
+
* }
|
|
96
|
+
* ```
|
|
97
|
+
*/
|
|
98
|
+
retryRequest<T>(fn: () => Promise<T>, retries: number, delay: number, signal?: AbortSignal): Promise<T>;
|
|
99
|
+
}
|
|
100
|
+
//# sourceMappingURL=RetryHandler.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RetryHandler.d.ts","sourceRoot":"","sources":["../../../../src/core/api/Retry/RetryHandler.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,qBAAa,YAAY;IACvB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA+DG;IACG,YAAY,CAAC,CAAC,EAClB,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EACpB,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,MAAM,EACb,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,CAAC,CAAC;CA0Cd"}
|