{"version":3,"file":"static/js/main.ce200ccb.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/index.ts","api/requests/personal-data/make-request-config.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/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-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 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 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 { 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 { 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 { 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 { 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 validateTokenRaw = async (accessToken: string) => {\n const {\n code: upgradeCookieCode,\n error: upgradeCookieError,\n errorText: upgradeCookieErrorText,\n } = await upgradeCookieRequest({\n token: accessToken,\n middlewaresAreDisabled: true,\n });\n\n if (upgradeCookieError) {\n throw new ValidateTokenError(upgradeCookieErrorText, upgradeCookieCode);\n }\n\n const {\n code: personalDataCode,\n error: personalDataError,\n errorText: personalDataErrorText,\n } = await personalDataRequest({\n middlewaresAreDisabled: true,\n });\n\n if (personalDataError) {\n throw new ValidateTokenError(personalDataErrorText, personalDataCode);\n }\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 {\n ValidateTokenError,\n validateToken,\n} 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) {\n if (\n error instanceof ValidateTokenError &&\n error.code === OFFLINE_STATUS_CODE\n ) {\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 throw new Error('[formatPermissionsDataAndDispatch] empty responseData');\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 {\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;\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 }\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 } else {\n await fetchExternalPackages({ store, router });\n userId = decodeAccessToken?.user;\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","import { analyticsEventEmitter } from '@portals/wb-front-analytics-tracker';\nimport {\n userDataPermissionsSelector,\n userDataSelector,\n} from '@wildberries/databus-service-user';\nimport { selectedSupplierIdSelector } from '@wildberries/databus-service-suppliers';\n\nconst ABAC_AB_FEATURE = window.ENVS.AB_EXPERIMENTS_ABAC_FEATURE || 'abGroup';\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: selectedSupplierIdSelector(),\n // для АБ пока отправляем строкой\n splits: JSON.stringify(abExperiments),\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 { 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 { 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 // 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 { 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 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 const translates = I18N_DICTIONARY[locale] ?? {};\n\n i18next.addResourceBundle(locale, APP_NAMESPACE, translates);\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__(9735)))\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","LOGOUT_NAPI_ENDPOINT","_window$__ENDPOINTS__7","_window9","_window9$__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","validateToken","accessToken","upgradeCookieCode","upgradeCookieError","upgradeCookieErrorText","personalDataCode","personalDataError","personalDataErrorText","validateTokenRaw","verifyExistingTokenRaw","OFFLINE_STATUS_CODE","is","access_token","slideRequest","slideConfirmRequest","sticker","getNewTokenRaw","slideErrorText","slideConfirmError","confirmResult","authViaV3Raw","authViaV3","OFFLINE_ERROR_TEXT","processOfflineRequestCode","navigator","onLine","REQUEST_ERROR_STATUS_CODE","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","ABAC_AB_FEATURE","AB_EXPERIMENTS_ABAC_FEATURE","additionalParamsGetter","_userDataPermissionsS","abExperiments","userDataPermissionsSelector","idUser","userDataSelector","idSupplier","selectedSupplierIdSelector","splits","checkIsExternalApiRequest","checkIsCurrentDomain","loginApi","introspectError","oldWayLogin","loginMiddleware","pureRequestParams","retryRequest","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","params","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","_permissions$features","_permissions$features2","errorPageTranslations","authViaV3Error","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","_I18N_DICTIONARY$loca","getResourceBundle","translates","addResourceBundle","i18nextNSInit","setLanguagesListAction","decodeAccessToken","base64","jsonPayload","decodeURIComponent","atob","charCodeAt","toString","join","parseJwt","user","_introspectResponse$d","_LocalStorageWorker$g","introspectResponse","processIntrospectResponse","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":""}