{"version":3,"file":"static/js/main.289ced0f.js","mappings":"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","sources":["_redux/platform-modules/constants.ts","_redux/platform-modules/actions.ts","_redux/platform-modules/reducer.ts","_redux/platform-modules/selectors.ts","api/requests/load-script/index.ts","api/requests/load-style/index.ts","_redux/platform-modules/sagas/fetch-platform-modules/fetch-platform-modules-worker-saga.ts","_redux/app-state-module/constants.ts","_redux/app-state-module/actions.ts","_redux/app-state-module/reducer.ts","_redux/app-state-module/selectors.ts","api/requests/_utils/extra-verify-not-auth-retry/index.ts","_utils/api-cache/_constants/index.ts","_constants/app-namespace.ts","_constants/browser-list.ts","_constants/user-device-list.ts","_constants/index.ts","_utils/localstorage-worker.ts","_utils/can-redirect-to-landing.ts","_utils/redirect-to-login.ts","_utils/api-cache/clear-user-info.ts","api/endpoints/passport/index.ts","api/requests/logout-napi/index.ts","api/requests/logout-v3/response-schema.ts","api/requests/logout-v3/index.ts","api/requests/logout-v3/make-request-config.ts","_utils/auth-v3/_common/referesh-token-cookie-unavailable.ts","api/requests/downgrade-cookie/make-request-config.ts","api/requests/downgrade-cookie/index.ts","_utils/auth-v3/downgrade-list/get-list-from-storage/index.ts","_utils/auth-v3/downgrade-list/parse-list/index.ts","_utils/init-app-utils/requests-proxy/init-request-proxy-verify/_utils/external-api-path-regex/index.ts","_utils/init-app-utils/requests-proxy/init-request-proxy-verify/_utils/get-external-api-endpoint/index.ts","_utils/auth-v3/downgrade-list/get-sanitized-list/index.ts","_utils/auth-v3/downgrade-list/cleanup-list/index.ts","_utils/auth-v3/logout-via-v3/index.ts","_utils/auth-v3/downgrade-cookies/index.ts","api/requests/_constants/index.ts","_redux/app-state-module/sagas/logout/logout-worker-saga.ts","_utils/get-logout-endpoints.ts","api/endpoints/passport/utils/create-logout-endpoint.ts","api/requests/logout/index.ts","_utils/api-cache/configs/menu-cache-config.ts","_utils/get-main-menu-request-config/index.ts","_utils/init-app/_utils/get-cookie.ts","_utils/api-cache/configs/get-fetch-menu-cache-key.ts","_redux/app-state-module/sagas/healthcheck/healtcheck-worker-saga.ts","_components/text/index.tsx","webpack://@wildberries/root/./src/_components/text/index.module.scss?1337","_components/error-page-component/_constants/index.ts","_components/error-page-component/_components/card/index.tsx","webpack://@wildberries/root/./src/_components/error-page-component/_components/card/index.module.scss?d0c8","_components/error-page-component/index.tsx","webpack://@wildberries/root/./src/_components/error-page-component/index.module.scss?9290","_constants/frameworks.ts","_utils/init-app-utils/prune-api-caches/get-formatted-storage-data.ts","_utils/init-app-utils/prune-api-caches/prune-projects-api-caches.ts","_utils/init-app-utils/prune-api-caches/prune-projects-versions.ts","_utils/init-app-utils/init-performance-metrics.ts","_utils/init-app-utils/prune-api-caches/index.ts","_components/connected-layout/_components/layout-view/_components/route-content/index.tsx","_components/connected-layout/_components/layout-view/index.tsx","_components/connected-layout/index.tsx","_components/connected-layout/_utils/get-is-layout-loaded.ts","_components/root-components/index.tsx","_components/app/index.tsx","_assets/i18next/index.ts","_utils/api-cache/configs/abac-cache-config.ts","_utils/get-abac-request-params/index.ts","_utils/api-cache/configs/user-info-cache-config.ts","_utils/get-abac-permissions-data-features.ts","databus/init-databus-subscriptions.ts","api/requests/login-introspect/index.ts","api/requests/manifest/index.ts","_constants/i18next/app-namespace.ts","_constants/i18next/translates/dictionary.ts","api/requests/personal-data/make-request-config.ts","api/requests/personal-data/index.ts","api/requests/upgrade-cookie/index.ts","api/requests/upgrade-cookie/make-request-config.ts","_utils/auth-v3/async-singleton/index.ts","_utils/auth-v3/validate-token/index.ts","_utils/auth-v3/verify-existing-token/index.ts","api/requests/slide/response-schema.ts","api/requests/slide/index.ts","api/requests/slide/make-request-config.ts","api/requests/slide-confirm/response-schema.ts","api/requests/slide-confirm/index.ts","api/requests/slide-confirm/make-request-config.ts","_utils/auth-v3/get-new-token/index.ts","_utils/auth-v3/auth-via-v3/index.ts","_utils/process-offline-code.ts","_utils/get-is-not-production-origin.ts","_utils/init-app-utils/fetch-permissions-data.ts","_utils/get-formatted-permissions.ts","_utils/init-app/_utils/format-permissions-and-dispatch.ts","_utils/get-device-user/index.ts","api/requests/transform-site-cookie/utils/extra-verify-upgrade-not-auth-retry/index.ts","_utils/get-browser-info/index.ts","_utils/get-browser-version.ts","api/requests/login/index.ts","api/requests/grant/index.ts","api/requests/login-with-sso/_utils/local-grant-and-central-login/index.ts","api/requests/login-with-sso/index.ts","api/requests/login-with-sso/_utils/central-grant-and-local-login/index.ts","api/requests/transform-site-cookie/index.ts","_utils/init-app/_utils/fetch-external-packages.ts","_utils/init-app/_utils/set-user-info.ts","_utils/init-app/_utils/format-permissions-data-and-dispatch.ts","_utils/init-app/index.ts","serviceWorker.js","_redux/login/actions.ts","_redux/login/sagas/login-worker-saga.ts","_utils/get-navigation-error-message.ts","router/middlewares/set-window-endpoints/index.ts","_utils/init-app-utils/pwa/_utils/detect-pwa.ts","_utils/get-supplier-id-from-cookie.ts","_utils/init-app-utils/analytics-init.ts","_utils/init-app-utils/pwa/prompt/index.ts","_utils/init-app-utils/requests-proxy/init-request-proxy-verify/_utils/check-is-critical-action/index.ts","_utils/init-app-utils/requests-proxy/init-request-proxy-verify/_utils/ get-mfa-state/index.ts","api/requests/mfa-state-request/index.ts","_utils/init-app-utils/requests-proxy/init-request-proxy-verify/_utils/mfa-validate/index.ts","api/requests/mfa-validate/index.ts","_utils/init-app-utils/requests-proxy/init-request-proxy-verify/_utils/critical-action/index.ts","_utils/init-app-utils/requests-proxy/init-request-proxy-verify/_utils/critical-action/_utils/get-user-data-critical-action-code/index.ts","_utils/init-app-utils/requests-proxy/init-request-proxy-verify/_utils/confirmation-critical-action/get-device-id-for-crit-action.ts","_utils/init-app-utils/requests-proxy/init-request-proxy-verify/_utils/confirmation-critical-action/index.ts","_utils/init-app-utils/requests-proxy/init-request-proxy-verify/_utils/check-is-external-api-request/index.ts","_utils/init-app-utils/requests-proxy/init-request-proxy-verify/_utils/check-is-current-domain/index.ts","_utils/init-app-utils/requests-proxy/init-request-proxy-verify/login-middleware/_utils/login-api/index.ts","_utils/init-app-utils/requests-proxy/init-request-proxy-verify/login-middleware/_utils/old-way-login/index.ts","_utils/init-app-utils/requests-proxy/init-request-proxy-verify/login-middleware/index.ts","_utils/init-app-utils/requests-proxy/init-request-proxy-verify/login-middleware/_utils/get-is-not-logined.ts","_utils/init-app-utils/requests-proxy/init-request-proxy-verify/login-separate-domain-middleware/_utils/old-way-external-login/index.ts","_utils/init-app-utils/requests-proxy/init-request-proxy-verify/login-separate-domain-middleware/_utils/get-central-grant-token/index.ts","_utils/init-app-utils/requests-proxy/init-request-proxy-verify/login-separate-domain-middleware/_utils/login-external-api/index.ts","_utils/auth-v3/upgrade-external-domain/index.ts","_utils/init-app-utils/requests-proxy/init-request-proxy-verify/login-separate-domain-middleware/index.ts","_utils/auth-v3/downgrade-list/save-external-api-path/index.ts","_utils/init-app-utils/requests-proxy/init-request-proxy-verify/login-separate-domain-middleware/_utils/get-is-not-logged-in-separate-domain/index.ts","index.tsx","_utils/init-app-utils/requests-proxy/index.ts","_utils/init-app-utils/requests-proxy/init-request-loggers.ts","_utils/init-app-utils/requests-proxy/init-request-proxy-verify/index.ts","_constants/routes.ts","_redux/platform-modules/sagas/fetch-platform-modules/fetch-platform-modules-watcher-saga.ts","_redux/app-state-module/sagas/logout/logout-watcher-saga.ts","_utils/navigate-loggers.ts","_redux/login/sagas/login-watcher-saga.ts","_redux/app-state-module/sagas/healthcheck/healtcheck-watcher-saga.ts","api/requests/fetch-runtime-config/index.ts","router/middlewares/set-window-endpoints/_utils/get-module-path.ts","api/requests/i18next/index.ts","router/plugins/login.ts","router/plugins/transition.ts","router/plugins/sw-client-update.ts","_utils/init-app-utils/pwa/analytics/index.ts","_constants/analytics.ts","_constants/i18next/i18next-init.ts","_utils/auth-v3/get-decode-jwt-token/index.ts","_utils/init-app/_utils/process-introspect-response/index.ts","../webpack/bootstrap","../webpack/runtime/amd options","../webpack/runtime/chunk loaded","../webpack/runtime/compat get default export","../webpack/runtime/create fake namespace object","../webpack/runtime/define property getters","../webpack/runtime/global","../webpack/runtime/harmony module decorator","../webpack/runtime/hasOwnProperty shorthand","../webpack/runtime/make namespace object","../webpack/runtime/node module decorator","../webpack/runtime/jsonp chunk loading","../webpack/startup"],"sourcesContent":["export const reducerPlatformModulesName = '@platform/platform-modules';\n","import { Action, BaseAction, ModulesListType } from './types';\n\nexport const FETCH_PLATFORM_MODULES_SAGA =\n '@platform-modules/FETCH_PLATFORM_MODULES_SAGA';\nexport const fetchPlatformModulesActionSaga: BaseAction = () => ({\n type: FETCH_PLATFORM_MODULES_SAGA,\n});\n\nexport const SET_PLATFORM_MODULES_DATA =\n '@platform-modules/SET_PLATFORM_MODULES_DATA';\nexport const setPlatformModulesAction: Action<{\n modules: ModulesListType;\n}> = (payload) => ({\n type: SET_PLATFORM_MODULES_DATA,\n payload,\n});\n\nexport const SET_LOADING_START = '@platform-modules/SET_LOADING_START';\nexport const setLoadingStartAction: BaseAction = () => ({\n type: SET_LOADING_START,\n});\n\nexport const SET_LOADING_STOP = '@platform-modules/SET_LOADING_STOP';\nexport const setLoadingStopAction: BaseAction = () => ({\n type: SET_LOADING_STOP,\n});\n","import {\n SET_PLATFORM_MODULES_DATA,\n SET_LOADING_START,\n SET_LOADING_STOP,\n} from './actions';\nimport { ActionType, PlatformModulesState } from './types';\n\nexport const initialState: PlatformModulesState = {\n loading: false,\n modules: [],\n};\n\nexport const reducerPlatformModules = (\n state: PlatformModulesState = initialState,\n { type, payload }: ActionType,\n) => {\n switch (type) {\n case SET_PLATFORM_MODULES_DATA:\n return {\n ...state,\n modules: payload.modules,\n };\n\n case SET_LOADING_START:\n return {\n ...state,\n loading: true,\n };\n\n case SET_LOADING_STOP:\n return {\n ...state,\n loading: false,\n };\n\n default:\n return state;\n }\n};\n","import { createSelector } from 'reselect';\nimport { reducerPlatformModulesName } from './constants';\nimport {\n PlatformModulesState,\n StatePartPlatformModules,\n ModulesListType,\n} from './types';\nimport { initialState } from './reducer';\n\nconst productsManagerStorageSelector = (store: StatePartPlatformModules) =>\n store[reducerPlatformModulesName] || initialState;\n\nexport const getPlatformModulesData = createSelector(\n productsManagerStorageSelector,\n ({ modules }: PlatformModulesState): ModulesListType => modules,\n);\n\nexport const getPlatformModulesIsLoading = createSelector(\n productsManagerStorageSelector,\n ({ loading }: PlatformModulesState): boolean => loading,\n);\n","import { IResponse, PureRestRequest } from '@portals/fetch-api';\nimport { requireModule } from '@wildberries/service-modules-load';\n\nconst cachedScripts = new Map();\n\nexport const loadScript = (\n name: string,\n staticURL: string,\n jsUrl: string,\n fromCDN?: boolean,\n cdnData: {\n APP_STATIC_NAMESPACE?: string;\n WB_STATIC_URL?: string;\n APP_VERSION?: string;\n } = {},\n appVersion?: string,\n isLocalhost?: boolean,\n externalPackages?: Record,\n) => {\n const { APP_STATIC_NAMESPACE, WB_STATIC_URL, APP_VERSION } = cdnData;\n\n // check if localhost - try dev prefix\n const cdnPrefix = isLocalhost ? 'dev' : appVersion;\n\n // get cdn project path from jsUrl\n const cdnUrl =\n fromCDN && appVersion\n ? `${WB_STATIC_URL}/${APP_STATIC_NAMESPACE}/${APP_VERSION}-${cdnPrefix}/`\n : jsUrl;\n\n // get endpoint for index.js file\n const endpoint = fromCDN ? jsUrl : `${staticURL}/${jsUrl}`;\n\n // get path for replacement in the code\n const replaceStreamPublicPath = fromCDN ? cdnUrl : `${staticURL}/umd/`;\n\n let promise;\n\n if (cachedScripts.has(endpoint)) {\n promise = cachedScripts.get(endpoint);\n } else {\n promise = new Promise(async (resolve, reject) => {\n try {\n const { data, error, errorText } =\n (await new PureRestRequest().getRequest({\n mode: 'cors',\n parseType: 'text',\n endpoint,\n retry: 2,\n extraValidationCallback: () => true,\n cache: fromCDN ? 'force-cache' : 'default',\n })) as IResponse & { data: string };\n\n if (error) {\n throw new Error(errorText);\n }\n\n // pathToReplaceRuntimeEnvs - publicPath for window env with \"runtime-config.json\"\n // replaceStreamPublicPath - publicPath for webpack react apps\n // publicPathForReplace - old publicPath for webpack react apps\n // AND for other tools that use relative path to service\n const source = data\n .replace(\n /pathToReplaceRuntimeEnvs/g,\n `/nsf/ui/${APP_STATIC_NAMESPACE}/umd/`,\n )\n .replace(/replaceStreamPublicPath/g, replaceStreamPublicPath)\n .replace(/publicPathForReplace/g, `${staticURL}/umd/`);\n\n // eslint-disable-next-line no-new-func\n const extensionFn = new Function(\n 'exports',\n 'require',\n 'module',\n source,\n );\n\n const module = {\n exports: {},\n };\n\n extensionFn(\n module.exports,\n requireModule.bind(null, externalPackages || {}),\n module,\n );\n\n resolve(module.exports);\n } catch (error) {\n console.error('error in loadScript', error);\n\n reject(new Error(`\"${name}\" was not created by \"${endpoint}\"`));\n }\n });\n\n cachedScripts.set(endpoint, promise);\n }\n\n return promise\n .then((component: any) => {\n if (component) {\n return component;\n }\n\n throw new Error(`\"${name}\" was not created by \"${endpoint}\"`);\n })\n .catch(console.error);\n};\n","export const loadStyle = (\n name: string,\n staticURL: string,\n cssUrl: string,\n fromCDN?: boolean,\n) => {\n const url = fromCDN ? cssUrl : `${staticURL}/${cssUrl}`;\n\n const element = document.createElement('link');\n\n element.href = url;\n element.rel = 'stylesheet';\n element.type = 'text/css';\n\n const deadline = 100000;\n let timerId: NodeJS.Timeout;\n const freeMemory = () => {\n element.onerror = null;\n element.onload = null;\n clearTimeout(timerId);\n };\n\n const onLoad = () => {\n freeMemory();\n };\n\n const onError = () => {\n freeMemory();\n console.error(`Failed load resource: ${element.href}`);\n };\n timerId = setTimeout(() => {\n freeMemory();\n console.error(\n `Failed load resource: ${element.href}. Exceeded time limit: ${deadline}`,\n );\n }, deadline);\n element.onload = onLoad;\n element.onerror = onError;\n\n if (document.head) {\n document.head.appendChild(element);\n }\n};\n","/* eslint-disable import/no-cycle */\nimport { put } from 'redux-saga/effects';\nimport { Router } from 'router5';\nimport { IAdvancedStore } from '@mihanizm56/redux-core-modules';\nimport { loadModule } from '@wildberries/service-modules-load';\nimport {\n ModulesListType,\n setLoadingStartAction,\n setLoadingStopAction,\n setPlatformModulesAction,\n} from '@/_redux/platform-modules';\nimport { loadScript } from '@/api/requests/load-script';\nimport { loadStyle } from '@/api/requests/load-style';\n\nexport function* fetchPlatformModulesWorkerSaga({\n router,\n store,\n}: {\n router: Router;\n store: IAdvancedStore;\n}) {\n yield put(setLoadingStartAction());\n\n try {\n // eslint-disable-next-line no-underscore-dangle\n const platformModules = window.__PLATFORM_MODULES__;\n const modules: ModulesListType = {};\n\n const { externalPackages } = store.getDependencies();\n\n yield Promise.all(\n platformModules.map(async ({ name, loadRef, role }) => {\n try {\n const loadScriptUrl: string = loadRef.JS_CDN || loadRef.JS;\n const loadCSSUrl: string = loadRef.CSS_CDN || loadRef.CSS || '';\n const scriptFromCDN = Boolean(loadRef.JS_CDN);\n const cssFromCDN = Boolean(loadRef.CSS_CDN);\n\n if (role === 'component') {\n await Promise.allSettled(\n [loadCSSUrl, loadScriptUrl].map(async (item) => {\n if (!item) {\n return;\n }\n if (item.includes('.css')) {\n return loadStyle(name, '', item, cssFromCDN);\n }\n\n const {\n Component,\n registrationSaga,\n registrationReducer,\n registrationActions,\n registrationRouterMiddlewares,\n registrationRouterPlugins,\n } = await loadScript(\n name,\n '',\n item,\n scriptFromCDN,\n {},\n // todo fix params type\n // eslint-disable-next-line no-undefined\n undefined,\n // eslint-disable-next-line no-undefined\n undefined,\n externalPackages,\n );\n\n if (registrationSaga) {\n registrationSaga({ store });\n }\n\n if (registrationReducer) {\n registrationReducer({ store });\n }\n\n if (registrationActions) {\n registrationActions.forEach((registrationAction: any) => {\n registrationAction({\n store,\n router,\n });\n });\n }\n\n if (registrationRouterMiddlewares) {\n registrationRouterMiddlewares.forEach(\n (routerMiddleware: any) =>\n router.useMiddleware(routerMiddleware),\n );\n }\n\n if (registrationRouterPlugins) {\n registrationRouterPlugins.forEach(\n (registrationRouterPlugin: any) =>\n router.usePlugin(registrationRouterPlugin),\n );\n }\n\n modules[name] = Component;\n }),\n );\n } else {\n // если это полноценное приложение как модуль\n // // то и подключаем и парсим его как полноценный модуль\n const { routes } = await loadModule({\n name,\n staticURL: '',\n jsUrl: loadScriptUrl,\n fromCDN: scriptFromCDN,\n cdnData: {\n APP_STATIC_NAMESPACE: loadRef.APP_STATIC_NAMESPACE,\n },\n externalPackages,\n });\n\n const { loadAction } = routes[0] || {};\n\n const { routes: oldRoutes } = router.getDependencies();\n\n router.setDependencies({\n routes: [...oldRoutes, ...routes],\n });\n\n router.add(routes);\n\n if (loadAction) {\n await loadAction();\n }\n }\n } catch (error) {\n console.error(`Load platform module \"${name}\" get an error`, error);\n }\n }),\n );\n\n yield put(setPlatformModulesAction({ modules }));\n } catch (error: any) {\n console.error(\n 'fetchPlatformModulesWatcherSaga get an error',\n error.message,\n );\n } finally {\n yield put(setLoadingStopAction());\n }\n}\n","export const reducerAppStateName = '@platform/app-state';\n","import { Action, BaseAction } from '@mihanizm56/redux-core-modules';\n\nexport const SET_TRANSLATE_LOADING_START =\n '@app-state/SET_TRANSLATE_LOADING_START';\nexport const setTranslateLoadingStartAction: BaseAction = () => ({\n type: SET_TRANSLATE_LOADING_START,\n});\n\nexport const SET_TRANSLATE_LOADING_STOP =\n '@app-state/SET_TRANSLATE_LOADING_STOP';\nexport const setTranslateLoadingStopAction: BaseAction = () => ({\n type: SET_TRANSLATE_LOADING_STOP,\n});\n\nexport const SET_INIT_LOADING_START = '@app-state/SET_INIT_LOADING_START';\nexport const setInitLoadingStartAction: BaseAction = () => ({\n type: SET_INIT_LOADING_START,\n});\n\nexport const SET_INIT_LOADING_STOP = '@app-state/SET_INIT_LOADING_STOP';\nexport const setInitLoadingStopAction: BaseAction = () => ({\n type: SET_INIT_LOADING_STOP,\n});\n\nexport const SET_LOGIN_LOADING_START = '@app-state/SET_LOGIN_LOADING_START';\nexport const setLoginLoadingStartAction: BaseAction = () => ({\n type: SET_LOGIN_LOADING_START,\n});\n\nexport const SET_LOGIN_LOADING_STOP = '@app-state/SET_LOGIN_LOADING_STOP';\nexport const setLoginLoadingStopAction: BaseAction = () => ({\n type: SET_INIT_LOADING_STOP,\n});\n\nexport const LOGOUT = '@app-state/LOGOUT';\nexport const logoutAction: BaseAction = () => ({\n type: LOGOUT,\n});\n\nexport const SET_CORE_REQUESTS_ERROR = '@app-state/SET_CORE_REQUESTS_ERROR';\nexport const setCoreRequestsErrorAction: BaseAction = () => ({\n type: SET_CORE_REQUESTS_ERROR,\n});\n\nexport const RESET_CORE_REQUESTS_ERROR = '@app-state/RESET_CORE_REQUESTS_ERROR';\nexport const resetCoreRequestsErrorAction: BaseAction = () => ({\n type: RESET_CORE_REQUESTS_ERROR,\n});\n\nexport const SET_CORE_REQUESTS_HEALTHCHECK_INTERVAL =\n '@app-state/SET_CORE_REQUESTS_HEALTHCHECK_INTERVAL';\nexport const sethealthCheckCoreRequestsIntervalAction: BaseAction = () => ({\n type: SET_CORE_REQUESTS_HEALTHCHECK_INTERVAL,\n});\nexport const RESET_CORE_REQUESTS_HEALTHCHECK_INTERVAL =\n '@app-state/RESET_CORE_REQUESTS_HEALTHCHECK_INTERVAL';\nexport const resethealthCheckCoreRequestsIntervalAction: BaseAction = () => ({\n type: RESET_CORE_REQUESTS_HEALTHCHECK_INTERVAL,\n});\n\nexport const SET_HEALTHCHECK_ACTION = '@app-state/SET_HEALTHCHECK_ACTION';\nexport const setHealthCheckAction: BaseAction = () => ({\n type: SET_HEALTHCHECK_ACTION,\n});\n\nexport const INCREMENT_HEALTHCHECK_ACTION =\n '@app-state/INCREMENT_HEALTHCHECK_ACTION';\nexport const incrementHealthCheckIntervalAction: BaseAction = () => ({\n type: INCREMENT_HEALTHCHECK_ACTION,\n});\n\nexport const RESET_HEALTHCHECK_ACTION = '@app-state/RESET_HEALTHCHECK_ACTION';\nexport const resetHealthCheckAction: BaseAction = () => ({\n type: RESET_HEALTHCHECK_ACTION,\n});\n\nexport const SET_CORE_REQUESTS_ERROR_CODE =\n '@app-state/SET_CORE_REQUESTS_ERROR_CODE';\nexport const setCoreRequestsErrorCodeAction: Action = (payload) => ({\n type: SET_CORE_REQUESTS_ERROR_CODE,\n payload,\n});\n\nexport const RESET_CORE_REQUESTS_ERROR_CODE =\n '@app-state/RESET_CORE_REQUESTS_ERROR_CODE';\nexport const resetCoreRequestsErrorCodeAction: BaseAction = () => ({\n type: RESET_CORE_REQUESTS_ERROR_CODE,\n});\n\nexport const SET_FIRST_ROUTE_TRANSITION_FINISHED =\n '@app-state/SET_FIRST_ROUTE_TRANSITION_FINISHED';\nexport const setFirstRouteTransitionFinishedAction: BaseAction = () => ({\n type: SET_FIRST_ROUTE_TRANSITION_FINISHED,\n});\n\nexport const SET_LOGOUT_LOADING_START = '@app-state/SET_LOGOUT_LOADING_START';\nexport const setLogoutLoadingStartAction: BaseAction = () => ({\n type: SET_LOGOUT_LOADING_START,\n});\n\nexport const SET_LOGOUT_LOADING_STOP = '@app-state/SET_LOGOUT_LOADING_STOP';\nexport const setLogoutLoadingStopAction: BaseAction = () => ({\n type: SET_LOGOUT_LOADING_STOP,\n});\n","import {\n SET_TRANSLATE_LOADING_START,\n SET_TRANSLATE_LOADING_STOP,\n SET_INIT_LOADING_START,\n SET_INIT_LOADING_STOP,\n SET_LOGIN_LOADING_START,\n SET_LOGIN_LOADING_STOP,\n SET_CORE_REQUESTS_ERROR,\n RESET_CORE_REQUESTS_ERROR,\n INCREMENT_HEALTHCHECK_ACTION,\n SET_CORE_REQUESTS_ERROR_CODE,\n RESET_CORE_REQUESTS_ERROR_CODE,\n SET_FIRST_ROUTE_TRANSITION_FINISHED,\n SET_LOGOUT_LOADING_START,\n SET_LOGOUT_LOADING_STOP,\n} from './actions';\nimport { ActionType, AppState } from './_types';\n\nexport const initialState: AppState = {\n initLoading: false,\n translateIsLoading: false,\n loginLoading: false,\n coreRequestsError: false,\n healthCheckCoreRequestsInterval: 10000,\n coreRequestsErrorCode: '',\n firstRouteTransitionFinished: false,\n logoutLoading: false,\n};\n\nexport const reducerAppState = (\n state: AppState = initialState,\n { type, payload }: ActionType,\n): AppState => {\n switch (type) {\n case SET_INIT_LOADING_START:\n return {\n ...state,\n initLoading: true,\n };\n\n case SET_INIT_LOADING_STOP:\n return {\n ...state,\n initLoading: false,\n };\n\n case SET_TRANSLATE_LOADING_START:\n return {\n ...state,\n translateIsLoading: true,\n };\n\n case SET_LOGIN_LOADING_START:\n return {\n ...state,\n loginLoading: true,\n };\n\n case SET_LOGIN_LOADING_STOP:\n return {\n ...state,\n loginLoading: false,\n };\n\n case SET_TRANSLATE_LOADING_STOP:\n return {\n ...state,\n translateIsLoading: false,\n };\n\n case SET_CORE_REQUESTS_ERROR:\n return {\n ...state,\n coreRequestsError: true,\n };\n\n case SET_CORE_REQUESTS_ERROR_CODE:\n return {\n ...state,\n coreRequestsErrorCode: payload,\n };\n\n case RESET_CORE_REQUESTS_ERROR_CODE:\n return {\n ...state,\n coreRequestsErrorCode: '',\n };\n\n case RESET_CORE_REQUESTS_ERROR:\n return {\n ...state,\n coreRequestsError: false,\n };\n\n case INCREMENT_HEALTHCHECK_ACTION:\n return {\n ...state,\n healthCheckCoreRequestsInterval:\n state.healthCheckCoreRequestsInterval + 10000,\n };\n\n case SET_FIRST_ROUTE_TRANSITION_FINISHED:\n return {\n ...state,\n firstRouteTransitionFinished: true,\n };\n\n case SET_LOGOUT_LOADING_START:\n return {\n ...state,\n logoutLoading: true,\n };\n\n case SET_LOGOUT_LOADING_STOP:\n return {\n ...state,\n logoutLoading: false,\n };\n\n default:\n return state;\n }\n};\n","import { createSelector } from 'reselect';\nimport { reducerAppStateName } from './constants';\nimport { AppState, StatePartAppState } from './_types';\nimport { initialState } from './reducer';\n\nconst productsManagerStorageSelector = (store: StatePartAppState) =>\n store[reducerAppStateName] || initialState;\n\nexport const getTranslationIsLoadingSelector = createSelector(\n productsManagerStorageSelector,\n ({ translateIsLoading }: AppState): boolean => translateIsLoading,\n);\n\nexport const initLoadingSelector = createSelector(\n productsManagerStorageSelector,\n ({ initLoading }: AppState): boolean => initLoading,\n);\n\nexport const loginLoadingSelector = createSelector(\n productsManagerStorageSelector,\n ({ loginLoading }: AppState): boolean => loginLoading,\n);\n\nexport const coreRequestsErrorSelector = createSelector(\n productsManagerStorageSelector,\n ({ coreRequestsError }: AppState): boolean => coreRequestsError,\n);\n\nexport const coreRequestsErrorCodeSelector = createSelector(\n productsManagerStorageSelector,\n ({ coreRequestsErrorCode }: AppState): string => coreRequestsErrorCode,\n);\n\nexport const coreRequestsHealthCheckIntervalSelector = createSelector(\n productsManagerStorageSelector,\n ({ healthCheckCoreRequestsInterval }: AppState): number =>\n healthCheckCoreRequestsInterval,\n);\n\nexport const firstRouteTransitionFinishedSelector = createSelector(\n productsManagerStorageSelector,\n ({ firstRouteTransitionFinished }: AppState): boolean =>\n firstRouteTransitionFinished,\n);\n\nexport const logoutIsLoadingSelector = createSelector(\n productsManagerStorageSelector,\n ({ logoutLoading }: AppState): boolean => logoutLoading,\n);\n","import { ExtraVerifyRetryCallbackType } from '@portals/fetch-api/dist/types';\n\nexport const extraVerifyNotAuthRetry: ExtraVerifyRetryCallbackType = ({\n formattedResponseData: { code, error },\n}) => {\n if (!error) {\n return false;\n }\n\n if (code === 401) {\n return false;\n }\n\n return true;\n};\n","export const appVersion = window.ENVS.VERSION || 'local';\n\nexport const ROOT_CACHE_STORAGE_NAME = `root__${appVersion}__requests-cache`;\nexport const USER_INFO_CACHE_KEY = 'personal_data';\n\nexport const ABAC_PERMISSIONS_DATA_CACHE_KEY =\n 'abac-permissions-data-cache-key';\n","export const appNamespace = 'root';\n","export const BROWSER_LIST: Record = {\n Firefox: 'Mozilla Firefox',\n YaBrowser: 'Yandex Browser',\n OPR: 'Opera',\n Trident: 'Internet Explorer',\n Edge: 'Microsoft Edge',\n Chrome: 'Google Chrome',\n Safari: 'Safari',\n};\n","export const USER_DEVICE_LIST = [\n { device: 'Android', platform: /Android/ },\n { device: 'iPhone', platform: /iPhone/ },\n { device: 'iPad', platform: /iPad/ },\n { device: 'Symbian', platform: /Symbian/ },\n { device: 'Windows Phone', platform: /Windows Phone/ },\n { device: 'Tablet OS', platform: /Tablet OS/ },\n { device: 'Linux', platform: /Linux/ },\n { device: 'Windows', platform: /Windows NT/ },\n { device: 'Macintosh', platform: /Macintosh/ },\n];\n","import { ROOT_CACHE_STORAGE_NAME } from '@/_utils/api-cache/_constants';\n\nexport { appNamespace } from './app-namespace';\nexport { BROWSER_LIST } from './browser-list';\nexport { USER_DEVICE_LIST } from './user-device-list';\n\nexport const DEFAULT_API_CACHE_PARAMS = {\n storageCacheName: ROOT_CACHE_STORAGE_NAME,\n expires: 1000 * 60 * 60 * 24 * 60, // 60 days\n debug: true,\n // onCacheHit: sendApiCacheEventHit({\n // projectName: appNamespace,\n // }),\n // onCacheMiss: sendApiCacheEventMiss({\n // projectName: appNamespace,\n // }),\n disabledCache:\n // process.env.NODE_ENV === 'development' ||\n window.ENVS.DISABLED_API_CACHE === 'true',\n};\n\nexport const SELLER_PORTAL_ACCESS_TOKEN = 'wb-eu-passport-v2.access-token';\n\nexport const CRITICAL_ACTION_CODE = 307;\n\nexport const SELLER_PORTAL_DOWNGRADE_LIST = 'wb-eu-portal.downgrade-list';\n\nexport const LAST_SUCCESSFUL_LOGIN_KEY = 'wb-eu-portal.last_successful_login';\n\nexport const SKIP_LANDING_GET_PARAMETER_NAME = 'skipLanding';\n","export class LocalStorageWorker {\n static setItem = (key: string, value: any) => {\n try {\n if (typeof value === 'string') {\n return localStorage.setItem(key, value);\n }\n\n localStorage.setItem(key, JSON.stringify(value));\n } catch (error) {\n console.error('failed setItem to local storage', error);\n }\n };\n\n static getItem = (key: string) => {\n const storageValue = localStorage.getItem(key);\n\n if (storageValue) {\n try {\n const result = JSON.parse(storageValue);\n\n return result;\n } catch {\n return null;\n }\n }\n\n return storageValue;\n };\n\n static deleteItem = (key: string) => {\n try {\n localStorage.removeItem(key);\n } catch (error) {\n console.error('error in deleteItem', error);\n }\n };\n}\n","import {\n LAST_SUCCESSFUL_LOGIN_KEY,\n SKIP_LANDING_GET_PARAMETER_NAME,\n} from '@/_constants';\nimport { LocalStorageWorker } from './localstorage-worker';\n\nexport const canRedirectoToLanding = () => {\n const HAS_SUCCESSFUL_LOGIN = !!LocalStorageWorker.getItem(\n LAST_SUCCESSFUL_LOGIN_KEY,\n );\n\n const params = new URLSearchParams(document.location.search);\n const SKIP_LANDING = params.get(SKIP_LANDING_GET_PARAMETER_NAME) !== null;\n\n return (\n window.ENVS.ENABLE_PORTAL_LANDING && !HAS_SUCCESSFUL_LOGIN && !SKIP_LANDING\n );\n};\n","import { setLocale } from '@portals/i18next-utils';\nimport { canRedirectoToLanding } from './can-redirect-to-landing';\n\n/* eslint-disable no-underscore-dangle */\nexport const redirectToLoginPage = (locale: string) => {\n const currentAbsolutPath = `${window.location.href}`;\n\n const LOGIN_PATH = window.__ENDPOINTS__\n ? window.__ENDPOINTS__.LOGIN_PAGE_ENDPOINT\n : '/login/';\n\n // устанавливаем локаль приложения пустой строкой, чтобы правильно выставлялась кука при переходе со страницы логина\n setLocale({ locale: '', isFromCookie: true });\n\n // add / at the end\n const pathLocale = locale ? `${locale}/` : locale;\n\n if (canRedirectoToLanding() && window.__ENDPOINTS__?.PORTAL_LANDING) {\n window.location.href = `${window.__ENDPOINTS__.PORTAL_LANDING}/${pathLocale}`;\n\n return;\n }\n\n window.location.href = `${LOGIN_PATH}/${pathLocale}?redirect_url=${currentAbsolutPath}`;\n};\n","import { appNamespace, SELLER_PORTAL_ACCESS_TOKEN } from '@/_constants';\nimport { LocalStorageWorker } from '../localstorage-worker';\n\nexport const clearUserInfoCache = () => {\n LocalStorageWorker.deleteItem(`${appNamespace}.id`);\n LocalStorageWorker.deleteItem(SELLER_PORTAL_ACCESS_TOKEN);\n};\n","/* eslint-disable no-underscore-dangle */\n\nexport const PASSPORT_LOCAL_ENDPOINT = '/passport';\nexport const PASSPORT_CENTRAL_ENDPOINT =\n window?.__ENDPOINTS__?.CENTRAL_PASSPORT ?? '/login';\nexport const SELLER_AUTH_ENDPOINT =\n window?.__ENDPOINTS__?.LOGIN_PAGE_ENDPOINT ?? '/login';\nexport const UPGRADE_COOKIE_ENDPOINT_PATH = '/upgrade-cookie-authv3';\nexport const DOWNGRADE_COOKIE_ENDPOINT_PATH = '/downgrade-cookie-authv3';\nexport const GRANT_LOCAL_ENDPOINT = `${PASSPORT_LOCAL_ENDPOINT}/api/v2/auth/grant`;\nexport const GRANT_CENTRAL_ENDPOINT = `${PASSPORT_CENTRAL_ENDPOINT}/api/v2/auth/grant`;\n\nexport const LOGIN_LOCAL_ENDPOINT = `${PASSPORT_LOCAL_ENDPOINT}/api/v2/auth/login`;\nexport const LOGIN_CENTRAL_ENDPOINT = `${PASSPORT_CENTRAL_ENDPOINT}/api/v2/auth/login`;\nexport const INTROSPECT_LOCAL_ENDPOINT = `${PASSPORT_LOCAL_ENDPOINT}/api/v2/auth/introspect`;\nexport const TRANSFORM_SITE_COOKIE_ENDPOINT = `${PASSPORT_LOCAL_ENDPOINT}/api/v2/auth/wild_v3_upgrade`;\n\nexport const LOGOUT_LOCAL_ENDPOINT = `${PASSPORT_LOCAL_ENDPOINT}/api/v2/auth/logout`;\nexport const LOGOUT_CENTRAL_ENDPOINT = `${PASSPORT_CENTRAL_ENDPOINT}/api/v2/auth/logout`;\nexport const LOGOUT_SELLER_AUTH_ENDPOINT = `${SELLER_AUTH_ENDPOINT}${PASSPORT_LOCAL_ENDPOINT}/api/v2/auth/logout`;\n\nconst CMP_ENDPOINT = window?.__ENDPOINTS__?.CMP_ENDPOINT;\nexport const LOGOUT_CMP_ENDPOINT = CMP_ENDPOINT\n ? `${CMP_ENDPOINT}${PASSPORT_LOCAL_ENDPOINT}/api/v2/auth/logout`\n : '';\n\nconst CMP_NEW_ENDPOINT = window?.__ENDPOINTS__?.CMP_NEW_ENDPOINT;\nexport const LOGOUT_CMP_NEW_ENDPOINT = CMP_NEW_ENDPOINT\n ? `${CMP_NEW_ENDPOINT}${PASSPORT_LOCAL_ENDPOINT}/api/v2/auth/logout`\n : '';\n\nconst DELIVERY_OPTIONS_ENDPOINT =\n window?.__ENDPOINTS__?.DELIVERY_OPTIONS_ENDPOINT;\nexport const LOGOUT_DELIVERY_OPTIONS_ENDPOINT = DELIVERY_OPTIONS_ENDPOINT\n ? `${DELIVERY_OPTIONS_ENDPOINT}${PASSPORT_LOCAL_ENDPOINT}/api/v2/auth/logout`\n : '';\n\nexport const UPGRADE_COOKIE_ENDPOINT =\n window?.__ENDPOINTS__?.UPGRADE_COOKIE_ENDPOINT ??\n UPGRADE_COOKIE_ENDPOINT_PATH;\nexport const DOWNGRADE_COOKIE_ENDPOINT =\n window?.__ENDPOINTS__?.DOWNGRADE_COOKIE_ENDPOINT ??\n DOWNGRADE_COOKIE_ENDPOINT_PATH;\n\nexport const AUTH_V3_BASE = window?.__ENDPOINTS__?.AUTH_V3_BASE ?? '/auth';\nexport const LOGOUT_V3_ENDPOINT = `${AUTH_V3_BASE}/v2/auth/logoff`;\nexport const LOGIN_V3_ENDPOINT = `${AUTH_V3_BASE}/v2/auth/slide-v3`;\nexport const SLIDE_CONFIRM_ENDPOINT = `${AUTH_V3_BASE}/v2/auth/slide-v3-confirm`;\n\nexport const MFA_BASE = window?.__ENDPOINTS__?.MFA_GET_STATE_ENDPOINT;\nexport const MFA_STATE = `${MFA_BASE}/api/v1/MFA/request`;\nexport const MFA_VALIDATE = `${MFA_BASE}/api/v1/MFA/validate`;\n\nexport const LOGOUT_NAPI_ENDPOINT =\n window?.__ENDPOINTS__?.LOGOUT_NAPI ?? '/empty_napi';\n\nexport const PERSONAL_DATA_LOCAL_ENDPOINT = `${PASSPORT_LOCAL_ENDPOINT}/api/v2/user/personal_data`;\n","import { IResponse, PureRestRequest } from '@portals/fetch-api';\nimport { LOGOUT_NAPI_ENDPOINT } from '@/api/endpoints/passport';\nimport { extraVerifyNotAuthRetry } from '../_utils/extra-verify-not-auth-retry';\n\nexport const logoutNapiRequest = (): Promise =>\n new PureRestRequest().getRequest({\n credentials: 'include',\n endpoint: LOGOUT_NAPI_ENDPOINT,\n isErrorTextStraightToOutput: true,\n retry: 2,\n extraVerifyRetry: extraVerifyNotAuthRetry,\n tracingDisabled: true,\n middlewaresAreDisabled: true,\n });\n","import Joi from 'joi';\n\nexport const responseSchema = Joi.object({\n result: Joi.number().required(),\n error: Joi.any().when('result', {\n not: Joi.valid(0),\n then: Joi.string().required(),\n otherwise: Joi.forbidden(),\n }),\n});\n","import { IResponse, PureRestRequest } from '@portals/fetch-api';\nimport { makeRequestConfig } from './make-request-config';\n\nexport const logoutV3Request = (): Promise =>\n new PureRestRequest().postRequest(makeRequestConfig());\n","import { IRequestParams } from '@portals/fetch-api';\nimport { LOGOUT_V3_ENDPOINT } from '@/api/endpoints/passport';\nimport { responseSchema } from './response-schema';\n\nexport const makeRequestConfig = (): IRequestParams => {\n return {\n endpoint: LOGOUT_V3_ENDPOINT,\n responseSchema,\n credentials: 'include',\n };\n};\n","export class RefreshTokenCookieUnavailable extends Error {}\n","import { IRequestParams } from '@portals/fetch-api';\nimport Joi from 'joi';\nimport {\n DOWNGRADE_COOKIE_ENDPOINT,\n DOWNGRADE_COOKIE_ENDPOINT_PATH,\n} from '@/api/endpoints/passport';\nimport { DowngradeCookieRequestType } from './types';\n\nexport const makeRequestConfig = ({\n endpoint = '',\n isCurrentDomainEndpoint = true,\n middlewaresAreDisabled,\n}: DowngradeCookieRequestType): IRequestParams => {\n const cookieDowngradeEndpoint = isCurrentDomainEndpoint\n ? DOWNGRADE_COOKIE_ENDPOINT\n : `${endpoint}${DOWNGRADE_COOKIE_ENDPOINT_PATH}`;\n\n return {\n endpoint: cookieDowngradeEndpoint,\n credentials: 'include',\n middlewaresAreDisabled,\n responseSchema: Joi.object({\n success: Joi.string().required(),\n }),\n };\n};\n","import { IResponse, PureRestRequest } from '@portals/fetch-api';\nimport { DowngradeCookieRequestType } from './types';\nimport { makeRequestConfig } from './make-request-config';\n\nexport const downgradeCookieRequest = (\n requestParams: DowngradeCookieRequestType,\n): Promise> =>\n new PureRestRequest().postRequest(makeRequestConfig(requestParams));\n","import { SELLER_PORTAL_DOWNGRADE_LIST } from '@/_constants';\n\nexport const getListFromStorage = () => {\n try {\n return localStorage.getItem(SELLER_PORTAL_DOWNGRADE_LIST);\n } catch {\n return [];\n }\n};\n","export const parseList = (list?: any) => {\n try {\n const parsedList = Array.isArray(list) ? list : JSON.parse(list);\n\n if (!Array.isArray(parsedList)) {\n return [];\n }\n\n return parsedList.map(String);\n // eslint-disable-next-line no-empty\n } catch {}\n\n return [];\n};\n","export const externalApiPathRegex = /(\\/external-api-[^/]+)\\//;\n","import { externalApiPathRegex } from '../external-api-path-regex';\n\nconst splitEndpoint = (endpoint: string) => {\n try {\n const { origin, pathname } = new URL(endpoint);\n\n return {\n origin,\n pathname,\n };\n } catch (error) {\n return {\n origin: '',\n pathname: endpoint,\n };\n }\n};\n\nexport const getExternalApiEndpoint = (endpoint: string) => {\n const { origin, pathname } = splitEndpoint(endpoint);\n const match = externalApiPathRegex.exec(pathname);\n\n if (origin && !/\\.wildberries\\.ru$/.test(origin)) {\n return '';\n }\n\n if (match) {\n const [, externalApiPath] = match;\n\n return origin + externalApiPath;\n }\n\n return origin;\n};\n","import { getExternalApiEndpoint } from '@/_utils/init-app-utils/requests-proxy/init-request-proxy-verify/_utils/get-external-api-endpoint';\nimport { parseList } from '../parse-list';\nimport { getListFromStorage } from '../get-list-from-storage';\n\nexport const getSanitizedList = (source?: any) => {\n try {\n const localList = parseList(getListFromStorage());\n const sourceList = parseList(source);\n const list = [...localList, ...sourceList];\n\n return list.map(getExternalApiEndpoint).reduce((acc, item) => {\n if (item && !acc.includes(item)) {\n acc.push(item);\n }\n\n return acc;\n }, []);\n } catch {\n return [];\n }\n};\n","import { SELLER_PORTAL_DOWNGRADE_LIST } from '@/_constants';\n\nexport const cleanupList = () => {\n try {\n localStorage.removeItem(SELLER_PORTAL_DOWNGRADE_LIST);\n // eslint-disable-next-line no-empty\n } catch {}\n};\n","import {\n AUTH_V3_NO_COOKIE_ERROR_RESULT,\n AUTH_V3_RESPONSE_SUCCESS_RESULT,\n} from '@/api/requests/_constants';\nimport { logoutV3Request } from '@/api/requests/logout-v3';\nimport { RefreshTokenCookieUnavailable } from '@/_utils/auth-v3/_common/referesh-token-cookie-unavailable';\nimport { downgradeCookies } from '../downgrade-cookies';\n\nexport const logoutViaV3 = async () => {\n if (!window.ENVS.ENABLE_AUTH_V3) {\n throw new RefreshTokenCookieUnavailable();\n }\n\n const {\n data: { result, error: logoutV3Error },\n } = await logoutV3Request();\n\n // Удалям куку WBTokenV3 даже если разлогин неудался\n // Иначе чел сможет заходить через introspect и т.д. через WBTokenV3\n await downgradeCookies();\n\n if (result !== AUTH_V3_RESPONSE_SUCCESS_RESULT) {\n // TODO temporary fix\n throw new RefreshTokenCookieUnavailable();\n\n if (result === AUTH_V3_NO_COOKIE_ERROR_RESULT) {\n throw new RefreshTokenCookieUnavailable();\n }\n\n throw new Error(logoutV3Error);\n }\n\n return true;\n};\n","import { downgradeCookieRequest } from '@/api/requests/downgrade-cookie';\nimport { getSanitizedList } from '../downgrade-list';\n\nexport const downgradeCookies = async () => {\n const list = getSanitizedList(window.LOGOUT_REQUIRED_EXTERNAL_ORIGINS);\n const externalRequests = list.map((endpoint: string) =>\n downgradeCookieRequest({ endpoint, isCurrentDomainEndpoint: false }),\n );\n\n const currentDomainRequest = downgradeCookieRequest({\n isCurrentDomainEndpoint: true,\n });\n\n await Promise.allSettled([...externalRequests, currentDomainRequest]);\n\n return true;\n};\n","export const AUTH_V3_RESPONSE_SUCCESS_RESULT = 0;\nexport const AUTH_V3_NO_COOKIE_ERROR_RESULT = 12;\n","import { all, call, put } from 'redux-saga/effects';\nimport { getLocale } from '@portals/i18next-utils';\nimport { setUserDataForDigitalFingerPrint } from '@portals/fingerprint-utils';\nimport { logoutRequest } from '@/api/requests/logout';\nimport { redirectToLoginPage } from '@/_utils/redirect-to-login';\nimport { clearUserInfoCache } from '@/_utils/api-cache/clear-user-info';\nimport { logoutNapiRequest } from '@/api/requests/logout-napi';\nimport { logoutViaV3 } from '@/_utils/auth-v3/logout-via-v3';\nimport { RefreshTokenCookieUnavailable } from '@/_utils/auth-v3/_common/referesh-token-cookie-unavailable';\nimport { getLogoutEndpoints } from '@/_utils/get-logout-endpoints';\nimport { cleanupList } from '@/_utils/auth-v3/downgrade-list/cleanup-list';\nimport {\n setLogoutLoadingStartAction,\n setLogoutLoadingStopAction,\n} from '../../actions';\n\nconst logoutOldWay = () => {\n const logoutEndpoints = getLogoutEndpoints();\n\n return Promise.allSettled([\n ...logoutEndpoints.map((endpoint: string) => logoutRequest(endpoint)),\n logoutNapiRequest,\n ]);\n};\n\nexport function* logoutWorkerSaga() {\n try {\n yield put(setLogoutLoadingStartAction());\n\n try {\n yield all([call(logoutViaV3), call(logoutOldWay)]);\n } catch (authError) {\n if (!(authError instanceof RefreshTokenCookieUnavailable)) {\n throw authError;\n }\n }\n // очистка localStorage списка с посещенными доменами\n cleanupList();\n } catch (error: any) {\n console.error('logoutWorkerSaga get an error', error.message);\n } finally {\n const locale = getLocale({ isFromCookie: true });\n clearUserInfoCache();\n\n // set nothing to cleanup\n setUserDataForDigitalFingerPrint();\n\n redirectToLoginPage(locale);\n yield put(setLogoutLoadingStopAction());\n }\n}\n","import {\n LOGOUT_CENTRAL_ENDPOINT,\n LOGOUT_CMP_ENDPOINT,\n LOGOUT_CMP_NEW_ENDPOINT,\n LOGOUT_DELIVERY_OPTIONS_ENDPOINT,\n LOGOUT_LOCAL_ENDPOINT,\n LOGOUT_SELLER_AUTH_ENDPOINT,\n} from '@/api/endpoints/passport';\nimport { createLogoutEndpoint } from '@/api/endpoints/passport/utils/create-logout-endpoint';\nimport { getSanitizedList } from './auth-v3/downgrade-list/get-sanitized-list';\n\nexport const getLogoutEndpoints = (): Array => {\n const list = getSanitizedList(window.LOGOUT_REQUIRED_EXTERNAL_ORIGINS);\n\n const logoutRequiredExternalEndpoints = list.map((endpoint: string) =>\n createLogoutEndpoint(endpoint),\n );\n\n const logoutRequiredInternalEndpoints = [\n LOGOUT_LOCAL_ENDPOINT,\n LOGOUT_SELLER_AUTH_ENDPOINT,\n LOGOUT_CMP_ENDPOINT,\n LOGOUT_CMP_NEW_ENDPOINT,\n LOGOUT_DELIVERY_OPTIONS_ENDPOINT, // NOTE SPL-5250\n LOGOUT_CENTRAL_ENDPOINT,\n ].filter((endpoint) => !!endpoint);\n\n const logoutEndpoint = [\n ...logoutRequiredInternalEndpoints,\n ...logoutRequiredExternalEndpoints,\n ];\n\n return logoutEndpoint;\n};\n","export const createLogoutEndpoint = (endpoint: string): string => {\n return `${endpoint}/passport/api/v2/auth/logout`;\n};\n","import { IResponse, PureRestRequest } from '@portals/fetch-api';\nimport { extraVerifyNotAuthRetry } from '../_utils/extra-verify-not-auth-retry';\n\nexport const logoutRequest = (endpoint: string): Promise =>\n new PureRestRequest().postRequest({\n headers: {\n 'Content-Type': 'application/json',\n },\n body: {},\n credentials: 'include',\n endpoint,\n isErrorTextStraightToOutput: true,\n retry: 2,\n extraVerifyRetry: extraVerifyNotAuthRetry,\n tracingDisabled: true,\n extraValidationCallback: ({ statusCode }) => statusCode === 200,\n middlewaresAreDisabled: true,\n });\n","import {\n BrowserCacheParamsType,\n RequestCacheStrategy,\n} from '@portals/fetch-api';\nimport { DEFAULT_API_CACHE_PARAMS } from '@/_constants';\n\ntype ParamsType = {\n cacheKey: string;\n strategy?: RequestCacheStrategy;\n};\n\nexport const getMenuCacheConfig = ({\n cacheKey,\n strategy,\n}: ParamsType): BrowserCacheParamsType => {\n return {\n ...DEFAULT_API_CACHE_PARAMS,\n strategy: strategy || 'NetworkFirst',\n requestCacheKey: cacheKey,\n };\n};\n","import { RequestCacheStrategy } from '@portals/fetch-api';\nimport { getMenuCacheConfig } from '@/_utils/api-cache/configs/menu-cache-config';\n\ntype ParamsType = {\n cacheKey: string;\n strategy?: RequestCacheStrategy;\n userId?: number;\n menuFromFileRequest: boolean;\n defaultShown?: boolean;\n};\n\nexport const getMainMenuRequestConfig = ({\n cacheKey,\n strategy,\n userId,\n menuFromFileRequest,\n defaultShown,\n}: ParamsType) => {\n /* eslint-disable no-underscore-dangle */\n const {\n ENVS: { MAIN_ABAC_SCOPE },\n __ENDPOINTS__: {\n LOAD_MENU_REQUEST_ENDPOINT,\n LOAD_MENU_FILE_REQUEST_ENDPOINT,\n },\n } = window;\n\n if (\n (LOAD_MENU_REQUEST_ENDPOINT || LOAD_MENU_FILE_REQUEST_ENDPOINT) &&\n MAIN_ABAC_SCOPE\n ) {\n return {\n defaultShown,\n menuFromFileRequest,\n loadMenuRequestEndpoint: menuFromFileRequest\n ? LOAD_MENU_FILE_REQUEST_ENDPOINT\n : LOAD_MENU_REQUEST_ENDPOINT,\n appNamespace: MAIN_ABAC_SCOPE,\n browserCacheParams:\n cacheKey && userId\n ? getMenuCacheConfig({\n cacheKey: menuFromFileRequest\n ? `get-menu-file-request-${cacheKey}-${userId}`\n : `get-menu-request-${cacheKey}-${userId}`,\n strategy: strategy || 'NetworkFirst',\n })\n : null,\n };\n }\n\n return {\n loadMenuRequestEndpoint: '',\n appNamespace: '',\n menuFromFileRequest: false,\n };\n};\n","export const getCookie = (cookieName: string) => {\n const cookie: Record = {};\n\n document.cookie.split(';').forEach((cookies) => {\n const [name, value] = cookies.split('=');\n cookie[name.trim()] = value.trim();\n });\n\n return cookie[cookieName];\n};\n","/* eslint-disable no-new-func */\nimport { sentryLogger } from '@wildberries/service-logger';\nimport { appNamespace } from '@/_constants';\n\ntype ParamsType = {\n getCookie: (cookieName: string) => string;\n};\n\ntype OuputType = {\n key: string;\n};\n\nexport const getFetchMenuCacheKey = ({ getCookie }: ParamsType): OuputType => {\n const initialSerializedFunction = window.FETCH_MENU_CACHE_KEY_FUNCTION;\n\n if (initialSerializedFunction) {\n try {\n const parsedFunction = new Function(\n `return ${initialSerializedFunction}`,\n )();\n\n return {\n ...parsedFunction({ getCookie }),\n };\n } catch (error) {\n console.error('error in getFetchMenuCacheKey function', error);\n\n sentryLogger.sendError({\n error,\n project: appNamespace,\n message: 'error in getFetchMenuCacheKey function',\n });\n\n return {\n key: '',\n };\n }\n }\n\n return {\n key: '',\n };\n};\n","import {\n fetchUserPermissionsAction,\n getUserInfo,\n} from '@wildberries/service-user';\nimport { fetchMenuActionSaga } from '@wildberries/service-products';\nimport { select, delay, put } from 'redux-saga/effects';\nimport { Dispatch } from 'redux';\nimport { getMainMenuRequestConfig } from '@/_utils/get-main-menu-request-config';\nimport { getCookie } from '@/_utils/init-app/_utils/get-cookie';\nimport { getFetchMenuCacheKey } from '@/_utils/api-cache/configs/get-fetch-menu-cache-key';\nimport { coreRequestsHealthCheckIntervalSelector } from '../../selectors';\nimport {\n incrementHealthCheckIntervalAction,\n resetCoreRequestsErrorAction,\n resetHealthCheckAction,\n resethealthCheckCoreRequestsIntervalAction,\n} from '../../actions';\n\ntype ParamsType = {\n dispatch: Dispatch;\n};\n\nexport function* healthCheckWorkerSaga({ dispatch }: ParamsType) {\n while (true) {\n try {\n const { id: userId } = yield select(getUserInfo as never);\n\n const refreshInterval = (yield select(\n coreRequestsHealthCheckIntervalSelector,\n )) as number;\n\n yield delay(refreshInterval);\n\n yield put(\n fetchUserPermissionsAction({\n customPermissionsRequestParams: {\n scope: window.ENVS.MAIN_ABAC_SCOPE,\n // no suppliers availiable\n key: null,\n noRetry: true,\n },\n scope: window.ENVS.MAIN_ABAC_SCOPE,\n withoutErrorNotification: true,\n withoutLoadingIndicator: true,\n successCallbackFinallyLoad: ({ loadingStopAction }) => {\n const fetchMenuCacheKey = getFetchMenuCacheKey({\n getCookie,\n }).key;\n\n dispatch(loadingStopAction());\n\n dispatch(\n fetchMenuActionSaga({\n withoutLoadingIndicator: true,\n successActionsArray: [\n resetCoreRequestsErrorAction,\n resetHealthCheckAction,\n resethealthCheckCoreRequestsIntervalAction,\n ],\n errorAction: incrementHealthCheckIntervalAction,\n noRetry: true,\n configs: getMainMenuRequestConfig({\n cacheKey: fetchMenuCacheKey,\n userId,\n menuFromFileRequest: true,\n defaultShown: true,\n }),\n }),\n );\n },\n errorAction: incrementHealthCheckIntervalAction,\n }),\n );\n } catch (error) {\n console.error('error in healthCheckWorkerSaga', error);\n }\n }\n}\n","import React, { memo, RefObject } from 'react';\nimport classNames from 'classnames/bind';\nimport style from './index.module.scss';\nimport { FontSizeType, FontColorType, TagType, WhiteSpaceType } from './_types';\n\nconst cn = classNames.bind(style);\nconst BLOCK_NAME = 'Text';\n\ntype PropsType = {\n /** text color */\n color?: FontColorType;\n /** text ellipsis flag */\n isEllipsis?: boolean;\n /** text case flag */\n isUpperCase?: boolean;\n /** text white-space style */\n whiteSpace?: WhiteSpaceType;\n /** text size type */\n size?: FontSizeType;\n /** tag type */\n tagType?: TagType;\n /** text type */\n text: string;\n /** text title attribute */\n title?: string;\n /** text ref object */\n textRef?: RefObject;\n};\n\nexport const Text = memo(\n ({\n color = 'black',\n isUpperCase,\n size = 'h4',\n tagType: Tag = 'span',\n text,\n isEllipsis,\n whiteSpace,\n title,\n textRef,\n }: PropsType) => (\n \n {text}\n \n ),\n);\n","// extracted by mini-css-extract-plugin\nexport default {\"Text\":\"text_Text__BSMLK\",\"Text--h0\":\"text_Text--h0__9DJjg\",\"Text--h1\":\"text_Text--h1__OxNi2\",\"Text--h2\":\"text_Text--h2__logMi\",\"Text--h3\":\"text_Text--h3__WJkha\",\"Text--h3-bold\":\"text_Text--h3-bold__mvyKy\",\"Text--h4\":\"text_Text--h4__JrhVz\",\"Text--h4-bold\":\"text_Text--h4-bold__ryjCa\",\"Text--h5\":\"text_Text--h5__yJ1Xq\",\"Text--h5-bold\":\"text_Text--h5-bold__5eN0d\",\"Text--orange\":\"text_Text--orange__RyFFC\",\"Text--darkPurple\":\"text_Text--darkPurple__zq9ib\",\"Text--purple\":\"text_Text--purple__6Wn+Q\",\"Text--lightPurple\":\"text_Text--lightPurple__Xxml8\",\"Text--superDuperLightPurple\":\"text_Text--superDuperLightPurple__8VwjW\",\"Text--superDuperLightGrey\":\"text_Text--superDuperLightGrey__JJSgt\",\"Text--red\":\"text_Text--red__KhmSJ\",\"Text--blue\":\"text_Text--blue__MURAz\",\"Text--pink\":\"text_Text--pink__eQmuS\",\"Text--lightRed\":\"text_Text--lightRed__+a5II\",\"Text--lightYellow\":\"text_Text--lightYellow__PEHkc\",\"Text--lightBlue\":\"text_Text--lightBlue__FH60G\",\"Text--paleBlue\":\"text_Text--paleBlue__dyQar\",\"Text--black\":\"text_Text--black__VI-fm\",\"Text--richGrey\":\"text_Text--richGrey__ZSkDG\",\"Text--greyDarker\":\"text_Text--greyDarker__4bx0M\",\"Text--grey\":\"text_Text--grey__HNyNf\",\"Text--lightGrey\":\"text_Text--lightGrey__94umS\",\"Text--normalGrey\":\"text_Text--normalGrey__Wd8AZ\",\"Text--white\":\"text_Text--white__35hOE\",\"Text--yellow\":\"text_Text--yellow__NfP-8\",\"Text--successTextColor\":\"text_Text--successTextColor__zEh++\",\"Text--CICD\":\"text_Text--CICD__mE8h3\",\"Text--CICDGrey\":\"text_Text--CICDGrey__Y+WJj\",\"Text--CICDGreyDarker\":\"text_Text--CICDGreyDarker__TnUhM\",\"Text--inputError\":\"text_Text--inputError__dEek4\",\"Text--oceanBlue\":\"text_Text--oceanBlue__2egNj\",\"Text--darkTheme\":\"text_Text--darkTheme__1mDlG\",\"Text--darkGrey\":\"text_Text--darkGrey__gR6Cj\",\"Text--tagGrey\":\"text_Text--tagGrey__diK0t\",\"Text--mainPressed\":\"text_Text--mainPressed__raeaZ\",\"Text--accentBorderFocused\":\"text_Text--accentBorderFocused__k+ywA\",\"Text--accentPressed\":\"text_Text--accentPressed__GnViF\",\"Text--cyan\":\"text_Text--cyan__xvguA\",\"Text--tabSeparatorGrey\":\"text_Text--tabSeparatorGrey__4I-0M\",\"Text--scrollbarThumbColor\":\"text_Text--scrollbarThumbColor__HqVL+\",\"Text--yalo\":\"text_Text--yalo__nWQu3\",\"Text--buttonFocusDarkTheme\":\"text_Text--buttonFocusDarkTheme__33uzY\",\"Text--userMenuProfile\":\"text_Text--userMenuProfile__ishNP\",\"Text--uppercase\":\"text_Text--uppercase__1iwzG\",\"Text--ellipsis\":\"text_Text--ellipsis__2HK7Y\",\"Text--inherit\":\"text_Text--inherit__b2tdq\",\"Text--white-space-normal\":\"text_Text--white-space-normal__1pyh5\",\"Text--white-space-nowrap\":\"text_Text--white-space-nowrap__dMU+v\",\"Text--white-space-pre\":\"text_Text--white-space-pre__T-Vd1\",\"Text--white-space-pre-wrap\":\"text_Text--white-space-pre-wrap__jZaT1\",\"Text--white-space-pre-line\":\"text_Text--white-space-pre-line__GXrQu\",\"Text--white-space-break-spaces\":\"text_Text--white-space-break-spaces__Q1LBD\",\"Text--white-space-inherit\":\"text_Text--white-space-inherit__BbADs\",\"Text--white-space-initial\":\"text_Text--white-space-initial__cxat-\",\"Text--white-space-unset\":\"text_Text--white-space-unset__oriSE\"};","export const errorPageNamespace = 'error-page';\n","import React, { memo } from 'react';\nimport classnames from 'classnames/bind';\nimport i18next from 'i18next';\nimport { Text } from '@/_components/text';\nimport { errorPageNamespace } from '../../_constants';\nimport styles from './index.module.scss';\n\nconst cn = classnames.bind(styles);\n\nconst BLOCK_NAME = 'Card';\n\nexport const Card = memo(() => (\n
\n
\n
\n \n
\n
\n \n
\n
\n
\n));\n","// extracted by mini-css-extract-plugin\nexport default {\"Card\":\"card_Card__iCFhZ\",\"Card__text-wrapper\":\"card_Card__text-wrapper__aXAWD\",\"Card__text\":\"card_Card__text__2g+9W\"};","import React, { memo } from 'react';\nimport classnames from 'classnames/bind';\nimport styles from './index.module.scss';\nimport { Card } from './_components/card';\n\nconst cn = classnames.bind(styles);\n\nconst BLOCK_NAME = 'Error-page';\n\nexport const ErrorPageComponent = memo(() => (\n
\n
\n \n
\n
\n));\n","// extracted by mini-css-extract-plugin\nexport default {\"Error-page\":\"error-page-component_Error-page__tH9HN\",\"Error-page__card-wrapper\":\"error-page-component_Error-page__card-wrapper__MmfYY\"};","export const EXTERNAL_FRAMEWORKS = {\n angular: 'angular',\n vue: 'vue',\n react: 'react',\n};\n","import { ProjectCachesType } from './_types';\n\nconst API_CACHE_STORAGE_PATTERN =\n /([A-Za-z0-9_.,]+)__([A-Za-z0-9_.,]+)__requests-cache/;\n\ntype OutputType = Record;\n\nexport const getFormattedStorageData = async (\n projectStorageNames: Array,\n): Promise => {\n const result = await projectStorageNames.reduce(\n async (acc, projectStorageName) => {\n const awaitedAcc: OutputType = await acc;\n\n if (!API_CACHE_STORAGE_PATTERN.test(projectStorageName)) {\n return awaitedAcc;\n }\n\n // читаем кэш - берем первый попавшийся timestamp и пишем его в результат\n // по timestamp будет сортировка\n const projectStorage = await caches.open(projectStorageName);\n\n const projectCachedResponses = await projectStorage.keys();\n const projectCachedFirstResponseUrl = projectCachedResponses?.[0]?.url;\n\n if (!projectCachedResponses.length || !projectCachedFirstResponseUrl) {\n return awaitedAcc;\n }\n\n const firstResponse = await projectStorage.match(\n projectCachedFirstResponseUrl,\n );\n\n const firstResponseTimestamp =\n Number(firstResponse?.headers?.get?.('api-timestamp')) ?? 0;\n\n if (!firstResponseTimestamp) {\n return awaitedAcc;\n }\n\n // получаем имя проекта из шаблона\n const projectName = projectStorageName.replace(\n API_CACHE_STORAGE_PATTERN,\n '$1',\n );\n\n const formattedData = {\n storageName: projectStorageName,\n timestamp: firstResponseTimestamp,\n };\n\n return {\n ...awaitedAcc,\n [projectName]: awaitedAcc[projectName]\n ? [...awaitedAcc[projectName], formattedData]\n : [formattedData],\n };\n },\n {},\n );\n\n return result;\n};\n","/* eslint-disable no-console */\nimport { getFormattedStorageData } from './get-formatted-storage-data';\nimport { pruneProjectStorages } from './prune-projects-versions';\nimport { ProjectCachesType } from './_types';\n\nexport const pruneProjectsApiCaches = async () => {\n try {\n const t1 = performance.now();\n const prunedCaches: ProjectCachesType = [];\n\n console.log('%cpruneProjectsApiCaches run', 'color: blue;padding:3px;');\n\n const projectsStorageNames = await caches.keys();\n\n const formattedStorageData = await getFormattedStorageData(\n projectsStorageNames,\n );\n\n Promise.allSettled(\n Object.values(formattedStorageData).map(async (projectStorages) => {\n try {\n if (projectStorages.length > 2) {\n await pruneProjectStorages({ projectStorages, prunedCaches });\n }\n } catch (error) {\n console.error(error);\n }\n }),\n );\n\n const t2 = performance.now();\n\n // eslint-disable-next-line no-console\n console.log('%cpruneProjectsApiCaches result', 'color: blue;padding:3px;', {\n duration: t2 - t1,\n prunedCaches,\n prunedCachesCount: prunedCaches.length,\n });\n } catch (error) {\n console.error('Error in pruneProjectsApiCaches', error);\n }\n};\n","/* eslint-disable no-console */\nimport { ProjectCachesType } from './_types';\n\ntype ParamsType = {\n projectStorages: ProjectCachesType;\n prunedCaches: ProjectCachesType;\n};\n\nexport const pruneProjectStorages = async ({\n projectStorages,\n prunedCaches,\n}: ParamsType) => {\n const sortedProjectStorages = projectStorages.sort(\n (prev, next) => next.timestamp - prev.timestamp,\n );\n\n // оставляем только 3 последних версии\n const oldProjectStorages = sortedProjectStorages.slice(3);\n\n if (oldProjectStorages.length) {\n prunedCaches.push(...oldProjectStorages);\n }\n\n // удаляем старое\n await Promise.allSettled(\n oldProjectStorages.map(async ({ storageName }) => {\n try {\n await caches.delete(storageName);\n } catch (error) {\n console.error(error);\n }\n }),\n );\n};\n","import { performanceMonitor } from '@wildberries/wb-front-performance-tracker';\nimport ttiPolyfill from 'tti-polyfill';\nimport { pruneApiCaches } from './prune-api-caches';\n\nconst isProduction = process.env.NODE_ENV === 'production';\n\nexport const initPerformanceMetrics = async () => {\n performanceMonitor.init({});\n\n performanceMonitor.addMeasurement({\n name: 'Domain',\n measurementData: {\n duration: window.origin,\n },\n });\n\n const tti: number | null =\n await ttiPolyfill.getFirstConsistentlyInteractive();\n\n // safari and firefox can not measure tti\n if (tti && 'PerformanceLongTaskTiming' in window) {\n performanceMonitor.addMeasurement({\n name: 'TimeToInteractive',\n measurementData: {\n duration: tti,\n },\n });\n\n performanceMonitor.sendMeasurements();\n }\n\n // очистка кэша тут тк она не должна не влиять на первую загрузку\n await pruneApiCaches();\n};\n\nexport const appLoadedMeasureSendCallback = () => {\n // safari and firefox can not measure tti\n if (!('PerformanceLongTaskTiming' in window) && isProduction) {\n performanceMonitor.sendMeasurements();\n\n // если заходим пост загрузку\n // const isDesktop = getIsDesktop();\n // if (isDesktop) {\n // setFetchProductsEvent({\n // getMenuDataFromStore: true,\n // withoutLoadingIndicator: true,\n // loadAllModules: true,\n // });\n // }\n }\n};\n","import { pruneRequestCaches } from '@portals/fetch-api';\nimport { pruneProjectsApiCaches } from './prune-projects-api-caches';\n\nexport const pruneApiCaches = async () => {\n await pruneRequestCaches({});\n // sendApiCachePruneEvent(prunedCacheInfo);\n\n await pruneProjectsApiCaches();\n};\n","import React, { useEffect } from 'react';\nimport { RouteNode } from '@portals/service-router';\nimport { Router, State } from 'router5';\nimport { PerformanceTrackHOC } from '@wildberries/wb-front-performance-tracker';\nimport { EXTERNAL_FRAMEWORKS } from '@/_constants/frameworks';\nimport { appLoadedMeasureSendCallback } from '@/_utils/init-app-utils/init-performance-metrics';\n\ntype PropsType = {\n content: any;\n framework?: keyof typeof EXTERNAL_FRAMEWORKS;\n router: Router;\n route: State;\n};\n\nconst Content = ({ content, framework, router, route }: PropsType) => {\n useEffect(() => {\n if (framework && EXTERNAL_FRAMEWORKS[framework]) {\n content({ router });\n }\n }, [content, framework, router]);\n\n if (framework === EXTERNAL_FRAMEWORKS.vue) {\n return (\n
\n
\n
\n );\n }\n\n if (framework === EXTERNAL_FRAMEWORKS.angular) {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n return ;\n }\n\n if (framework === EXTERNAL_FRAMEWORKS.react) {\n return
;\n }\n\n return content;\n};\n\nconst MeasuredContent = PerformanceTrackHOC({\n componentEventName: 'AppLoaded',\n mountedCallback: appLoadedMeasureSendCallback,\n})(Content);\n\nexport const RouteContent = () => (\n \n {({ content, framework, router, route }) => (\n \n )}\n \n);\n","import React, { memo } from 'react';\nimport { PerformanceTrackHOC } from '@wildberries/wb-front-performance-tracker';\nimport { ModulesListType } from '@/_redux/platform-modules';\nimport { ErrorPageComponent } from '@/_components/error-page-component';\nimport { RouteContent } from './_components/route-content';\n\ntype PropsType = {\n platformModules: ModulesListType;\n platformLoaded: boolean;\n translationIsLoading: boolean;\n coreRequestsError: boolean;\n handleLogout: () => void;\n coreRequestsErrorCode: string;\n firstRouteTransitionFinished: boolean;\n appVersion: string;\n isLogoutLoading: boolean;\n};\n\nexport const WrappedComponent = memo(\n ({\n platformModules,\n platformModules: { Layout, ErrorPage, Preview },\n platformLoaded,\n translationIsLoading,\n handleLogout,\n coreRequestsError,\n coreRequestsErrorCode,\n firstRouteTransitionFinished,\n appVersion,\n isLogoutLoading,\n }: PropsType) => {\n if (!platformLoaded) {\n if (Preview) {\n return ;\n }\n\n return <>;\n }\n\n if ((!Layout && platformLoaded) || coreRequestsError) {\n if (ErrorPage) {\n return (\n \n );\n }\n\n return ;\n }\n\n return (\n \n );\n },\n);\n\nexport const LayoutView = PerformanceTrackHOC({\n componentEventName: 'Root',\n})(WrappedComponent);\n","import React, { useEffect, useState, memo, FC, useCallback } from 'react';\nimport { compose } from 'redux';\nimport { withRouter } from 'react-router5';\nimport { connect } from 'react-redux';\nimport {\n getProductsMenuIsLoading,\n StatePartProducts,\n} from '@wildberries/service-products';\nimport {\n getUserInfoIsLoading,\n getUserPermissionsIsLoading,\n StatePartUser,\n} from '@wildberries/service-user';\nimport { BaseAction } from '@mihanizm56/redux-core-modules';\nimport {\n getPlatformModulesData,\n getPlatformModulesIsLoading,\n ModulesListType,\n StatePartPlatformModules,\n} from '@/_redux/platform-modules';\nimport {\n getTranslationIsLoadingSelector,\n StatePartAppState,\n initLoadingSelector,\n logoutAction,\n loginLoadingSelector,\n coreRequestsErrorSelector,\n coreRequestsErrorCodeSelector,\n firstRouteTransitionFinishedSelector,\n logoutIsLoadingSelector,\n} from '@/_redux/app-state-module';\nimport { LayoutView } from './_components/layout-view';\nimport { getIsLayoutLoaded } from './_utils/get-is-layout-loaded';\n\ntype PropsType = {\n userInfoIsLoading: boolean;\n userPermissionsIsLoading: boolean;\n productsMenuIsLoading: boolean;\n platformModules: ModulesListType;\n platformModulesIsLoading: boolean;\n translationIsLoading: boolean;\n rootInitLoading: boolean;\n loginLoading: boolean;\n logout: BaseAction;\n coreRequestsError: boolean;\n coreRequestsErrorCode: string;\n firstRouteTransitionFinished: boolean;\n appVersion: string;\n isLogoutLoading: boolean;\n};\n\ntype ReduxStateType = StatePartProducts &\n StatePartUser &\n StatePartPlatformModules &\n StatePartAppState;\n\nconst WrappedContainer = memo(\n ({\n productsMenuIsLoading,\n userInfoIsLoading,\n platformModules,\n platformModulesIsLoading,\n userPermissionsIsLoading,\n translationIsLoading,\n rootInitLoading,\n logout,\n coreRequestsError,\n loginLoading,\n coreRequestsErrorCode,\n firstRouteTransitionFinished,\n appVersion,\n isLogoutLoading,\n }: PropsType) => {\n const [platformLoaded, setPlatformLoaded] = useState(false);\n\n const isLoading = getIsLayoutLoaded({\n userInfoIsLoading,\n userPermissionsIsLoading,\n productsMenuIsLoading,\n platformModulesIsLoading,\n platformLoaded,\n rootInitLoading,\n loginLoading,\n });\n\n useEffect(() => {\n if (!isLoading) {\n setPlatformLoaded(true);\n }\n }, [isLoading]);\n\n const handleLogout = useCallback(() => {\n logout();\n }, [logout]);\n\n return (\n \n );\n },\n);\n\nconst mapStateToProps = (state: ReduxStateType) => ({\n // TODO fix never\n userInfoIsLoading: getUserInfoIsLoading(state as never),\n // TODO fix never\n userPermissionsIsLoading: getUserPermissionsIsLoading(state as never),\n // TODO fix never\n productsMenuIsLoading: getProductsMenuIsLoading(state as never),\n platformModules: getPlatformModulesData(state),\n platformModulesIsLoading: getPlatformModulesIsLoading(state),\n translationIsLoading: getTranslationIsLoadingSelector(state),\n rootInitLoading: initLoadingSelector(state),\n loginLoading: loginLoadingSelector(state),\n coreRequestsError: coreRequestsErrorSelector(state),\n coreRequestsErrorCode: coreRequestsErrorCodeSelector(state),\n firstRouteTransitionFinished: firstRouteTransitionFinishedSelector(state),\n isLogoutLoading: logoutIsLoadingSelector(state),\n});\n\nconst mapDispatchToProps = {\n logout: logoutAction,\n};\n\nexport const ConnectedLayout = compose(\n withRouter,\n connect(mapStateToProps, mapDispatchToProps),\n)(WrappedContainer);\n","type PropsType = {\n userInfoIsLoading: boolean;\n userPermissionsIsLoading: boolean;\n productsMenuIsLoading: boolean;\n platformModulesIsLoading: boolean;\n platformLoaded: boolean;\n rootInitLoading: boolean;\n loginLoading: boolean;\n};\n\nexport const getIsLayoutLoaded = ({\n userInfoIsLoading,\n userPermissionsIsLoading,\n productsMenuIsLoading,\n platformModulesIsLoading,\n platformLoaded,\n rootInitLoading,\n loginLoading,\n}: PropsType): boolean =>\n (loginLoading ||\n userInfoIsLoading ||\n rootInitLoading ||\n userPermissionsIsLoading ||\n productsMenuIsLoading ||\n platformModulesIsLoading) &&\n !platformLoaded;\n","import React, { memo } from 'react';\n\nexport const RootComponents = memo(() => {\n return (\n <>\n {/* Place your root components here */}\n {/* */}\n \n );\n});\n","import React from 'react';\nimport { Provider } from 'react-redux';\nimport { IAdvancedStore } from '@mihanizm56/redux-core-modules';\nimport { ConnectedLayout } from '@/_components/connected-layout';\nimport { RootComponents } from '../root-components';\nimport 'reset-css';\nimport 'normalize.css';\nimport '@/styles/global.css';\n\ntype Props = {\n store: IAdvancedStore;\n};\n\nexport const App = ({ store }: Props) => {\n return (\n \n {/* */}\n \n \n \n );\n};\n","import translationsEN from './en.json';\nimport translationsRU from './ru.json';\nimport translationsCN from './cn.json';\nimport translationsTR from './tr.json';\nimport translationsKA from './ka.json';\n\nconst RU_LOCALE = 'ru';\nconst EN_LOCALE = 'en';\nconst CN_LOCALE = 'cn';\nconst ZH_LOCALE = 'zh';\nconst TR_LOCALE = 'tr';\nconst KA_LOCALE = 'ka';\n\nexport const ERROR_PAGE_TRANSLATIONS_MAP: Record = {\n [RU_LOCALE]: translationsRU,\n [EN_LOCALE]: translationsEN,\n [CN_LOCALE]: translationsCN,\n [ZH_LOCALE]: translationsCN,\n [TR_LOCALE]: translationsTR,\n [KA_LOCALE]: translationsKA,\n};\n","import {\n BrowserCacheParamsType,\n RequestCacheStrategy,\n} from '@portals/fetch-api';\nimport { DEFAULT_API_CACHE_PARAMS } from '@/_constants';\n\ntype ParamsType = {\n cacheKey: string;\n strategy?: RequestCacheStrategy;\n};\n\nexport const getAbacPermissionsCacheConfig = ({\n cacheKey,\n strategy,\n}: ParamsType): BrowserCacheParamsType => {\n return {\n ...DEFAULT_API_CACHE_PARAMS,\n strategy: strategy || 'NetworkFirst',\n requestCacheKey: cacheKey,\n };\n};\n","/* eslint-disable no-new-func */\nimport { sentryLogger } from '@wildberries/service-logger';\nimport {\n BrowserCacheParamsType,\n RequestCacheStrategy,\n} from '@portals/fetch-api';\nimport { getFormattedFilteredFeatures } from '@wildberries/service-user';\nimport { appNamespace } from '@/_constants';\nimport { getAbacPermissionsCacheConfig } from '@/_utils/api-cache/configs/abac-cache-config';\n\ntype ParamsType = {\n getCookie: (cookieName: string) => string;\n userId?: number;\n strategy?: RequestCacheStrategy;\n featuresFilterList: Array;\n};\n\ntype OuputType = {\n scope: string;\n key?: string | number | null;\n attributes?: Array>;\n noRetry?: boolean;\n ignoreResponseIdCompare?: boolean;\n browserCacheParams?: BrowserCacheParamsType;\n featuresFilterList: Array;\n};\n\nexport const getAbacRequestParams = ({\n getCookie,\n strategy,\n userId,\n featuresFilterList,\n}: ParamsType): OuputType => {\n const initialSerializedFunction = window.INIT_ABAC_PARAMS_FUNCTION;\n\n if (initialSerializedFunction) {\n try {\n const parsedFunction = new Function(\n `return ${initialSerializedFunction}`,\n )();\n\n const initialParams = parsedFunction({ getCookie });\n\n return {\n ...initialParams,\n scope: window.ENVS.MAIN_ABAC_SCOPE,\n ignoreResponseIdCompare: true,\n featuresFilterList: getFormattedFilteredFeatures(featuresFilterList),\n browserCacheParams:\n initialParams.key && userId\n ? getAbacPermissionsCacheConfig({\n cacheKey: `get-abac-features-request-${initialParams.key}-${userId}`,\n strategy,\n })\n : null,\n };\n } catch (error) {\n console.error('error in getInitialAbacParams function', error);\n\n sentryLogger.sendError({\n error,\n project: appNamespace,\n message: 'error in getInitialAbacParams function',\n });\n\n return {\n scope: window.ENVS.MAIN_ABAC_SCOPE,\n key: null,\n ignoreResponseIdCompare: true,\n featuresFilterList,\n };\n }\n }\n\n return {\n scope: window.ENVS.MAIN_ABAC_SCOPE,\n ignoreResponseIdCompare: true,\n featuresFilterList,\n };\n};\n","import {\n BrowserCacheParamsType,\n IResponse,\n RequestCacheStrategy,\n} from '@portals/fetch-api';\nimport { DEFAULT_API_CACHE_PARAMS } from '@/_constants';\nimport { USER_INFO_CACHE_KEY } from '../_constants';\n\ntype ParamsType = {\n onUpdateCache?: (response: IResponse) => void;\n strategy?: RequestCacheStrategy;\n userId: number;\n};\n\nexport const getUserInfoCacheConfig = ({\n onUpdateCache,\n strategy,\n userId,\n}: ParamsType): BrowserCacheParamsType => {\n return {\n ...DEFAULT_API_CACHE_PARAMS,\n strategy: strategy || 'NetworkFirst',\n requestCacheKey: `${userId}-${USER_INFO_CACHE_KEY}`,\n onUpdateCache,\n };\n};\n","const ABAC_DATA_PERMISSIONS_FEATURES = (window.ENVS\n .ABAC_PERMISSIONS_DATA_FEATURES || []) as Array;\n\nexport const getAbacPermissionsDataFeatures = (supplierId: string) =>\n ABAC_DATA_PERMISSIONS_FEATURES.map((featureKey) => ({\n scope: window.ENVS.MAIN_ABAC_SCOPE,\n featureKey,\n key: supplierId,\n }));\n","/* eslint-disable no-new-func */\nimport { IAdvancedStore } from '@mihanizm56/redux-core-modules';\nimport {\n setFetchPermissionsListener,\n setFetchUserDataListener,\n setRefreshPermissionsListener,\n} from '@wildberries/databus-service-user';\nimport {\n setFetchProductsListener,\n NavigateToRouteParamsType,\n setNavigateProductListener,\n setPrefetchProductListener,\n PrefetchProductParamsType,\n} from '@wildberries/databus-service-products';\nimport {\n FetchMenuActionPayloadType,\n fetchMenuActionSaga,\n navigateToProductActionSaga,\n preloadRouteAction,\n} from '@wildberries/service-products';\nimport {\n fetchUserInfoAction,\n fetchUserPermissionsAction,\n FetchUserPermissionsActionPayloadType,\n getUserInfo,\n getUserPermissions,\n refreshUserFeaturesActionSaga,\n RefreshUserFeaturesType,\n fetchUserPermissionsDataAction,\n} from '@wildberries/service-user';\nimport { batchActions } from 'redux-batched-actions';\nimport { getMainMenuRequestConfig } from '@/_utils/get-main-menu-request-config';\nimport { getCookie } from '@/_utils/init-app/_utils/get-cookie';\nimport { getAbacRequestParams } from '@/_utils/get-abac-request-params';\nimport { getUserInfoCacheConfig } from '@/_utils/api-cache/configs/user-info-cache-config';\nimport { getFetchMenuCacheKey } from '@/_utils/api-cache/configs/get-fetch-menu-cache-key';\nimport { getAbacPermissionsDataFeatures } from '@/_utils/get-abac-permissions-data-features';\nimport { getAbacPermissionsCacheConfig } from '@/_utils/api-cache/configs/abac-cache-config';\nimport { ABAC_PERMISSIONS_DATA_CACHE_KEY } from '@/_utils/api-cache/_constants';\n\nconst ROOT_ABAC_FEATURES = (window.ENVS.ROOT_ABAC_FEATURES ||\n []) as Array;\nconst MAIN_ABAC_SCOPE = window.ENVS.MAIN_ABAC_SCOPE || '';\n\nexport const initDatabusSubscriptions = (store: IAdvancedStore) => {\n setFetchProductsListener((actionParams: FetchMenuActionPayloadType) => {\n const { id: userId } = getUserInfo(store.getState() as never);\n const permissions = getUserPermissions(store.getState(), MAIN_ABAC_SCOPE);\n\n const fetchMenuCacheKey = getFetchMenuCacheKey({ getCookie }).key;\n const fetchMenuConfig = getMainMenuRequestConfig({\n cacheKey: fetchMenuCacheKey,\n userId,\n menuFromFileRequest:\n !('menuTakenFromFile' in permissions) || permissions.menuTakenFromFile,\n // feature to switch default merging\n // todo rename feature\n defaultShown:\n !('activeSupplier' in permissions) || permissions.activeSupplier,\n });\n\n const fetchMenuActionSagaParams: FetchMenuActionPayloadType =\n permissions?.menuTakenFromFile\n ? {\n ...actionParams,\n configs: fetchMenuConfig,\n permissions,\n }\n : {\n ...actionParams,\n configs: fetchMenuConfig,\n };\n\n store.dispatch(fetchMenuActionSaga(fetchMenuActionSagaParams));\n });\n\n setFetchUserDataListener(() => {\n const { id: userId } = getUserInfo(store.getState() as never);\n const browserCacheParams = userId\n ? getUserInfoCacheConfig({ userId })\n : null;\n\n store.dispatch(\n fetchUserInfoAction({\n browserCacheParams,\n }),\n );\n });\n\n setFetchPermissionsListener(\n (actionParams: FetchUserPermissionsActionPayloadType) => {\n const { id: userId } = getUserInfo(store.getState() as never);\n\n const { browserCacheParams, featuresFilterList, key } =\n getAbacRequestParams({\n getCookie,\n userId,\n featuresFilterList: ROOT_ABAC_FEATURES,\n });\n\n const fetchUserPermissionsParams = {\n ...actionParams,\n scope: window.ENVS.MAIN_ABAC_SCOPE,\n browserCacheParams,\n featuresFilterList,\n };\n\n const fetchUserPermissionsDataParams = {\n featuresList: getAbacPermissionsDataFeatures(key ? `${key}` : ''),\n browserCacheParams:\n key && userId\n ? getAbacPermissionsCacheConfig({\n cacheKey: `${ABAC_PERMISSIONS_DATA_CACHE_KEY}-${key}-${userId}`,\n })\n : null,\n };\n\n store.dispatch(\n batchActions([\n fetchUserPermissionsDataAction(fetchUserPermissionsDataParams),\n fetchUserPermissionsAction(\n key\n ? { ...fetchUserPermissionsParams, key }\n : fetchUserPermissionsParams,\n ),\n ]),\n );\n },\n );\n\n setRefreshPermissionsListener((actionParams: RefreshUserFeaturesType) => {\n store.dispatch(refreshUserFeaturesActionSaga(actionParams));\n });\n\n setNavigateProductListener((params: NavigateToRouteParamsType) => {\n store.dispatch(navigateToProductActionSaga(params));\n });\n\n setPrefetchProductListener((params: PrefetchProductParamsType) => {\n store.dispatch(preloadRouteAction(params));\n });\n};\n","import Joi from 'joi';\nimport { IResponse, PureRestRequest } from '@portals/fetch-api';\nimport { INTROSPECT_LOCAL_ENDPOINT } from '@/api/endpoints/passport';\nimport { extraVerifyNotAuthRetry } from '../_utils/extra-verify-not-auth-retry';\n\nexport type ParamsType = {\n middlewaresAreDisabled?: boolean;\n};\n\nexport const loginInstrospectRequest = ({\n middlewaresAreDisabled,\n}: ParamsType): Promise =>\n new PureRestRequest().getRequest({\n endpoint: INTROSPECT_LOCAL_ENDPOINT,\n isErrorTextStraightToOutput: true,\n credentials: 'include',\n responseSchema: Joi.object({\n error: Joi.string(),\n sessionID: Joi.string(),\n userID: Joi.number(),\n }),\n retry: 2,\n extraVerifyRetry: extraVerifyNotAuthRetry,\n tracingDisabled: true,\n middlewaresAreDisabled,\n notRetryWhenOffline: true,\n customTimeout: 10000,\n });\n","import { IResponse, PureRestRequest } from '@portals/fetch-api';\n\nconst PUBLIC_URL = process.env.PUBLIC_URL;\n\nexport const manifestRequest = (): Promise =>\n new PureRestRequest().getRequest({\n endpoint: `${PUBLIC_URL}/manifest.json`,\n isErrorTextStraightToOutput: true,\n tracingDisabled: true,\n pureJsonFileResponse: true,\n });\n","export const APP_NAMESPACE = 'root';\n","import translateEN from './en.json';\nimport translateRU from './ru.json';\nimport translateCN from './cn.json';\nimport translateTR from './tr.json';\nimport translateKA from './ka.json';\n\nexport const I18N_DICTIONARY: Record = {\n en: translateEN,\n ru: translateRU,\n cn: translateCN,\n zh: translateCN,\n tr: translateTR,\n ka: translateKA,\n};\n","import { IRequestParams } from '@portals/fetch-api';\nimport { PERSONAL_DATA_LOCAL_ENDPOINT } from '@/api/endpoints/passport';\nimport { PersonalDataRequestType } from './types';\n\nexport const makeRequestConfig = ({\n middlewaresAreDisabled,\n}: PersonalDataRequestType): IRequestParams => {\n return {\n translateFunction: () => '',\n endpoint: PERSONAL_DATA_LOCAL_ENDPOINT,\n credentials: 'include',\n middlewaresAreDisabled,\n };\n};\n","import { IResponse, PureRestRequest } from '@portals/fetch-api';\nimport { PersonalDataRequestType } from './types';\nimport { makeRequestConfig } from './make-request-config';\n\nexport const personalDataRequest = (\n requestParams: PersonalDataRequestType,\n): Promise =>\n new PureRestRequest().getRequest(makeRequestConfig(requestParams));\n","import { IResponse, PureRestRequest } from '@portals/fetch-api';\nimport { UpgradeCookieRequestType } from './types';\nimport { makeRequestConfig } from './make-request-config';\n\nexport const upgradeCookieRequest = (\n requestParams: UpgradeCookieRequestType,\n): Promise =>\n new PureRestRequest().postRequest(makeRequestConfig(requestParams));\n","import { IRequestParams } from '@portals/fetch-api';\nimport {\n UPGRADE_COOKIE_ENDPOINT,\n UPGRADE_COOKIE_ENDPOINT_PATH,\n} from '@/api/endpoints/passport';\nimport { UpgradeCookieRequestType } from './types';\n\nexport const makeRequestConfig = ({\n token,\n endpoint = '',\n isCurrentDomainEndpoint = true,\n middlewaresAreDisabled,\n}: UpgradeCookieRequestType): IRequestParams => {\n const cookieUpgradeEndpoint = isCurrentDomainEndpoint\n ? UPGRADE_COOKIE_ENDPOINT\n : `${endpoint}${UPGRADE_COOKIE_ENDPOINT_PATH}`;\n\n return {\n translateFunction: () => '',\n endpoint: cookieUpgradeEndpoint,\n headers: {\n AuthorizeV3: token,\n },\n credentials: 'include',\n middlewaresAreDisabled,\n };\n};\n","const pendingRequests: { [key: string]: Promise } = {};\n\n// TODO docs\nexport function asyncSingleton(\n cacheKey: string,\n promiseMaker: () => Promise,\n) {\n if (!pendingRequests[cacheKey]) {\n pendingRequests[cacheKey] = promiseMaker().finally(() => {\n delete pendingRequests[cacheKey];\n });\n }\n\n return pendingRequests[cacheKey] as ReturnType;\n}\n","import { IResponse, OFFLINE_STATUS_CODE } from '@portals/fetch-api';\nimport { REQUEST_ERROR_STATUS_CODE } from '@portals/fetch-api/dist/constants';\nimport { personalDataRequest } from '@/api/requests/personal-data';\nimport { upgradeCookieRequest } from '@/api/requests/upgrade-cookie';\nimport { asyncSingleton } from '@/_utils/auth-v3/async-singleton';\n\nexport class ValidateTokenError extends Error {\n constructor(public message: string, public code?: number) {\n super(message);\n }\n}\n\nconst handleOfflineError = ({ code, headers, errorText, error }: IResponse) => {\n if (!error) {\n return;\n }\n\n if (\n code === OFFLINE_STATUS_CODE ||\n // проверка для Safari, может вернуть пустые хидеры в оффлайне\n (code === REQUEST_ERROR_STATUS_CODE && !Object.keys(headers).length)\n ) {\n throw new ValidateTokenError(errorText, OFFLINE_STATUS_CODE);\n }\n\n throw new ValidateTokenError(errorText, code);\n};\n\nconst validateTokenRaw = async (accessToken: string) => {\n const upgradeCookieResponse = await upgradeCookieRequest({\n token: accessToken,\n middlewaresAreDisabled: true,\n });\n\n handleOfflineError(upgradeCookieResponse);\n\n const personalDataResponse = await personalDataRequest({\n middlewaresAreDisabled: true,\n });\n\n handleOfflineError(personalDataResponse);\n\n return true;\n};\n\nexport const validateToken = (accessToken: string) =>\n asyncSingleton('validationToken', () => validateTokenRaw(accessToken));\n","import { OFFLINE_STATUS_CODE } from '@portals/fetch-api';\nimport { SELLER_PORTAL_ACCESS_TOKEN } from '@/_constants';\nimport { validateToken } from '@/_utils/auth-v3/validate-token';\nimport { asyncSingleton } from '@/_utils/auth-v3/async-singleton';\n\nconst verifyExistingTokenRaw = async () => {\n const accessToken = localStorage.getItem(SELLER_PORTAL_ACCESS_TOKEN) || '';\n\n if (!accessToken) {\n throw new Error();\n }\n\n try {\n await validateToken(accessToken);\n } catch (error: any) {\n if (error?.code === OFFLINE_STATUS_CODE) {\n // NOTE\n // Если оффлайн, считаем что токен валидный, так как он существовал\n return true;\n }\n\n localStorage.removeItem(SELLER_PORTAL_ACCESS_TOKEN);\n throw error;\n }\n\n return true;\n};\n\nexport const verifyExistingToken = () =>\n asyncSingleton('verifyExistingToken', verifyExistingTokenRaw);\n","import Joi from 'joi';\n\nexport const responseSchema = Joi.object({\n result: Joi.number().required(),\n error: Joi.any().when('result', {\n not: Joi.valid(0),\n then: Joi.string().required(),\n otherwise: Joi.forbidden(),\n }),\n payload: Joi.any().when('result', {\n is: Joi.valid(0),\n then: Joi.object({\n // eslint-disable-next-line camelcase\n access_token: Joi.string().required(),\n }),\n }),\n});\n","import { IResponse, PureRestRequest } from '@portals/fetch-api';\nimport { SlideRequestType } from './type';\nimport { makeRequestConfig } from './make-request-config';\n\nexport const slideRequest = (\n requestParams: SlideRequestType,\n): Promise =>\n new PureRestRequest().postRequest(makeRequestConfig(requestParams));\n","import { IRequestParams } from '@portals/fetch-api';\nimport { LOGIN_V3_ENDPOINT } from '@/api/endpoints/passport';\nimport { SlideRequestType } from './type';\nimport { responseSchema } from './response-schema';\n\nexport const makeRequestConfig = ({\n middlewaresAreDisabled,\n}: SlideRequestType): IRequestParams => {\n return {\n endpoint: LOGIN_V3_ENDPOINT,\n responseSchema,\n middlewaresAreDisabled,\n credentials: 'include',\n };\n};\n","import Joi from 'joi';\n\nexport const responseSchema = Joi.object({\n result: Joi.number().required(),\n error: Joi.any().when('result', {\n not: Joi.valid(0),\n then: Joi.string().required(),\n otherwise: Joi.forbidden(),\n }),\n});\n","import { IResponse, PureRestRequest } from '@portals/fetch-api';\nimport { SlideConfirmRequestType } from './type';\nimport { makeRequestConfig } from './make-request-config';\n\nexport const slideConfirmRequest = (\n requestParams: SlideConfirmRequestType,\n): Promise =>\n new PureRestRequest().postRequest(makeRequestConfig(requestParams));\n","import { IRequestParams } from '@portals/fetch-api';\nimport { SLIDE_CONFIRM_ENDPOINT } from '@/api/endpoints/passport';\nimport { SlideConfirmRequestType } from './type';\nimport { responseSchema } from './response-schema';\n\nexport const makeRequestConfig = ({\n sticker,\n middlewaresAreDisabled,\n}: SlideConfirmRequestType): IRequestParams => {\n return {\n middlewaresAreDisabled,\n endpoint: SLIDE_CONFIRM_ENDPOINT,\n responseSchema,\n body: {\n sticker,\n },\n credentials: 'include',\n };\n};\n","import { SELLER_PORTAL_ACCESS_TOKEN } from '@/_constants';\nimport { slideRequest } from '@/api/requests/slide';\nimport { slideConfirmRequest } from '@/api/requests/slide-confirm';\nimport {\n AUTH_V3_NO_COOKIE_ERROR_RESULT,\n AUTH_V3_RESPONSE_SUCCESS_RESULT,\n} from '@/api/requests/_constants';\nimport { validateToken } from '@/_utils/auth-v3/validate-token';\nimport { asyncSingleton } from '@/_utils/auth-v3/async-singleton';\nimport { RefreshTokenCookieUnavailable } from '@/_utils/auth-v3/_common/referesh-token-cookie-unavailable';\n\nconst getNewTokenRaw = async () => {\n const {\n data: { result, payload, error: slideErrorText },\n } = await slideRequest({ middlewaresAreDisabled: true });\n\n const accessToken = payload?.access_token;\n\n if (result !== AUTH_V3_RESPONSE_SUCCESS_RESULT) {\n if (result === AUTH_V3_NO_COOKIE_ERROR_RESULT) {\n throw new RefreshTokenCookieUnavailable();\n }\n\n throw new Error(slideErrorText);\n }\n\n const {\n data: { error: slideConfirmError, result: confirmResult },\n } = await slideConfirmRequest({\n sticker: payload?.sticker,\n middlewaresAreDisabled: true,\n });\n\n if (confirmResult !== AUTH_V3_RESPONSE_SUCCESS_RESULT) {\n throw new Error(slideConfirmError);\n }\n\n await validateToken(accessToken);\n\n localStorage.setItem(SELLER_PORTAL_ACCESS_TOKEN, accessToken);\n\n return true;\n};\n\nexport const getNewToken = () => asyncSingleton('getNewToken', getNewTokenRaw);\n","import { verifyExistingToken } from '@/_utils/auth-v3/verify-existing-token';\nimport { asyncSingleton } from '@/_utils/auth-v3/async-singleton';\nimport { getNewToken } from '@/_utils/auth-v3/get-new-token';\nimport { RefreshTokenCookieUnavailable } from '@/_utils/auth-v3/_common/referesh-token-cookie-unavailable';\n\nconst authViaV3Raw = async () => {\n if (!window.ENVS.ENABLE_AUTH_V3) {\n throw new RefreshTokenCookieUnavailable();\n }\n\n return verifyExistingToken()\n .catch(() => getNewToken())\n .catch((error) => {\n console.error(error);\n // TODO temporary fix\n throw new RefreshTokenCookieUnavailable();\n });\n};\n\nexport const authViaV3 = () => asyncSingleton('authViaV3', authViaV3Raw);\n","import { OFFLINE_STATUS_CODE } from '@portals/fetch-api';\nimport { REQUEST_ERROR_STATUS_CODE } from '@portals/fetch-api/dist/constants';\n\nexport const OFFLINE_ERROR_TEXT = 'offline';\n\ntype ParamsType = {\n code: number;\n headers: any;\n};\n\nexport const processOfflineRequestCode = ({ code, headers }: ParamsType) => {\n const offlineStatus =\n typeof navigator.onLine !== 'undefined' && !navigator.onLine;\n\n if (\n offlineStatus ||\n code === OFFLINE_STATUS_CODE ||\n (code === REQUEST_ERROR_STATUS_CODE && !Object.keys(headers).length)\n ) {\n throw new Error(OFFLINE_ERROR_TEXT);\n }\n};\n","export const getIsNotProductionOrigin = () => {\n return /(localhost)|(http:\\/\\/)/.test(window.origin);\n};\n","import { IResponse } from '@portals/fetch-api';\nimport { loadUserPermissionBatchedRequest } from '@wildberries/service-user';\nimport { PermissionsDataItemType } from '@wildberries/databus-service-user';\nimport { getAbacPermissionsDataFeatures } from '../get-abac-permissions-data-features';\nimport { getAbacPermissionsCacheConfig } from '../api-cache/configs/abac-cache-config';\nimport { ABAC_PERMISSIONS_DATA_CACHE_KEY } from '../api-cache/_constants';\n\ntype TParams = {\n supplierId: string | null;\n userId: string;\n onUpdateCache: (data: any) => void;\n};\n\ntype TOutput = Array<\n IResponse & {\n data: {\n decision: boolean;\n data?: PermissionsDataItemType;\n };\n }\n> | null;\n\nexport const fetchUserPermissionsData = async ({\n userId,\n supplierId,\n onUpdateCache,\n}: TParams): Promise => {\n try {\n const browserCacheParams =\n supplierId && userId\n ? {\n ...getAbacPermissionsCacheConfig({\n strategy: 'StaleWhileRevalidate',\n cacheKey: `${ABAC_PERMISSIONS_DATA_CACHE_KEY}-${supplierId}-${userId}`,\n }),\n onUpdateCache,\n }\n : null;\n\n const { data } = await loadUserPermissionBatchedRequest({\n features: getAbacPermissionsDataFeatures(supplierId || ''),\n browserCacheParams,\n });\n\n return data;\n } catch (error) {\n console.error('[fetchUserPermissionsData] get an error', error);\n\n return null;\n }\n};\n","import { PermissionType } from '@wildberries/service-user';\n\ntype ParamsType = {\n features: {\n permitted: any;\n scope: string;\n userID?: number;\n };\n};\n\ntype OutputType = {\n userPermissions: {\n [key: string]: PermissionType;\n };\n};\n\nconst DEFAULT_ABAC_VALUES = {\n permitted: {},\n scope: window.ENVS.MAIN_ABAC_SCOPE,\n};\n\nexport const getFormattedPermissions = ({\n features: { permitted, scope } = DEFAULT_ABAC_VALUES,\n}: ParamsType): OutputType => {\n return {\n userPermissions: { [scope]: permitted },\n };\n};\n","import { setPermissionsAction } from '@wildberries/databus-service-user';\nimport { setUserPermissionsAction } from '@wildberries/service-user';\nimport { Dispatch } from 'redux';\nimport { getFormattedPermissions } from '../../get-formatted-permissions';\n\ntype ParamsType = {\n dispatch: Dispatch;\n permissions: any;\n};\n\nexport const formatPermissionsAndDispatch = ({\n dispatch,\n permissions,\n}: ParamsType) => {\n try {\n const { userPermissions } = getFormattedPermissions(permissions);\n\n dispatch(setUserPermissionsAction({ permissions: userPermissions }));\n setPermissionsAction(userPermissions);\n } catch (error) {\n dispatch(\n setUserPermissionsAction({\n permissions: { [window.ENVS.MAIN_ABAC_SCOPE]: {} },\n }),\n );\n }\n};\n","import { USER_DEVICE_LIST } from '@/_constants';\n\ntype DeviceType = {\n device: string;\n platform: RegExp;\n};\nexport const getDeviceUser = (): string => {\n const { userAgent } = window.navigator;\n const userDevice = USER_DEVICE_LIST.find((device: DeviceType) =>\n device.platform.test(userAgent),\n );\n\n return userDevice ? userDevice.device : 'Неизвестная платформа';\n};\n","import { ExtraVerifyRetryCallbackType } from '@portals/fetch-api/dist/types';\n\nexport const extraVerifyUpgradeNotAuthRetry: ExtraVerifyRetryCallbackType = ({\n formattedResponseData: { code, error },\n}) => {\n if (!error) {\n return false;\n }\n\n if (code === 401 || code === 400) {\n return false;\n }\n\n return true;\n};\n","import { BROWSER_LIST } from '@/_constants';\nimport { getBrowserVersion } from '@/_utils/get-browser-version';\n\nexport const getBrowserInfo = (): string => {\n const { userAgent } = window.navigator;\n const browserNames = Object.keys(BROWSER_LIST);\n\n return (\n browserNames.reduce((acc, browserName) => {\n if (Boolean(acc)) {\n return acc;\n }\n\n if (userAgent.indexOf(browserName) > -1) {\n const browserFullName = BROWSER_LIST[browserName];\n const version = getBrowserVersion({ browserName, userAgent });\n\n return `${browserFullName} ${version}`;\n }\n\n return acc;\n }, '') || 'Unknown Browser'\n );\n};\n","type ParamsType = {\n browserName: string;\n userAgent: string;\n};\n\nexport const getBrowserVersion = ({\n browserName,\n userAgent,\n}: ParamsType): string | undefined => {\n const regExpBody = browserName === 'Safari' ? 'Version' : browserName;\n const regExp = new RegExp(`${regExpBody}/\\\\d+.\\\\d+`);\n const version = userAgent.match(regExp);\n\n return version ? version[0].split('/').pop() : '';\n};\n","import { IResponse, RestRequest } from '@portals/fetch-api';\nimport { extraVerifyNotAuthRetry } from '../_utils/extra-verify-not-auth-retry';\n\nexport type LoginRequestParamsType = {\n options?: {\n notify_code: string;\n };\n token: string;\n device: string;\n version: string;\n endpoint: string;\n middlewaresAreDisabled?: boolean;\n};\n\nexport const loginRequest = ({\n options,\n token,\n device,\n version,\n endpoint,\n middlewaresAreDisabled,\n}: LoginRequestParamsType): Promise =>\n new RestRequest().postRequest({\n endpoint,\n body: {\n options,\n token,\n device,\n version,\n },\n isErrorTextStraightToOutput: true,\n credentials: 'include',\n retry: 2,\n extraVerifyRetry: extraVerifyNotAuthRetry,\n tracingDisabled: true,\n middlewaresAreDisabled,\n extraValidationCallback: ({ statusCode }) => statusCode === 200,\n });\n","/* eslint-disable no-underscore-dangle */\n\nimport Joi from 'joi';\nimport { PureRestRequest } from '@portals/fetch-api';\nimport { extraVerifyNotAuthRetry } from '../_utils/extra-verify-not-auth-retry';\n\ntype ParamsType = {\n endpoint: string;\n middlewaresAreDisabled?: boolean;\n};\n\nexport const grantRequest = ({\n endpoint,\n middlewaresAreDisabled,\n}: ParamsType): Promise =>\n new PureRestRequest().postRequest({\n endpoint,\n body: {},\n responseSchema: Joi.object({\n error: Joi.string().allow(''),\n token: Joi.string(),\n }),\n isErrorTextStraightToOutput: true,\n credentials: 'include',\n retry: 2,\n extraVerifyRetry: extraVerifyNotAuthRetry,\n tracingDisabled: true,\n middlewaresAreDisabled,\n });\n","import {\n GRANT_LOCAL_ENDPOINT,\n LOGIN_CENTRAL_ENDPOINT,\n} from '@/api/endpoints/passport';\nimport { getBrowserInfo } from '@/_utils/get-browser-info';\nimport { getDeviceUser } from '@/_utils/get-device-user';\nimport { grantRequest } from '../../../grant';\nimport { loginRequest } from '../../../login';\n\ntype ParamsType = {\n middlewaresAreDisabled?: boolean;\n};\n\nexport const localGrantAndCentralLogin = async ({\n middlewaresAreDisabled,\n}: ParamsType) => {\n const browserInfo = getBrowserInfo();\n const device = getDeviceUser();\n\n // grant local request\n const {\n data: { token: grantLocalToken, error: grantLocalDataError },\n error: grantLocalError,\n errorText: grantLocalErrorText,\n } = await grantRequest({\n endpoint: GRANT_LOCAL_ENDPOINT,\n middlewaresAreDisabled,\n });\n\n if (grantLocalDataError || !grantLocalToken || grantLocalError) {\n console.error('get grantLocalErrorText:', grantLocalErrorText);\n\n return true;\n }\n\n // login central request\n const { additionalErrors: loginCentralAdditionalErrors } = await loginRequest(\n {\n token: grantLocalToken,\n device,\n version: browserInfo,\n endpoint: LOGIN_CENTRAL_ENDPOINT,\n middlewaresAreDisabled,\n },\n );\n\n if (loginCentralAdditionalErrors && loginCentralAdditionalErrors.error) {\n console.error(\n 'get loginCentralAdditionalErrors:',\n loginCentralAdditionalErrors.error,\n );\n\n return true;\n }\n\n return true;\n};\n","import { OFFLINE_STATUS_CODE } from '@portals/fetch-api';\nimport { REQUEST_ERROR_STATUS_CODE } from '@portals/fetch-api/dist/constants';\nimport { getDeviceUser } from '@/_utils/get-device-user';\nimport { OFFLINE_ERROR_TEXT } from '@/_utils/process-offline-code';\nimport { transformSiteCookieRequest } from '../transform-site-cookie';\nimport { centralGrantAndLocalLogin } from './_utils/central-grant-and-local-login';\nimport { localGrantAndCentralLogin } from './_utils/local-grant-and-central-login';\n\nconst device = getDeviceUser();\n\ntype ParamsType = {\n middlewaresAreDisabled?: boolean;\n};\n\nexport const loginWithSSORequest = async ({\n middlewaresAreDisabled,\n}: ParamsType) => {\n try {\n await centralGrantAndLocalLogin({ middlewaresAreDisabled });\n await localGrantAndCentralLogin({ middlewaresAreDisabled });\n\n return true;\n } catch (error: any) {\n if (error.message === OFFLINE_ERROR_TEXT) {\n return true;\n }\n const offlineStatus =\n typeof navigator.onLine !== 'undefined' && !navigator.onLine;\n // do the tranformation of site's cookie\n const {\n error: transformCookieError,\n errorText: transformCookieErrorText,\n code: transformCookieCode,\n headers: transformCookieHeaders,\n } = await transformSiteCookieRequest({ device, middlewaresAreDisabled });\n if (\n offlineStatus ||\n transformCookieCode === OFFLINE_STATUS_CODE ||\n (transformCookieCode === REQUEST_ERROR_STATUS_CODE &&\n !Object.keys(transformCookieHeaders).length)\n ) {\n return true;\n }\n\n if (transformCookieError) {\n throw Error(transformCookieErrorText);\n }\n\n // if the tranformation success then make local grant and central login\n await localGrantAndCentralLogin({ middlewaresAreDisabled });\n\n return true;\n }\n};\n","import { getBrowserInfo } from '@/_utils/get-browser-info';\nimport { getDeviceUser } from '@/_utils/get-device-user';\nimport {\n GRANT_CENTRAL_ENDPOINT,\n LOGIN_LOCAL_ENDPOINT,\n} from '@/api/endpoints/passport';\nimport { processOfflineRequestCode } from '@/_utils/process-offline-code';\nimport { loginRequest } from '../../../login';\nimport { grantRequest } from '../../../grant';\n\ntype ParamsType = {\n middlewaresAreDisabled?: boolean;\n};\n\nexport const centralGrantAndLocalLogin = async ({\n middlewaresAreDisabled,\n}: ParamsType) => {\n const browserInfo = getBrowserInfo();\n const device = getDeviceUser();\n\n // grant central request\n const {\n data: { token: grantCentralToken, error: grantCentralDataError },\n error: grantCentralError,\n errorText: grantCentralErrorText,\n code: grantCentralResponseCode,\n headers: grantCentralResponseHeaders,\n } = await grantRequest({\n endpoint: GRANT_CENTRAL_ENDPOINT,\n middlewaresAreDisabled,\n });\n if (grantCentralDataError || !grantCentralToken || grantCentralError) {\n processOfflineRequestCode({\n code: grantCentralResponseCode,\n headers: grantCentralResponseHeaders,\n });\n\n throw Error(grantCentralDataError || grantCentralErrorText);\n }\n\n // login local request\n const {\n additionalErrors: loginLocalAdditionalErrors,\n code: loginLocalResponseCode,\n headers: loginLocalResponseHeaders,\n } = await loginRequest({\n token: grantCentralToken,\n device,\n version: browserInfo,\n endpoint: LOGIN_LOCAL_ENDPOINT,\n middlewaresAreDisabled,\n });\n\n if (loginLocalAdditionalErrors && loginLocalAdditionalErrors.error) {\n processOfflineRequestCode({\n code: loginLocalResponseCode,\n headers: loginLocalResponseHeaders,\n });\n throw Error(loginLocalAdditionalErrors.error);\n }\n\n return true;\n};\n","import { IResponse, PureRestRequest } from '@portals/fetch-api';\nimport { TRANSFORM_SITE_COOKIE_ENDPOINT } from '@/api/endpoints/passport';\nimport { extraVerifyUpgradeNotAuthRetry } from './utils/extra-verify-upgrade-not-auth-retry';\n\ntype ParamsType = {\n device: string;\n middlewaresAreDisabled?: boolean;\n};\n\nexport const transformSiteCookieRequest = ({\n device,\n middlewaresAreDisabled,\n}: ParamsType): Promise =>\n new PureRestRequest().postRequest({\n endpoint: TRANSFORM_SITE_COOKIE_ENDPOINT,\n isErrorTextStraightToOutput: true,\n credentials: 'include',\n body: {\n device,\n },\n retry: 2,\n extraVerifyRetry: extraVerifyUpgradeNotAuthRetry,\n tracingDisabled: true,\n middlewaresAreDisabled,\n extraValidationCallback: ({ statusCode }) => statusCode === 200,\n });\n","import { IAdvancedStore } from '@mihanizm56/redux-core-modules';\nimport { Router } from 'router5';\nimport { loadScript } from '@/api/requests/load-script';\nimport { loadStyle } from '@/api/requests/load-style';\n\ntype ParamsType = {\n store: IAdvancedStore;\n router: Router;\n};\n\nexport const fetchExternalPackages = async ({ store, router }: ParamsType) => {\n try {\n // eslint-disable-next-line no-underscore-dangle\n const externalPackagesModules = window.__EXTERNAL_PACKAGES_MODULES__;\n\n await Promise.all(\n externalPackagesModules.map(async (moduleUrl: string) => {\n const loadScriptUrl = `${moduleUrl}/index.js`;\n const loadCSSUrl = `${moduleUrl}/index.css`;\n\n await Promise.all(\n [loadCSSUrl, loadScriptUrl].map(async (item) => {\n try {\n if (item.includes('.css')) {\n loadStyle('', '', item, true);\n\n return;\n }\n\n const {\n externalPackages,\n registrationSaga,\n registrationReducer,\n registrationDependencies,\n registrationActions,\n } = await loadScript('', '', loadScriptUrl, true);\n\n if (externalPackages) {\n store.setDependencies({\n ...store.dependencies,\n externalPackages: {\n ...store.dependencies?.externalPackages,\n ...externalPackages,\n },\n });\n }\n\n if (registrationActions) {\n registrationActions();\n }\n\n if (registrationSaga) {\n registrationSaga({ store });\n }\n\n if (registrationReducer) {\n registrationReducer({ store });\n }\n\n if (registrationDependencies) {\n registrationDependencies({ store, router });\n }\n } catch (error) {\n console.error(\n `Load ext packages module \"${loadScriptUrl}\" get an error`,\n error,\n );\n }\n }),\n );\n }),\n );\n } catch (error: any) {\n console.error(\n 'fetchExternalPackagesWorkerSaga get an error',\n error.message,\n );\n }\n};\n","import { setUserDataAction } from '@wildberries/databus-service-user';\nimport {\n setUserInfoAction,\n setUserPermissionsAction,\n} from '@wildberries/service-user';\nimport { Dispatch } from 'redux';\n\ntype ParamsType = {\n dispatch: Dispatch;\n userInfo: any;\n};\n\nexport const setUserInfo = ({ dispatch, userInfo }: ParamsType) => {\n try {\n if (!userInfo) {\n return;\n }\n\n dispatch(setUserInfoAction({ userInfo }));\n setUserDataAction(userInfo);\n } catch (error) {\n dispatch(\n setUserPermissionsAction({\n permissions: { [window.ENVS.MAIN_ABAC_SCOPE]: {} },\n }),\n );\n }\n};\n","import { setDataPermissionsAction } from '@wildberries/databus-service-user';\nimport {\n PermissionsDataType,\n getAllPermissionsData,\n getFormattedDataABACRefreshResponse,\n getRefreshedPermissions,\n setUserDataPermissionsAction,\n} from '@wildberries/service-user';\nimport { IAdvancedStore } from '@mihanizm56/redux-core-modules';\nimport { fetchUserPermissionsData } from '@/_utils/init-app-utils/fetch-permissions-data';\nimport { getAbacPermissionsDataFeatures } from '@/_utils/get-abac-permissions-data-features';\n\ntype TParams = {\n store: IAdvancedStore;\n supplierId: string | null;\n responseData: Awaited>;\n withPermissionsMerge?: boolean;\n};\n\nconst mergePermissionsData = (\n store: IAdvancedStore,\n newPermissions: PermissionsDataType,\n): PermissionsDataType => {\n const currentUserPermissionsData: PermissionsDataType = getAllPermissionsData(\n store.getState() as never,\n );\n\n const formattedNewPermissionsData = getRefreshedPermissions({\n currentPermissions: currentUserPermissionsData,\n newPermissions,\n });\n\n return formattedNewPermissionsData;\n};\n\nexport const formatPermissionsDataAndDispatch = ({\n supplierId,\n store,\n responseData,\n withPermissionsMerge,\n}: TParams) => {\n try {\n if (!responseData) {\n return;\n }\n\n const features = getAbacPermissionsDataFeatures(supplierId || '');\n\n const formattedPermissionsData = getFormattedDataABACRefreshResponse({\n fullResponse: responseData,\n initialValues: features,\n });\n\n const permissionsData = withPermissionsMerge\n ? mergePermissionsData(store, formattedPermissionsData)\n : formattedPermissionsData;\n\n store.dispatch(setUserDataPermissionsAction({ permissionsData }));\n setDataPermissionsAction(permissionsData);\n } catch (error) {\n console.error('[formatPermissionsDataAndDispatch] get an error', error);\n }\n};\n","/* eslint-disable no-underscore-dangle */\n\nimport {\n fetchUserInfoAction,\n getFormattedFilteredFeatures,\n loadUserPermissionsRequest,\n setUserPermissionsAction,\n} from '@wildberries/service-user';\nimport { IAdvancedStore } from '@mihanizm56/redux-core-modules';\nimport { batchActions } from 'redux-batched-actions';\nimport {\n geti18Next,\n getLocale,\n setLocale,\n setHeadLang,\n setLanguagesListAction,\n setWildcardLocaleCookie,\n} from '@portals/i18next-utils';\nimport i18next from 'i18next';\nimport { IResponse } from '@portals/fetch-api';\nimport { fetchManifestActionSaga } from '@wildberries/service-pwa';\nimport { Router } from 'router5';\nimport { fetchMenuActionSaga } from '@wildberries/service-products';\nimport { selectedSupplierIdSelector } from '@wildberries/databus-service-suppliers';\nimport {\n setSupplierId as setSupplierIdForDigitalFingerPrint,\n setUserDataForDigitalFingerPrint,\n} from '@portals/fingerprint-utils';\nimport {\n appNamespace,\n LAST_SUCCESSFUL_LOGIN_KEY,\n SELLER_PORTAL_ACCESS_TOKEN,\n} from '@/_constants';\nimport { ERROR_PAGE_TRANSLATIONS_MAP } from '@/_assets/i18next';\nimport { errorPageNamespace } from '@/_components/error-page-component/_constants';\nimport { initDatabusSubscriptions } from '@/databus/init-databus-subscriptions';\nimport { fetchPlatformModulesActionSaga } from '@/_redux/platform-modules';\nimport {\n setCoreRequestsErrorAction,\n setCoreRequestsErrorCodeAction,\n setInitLoadingStartAction,\n setInitLoadingStopAction,\n} from '@/_redux/app-state-module';\nimport { loginInstrospectRequest } from '@/api/requests/login-introspect';\nimport { manifestRequest } from '@/api/requests/manifest';\nimport { i18nextNSInit } from '@/_constants/i18next/i18next-init';\nimport { parseJwt } from '@/_utils/auth-v3/get-decode-jwt-token';\nimport { authViaV3 } from '@/_utils/auth-v3/auth-via-v3';\nimport { OFFLINE_ERROR_TEXT } from '../process-offline-code';\nimport { getIsNotProductionOrigin } from '../get-is-not-production-origin';\nimport { getAbacRequestParams } from '../get-abac-request-params';\nimport { getUserInfoCacheConfig } from '../api-cache/configs/user-info-cache-config';\nimport { getFetchMenuCacheKey } from '../api-cache/configs/get-fetch-menu-cache-key';\nimport { getMainMenuRequestConfig } from '../get-main-menu-request-config';\nimport { LocalStorageWorker } from '../localstorage-worker';\nimport { clearUserInfoCache } from '../api-cache/clear-user-info';\nimport { redirectToLoginPage } from '../redirect-to-login';\nimport { fetchUserPermissionsData } from '../init-app-utils/fetch-permissions-data';\nimport { formatPermissionsAndDispatch } from './_utils/format-permissions-and-dispatch';\nimport { getCookie } from './_utils/get-cookie';\nimport { processIntrospectResponse } from './_utils/process-introspect-response';\nimport { fetchExternalPackages } from './_utils/fetch-external-packages';\nimport { setUserInfo } from './_utils/set-user-info';\nimport { formatPermissionsDataAndDispatch } from './_utils/format-permissions-data-and-dispatch';\n\nconst languagesFallback = window.LANGUAGES_FALLBACK;\nconst ROOT_ABAC_FEATURES = (window.ENVS.ROOT_ABAC_FEATURES ||\n []) as Array;\nconst isNotProductionOrigin = getIsNotProductionOrigin();\n\nconst I18N_ERROR_TEXT = 'I18N_ERROR_TEXT';\n\nconst WILDCARD_DOMAIN = window.ENVS.LOCALE_WILDCARD_DOMAIN || '.wildberries.ru';\n\n// eslint-disable-next-line no-underscore-dangle\nconst ROOT_URLS = window.__ROOT_URLS__;\n\ntype ParamsType = {\n store: IAdvancedStore;\n router: Router;\n};\n\nexport const initApp = async ({\n store: { dispatch },\n store,\n router,\n}: ParamsType) => {\n const locale = getLocale({ isFromCookie: true });\n let userId: any;\n let sessionId: any;\n\n try {\n const errorPageTranslations = ERROR_PAGE_TRANSLATIONS_MAP[locale] || {};\n\n // запускаем первичный флаг загрузки\n dispatch(setInitLoadingStartAction());\n // если нет токена в локальном сторадже делаем запрос\n try {\n await authViaV3();\n } catch (authViaV3Error) {\n console.error('error in authViaV3: ', authViaV3Error);\n if (window.ENVS.DISABLE_PASSPORT_FALLBACK) {\n throw authViaV3Error;\n }\n }\n // инициируем все подписки Databus\n initDatabusSubscriptions(store);\n\n // устанавливаем локаль приложения\n setLocale({ locale, isFromCookie: true });\n\n // устанавливаем lang в \n setHeadLang(locale);\n\n // устанавливаем wildcardlocal локаль\n setWildcardLocaleCookie({ locale, domain: WILDCARD_DOMAIN });\n\n // инициализируем i18next\n await geti18Next({ appNamespace, locale, debug: false });\n\n i18nextNSInit(locale);\n\n if (languagesFallback) {\n dispatch(setLanguagesListAction(languagesFallback));\n }\n\n // устанавливаем переводы для страницы ошибок\n i18next.addResourceBundle(\n locale,\n errorPageNamespace,\n errorPageTranslations,\n );\n const accessToken = localStorage.getItem(SELLER_PORTAL_ACCESS_TOKEN) || '';\n // декодируем полученый токен\n const decodeAccessToken = parseJwt(accessToken);\n\n // забираем данные юзера чтобы использовать id юзера как часть кэш-ключа в запросах\n if (!decodeAccessToken) {\n const [introspectResponse] = (await Promise.all([\n loginInstrospectRequest({}),\n fetchExternalPackages({ store, router }),\n ])) as unknown as Array;\n\n await processIntrospectResponse({\n response: introspectResponse,\n isNotProductionOrigin,\n });\n userId =\n introspectResponse.data?.userID ||\n Number(LocalStorageWorker.getItem(`${appNamespace}.id`) ?? 0);\n sessionId = introspectResponse.data?.sessionID || '';\n } else {\n await fetchExternalPackages({ store, router });\n userId = decodeAccessToken?.user;\n sessionId = decodeAccessToken?.session_id;\n LocalStorageWorker.setItem(`${appNamespace}.id`, userId);\n }\n\n // инитим скрипт цифрового отпечатка (делаем это тут, потому что нам нужен sessionId из ответа loginInstrospectRequest)\n setUserDataForDigitalFingerPrint({\n sessionId,\n userId,\n locale,\n });\n\n // NOTE\n // Выглядит как костыль, но databus дает подписаться на событие один раз\n // Поэтому ловим событие через window\n window.addEventListener('@data-subscriber/selected-supplier', () => {\n const supplierId = selectedSupplierIdSelector();\n setSupplierIdForDigitalFingerPrint(supplierId);\n });\n\n LocalStorageWorker.setItem(LAST_SUCCESSFUL_LOGIN_KEY, String(Date.now()));\n\n const featuresFilterList = getFormattedFilteredFeatures(ROOT_ABAC_FEATURES);\n\n const initialAbacParams = getAbacRequestParams({\n getCookie,\n strategy: 'StaleWhileRevalidate',\n userId,\n featuresFilterList,\n });\n\n const supplierId = initialAbacParams.key\n ? `${initialAbacParams.key}`\n : null;\n\n const userPermissionDataParams = {\n supplierId,\n userId,\n onUpdateCache: (response: any) =>\n formatPermissionsDataAndDispatch({\n supplierId,\n store,\n responseData: response?.data,\n // нет гарантии, что данные придут когда в датабасе еще пусто, поэтому лучше смержить\n withPermissionsMerge: true,\n }),\n };\n\n const [permissionsResponse, permissionsDataResponse] = await Promise.all([\n loadUserPermissionsRequest(initialAbacParams),\n fetchUserPermissionsData(userPermissionDataParams),\n ]);\n\n const { data: permissions } = permissionsResponse || {\n data: {},\n error: true,\n };\n\n formatPermissionsAndDispatch({\n dispatch: store.dispatch,\n permissions,\n });\n\n formatPermissionsDataAndDispatch({\n supplierId,\n store,\n responseData: permissionsDataResponse,\n });\n\n setUserInfo({\n userInfo: { id: userId },\n dispatch: store.dispatch,\n });\n\n // намеренно не сделан батчинг - тут нужна производительность.\n // запрашиваем все платформенные модули\n dispatch(fetchPlatformModulesActionSaga());\n\n store.dispatch(\n fetchUserInfoAction({\n browserCacheParams: getUserInfoCacheConfig({\n userId,\n onUpdateCache: ({ data }) => {\n setUserInfo({ userInfo: data.user, dispatch: store.dispatch });\n },\n strategy: 'StaleWhileRevalidate',\n }),\n }),\n );\n\n dispatch(\n fetchManifestActionSaga({\n request: manifestRequest,\n }),\n );\n\n const purePermissions = permissions?.features?.permitted ?? {};\n\n const fetchMenuCacheKey = getFetchMenuCacheKey({ getCookie }).key;\n const fetchMenuConfig = getMainMenuRequestConfig({\n cacheKey: fetchMenuCacheKey,\n strategy: 'StaleWhileRevalidate',\n userId,\n menuFromFileRequest:\n !('menuTakenFromFile' in purePermissions) ||\n purePermissions.menuTakenFromFile,\n // feature to switch default merging\n // todo rename feature\n defaultShown:\n !('activeSupplier' in purePermissions) ||\n purePermissions.activeSupplier,\n });\n\n dispatch(\n fetchMenuActionSaga({\n permissions: purePermissions,\n excludeEndpoinds: ROOT_URLS,\n callbackFinallyLoad: async ({ loadProductsStopAction }) => {\n dispatch(\n batchActions([\n loadProductsStopAction(),\n setInitLoadingStopAction(),\n ]),\n );\n },\n // если ошибка забора модулей то выключаем приложение\n callbackOnError: ({ loadProductsStopAction, errorData }) => {\n const requestId = (errorData.headers['x-request-id'] as string) || '';\n\n dispatch(\n batchActions([\n loadProductsStopAction(),\n setCoreRequestsErrorAction(),\n // setHealthCheckAction(),\n setCoreRequestsErrorCodeAction(requestId),\n setInitLoadingStopAction(),\n ]),\n );\n },\n configs: fetchMenuConfig,\n }),\n );\n } catch (error: any) {\n console.error('error when initialize ROOT: ', error.message);\n\n if (error.message === I18N_ERROR_TEXT) {\n return;\n }\n\n if (error.message === OFFLINE_ERROR_TEXT) {\n // запрашиваем все платформенные модули для того\n // чтобы в оффлайне показать страницу кастомной ошибки\n // в блоке finally сделать не можем ибо надо осуществить запросы ДО того как\n // будет загружены данные о меню\n\n dispatch(\n batchActions([\n fetchPlatformModulesActionSaga(),\n // завершаем первичный флаг загрузки - в остальных случаях будет редирект на логин\n setInitLoadingStopAction(),\n setUserPermissionsAction({\n permissions: { [window.ENVS.MAIN_ABAC_SCOPE]: {} },\n }),\n setCoreRequestsErrorAction(),\n // setHealthCheckAction(),\n ]),\n );\n\n return;\n }\n\n clearUserInfoCache();\n\n redirectToLoginPage(locale);\n }\n};\n","// This optional code is used to register a service worker.\n// register() is not called by default.\n\n// This lets the app load faster on subsequent visits in production, and gives\n// it offline capabilities. However, it also means that developers (and users)\n// will only see deployed updates on subsequent visits to a page, after all the\n// existing tabs open on the page have been closed, since previously cached\n// resources are updated in the background.\n/* eslint-disable no-console */\n/* eslint-disable no-param-reassign */\n// To learn more about the benefits of this model and instructions on how to\n// opt-in, read https://bit.ly/CRA-PWA\n\nconst isLocalhost = Boolean(\n window.location.hostname === 'localhost' ||\n // [::1] is the IPv6 localhost address.\n window.location.hostname === '[::1]' ||\n // 127.0.0.0/8 are considered localhost for IPv4.\n window.location.hostname.match(\n /^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/, // eslint-disable-line\n ),\n);\n\nconst GLOBAL_UPDATE_STATE = {\n needsToReload: false,\n};\n\nwindow.addEventListener('visibilitychange', () => {\n if (document.visibilityState !== 'visible') {\n return;\n }\n\n if (GLOBAL_UPDATE_STATE.needsToReload) {\n window.location.reload();\n }\n});\n\nconst registerValidSW = (swUrl) => {\n navigator.serviceWorker\n .register(swUrl, { updateViaCache: 'none' })\n .then((registration) => {\n registration.onupdatefound = () => {\n const installingWorker = registration.installing;\n if (installingWorker == null) {\n return;\n }\n installingWorker.onstatechange = () => {\n if (installingWorker.state === 'installed') {\n if (navigator.serviceWorker.controller) {\n if (document.hidden) {\n GLOBAL_UPDATE_STATE.needsToReload = true;\n\n return;\n }\n\n // reload on current browser tab\n window.location.reload();\n } else {\n // At this point, everything has been precached.\n // It's the perfect time to display a\n // \"Content is cached for offline use.\" message.\n console.log('Content is cached for offline use.');\n }\n }\n };\n };\n })\n .catch((error) => {\n console.error('Error during service worker registration:', error);\n });\n};\n\nconst checkValidServiceWorker = (swUrl) => {\n // Check if the service worker can be found. If it can't reload the page.\n fetch(swUrl, {\n headers: { 'Service-Worker': 'script' },\n })\n .then((response) => {\n // Ensure service worker exists, and that we really are getting a JS file.\n const contentType = response.headers.get('content-type');\n if (\n response.status === 404 ||\n (contentType != null && contentType.indexOf('javascript') === -1)\n ) {\n // No service worker found. Probably a different app. Reload the page.\n navigator.serviceWorker.ready.then((registration) => {\n registration.unregister().then(() => {\n window.location.reload();\n });\n });\n } else {\n // Service worker found. Proceed as normal.\n registerValidSW(swUrl);\n }\n })\n .catch(() => {\n console.log(\n 'No internet connection found. App is running in offline mode.',\n );\n });\n};\n\nexport const registerServiceWorker = () => {\n if (process.env.NODE_ENV === 'production' && 'serviceWorker' in navigator) {\n // The URL constructor is available in all browsers that support SW.\n const publicUrl = new URL('/', window.location.href);\n if (publicUrl.origin !== window.location.origin) {\n // Our service worker won't work if PUBLIC_URL is on a different origin\n // from what our page is served on. This might happen if a CDN is used to\n // serve assets; see https://github.com/facebook/create-react-app/issues/2374\n return;\n }\n\n window.addEventListener('load', () => {\n const swUrl = '/sw.js';\n\n if (isLocalhost) {\n // This is running on localhost. Let's check if a service worker still exists or not.\n checkValidServiceWorker(swUrl);\n\n // Add some additional logging to localhost, pointing developers to the\n // service worker/PWA documentation.\n navigator.serviceWorker.ready.then(() => {\n console.log(\n 'This web app is being served by a service ' +\n 'worker. To learn more, visit https://bit.ly/CRA-PWA',\n );\n });\n } else {\n // Is not localhost. Just register service worker\n registerValidSW(swUrl);\n }\n });\n }\n};\n\nexport const unregisterServiceWorker = () => {\n if ('serviceWorker' in navigator) {\n navigator.serviceWorker.ready\n .then((registration) => {\n registration.unregister();\n })\n .catch((error) => {\n console.error(error.message);\n });\n }\n};\n","import { BaseAction } from '@mihanizm56/redux-core-modules';\n\nexport const FETCH_LOGIN_NAVIGATION = '@root/FETCH_LOGIN_NAVIGATION';\nexport const fetchLoginNavigationActionSaga: BaseAction = () => ({\n type: FETCH_LOGIN_NAVIGATION,\n});\n","/* eslint-disable no-underscore-dangle */\nimport { call } from 'redux-saga/effects';\nimport { getLocale } from '@portals/i18next-utils';\nimport { OFFLINE_STATUS_CODE } from '@portals/fetch-api';\nimport { REQUEST_ERROR_STATUS_CODE } from '@portals/fetch-api/dist/constants';\nimport { loginInstrospectRequest } from '@/api/requests/login-introspect';\nimport { loginWithSSORequest } from '@/api/requests/login-with-sso';\nimport { redirectToLoginPage } from '@/_utils/redirect-to-login';\nimport { clearUserInfoCache } from '@/_utils/api-cache/clear-user-info';\nimport { authViaV3 } from '@/_utils/auth-v3/auth-via-v3';\nimport { RefreshTokenCookieUnavailable } from '@/_utils/auth-v3/_common/referesh-token-cookie-unavailable';\n\n// если только зашли или уходим\n// если двигаемся внутри одного приложения\n// если не toState.meta.options.replace\nexport function* loginNavigationWorkerSaga() {\n const locale = getLocale({ isFromCookie: true });\n\n try {\n // проверяем локальную сессию\n try {\n yield call(authViaV3);\n } catch (authError) {\n // если в оффлайне то не редиректить пользователя\n if (typeof navigator.onLine !== 'undefined' && !navigator.onLine) {\n return;\n }\n\n if (!(authError instanceof RefreshTokenCookieUnavailable)) {\n throw authError;\n }\n\n const { error, code, headers } = yield call(loginInstrospectRequest, {});\n\n if (\n !error ||\n code === OFFLINE_STATUS_CODE ||\n (code === REQUEST_ERROR_STATUS_CODE && !Object.keys(headers).length)\n ) {\n return;\n }\n\n // попытка SSO\n yield call(loginWithSSORequest, {});\n }\n } catch {\n clearUserInfoCache();\n\n redirectToLoginPage(locale);\n }\n}\n","const BASE_MESSAGE = 'Navigation error';\n\ntype ParamsType = {\n menuName?: string;\n navigateUrl?: string;\n routeName?: string;\n};\n\nexport const getNavigationErrorMessage = ({\n menuName = '',\n routeName = '',\n navigateUrl = '',\n}: ParamsType): string => {\n if (routeName) {\n return `${BASE_MESSAGE}, routeName: ${routeName}`;\n }\n if (navigateUrl) {\n return `${BASE_MESSAGE}, navigateUrl: ${navigateUrl}`;\n }\n if (menuName) {\n return `${BASE_MESSAGE}, menuName: ${menuName}`;\n }\n\n return BASE_MESSAGE;\n};\n","/* eslint-disable no-new-func */\nimport { getActivatedRoutes, IAdvancedRoute } from '@portals/service-router';\nimport { Router, Middleware } from 'router5';\nimport {\n findRouteFromList,\n getProductsData,\n MenuMainProductConfigListType,\n} from '@wildberries/service-products';\nimport { IAdvancedStore } from '@mihanizm56/redux-core-modules';\nimport { fetchRuntimeConfigRequest } from '@/api/requests/fetch-runtime-config';\nimport { getModulePath } from './_utils/get-module-path';\n\nwindow.cachedWindowEnvs = new Map();\n\nexport const setWindowEndpointsMiddleware =\n (store: IAdvancedStore) =>\n (router: Router): Middleware =>\n async (toState, fromState) => {\n const { routes } = router.getDependencies();\n\n const activatedRoutes = getActivatedRoutes(toState, fromState, routes);\n\n await Promise.all(\n activatedRoutes.map(async (routeData: IAdvancedRoute) => {\n const windowEndpointsConfig = routeData?.params\n ?.endpointsConfig as unknown as Record;\n\n const routeName = routeData.name;\n\n if (!windowEndpointsConfig) {\n return;\n }\n\n const { fromWindow, staticPath, customModulePath } =\n windowEndpointsConfig;\n\n if (!fromWindow) {\n return;\n }\n\n try {\n // получаем полный список сервисов\n const productsMenuItems: MenuMainProductConfigListType =\n getProductsData(store.getState() as never);\n\n const routeItem = productsMenuItems.find(\n findRouteFromList({ routeName }),\n );\n\n const modulePath = getModulePath({\n modulePath: staticPath,\n customModulePath,\n });\n\n const serviceEnvs = routeItem?.config?.envs;\n\n if (window.cachedWindowEnvs.has(routeName)) {\n const cachedEnvs = window.cachedWindowEnvs.get(routeName);\n\n if (cachedEnvs) {\n const funcFromText = new Function(cachedEnvs);\n\n funcFromText();\n }\n\n return;\n }\n\n const runtimeRequest =\n Boolean(serviceEnvs) && serviceEnvs !== 'RUNTIME_ENVS'\n ? // если инлайн энвы то просто вернуть их\n { data: serviceEnvs, error: false, errorText: '' }\n : fetchRuntimeConfigRequest(modulePath);\n\n // RUNTIME_ENVS - это шаблон который должен быть заменен на переменные сервиса перед стартом пода\n const { error = false, errorText = '', data } = await runtimeRequest;\n\n if (error) {\n throw new Error(errorText);\n }\n\n const funcFromText = new Function(data);\n\n funcFromText();\n\n window.cachedWindowEnvs.set(routeName, data);\n } catch (error) {\n console.error('load endpoints from window error', error);\n }\n }),\n );\n };\n","// https://web.dev/customize-install/#detect-launch-type\n\nexport const detectIsPWA = () => {\n const isStandalone = window.matchMedia('(display-mode: standalone)').matches;\n\n if (document.referrer.startsWith('android-app://')) {\n return true;\n }\n\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n if (navigator.standalone || isStandalone) {\n return true;\n }\n\n return false;\n};\n","/* eslint-disable no-new-func */\n\ntype ParamsType = {\n getCookie: (cookieName: string) => string;\n};\n\ntype OuputType = {\n key: string;\n};\n\nexport const getSupplierIdFromCookie = ({\n getCookie,\n}: ParamsType): OuputType => {\n const initialSerializedFunction = window.INIT_ABAC_PARAMS_FUNCTION;\n\n if (initialSerializedFunction) {\n try {\n const parsedFunction = new Function(\n `return ${initialSerializedFunction}`,\n )();\n\n return {\n ...parsedFunction({ getCookie }),\n };\n } catch (error) {\n console.error('error in getSupplierIdfromCookie', error);\n\n return {\n key: '',\n };\n }\n }\n\n return {\n key: '',\n };\n};\n","import { analyticsEventEmitter } from '@portals/wb-front-analytics-tracker';\nimport {\n userDataPermissionsSelector,\n userDataSelector,\n} from '@wildberries/databus-service-user';\nimport { getSupplierIdFromCookie } from '../get-supplier-id-from-cookie';\nimport { getCookie } from '../init-app/_utils/get-cookie';\n\nconst ABAC_AB_FEATURE = window.ENVS.AB_EXPERIMENTS_ABAC_FEATURE || 'abGroup';\nconst APP_VERSION = process.env.CI_COMMIT_TAG || 'v0.0.0';\n\nconst additionalParamsGetter = () => {\n const abExperiments =\n userDataPermissionsSelector(window.ENVS.MAIN_ABAC_SCOPE)?.[\n ABAC_AB_FEATURE\n ] || {};\n\n return {\n idUser: userDataSelector().id,\n idSupplier: getSupplierIdFromCookie({ getCookie }).key,\n // для АБ пока отправляем строкой\n splits: JSON.stringify(abExperiments),\n uiRootVersion: APP_VERSION,\n };\n};\n\nexport const initAnalytics = () => {\n const counterId = Number(window.ENVS.WB_ANALYTICS_COUNTER_ID);\n\n analyticsEventEmitter.setAdditionalParamsGetter(additionalParamsGetter);\n\n analyticsEventEmitter.init({ counterId });\n};\n","import { IAdvancedStore } from '@mihanizm56/redux-core-modules';\nimport {\n setPwaPromptIosShownAction,\n setPwaPromptAndroidEventAction,\n} from '@wildberries/service-pwa';\nimport {\n isIOS,\n isChrome,\n isYandex,\n isEdge,\n isDesktop,\n isSafari,\n} from 'react-device-detect';\nimport { detectIsPWA } from '../_utils/detect-pwa';\n\nexport const setPwaPrompt = ({ dispatch }: IAdvancedStore) => {\n const isPWA = detectIsPWA();\n\n if (isPWA) {\n return;\n }\n\n // not listen on ios - just set prompt always\n if (isIOS && isSafari) {\n dispatch(setPwaPromptIosShownAction(true));\n\n return;\n }\n\n if (isChrome || (isYandex && isDesktop) || (isEdge && isDesktop)) {\n window.addEventListener('beforeinstallprompt', (event) => {\n // Prevent the mini-infobar from appearing on mobile\n event.preventDefault();\n\n dispatch(setPwaPromptAndroidEventAction(event));\n });\n\n // after install - hide install button\n window.addEventListener('appinstalled', () => {\n dispatch(setPwaPromptAndroidEventAction(null));\n });\n }\n};\n","import { CRITICAL_ACTION_CODE } from '@/_constants';\n\nexport const checkIsCriticalAction = (code: number): boolean => {\n return !!window.ENVS.MFA_CHECK_ENABLE && code === CRITICAL_ACTION_CODE;\n};\n","import { mfaStateRequest } from '@/api/requests/mfa-state-request';\nimport { MFA_STATE } from '@/api/endpoints/passport';\n\nexport const getMfaState = async (deviceId: string) => {\n const {\n data: { sticker },\n error: MfaStateError,\n errorText: MfaStateErrorText,\n } = await mfaStateRequest({\n endpoint: MFA_STATE,\n deviceId,\n middlewaresAreDisabled: true,\n });\n\n if (MfaStateError) {\n throw new Error(`Error to get state ${MfaStateErrorText}`);\n }\n\n return sticker;\n};\n","import { IResponse, JSONRPCRequest } from '@portals/fetch-api';\n\ntype TMfaStateRequestParams = {\n endpoint: string;\n deviceId: string;\n middlewaresAreDisabled?: boolean;\n};\n\nexport const mfaStateRequest = ({\n endpoint,\n deviceId,\n middlewaresAreDisabled,\n}: TMfaStateRequestParams): Promise =>\n new JSONRPCRequest().makeRequest({\n endpoint,\n body: {\n params: {\n deviceID: deviceId,\n },\n },\n middlewaresAreDisabled,\n isErrorTextStraightToOutput: true,\n credentials: 'include',\n });\n","import { MFA_VALIDATE } from '@/api/endpoints/passport';\nimport { mfaValidateRequest } from '@/api/requests/mfa-validate';\n\nexport const mfaValidate = async ({\n code,\n sticker,\n deviceID,\n}: {\n code: number;\n sticker: string;\n deviceID: string;\n}) => {\n const params = {\n code,\n sticker,\n deviceID,\n };\n\n const { error: MfaValidateError, errorText: MfaValidateErrorText } =\n await mfaValidateRequest({\n endpoint: MFA_VALIDATE,\n middlewaresAreDisabled: true,\n params,\n });\n\n if (MfaValidateError) {\n throw new Error(`Error in mfa validate ${MfaValidateErrorText}`);\n }\n\n return true;\n};\n","import { IResponse, JSONRPCRequest } from '@portals/fetch-api';\n\ntype TMfaValidateRequestParams = {\n endpoint: string;\n middlewaresAreDisabled?: boolean;\n params: { code: number; sticker: string };\n};\n\nexport const mfaValidateRequest = ({\n endpoint,\n middlewaresAreDisabled,\n params,\n}: TMfaValidateRequestParams): Promise =>\n new JSONRPCRequest().makeRequest({\n endpoint,\n body: {\n params,\n },\n middlewaresAreDisabled,\n isErrorTextStraightToOutput: true,\n credentials: 'include',\n });\n","import { setIsUserCriticalAction } from '@wildberries/databus-service-user';\nimport { mfaValidate } from '@/_utils/init-app-utils/requests-proxy/init-request-proxy-verify/_utils/mfa-validate';\nimport { getUserDataCriticalActionCode } from './_utils/get-user-data-critical-action-code';\n\nexport const criticalAction = async ({\n retryRequest,\n sticker,\n deviceId,\n}: {\n retryRequest: any;\n sticker: string;\n deviceId: string;\n}) => {\n await getUserDataCriticalActionCode().then((code: number) => {\n mfaValidate({ code, sticker, deviceID: deviceId }).then(() => {\n retryRequest();\n setIsUserCriticalAction(false);\n });\n });\n};\n","import { setUserDataCriticalActionCodeListener } from '@wildberries/databus-service-user';\n\nexport const getUserDataCriticalActionCode = async (): Promise => {\n return new Promise((resolve) => {\n setUserDataCriticalActionCodeListener(({ criticalActionCode }) => {\n if (criticalActionCode) {\n resolve(criticalActionCode);\n }\n });\n });\n};\n","import { v4 } from 'uuid';\nimport { selectedSupplierIdSelector } from '@wildberries/databus-service-suppliers';\n\nconst LS_KEY = 'deviceIdForCritActionLimited';\nconst MAX_ID_LENGTH = 64;\n\n/**\n * @returns Возвращает фальшивый device id, не имеет отношения к authv3\n */\nexport const getDeviceIdForCritAction = () => {\n const existingDeviceId = localStorage.getItem(LS_KEY);\n if (existingDeviceId) {\n return existingDeviceId;\n }\n\n const uuid = v4();\n const supplierId = selectedSupplierIdSelector();\n const newDeviceId = `crit_${supplierId}_${uuid}`;\n const newDeviceIdLimited = newDeviceId.substring(0, MAX_ID_LENGTH);\n localStorage.setItem(LS_KEY, newDeviceIdLimited);\n\n return newDeviceIdLimited;\n};\n","import { setIsUserCriticalAction } from '@wildberries/databus-service-user';\nimport { getMfaState } from '@/_utils/init-app-utils/requests-proxy/init-request-proxy-verify/_utils/ get-mfa-state';\nimport { criticalAction } from '@/_utils/init-app-utils/requests-proxy/init-request-proxy-verify/_utils/critical-action';\nimport { getDeviceIdForCritAction } from './get-device-id-for-crit-action';\n\nexport const confirmationCriticalAction = async ({\n retryRequest,\n isCriticalAction,\n}: {\n retryRequest: any;\n isCriticalAction: boolean;\n}) => {\n const deviceId = getDeviceIdForCritAction();\n try {\n setIsUserCriticalAction(isCriticalAction);\n await getMfaState(deviceId)\n .then(({ sticker }: { sticker: string }) => {\n criticalAction({ retryRequest, sticker, deviceId });\n })\n .catch((error) => {\n throw new Error(error);\n });\n } catch {\n return false;\n }\n};\n","import { checkIsCurrentDomain } from '../check-is-current-domain';\nimport { externalApiPathRegex } from '../external-api-path-regex';\n\nexport const checkIsExternalApiRequest = (endpoint: string | undefined) => {\n if (!endpoint) {\n return false;\n }\n\n return !checkIsCurrentDomain(endpoint) || externalApiPathRegex.test(endpoint);\n};\n","export const checkIsCurrentDomain = (endpoint: string | undefined): boolean => {\n if (!endpoint) {\n return true;\n }\n\n return (\n endpoint.startsWith('/') || endpoint.startsWith(window.location.origin)\n );\n};\n","import { authViaV3 } from '@/_utils/auth-v3/auth-via-v3';\nimport { asyncSingleton } from '@/_utils/auth-v3/async-singleton';\nimport { RefreshTokenCookieUnavailable } from '@/_utils/auth-v3/_common/referesh-token-cookie-unavailable';\nimport { oldWayLogin } from '../old-way-login';\n\nexport const loginApi = () => {\n return asyncSingleton('loginApi', () =>\n authViaV3().catch((error) => {\n if (error instanceof RefreshTokenCookieUnavailable) {\n return oldWayLogin().then(() => true);\n }\n\n throw error;\n }),\n );\n};\n","import { loginInstrospectRequest } from '@/api/requests/login-introspect';\nimport { loginWithSSORequest } from '@/api/requests/login-with-sso';\n\nexport const oldWayLogin = async () => {\n // check local introspect\n const { error: introspectError } = await loginInstrospectRequest({\n middlewaresAreDisabled: true,\n });\n\n if (introspectError) {\n // check SSO\n await loginWithSSORequest({\n middlewaresAreDisabled: true,\n });\n }\n\n return true;\n};\n","import { IMiddleware, IResponse } from '@portals/fetch-api/dist/types';\nimport { getLocale } from '@portals/i18next-utils';\nimport { OFFLINE_STATUS_CODE } from '@portals/fetch-api';\nimport { redirectToLoginPage } from '@/_utils/redirect-to-login';\nimport { clearUserInfoCache } from '@/_utils/api-cache/clear-user-info';\nimport { checkIsCriticalAction } from '@/_utils/init-app-utils/requests-proxy/init-request-proxy-verify/_utils/check-is-critical-action';\nimport { confirmationCriticalAction } from '@/_utils/init-app-utils/requests-proxy/init-request-proxy-verify/_utils/confirmation-critical-action';\nimport { checkIsExternalApiRequest } from '../_utils/check-is-external-api-request';\nimport { loginApi } from './_utils/login-api';\nimport { getIsNotLogined } from './_utils/get-is-not-logined';\n\nexport const loginMiddleware: IMiddleware = async ({\n pureRequestParams,\n retryRequest,\n response,\n}): Promise => {\n if (!response.error || response.code === OFFLINE_STATUS_CODE) {\n return response;\n }\n\n const locale = getLocale({ isFromCookie: true });\n\n try {\n const isExternalApiRequest = checkIsExternalApiRequest(\n pureRequestParams.endpoint,\n );\n\n // works only with current domain\n if (isExternalApiRequest) {\n // pass to next login-separate-domain-middleware\n return response;\n }\n\n const isCriticalAction = checkIsCriticalAction(pureRequestParams.code);\n\n if (isCriticalAction) {\n await confirmationCriticalAction({ retryRequest, isCriticalAction });\n }\n\n // check if not logined\n const isNotLogined = getIsNotLogined({\n responseBodyJson: JSON.stringify(pureRequestParams.responseBody),\n code: pureRequestParams.code,\n });\n\n if (!isNotLogined) {\n return response;\n }\n\n await loginApi();\n\n // retry request with login\n const responseWithLogin = await retryRequest({\n middlewaresAreDisabled: true,\n });\n\n // return response\n return responseWithLogin;\n } catch (error) {\n // if SSo not valid - there will be an exception - to redirect to login page\n console.error('loginMiddleware error', error);\n\n clearUserInfoCache();\n\n redirectToLoginPage(locale);\n\n return response;\n }\n};\n","import { OFFLINE_STATUS_CODE } from '@portals/fetch-api';\n\ntype ParamsType = {\n responseBodyJson: string;\n code: number;\n};\n\nexport const getIsNotLogined = ({ responseBodyJson, code }: ParamsType) => {\n // check offline and self-domain\n if (code === OFFLINE_STATUS_CODE) {\n return false;\n }\n\n return (\n code === 401 ||\n responseBodyJson.indexOf('empty:user id') !== -1 ||\n responseBodyJson.indexOf('unauthorized') !== -1 ||\n responseBodyJson.indexOf('authorization error') !== -1 ||\n responseBodyJson.indexOf('Не Авторизован') !== -1\n );\n};\n","import { loginInstrospectRequest } from '@/api/requests/login-introspect';\nimport { getCentralGrantToken } from '@/_utils/init-app-utils/requests-proxy/init-request-proxy-verify/login-separate-domain-middleware/_utils/get-central-grant-token';\nimport { loginRequest } from '@/api/requests/login';\nimport { getBrowserInfo } from '@/_utils/get-browser-info';\nimport { getDeviceUser } from '@/_utils/get-device-user';\n\nexport const oldWayExternalLogin = async (apiBaseUrl: string) => {\n const browserInfo = getBrowserInfo();\n const device = getDeviceUser();\n\n // check local introspect and wait for loginMiddleware if there is need to update SSO\n await loginInstrospectRequest({});\n\n // grant central request\n const grantCentralToken = await getCentralGrantToken();\n\n // login local request\n const { error: localLoginError, errorText: localLoginErrorText } =\n await loginRequest({\n token: grantCentralToken,\n device,\n version: browserInfo,\n endpoint: `${apiBaseUrl}/passport/api/v2/auth/login`,\n middlewaresAreDisabled: true,\n });\n\n if (localLoginError) {\n throw new Error(`Error in domain login ${localLoginErrorText}`);\n }\n\n return true;\n};\n","import { grantRequest } from '@/api/requests/grant';\nimport { GRANT_CENTRAL_ENDPOINT } from '@/api/endpoints/passport';\nimport { localGrantAndCentralLogin } from '@/api/requests/login-with-sso/_utils/local-grant-and-central-login';\n\nexport const getCentralGrantToken = async () => {\n // grant central request\n const {\n data: { token: grantCentralToken },\n } = await grantRequest({\n endpoint: GRANT_CENTRAL_ENDPOINT,\n middlewaresAreDisabled: true,\n });\n\n if (grantCentralToken) {\n return grantCentralToken;\n }\n\n await localGrantAndCentralLogin({ middlewaresAreDisabled: true });\n\n const {\n data: {\n token: retryGrantCentralToken,\n error: grantCentralDataError,\n errorText: grantCentralDataErrorText,\n },\n } = await grantRequest({\n endpoint: GRANT_CENTRAL_ENDPOINT,\n middlewaresAreDisabled: true,\n });\n\n if (grantCentralDataError) {\n throw new Error(grantCentralDataErrorText);\n }\n\n return retryGrantCentralToken;\n};\n","import { asyncSingleton } from '@/_utils/auth-v3/async-singleton';\nimport { authViaV3 } from '@/_utils/auth-v3/auth-via-v3';\nimport { upgradeExternalDomain } from '@/_utils/auth-v3/upgrade-external-domain';\nimport { RefreshTokenCookieUnavailable } from '@/_utils/auth-v3/_common/referesh-token-cookie-unavailable';\nimport { oldWayExternalLogin } from '../old-way-external-login';\n\nexport const loginExternalApi = (apiBaseUrl: string) => {\n return asyncSingleton(apiBaseUrl, () =>\n authViaV3()\n .then(() => upgradeExternalDomain(apiBaseUrl))\n .catch((error) => {\n if (error instanceof RefreshTokenCookieUnavailable) {\n return oldWayExternalLogin(apiBaseUrl).then(() => true);\n }\n\n throw error;\n }),\n );\n};\n","import { SELLER_PORTAL_ACCESS_TOKEN } from '@/_constants';\nimport { upgradeCookieRequest } from '@/api/requests/upgrade-cookie';\n\nexport const upgradeExternalDomain = async (apiBaseUrl: string) => {\n const accessToken = localStorage.getItem(SELLER_PORTAL_ACCESS_TOKEN) || '';\n\n if (!accessToken) {\n throw new Error();\n }\n\n const { data, errorText } = await upgradeCookieRequest({\n isCurrentDomainEndpoint: false,\n endpoint: apiBaseUrl,\n token: accessToken,\n });\n\n if (data.success !== 'true') {\n throw new Error(errorText);\n }\n\n return true;\n};\n","import { IMiddleware, IResponse } from '@portals/fetch-api/dist/types';\nimport { OFFLINE_STATUS_CODE } from '@portals/fetch-api';\nimport { saveExternalApiPath } from '@/_utils/auth-v3/downgrade-list';\nimport { checkIsCriticalAction } from '@/_utils/init-app-utils/requests-proxy/init-request-proxy-verify/_utils/check-is-critical-action';\nimport { confirmationCriticalAction } from '@/_utils/init-app-utils/requests-proxy/init-request-proxy-verify/_utils/confirmation-critical-action';\nimport { getExternalApiEndpoint } from '../_utils/get-external-api-endpoint';\nimport { checkIsExternalApiRequest } from '../_utils/check-is-external-api-request';\nimport { getIsNotLoggedInSeparateDomain } from './_utils/get-is-not-logged-in-separate-domain';\nimport { loginExternalApi } from './_utils/login-external-api';\n\nexport const loginSeparateDomainMiddleware: IMiddleware = async ({\n pureRequestParams,\n retryRequest,\n response,\n}): Promise => {\n try {\n const isExternalApiRequest = checkIsExternalApiRequest(\n pureRequestParams.endpoint,\n );\n\n // works only with current domain\n if (!isExternalApiRequest) {\n return response;\n }\n\n const isCriticalAction = checkIsCriticalAction(pureRequestParams.code);\n\n if (isCriticalAction) {\n await confirmationCriticalAction({ retryRequest, isCriticalAction });\n }\n\n const requestEndpoint = getExternalApiEndpoint(pureRequestParams.endpoint);\n\n saveExternalApiPath(requestEndpoint);\n\n if (!response.error || response.code === OFFLINE_STATUS_CODE) {\n return response;\n }\n\n // check if not logined\n const isNotLogined = getIsNotLoggedInSeparateDomain({\n responseBodyJson: JSON.stringify(pureRequestParams.responseBody),\n code: pureRequestParams.code,\n });\n\n if (!isNotLogined) {\n return response;\n }\n\n await loginExternalApi(requestEndpoint);\n\n // retry request with login\n const responseWithLogin = await retryRequest({\n middlewaresAreDisabled: true,\n });\n\n // return response\n return responseWithLogin;\n } catch (error) {\n // if SSo not valid - there will be an exception - silent exit\n console.error('loginSeparateDomainMiddleware error', error);\n\n return response;\n }\n};\n","import { SELLER_PORTAL_DOWNGRADE_LIST } from '@/_constants';\nimport { getListFromStorage } from '../get-list-from-storage';\nimport { parseList } from '../parse-list';\n\nexport const saveExternalApiPath = (apiPath: string) => {\n try {\n const currentList = parseList(getListFromStorage());\n currentList.push(apiPath);\n\n const uniqValues = currentList.reduce((acc, item) => {\n if (!acc.includes(item)) {\n acc.push(item);\n }\n\n return acc;\n }, [] as string[]);\n\n localStorage.setItem(\n SELLER_PORTAL_DOWNGRADE_LIST,\n JSON.stringify(uniqValues),\n );\n // eslint-disable-next-line no-empty\n } catch {}\n};\n","import { OFFLINE_STATUS_CODE } from '@portals/fetch-api';\n\ntype ParamsType = {\n responseBodyJson: string;\n code: number;\n};\n\nexport const getIsNotLoggedInSeparateDomain = ({\n responseBodyJson,\n code,\n}: ParamsType) => {\n // check offline and self-domain\n if (code === OFFLINE_STATUS_CODE) {\n return false;\n }\n\n return (\n code === 401 ||\n code === 403 ||\n responseBodyJson.indexOf('empty:user id') !== -1 ||\n responseBodyJson.indexOf('unauthorized') !== -1 ||\n responseBodyJson.indexOf('authorization error') !== -1 ||\n responseBodyJson.indexOf('Не Авторизован') !== -1\n );\n};\n","/* eslint-disable @typescript-eslint/ban-ts-comment */\n/* eslint-disable no-underscore-dangle */\n\nimport React from 'react';\nimport { createAppStore } from '@mihanizm56/redux-core-modules';\nimport { configureRouter, actionHandler } from '@portals/service-router';\nimport { createRoot } from 'react-dom/client';\nimport i18next from 'i18next';\nimport {\n getI18nextRequestEndpoint,\n i18nReducer,\n I18NEXT_REDUCER_NAME,\n fetchLanguagesWatcherSaga,\n FETCH_LANGUAGES_WATCHER_SAGA_NAME,\n} from '@portals/i18next-utils';\nimport {\n reducerProductsName,\n createFetchProductsWatcherSaga,\n fetchProductsSagaName,\n reducerProducts,\n createNavigateToProductWatcherSaga,\n NAVIGATE_TO_PRODUCT_SAGA_NAME,\n fetchRoutePlugin,\n MenuMainProductConfigListType,\n createPreFetchRouteWatcherSaga,\n PREFETCH_ROUTE_SAGA_NAME,\n} from '@wildberries/service-products';\nimport { RouterProvider } from 'react-router5';\nimport {\n fetchUserInfoWatcherSagaName,\n fetchUserPermissionsWatcherSagaName,\n reducerUser,\n reducerUserName,\n fetchUserInfoWatcherSaga,\n fetchUserPermissionsWatcherSaga,\n} from '@wildberries/service-user';\nimport { sentryLogger } from '@wildberries/service-logger'; /**/\nimport { loadModule } from '@wildberries/service-modules-load';\nimport { ABORT_REQUEST_EVENT_NAME } from '@portals/fetch-api';\nimport {\n fetchUserPermissionsDataWatcherSaga,\n fetchUserPermissionsDataWatcherSagaName,\n refreshUserFeaturesWatcherSaga,\n refreshUserFeaturesWatcherSagaName,\n} from '@wildberries/service-user/lib/redux-module';\nimport { analyticsEventEmitter } from '@portals/wb-front-analytics-tracker';\nimport { reducerPWA, PWAReducerName } from '@wildberries/service-pwa';\nimport { initDigitalFingerPrint } from '@portals/fingerprint-utils';\nimport { App } from '@/_components/app';\nimport { reducerPlatformModulesName } from '@/_redux/platform-modules';\nimport { reducerPlatformModules } from '@/_redux/platform-modules/reducer';\nimport {\n fetchPlatformModulesWatcherSaga,\n FETCH_PLATFORM_MODULES_WATCHER_SAGA_NAME,\n} from '@/_redux/platform-modules/sagas/fetch-platform-modules/fetch-platform-modules-watcher-saga';\nimport {\n reducerAppStateName,\n reducerAppState,\n setTranslateLoadingStartAction,\n setTranslateLoadingStopAction,\n LOGOUT_ROOT_SAGA_NAME,\n logoutWatcherSaga,\n healthCheckWatcherSaga,\n HEALTH_CHECK_SAGA_NAME,\n} from './_redux/app-state-module';\nimport { initApp } from './_utils/init-app';\nimport {\n registerServiceWorker,\n unregisterServiceWorker,\n} from './serviceWorker';\nimport { NOT_FOUND_ROUTE_NAME } from './_constants/routes';\nimport {\n loginNavigationWatcherSaga,\n LOGIN_NAVIGATION_SAGA_NAME,\n} from './_redux/login';\nimport { introspectPassportPlugin } from './router/plugins/login';\nimport { i18nextRequest } from './api/requests/i18next';\nimport { getIsNotProductionOrigin } from './_utils/get-is-not-production-origin';\nimport { createNavigateToNotFoundLogger } from './_utils/navigate-loggers';\nimport { setWindowEndpointsMiddleware } from './router/middlewares/set-window-endpoints';\nimport { initPWAAnalytics } from './_utils/init-app-utils/pwa/analytics';\nimport { initAnalytics } from './_utils/init-app-utils/analytics-init';\nimport { setPwaPrompt } from './_utils/init-app-utils/pwa/prompt';\nimport { initPerformanceMetrics } from './_utils/init-app-utils/init-performance-metrics';\nimport { initRequestProxies } from './_utils/init-app-utils/requests-proxy';\nimport { transitionPlugin } from './router/plugins/transition';\nimport { SWClientUpdatePlugin } from './router/plugins/sw-client-update';\n\nconst isProduction = process.env.NODE_ENV === 'production';\nconst isNotProductionOrigin = getIsNotProductionOrigin();\n\ninitDigitalFingerPrint({\n environment: window.ENVS.RUNTIME_ENV || 'prod',\n enabledVendors: {\n facct: window.ENVS.FINGERPRINT_FACCT_ENABLED,\n bizone: window.ENVS.FINGERPRINT_BIZONE_ENABLED,\n cybertronics: window.ENVS.FINGERPRINT_CYBERTRONICS_ENABLED,\n },\n});\n\nconst SENTRY_VERSION = '5.30.0';\nconst SENTRY_SDK = '@sentry/react';\nconst SENTRY_RELEASE = 'v3.0.0';\n\nconst {\n ENVS: { SENTRY_DSN_CLIENT, DISABLED_SW = false },\n ADDITIONAL_MENU_CONFIG,\n} = window;\n\n// конфигурирование sentry\nif (SENTRY_DSN_CLIENT && isProduction && isNotProductionOrigin) {\n sentryLogger.init({\n dsn: SENTRY_DSN_CLIENT,\n release: SENTRY_RELEASE,\n });\n // eslint-disable-next-line no-console\n console.log('@sentry init done');\n}\n\nif (DISABLED_SW) {\n unregisterServiceWorker();\n} else {\n registerServiceWorker();\n}\n\n// init request proxies\n// if (isProduction && !isNotProductionOrigin) {\ninitRequestProxies();\n// }\n\n// router init\nconst router = configureRouter({\n defaultRoute: NOT_FOUND_ROUTE_NAME,\n eventNameToCancelRequests: ABORT_REQUEST_EVENT_NAME,\n enablei18nMiddleware: true,\n modifiedNavigation: true,\n disabledActionHandler: true,\n enableDeactivationMiddleware: true,\n});\n\n// store init\nconst store = createAppStore({\n router,\n rootReducers: {\n [reducerProductsName]: reducerProducts,\n [reducerUserName]: reducerUser,\n [reducerPlatformModulesName]: reducerPlatformModules,\n [reducerAppStateName]: reducerAppState,\n [I18NEXT_REDUCER_NAME]: i18nReducer,\n [PWAReducerName]: reducerPWA,\n },\n rootSagas: {\n [fetchProductsSagaName]: createFetchProductsWatcherSaga({\n loadModuleFunction: loadModule,\n additionalProductsData:\n ADDITIONAL_MENU_CONFIG as MenuMainProductConfigListType, // can not make typings on window envs\n }),\n [fetchUserInfoWatcherSagaName]: fetchUserInfoWatcherSaga,\n [fetchUserPermissionsWatcherSagaName]: fetchUserPermissionsWatcherSaga,\n [fetchUserPermissionsDataWatcherSagaName]:\n fetchUserPermissionsDataWatcherSaga,\n [FETCH_PLATFORM_MODULES_WATCHER_SAGA_NAME]: fetchPlatformModulesWatcherSaga,\n [LOGOUT_ROOT_SAGA_NAME]: logoutWatcherSaga,\n [PREFETCH_ROUTE_SAGA_NAME]: createPreFetchRouteWatcherSaga(loadModule),\n [NAVIGATE_TO_PRODUCT_SAGA_NAME]: createNavigateToProductWatcherSaga({\n loadModuleFunction: loadModule,\n notFoundRouteName: 'page-not-found',\n navigationErrorLogger: createNavigateToNotFoundLogger({\n sentryVersion: SENTRY_VERSION,\n sentrySDK: SENTRY_SDK,\n release: SENTRY_RELEASE,\n }),\n }),\n [refreshUserFeaturesWatcherSagaName]: refreshUserFeaturesWatcherSaga,\n [FETCH_LANGUAGES_WATCHER_SAGA_NAME]: fetchLanguagesWatcherSaga,\n [LOGIN_NAVIGATION_SAGA_NAME]: loginNavigationWatcherSaga,\n [HEALTH_CHECK_SAGA_NAME]: healthCheckWatcherSaga,\n },\n eventNameToCancelRequests: ABORT_REQUEST_EVENT_NAME,\n reduxStoreName: '@suppliers-portal-store',\n});\n\nrouter.useMiddleware(setWindowEndpointsMiddleware(store));\n\n// router settings\nrouter.setDependencies({\n store,\n i18nextConfig: {\n getLocale: () => i18next.language,\n i18next,\n i18nextRequest,\n actionToStartLoading: setTranslateLoadingStartAction,\n actionToStopLoading: setTranslateLoadingStopAction,\n createEndpoint: getI18nextRequestEndpoint,\n formatterResponseData: (data: { translate: Record }) =>\n data.translate,\n },\n analyticsEventEmitter,\n});\n\n// @ts-ignore\nrouter.usePlugin(fetchRoutePlugin);\n// @ts-ignore\nrouter.usePlugin(introspectPassportPlugin);\n// @ts-ignore\nrouter.usePlugin(transitionPlugin);\n\n// @ts-ignore\nrouter.usePlugin(SWClientUpdatePlugin);\n\nrouter.useMiddleware(actionHandler);\n\nif (isProduction) {\n initAnalytics();\n initPerformanceMetrics();\n initPWAAnalytics();\n setPwaPrompt(store);\n}\n\nconst container = document.getElementById('root') as HTMLElement;\n\nconst root = createRoot(container);\n\n// start App\ninitApp({ store, router }).then(() =>\n root.render(\n \n \n ,\n ),\n);\n","/* eslint-disable no-console */\nimport { initRequestLoggers } from './init-request-loggers';\nimport { initRequestProxyVerify } from './init-request-proxy-verify';\n\nexport const initRequestProxies = async () => {\n console.log('@request-proxies init');\n\n initRequestLoggers();\n initRequestProxyVerify();\n};\n","/* eslint-disable camelcase */\nimport {\n ProxyController,\n SetResponseTrackCallbackOptions,\n} from '@portals/fetch-api';\nimport { sentryLogger } from '@wildberries/service-logger';\n\nconst SENTRY_REQUEST_ERROR_MESSAGE = 'Request error';\n\nexport const initRequestLoggers = () => {\n new ProxyController().setResponseTrackCallback({\n callback: (fetchLogParams: SetResponseTrackCallbackOptions) => {\n if (fetchLogParams.error) {\n sentryLogger.sendEvent({\n message: `${SENTRY_REQUEST_ERROR_MESSAGE} ${fetchLogParams.endpoint}`,\n tags: {\n 'request custom exception': true,\n origin: window.origin,\n 'request-url': fetchLogParams.endpoint,\n url: 'undefined',\n },\n responseData: fetchLogParams,\n level: 'Error',\n request: {\n url: fetchLogParams.endpoint,\n method: fetchLogParams.method as any,\n data: JSON.stringify(fetchLogParams.requestBody, null, 2),\n cookies: {\n all: fetchLogParams.requestCookies,\n },\n headers: fetchLogParams.requestHeaders,\n },\n });\n }\n },\n name: '@root/initRequestLoggers',\n });\n};\n","import { MiddlewaresController } from '@portals/fetch-api';\nimport { loginMiddleware } from './login-middleware';\nimport { loginSeparateDomainMiddleware } from './login-separate-domain-middleware';\n\nexport const initRequestProxyVerify = () => {\n new MiddlewaresController().setMiddleware({\n middleware: loginMiddleware,\n name: '@root/loginMiddleware',\n });\n new MiddlewaresController().setMiddleware({\n middleware: loginSeparateDomainMiddleware,\n name: '@root/loginMiddlewareSeparateDomain',\n });\n};\n","export const NOT_FOUND_ROUTE_NAME = 'page-not-found';\n","/* eslint-disable import/no-cycle */\nimport { take, fork } from 'redux-saga/effects';\nimport { Router } from 'router5';\nimport { IAdvancedStore } from '@mihanizm56/redux-core-modules';\nimport { Dispatch } from 'redux';\nimport { FETCH_PLATFORM_MODULES_SAGA } from '../../actions';\nimport { fetchPlatformModulesWorkerSaga } from './fetch-platform-modules-worker-saga';\n\nexport const FETCH_PLATFORM_MODULES_WATCHER_SAGA_NAME =\n 'FETCH_PLATFORM_MODULES_WATCHER_SAGA_NAME';\n\nexport function* fetchPlatformModulesWatcherSaga({\n router,\n store,\n}: {\n router: Router;\n store: IAdvancedStore;\n dispatch: Dispatch;\n}) {\n while (true) {\n yield take(FETCH_PLATFORM_MODULES_SAGA);\n\n yield fork(fetchPlatformModulesWorkerSaga, { router, store });\n }\n}\n","import { take, fork } from 'redux-saga/effects';\nimport { LOGOUT } from '../../actions';\nimport { logoutWorkerSaga } from './logout-worker-saga';\n\nexport const LOGOUT_ROOT_SAGA_NAME = 'LOGOUT_ROOT_SAGA_NAME';\n\nexport function* logoutWatcherSaga() {\n while (true) {\n yield take(LOGOUT);\n yield fork(logoutWorkerSaga);\n }\n}\n","/* eslint-disable camelcase */\n\nimport * as Sentry from '@sentry/react';\nimport { v4 as uuidv4 } from 'uuid';\nimport { Severity } from '@sentry/react';\nimport { NavigationErrorLogger } from '@wildberries/service-products';\nimport { getNavigationErrorMessage } from './get-navigation-error-message';\n\ntype ParamsType = {\n sentryVersion: string;\n sentrySDK: string;\n release: string;\n};\n\nexport const createNavigateToNotFoundLogger = ({\n release,\n sentryVersion,\n sentrySDK,\n}: ParamsType): NavigationErrorLogger => {\n // eslint-disable-next-line no-console\n console.log('@navigation-loggers init');\n\n return ({ routeName, data, menuName, navigateUrl }) => {\n const message = getNavigationErrorMessage({\n menuName,\n navigateUrl,\n routeName,\n });\n\n Sentry.captureEvent({\n event_id: uuidv4(),\n message,\n release,\n level: Severity.Error,\n sdk: {\n name: sentrySDK,\n version: sentryVersion,\n },\n tags: {\n 'request custom exception': true,\n origin: window.origin,\n routename: routeName,\n url: 'undefined',\n },\n extra: {\n data: JSON.stringify(\n { routeName, data, menuName, navigateUrl },\n null,\n 2,\n ),\n origin: window.origin,\n },\n });\n };\n};\n","import { fork, take, delay } from 'redux-saga/effects';\nimport { FETCH_LOGIN_NAVIGATION } from '../actions';\nimport { loginNavigationWorkerSaga } from './login-worker-saga';\n\n/* eslint-disable no-cond-assign */\n\nexport const LOGIN_NAVIGATION_SAGA_NAME = 'LOGIN_NAVIGATION_SAGA_NAME';\n\nexport function* loginNavigationWatcherSaga() {\n // eslint-disable-next-line\n // @ts-ignore\n while (yield take(FETCH_LOGIN_NAVIGATION)) {\n // because of lacks of type in sagas\n\n yield fork(loginNavigationWorkerSaga);\n\n yield delay(100);\n }\n}\n","import { Dispatch } from 'redux';\nimport { take, fork, cancel } from 'redux-saga/effects';\nimport {\n RESET_HEALTHCHECK_ACTION,\n SET_HEALTHCHECK_ACTION,\n} from '../../actions';\nimport { healthCheckWorkerSaga } from './healtcheck-worker-saga';\n\nexport const HEALTH_CHECK_SAGA_NAME = 'HEALTH_CHECK_SAGA_NAME';\n\ntype ParamsType = {\n dispatch: Dispatch;\n};\n\nexport function* healthCheckWatcherSaga({ dispatch }: ParamsType) {\n // eslint-disable-next-line\n // @ts-ignore\n while (yield take(SET_HEALTHCHECK_ACTION)) {\n // eslint-disable-next-line\n // @ts-ignore\n const task = yield fork(healthCheckWorkerSaga, { dispatch });\n\n yield take(RESET_HEALTHCHECK_ACTION);\n yield cancel(task);\n }\n}\n","import { PureRestRequest } from '@portals/fetch-api';\n\nexport const fetchRuntimeConfigRequest = (endpoint: string) =>\n new PureRestRequest().getRequest({\n parseType: 'text',\n mode: 'cors',\n endpoint,\n cache: 'no-cache',\n isErrorTextStraightToOutput: true,\n retry: 2,\n retryTimeInterval: 3000,\n });\n","type ParamsType = {\n modulePath: string;\n customModulePath?: string;\n};\n\nexport const getModulePath = ({\n modulePath,\n customModulePath,\n}: ParamsType): string => {\n if (customModulePath) {\n return `${customModulePath}/runtime-config.js`;\n }\n\n return `${modulePath}runtime-config.js`;\n};\n","import { PureRestRequest } from '@portals/fetch-api';\nimport Joi from 'joi';\n\ntype ParamsType = {\n endpoint: string;\n version?: string;\n isFileRequest?: boolean;\n};\n\nexport const i18nextRequest = ({\n endpoint,\n version = '',\n isFileRequest,\n}: ParamsType) => {\n return new PureRestRequest().getRequest({\n extraValidationCallback: () => true,\n endpoint,\n parseType: 'json',\n customTimeout: 30000,\n responseSchema: Joi.object({\n translate: Joi.object().required(),\n }).required(),\n isErrorTextStraightToOutput: true,\n retry: 2,\n queryParams: { version },\n notRetryWhenOffline: true,\n pureJsonFileResponse: isFileRequest,\n });\n};\n","import { Plugin, Router, State } from 'router5';\nimport { IRouterDependencies } from '@portals/service-router';\nimport { fetchLoginNavigationActionSaga } from '@/_redux/login';\n\nexport const introspectPassportPlugin = (router?: Router): Plugin => {\n // eslint-disable-next-line\n const { store } = router?.getDependencies() as IRouterDependencies;\n\n return {\n onTransitionSuccess(toState?: State, fromState?: State) {\n const coreRouteFromStateName =\n fromState && fromState.name ? fromState.name.split('.')[0] : null;\n const coreRouteToStateName =\n toState && toState.name ? toState.name.split('.')[0] : null;\n\n const isTheSameRoute =\n fromState && toState && fromState.name === toState.name;\n\n // replace используется для сохранение в урл каких-то значений с перезагрузкой роута\n const isRouteReplaced =\n toState?.meta?.options?.replace &&\n coreRouteToStateName === coreRouteFromStateName;\n\n // если только зашли или уходим\n // если двигаемся внутри одного приложения\n // если не toState.meta.options.replace\n if (\n coreRouteFromStateName &&\n coreRouteToStateName &&\n !isRouteReplaced &&\n !isTheSameRoute\n ) {\n store.dispatch(fetchLoginNavigationActionSaga());\n }\n },\n };\n};\n","import { Plugin, Router, State } from 'router5';\nimport { IRouterDependencies } from '@portals/service-router';\nimport { setFirstRouteTransitionFinishedAction } from '@/_redux/app-state-module';\n\nexport const transitionPlugin = (router?: Router): Plugin => {\n const { store } = router?.getDependencies() as IRouterDependencies;\n\n return {\n onTransitionSuccess(toState?: State, fromState?: State) {\n // если только зашли или уходим\n // если двигаемся внутри одного приложения\n if (toState && !fromState) {\n store.dispatch(setFirstRouteTransitionFinishedAction());\n }\n },\n };\n};\n","/* eslint-disable no-console */\nimport { Plugin, State } from 'router5';\n\nexport const SWClientUpdatePlugin = (): Plugin => ({\n onTransitionStart: (toState: State, fromState: State): void => {\n if (\n (toState && fromState && toState.name === fromState.name) ||\n !fromState\n ) {\n return;\n }\n\n const coreRouteFromStateName = fromState?.name?.split?.('.')?.[0] ?? null;\n const coreRouteToStateName = toState?.name?.split?.('.')?.[0] ?? null;\n\n if (\n coreRouteToStateName !== coreRouteFromStateName &&\n coreRouteFromStateName &&\n coreRouteToStateName &&\n navigator.serviceWorker\n ) {\n navigator.serviceWorker\n .register('/sw.js')\n .then((reg) => reg.update())\n .catch((error) =>\n console.log('SWClientUpdatePlugin gets an error: ', error),\n );\n }\n },\n});\n","import { analyticsEventEmitter } from '@portals/wb-front-analytics-tracker';\nimport { PWA_INIT_EVENT, PWA_INSTALL_EVENT } from '@/_constants/analytics';\nimport { detectIsPWA } from '../_utils/detect-pwa';\n\nexport const initPWAAnalytics = () => {\n window.addEventListener('appinstalled', () => {\n analyticsEventEmitter.sendEvent({\n name: PWA_INSTALL_EVENT,\n customEvent: true,\n });\n });\n\n const isPWA = detectIsPWA();\n\n if (isPWA) {\n analyticsEventEmitter.sendEvent({\n name: PWA_INIT_EVENT,\n customEvent: true,\n });\n }\n};\n","export const FINGERPRINTING_TIME_EVENT = 'Supplier_Basic_Fingerprint_Init_Time';\nexport const PWA_INIT_EVENT = 'Supplier_Basic_PWA_Initiation';\nexport const PWA_INSTALL_EVENT = 'Supplier_Basic_PWA_Install';\n","import i18next from 'i18next';\nimport { APP_NAMESPACE } from '@/_constants/i18next/app-namespace';\nimport { I18N_DICTIONARY } from './translates/dictionary';\n\nexport const backendErrorsSubnamespace = 'backend-errors';\n\nexport const i18nextNSInit = (locale: string) => {\n const wasResourceDownloaded = Boolean(\n i18next.getResourceBundle(locale, APP_NAMESPACE),\n );\n\n if (wasResourceDownloaded) {\n return;\n }\n\n Object.entries(I18N_DICTIONARY).forEach(([currentLocale, translates]) =>\n i18next.addResourceBundle(currentLocale, APP_NAMESPACE, translates),\n );\n};\n","export const parseJwt = (token: string) => {\n if (token) {\n const base64Url = token.split('.')[1];\n const base64 = base64Url.replace(/-/g, '+').replace(/_/g, '/');\n const jsonPayload = decodeURIComponent(\n window\n .atob(base64)\n .split('')\n .map((item) => {\n return `%${`00${item.charCodeAt(0).toString(16)}`.slice(-2)}`;\n })\n .join(''),\n );\n\n return JSON.parse(jsonPayload);\n }\n\n return '';\n};\n","import { IResponse, OFFLINE_STATUS_CODE } from '@portals/fetch-api';\nimport { REQUEST_ERROR_STATUS_CODE } from '@portals/fetch-api/dist/constants';\nimport { loginWithSSORequest } from '@/api/requests/login-with-sso';\nimport { LocalStorageWorker } from '@/_utils/localstorage-worker';\nimport { appNamespace } from '@/_constants';\n\ntype ParamsType = {\n response: IResponse;\n isNotProductionOrigin: boolean;\n};\n\nexport const processIntrospectResponse = async ({\n response,\n isNotProductionOrigin,\n}: ParamsType) => {\n const { error, errorText, code, headers } = response;\n\n if (!error) {\n // save userId to work offline\n LocalStorageWorker.setItem(`${appNamespace}.id`, response.data.userID);\n\n return true;\n }\n\n // process offline\n if (\n // problems with .onLine method\n code === OFFLINE_STATUS_CODE ||\n (code === REQUEST_ERROR_STATUS_CODE && !Object.keys(headers).length)\n ) {\n return true;\n }\n\n // if not production origin - not do SSO at all\n if (isNotProductionOrigin) {\n throw Error(errorText);\n }\n\n await loginWithSSORequest({});\n\n return true;\n};\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","__webpack_require__.amdO = {};","var deferred = [];\n__webpack_require__.O = (result, chunkIds, fn, priority) => {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar [chunkIds, fn, priority] = deferred[i];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every((key) => (__webpack_require__.O[key](chunkIds[j])))) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","var getProto = Object.getPrototypeOf ? (obj) => (Object.getPrototypeOf(obj)) : (obj) => (obj.__proto__);\nvar leafPrototypes;\n// create a fake namespace object\n// mode & 1: value is a module id, require it\n// mode & 2: merge all properties of value into the ns\n// mode & 4: return value when already ns object\n// mode & 16: return value when it's Promise-like\n// mode & 8|1: behave like require\n__webpack_require__.t = function(value, mode) {\n\tif(mode & 1) value = this(value);\n\tif(mode & 8) return value;\n\tif(typeof value === 'object' && value) {\n\t\tif((mode & 4) && value.__esModule) return value;\n\t\tif((mode & 16) && typeof value.then === 'function') return value;\n\t}\n\tvar ns = Object.create(null);\n\t__webpack_require__.r(ns);\n\tvar def = {};\n\tleafPrototypes = leafPrototypes || [null, getProto({}), getProto([]), getProto(getProto)];\n\tfor(var current = mode & 2 && value; typeof current == 'object' && !~leafPrototypes.indexOf(current); current = getProto(current)) {\n\t\tObject.getOwnPropertyNames(current).forEach((key) => (def[key] = () => (value[key])));\n\t}\n\tdef['default'] = () => (value);\n\t__webpack_require__.d(ns, def);\n\treturn ns;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.hmd = (module) => {\n\tmodule = Object.create(module);\n\tif (!module.children) module.children = [];\n\tObject.defineProperty(module, 'exports', {\n\t\tenumerable: true,\n\t\tset: () => {\n\t\t\tthrow new Error('ES Modules may not assign module.exports or exports.*, Use ESM export syntax, instead: ' + module.id);\n\t\t}\n\t});\n\treturn module;\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = (module) => {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t179: 0\n};\n\n// no chunk on demand loading\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = (chunkId) => (installedChunks[chunkId] === 0);\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = (parentChunkLoadingFunction, data) => {\n\tvar [chunkIds, moreModules, runtime] = data;\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some((id) => (installedChunks[id] !== 0))) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = this[\"webpackChunk_wildberries_root\"] = this[\"webpackChunk_wildberries_root\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [408], () => (__webpack_require__(1778)))\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["reducerPlatformModulesName","FETCH_PLATFORM_MODULES_SAGA","fetchPlatformModulesActionSaga","type","SET_PLATFORM_MODULES_DATA","setPlatformModulesAction","payload","SET_LOADING_START","setLoadingStartAction","SET_LOADING_STOP","setLoadingStopAction","initialState","loading","modules","productsManagerStorageSelector","store","getPlatformModulesData","createSelector","getPlatformModulesIsLoading","cachedScripts","Map","loadScript","name","staticURL","jsUrl","fromCDN","cdnData","appVersion","isLocalhost","externalPackages","APP_STATIC_NAMESPACE","WB_STATIC_URL","APP_VERSION","endpoint","replaceStreamPublicPath","promise","has","get","Promise","async","resolve","reject","data","error","errorText","PureRestRequest","getRequest","mode","parseType","retry","extraValidationCallback","cache","Error","source","replace","extensionFn","Function","module","exports","requireModule","bind","console","set","then","component","catch","loadStyle","cssUrl","url","element","document","createElement","href","rel","deadline","timerId","freeMemory","onerror","onload","clearTimeout","setTimeout","onLoad","onError","head","appendChild","fetchPlatformModulesWorkerSaga","router","put","platformModules","window","__PLATFORM_MODULES__","getDependencies","all","map","loadRef","role","loadScriptUrl","JS_CDN","JS","loadCSSUrl","CSS_CDN","CSS","scriptFromCDN","Boolean","cssFromCDN","allSettled","item","includes","Component","registrationSaga","registrationReducer","registrationActions","registrationRouterMiddlewares","registrationRouterPlugins","undefined","forEach","registrationAction","routerMiddleware","useMiddleware","registrationRouterPlugin","usePlugin","routes","loadModule","loadAction","oldRoutes","setDependencies","add","message","reducerAppStateName","SET_TRANSLATE_LOADING_START","SET_TRANSLATE_LOADING_STOP","SET_INIT_LOADING_START","SET_INIT_LOADING_STOP","setInitLoadingStopAction","SET_LOGIN_LOADING_START","LOGOUT","SET_CORE_REQUESTS_ERROR","setCoreRequestsErrorAction","RESET_CORE_REQUESTS_ERROR","resetCoreRequestsErrorAction","resethealthCheckCoreRequestsIntervalAction","SET_HEALTHCHECK_ACTION","INCREMENT_HEALTHCHECK_ACTION","incrementHealthCheckIntervalAction","RESET_HEALTHCHECK_ACTION","resetHealthCheckAction","SET_CORE_REQUESTS_ERROR_CODE","RESET_CORE_REQUESTS_ERROR_CODE","SET_FIRST_ROUTE_TRANSITION_FINISHED","SET_LOGOUT_LOADING_START","setLogoutLoadingStartAction","SET_LOGOUT_LOADING_STOP","setLogoutLoadingStopAction","initLoading","translateIsLoading","loginLoading","coreRequestsError","healthCheckCoreRequestsInterval","coreRequestsErrorCode","firstRouteTransitionFinished","logoutLoading","getTranslationIsLoadingSelector","initLoadingSelector","loginLoadingSelector","coreRequestsErrorSelector","coreRequestsErrorCodeSelector","coreRequestsHealthCheckIntervalSelector","firstRouteTransitionFinishedSelector","logoutIsLoadingSelector","extraVerifyNotAuthRetry","formattedResponseData","code","ENVS","VERSION","ABAC_PERMISSIONS_DATA_CACHE_KEY","appNamespace","BROWSER_LIST","Firefox","YaBrowser","OPR","Trident","Edge","Chrome","Safari","USER_DEVICE_LIST","device","platform","DEFAULT_API_CACHE_PARAMS","storageCacheName","expires","debug","disabledCache","DISABLED_API_CACHE","SELLER_PORTAL_ACCESS_TOKEN","SELLER_PORTAL_DOWNGRADE_LIST","LAST_SUCCESSFUL_LOGIN_KEY","LocalStorageWorker","setItem","key","value","localStorage","JSON","stringify","getItem","storageValue","parse","deleteItem","removeItem","redirectToLoginPage","locale","_window$__ENDPOINTS__","currentAbsolutPath","location","LOGIN_PATH","__ENDPOINTS__","LOGIN_PAGE_ENDPOINT","setLocale","isFromCookie","pathLocale","canRedirectoToLanding","HAS_SUCCESSFUL_LOGIN","SKIP_LANDING","URLSearchParams","search","ENABLE_PORTAL_LANDING","PORTAL_LANDING","clearUserInfoCache","PASSPORT_LOCAL_ENDPOINT","PASSPORT_CENTRAL_ENDPOINT","_window","_window$__ENDPOINTS__2","CENTRAL_PASSPORT","SELLER_AUTH_ENDPOINT","_window$__ENDPOINTS__3","_window2","_window2$__ENDPOINTS_","UPGRADE_COOKIE_ENDPOINT_PATH","DOWNGRADE_COOKIE_ENDPOINT_PATH","GRANT_LOCAL_ENDPOINT","GRANT_CENTRAL_ENDPOINT","LOGIN_LOCAL_ENDPOINT","LOGIN_CENTRAL_ENDPOINT","INTROSPECT_LOCAL_ENDPOINT","TRANSFORM_SITE_COOKIE_ENDPOINT","LOGOUT_LOCAL_ENDPOINT","LOGOUT_CENTRAL_ENDPOINT","LOGOUT_SELLER_AUTH_ENDPOINT","CMP_ENDPOINT","_window3","_window3$__ENDPOINTS_","LOGOUT_CMP_ENDPOINT","CMP_NEW_ENDPOINT","_window4","_window4$__ENDPOINTS_","LOGOUT_CMP_NEW_ENDPOINT","DELIVERY_OPTIONS_ENDPOINT","_window5","_window5$__ENDPOINTS_","LOGOUT_DELIVERY_OPTIONS_ENDPOINT","UPGRADE_COOKIE_ENDPOINT","_window$__ENDPOINTS__4","_window6","_window6$__ENDPOINTS_","DOWNGRADE_COOKIE_ENDPOINT","_window$__ENDPOINTS__5","_window7","_window7$__ENDPOINTS_","AUTH_V3_BASE","_window$__ENDPOINTS__6","_window8","_window8$__ENDPOINTS_","LOGOUT_V3_ENDPOINT","LOGIN_V3_ENDPOINT","SLIDE_CONFIRM_ENDPOINT","MFA_BASE","_window9","_window9$__ENDPOINTS_","MFA_GET_STATE_ENDPOINT","MFA_STATE","MFA_VALIDATE","LOGOUT_NAPI_ENDPOINT","_window$__ENDPOINTS__7","_window10","_window10$__ENDPOINTS","LOGOUT_NAPI","PERSONAL_DATA_LOCAL_ENDPOINT","logoutNapiRequest","credentials","isErrorTextStraightToOutput","extraVerifyRetry","tracingDisabled","middlewaresAreDisabled","responseSchema","Joi","result","required","when","not","otherwise","logoutV3Request","postRequest","RefreshTokenCookieUnavailable","downgradeCookieRequest","requestParams","makeRequestConfig","isCurrentDomainEndpoint","success","getListFromStorage","parseList","list","parsedList","Array","isArray","String","externalApiPathRegex","getExternalApiEndpoint","origin","pathname","URL","splitEndpoint","match","exec","test","externalApiPath","getSanitizedList","localList","sourceList","reduce","acc","push","cleanupList","logoutViaV3","ENABLE_AUTH_V3","logoutV3Error","externalRequests","LOGOUT_REQUIRED_EXTERNAL_ORIGINS","currentDomainRequest","downgradeCookies","logoutOldWay","logoutEndpoints","getLogoutEndpoints","logoutRequiredExternalEndpoints","createLogoutEndpoint","filter","headers","body","statusCode","logoutRequest","logoutWorkerSaga","call","authError","getLocale","setUserDataForDigitalFingerPrint","getMenuCacheConfig","cacheKey","strategy","requestCacheKey","getMainMenuRequestConfig","userId","menuFromFileRequest","defaultShown","MAIN_ABAC_SCOPE","LOAD_MENU_REQUEST_ENDPOINT","LOAD_MENU_FILE_REQUEST_ENDPOINT","loadMenuRequestEndpoint","browserCacheParams","getCookie","cookieName","cookie","split","cookies","trim","getFetchMenuCacheKey","initialSerializedFunction","FETCH_MENU_CACHE_KEY_FUNCTION","parsedFunction","sentryLogger","sendError","project","healthCheckWorkerSaga","dispatch","id","select","getUserInfo","refreshInterval","delay","fetchUserPermissionsAction","customPermissionsRequestParams","scope","noRetry","withoutErrorNotification","withoutLoadingIndicator","successCallbackFinallyLoad","loadingStopAction","fetchMenuCacheKey","fetchMenuActionSaga","successActionsArray","errorAction","configs","cn","classNames","BLOCK_NAME","Text","memo","color","isUpperCase","size","tagType","Tag","text","isEllipsis","whiteSpace","title","textRef","_jsx","ref","className","children","errorPageNamespace","classnames","Card","_jsxs","i18next","t","ErrorPageComponent","EXTERNAL_FRAMEWORKS","angular","vue","react","API_CACHE_STORAGE_PATTERN","pruneProjectsApiCaches","t1","performance","now","prunedCaches","log","projectsStorageNames","caches","keys","formattedStorageData","projectStorageNames","projectStorageName","_projectCachedRespons","_Number","_firstResponse$header","_firstResponse$header2","awaitedAcc","projectStorage","open","projectCachedResponses","projectCachedFirstResponseUrl","length","firstResponse","firstResponseTimestamp","Number","projectName","formattedData","storageName","timestamp","getFormattedStorageData","Object","values","projectStorages","oldProjectStorages","sort","prev","next","slice","delete","pruneProjectStorages","t2","duration","prunedCachesCount","initPerformanceMetrics","performanceMonitor","init","addMeasurement","measurementData","tti","ttiPolyfill","sendMeasurements","pruneRequestCaches","pruneApiCaches","MeasuredContent","PerformanceTrackHOC","componentEventName","mountedCallback","appLoadedMeasureSendCallback","Content","content","framework","route","useEffect","RouteContent","RouteNode","nodeName","WrappedComponent","Layout","ErrorPage","Preview","platformLoaded","translationIsLoading","handleLogout","isLogoutLoading","errorCode","previewPage","routeContent","_Fragment","LayoutView","WrappedContainer","productsMenuIsLoading","userInfoIsLoading","platformModulesIsLoading","userPermissionsIsLoading","rootInitLoading","logout","setPlatformLoaded","useState","isLoading","getIsLayoutLoaded","useCallback","mapDispatchToProps","logoutAction","ConnectedLayout","compose","withRouter","connect","state","getUserInfoIsLoading","getUserPermissionsIsLoading","getProductsMenuIsLoading","RootComponents","App","Provider","ERROR_PAGE_TRANSLATIONS_MAP","translationsRU","translationsEN","translationsCN","getAbacPermissionsCacheConfig","getAbacRequestParams","featuresFilterList","INIT_ABAC_PARAMS_FUNCTION","initialParams","ignoreResponseIdCompare","getFormattedFilteredFeatures","getUserInfoCacheConfig","onUpdateCache","ABAC_DATA_PERMISSIONS_FEATURES","ABAC_PERMISSIONS_DATA_FEATURES","getAbacPermissionsDataFeatures","supplierId","featureKey","ROOT_ABAC_FEATURES","loginInstrospectRequest","sessionID","userID","notRetryWhenOffline","customTimeout","manifestRequest","pureJsonFileResponse","APP_NAMESPACE","I18N_DICTIONARY","en","translateEN","ru","translateRU","translateCN","zh","tr","ka","personalDataRequest","translateFunction","upgradeCookieRequest","token","AuthorizeV3","pendingRequests","asyncSingleton","promiseMaker","finally","ValidateTokenError","constructor","super","handleOfflineError","OFFLINE_STATUS_CODE","REQUEST_ERROR_STATUS_CODE","validateToken","accessToken","upgradeCookieResponse","personalDataResponse","validateTokenRaw","verifyExistingTokenRaw","is","access_token","slideRequest","slideConfirmRequest","sticker","getNewTokenRaw","slideErrorText","slideConfirmError","confirmResult","authViaV3Raw","authViaV3","OFFLINE_ERROR_TEXT","processOfflineRequestCode","navigator","onLine","getIsNotProductionOrigin","fetchUserPermissionsData","loadUserPermissionBatchedRequest","features","DEFAULT_ABAC_VALUES","permitted","formatPermissionsAndDispatch","permissions","userPermissions","getFormattedPermissions","setUserPermissionsAction","setPermissionsAction","getDeviceUser","userAgent","userDevice","find","extraVerifyUpgradeNotAuthRetry","getBrowserInfo","browserName","indexOf","browserFullName","version","getBrowserVersion","regExp","RegExp","pop","loginRequest","options","RestRequest","grantRequest","allow","localGrantAndCentralLogin","browserInfo","grantLocalToken","grantLocalDataError","grantLocalError","grantLocalErrorText","additionalErrors","loginCentralAdditionalErrors","loginWithSSORequest","grantCentralToken","grantCentralDataError","grantCentralError","grantCentralErrorText","grantCentralResponseCode","grantCentralResponseHeaders","loginLocalAdditionalErrors","loginLocalResponseCode","loginLocalResponseHeaders","centralGrantAndLocalLogin","offlineStatus","transformCookieError","transformCookieErrorText","transformCookieCode","transformCookieHeaders","transformSiteCookieRequest","fetchExternalPackages","externalPackagesModules","__EXTERNAL_PACKAGES_MODULES__","moduleUrl","registrationDependencies","_store$dependencies","dependencies","setUserInfo","userInfo","setUserInfoAction","setUserDataAction","formatPermissionsDataAndDispatch","responseData","withPermissionsMerge","formattedPermissionsData","getFormattedDataABACRefreshResponse","fullResponse","initialValues","permissionsData","mergePermissionsData","newPermissions","currentUserPermissionsData","getAllPermissionsData","getState","getRefreshedPermissions","currentPermissions","setUserDataPermissionsAction","setDataPermissionsAction","languagesFallback","LANGUAGES_FALLBACK","isNotProductionOrigin","WILDCARD_DOMAIN","LOCALE_WILDCARD_DOMAIN","ROOT_URLS","__ROOT_URLS__","hostname","GLOBAL_UPDATE_STATE","needsToReload","addEventListener","visibilityState","reload","registerValidSW","swUrl","serviceWorker","register","updateViaCache","registration","onupdatefound","installingWorker","installing","onstatechange","controller","hidden","registerServiceWorker","fetch","response","contentType","status","ready","unregister","checkValidServiceWorker","FETCH_LOGIN_NAVIGATION","loginNavigationWorkerSaga","BASE_MESSAGE","cachedWindowEnvs","detectIsPWA","isStandalone","matchMedia","matches","referrer","startsWith","standalone","getSupplierIdFromCookie","ABAC_AB_FEATURE","AB_EXPERIMENTS_ABAC_FEATURE","additionalParamsGetter","_userDataPermissionsS","abExperiments","userDataPermissionsSelector","idUser","userDataSelector","idSupplier","splits","uiRootVersion","process","checkIsCriticalAction","MFA_CHECK_ENABLE","getMfaState","MfaStateError","MfaStateErrorText","mfaStateRequest","deviceId","JSONRPCRequest","makeRequest","params","deviceID","mfaValidate","MfaValidateError","MfaValidateErrorText","mfaValidateRequest","criticalAction","retryRequest","setUserDataCriticalActionCodeListener","criticalActionCode","getUserDataCriticalActionCode","setIsUserCriticalAction","LS_KEY","confirmationCriticalAction","isCriticalAction","getDeviceIdForCritAction","existingDeviceId","uuid","v4","newDeviceIdLimited","selectedSupplierIdSelector","substring","checkIsExternalApiRequest","checkIsCurrentDomain","loginApi","introspectError","oldWayLogin","loginMiddleware","pureRequestParams","getIsNotLogined","responseBodyJson","responseBody","oldWayExternalLogin","retryGrantCentralToken","grantCentralDataErrorText","getCentralGrantToken","localLoginError","localLoginErrorText","apiBaseUrl","loginExternalApi","upgradeExternalDomain","loginSeparateDomainMiddleware","requestEndpoint","apiPath","currentList","uniqValues","saveExternalApiPath","getIsNotLoggedInSeparateDomain","initDigitalFingerPrint","environment","RUNTIME_ENV","enabledVendors","facct","FINGERPRINT_FACCT_ENABLED","bizone","FINGERPRINT_BIZONE_ENABLED","cybertronics","FINGERPRINT_CYBERTRONICS_ENABLED","SENTRY_RELEASE","SENTRY_DSN_CLIENT","DISABLED_SW","ADDITIONAL_MENU_CONFIG","dsn","release","ProxyController","setResponseTrackCallback","callback","fetchLogParams","sendEvent","tags","level","request","method","requestBody","requestCookies","requestHeaders","MiddlewaresController","setMiddleware","middleware","initRequestProxies","configureRouter","defaultRoute","eventNameToCancelRequests","ABORT_REQUEST_EVENT_NAME","enablei18nMiddleware","modifiedNavigation","disabledActionHandler","enableDeactivationMiddleware","createAppStore","rootReducers","reducerProductsName","reducerProducts","reducerUserName","reducerUser","reducerPlatformModules","reducerAppState","I18NEXT_REDUCER_NAME","i18nReducer","PWAReducerName","reducerPWA","rootSagas","fetchProductsSagaName","createFetchProductsWatcherSaga","loadModuleFunction","additionalProductsData","fetchUserInfoWatcherSagaName","fetchUserInfoWatcherSaga","fetchUserPermissionsWatcherSagaName","fetchUserPermissionsWatcherSaga","fetchUserPermissionsDataWatcherSagaName","fetchUserPermissionsDataWatcherSaga","take","fork","PREFETCH_ROUTE_SAGA_NAME","createPreFetchRouteWatcherSaga","NAVIGATE_TO_PRODUCT_SAGA_NAME","createNavigateToProductWatcherSaga","notFoundRouteName","navigationErrorLogger","createNavigateToNotFoundLogger","sentryVersion","sentrySDK","routeName","menuName","navigateUrl","getNavigationErrorMessage","Sentry","event_id","uuidv4","Severity","sdk","routename","extra","refreshUserFeaturesWatcherSagaName","refreshUserFeaturesWatcherSaga","FETCH_LANGUAGES_WATCHER_SAGA_NAME","fetchLanguagesWatcherSaga","task","cancel","reduxStoreName","toState","fromState","activatedRoutes","getActivatedRoutes","_routeData$params","windowEndpointsConfig","routeData","endpointsConfig","fromWindow","staticPath","customModulePath","_routeItem$config","routeItem","getProductsData","findRouteFromList","modulePath","getModulePath","serviceEnvs","config","envs","cachedEnvs","funcFromText","runtimeRequest","retryTimeInterval","setWindowEndpointsMiddleware","i18nextConfig","language","i18nextRequest","isFileRequest","translate","queryParams","actionToStartLoading","setTranslateLoadingStartAction","actionToStopLoading","setTranslateLoadingStopAction","createEndpoint","getI18nextRequestEndpoint","formatterResponseData","analyticsEventEmitter","fetchRoutePlugin","onTransitionSuccess","_toState$meta","_toState$meta$options","coreRouteFromStateName","coreRouteToStateName","isTheSameRoute","isRouteReplaced","meta","SWClientUpdatePlugin","onTransitionStart","_fromState$name$split","_fromState$name","_fromState$name$split2","_fromState$name$split3","_toState$name$split$","_toState$name","_toState$name$split","_toState$name$split$c","reg","update","actionHandler","initAnalytics","counterId","WB_ANALYTICS_COUNTER_ID","setAdditionalParamsGetter","customEvent","setPwaPrompt","isIOS","isSafari","setPwaPromptIosShownAction","isChrome","isYandex","isDesktop","isEdge","event","preventDefault","setPwaPromptAndroidEventAction","container","getElementById","root","createRoot","sessionId","_permissions$features","_permissions$features2","errorPageTranslations","authViaV3Error","DISABLE_PASSPORT_FALLBACK","setFetchProductsListener","actionParams","getUserPermissions","fetchMenuConfig","menuTakenFromFile","activeSupplier","fetchMenuActionSagaParams","setFetchUserDataListener","fetchUserInfoAction","setFetchPermissionsListener","fetchUserPermissionsParams","fetchUserPermissionsDataParams","featuresList","batchActions","fetchUserPermissionsDataAction","setRefreshPermissionsListener","refreshUserFeaturesActionSaga","setNavigateProductListener","navigateToProductActionSaga","setPrefetchProductListener","preloadRouteAction","initDatabusSubscriptions","setHeadLang","setWildcardLocaleCookie","domain","geti18Next","getResourceBundle","entries","currentLocale","translates","addResourceBundle","i18nextNSInit","setLanguagesListAction","decodeAccessToken","base64","jsonPayload","decodeURIComponent","atob","charCodeAt","toString","join","parseJwt","user","session_id","_introspectResponse$d","_LocalStorageWorker$g","_introspectResponse$d2","introspectResponse","processIntrospectResponse","setSupplierIdForDigitalFingerPrint","Date","initialAbacParams","userPermissionDataParams","permissionsResponse","permissionsDataResponse","loadUserPermissionsRequest","fetchManifestActionSaga","purePermissions","excludeEndpoinds","callbackFinallyLoad","loadProductsStopAction","callbackOnError","errorData","requestId","initApp","render","RouterProvider","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","loaded","__webpack_modules__","m","amdO","deferred","O","chunkIds","fn","priority","notFulfilled","Infinity","i","fulfilled","j","every","splice","r","n","getter","__esModule","d","a","leafPrototypes","getProto","getPrototypeOf","obj","this","ns","create","def","current","getOwnPropertyNames","definition","o","defineProperty","enumerable","g","globalThis","e","hmd","prop","prototype","hasOwnProperty","Symbol","toStringTag","nmd","paths","installedChunks","chunkId","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","some","chunkLoadingGlobal","__webpack_exports__"],"sourceRoot":""}