{"version":3,"file":"static/js/main.2afcb4b4.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/redirect-to-login.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/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","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/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/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/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","_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","index.tsx","_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/analytics-init.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 '@mihanizm56/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 '@mihanizm56/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","import { setLocale } from '@wildberries/i18next-utils';\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 window.location.href = `${LOGIN_PATH}/${locale}?redirect_url=${currentAbsolutPath}`;\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","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","export class LocalStorageWorker {\n static setItem = (key: string, value: any) => {\n if (typeof value === 'string') {\n return localStorage.setItem(key, value);\n }\n\n localStorage.setItem(key, JSON.stringify(value));\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 { 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 '@mihanizm56/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 '@mihanizm56/fetch-api';\nimport { makeRequestConfig } from './make-request-config';\n\nexport const logoutV3Request = (): Promise =>\n new PureRestRequest().postRequest(makeRequestConfig());\n","import { IRequestParams } from '@mihanizm56/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 '@mihanizm56/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 '@mihanizm56/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 '@wildberries/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 '@mihanizm56/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 '@mihanizm56/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 '@mihanizm56/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 '@mihanizm56/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 '@wildberries/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';\n\nconst RU_LOCALE = 'ru';\nconst EN_LOCALE = 'en';\nconst CN_LOCALE = 'cn';\nconst ZH_LOCALE = 'zh';\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};\n","import {\n BrowserCacheParamsType,\n RequestCacheStrategy,\n} from '@mihanizm56/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 '@mihanizm56/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 '@mihanizm56/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","/* 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} from '@wildberries/service-user';\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';\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 store.dispatch(\n fetchUserPermissionsAction(\n key\n ? { ...fetchUserPermissionsParams, key }\n : fetchUserPermissionsParams,\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 '@mihanizm56/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 '@mihanizm56/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';\n\nexport const I18N_DICTIONARY: Record = {\n en: translateEN,\n ru: translateRU,\n cn: translateCN,\n zh: translateCN,\n};\n","import { IResponse, PureRestRequest } from '@mihanizm56/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 '@mihanizm56/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 '@mihanizm56/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 '@mihanizm56/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\nconst validateTokenRaw = async (accessToken: string) => {\n const { error: upgradeCookieError, errorText: upgradeCookieErrorText } =\n await upgradeCookieRequest({\n token: accessToken,\n middlewaresAreDisabled: true,\n });\n\n if (upgradeCookieError) {\n throw new Error(upgradeCookieErrorText);\n }\n\n const { error: personalDataError, errorText: personalDataErrorText } =\n await personalDataRequest({\n middlewaresAreDisabled: true,\n });\n\n if (personalDataError) {\n throw new Error(personalDataErrorText);\n }\n\n return true;\n};\n\nexport const validateToken = (accessToken: string) =>\n asyncSingleton('validationToken', () => validateTokenRaw(accessToken));\n","import { SELLER_PORTAL_ACCESS_TOKEN } from '@/_constants';\nimport { validateToken } from '@/_utils/auth-v3/validate-token';\nimport { asyncSingleton } from '@/_utils/auth-v3/async-singleton';\n\nconst verifyExistingTokenRaw = async () => {\n const accessToken = localStorage.getItem(SELLER_PORTAL_ACCESS_TOKEN) || '';\n\n if (!accessToken) {\n throw new Error();\n }\n\n try {\n await validateToken(accessToken);\n } catch (error) {\n localStorage.removeItem(SELLER_PORTAL_ACCESS_TOKEN);\n\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 '@mihanizm56/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 '@mihanizm56/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 '@mihanizm56/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 '@mihanizm56/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 '@mihanizm56/fetch-api';\nimport { REQUEST_ERROR_STATUS_CODE } from '@mihanizm56/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 { 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 '@mihanizm56/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 '@mihanizm56/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 '@mihanizm56/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 '@mihanizm56/fetch-api';\nimport { REQUEST_ERROR_STATUS_CODE } from '@mihanizm56/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 '@mihanizm56/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","/* 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 '@wildberries/i18next-utils';\nimport i18next from 'i18next';\nimport { IResponse } from '@mihanizm56/fetch-api';\nimport { fetchManifestActionSaga } from '@wildberries/service-pwa';\nimport { Router } from 'router5';\nimport { fetchMenuActionSaga } from '@wildberries/service-products';\nimport { appNamespace, SELLER_PORTAL_ACCESS_TOKEN } 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 { 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';\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 const featuresFilterList = getFormattedFilteredFeatures(ROOT_ABAC_FEATURES);\n\n const initialAbacParams = getAbacRequestParams({\n getCookie,\n strategy: 'StaleWhileRevalidate',\n userId,\n featuresFilterList,\n });\n const permissionsResponse = await loadUserPermissionsRequest(\n initialAbacParams,\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 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 '@wildberries/i18next-utils';\nimport { OFFLINE_STATUS_CODE } from '@mihanizm56/fetch-api';\nimport { REQUEST_ERROR_STATUS_CODE } from '@mihanizm56/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 {\n getActivatedRoutes,\n IAdvancedRoute,\n} from '@wildberries/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 { 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 '@mihanizm56/fetch-api/dist/types';\nimport { getLocale } from '@wildberries/i18next-utils';\nimport { OFFLINE_STATUS_CODE } from '@mihanizm56/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 '@mihanizm56/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 '@mihanizm56/fetch-api/dist/types';\nimport { OFFLINE_STATUS_CODE } from '@mihanizm56/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 '@mihanizm56/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 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 '@mihanizm56/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 '@mihanizm56/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","/* 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 '@wildberries/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 '@wildberries/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 '@mihanizm56/fetch-api';\nimport {\n refreshUserFeaturesWatcherSaga,\n refreshUserFeaturesWatcherSagaName,\n} from '@wildberries/service-user/lib/redux-module';\nimport { analyticsEventEmitter } from '@wildberries/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(window.ENVS.RUNTIME_ENV);\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\nif (isProduction && !isNotProductionOrigin) {\n initRequestProxies();\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 [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","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 '@mihanizm56/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 '@mihanizm56/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 '@wildberries/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 '@wildberries/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 '@wildberries/wb-front-analytics-tracker';\n\nexport const initAnalytics = () => {\n const counterId = Number(window.ENVS.WB_ANALYTICS_COUNTER_ID);\n\n analyticsEventEmitter.init({ counterId });\n};\n","import { analyticsEventEmitter } from '@wildberries/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 '@mihanizm56/fetch-api';\nimport { REQUEST_ERROR_STATUS_CODE } from '@mihanizm56/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, [359], () => (__webpack_require__(3288)))\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","redirectToLoginPage","locale","currentAbsolutPath","location","LOGIN_PATH","__ENDPOINTS__","LOGIN_PAGE_ENDPOINT","setLocale","isFromCookie","ENVS","VERSION","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","LocalStorageWorker","setItem","key","value","localStorage","JSON","stringify","getItem","storageValue","parse","deleteItem","removeItem","clearUserInfoCache","PASSPORT_LOCAL_ENDPOINT","PASSPORT_CENTRAL_ENDPOINT","_window$__ENDPOINTS__","_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","ROOT_ABAC_FEATURES","loginInstrospectRequest","sessionID","userID","notRetryWhenOffline","customTimeout","manifestRequest","pureJsonFileResponse","APP_NAMESPACE","I18N_DICTIONARY","en","translateEN","ru","translateRU","translateCN","zh","personalDataRequest","translateFunction","upgradeCookieRequest","token","AuthorizeV3","pendingRequests","asyncSingleton","promiseMaker","finally","validateToken","accessToken","upgradeCookieError","upgradeCookieErrorText","personalDataError","personalDataErrorText","validateTokenRaw","verifyExistingTokenRaw","is","access_token","slideRequest","slideConfirmRequest","sticker","getNewTokenRaw","slideErrorText","slideConfirmError","confirmResult","authViaV3Raw","authViaV3","OFFLINE_ERROR_TEXT","processOfflineRequestCode","navigator","onLine","OFFLINE_STATUS_CODE","REQUEST_ERROR_STATUS_CODE","getIsNotProductionOrigin","DEFAULT_ABAC_VALUES","permitted","formatPermissionsAndDispatch","permissions","userPermissions","getFormattedPermissions","features","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","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","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","initRequestProxies","ProxyController","setResponseTrackCallback","callback","fetchLogParams","sendEvent","tags","responseData","level","request","method","requestBody","requestCookies","requestHeaders","MiddlewaresController","setMiddleware","middleware","initDigitalFingerPrint","RUNTIME_ENV","SENTRY_RELEASE","SENTRY_DSN_CLIENT","DISABLED_SW","ADDITIONAL_MENU_CONFIG","dsn","release","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","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","getState","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","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","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","initialAbacParams","permissionsResponse","loadUserPermissionsRequest","fetchManifestActionSaga","purePermissions","excludeEndpoinds","callbackFinallyLoad","loadProductsStopAction","batchActions","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":""}