@bigbinary/neeto-commons-frontend 3.2.0 → 3.2.2

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.
@@ -151,11 +151,19 @@ var showErrorToastr = function showErrorToastr(error) {
151
151
  _ref4$showToastr = _ref4.showToastr,
152
152
  showToastr = _ref4$showToastr === void 0 ? true : _ref4$showToastr;
153
153
  if (!showToastr) return error;
154
+ var _ref5 = (_error$response3 = error.response) !== null && _error$response3 !== void 0 ? _error$response3 : {},
155
+ status = _ref5.status;
154
156
  if (error.message === "Network Error") return handleNetworkError(error);
155
- if (![403, 404].includes((_error$response3 = error.response) === null || _error$response3 === void 0 ? void 0 : _error$response3.status) && !_axios["default"].isCancel(error)) {
157
+ if (![403, 404, 520].includes(status) && !_axios["default"].isCancel(error)) {
156
158
  // we already display a page in case of 403 & 404 and we don't want to show a toastr for cancelled requests.
159
+ // We handle cloudflare error differently for production and other environments.
157
160
  _neetoui.Toastr.error(error);
158
161
  }
162
+ if (status === 520) {
163
+ if (globalProps.railsEnv === "production") {
164
+ _neetoui.Toastr.error(_i18next["default"].t("generic.error"));
165
+ } else _neetoui.Toastr.error(error);
166
+ }
159
167
  return error;
160
168
  };
161
169
  var getUrlPathName = function getUrlPathName(url) {
@@ -167,11 +175,11 @@ var getUrlPathName = function getUrlPathName(url) {
167
175
  };
168
176
  var handle404ErrorResponse = function handle404ErrorResponse(error) {
169
177
  var _error$config4, _error$response4;
170
- var _ref5 = (_error$config4 = error.config) !== null && _error$config4 !== void 0 ? _error$config4 : {},
171
- _ref5$show404ErrorPag = _ref5.show404ErrorPage,
172
- show404ErrorPage = _ref5$show404ErrorPag === void 0 ? true : _ref5$show404ErrorPag,
173
- _ref5$show403ErrorPag = _ref5.show403ErrorPage,
174
- show403ErrorPage = _ref5$show403ErrorPag === void 0 ? true : _ref5$show403ErrorPag;
178
+ var _ref6 = (_error$config4 = error.config) !== null && _error$config4 !== void 0 ? _error$config4 : {},
179
+ _ref6$show404ErrorPag = _ref6.show404ErrorPage,
180
+ show404ErrorPage = _ref6$show404ErrorPag === void 0 ? true : _ref6$show404ErrorPag,
181
+ _ref6$show403ErrorPag = _ref6.show403ErrorPage,
182
+ show403ErrorPage = _ref6$show403ErrorPag === void 0 ? true : _ref6$show403ErrorPag;
175
183
  var status = (_error$response4 = error.response) === null || _error$response4 === void 0 ? void 0 : _error$response4.status;
176
184
  if (status === 404 && show404ErrorPage || status === 403 && show403ErrorPage) {
177
185
  var _error$request;
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["_axios","_interopRequireDefault","require","_i18next","_neetoCist","_neetoui","_ramda","_useDisplayErrorPage","_axios2","_paramsSerializer","_constants","shouldNot","skip","_typeof2","shouldShowToastr","response","notice","noticeCode","setAuthHeaders","_document$querySelect","_axios$defaults$heade","axios","defaults","headers","_defineProperty2","HEADERS_KEYS","accept","contentType","xCsrfToken","document","querySelector","getAttribute","createPipe","functions","data","reduce","acc","fn","transformResponseKeysToCamelCase","_response$config$tran","config","transformResponseCase","keysToCamelCase","transformErrorKeysToCamelCase","error","_error$config","_error$response","_ref","_ref$transformRespons","showSuccessToastr","_response$config$show","showToastr","matches","showThumbsUpToastr","Toastr","success","icon","className","pullDataFromResponse","_response$config$incl","includeMetadataInResponse","buildSuccessResponseHandler","interceptors","transformCase","push","handleUnauthorizedErrorResponse","_error$response2","_error$config2","status","resetAuthTokens","_ref2","_ref2$redirectOnError","redirectOnError","setTimeout","redirectTo","window","location","pathname","concat","encodeURIComponent","href","isUserOffline","navigator","onLine","handleNetworkError","_ref3","_asyncToGenerator2","_regenerator","mark","_callee","errorMessage","wrap","_callee$","_context","prev","next","i18next","t","Promise","resolve","MAXIMUM_OFFLINE_DURATION","abrupt","stop","_x","apply","arguments","showErrorToastr","_error$config3","_error$response3","_ref4","_ref4$showToastr","message","includes","isCancel","getUrlPathName","url","URL","_unused","handle404ErrorResponse","_error$config4","_error$response4","_ref5","_ref5$show404ErrorPag","show404ErrorPage","_ref5$show403ErrorPag","show403ErrorPage","_error$request","fullUrl","request","responseURL","useErrorDisplayStore","setState","showErrorPage","statusCode","failedApiUrl","failedApiPath","buildErrorResponseHandler","logoutOn401","reject","bind","cleanupCredentialsForCrossOrigin","hostname","evolve","omit","transformDataToSnakeCase","_request$transformReq","transformRequestCase","serializeKeysToSnakeCase","params","addRequestInterceptors","cleanCredentialsForCrossOrigin","use","addResponseInterceptors","registerIntercepts","initializeAxios","baseURL","authHeaders","paramsSerializer","setParamsSerializer"],"sources":["../../../../src/initializers/axios/index.js"],"sourcesContent":["import axios from \"axios\";\nimport i18next from \"i18next\";\nimport { keysToCamelCase, matches, serializeKeysToSnakeCase } from \"neetocist\";\nimport { Toastr } from \"neetoui\";\nimport { evolve, omit } from \"ramda\";\nimport { useErrorDisplayStore } from \"react-utils/useDisplayErrorPage\";\nimport { resetAuthTokens } from \"utils/axios\";\n\nimport setParamsSerializer from \"./paramsSerializer\";\n\nimport { MAXIMUM_OFFLINE_DURATION, HEADERS_KEYS } from \"../constants\";\n\nconst shouldNot = skip => typeof skip === \"object\" || !skip;\n\nconst shouldShowToastr = response =>\n typeof response === \"string\" ||\n (typeof response === \"object\" && (response?.notice || response?.noticeCode));\n\nconst setAuthHeaders = () => {\n // @ts-ignore\n axios.defaults.headers = {\n [HEADERS_KEYS.accept]: \"application/json\",\n [HEADERS_KEYS.contentType]: \"application/json\",\n [HEADERS_KEYS.xCsrfToken]: document\n .querySelector('[name=\"csrf-token\"]')\n ?.getAttribute(\"content\"),\n };\n};\n\n// pipe function from ramda doesn't accept array of functions.\n// We can't use spread operator too. So this is a workaround.\nconst createPipe = functions => data =>\n functions.reduce((acc, fn) => fn(acc), data);\n\nconst transformResponseKeysToCamelCase = response => {\n const { transformResponseCase = true } = response.config;\n\n if (response.data && transformResponseCase) {\n response.data = keysToCamelCase(response.data);\n }\n\n return response;\n};\n\nconst transformErrorKeysToCamelCase = error => {\n const { transformResponseCase = true } = error.config ?? {};\n\n if (error.response?.data && transformResponseCase) {\n error.response.data = keysToCamelCase(error.response.data);\n }\n\n return error;\n};\n\nconst showSuccessToastr = response => {\n const { showToastr = true } = response.config;\n if (!showToastr) return response;\n\n if (matches({ showThumbsUpToastr: true }, response.data)) {\n // @ts-ignore\n Toastr.success(\"\", { icon: \"👍\", className: \"w-20\" });\n } else if (matches({ noticeCode: \"thumbs_up\" }, response.data)) {\n // @ts-ignore\n Toastr.success(\"\", { icon: \"👍\", className: \"w-20\" });\n } else if (shouldShowToastr(response.data)) {\n Toastr.success(response.data);\n }\n\n return response;\n};\n\nconst pullDataFromResponse = response => {\n const { includeMetadataInResponse = false } = response.config;\n\n return includeMetadataInResponse ? response : response.data;\n};\n\nconst buildSuccessResponseHandler = skip => {\n const interceptors = [];\n if (!skip?.transformCase) interceptors.push(transformResponseKeysToCamelCase);\n\n if (!skip?.showToastr) interceptors.push(showSuccessToastr);\n\n if (!skip?.pullDataFromResponse) interceptors.push(pullDataFromResponse);\n\n return createPipe(interceptors);\n};\n\nconst handleUnauthorizedErrorResponse = error => {\n if (error.response?.status !== 401) return error;\n\n resetAuthTokens();\n\n const { redirectOnError = true } = error.config ?? {};\n if (redirectOnError) {\n setTimeout(() => {\n const redirectTo =\n window.location.pathname === \"/login\"\n ? \"/login\"\n : `/login?redirect_uri=${encodeURIComponent(window.location.href)}`;\n\n // eslint-disable-next-line xss/no-location-href-assign\n window.location.href = redirectTo;\n }, 300);\n }\n\n return error;\n};\n\nconst isUserOffline = () => !window.navigator.onLine;\n\nconst handleNetworkError = async error => {\n const errorMessage = i18next.t(\"neetoCommons.toastr.error.networkError\");\n if (isUserOffline()) {\n await new Promise(resolve => setTimeout(resolve, MAXIMUM_OFFLINE_DURATION));\n\n if (isUserOffline()) Toastr.error(errorMessage);\n\n return error;\n }\n Toastr.error(errorMessage);\n\n return error;\n};\n\nconst showErrorToastr = error => {\n const { showToastr = true } = error.config ?? {};\n if (!showToastr) return error;\n\n if (error.message === \"Network Error\") return handleNetworkError(error);\n\n if (![403, 404].includes(error.response?.status) && !axios.isCancel(error)) {\n // we already display a page in case of 403 & 404 and we don't want to show a toastr for cancelled requests.\n Toastr.error(error);\n }\n\n return error;\n};\n\nconst getUrlPathName = url => {\n try {\n return new URL(url).pathname;\n } catch {\n return url;\n }\n};\n\nconst handle404ErrorResponse = error => {\n const { show404ErrorPage = true, show403ErrorPage = true } =\n error.config ?? {};\n\n const status = error.response?.status;\n if (\n (status === 404 && show404ErrorPage) ||\n (status === 403 && show403ErrorPage)\n ) {\n const fullUrl = error.request?.responseURL || error.config.url;\n useErrorDisplayStore.setState({\n showErrorPage: true,\n statusCode: status,\n failedApiUrl: fullUrl,\n failedApiPath: getUrlPathName(fullUrl),\n });\n }\n\n return error;\n};\n\nconst buildErrorResponseHandler = skip => {\n const interceptors = [];\n if (!skip?.transformCase) interceptors.push(transformErrorKeysToCamelCase);\n\n if (!skip?.show404ErrorPage) interceptors.push(handle404ErrorResponse);\n\n if (!skip?.logoutOn401) interceptors.push(handleUnauthorizedErrorResponse);\n\n if (!skip?.showToastr) interceptors.push(showErrorToastr);\n\n interceptors.push(Promise.reject.bind(Promise));\n\n return createPipe(interceptors);\n};\n\nconst cleanupCredentialsForCrossOrigin = request => {\n if (!request.url.includes(\"://\")) return request;\n\n if (request.url.includes(window.location.hostname)) return request;\n\n return evolve({ headers: omit([HEADERS_KEYS.xCsrfToken]) })(request);\n};\n\nconst transformDataToSnakeCase = request => {\n const { transformRequestCase = true } = request;\n\n if (!transformRequestCase) return request;\n\n return evolve(\n { data: serializeKeysToSnakeCase, params: serializeKeysToSnakeCase },\n request\n );\n};\n\nconst addRequestInterceptors = skip => {\n if (!skip?.cleanCredentialsForCrossOrigin) {\n axios.interceptors.request.use(cleanupCredentialsForCrossOrigin);\n }\n\n if (!skip?.transformCase) {\n axios.interceptors.request.use(transformDataToSnakeCase);\n }\n};\n\nconst addResponseInterceptors = skip => {\n axios.interceptors.response.use(\n buildSuccessResponseHandler(skip),\n buildErrorResponseHandler(skip)\n );\n};\n\nconst registerIntercepts = skip => {\n if (shouldNot(skip?.request)) addRequestInterceptors(skip?.request);\n\n if (shouldNot(skip?.response)) addResponseInterceptors(skip?.response);\n};\n\nexport default function initializeAxios(skip) {\n if (!skip?.baseURL) axios.defaults.baseURL = \"/\";\n\n if (!skip?.authHeaders) setAuthHeaders();\n\n if (!skip?.paramsSerializer) setParamsSerializer();\n\n if (shouldNot(skip?.interceptors)) registerIntercepts(skip?.interceptors);\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","names":["_axios","_interopRequireDefault","require","_i18next","_neetoCist","_neetoui","_ramda","_useDisplayErrorPage","_axios2","_paramsSerializer","_constants","shouldNot","skip","_typeof2","shouldShowToastr","response","notice","noticeCode","setAuthHeaders","_document$querySelect","_axios$defaults$heade","axios","defaults","headers","_defineProperty2","HEADERS_KEYS","accept","contentType","xCsrfToken","document","querySelector","getAttribute","createPipe","functions","data","reduce","acc","fn","transformResponseKeysToCamelCase","_response$config$tran","config","transformResponseCase","keysToCamelCase","transformErrorKeysToCamelCase","error","_error$config","_error$response","_ref","_ref$transformRespons","showSuccessToastr","_response$config$show","showToastr","matches","showThumbsUpToastr","Toastr","success","icon","className","pullDataFromResponse","_response$config$incl","includeMetadataInResponse","buildSuccessResponseHandler","interceptors","transformCase","push","handleUnauthorizedErrorResponse","_error$response2","_error$config2","status","resetAuthTokens","_ref2","_ref2$redirectOnError","redirectOnError","setTimeout","redirectTo","window","location","pathname","concat","encodeURIComponent","href","isUserOffline","navigator","onLine","handleNetworkError","_ref3","_asyncToGenerator2","_regenerator","mark","_callee","errorMessage","wrap","_callee$","_context","prev","next","i18next","t","Promise","resolve","MAXIMUM_OFFLINE_DURATION","abrupt","stop","_x","apply","arguments","showErrorToastr","_error$config3","_error$response3","_ref4","_ref4$showToastr","_ref5","message","includes","isCancel","globalProps","railsEnv","getUrlPathName","url","URL","_unused","handle404ErrorResponse","_error$config4","_error$response4","_ref6","_ref6$show404ErrorPag","show404ErrorPage","_ref6$show403ErrorPag","show403ErrorPage","_error$request","fullUrl","request","responseURL","useErrorDisplayStore","setState","showErrorPage","statusCode","failedApiUrl","failedApiPath","buildErrorResponseHandler","logoutOn401","reject","bind","cleanupCredentialsForCrossOrigin","hostname","evolve","omit","transformDataToSnakeCase","_request$transformReq","transformRequestCase","serializeKeysToSnakeCase","params","addRequestInterceptors","cleanCredentialsForCrossOrigin","use","addResponseInterceptors","registerIntercepts","initializeAxios","baseURL","authHeaders","paramsSerializer","setParamsSerializer"],"sources":["../../../../src/initializers/axios/index.js"],"sourcesContent":["import axios from \"axios\";\nimport i18next from \"i18next\";\nimport { keysToCamelCase, matches, serializeKeysToSnakeCase } from \"neetocist\";\nimport { Toastr } from \"neetoui\";\nimport { evolve, omit } from \"ramda\";\nimport { useErrorDisplayStore } from \"react-utils/useDisplayErrorPage\";\nimport { resetAuthTokens } from \"utils/axios\";\n\nimport setParamsSerializer from \"./paramsSerializer\";\n\nimport { MAXIMUM_OFFLINE_DURATION, HEADERS_KEYS } from \"../constants\";\n\nconst shouldNot = skip => typeof skip === \"object\" || !skip;\n\nconst shouldShowToastr = response =>\n typeof response === \"string\" ||\n (typeof response === \"object\" && (response?.notice || response?.noticeCode));\n\nconst setAuthHeaders = () => {\n // @ts-ignore\n axios.defaults.headers = {\n [HEADERS_KEYS.accept]: \"application/json\",\n [HEADERS_KEYS.contentType]: \"application/json\",\n [HEADERS_KEYS.xCsrfToken]: document\n .querySelector('[name=\"csrf-token\"]')\n ?.getAttribute(\"content\"),\n };\n};\n\n// pipe function from ramda doesn't accept array of functions.\n// We can't use spread operator too. So this is a workaround.\nconst createPipe = functions => data =>\n functions.reduce((acc, fn) => fn(acc), data);\n\nconst transformResponseKeysToCamelCase = response => {\n const { transformResponseCase = true } = response.config;\n\n if (response.data && transformResponseCase) {\n response.data = keysToCamelCase(response.data);\n }\n\n return response;\n};\n\nconst transformErrorKeysToCamelCase = error => {\n const { transformResponseCase = true } = error.config ?? {};\n\n if (error.response?.data && transformResponseCase) {\n error.response.data = keysToCamelCase(error.response.data);\n }\n\n return error;\n};\n\nconst showSuccessToastr = response => {\n const { showToastr = true } = response.config;\n if (!showToastr) return response;\n\n if (matches({ showThumbsUpToastr: true }, response.data)) {\n // @ts-ignore\n Toastr.success(\"\", { icon: \"👍\", className: \"w-20\" });\n } else if (matches({ noticeCode: \"thumbs_up\" }, response.data)) {\n // @ts-ignore\n Toastr.success(\"\", { icon: \"👍\", className: \"w-20\" });\n } else if (shouldShowToastr(response.data)) {\n Toastr.success(response.data);\n }\n\n return response;\n};\n\nconst pullDataFromResponse = response => {\n const { includeMetadataInResponse = false } = response.config;\n\n return includeMetadataInResponse ? response : response.data;\n};\n\nconst buildSuccessResponseHandler = skip => {\n const interceptors = [];\n if (!skip?.transformCase) interceptors.push(transformResponseKeysToCamelCase);\n\n if (!skip?.showToastr) interceptors.push(showSuccessToastr);\n\n if (!skip?.pullDataFromResponse) interceptors.push(pullDataFromResponse);\n\n return createPipe(interceptors);\n};\n\nconst handleUnauthorizedErrorResponse = error => {\n if (error.response?.status !== 401) return error;\n\n resetAuthTokens();\n\n const { redirectOnError = true } = error.config ?? {};\n if (redirectOnError) {\n setTimeout(() => {\n const redirectTo =\n window.location.pathname === \"/login\"\n ? \"/login\"\n : `/login?redirect_uri=${encodeURIComponent(window.location.href)}`;\n\n // eslint-disable-next-line xss/no-location-href-assign\n window.location.href = redirectTo;\n }, 300);\n }\n\n return error;\n};\n\nconst isUserOffline = () => !window.navigator.onLine;\n\nconst handleNetworkError = async error => {\n const errorMessage = i18next.t(\"neetoCommons.toastr.error.networkError\");\n if (isUserOffline()) {\n await new Promise(resolve => setTimeout(resolve, MAXIMUM_OFFLINE_DURATION));\n\n if (isUserOffline()) Toastr.error(errorMessage);\n\n return error;\n }\n Toastr.error(errorMessage);\n\n return error;\n};\n\nconst showErrorToastr = error => {\n const { showToastr = true } = error.config ?? {};\n if (!showToastr) return error;\n\n const { status } = error.response ?? {};\n\n if (error.message === \"Network Error\") return handleNetworkError(error);\n\n if (![403, 404, 520].includes(status) && !axios.isCancel(error)) {\n // we already display a page in case of 403 & 404 and we don't want to show a toastr for cancelled requests.\n // We handle cloudflare error differently for production and other environments.\n Toastr.error(error);\n }\n\n if (status === 520) {\n if (globalProps.railsEnv === \"production\") {\n Toastr.error(i18next.t(\"generic.error\"));\n } else Toastr.error(error);\n }\n\n return error;\n};\n\nconst getUrlPathName = url => {\n try {\n return new URL(url).pathname;\n } catch {\n return url;\n }\n};\n\nconst handle404ErrorResponse = error => {\n const { show404ErrorPage = true, show403ErrorPage = true } =\n error.config ?? {};\n\n const status = error.response?.status;\n if (\n (status === 404 && show404ErrorPage) ||\n (status === 403 && show403ErrorPage)\n ) {\n const fullUrl = error.request?.responseURL || error.config.url;\n useErrorDisplayStore.setState({\n showErrorPage: true,\n statusCode: status,\n failedApiUrl: fullUrl,\n failedApiPath: getUrlPathName(fullUrl),\n });\n }\n\n return error;\n};\n\nconst buildErrorResponseHandler = skip => {\n const interceptors = [];\n if (!skip?.transformCase) interceptors.push(transformErrorKeysToCamelCase);\n\n if (!skip?.show404ErrorPage) interceptors.push(handle404ErrorResponse);\n\n if (!skip?.logoutOn401) interceptors.push(handleUnauthorizedErrorResponse);\n\n if (!skip?.showToastr) interceptors.push(showErrorToastr);\n\n interceptors.push(Promise.reject.bind(Promise));\n\n return createPipe(interceptors);\n};\n\nconst cleanupCredentialsForCrossOrigin = request => {\n if (!request.url.includes(\"://\")) return request;\n\n if (request.url.includes(window.location.hostname)) return request;\n\n return evolve({ headers: omit([HEADERS_KEYS.xCsrfToken]) })(request);\n};\n\nconst transformDataToSnakeCase = request => {\n const { transformRequestCase = true } = request;\n\n if (!transformRequestCase) return request;\n\n return evolve(\n { data: serializeKeysToSnakeCase, params: serializeKeysToSnakeCase },\n request\n );\n};\n\nconst addRequestInterceptors = skip => {\n if (!skip?.cleanCredentialsForCrossOrigin) {\n axios.interceptors.request.use(cleanupCredentialsForCrossOrigin);\n }\n\n if (!skip?.transformCase) {\n axios.interceptors.request.use(transformDataToSnakeCase);\n }\n};\n\nconst addResponseInterceptors = skip => {\n axios.interceptors.response.use(\n buildSuccessResponseHandler(skip),\n buildErrorResponseHandler(skip)\n );\n};\n\nconst registerIntercepts = skip => {\n if (shouldNot(skip?.request)) addRequestInterceptors(skip?.request);\n\n if (shouldNot(skip?.response)) addResponseInterceptors(skip?.response);\n};\n\nexport default function initializeAxios(skip) {\n if (!skip?.baseURL) axios.defaults.baseURL = \"/\";\n\n if (!skip?.authHeaders) setAuthHeaders();\n\n if (!skip?.paramsSerializer) setParamsSerializer();\n\n if (shouldNot(skip?.interceptors)) registerIntercepts(skip?.interceptors);\n}\n"],"mappings":"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"}
@@ -6,7 +6,14 @@ Object.defineProperty(exports, "__esModule", {
6
6
  exports.isMetaKeyPressed = exports.handleMetaClick = void 0;
7
7
  var _ramda = require("ramda");
8
8
  var handleMetaClick = (0, _ramda.curry)(function (history, params, event) {
9
- return isMetaKeyPressed(event) ? window.open(params.pathname || params, "_blank") : history.push(params);
9
+ var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};
10
+ if (isMetaKeyPressed(event)) {
11
+ return window.open(params.pathname || params, "_blank");
12
+ }
13
+ var _options$isHistoryRep = options.isHistoryReplace,
14
+ isHistoryReplace = _options$isHistoryRep === void 0 ? false : _options$isHistoryRep;
15
+ var historyMethod = isHistoryReplace ? history.replace : history.push;
16
+ return historyMethod(params);
10
17
  });
11
18
  exports.handleMetaClick = handleMetaClick;
12
19
  var isMetaKeyPressed = function isMetaKeyPressed(event) {
@@ -1 +1 @@
1
- {"version":3,"file":"metaClick.js","names":["_ramda","require","handleMetaClick","curry","history","params","event","isMetaKeyPressed","window","open","pathname","push","exports","ctrlKey","metaKey"],"sources":["../../../../src/react-utils/metaClick/metaClick.js"],"sourcesContent":["import { curry } from \"ramda\";\n\nexport const handleMetaClick = curry((history, params, event) =>\n isMetaKeyPressed(event)\n ? window.open(params.pathname || params, \"_blank\")\n : history.push(params)\n);\n\nexport const isMetaKeyPressed = event => !!(event?.ctrlKey || event?.metaKey);\n"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AAEO,IAAMC,eAAe,GAAG,IAAAC,YAAK,EAAC,UAACC,OAAO,EAAEC,MAAM,EAAEC,KAAK;EAAA,OAC1DC,gBAAgB,CAACD,KAAK,CAAC,GACnBE,MAAM,CAACC,IAAI,CAACJ,MAAM,CAACK,QAAQ,IAAIL,MAAM,EAAE,QAAQ,CAAC,GAChDD,OAAO,CAACO,IAAI,CAACN,MAAM,CAAC;AAAA,EACzB;AAACO,OAAA,CAAAV,eAAA,GAAAA,eAAA;AAEK,IAAMK,gBAAgB,GAAG,SAAnBA,gBAAgBA,CAAGD,KAAK;EAAA,OAAI,CAAC,EAAEA,KAAK,aAALA,KAAK,eAALA,KAAK,CAAEO,OAAO,IAAIP,KAAK,aAALA,KAAK,eAALA,KAAK,CAAEQ,OAAO,CAAC;AAAA;AAACF,OAAA,CAAAL,gBAAA,GAAAA,gBAAA"}
1
+ {"version":3,"file":"metaClick.js","names":["_ramda","require","handleMetaClick","curry","history","params","event","options","arguments","length","undefined","isMetaKeyPressed","window","open","pathname","_options$isHistoryRep","isHistoryReplace","historyMethod","replace","push","exports","ctrlKey","metaKey"],"sources":["../../../../src/react-utils/metaClick/metaClick.js"],"sourcesContent":["import { curry } from \"ramda\";\n\nexport const handleMetaClick = curry((history, params, event, options = {}) => {\n if (isMetaKeyPressed(event)) {\n return window.open(params.pathname || params, \"_blank\");\n }\n\n const { isHistoryReplace = false } = options;\n const historyMethod = isHistoryReplace ? history.replace : history.push;\n\n return historyMethod(params);\n});\n\nexport const isMetaKeyPressed = event => !!(event?.ctrlKey || event?.metaKey);\n"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AAEO,IAAMC,eAAe,GAAG,IAAAC,YAAK,EAAC,UAACC,OAAO,EAAEC,MAAM,EAAEC,KAAK,EAAmB;EAAA,IAAjBC,OAAO,GAAAC,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,CAAC,CAAC;EACxE,IAAIG,gBAAgB,CAACL,KAAK,CAAC,EAAE;IAC3B,OAAOM,MAAM,CAACC,IAAI,CAACR,MAAM,CAACS,QAAQ,IAAIT,MAAM,EAAE,QAAQ,CAAC;EACzD;EAEA,IAAAU,qBAAA,GAAqCR,OAAO,CAApCS,gBAAgB;IAAhBA,gBAAgB,GAAAD,qBAAA,cAAG,KAAK,GAAAA,qBAAA;EAChC,IAAME,aAAa,GAAGD,gBAAgB,GAAGZ,OAAO,CAACc,OAAO,GAAGd,OAAO,CAACe,IAAI;EAEvE,OAAOF,aAAa,CAACZ,MAAM,CAAC;AAC9B,CAAC,CAAC;AAACe,OAAA,CAAAlB,eAAA,GAAAA,eAAA;AAEI,IAAMS,gBAAgB,GAAG,SAAnBA,gBAAgBA,CAAGL,KAAK;EAAA,OAAI,CAAC,EAAEA,KAAK,aAALA,KAAK,eAALA,KAAK,CAAEe,OAAO,IAAIf,KAAK,aAALA,KAAK,eAALA,KAAK,CAAEgB,OAAO,CAAC;AAAA;AAACF,OAAA,CAAAT,gBAAA,GAAAA,gBAAA"}
@@ -144,11 +144,19 @@ var showErrorToastr = function showErrorToastr(error) {
144
144
  _ref4$showToastr = _ref4.showToastr,
145
145
  showToastr = _ref4$showToastr === void 0 ? true : _ref4$showToastr;
146
146
  if (!showToastr) return error;
147
+ var _ref5 = (_error$response3 = error.response) !== null && _error$response3 !== void 0 ? _error$response3 : {},
148
+ status = _ref5.status;
147
149
  if (error.message === "Network Error") return handleNetworkError(error);
148
- if (![403, 404].includes((_error$response3 = error.response) === null || _error$response3 === void 0 ? void 0 : _error$response3.status) && !axios.isCancel(error)) {
150
+ if (![403, 404, 520].includes(status) && !axios.isCancel(error)) {
149
151
  // we already display a page in case of 403 & 404 and we don't want to show a toastr for cancelled requests.
152
+ // We handle cloudflare error differently for production and other environments.
150
153
  Toastr.error(error);
151
154
  }
155
+ if (status === 520) {
156
+ if (globalProps.railsEnv === "production") {
157
+ Toastr.error(i18next.t("generic.error"));
158
+ } else Toastr.error(error);
159
+ }
152
160
  return error;
153
161
  };
154
162
  var getUrlPathName = function getUrlPathName(url) {
@@ -160,11 +168,11 @@ var getUrlPathName = function getUrlPathName(url) {
160
168
  };
161
169
  var handle404ErrorResponse = function handle404ErrorResponse(error) {
162
170
  var _error$config4, _error$response4;
163
- var _ref5 = (_error$config4 = error.config) !== null && _error$config4 !== void 0 ? _error$config4 : {},
164
- _ref5$show404ErrorPag = _ref5.show404ErrorPage,
165
- show404ErrorPage = _ref5$show404ErrorPag === void 0 ? true : _ref5$show404ErrorPag,
166
- _ref5$show403ErrorPag = _ref5.show403ErrorPage,
167
- show403ErrorPage = _ref5$show403ErrorPag === void 0 ? true : _ref5$show403ErrorPag;
171
+ var _ref6 = (_error$config4 = error.config) !== null && _error$config4 !== void 0 ? _error$config4 : {},
172
+ _ref6$show404ErrorPag = _ref6.show404ErrorPage,
173
+ show404ErrorPage = _ref6$show404ErrorPag === void 0 ? true : _ref6$show404ErrorPag,
174
+ _ref6$show403ErrorPag = _ref6.show403ErrorPage,
175
+ show403ErrorPage = _ref6$show403ErrorPag === void 0 ? true : _ref6$show403ErrorPag;
168
176
  var status = (_error$response4 = error.response) === null || _error$response4 === void 0 ? void 0 : _error$response4.status;
169
177
  if (status === 404 && show404ErrorPage || status === 403 && show403ErrorPage) {
170
178
  var _error$request;
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["axios","i18next","keysToCamelCase","matches","serializeKeysToSnakeCase","Toastr","evolve","omit","useErrorDisplayStore","resetAuthTokens","setParamsSerializer","MAXIMUM_OFFLINE_DURATION","HEADERS_KEYS","shouldNot","skip","_typeof","shouldShowToastr","response","notice","noticeCode","setAuthHeaders","_document$querySelect","_axios$defaults$heade","defaults","headers","_defineProperty","accept","contentType","xCsrfToken","document","querySelector","getAttribute","createPipe","functions","data","reduce","acc","fn","transformResponseKeysToCamelCase","_response$config$tran","config","transformResponseCase","transformErrorKeysToCamelCase","error","_error$config","_error$response","_ref","_ref$transformRespons","showSuccessToastr","_response$config$show","showToastr","showThumbsUpToastr","success","icon","className","pullDataFromResponse","_response$config$incl","includeMetadataInResponse","buildSuccessResponseHandler","interceptors","transformCase","push","handleUnauthorizedErrorResponse","_error$response2","_error$config2","status","_ref2","_ref2$redirectOnError","redirectOnError","setTimeout","redirectTo","window","location","pathname","concat","encodeURIComponent","href","isUserOffline","navigator","onLine","handleNetworkError","_ref3","_asyncToGenerator","_regeneratorRuntime","mark","_callee","errorMessage","wrap","_callee$","_context","prev","next","t","Promise","resolve","abrupt","stop","_x","apply","arguments","showErrorToastr","_error$config3","_error$response3","_ref4","_ref4$showToastr","message","includes","isCancel","getUrlPathName","url","URL","_unused","handle404ErrorResponse","_error$config4","_error$response4","_ref5","_ref5$show404ErrorPag","show404ErrorPage","_ref5$show403ErrorPag","show403ErrorPage","_error$request","fullUrl","request","responseURL","setState","showErrorPage","statusCode","failedApiUrl","failedApiPath","buildErrorResponseHandler","logoutOn401","reject","bind","cleanupCredentialsForCrossOrigin","hostname","transformDataToSnakeCase","_request$transformReq","transformRequestCase","params","addRequestInterceptors","cleanCredentialsForCrossOrigin","use","addResponseInterceptors","registerIntercepts","initializeAxios","baseURL","authHeaders","paramsSerializer"],"sources":["../../../src/initializers/axios/index.js"],"sourcesContent":["import axios from \"axios\";\nimport i18next from \"i18next\";\nimport { keysToCamelCase, matches, serializeKeysToSnakeCase } from \"neetocist\";\nimport { Toastr } from \"neetoui\";\nimport { evolve, omit } from \"ramda\";\nimport { useErrorDisplayStore } from \"react-utils/useDisplayErrorPage\";\nimport { resetAuthTokens } from \"utils/axios\";\n\nimport setParamsSerializer from \"./paramsSerializer\";\n\nimport { MAXIMUM_OFFLINE_DURATION, HEADERS_KEYS } from \"../constants\";\n\nconst shouldNot = skip => typeof skip === \"object\" || !skip;\n\nconst shouldShowToastr = response =>\n typeof response === \"string\" ||\n (typeof response === \"object\" && (response?.notice || response?.noticeCode));\n\nconst setAuthHeaders = () => {\n // @ts-ignore\n axios.defaults.headers = {\n [HEADERS_KEYS.accept]: \"application/json\",\n [HEADERS_KEYS.contentType]: \"application/json\",\n [HEADERS_KEYS.xCsrfToken]: document\n .querySelector('[name=\"csrf-token\"]')\n ?.getAttribute(\"content\"),\n };\n};\n\n// pipe function from ramda doesn't accept array of functions.\n// We can't use spread operator too. So this is a workaround.\nconst createPipe = functions => data =>\n functions.reduce((acc, fn) => fn(acc), data);\n\nconst transformResponseKeysToCamelCase = response => {\n const { transformResponseCase = true } = response.config;\n\n if (response.data && transformResponseCase) {\n response.data = keysToCamelCase(response.data);\n }\n\n return response;\n};\n\nconst transformErrorKeysToCamelCase = error => {\n const { transformResponseCase = true } = error.config ?? {};\n\n if (error.response?.data && transformResponseCase) {\n error.response.data = keysToCamelCase(error.response.data);\n }\n\n return error;\n};\n\nconst showSuccessToastr = response => {\n const { showToastr = true } = response.config;\n if (!showToastr) return response;\n\n if (matches({ showThumbsUpToastr: true }, response.data)) {\n // @ts-ignore\n Toastr.success(\"\", { icon: \"👍\", className: \"w-20\" });\n } else if (matches({ noticeCode: \"thumbs_up\" }, response.data)) {\n // @ts-ignore\n Toastr.success(\"\", { icon: \"👍\", className: \"w-20\" });\n } else if (shouldShowToastr(response.data)) {\n Toastr.success(response.data);\n }\n\n return response;\n};\n\nconst pullDataFromResponse = response => {\n const { includeMetadataInResponse = false } = response.config;\n\n return includeMetadataInResponse ? response : response.data;\n};\n\nconst buildSuccessResponseHandler = skip => {\n const interceptors = [];\n if (!skip?.transformCase) interceptors.push(transformResponseKeysToCamelCase);\n\n if (!skip?.showToastr) interceptors.push(showSuccessToastr);\n\n if (!skip?.pullDataFromResponse) interceptors.push(pullDataFromResponse);\n\n return createPipe(interceptors);\n};\n\nconst handleUnauthorizedErrorResponse = error => {\n if (error.response?.status !== 401) return error;\n\n resetAuthTokens();\n\n const { redirectOnError = true } = error.config ?? {};\n if (redirectOnError) {\n setTimeout(() => {\n const redirectTo =\n window.location.pathname === \"/login\"\n ? \"/login\"\n : `/login?redirect_uri=${encodeURIComponent(window.location.href)}`;\n\n // eslint-disable-next-line xss/no-location-href-assign\n window.location.href = redirectTo;\n }, 300);\n }\n\n return error;\n};\n\nconst isUserOffline = () => !window.navigator.onLine;\n\nconst handleNetworkError = async error => {\n const errorMessage = i18next.t(\"neetoCommons.toastr.error.networkError\");\n if (isUserOffline()) {\n await new Promise(resolve => setTimeout(resolve, MAXIMUM_OFFLINE_DURATION));\n\n if (isUserOffline()) Toastr.error(errorMessage);\n\n return error;\n }\n Toastr.error(errorMessage);\n\n return error;\n};\n\nconst showErrorToastr = error => {\n const { showToastr = true } = error.config ?? {};\n if (!showToastr) return error;\n\n if (error.message === \"Network Error\") return handleNetworkError(error);\n\n if (![403, 404].includes(error.response?.status) && !axios.isCancel(error)) {\n // we already display a page in case of 403 & 404 and we don't want to show a toastr for cancelled requests.\n Toastr.error(error);\n }\n\n return error;\n};\n\nconst getUrlPathName = url => {\n try {\n return new URL(url).pathname;\n } catch {\n return url;\n }\n};\n\nconst handle404ErrorResponse = error => {\n const { show404ErrorPage = true, show403ErrorPage = true } =\n error.config ?? {};\n\n const status = error.response?.status;\n if (\n (status === 404 && show404ErrorPage) ||\n (status === 403 && show403ErrorPage)\n ) {\n const fullUrl = error.request?.responseURL || error.config.url;\n useErrorDisplayStore.setState({\n showErrorPage: true,\n statusCode: status,\n failedApiUrl: fullUrl,\n failedApiPath: getUrlPathName(fullUrl),\n });\n }\n\n return error;\n};\n\nconst buildErrorResponseHandler = skip => {\n const interceptors = [];\n if (!skip?.transformCase) interceptors.push(transformErrorKeysToCamelCase);\n\n if (!skip?.show404ErrorPage) interceptors.push(handle404ErrorResponse);\n\n if (!skip?.logoutOn401) interceptors.push(handleUnauthorizedErrorResponse);\n\n if (!skip?.showToastr) interceptors.push(showErrorToastr);\n\n interceptors.push(Promise.reject.bind(Promise));\n\n return createPipe(interceptors);\n};\n\nconst cleanupCredentialsForCrossOrigin = request => {\n if (!request.url.includes(\"://\")) return request;\n\n if (request.url.includes(window.location.hostname)) return request;\n\n return evolve({ headers: omit([HEADERS_KEYS.xCsrfToken]) })(request);\n};\n\nconst transformDataToSnakeCase = request => {\n const { transformRequestCase = true } = request;\n\n if (!transformRequestCase) return request;\n\n return evolve(\n { data: serializeKeysToSnakeCase, params: serializeKeysToSnakeCase },\n request\n );\n};\n\nconst addRequestInterceptors = skip => {\n if (!skip?.cleanCredentialsForCrossOrigin) {\n axios.interceptors.request.use(cleanupCredentialsForCrossOrigin);\n }\n\n if (!skip?.transformCase) {\n axios.interceptors.request.use(transformDataToSnakeCase);\n }\n};\n\nconst addResponseInterceptors = skip => {\n axios.interceptors.response.use(\n buildSuccessResponseHandler(skip),\n buildErrorResponseHandler(skip)\n );\n};\n\nconst registerIntercepts = skip => {\n if (shouldNot(skip?.request)) addRequestInterceptors(skip?.request);\n\n if (shouldNot(skip?.response)) addResponseInterceptors(skip?.response);\n};\n\nexport default function initializeAxios(skip) {\n if (!skip?.baseURL) axios.defaults.baseURL = \"/\";\n\n if (!skip?.authHeaders) setAuthHeaders();\n\n if (!skip?.paramsSerializer) setParamsSerializer();\n\n if (shouldNot(skip?.interceptors)) registerIntercepts(skip?.interceptors);\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","names":["axios","i18next","keysToCamelCase","matches","serializeKeysToSnakeCase","Toastr","evolve","omit","useErrorDisplayStore","resetAuthTokens","setParamsSerializer","MAXIMUM_OFFLINE_DURATION","HEADERS_KEYS","shouldNot","skip","_typeof","shouldShowToastr","response","notice","noticeCode","setAuthHeaders","_document$querySelect","_axios$defaults$heade","defaults","headers","_defineProperty","accept","contentType","xCsrfToken","document","querySelector","getAttribute","createPipe","functions","data","reduce","acc","fn","transformResponseKeysToCamelCase","_response$config$tran","config","transformResponseCase","transformErrorKeysToCamelCase","error","_error$config","_error$response","_ref","_ref$transformRespons","showSuccessToastr","_response$config$show","showToastr","showThumbsUpToastr","success","icon","className","pullDataFromResponse","_response$config$incl","includeMetadataInResponse","buildSuccessResponseHandler","interceptors","transformCase","push","handleUnauthorizedErrorResponse","_error$response2","_error$config2","status","_ref2","_ref2$redirectOnError","redirectOnError","setTimeout","redirectTo","window","location","pathname","concat","encodeURIComponent","href","isUserOffline","navigator","onLine","handleNetworkError","_ref3","_asyncToGenerator","_regeneratorRuntime","mark","_callee","errorMessage","wrap","_callee$","_context","prev","next","t","Promise","resolve","abrupt","stop","_x","apply","arguments","showErrorToastr","_error$config3","_error$response3","_ref4","_ref4$showToastr","_ref5","message","includes","isCancel","globalProps","railsEnv","getUrlPathName","url","URL","_unused","handle404ErrorResponse","_error$config4","_error$response4","_ref6","_ref6$show404ErrorPag","show404ErrorPage","_ref6$show403ErrorPag","show403ErrorPage","_error$request","fullUrl","request","responseURL","setState","showErrorPage","statusCode","failedApiUrl","failedApiPath","buildErrorResponseHandler","logoutOn401","reject","bind","cleanupCredentialsForCrossOrigin","hostname","transformDataToSnakeCase","_request$transformReq","transformRequestCase","params","addRequestInterceptors","cleanCredentialsForCrossOrigin","use","addResponseInterceptors","registerIntercepts","initializeAxios","baseURL","authHeaders","paramsSerializer"],"sources":["../../../src/initializers/axios/index.js"],"sourcesContent":["import axios from \"axios\";\nimport i18next from \"i18next\";\nimport { keysToCamelCase, matches, serializeKeysToSnakeCase } from \"neetocist\";\nimport { Toastr } from \"neetoui\";\nimport { evolve, omit } from \"ramda\";\nimport { useErrorDisplayStore } from \"react-utils/useDisplayErrorPage\";\nimport { resetAuthTokens } from \"utils/axios\";\n\nimport setParamsSerializer from \"./paramsSerializer\";\n\nimport { MAXIMUM_OFFLINE_DURATION, HEADERS_KEYS } from \"../constants\";\n\nconst shouldNot = skip => typeof skip === \"object\" || !skip;\n\nconst shouldShowToastr = response =>\n typeof response === \"string\" ||\n (typeof response === \"object\" && (response?.notice || response?.noticeCode));\n\nconst setAuthHeaders = () => {\n // @ts-ignore\n axios.defaults.headers = {\n [HEADERS_KEYS.accept]: \"application/json\",\n [HEADERS_KEYS.contentType]: \"application/json\",\n [HEADERS_KEYS.xCsrfToken]: document\n .querySelector('[name=\"csrf-token\"]')\n ?.getAttribute(\"content\"),\n };\n};\n\n// pipe function from ramda doesn't accept array of functions.\n// We can't use spread operator too. So this is a workaround.\nconst createPipe = functions => data =>\n functions.reduce((acc, fn) => fn(acc), data);\n\nconst transformResponseKeysToCamelCase = response => {\n const { transformResponseCase = true } = response.config;\n\n if (response.data && transformResponseCase) {\n response.data = keysToCamelCase(response.data);\n }\n\n return response;\n};\n\nconst transformErrorKeysToCamelCase = error => {\n const { transformResponseCase = true } = error.config ?? {};\n\n if (error.response?.data && transformResponseCase) {\n error.response.data = keysToCamelCase(error.response.data);\n }\n\n return error;\n};\n\nconst showSuccessToastr = response => {\n const { showToastr = true } = response.config;\n if (!showToastr) return response;\n\n if (matches({ showThumbsUpToastr: true }, response.data)) {\n // @ts-ignore\n Toastr.success(\"\", { icon: \"👍\", className: \"w-20\" });\n } else if (matches({ noticeCode: \"thumbs_up\" }, response.data)) {\n // @ts-ignore\n Toastr.success(\"\", { icon: \"👍\", className: \"w-20\" });\n } else if (shouldShowToastr(response.data)) {\n Toastr.success(response.data);\n }\n\n return response;\n};\n\nconst pullDataFromResponse = response => {\n const { includeMetadataInResponse = false } = response.config;\n\n return includeMetadataInResponse ? response : response.data;\n};\n\nconst buildSuccessResponseHandler = skip => {\n const interceptors = [];\n if (!skip?.transformCase) interceptors.push(transformResponseKeysToCamelCase);\n\n if (!skip?.showToastr) interceptors.push(showSuccessToastr);\n\n if (!skip?.pullDataFromResponse) interceptors.push(pullDataFromResponse);\n\n return createPipe(interceptors);\n};\n\nconst handleUnauthorizedErrorResponse = error => {\n if (error.response?.status !== 401) return error;\n\n resetAuthTokens();\n\n const { redirectOnError = true } = error.config ?? {};\n if (redirectOnError) {\n setTimeout(() => {\n const redirectTo =\n window.location.pathname === \"/login\"\n ? \"/login\"\n : `/login?redirect_uri=${encodeURIComponent(window.location.href)}`;\n\n // eslint-disable-next-line xss/no-location-href-assign\n window.location.href = redirectTo;\n }, 300);\n }\n\n return error;\n};\n\nconst isUserOffline = () => !window.navigator.onLine;\n\nconst handleNetworkError = async error => {\n const errorMessage = i18next.t(\"neetoCommons.toastr.error.networkError\");\n if (isUserOffline()) {\n await new Promise(resolve => setTimeout(resolve, MAXIMUM_OFFLINE_DURATION));\n\n if (isUserOffline()) Toastr.error(errorMessage);\n\n return error;\n }\n Toastr.error(errorMessage);\n\n return error;\n};\n\nconst showErrorToastr = error => {\n const { showToastr = true } = error.config ?? {};\n if (!showToastr) return error;\n\n const { status } = error.response ?? {};\n\n if (error.message === \"Network Error\") return handleNetworkError(error);\n\n if (![403, 404, 520].includes(status) && !axios.isCancel(error)) {\n // we already display a page in case of 403 & 404 and we don't want to show a toastr for cancelled requests.\n // We handle cloudflare error differently for production and other environments.\n Toastr.error(error);\n }\n\n if (status === 520) {\n if (globalProps.railsEnv === \"production\") {\n Toastr.error(i18next.t(\"generic.error\"));\n } else Toastr.error(error);\n }\n\n return error;\n};\n\nconst getUrlPathName = url => {\n try {\n return new URL(url).pathname;\n } catch {\n return url;\n }\n};\n\nconst handle404ErrorResponse = error => {\n const { show404ErrorPage = true, show403ErrorPage = true } =\n error.config ?? {};\n\n const status = error.response?.status;\n if (\n (status === 404 && show404ErrorPage) ||\n (status === 403 && show403ErrorPage)\n ) {\n const fullUrl = error.request?.responseURL || error.config.url;\n useErrorDisplayStore.setState({\n showErrorPage: true,\n statusCode: status,\n failedApiUrl: fullUrl,\n failedApiPath: getUrlPathName(fullUrl),\n });\n }\n\n return error;\n};\n\nconst buildErrorResponseHandler = skip => {\n const interceptors = [];\n if (!skip?.transformCase) interceptors.push(transformErrorKeysToCamelCase);\n\n if (!skip?.show404ErrorPage) interceptors.push(handle404ErrorResponse);\n\n if (!skip?.logoutOn401) interceptors.push(handleUnauthorizedErrorResponse);\n\n if (!skip?.showToastr) interceptors.push(showErrorToastr);\n\n interceptors.push(Promise.reject.bind(Promise));\n\n return createPipe(interceptors);\n};\n\nconst cleanupCredentialsForCrossOrigin = request => {\n if (!request.url.includes(\"://\")) return request;\n\n if (request.url.includes(window.location.hostname)) return request;\n\n return evolve({ headers: omit([HEADERS_KEYS.xCsrfToken]) })(request);\n};\n\nconst transformDataToSnakeCase = request => {\n const { transformRequestCase = true } = request;\n\n if (!transformRequestCase) return request;\n\n return evolve(\n { data: serializeKeysToSnakeCase, params: serializeKeysToSnakeCase },\n request\n );\n};\n\nconst addRequestInterceptors = skip => {\n if (!skip?.cleanCredentialsForCrossOrigin) {\n axios.interceptors.request.use(cleanupCredentialsForCrossOrigin);\n }\n\n if (!skip?.transformCase) {\n axios.interceptors.request.use(transformDataToSnakeCase);\n }\n};\n\nconst addResponseInterceptors = skip => {\n axios.interceptors.response.use(\n buildSuccessResponseHandler(skip),\n buildErrorResponseHandler(skip)\n );\n};\n\nconst registerIntercepts = skip => {\n if (shouldNot(skip?.request)) addRequestInterceptors(skip?.request);\n\n if (shouldNot(skip?.response)) addResponseInterceptors(skip?.response);\n};\n\nexport default function initializeAxios(skip) {\n if (!skip?.baseURL) axios.defaults.baseURL = \"/\";\n\n if (!skip?.authHeaders) setAuthHeaders();\n\n if (!skip?.paramsSerializer) setParamsSerializer();\n\n if (shouldNot(skip?.interceptors)) registerIntercepts(skip?.interceptors);\n}\n"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bigbinary/neeto-commons-frontend",
3
- "version": "3.2.0",
3
+ "version": "3.2.2",
4
4
  "description": "A package encapsulating common code across neeto projects including initializers, utility functions, common components and hooks and so on.",
5
5
  "repository": "git@github.com:bigbinary/neeto-commons-frontend.git",
6
6
  "author": "Amaljith K <amaljith.k@bigbinary.com>",
@@ -1,6 +1,13 @@
1
1
  import { curry } from "ramda";
2
2
  export var handleMetaClick = curry(function (history, params, event) {
3
- return isMetaKeyPressed(event) ? window.open(params.pathname || params, "_blank") : history.push(params);
3
+ var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};
4
+ if (isMetaKeyPressed(event)) {
5
+ return window.open(params.pathname || params, "_blank");
6
+ }
7
+ var _options$isHistoryRep = options.isHistoryReplace,
8
+ isHistoryReplace = _options$isHistoryRep === void 0 ? false : _options$isHistoryRep;
9
+ var historyMethod = isHistoryReplace ? history.replace : history.push;
10
+ return historyMethod(params);
4
11
  });
5
12
  export var isMetaKeyPressed = function isMetaKeyPressed(event) {
6
13
  return !!(event !== null && event !== void 0 && event.ctrlKey || event !== null && event !== void 0 && event.metaKey);
@@ -1 +1 @@
1
- {"version":3,"file":"metaClick.js","names":["curry","handleMetaClick","history","params","event","isMetaKeyPressed","window","open","pathname","push","ctrlKey","metaKey"],"sources":["../../../src/react-utils/metaClick/metaClick.js"],"sourcesContent":["import { curry } from \"ramda\";\n\nexport const handleMetaClick = curry((history, params, event) =>\n isMetaKeyPressed(event)\n ? window.open(params.pathname || params, \"_blank\")\n : history.push(params)\n);\n\nexport const isMetaKeyPressed = event => !!(event?.ctrlKey || event?.metaKey);\n"],"mappings":"AAAA,SAASA,KAAK,QAAQ,OAAO;AAE7B,OAAO,IAAMC,eAAe,GAAGD,KAAK,CAAC,UAACE,OAAO,EAAEC,MAAM,EAAEC,KAAK;EAAA,OAC1DC,gBAAgB,CAACD,KAAK,CAAC,GACnBE,MAAM,CAACC,IAAI,CAACJ,MAAM,CAACK,QAAQ,IAAIL,MAAM,EAAE,QAAQ,CAAC,GAChDD,OAAO,CAACO,IAAI,CAACN,MAAM,CAAC;AAAA,EACzB;AAED,OAAO,IAAME,gBAAgB,GAAG,SAAnBA,gBAAgBA,CAAGD,KAAK;EAAA,OAAI,CAAC,EAAEA,KAAK,aAALA,KAAK,eAALA,KAAK,CAAEM,OAAO,IAAIN,KAAK,aAALA,KAAK,eAALA,KAAK,CAAEO,OAAO,CAAC;AAAA"}
1
+ {"version":3,"file":"metaClick.js","names":["curry","handleMetaClick","history","params","event","options","arguments","length","undefined","isMetaKeyPressed","window","open","pathname","_options$isHistoryRep","isHistoryReplace","historyMethod","replace","push","ctrlKey","metaKey"],"sources":["../../../src/react-utils/metaClick/metaClick.js"],"sourcesContent":["import { curry } from \"ramda\";\n\nexport const handleMetaClick = curry((history, params, event, options = {}) => {\n if (isMetaKeyPressed(event)) {\n return window.open(params.pathname || params, \"_blank\");\n }\n\n const { isHistoryReplace = false } = options;\n const historyMethod = isHistoryReplace ? history.replace : history.push;\n\n return historyMethod(params);\n});\n\nexport const isMetaKeyPressed = event => !!(event?.ctrlKey || event?.metaKey);\n"],"mappings":"AAAA,SAASA,KAAK,QAAQ,OAAO;AAE7B,OAAO,IAAMC,eAAe,GAAGD,KAAK,CAAC,UAACE,OAAO,EAAEC,MAAM,EAAEC,KAAK,EAAmB;EAAA,IAAjBC,OAAO,GAAAC,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,CAAC,CAAC;EACxE,IAAIG,gBAAgB,CAACL,KAAK,CAAC,EAAE;IAC3B,OAAOM,MAAM,CAACC,IAAI,CAACR,MAAM,CAACS,QAAQ,IAAIT,MAAM,EAAE,QAAQ,CAAC;EACzD;EAEA,IAAAU,qBAAA,GAAqCR,OAAO,CAApCS,gBAAgB;IAAhBA,gBAAgB,GAAAD,qBAAA,cAAG,KAAK,GAAAA,qBAAA;EAChC,IAAME,aAAa,GAAGD,gBAAgB,GAAGZ,OAAO,CAACc,OAAO,GAAGd,OAAO,CAACe,IAAI;EAEvE,OAAOF,aAAa,CAACZ,MAAM,CAAC;AAC9B,CAAC,CAAC;AAEF,OAAO,IAAMM,gBAAgB,GAAG,SAAnBA,gBAAgBA,CAAGL,KAAK;EAAA,OAAI,CAAC,EAAEA,KAAK,aAALA,KAAK,eAALA,KAAK,CAAEc,OAAO,IAAId,KAAK,aAALA,KAAK,eAALA,KAAK,CAAEe,OAAO,CAAC;AAAA"}
package/react-utils.d.ts CHANGED
@@ -777,6 +777,57 @@ export async function registerBrowserNotifications(): Promise<void>;
777
777
  *
778
778
  */
779
779
  export async function destroyBrowserSubscription(): Promise<void>;
780
+ type handleMetaClickOptions = {
781
+ isHistoryReplace?: boolean;
782
+ };
783
+ /**
784
+ *
785
+ * The handleMetaClick function can be used to handle onClick actions that
786
+ *
787
+ * redirects to a URL. It opens up the URL in a new tab if ctrl/cmd + click event
788
+ *
789
+ * is received. Otherwise, simply redirects to the provided URL in the same tab.
790
+ *
791
+ * URL can be passed as string or a history location object can be passed instead.
792
+ *
793
+ * Let's say you have a navigation menu with several links, and you want to allow
794
+ *
795
+ * users to open these links in a new tab if they hold down the Ctrl (or Cmd on
796
+ *
797
+ * macOS) key while clicking, and if they click without holding down the Ctrl key,
798
+ *
799
+ * the link should open in the same tab. You can use handleMetaClick to achieve
800
+ *
801
+ * this behavior.
802
+ *
803
+ * @example
804
+ *
805
+ * const NavigationMenu = () => {
806
+ * const history = useHistory();
807
+ *
808
+ * const handleLinkClick = (url, event) => {
809
+ * // Opens url in a new tab if metaKey/CtrlKey is pressed.
810
+ * // Otherwise simply redirects to url.
811
+ * handleMetaClick(history, url, event);
812
+ * };
813
+ *
814
+ * return (
815
+ * <div>
816
+ * <a href="/home" onClick={e => handleLinkClick("/home", e)}>
817
+ * Home
818
+ * </a>
819
+ * <a href="/dashboard" onClick={e => handleLinkClick("/dashboard", e)}>
820
+ * Dashboard
821
+ * </a>
822
+ * <a href="/profile" onClick={e => handleLinkClick("/profile", e)}>
823
+ * Profile
824
+ * </a>
825
+ * </div>
826
+ * );
827
+ * };
828
+ * @endexample
829
+ */
830
+ export function handleMetaClick(history: History, params: string | object, event: React.MouseEvent<HTMLElement, MouseEvent>, options?: handleMetaClickOptions): void;
780
831
  /**
781
832
  *
782
833
  * The handleMetaClick function can be used to handle onClick actions that
@@ -824,7 +875,7 @@ export async function destroyBrowserSubscription(): Promise<void>;
824
875
  * };
825
876
  * @endexample
826
877
  */
827
- export function handleMetaClick(history: History, params: string | object, event: React.MouseEvent<HTMLElement, MouseEvent>): void;
878
+ export function handleMetaClick(history: History, params: string | object, event: React.MouseEvent<HTMLElement, MouseEvent>): (options?: handleMetaClickOptions) => void;
828
879
  /**
829
880
  *
830
881
  * The handleMetaClick function can be used to handle onClick actions that
@@ -872,7 +923,7 @@ export function handleMetaClick(history: History, params: string | object, event
872
923
  * };
873
924
  * @endexample
874
925
  */
875
- export function handleMetaClick(history: History, params: string | object): (event: React.MouseEvent<HTMLElement, MouseEvent>) => void;
926
+ export function handleMetaClick(history: History, params: string | object): (event: React.MouseEvent<HTMLElement, MouseEvent>, options?: handleMetaClickOptions) => void;
876
927
  /**
877
928
  *
878
929
  * The handleMetaClick function can be used to handle onClick actions that
@@ -920,7 +971,7 @@ export function handleMetaClick(history: History, params: string | object): (eve
920
971
  * };
921
972
  * @endexample
922
973
  */
923
- export function handleMetaClick(history: History): (params: string | object, event: React.MouseEvent<HTMLElement, MouseEvent>) => void;
974
+ export function handleMetaClick(history: History): (params: string | object, event: React.MouseEvent<HTMLElement, MouseEvent>, options?: handleMetaClickOptions) => void;
924
975
  /**
925
976
  *
926
977
  * The isMetaKeyPressed function can be used to check whether an onClick event