{"version":3,"file":"main.69c09c431d12268a.js","mappings":"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","sources":["webpack:///../../packages/service-modules-load/src/utils/require-module.ts","webpack:///../../packages/service-modules-load/src/utils/load-module.ts","webpack:///../../packages/service-modules-load/src/api/load-module/index.ts","webpack:///./src/_redux/platform-modules/constants.ts","webpack:///./src/_redux/platform-modules/actions.ts","webpack:///./src/_redux/platform-modules/reducer.ts","webpack:///./src/_redux/platform-modules/selectors.ts","webpack:///./src/_redux/platform-modules/sagas/fetch-platform-modules/fetch-platform-modules-worker-saga.ts","webpack:///./src/_redux/app-state-module/constants.ts","webpack:///./src/_redux/app-state-module/actions.ts","webpack:///./src/_redux/app-state-module/reducer.ts","webpack:///./src/_redux/app-state-module/selectors.ts","webpack:///./src/api/requests/_utils/extra-verify-not-auth-retry/index.ts","webpack:///./src/_utils/api-cache/_constants/index.ts","webpack:///./src/_constants/i18next/app-namespace.ts","webpack:///./src/_constants/app-namespace.ts","webpack:///./src/_constants/browser-list.ts","webpack:///./src/_constants/user-device-list.ts","webpack:///./src/_constants/index.ts","webpack:///./src/_utils/localstorage-worker.ts","webpack:///./src/_utils/redirect-to-login.ts","webpack:///./src/_utils/can-redirect-to-landing.ts","webpack:///./src/_utils/api-cache/clear-user-info.ts","webpack:///./src/api/endpoints/passport/index.ts","webpack:///./src/api/requests/logout-napi/index.ts","webpack:///./src/api/requests/logout-v3/response-schema.ts","webpack:///./src/api/requests/logout-v3/index.ts","webpack:///./src/api/requests/logout-v3/make-request-config.ts","webpack:///./src/_utils/auth-v3/_common/referesh-token-cookie-unavailable.ts","webpack:///./src/api/requests/downgrade-cookie/make-request-config.ts","webpack:///./src/api/requests/downgrade-cookie/index.ts","webpack:///./src/_utils/auth-v3/downgrade-list/get-list-from-storage/index.ts","webpack:///./src/_utils/auth-v3/downgrade-list/parse-list/index.ts","webpack:///./src/_utils/init-app-utils/requests-proxy/init-request-proxy-verify/_utils/external-api-path-regex/index.ts","webpack:///./src/_utils/init-app-utils/requests-proxy/init-request-proxy-verify/_utils/get-external-api-endpoint/index.ts","webpack:///./src/_utils/auth-v3/downgrade-list/get-sanitized-list/index.ts","webpack:///./src/_utils/auth-v3/downgrade-list/cleanup-list/index.ts","webpack:///./src/_utils/auth-v3/logout-via-v3/index.ts","webpack:///./src/_utils/auth-v3/downgrade-cookies/index.ts","webpack:///./src/api/requests/_constants/index.ts","webpack:///./src/_redux/app-state-module/sagas/logout/logout-worker-saga.ts","webpack:///./src/_utils/get-logout-endpoints.ts","webpack:///./src/api/endpoints/passport/utils/create-logout-endpoint.ts","webpack:///./src/api/requests/logout/index.ts","webpack:///./src/_utils/api-cache/configs/menu-cache-config.ts","webpack:///./src/_utils/get-main-menu-request-config/index.ts","webpack:///./src/_utils/init-app/_utils/get-cookie.ts","webpack:///./src/_utils/api-cache/configs/get-fetch-menu-cache-key.ts","webpack:///./src/_redux/app-state-module/sagas/healthcheck/healtcheck-worker-saga.ts","webpack:///./src/_components/text/index.tsx","webpack:///./src/_components/text/index.module.scss?22e3","webpack:///./src/_components/error-page-component/_constants/index.ts","webpack:///./src/_components/error-page-component/_components/card/index.tsx","webpack:///./src/_components/error-page-component/_components/card/index.module.scss?96bc","webpack:///./src/_components/error-page-component/index.tsx","webpack:///./src/_components/error-page-component/index.module.scss?de20","webpack:///./src/_constants/frameworks.ts","webpack:///./src/_utils/init-app-utils/prune-api-caches/get-formatted-storage-data.ts","webpack:///./src/_utils/init-app-utils/prune-api-caches/prune-projects-api-caches.ts","webpack:///./src/_utils/init-app-utils/prune-api-caches/prune-projects-versions.ts","webpack:///./src/_components/connected-layout/_components/layout-view/_components/route-content/index.tsx","webpack:///./src/_utils/init-app-utils/init-performance-metrics.ts","webpack:///./src/_components/connected-layout/_components/layout-view/index.tsx","webpack:///./src/_components/connected-layout/index.tsx","webpack:///./src/_components/connected-layout/_utils/get-is-layout-loaded.ts","webpack:///./src/_components/root-components/index.tsx","webpack:///./src/_components/app/index.tsx","webpack:///./src/_utils/api-cache/configs/abac-cache-config.ts","webpack:///./src/_utils/get-abac-request-params/index.ts","webpack:///./src/_utils/api-cache/configs/user-info-cache-config.ts","webpack:///./src/_utils/get-abac-permissions-data-features.ts","webpack:///./src/databus/_utils/update-ab-experiments-after-supplier-change.ts","webpack:///./src/databus/_utils/remove-object-value-by-path.ts","webpack:///./src/databus/init-databus-subscriptions.ts","webpack:///./src/api/requests/login-introspect/index.ts","webpack:///./src/api/requests/manifest/index.ts","webpack:///./src/_constants/i18next/translates/dictionary.ts","webpack:///./src/_assets/i18next/index.ts","webpack:///./src/api/requests/personal-data/make-request-config.ts","webpack:///./src/api/requests/personal-data/index.ts","webpack:///./src/api/requests/upgrade-cookie/index.ts","webpack:///./src/api/requests/upgrade-cookie/make-request-config.ts","webpack:///./src/_utils/auth-v3/async-singleton/index.ts","webpack:///./src/_utils/auth-v3/validate-token/index.ts","webpack:///./src/_utils/auth-v3/verify-existing-token/index.ts","webpack:///./src/api/requests/slide/response-schema.ts","webpack:///./src/api/requests/slide/index.ts","webpack:///./src/api/requests/slide/make-request-config.ts","webpack:///./src/api/requests/slide-confirm/response-schema.ts","webpack:///./src/api/requests/slide-confirm/index.ts","webpack:///./src/api/requests/slide-confirm/make-request-config.ts","webpack:///./src/_utils/auth-v3/get-new-token/index.ts","webpack:///./src/_utils/auth-v3/auth-via-v3/index.ts","webpack:///./src/_utils/process-offline-code.ts","webpack:///./src/_utils/init-app-utils/fetch-permissions-data.ts","webpack:///./src/_utils/get-formatted-permissions.ts","webpack:///./src/_utils/init-app/_utils/format-permissions-and-dispatch.ts","webpack:///./src/_utils/get-device-user/index.ts","webpack:///./src/api/requests/transform-site-cookie/utils/extra-verify-upgrade-not-auth-retry/index.ts","webpack:///./src/_utils/get-browser-info/index.ts","webpack:///./src/_utils/get-browser-version.ts","webpack:///./src/api/requests/login/index.ts","webpack:///./src/api/requests/grant/index.ts","webpack:///./src/api/requests/login-with-sso/_utils/local-grant-and-central-login/index.ts","webpack:///./src/api/requests/login-with-sso/index.ts","webpack:///./src/api/requests/login-with-sso/_utils/central-grant-and-local-login/index.ts","webpack:///./src/api/requests/transform-site-cookie/index.ts","webpack:///./src/_utils/init-app/_utils/fetch-external-packages.ts","webpack:///./src/_utils/init-app/_utils/set-user-info.ts","webpack:///./src/_utils/init-app/_utils/format-permissions-data-and-dispatch.ts","webpack:///./src/_utils/init-app/index.ts","webpack:///./src/_utils/get-is-not-production-origin.ts","webpack:///./src/serviceWorker.ts","webpack:///./src/_redux/login/actions.ts","webpack:///./src/_redux/login/sagas/login-worker-saga.ts","webpack:///./src/router/plugins/login.ts","webpack:///./src/_utils/get-navigation-error-message.ts","webpack:///./src/router/middlewares/set-window-endpoints/index.ts","webpack:///./src/_utils/init-app-utils/pwa/_utils/detect-pwa.ts","webpack:///./src/_utils/get-supplier-id-from-cookie.ts","webpack:///./src/_utils/ab-experiments/format-data-to-splits.ts","webpack:///./src/_utils/init-app-utils/analytics-init.ts","webpack:///./src/_utils/init-app-utils/requests-proxy/init-request-proxy-verify/_utils/check-is-external-api-request/index.ts","webpack:///./src/_utils/init-app-utils/requests-proxy/init-request-proxy-verify/_utils/check-is-current-domain/index.ts","webpack:///./src/_utils/init-app-utils/requests-proxy/init-request-proxy-verify/login-middleware/_utils/login-api/index.ts","webpack:///./src/_utils/init-app-utils/requests-proxy/init-request-proxy-verify/login-middleware/_utils/old-way-login/index.ts","webpack:///./src/_utils/init-app-utils/requests-proxy/init-request-proxy-verify/login-middleware/index.ts","webpack:///./src/_utils/init-app-utils/requests-proxy/init-request-proxy-verify/login-middleware/_utils/get-is-not-logined.ts","webpack:///./src/_utils/init-app-utils/requests-proxy/init-request-proxy-verify/login-separate-domain-middleware/_utils/old-way-external-login/index.ts","webpack:///./src/_utils/init-app-utils/requests-proxy/init-request-proxy-verify/login-separate-domain-middleware/_utils/get-central-grant-token/index.ts","webpack:///./src/_utils/init-app-utils/requests-proxy/init-request-proxy-verify/login-separate-domain-middleware/_utils/login-external-api/index.ts","webpack:///./src/_utils/auth-v3/upgrade-external-domain/index.ts","webpack:///./src/_utils/init-app-utils/requests-proxy/init-request-proxy-verify/login-separate-domain-middleware/index.ts","webpack:///./src/_utils/auth-v3/downgrade-list/save-external-api-path/index.ts","webpack:///./src/_utils/init-app-utils/requests-proxy/init-request-proxy-verify/login-separate-domain-middleware/_utils/get-is-not-logged-in-separate-domain/index.ts","webpack:///./src/_utils/init-app-utils/requests-proxy/init-request-proxy-verify/_utils/get-mfa-state/index.ts","webpack:///./src/api/requests/mfa-state-request/index.ts","webpack:///./src/_utils/init-app-utils/requests-proxy/init-request-proxy-verify/_utils/format-seconds/index.ts","webpack:///./src/_utils/init-app-utils/requests-proxy/init-request-proxy-verify/_utils/mfa-validate/index.ts","webpack:///./src/api/requests/mfa-validate/index.ts","webpack:///./src/_utils/init-app-utils/requests-proxy/init-request-proxy-verify/_utils/confirmation-critical-action/_utils/get-device-id-for-crit-action/index.ts","webpack:///./src/_utils/init-app-utils/requests-proxy/init-request-proxy-verify/_utils/confirmation-critical-action/index.ts","webpack:///./src/_utils/init-app-utils/requests-proxy/init-request-proxy-verify/_utils/critical-action/index.ts","webpack:///./src/_utils/init-app-utils/requests-proxy/init-request-proxy-verify/index.ts","webpack:///./src/_utils/init-app-utils/requests-proxy/init-request-proxy-verify/_utils/check-is-critical-action/index.ts","webpack:///./src/index.tsx","webpack:///./src/_utils/init-app-utils/requests-proxy/index.ts","webpack:///./src/_utils/init-app-utils/requests-proxy/init-geo-hosts.ts","webpack:///./src/_utils/init-app-utils/requests-proxy/init-request-loggers.ts","webpack:///./src/_constants/routes.ts","webpack:///./src/_redux/platform-modules/sagas/fetch-platform-modules/fetch-platform-modules-watcher-saga.ts","webpack:///./src/_redux/app-state-module/sagas/logout/logout-watcher-saga.ts","webpack:///./src/_utils/navigate-loggers.ts","webpack:///./src/_redux/login/sagas/login-watcher-saga.ts","webpack:///./src/_redux/app-state-module/sagas/healthcheck/healtcheck-watcher-saga.ts","webpack:///./src/api/requests/fetch-runtime-config/index.ts","webpack:///./src/router/middlewares/set-window-endpoints/_utils/get-module-path.ts","webpack:///./src/api/requests/i18next/index.ts","webpack:///./src/router/plugins/transition.ts","webpack:///./src/router/plugins/sw-client-update.ts","webpack:///./src/_utils/init-app-utils/prune-api-caches/index.ts","webpack:///./src/_utils/init-app-utils/pwa/analytics/index.ts","webpack:///./src/_constants/analytics.ts","webpack:///./src/_utils/init-app-utils/pwa/prompt/index.ts","webpack:///./src/_constants/i18next/i18next-init.ts","webpack:///./src/_utils/auth-v3/get-decode-jwt-token/index.ts","webpack:///./src/_utils/init-app/_utils/process-introspect-response/index.ts","webpack:///./src/public-path.ts"],"sourcesContent":["// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n//@ts-nocheck\n\nimport * as React from 'react';\nimport * as ReactDOM from 'react-dom';\nimport * as ReactRedux from 'react-redux';\nimport * as ReduxSaga from 'redux-saga';\nimport * as reselect from 'reselect';\nimport * as redux from 'redux';\nimport * as Joi from 'joi';\nimport * as ReactRouter from 'react-router5';\nimport * as router5 from 'router5';\nimport * as RouterHelpers from 'router5-helpers';\nimport * as RouterPluginBrowser from 'router5-plugin-browser';\nimport * as RouterPluginLogger from 'router5-plugin-logger';\nimport * as serviceRouter from '@portals/service-router';\nimport * as serviceUser from '@portals/service-user';\nimport * as i18nextUtils from '@portals/i18next-utils';\nimport * as pwaModule from '@portals/service-pwa';\nimport * as i18next from 'i18next';\nimport * as serviceProducts from '@portals/service-products';\nimport * as databus from '@portals/databus';\nimport * as databusReact from '@portals/databus-react';\nimport * as databusServiceProducts from '@portals/databus-service-products';\nimport * as databusServiceUser from '@portals/databus-service-user';\nimport * as reduxCoreModules from '@portals/redux-core-modules';\nimport * as fetchApiPortals from '@portals/fetch-api';\nimport * as performanceTracker from '@portals/wb-front-performance-tracker';\nimport * as analyticsTracker from '@portals/wb-front-analytics-tracker';\nimport * as classnames from 'classnames';\nimport * as serviceLogger from '@portals/service-logger';\nimport * as reactDeviceDetect from 'react-device-detect';\nimport * as reactVirtualized from 'react-virtualized';\n\nconst modules: any = {\n react: React,\n 'react-dom': ReactDOM,\n 'react-redux': ReactRedux,\n 'redux-saga': ReduxSaga,\n redux,\n reselect,\n 'react-router5': ReactRouter,\n 'router5-helpers': RouterHelpers,\n 'router5-plugin-browser': RouterPluginBrowser,\n 'router5-plugin-logger': RouterPluginLogger,\n router5,\n 'react-device-detect': reactDeviceDetect,\n '@wildberries/service-router': serviceRouter,\n '@portals/service-router': serviceRouter,\n '@wildberries/service-products': serviceProducts,\n '@portals/service-products': serviceProducts,\n '@wildberries/service-user': serviceUser,\n '@portals/service-user': serviceUser,\n '@wildberries/i18next-utils': i18nextUtils,\n '@portals/i18next-utils': i18nextUtils,\n '@wildberries/service-pwa': pwaModule,\n '@portals/service-pwa': pwaModule,\n i18next,\n '@mihanizm56/redux-core-modules': reduxCoreModules,\n '@portals/redux-core-modules': reduxCoreModules,\n '@ravilm/databus': databus,\n '@portals/databus': databus,\n '@ravilm/databus-react': databusReact,\n '@portals/databus-react': databusReact,\n '@hapi/joi': Joi,\n joi: Joi,\n '@wildberries/databus-service-products': databusServiceProducts,\n '@portals/databus-service-products': databusServiceProducts,\n '@wildberries/databus-service-user': databusServiceUser,\n '@portals/databus-service-user': databusServiceUser,\n '@mihanizm56/fetch-api': fetchApiPortals,\n '@portals/fetch-api': fetchApiPortals,\n '@wildberries/wb-front-performance-tracker': performanceTracker,\n '@portals/wb-front-performance-tracker': performanceTracker,\n '@wildberries/wb-front-analytics-tracker': analyticsTracker,\n '@portals/wb-front-analytics-tracker': analyticsTracker,\n '@wildberries/service-logger': serviceLogger,\n '@portals/service-logger': serviceLogger,\n classnames,\n 'react-virtualized': reactVirtualized,\n};\n\nexport const requireModule = (\n externalPackages: Record,\n moduleId: string\n): any => {\n return externalPackages[moduleId] || modules[moduleId];\n};\n","import { IResponse } from '@portals/fetch-api';\nimport { loadModuleRequest } from '../api/load-module';\nimport { requireModule } from './require-module';\n\nconst cachedScripts = new Map();\n\ntype ParamsType = {\n name: string;\n staticURL: string;\n jsUrl: string;\n fromCDN?: boolean;\n cdnData?: {\n APP_STATIC_NAMESPACE?: string;\n };\n version?: string;\n externalPackages?: Record;\n};\n\nexport const loadModule = ({\n name,\n staticURL,\n jsUrl,\n fromCDN,\n cdnData: { APP_STATIC_NAMESPACE } = {},\n version = '',\n externalPackages = {},\n}: ParamsType) => {\n const endpoint = fromCDN ? jsUrl : `${staticURL}/${jsUrl}`;\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 } = (await loadModuleRequest(\n endpoint,\n fromCDN\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 // 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(/appVersion/g, version)\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('fetching the route script ended with an error', error);\n // ToDo: need to research\n reject(error);\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 console.error(`\"${name}\" was not created by \"${endpoint}\"`);\n cachedScripts.delete(endpoint);\n })\n .catch(() => {\n cachedScripts.delete(endpoint);\n });\n};\n","import { IResponse, PureRestRequest } from '@portals/fetch-api';\n\nexport const loadModuleRequest = async (\n endpoint: string,\n fromCDN?: boolean\n): Promise => {\n return new PureRestRequest().getRequest({\n mode: 'cors',\n parseType: 'text',\n endpoint,\n extraValidationCallback: () => true,\n isErrorTextStraightToOutput: true,\n pureJsonFileResponse: fromCDN,\n retry: 2,\n cache: fromCDN ? 'force-cache' : 'default',\n });\n};\n","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","/* eslint-disable import/no-cycle */\nimport { put } from 'redux-saga/effects';\nimport { Router } from 'router5';\nimport { IAdvancedStore } from '@portals/redux-core-modules';\n// import { loadModule } from '@portals/service-modules-load';\nimport { ModulesListType } from '../../types';\nimport {\n setLoadingStartAction,\n setLoadingStopAction,\n setPlatformModulesAction,\n} from '../../actions';\n// import { loadScript } from '../../../../api/requests/load-script/index';\n// import { loadStyle } from '../../../../api/requests/load-style/index';\n// import { registerLayout } from '@root/suppliers-portal-layout';\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 platformModules = [\n {\n name: 'Header',\n role: 'component',\n loadRef: {\n importFn: () =>\n import('@root/suppliers-portal-header') as Promise<{\n Component?: React.ComponentType;\n registrationSaga?: ({ store }: { store: IAdvancedStore }) => void;\n registrationReducer?: ({\n store,\n }: {\n store: IAdvancedStore;\n }) => void;\n registrationActions?: Array<\n ({\n store,\n router,\n }: {\n store: IAdvancedStore;\n router: Router;\n }) => void\n >;\n registrationRouterMiddlewares?: Array<() => void>;\n registrationRouterPlugins?: Array<() => void>;\n }>,\n JS_CDN: null,\n JS: null,\n CSS_CDN: null,\n CSS: null,\n APP_STATIC_NAMESPACE: null,\n },\n },\n {\n name: 'Layout',\n role: 'component',\n loadRef: {\n importFn: () => import('@root/suppliers-portal-layout'),\n JS_CDN: null,\n JS: null,\n CSS_CDN: null,\n CSS: null,\n APP_STATIC_NAMESPACE: null,\n },\n },\n {\n name: 'Content',\n role: 'component',\n loadRef: {\n importFn: () => import('@root/suppliers-portal-content'),\n JS_CDN: null,\n JS: null,\n CSS_CDN: null,\n CSS: null,\n APP_STATIC_NAMESPACE: null,\n },\n },\n {\n name: 'Footer',\n role: 'component',\n loadRef: {\n importFn: () => import('@root/suppliers-portal-footer'),\n JS_CDN: null,\n JS: null,\n CSS_CDN: null,\n CSS: null,\n APP_STATIC_NAMESPACE: null,\n },\n },\n {\n name: 'ErrorPage',\n role: 'component',\n loadRef: {\n importFn: () => import('@root/suppliers-portal-error-page'),\n JS_CDN: null,\n JS: null,\n CSS_CDN: null,\n CSS: null,\n APP_STATIC_NAMESPACE: null,\n },\n },\n {\n name: 'Preview',\n role: 'component',\n loadRef: {\n importFn: () => import('@root/suppliers-portal-preview'),\n JS_CDN: null,\n JS: null,\n CSS_CDN: null,\n CSS: null,\n APP_STATIC_NAMESPACE: null,\n },\n },\n {\n name: 'page-not-found',\n role: 'not-component',\n loadRef: {\n importFn: () => import('@root/suppliers-portal-page-not-found'),\n JS_CDN: null,\n JS: null,\n CSS_CDN: null,\n CSS: null,\n APP_STATIC_NAMESPACE: null,\n },\n },\n ];\n const modules: ModulesListType = {};\n\n yield Promise.all(\n platformModules.map(async ({ name, loadRef, role }) => {\n try {\n if (role === 'component') {\n const {\n Component,\n registrationSaga,\n registrationReducer,\n registrationActions,\n registrationRouterMiddlewares,\n registrationRouterPlugins,\n } = (await loadRef.importFn()) as any;\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((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 } else {\n // если это полноценное приложение как модуль\n // // то и подключаем и парсим его как полноценный модуль\n const { routes } = (await loadRef.importFn()) as any;\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 '@portals/redux-core-modules';\n\nexport const SET_TRANSLATE_LOADING_START =\n '@app-state/SET_TRANSLATE_LOADING_START';\nexport const setTranslateLoadingStartAction: BaseAction = () => ({\n type: SET_TRANSLATE_LOADING_START,\n});\n\nexport const SET_TRANSLATE_LOADING_STOP =\n '@app-state/SET_TRANSLATE_LOADING_STOP';\nexport const setTranslateLoadingStopAction: BaseAction = () => ({\n type: SET_TRANSLATE_LOADING_STOP,\n});\n\nexport const SET_INIT_LOADING_START = '@app-state/SET_INIT_LOADING_START';\nexport const setInitLoadingStartAction: BaseAction = () => ({\n type: SET_INIT_LOADING_START,\n});\n\nexport const SET_INIT_LOADING_STOP = '@app-state/SET_INIT_LOADING_STOP';\nexport const setInitLoadingStopAction: BaseAction = () => ({\n type: SET_INIT_LOADING_STOP,\n});\n\nexport const SET_LOGIN_LOADING_START = '@app-state/SET_LOGIN_LOADING_START';\nexport const setLoginLoadingStartAction: BaseAction = () => ({\n type: SET_LOGIN_LOADING_START,\n});\n\nexport const SET_LOGIN_LOADING_STOP = '@app-state/SET_LOGIN_LOADING_STOP';\nexport const setLoginLoadingStopAction: BaseAction = () => ({\n type: SET_INIT_LOADING_STOP,\n});\n\nexport const LOGOUT = '@app-state/LOGOUT';\nexport const logoutAction: BaseAction = () => ({\n type: LOGOUT,\n});\n\nexport const SET_CORE_REQUESTS_ERROR = '@app-state/SET_CORE_REQUESTS_ERROR';\nexport const setCoreRequestsErrorAction: BaseAction = () => ({\n type: SET_CORE_REQUESTS_ERROR,\n});\n\nexport const RESET_CORE_REQUESTS_ERROR = '@app-state/RESET_CORE_REQUESTS_ERROR';\nexport const resetCoreRequestsErrorAction: BaseAction = () => ({\n type: RESET_CORE_REQUESTS_ERROR,\n});\n\nexport const SET_CORE_REQUESTS_HEALTHCHECK_INTERVAL =\n '@app-state/SET_CORE_REQUESTS_HEALTHCHECK_INTERVAL';\nexport const sethealthCheckCoreRequestsIntervalAction: BaseAction = () => ({\n type: SET_CORE_REQUESTS_HEALTHCHECK_INTERVAL,\n});\nexport const RESET_CORE_REQUESTS_HEALTHCHECK_INTERVAL =\n '@app-state/RESET_CORE_REQUESTS_HEALTHCHECK_INTERVAL';\nexport const resethealthCheckCoreRequestsIntervalAction: BaseAction = () => ({\n type: RESET_CORE_REQUESTS_HEALTHCHECK_INTERVAL,\n});\n\nexport const SET_HEALTHCHECK_ACTION = '@app-state/SET_HEALTHCHECK_ACTION';\nexport const setHealthCheckAction: BaseAction = () => ({\n type: SET_HEALTHCHECK_ACTION,\n});\n\nexport const INCREMENT_HEALTHCHECK_ACTION =\n '@app-state/INCREMENT_HEALTHCHECK_ACTION';\nexport const incrementHealthCheckIntervalAction: BaseAction = () => ({\n type: INCREMENT_HEALTHCHECK_ACTION,\n});\n\nexport const RESET_HEALTHCHECK_ACTION = '@app-state/RESET_HEALTHCHECK_ACTION';\nexport const resetHealthCheckAction: BaseAction = () => ({\n type: RESET_HEALTHCHECK_ACTION,\n});\n\nexport const SET_CORE_REQUESTS_ERROR_CODE =\n '@app-state/SET_CORE_REQUESTS_ERROR_CODE';\nexport const setCoreRequestsErrorCodeAction: Action = (payload) => ({\n type: SET_CORE_REQUESTS_ERROR_CODE,\n payload,\n});\n\nexport const RESET_CORE_REQUESTS_ERROR_CODE =\n '@app-state/RESET_CORE_REQUESTS_ERROR_CODE';\nexport const resetCoreRequestsErrorCodeAction: BaseAction = () => ({\n type: RESET_CORE_REQUESTS_ERROR_CODE,\n});\n\nexport const SET_FIRST_ROUTE_TRANSITION_FINISHED =\n '@app-state/SET_FIRST_ROUTE_TRANSITION_FINISHED';\nexport const setFirstRouteTransitionFinishedAction: BaseAction = () => ({\n type: SET_FIRST_ROUTE_TRANSITION_FINISHED,\n});\n\nexport const SET_LOGOUT_LOADING_START = '@app-state/SET_LOGOUT_LOADING_START';\nexport const setLogoutLoadingStartAction: BaseAction = () => ({\n type: SET_LOGOUT_LOADING_START,\n});\n\nexport const SET_LOGOUT_LOADING_STOP = '@app-state/SET_LOGOUT_LOADING_STOP';\nexport const setLogoutLoadingStopAction: BaseAction = () => ({\n type: SET_LOGOUT_LOADING_STOP,\n});\n","import {\n SET_TRANSLATE_LOADING_START,\n SET_TRANSLATE_LOADING_STOP,\n SET_INIT_LOADING_START,\n SET_INIT_LOADING_STOP,\n SET_LOGIN_LOADING_START,\n SET_LOGIN_LOADING_STOP,\n SET_CORE_REQUESTS_ERROR,\n RESET_CORE_REQUESTS_ERROR,\n INCREMENT_HEALTHCHECK_ACTION,\n SET_CORE_REQUESTS_ERROR_CODE,\n RESET_CORE_REQUESTS_ERROR_CODE,\n SET_FIRST_ROUTE_TRANSITION_FINISHED,\n SET_LOGOUT_LOADING_START,\n SET_LOGOUT_LOADING_STOP,\n} from './actions';\nimport { ActionType, AppState } from './_types';\n\nexport const initialState: AppState = {\n initLoading: false,\n translateIsLoading: false,\n loginLoading: false,\n coreRequestsError: false,\n healthCheckCoreRequestsInterval: 10000,\n coreRequestsErrorCode: '',\n firstRouteTransitionFinished: false,\n logoutLoading: false,\n};\n\nexport const reducerAppState = (\n state: AppState = initialState,\n { type, payload }: ActionType\n): AppState => {\n switch (type) {\n case SET_INIT_LOADING_START:\n return {\n ...state,\n initLoading: true,\n };\n\n case SET_INIT_LOADING_STOP:\n return {\n ...state,\n initLoading: false,\n };\n\n case SET_TRANSLATE_LOADING_START:\n return {\n ...state,\n translateIsLoading: true,\n };\n\n case SET_LOGIN_LOADING_START:\n return {\n ...state,\n loginLoading: true,\n };\n\n case SET_LOGIN_LOADING_STOP:\n return {\n ...state,\n loginLoading: false,\n };\n\n case SET_TRANSLATE_LOADING_STOP:\n return {\n ...state,\n translateIsLoading: false,\n };\n\n case SET_CORE_REQUESTS_ERROR:\n return {\n ...state,\n coreRequestsError: true,\n };\n\n case SET_CORE_REQUESTS_ERROR_CODE:\n return {\n ...state,\n coreRequestsErrorCode: payload,\n };\n\n case RESET_CORE_REQUESTS_ERROR_CODE:\n return {\n ...state,\n coreRequestsErrorCode: '',\n };\n\n case RESET_CORE_REQUESTS_ERROR:\n return {\n ...state,\n coreRequestsError: false,\n };\n\n case INCREMENT_HEALTHCHECK_ACTION:\n return {\n ...state,\n healthCheckCoreRequestsInterval:\n state.healthCheckCoreRequestsInterval + 10000,\n };\n\n case SET_FIRST_ROUTE_TRANSITION_FINISHED:\n return {\n ...state,\n firstRouteTransitionFinished: true,\n };\n\n case SET_LOGOUT_LOADING_START:\n return {\n ...state,\n logoutLoading: true,\n };\n\n case SET_LOGOUT_LOADING_STOP:\n return {\n ...state,\n logoutLoading: false,\n };\n\n default:\n return state;\n }\n};\n","import { createSelector } from 'reselect';\nimport { reducerAppStateName } from './constants';\nimport { AppState, StatePartAppState } from './_types';\nimport { initialState } from './reducer';\n\nconst productsManagerStorageSelector = (store: StatePartAppState) =>\n store[reducerAppStateName] || initialState;\n\nexport const getTranslationIsLoadingSelector = createSelector(\n productsManagerStorageSelector,\n ({ translateIsLoading }: AppState): boolean => translateIsLoading\n);\n\nexport const initLoadingSelector = createSelector(\n productsManagerStorageSelector,\n ({ initLoading }: AppState): boolean => initLoading\n);\n\nexport const loginLoadingSelector = createSelector(\n productsManagerStorageSelector,\n ({ loginLoading }: AppState): boolean => loginLoading\n);\n\nexport const coreRequestsErrorSelector = createSelector(\n productsManagerStorageSelector,\n ({ coreRequestsError }: AppState): boolean => coreRequestsError\n);\n\nexport const coreRequestsErrorCodeSelector = createSelector(\n productsManagerStorageSelector,\n ({ coreRequestsErrorCode }: AppState): string => coreRequestsErrorCode\n);\n\nexport const coreRequestsHealthCheckIntervalSelector = createSelector(\n productsManagerStorageSelector,\n ({ healthCheckCoreRequestsInterval }: AppState): number =>\n healthCheckCoreRequestsInterval\n);\n\nexport const firstRouteTransitionFinishedSelector = createSelector(\n productsManagerStorageSelector,\n ({ firstRouteTransitionFinished }: AppState): boolean =>\n firstRouteTransitionFinished\n);\n\nexport const logoutIsLoadingSelector = createSelector(\n productsManagerStorageSelector,\n ({ logoutLoading }: AppState): boolean => logoutLoading\n);\n","import { ExtraVerifyRetryCallbackType } from '@portals/fetch-api/dist/types';\n\nexport const extraVerifyNotAuthRetry: ExtraVerifyRetryCallbackType = ({\n formattedResponseData: { code, error },\n}) => {\n if (!error) {\n return false;\n }\n\n if (code === 401) {\n return false;\n }\n\n return true;\n};\n","export const appVersion = process.env.NX_PUBLIC_APP_VERSION || 'local';\n\nexport const ROOT_CACHE_STORAGE_NAME = `root__${appVersion}__requests-cache`;\nexport const USER_INFO_CACHE_KEY = 'personal_data';\n\nexport const ABAC_PERMISSIONS_DATA_CACHE_KEY =\n 'abac-permissions-data-cache-key';\n","export const APP_NAMESPACE = 'root';\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';\nimport { APP_NAMESPACE } from '../_constants/i18next/app-namespace';\n\nexport { appNamespace } from './app-namespace';\nexport { BROWSER_LIST } from './browser-list';\nexport { USER_DEVICE_LIST } from './user-device-list';\n\nexport const DEFAULT_API_CACHE_PARAMS = {\n storageCacheName: ROOT_CACHE_STORAGE_NAME,\n expires: 1000 * 60 * 60 * 24 * 60, // 60 days\n debug: true,\n // onCacheHit: sendApiCacheEventHit({\n // projectName: appNamespace,\n // }),\n // onCacheMiss: sendApiCacheEventMiss({\n // projectName: appNamespace,\n // }),\n disabledCache:\n // process.env.NODE_ENV === 'development' ||\n window.ENVS.DISABLED_API_CACHE === 'true',\n};\n\nexport const SELLER_PORTAL_ACCESS_TOKEN = 'wb-eu-passport-v2.access-token';\n\nexport const CRITICAL_ACTION_CODE = 307;\n\nexport const SELLER_PORTAL_DOWNGRADE_LIST = 'wb-eu-portal.downgrade-list';\n\nexport const LAST_SUCCESSFUL_LOGIN_KEY = 'wb-eu-portal.last_successful_login';\n\nexport const SKIP_LANDING_GET_PARAMETER_NAME = 'skipLanding';\n\nexport const DefaultCriticalActionErrors = {\n incorrectCode: `${APP_NAMESPACE}:critical-confirm-modal.incorrectCode`,\n requestError: `${APP_NAMESPACE}:critical-confirm-modal.requestError`,\n abortEnterCodeError: `${APP_NAMESPACE}:critical-confirm-modal.abortEnterCodeError`,\n reachedLimit: `${APP_NAMESPACE}:critical-confirm-modal.reachedLimit`,\n};\n","export class LocalStorageWorker {\n static setItem = (key: string, value: any) => {\n try {\n if (typeof value === 'string') {\n return localStorage.setItem(key, value);\n }\n\n localStorage.setItem(key, JSON.stringify(value));\n } catch (error) {\n console.error('failed setItem to local storage', error);\n }\n };\n\n static getItem = (key: string) => {\n const storageValue = localStorage.getItem(key);\n\n if (storageValue) {\n try {\n const result = JSON.parse(storageValue);\n\n return result;\n } catch {\n return null;\n }\n }\n\n return storageValue;\n };\n\n static deleteItem = (key: string) => {\n try {\n localStorage.removeItem(key);\n } catch (error) {\n console.error('error in deleteItem', error);\n }\n };\n}\n","import { setLocale } from '@portals/i18next-utils';\nimport { canRedirectoToLanding } from './can-redirect-to-landing';\nimport { resolveUrl } from '@portals/geo-utils';\n\n/* eslint-disable no-underscore-dangle */\nexport const redirectToLoginPage = (locale: string) => {\n const currentAbsolutPath = encodeURIComponent(window.location.href);\n\n const LOGIN_PATH = window.__ENDPOINTS__\n ? window.__ENDPOINTS__.LOGIN_PAGE_ENDPOINT\n : '/login/';\n\n // устанавливаем локаль приложения пустой строкой, чтобы правильно выставлялась кука при переходе со страницы логина\n setLocale({ locale: '', isFromCookie: true });\n\n // add / at the end\n const pathLocale = locale ? `${locale}/` : locale;\n\n if (canRedirectoToLanding() && window.__ENDPOINTS__?.PORTAL_LANDING) {\n window.location.href = resolveUrl(\n `${window.__ENDPOINTS__.PORTAL_LANDING}/${pathLocale}?redirect_url=${currentAbsolutPath}`\n );\n\n return;\n }\n\n window.location.href = resolveUrl(\n `${LOGIN_PATH}/${pathLocale}?redirect_url=${currentAbsolutPath}`\n );\n};\n","import {\n LAST_SUCCESSFUL_LOGIN_KEY,\n SKIP_LANDING_GET_PARAMETER_NAME,\n} from '../_constants';\nimport { LocalStorageWorker } from './localstorage-worker';\n\nexport const canRedirectoToLanding = () => {\n const HAS_SUCCESSFUL_LOGIN = !!LocalStorageWorker.getItem(\n LAST_SUCCESSFUL_LOGIN_KEY\n );\n\n const params = new URLSearchParams(document.location.search);\n const SKIP_LANDING = params.get(SKIP_LANDING_GET_PARAMETER_NAME) !== null;\n\n return (\n window.ENVS.ENABLE_PORTAL_LANDING && !HAS_SUCCESSFUL_LOGIN && !SKIP_LANDING\n );\n};\n","import { appNamespace, SELLER_PORTAL_ACCESS_TOKEN } from '../../_constants';\nimport { LocalStorageWorker } from '../localstorage-worker';\n\nexport const clearUserInfoCache = () => {\n LocalStorageWorker.deleteItem(`${appNamespace}.id`);\n LocalStorageWorker.deleteItem(SELLER_PORTAL_ACCESS_TOKEN);\n};\n","/* eslint-disable no-underscore-dangle */\n\nexport const PASSPORT_LOCAL_ENDPOINT = '/passport';\nexport const PASSPORT_CENTRAL_ENDPOINT =\n window?.__ENDPOINTS__?.CENTRAL_PASSPORT ?? '/login';\nexport const SELLER_AUTH_ENDPOINT =\n window?.__ENDPOINTS__?.LOGIN_PAGE_ENDPOINT ?? '/login';\nexport const UPGRADE_COOKIE_ENDPOINT_PATH = '/upgrade-cookie-authv3';\nexport const DOWNGRADE_COOKIE_ENDPOINT_PATH = '/downgrade-cookie-authv3';\nexport const GRANT_LOCAL_ENDPOINT = `${PASSPORT_LOCAL_ENDPOINT}/api/v2/auth/grant`;\nexport const GRANT_CENTRAL_ENDPOINT = `${PASSPORT_CENTRAL_ENDPOINT}/api/v2/auth/grant`;\n\nexport const LOGIN_LOCAL_ENDPOINT = `${PASSPORT_LOCAL_ENDPOINT}/api/v2/auth/login`;\nexport const LOGIN_CENTRAL_ENDPOINT = `${PASSPORT_CENTRAL_ENDPOINT}/api/v2/auth/login`;\nexport const INTROSPECT_LOCAL_ENDPOINT = `${PASSPORT_LOCAL_ENDPOINT}/api/v2/auth/introspect`;\nexport const TRANSFORM_SITE_COOKIE_ENDPOINT = `${PASSPORT_LOCAL_ENDPOINT}/api/v2/auth/wild_v3_upgrade`;\n\nexport const LOGOUT_LOCAL_ENDPOINT = `${PASSPORT_LOCAL_ENDPOINT}/api/v2/auth/logout`;\nexport const LOGOUT_CENTRAL_ENDPOINT = `${PASSPORT_CENTRAL_ENDPOINT}/api/v2/auth/logout`;\nexport const LOGOUT_SELLER_AUTH_ENDPOINT = `${SELLER_AUTH_ENDPOINT}${PASSPORT_LOCAL_ENDPOINT}/api/v2/auth/logout`;\n\nconst CMP_ENDPOINT = window?.__ENDPOINTS__?.CMP_ENDPOINT;\nexport const LOGOUT_CMP_ENDPOINT = CMP_ENDPOINT\n ? `${CMP_ENDPOINT}${PASSPORT_LOCAL_ENDPOINT}/api/v2/auth/logout`\n : '';\n\nconst CMP_NEW_ENDPOINT = window?.__ENDPOINTS__?.CMP_NEW_ENDPOINT;\nexport const LOGOUT_CMP_NEW_ENDPOINT = CMP_NEW_ENDPOINT\n ? `${CMP_NEW_ENDPOINT}${PASSPORT_LOCAL_ENDPOINT}/api/v2/auth/logout`\n : '';\n\nconst DELIVERY_OPTIONS_ENDPOINT =\n window?.__ENDPOINTS__?.DELIVERY_OPTIONS_ENDPOINT;\nexport const LOGOUT_DELIVERY_OPTIONS_ENDPOINT = DELIVERY_OPTIONS_ENDPOINT\n ? `${DELIVERY_OPTIONS_ENDPOINT}${PASSPORT_LOCAL_ENDPOINT}/api/v2/auth/logout`\n : '';\n\nexport const UPGRADE_COOKIE_ENDPOINT =\n window?.__ENDPOINTS__?.UPGRADE_COOKIE_ENDPOINT ??\n UPGRADE_COOKIE_ENDPOINT_PATH;\nexport const DOWNGRADE_COOKIE_ENDPOINT =\n window?.__ENDPOINTS__?.DOWNGRADE_COOKIE_ENDPOINT ??\n DOWNGRADE_COOKIE_ENDPOINT_PATH;\n\nexport const AUTH_V3_BASE = window?.__ENDPOINTS__?.AUTH_V3_BASE ?? '/auth';\nexport const LOGOUT_V3_ENDPOINT = `${AUTH_V3_BASE}/v2/auth/logoff`;\nexport const LOGIN_V3_ENDPOINT = `${AUTH_V3_BASE}/v2/auth/slide-v3`;\nexport const SLIDE_CONFIRM_ENDPOINT = `${AUTH_V3_BASE}/v2/auth/slide-v3-confirm`;\n\nexport const MFA_BASE = window?.__ENDPOINTS__?.MFA_GET_STATE_ENDPOINT;\nexport const MFA_STATE = `${MFA_BASE}/api/v1/MFA/request`;\nexport const MFA_VALIDATE = `${MFA_BASE}/api/v1/MFA/validate`;\n\nexport const LOGOUT_NAPI_ENDPOINT =\n window?.__ENDPOINTS__?.LOGOUT_NAPI ?? '/empty_napi';\n\nexport const PERSONAL_DATA_LOCAL_ENDPOINT = `${PASSPORT_LOCAL_ENDPOINT}/api/v2/user/personal_data`;\n","import { IResponse, PureRestRequest } from '@portals/fetch-api';\nimport { LOGOUT_NAPI_ENDPOINT } from '../../../api/endpoints/passport';\nimport { extraVerifyNotAuthRetry } from '../_utils/extra-verify-not-auth-retry';\n\nexport const logoutNapiRequest = (): Promise =>\n new PureRestRequest().getRequest({\n credentials: 'include',\n endpoint: LOGOUT_NAPI_ENDPOINT,\n isErrorTextStraightToOutput: true,\n retry: 2,\n extraVerifyRetry: extraVerifyNotAuthRetry,\n tracingDisabled: true,\n middlewaresAreDisabled: true,\n });\n","import Joi from 'joi';\n\nexport const responseSchema = Joi.object({\n result: Joi.number().required(),\n error: Joi.any().when('result', {\n not: Joi.valid(0),\n then: Joi.string().required(),\n otherwise: Joi.forbidden(),\n }),\n});\n","import { IResponse, PureRestRequest } from '@portals/fetch-api';\nimport { makeRequestConfig } from './make-request-config';\n\nexport const logoutV3Request = (): Promise =>\n new PureRestRequest().postRequest(makeRequestConfig());\n","import { IRequestParams } from '@portals/fetch-api';\nimport { LOGOUT_V3_ENDPOINT } from '../../../api/endpoints/passport';\nimport { responseSchema } from './response-schema';\n\nexport const makeRequestConfig = (): IRequestParams => {\n return {\n endpoint: LOGOUT_V3_ENDPOINT,\n responseSchema,\n credentials: 'include',\n };\n};\n","export class RefreshTokenCookieUnavailable extends Error {}\n","import { IRequestParams } from '@portals/fetch-api';\nimport Joi from 'joi';\nimport {\n DOWNGRADE_COOKIE_ENDPOINT,\n DOWNGRADE_COOKIE_ENDPOINT_PATH,\n} from '../../../api/endpoints/passport';\nimport { DowngradeCookieRequestType } from './types';\n\nexport const makeRequestConfig = ({\n endpoint = '',\n isCurrentDomainEndpoint = true,\n middlewaresAreDisabled,\n}: DowngradeCookieRequestType): IRequestParams => {\n const cookieDowngradeEndpoint = isCurrentDomainEndpoint\n ? DOWNGRADE_COOKIE_ENDPOINT\n : `${endpoint}${DOWNGRADE_COOKIE_ENDPOINT_PATH}`;\n\n return {\n endpoint: cookieDowngradeEndpoint,\n credentials: 'include',\n middlewaresAreDisabled,\n responseSchema: Joi.object({\n success: Joi.string().required(),\n }),\n };\n};\n","import { IResponse, PureRestRequest } from '@portals/fetch-api';\nimport { DowngradeCookieRequestType } from './types';\nimport { makeRequestConfig } from './make-request-config';\n\nexport const downgradeCookieRequest = (\n requestParams: DowngradeCookieRequestType\n): Promise> =>\n new PureRestRequest().postRequest(makeRequestConfig(requestParams));\n","import { SELLER_PORTAL_DOWNGRADE_LIST } from '../../../../_constants';\n\nexport const getListFromStorage = () => {\n try {\n return localStorage.getItem(SELLER_PORTAL_DOWNGRADE_LIST);\n } catch {\n return [];\n }\n};\n","export const parseList = (list?: any) => {\n try {\n const parsedList = Array.isArray(list) ? list : JSON.parse(list);\n\n if (!Array.isArray(parsedList)) {\n return [];\n }\n\n return parsedList.map(String);\n // eslint-disable-next-line no-empty\n } catch {}\n\n return [];\n};\n","export const externalApiPathRegex = /(\\/external-api-[^/]+)\\//;\n","import { externalApiPathRegex } from '../external-api-path-regex';\nimport { currentZone } from '@portals/geo-utils';\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\nconst currentZoneRegex = new RegExp(`${currentZone}$`);\n\nexport const getExternalApiEndpoint = (endpoint: string) => {\n const { origin, pathname } = splitEndpoint(endpoint);\n const match = externalApiPathRegex.exec(pathname);\n\n if (origin && !currentZoneRegex.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\n return true;\n};\n","import { downgradeCookieRequest } from '../../../api/requests/downgrade-cookie';\nimport { getSanitizedList } from '../downgrade-list';\n\nexport const downgradeCookies = async () => {\n const list = getSanitizedList(window.LOGOUT_REQUIRED_EXTERNAL_ORIGINS);\n const externalRequests = list.map((endpoint: string) =>\n downgradeCookieRequest({ endpoint, isCurrentDomainEndpoint: false })\n );\n\n const currentDomainRequest = downgradeCookieRequest({\n isCurrentDomainEndpoint: true,\n });\n\n await Promise.allSettled([...externalRequests, currentDomainRequest]);\n\n return true;\n};\n","export const AUTH_V3_RESPONSE_SUCCESS_RESULT = 0;\nexport const AUTH_V3_NO_COOKIE_ERROR_RESULT = 12;\n","import { all, call, put } from 'redux-saga/effects';\nimport { getLocale } from '@portals/i18next-utils';\nimport { setUserDataForDigitalFingerPrint } from '@portals/fingerprint-utils';\nimport { logoutRequest } from '../../../../api/requests/logout';\nimport { redirectToLoginPage } from '../../../../_utils/redirect-to-login';\nimport { clearUserInfoCache } from '../../../../_utils/api-cache/clear-user-info';\nimport { logoutNapiRequest } from '../../../../api/requests/logout-napi';\nimport { logoutViaV3 } from '../../../../_utils/auth-v3/logout-via-v3';\nimport { RefreshTokenCookieUnavailable } from '../../../../_utils/auth-v3/_common/referesh-token-cookie-unavailable';\nimport { getLogoutEndpoints } from '../../../../_utils/get-logout-endpoints';\nimport { cleanupList } from '../../../../_utils/auth-v3/downgrade-list/cleanup-list';\nimport {\n setLogoutLoadingStartAction,\n setLogoutLoadingStopAction,\n} from '../../actions';\n\nconst logoutOldWay = () => {\n const logoutEndpoints = getLogoutEndpoints();\n\n return Promise.allSettled([\n ...logoutEndpoints.map((endpoint: string) => logoutRequest(endpoint)),\n logoutNapiRequest,\n ]);\n};\n\nexport function* logoutWorkerSaga() {\n try {\n yield put(setLogoutLoadingStartAction());\n\n try {\n yield all([call(logoutViaV3), call(logoutOldWay)]);\n } catch (authError) {\n if (!(authError instanceof RefreshTokenCookieUnavailable)) {\n throw authError;\n }\n }\n // очистка localStorage списка с посещенными доменами\n cleanupList();\n } catch (error: any) {\n console.error('logoutWorkerSaga get an error', error.message);\n } finally {\n const locale = getLocale({ isFromCookie: true });\n clearUserInfoCache();\n\n // set nothing to cleanup\n setUserDataForDigitalFingerPrint();\n\n redirectToLoginPage(locale);\n yield put(setLogoutLoadingStopAction());\n }\n}\n","import {\n LOGOUT_CENTRAL_ENDPOINT,\n LOGOUT_CMP_ENDPOINT,\n LOGOUT_CMP_NEW_ENDPOINT,\n LOGOUT_DELIVERY_OPTIONS_ENDPOINT,\n LOGOUT_LOCAL_ENDPOINT,\n LOGOUT_SELLER_AUTH_ENDPOINT,\n} from '../api/endpoints/passport';\nimport { createLogoutEndpoint } from '../api/endpoints/passport/utils/create-logout-endpoint';\nimport { getSanitizedList } from './auth-v3/downgrade-list/get-sanitized-list';\n\nexport const getLogoutEndpoints = (): Array => {\n const list = getSanitizedList(window.LOGOUT_REQUIRED_EXTERNAL_ORIGINS);\n\n const logoutRequiredExternalEndpoints = list.map((endpoint: string) =>\n createLogoutEndpoint(endpoint)\n );\n\n const logoutRequiredInternalEndpoints = [\n LOGOUT_LOCAL_ENDPOINT,\n LOGOUT_SELLER_AUTH_ENDPOINT,\n LOGOUT_CMP_ENDPOINT,\n LOGOUT_CMP_NEW_ENDPOINT,\n LOGOUT_DELIVERY_OPTIONS_ENDPOINT, // NOTE SPL-5250\n LOGOUT_CENTRAL_ENDPOINT,\n ].filter((endpoint) => !!endpoint);\n\n const logoutEndpoint = [\n ...logoutRequiredInternalEndpoints,\n ...logoutRequiredExternalEndpoints,\n ];\n\n return logoutEndpoint;\n};\n","export const createLogoutEndpoint = (endpoint: string): string => {\n return `${endpoint}/passport/api/v2/auth/logout`;\n};\n","import { IResponse, PureRestRequest } from '@portals/fetch-api';\nimport { extraVerifyNotAuthRetry } from '../_utils/extra-verify-not-auth-retry';\n\nexport const logoutRequest = (endpoint: string): Promise =>\n new PureRestRequest().postRequest({\n headers: {\n 'Content-Type': 'application/json',\n },\n body: {},\n credentials: 'include',\n endpoint,\n isErrorTextStraightToOutput: true,\n retry: 2,\n extraVerifyRetry: extraVerifyNotAuthRetry,\n tracingDisabled: true,\n extraValidationCallback: ({ statusCode }) => statusCode === 200,\n middlewaresAreDisabled: true,\n });\n","import {\n BrowserCacheParamsType,\n RequestCacheStrategy,\n} from '@portals/fetch-api';\nimport { DEFAULT_API_CACHE_PARAMS } from '../../../_constants';\n\ntype ParamsType = {\n cacheKey: string;\n strategy?: RequestCacheStrategy;\n};\n\nexport const getMenuCacheConfig = ({\n cacheKey,\n strategy,\n}: ParamsType): BrowserCacheParamsType => {\n return {\n ...DEFAULT_API_CACHE_PARAMS,\n strategy: strategy || 'NetworkFirst',\n requestCacheKey: cacheKey,\n };\n};\n","import { RequestCacheStrategy } from '@portals/fetch-api';\nimport { getMenuCacheConfig } from '../../_utils/api-cache/configs/menu-cache-config';\n\ntype ParamsType = {\n cacheKey: string;\n strategy?: RequestCacheStrategy;\n userId?: number;\n menuFromFileRequest: boolean;\n defaultShown?: boolean;\n};\n\nexport const getMainMenuRequestConfig = ({\n cacheKey,\n strategy,\n userId,\n menuFromFileRequest,\n defaultShown,\n}: ParamsType) => {\n /* eslint-disable no-underscore-dangle */\n const {\n ENVS: { MAIN_ABAC_SCOPE },\n __ENDPOINTS__: {\n LOAD_MENU_REQUEST_ENDPOINT,\n LOAD_MENU_FILE_REQUEST_ENDPOINT,\n },\n } = window;\n\n if (\n (LOAD_MENU_REQUEST_ENDPOINT || LOAD_MENU_FILE_REQUEST_ENDPOINT) &&\n MAIN_ABAC_SCOPE\n ) {\n return {\n defaultShown,\n menuFromFileRequest,\n loadMenuRequestEndpoint: menuFromFileRequest\n ? LOAD_MENU_FILE_REQUEST_ENDPOINT\n : LOAD_MENU_REQUEST_ENDPOINT,\n appNamespace: MAIN_ABAC_SCOPE,\n browserCacheParams:\n cacheKey && userId\n ? getMenuCacheConfig({\n cacheKey: menuFromFileRequest\n ? `get-menu-file-request-${cacheKey}-${userId}`\n : `get-menu-request-${cacheKey}-${userId}`,\n strategy: strategy || 'NetworkFirst',\n })\n : null,\n };\n }\n\n return {\n loadMenuRequestEndpoint: '',\n appNamespace: '',\n menuFromFileRequest: false,\n };\n};\n","export const getCookie = (cookieName: string) => {\n const cookie: Record = {};\n\n document.cookie.split(';').forEach((cookies) => {\n const [name, value] = cookies.split('=');\n cookie[name.trim()] = value.trim();\n });\n\n return cookie[cookieName];\n};\n","/* eslint-disable no-new-func */\nimport { sentryLogger } from '@portals/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 { fetchUserPermissionsAction, getUserInfo } from '@portals/service-user';\nimport { fetchMenuActionSaga } from '@portals/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);\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 React, { useEffect } from 'react';\nimport { RouteNode } from '@portals/service-router';\nimport { Router, State } from 'router5';\nimport { PerformanceTrackHOC } from '@portals/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 { performanceMonitor } from '@portals/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 React, { memo } from 'react';\nimport { PerformanceTrackHOC } from '@portals/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 '@portals/service-products';\nimport {\n getUserInfoIsLoading,\n getUserPermissionsIsLoading,\n StatePartUser,\n} from '@portals/service-user';\nimport { BaseAction } from '@portals/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 '@portals/redux-core-modules';\nimport { ConnectedLayout } from '../../_components/connected-layout';\nimport { RootComponents } from '../root-components';\nimport 'reset-css';\nimport 'normalize.css';\nimport '@portals/portal-fonts/hauss.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 {\n BrowserCacheParamsType,\n RequestCacheStrategy,\n} from '@portals/fetch-api';\nimport { DEFAULT_API_CACHE_PARAMS } from '../../../_constants';\n\ntype ParamsType = {\n cacheKey: string;\n strategy?: RequestCacheStrategy;\n};\n\nexport const getAbacPermissionsCacheConfig = ({\n cacheKey,\n strategy,\n}: ParamsType): BrowserCacheParamsType => {\n return {\n ...DEFAULT_API_CACHE_PARAMS,\n strategy: strategy || 'NetworkFirst',\n requestCacheKey: cacheKey,\n };\n};\n","/* eslint-disable no-new-func */\nimport { sentryLogger } from '@portals/service-logger';\nimport {\n BrowserCacheParamsType,\n RequestCacheStrategy,\n} from '@portals/fetch-api';\nimport { getFormattedFilteredFeatures } from '@portals/service-user';\nimport { appNamespace } from '../../_constants';\nimport { getAbacPermissionsCacheConfig } from '../../_utils/api-cache/configs/abac-cache-config';\n\ntype ParamsType = {\n getCookie: (cookieName: string) => string;\n userId?: number;\n strategy?: RequestCacheStrategy;\n featuresFilterList: Array;\n};\n\ntype OuputType = {\n scope: string;\n key?: string | number | null;\n attributes?: Array>;\n noRetry?: boolean;\n ignoreResponseIdCompare?: boolean;\n browserCacheParams?: BrowserCacheParamsType;\n featuresFilterList: Array;\n};\n\nexport const getAbacRequestParams = ({\n getCookie,\n strategy,\n userId,\n featuresFilterList,\n}: ParamsType): OuputType => {\n const initialSerializedFunction = window.INIT_ABAC_PARAMS_FUNCTION;\n\n if (initialSerializedFunction) {\n try {\n const parsedFunction = new Function(\n `return ${initialSerializedFunction}`\n )();\n\n const initialParams = parsedFunction({ getCookie });\n\n return {\n ...initialParams,\n scope: window.ENVS.MAIN_ABAC_SCOPE,\n ignoreResponseIdCompare: true,\n featuresFilterList: getFormattedFilteredFeatures(featuresFilterList),\n browserCacheParams:\n initialParams.key && userId\n ? getAbacPermissionsCacheConfig({\n cacheKey: `get-abac-features-request-${initialParams.key}-${userId}`,\n strategy,\n })\n : null,\n };\n } catch (error) {\n console.error('error in getInitialAbacParams function', error);\n\n sentryLogger.sendError({\n error,\n project: appNamespace,\n message: 'error in getInitialAbacParams function',\n });\n\n return {\n scope: window.ENVS.MAIN_ABAC_SCOPE,\n key: null,\n ignoreResponseIdCompare: true,\n featuresFilterList,\n };\n }\n }\n\n return {\n scope: window.ENVS.MAIN_ABAC_SCOPE,\n ignoreResponseIdCompare: true,\n featuresFilterList,\n };\n};\n","import {\n BrowserCacheParamsType,\n IResponse,\n RequestCacheStrategy,\n} from '@portals/fetch-api';\nimport { DEFAULT_API_CACHE_PARAMS } from '../../../_constants';\nimport { USER_INFO_CACHE_KEY } from '../_constants';\n\ntype ParamsType = {\n onUpdateCache?: (response: IResponse) => void;\n strategy?: RequestCacheStrategy;\n userId: number;\n};\n\nexport const getUserInfoCacheConfig = ({\n onUpdateCache,\n strategy,\n userId,\n}: ParamsType): BrowserCacheParamsType => {\n return {\n ...DEFAULT_API_CACHE_PARAMS,\n strategy: strategy || 'NetworkFirst',\n requestCacheKey: `${userId}-${USER_INFO_CACHE_KEY}`,\n onUpdateCache,\n };\n};\n","import {\n AB_EXPERIMENTS_ABAC_FEATURE,\n AB_EXPERIMENTS_SCOPE,\n} from '@portals/databus-service-user';\n\nconst ABAC_PERMISSIONS_DATA_FEATURES = [\n { scope: AB_EXPERIMENTS_SCOPE, featureKey: AB_EXPERIMENTS_ABAC_FEATURE },\n];\n\nexport const getAbacPermissionsDataFeatures = (supplierId: string) =>\n ABAC_PERMISSIONS_DATA_FEATURES.map((feature) => ({\n ...feature,\n key: supplierId,\n }));\n","import {\n AB_EXPERIMENTS_ABAC_FEATURE,\n AB_EXPERIMENTS_SCOPE,\n PermissionsDataType,\n setDataPermissionsAction,\n} from '@portals/databus-service-user';\nimport { IAdvancedStore } from '@portals/redux-core-modules';\nimport {\n getAllPermissionsData,\n setUserDataPermissionsAction,\n} from '@portals/service-user';\nimport { removeObjectValueByPath } from './remove-object-value-by-path';\n\nfunction objectDeepCopy(obj: Record) {\n if (typeof obj !== 'object' || obj === null) {\n return obj;\n }\n\n const newObj: Record = {};\n\n Object.keys(obj).forEach((key) => {\n newObj[key] = objectDeepCopy(obj[key] as never);\n });\n\n return newObj;\n}\n\nexport const updateAbExperimentsAfterSupplierChange = (\n store: IAdvancedStore\n) => {\n try {\n const currentUserPermissionsData: PermissionsDataType =\n getAllPermissionsData(store.getState() as never);\n\n const permissionsDataCopy = objectDeepCopy(\n currentUserPermissionsData\n ) as PermissionsDataType;\n\n removeObjectValueByPath(permissionsDataCopy, [\n AB_EXPERIMENTS_SCOPE,\n AB_EXPERIMENTS_ABAC_FEATURE,\n ]);\n\n store.dispatch(\n setUserDataPermissionsAction({\n permissionsData: permissionsDataCopy,\n })\n );\n setDataPermissionsAction(permissionsDataCopy);\n } catch (error) {\n console.error('Error in updateAbExperimentsAfterSupplierChange', error);\n }\n};\n","type TNestedObject = Record>;\n\n/**\n * Gets the value at path of object. If the resolved value is undefined, the `null` is returned in its place.\n * Is a null-safe function and will not throw an error if any property on path is a nil value.\n * \n * @param pathArray - An array of strings representing the path to the desired value within the nested object.\n * Each element in the array corresponds to a property name.\n * @param source -The object to search within. This object can have nested structures.\n * @returns The function returns the parent of the value for the specified path within the source object.\n If any key in the pathArray is not found in the object hierarchy, the function returns null.\n */\nfunction getObjectValueByPath(\n source: TNestedObject,\n pathArray: Array\n): Record | null {\n return (\n pathArray\n .slice(0, -1)\n .reduce((acc: TType, prop: string) => acc?.[prop], source) || null\n );\n}\n\n/**\n * Removes a property from a nested object dynamically based on a provided path.\n *\n * This function takes a source object, a path as an array of strings representing\n * property names, and attempts to remove the property at the end of the path.\n * It modifies the original object by reference.\n *\n * @param source - The object to modify.\n * @param path - An array of strings representing the path to the property to remove.\n * Each element in the array corresponds to a property name in the nested object hierarchy.\n * @returns True if the property was removed successfully, false otherwise.\n * - Returns false if the path is invalid (empty, non-array, or points to a non-existent property)\n * - Returns false if the property could not be deleted (e.g., due to permission issues)\n */\nexport function removeObjectValueByPath(\n source: TType,\n path: Array\n): boolean {\n if (!path || !Array.isArray(path)) {\n return false;\n }\n\n const valueToRemove = getObjectValueByPath(source, path);\n\n if (valueToRemove) {\n const keyToRemove = path[path.length - 1];\n\n return delete valueToRemove[keyToRemove];\n }\n\n return false;\n}\n","/* eslint-disable no-new-func */\nimport { IAdvancedStore } from '@portals/redux-core-modules';\nimport {\n setFetchPermissionsListener,\n setFetchUserDataListener,\n setRefreshPermissionsListener,\n} from '@portals/databus-service-user';\nimport {\n setFetchProductsListener,\n NavigateToRouteParamsType,\n setNavigateProductListener,\n setPrefetchProductListener,\n PrefetchProductParamsType,\n} from '@portals/databus-service-products';\nimport {\n FetchMenuActionPayloadType,\n fetchMenuActionSaga,\n navigateToProductActionSaga,\n preloadRouteAction,\n} from '@portals/service-products';\nimport {\n fetchUserInfoAction,\n fetchUserPermissionsAction,\n FetchUserPermissionsActionPayloadType,\n getUserInfo,\n getUserPermissions,\n refreshUserFeaturesActionSaga,\n RefreshUserFeaturesType,\n fetchUserPermissionsDataAction,\n} from '@portals/service-user';\nimport { batchActions } from 'redux-batched-actions';\nimport { getMainMenuRequestConfig } from '../_utils/get-main-menu-request-config';\nimport { getCookie } from '../_utils/init-app/_utils/get-cookie';\nimport { getAbacRequestParams } from '../_utils/get-abac-request-params';\nimport { getUserInfoCacheConfig } from '../_utils/api-cache/configs/user-info-cache-config';\nimport { getFetchMenuCacheKey } from '../_utils/api-cache/configs/get-fetch-menu-cache-key';\nimport { getAbacPermissionsDataFeatures } from '../_utils/get-abac-permissions-data-features';\nimport { getAbacPermissionsCacheConfig } from '../_utils/api-cache/configs/abac-cache-config';\nimport { ABAC_PERMISSIONS_DATA_CACHE_KEY } from '../_utils/api-cache/_constants';\nimport { updateAbExperimentsAfterSupplierChange } from './_utils';\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(\n store.getState() as any,\n MAIN_ABAC_SCOPE\n );\n\n const fetchMenuCacheKey = getFetchMenuCacheKey({ getCookie }).key;\n const fetchMenuConfig = getMainMenuRequestConfig({\n cacheKey: fetchMenuCacheKey,\n userId,\n menuFromFileRequest:\n !('menuTakenFromFile' in permissions) || permissions.menuTakenFromFile,\n // feature to switch default merging\n // todo rename feature\n defaultShown:\n !('activeSupplier' in permissions) || permissions.activeSupplier,\n });\n\n const fetchMenuActionSagaParams: FetchMenuActionPayloadType =\n permissions?.menuTakenFromFile\n ? {\n ...actionParams,\n configs: fetchMenuConfig,\n permissions,\n }\n : {\n ...actionParams,\n configs: fetchMenuConfig,\n };\n\n store.dispatch(fetchMenuActionSaga(fetchMenuActionSagaParams));\n });\n\n setFetchUserDataListener(() => {\n const { id: userId } = getUserInfo(store.getState() as never);\n const browserCacheParams = userId\n ? getUserInfoCacheConfig({ userId })\n : null;\n\n store.dispatch(\n fetchUserInfoAction({\n browserCacheParams,\n })\n );\n });\n\n setFetchPermissionsListener(\n (actionParams: FetchUserPermissionsActionPayloadType) => {\n const { id: userId } = getUserInfo(store.getState() as never);\n\n const { browserCacheParams, featuresFilterList, key } =\n getAbacRequestParams({\n getCookie,\n userId,\n featuresFilterList: ROOT_ABAC_FEATURES,\n });\n\n const fetchUserPermissionsParams = {\n ...actionParams,\n scope: window.ENVS.MAIN_ABAC_SCOPE,\n browserCacheParams,\n featuresFilterList,\n };\n\n const fetchUserPermissionsDataParams = {\n featuresList: getAbacPermissionsDataFeatures(key ? `${key}` : ''),\n browserCacheParams:\n key && userId\n ? getAbacPermissionsCacheConfig({\n cacheKey: `${ABAC_PERMISSIONS_DATA_CACHE_KEY}-${key}-${userId}`,\n })\n : null,\n };\n\n /**\n * после смены поставщика чистим лишь группы АБ экспериментов из databus-а,\n * чтобы затем получить новые\n */\n updateAbExperimentsAfterSupplierChange(store);\n\n store.dispatch(\n batchActions([\n fetchUserPermissionsDataAction(fetchUserPermissionsDataParams),\n fetchUserPermissionsAction(\n key\n ? { ...fetchUserPermissionsParams, key }\n : fetchUserPermissionsParams\n ),\n ])\n );\n }\n );\n\n setRefreshPermissionsListener((actionParams: RefreshUserFeaturesType) => {\n store.dispatch(refreshUserFeaturesActionSaga(actionParams));\n });\n\n setNavigateProductListener((params: NavigateToRouteParamsType) => {\n store.dispatch(navigateToProductActionSaga(params));\n });\n\n setPrefetchProductListener((params: PrefetchProductParamsType) => {\n store.dispatch(preloadRouteAction(params));\n });\n};\n","import Joi from 'joi';\nimport { IResponse, PureRestRequest } from '@portals/fetch-api';\nimport { INTROSPECT_LOCAL_ENDPOINT } from '../../../api/endpoints/passport';\nimport { extraVerifyNotAuthRetry } from '../_utils/extra-verify-not-auth-retry';\n\nexport type ParamsType = {\n middlewaresAreDisabled?: boolean;\n};\n\nexport const loginInstrospectRequest = ({\n middlewaresAreDisabled,\n}: ParamsType): Promise =>\n new PureRestRequest().getRequest({\n endpoint: INTROSPECT_LOCAL_ENDPOINT,\n isErrorTextStraightToOutput: true,\n credentials: 'include',\n responseSchema: Joi.object({\n error: Joi.string(),\n sessionID: Joi.string(),\n userID: Joi.number(),\n }),\n retry: 2,\n extraVerifyRetry: extraVerifyNotAuthRetry,\n tracingDisabled: true,\n middlewaresAreDisabled,\n notRetryWhenOffline: true,\n customTimeout: 10000,\n });\n","import { IResponse, PureRestRequest } from '@portals/fetch-api';\n\nconst PUBLIC_URL = process.env.PUBLIC_URL;\n\nexport const manifestRequest = (): Promise =>\n new PureRestRequest().getRequest({\n endpoint: `${PUBLIC_URL}/manifest.json`,\n isErrorTextStraightToOutput: true,\n tracingDisabled: true,\n pureJsonFileResponse: true,\n });\n","import translateEN from './en.json';\nimport translateRU from './ru.json';\nimport translateCN from './cn.json';\nimport translateTR from './tr.json';\nimport translateKA from './ka.json';\n\nexport const I18N_DICTIONARY: Record = {\n en: translateEN,\n ru: translateRU,\n cn: translateCN,\n zh: translateCN,\n tr: translateTR,\n ka: translateKA,\n};\n","import translationsEN from './en.json';\nimport translationsRU from './ru.json';\nimport translationsCN from './cn.json';\nimport translationsTR from './tr.json';\nimport translationsKA from './ka.json';\n\nconst RU_LOCALE = 'ru';\nconst EN_LOCALE = 'en';\nconst CN_LOCALE = 'cn';\nconst ZH_LOCALE = 'zh';\nconst TR_LOCALE = 'tr';\nconst KA_LOCALE = 'ka';\n\nexport const ERROR_PAGE_TRANSLATIONS_MAP: Record = {\n [RU_LOCALE]: translationsRU,\n [EN_LOCALE]: translationsEN,\n [CN_LOCALE]: translationsCN,\n [ZH_LOCALE]: translationsCN,\n [TR_LOCALE]: translationsTR,\n [KA_LOCALE]: translationsKA,\n};\n","import { IRequestParams } from '@portals/fetch-api';\nimport { PERSONAL_DATA_LOCAL_ENDPOINT } from '../../../api/endpoints/passport';\nimport { PersonalDataRequestType } from './types';\n\nexport const makeRequestConfig = ({\n middlewaresAreDisabled,\n}: PersonalDataRequestType): IRequestParams => {\n return {\n translateFunction: () => '',\n endpoint: PERSONAL_DATA_LOCAL_ENDPOINT,\n credentials: 'include',\n middlewaresAreDisabled,\n };\n};\n","import { IResponse, PureRestRequest } from '@portals/fetch-api';\nimport { PersonalDataRequestType } from './types';\nimport { makeRequestConfig } from './make-request-config';\n\nexport const personalDataRequest = (\n requestParams: PersonalDataRequestType\n): Promise =>\n new PureRestRequest().getRequest(makeRequestConfig(requestParams));\n","import { IResponse, PureRestRequest } from '@portals/fetch-api';\nimport { UpgradeCookieRequestType } from './types';\nimport { makeRequestConfig } from './make-request-config';\n\nexport const upgradeCookieRequest = (\n requestParams: UpgradeCookieRequestType\n): Promise =>\n new PureRestRequest().postRequest(makeRequestConfig(requestParams));\n","import { IRequestParams } from '@portals/fetch-api';\nimport {\n UPGRADE_COOKIE_ENDPOINT,\n UPGRADE_COOKIE_ENDPOINT_PATH,\n} from '../../../api/endpoints/passport';\nimport { UpgradeCookieRequestType } from './types';\n\nexport const makeRequestConfig = ({\n token,\n endpoint = '',\n isCurrentDomainEndpoint = true,\n middlewaresAreDisabled,\n}: UpgradeCookieRequestType): IRequestParams => {\n const cookieUpgradeEndpoint = isCurrentDomainEndpoint\n ? UPGRADE_COOKIE_ENDPOINT\n : `${endpoint}${UPGRADE_COOKIE_ENDPOINT_PATH}`;\n\n return {\n translateFunction: () => '',\n endpoint: cookieUpgradeEndpoint,\n headers: {\n AuthorizeV3: token,\n },\n credentials: 'include',\n middlewaresAreDisabled,\n };\n};\n","const pendingRequests: { [key: string]: Promise } = {};\n\n// TODO docs\nexport function asyncSingleton(\n cacheKey: string,\n promiseMaker: () => Promise\n) {\n if (!pendingRequests[cacheKey]) {\n pendingRequests[cacheKey] = promiseMaker().finally(() => {\n delete pendingRequests[cacheKey];\n });\n }\n\n return pendingRequests[cacheKey] as ReturnType;\n}\n","import { IResponse, OFFLINE_STATUS_CODE } from '@portals/fetch-api';\nimport { REQUEST_ERROR_STATUS_CODE } from '@portals/fetch-api/dist/constants';\nimport { personalDataRequest } from '../../../api/requests/personal-data';\nimport { upgradeCookieRequest } from '../../../api/requests/upgrade-cookie';\nimport { asyncSingleton } from '../../../_utils/auth-v3/async-singleton';\n\nexport class ValidateTokenError extends Error {\n constructor(public message: string, public code?: number) {\n super(message);\n }\n}\n\nconst handleOfflineError = ({ code, headers, errorText, error }: IResponse) => {\n if (!error) {\n return;\n }\n\n if (\n code === OFFLINE_STATUS_CODE ||\n // проверка для Safari, может вернуть пустые хидеры в оффлайне\n (code === REQUEST_ERROR_STATUS_CODE && !Object.keys(headers).length)\n ) {\n throw new ValidateTokenError(errorText, OFFLINE_STATUS_CODE);\n }\n\n throw new ValidateTokenError(errorText, code);\n};\n\nconst validateTokenRaw = async (accessToken: string) => {\n const upgradeCookieResponse = await upgradeCookieRequest({\n token: accessToken,\n middlewaresAreDisabled: true,\n });\n\n handleOfflineError(upgradeCookieResponse);\n\n const personalDataResponse = await personalDataRequest({\n middlewaresAreDisabled: true,\n });\n\n handleOfflineError(personalDataResponse);\n\n return true;\n};\n\nexport const validateToken = (accessToken: string) =>\n asyncSingleton('validationToken', () => validateTokenRaw(accessToken));\n","import { OFFLINE_STATUS_CODE } from '@portals/fetch-api';\nimport { SELLER_PORTAL_ACCESS_TOKEN } from '../../../_constants';\nimport { validateToken } from '../../../_utils/auth-v3/validate-token';\nimport { asyncSingleton } from '../../../_utils/auth-v3/async-singleton';\n\nconst verifyExistingTokenRaw = async () => {\n const accessToken = localStorage.getItem(SELLER_PORTAL_ACCESS_TOKEN) || '';\n\n if (!accessToken) {\n throw new Error();\n }\n\n try {\n await validateToken(accessToken);\n } catch (error: any) {\n if (error?.code === OFFLINE_STATUS_CODE) {\n // NOTE\n // Если оффлайн, считаем что токен валидный, так как он существовал\n return true;\n }\n\n localStorage.removeItem(SELLER_PORTAL_ACCESS_TOKEN);\n throw error;\n }\n\n return true;\n};\n\nexport const verifyExistingToken = () =>\n asyncSingleton('verifyExistingToken', verifyExistingTokenRaw);\n","import Joi from 'joi';\n\nexport const responseSchema = Joi.object({\n result: Joi.number().required(),\n error: Joi.any().when('result', {\n not: Joi.valid(0),\n then: Joi.string().required(),\n otherwise: Joi.forbidden(),\n }),\n payload: Joi.any().when('result', {\n is: Joi.valid(0),\n then: Joi.object({\n // eslint-disable-next-line camelcase\n access_token: Joi.string().required(),\n }),\n }),\n});\n","import { IResponse, PureRestRequest } from '@portals/fetch-api';\nimport { SlideRequestType } from './type';\nimport { makeRequestConfig } from './make-request-config';\n\nexport const slideRequest = (\n requestParams: SlideRequestType\n): Promise =>\n new PureRestRequest().postRequest(makeRequestConfig(requestParams));\n","import { IRequestParams } from '@portals/fetch-api';\nimport { LOGIN_V3_ENDPOINT } from '../../../api/endpoints/passport';\nimport { SlideRequestType } from './type';\nimport { responseSchema } from './response-schema';\n\nexport const makeRequestConfig = ({\n middlewaresAreDisabled,\n}: SlideRequestType): IRequestParams => {\n return {\n endpoint: LOGIN_V3_ENDPOINT,\n responseSchema,\n middlewaresAreDisabled,\n credentials: 'include',\n };\n};\n","import Joi from 'joi';\n\nexport const responseSchema = Joi.object({\n result: Joi.number().required(),\n error: Joi.any().when('result', {\n not: Joi.valid(0),\n then: Joi.string().required(),\n otherwise: Joi.forbidden(),\n }),\n});\n","import { IResponse, PureRestRequest } from '@portals/fetch-api';\nimport { SlideConfirmRequestType } from './type';\nimport { makeRequestConfig } from './make-request-config';\n\nexport const slideConfirmRequest = (\n requestParams: SlideConfirmRequestType\n): Promise =>\n new PureRestRequest().postRequest(makeRequestConfig(requestParams));\n","import { IRequestParams } from '@portals/fetch-api';\nimport { SLIDE_CONFIRM_ENDPOINT } from '../../../api/endpoints/passport';\nimport { SlideConfirmRequestType } from './type';\nimport { responseSchema } from './response-schema';\n\nexport const makeRequestConfig = ({\n sticker,\n middlewaresAreDisabled,\n}: SlideConfirmRequestType): IRequestParams => {\n return {\n middlewaresAreDisabled,\n endpoint: SLIDE_CONFIRM_ENDPOINT,\n responseSchema,\n body: {\n sticker,\n },\n credentials: 'include',\n };\n};\n","import { SELLER_PORTAL_ACCESS_TOKEN } from '../../../_constants';\nimport { slideRequest } from '../../../api/requests/slide';\nimport { slideConfirmRequest } from '../../../api/requests/slide-confirm';\nimport {\n AUTH_V3_NO_COOKIE_ERROR_RESULT,\n AUTH_V3_RESPONSE_SUCCESS_RESULT,\n} from '../../../api/requests/_constants';\nimport { validateToken } from '../../../_utils/auth-v3/validate-token';\nimport { asyncSingleton } from '../../../_utils/auth-v3/async-singleton';\nimport { RefreshTokenCookieUnavailable } from '../../../_utils/auth-v3/_common/referesh-token-cookie-unavailable';\n\nconst getNewTokenRaw = async () => {\n const {\n data: { result, payload, error: slideErrorText },\n } = await slideRequest({ middlewaresAreDisabled: true });\n\n const accessToken = payload?.access_token;\n\n if (result !== AUTH_V3_RESPONSE_SUCCESS_RESULT) {\n if (result === AUTH_V3_NO_COOKIE_ERROR_RESULT) {\n throw new RefreshTokenCookieUnavailable();\n }\n\n throw new Error(slideErrorText);\n }\n\n const {\n data: { error: slideConfirmError, result: confirmResult },\n } = await slideConfirmRequest({\n sticker: payload?.sticker,\n middlewaresAreDisabled: true,\n });\n\n if (confirmResult !== AUTH_V3_RESPONSE_SUCCESS_RESULT) {\n throw new Error(slideConfirmError);\n }\n\n await validateToken(accessToken);\n\n localStorage.setItem(SELLER_PORTAL_ACCESS_TOKEN, accessToken);\n\n return true;\n};\n\nexport const getNewToken = () => asyncSingleton('getNewToken', getNewTokenRaw);\n","import { verifyExistingToken } from '../../../_utils/auth-v3/verify-existing-token';\nimport { asyncSingleton } from '../../../_utils/auth-v3/async-singleton';\nimport { getNewToken } from '../../../_utils/auth-v3/get-new-token';\nimport { RefreshTokenCookieUnavailable } from '../../../_utils/auth-v3/_common/referesh-token-cookie-unavailable';\n\nconst authViaV3Raw = async () => {\n if (!window.ENVS.ENABLE_AUTH_V3) {\n throw new RefreshTokenCookieUnavailable();\n }\n\n return verifyExistingToken()\n .catch(() => getNewToken())\n .catch((error: any) => {\n console.error(error);\n // TODO temporary fix\n throw new RefreshTokenCookieUnavailable();\n });\n};\n\nexport const authViaV3 = () => asyncSingleton('authViaV3', authViaV3Raw);\n","import { OFFLINE_STATUS_CODE } from '@portals/fetch-api';\nimport { REQUEST_ERROR_STATUS_CODE } from '@portals/fetch-api/dist/constants';\n\nexport const OFFLINE_ERROR_TEXT = 'offline';\n\ntype ParamsType = {\n code: number;\n headers: any;\n};\n\nexport const processOfflineRequestCode = ({ code, headers }: ParamsType) => {\n const offlineStatus =\n typeof navigator.onLine !== 'undefined' && !navigator.onLine;\n\n if (\n offlineStatus ||\n code === OFFLINE_STATUS_CODE ||\n (code === REQUEST_ERROR_STATUS_CODE && !Object.keys(headers).length)\n ) {\n throw new Error(OFFLINE_ERROR_TEXT);\n }\n};\n","import { IResponse } from '@portals/fetch-api';\nimport { loadUserPermissionBatchedRequest } from '@portals/service-user';\nimport { PermissionsDataItemType } from '@portals/databus-service-user';\nimport { getAbacPermissionsDataFeatures } from '../get-abac-permissions-data-features';\nimport { getAbacPermissionsCacheConfig } from '../api-cache/configs/abac-cache-config';\nimport { ABAC_PERMISSIONS_DATA_CACHE_KEY } from '../api-cache/_constants';\n\ntype TParams = {\n supplierId: string | null;\n userId: string;\n onUpdateCache: (data: any) => void;\n};\n\ntype TOutput = Array<\n IResponse & {\n data: {\n decision: boolean;\n data?: PermissionsDataItemType;\n };\n }\n> | null;\n\nexport const fetchUserPermissionsData = async ({\n userId,\n supplierId,\n onUpdateCache,\n}: TParams): Promise => {\n try {\n const browserCacheParams =\n supplierId && userId\n ? {\n ...getAbacPermissionsCacheConfig({\n strategy: 'StaleWhileRevalidate',\n cacheKey: `${ABAC_PERMISSIONS_DATA_CACHE_KEY}-${supplierId}-${userId}`,\n }),\n onUpdateCache,\n }\n : null;\n\n const { data } = await loadUserPermissionBatchedRequest({\n features: getAbacPermissionsDataFeatures(supplierId || ''),\n browserCacheParams,\n });\n\n return data;\n } catch (error) {\n console.error('[fetchUserPermissionsData] get an error', error);\n\n return null;\n }\n};\n","import { PermissionType } from '@portals/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 '@portals/databus-service-user';\nimport { setUserPermissionsAction } from '@portals/service-user';\nimport { Dispatch } from 'redux';\nimport { getFormattedPermissions } from '../../get-formatted-permissions';\n\ntype ParamsType = {\n dispatch: Dispatch;\n permissions: any;\n};\n\nexport const formatPermissionsAndDispatch = ({\n dispatch,\n permissions,\n}: ParamsType) => {\n try {\n const { userPermissions } = getFormattedPermissions(permissions);\n\n dispatch(setUserPermissionsAction({ permissions: userPermissions }));\n setPermissionsAction(userPermissions);\n } catch (error) {\n dispatch(\n setUserPermissionsAction({\n permissions: { [window.ENVS.MAIN_ABAC_SCOPE]: {} },\n })\n );\n }\n};\n","import { USER_DEVICE_LIST } from '../../_constants';\n\ntype DeviceType = {\n device: string;\n platform: RegExp;\n};\nexport const getDeviceUser = (): string => {\n const { userAgent } = window.navigator;\n const userDevice = USER_DEVICE_LIST.find((device: DeviceType) =>\n device.platform.test(userAgent)\n );\n\n return userDevice ? userDevice.device : 'Неизвестная платформа';\n};\n","import { ExtraVerifyRetryCallbackType } from '@portals/fetch-api/dist/types';\n\nexport const extraVerifyUpgradeNotAuthRetry: ExtraVerifyRetryCallbackType = ({\n formattedResponseData: { code, error },\n}) => {\n if (!error) {\n return false;\n }\n\n if (code === 401 || code === 400) {\n return false;\n }\n\n return true;\n};\n","import { BROWSER_LIST } from '../../_constants';\nimport { getBrowserVersion } from '../../_utils/get-browser-version';\n\nexport const getBrowserInfo = (): string => {\n const { userAgent } = window.navigator;\n const browserNames = Object.keys(BROWSER_LIST);\n\n return (\n browserNames.reduce((acc, browserName) => {\n if (acc) {\n return acc;\n }\n\n if (userAgent.indexOf(browserName) > -1) {\n const browserFullName = BROWSER_LIST[browserName];\n const version = getBrowserVersion({ browserName, userAgent });\n\n return `${browserFullName} ${version}`;\n }\n\n return acc;\n }, '') || 'Unknown Browser'\n );\n};\n","type ParamsType = {\n browserName: string;\n userAgent: string;\n};\n\nexport const getBrowserVersion = ({\n browserName,\n userAgent,\n}: ParamsType): string | undefined => {\n const regExpBody = browserName === 'Safari' ? 'Version' : browserName;\n const regExp = new RegExp(`${regExpBody}/\\\\d+.\\\\d+`);\n const version = userAgent.match(regExp);\n\n return version ? version[0].split('/').pop() : '';\n};\n","import { IResponse, RestRequest } from '@portals/fetch-api';\nimport { extraVerifyNotAuthRetry } from '../_utils/extra-verify-not-auth-retry';\n\nexport type LoginRequestParamsType = {\n options?: {\n notify_code: string;\n };\n token: string;\n device: string;\n version: string;\n endpoint: string;\n middlewaresAreDisabled?: boolean;\n};\n\nexport const loginRequest = ({\n options,\n token,\n device,\n version,\n endpoint,\n middlewaresAreDisabled,\n}: LoginRequestParamsType): Promise =>\n new RestRequest().postRequest({\n endpoint,\n body: {\n options,\n token,\n device,\n version,\n },\n isErrorTextStraightToOutput: true,\n credentials: 'include',\n retry: 2,\n extraVerifyRetry: extraVerifyNotAuthRetry,\n tracingDisabled: true,\n middlewaresAreDisabled,\n extraValidationCallback: ({ statusCode }) => statusCode === 200,\n });\n","/* eslint-disable no-underscore-dangle */\n\nimport Joi from 'joi';\nimport { PureRestRequest } from '@portals/fetch-api';\nimport { extraVerifyNotAuthRetry } from '../_utils/extra-verify-not-auth-retry';\n\ntype ParamsType = {\n endpoint: string;\n middlewaresAreDisabled?: boolean;\n};\n\nexport const grantRequest = ({\n endpoint,\n middlewaresAreDisabled,\n}: ParamsType): Promise =>\n new PureRestRequest().postRequest({\n endpoint,\n body: {},\n responseSchema: Joi.object({\n error: Joi.string().allow(''),\n token: Joi.string(),\n }),\n isErrorTextStraightToOutput: true,\n credentials: 'include',\n retry: 2,\n extraVerifyRetry: extraVerifyNotAuthRetry,\n tracingDisabled: true,\n middlewaresAreDisabled,\n });\n","import {\n GRANT_LOCAL_ENDPOINT,\n LOGIN_CENTRAL_ENDPOINT,\n} from '../../../../../api/endpoints/passport';\nimport { getBrowserInfo } from '../../../../../_utils/get-browser-info';\nimport { getDeviceUser } from '../../../../../_utils/get-device-user';\nimport { grantRequest } from '../../../grant';\nimport { loginRequest } from '../../../login';\n\ntype ParamsType = {\n middlewaresAreDisabled?: boolean;\n};\n\nexport const localGrantAndCentralLogin = async ({\n middlewaresAreDisabled,\n}: ParamsType) => {\n const browserInfo = getBrowserInfo();\n const device = getDeviceUser();\n\n // grant local request\n const {\n data: { token: grantLocalToken, error: grantLocalDataError },\n error: grantLocalError,\n errorText: grantLocalErrorText,\n } = await grantRequest({\n endpoint: GRANT_LOCAL_ENDPOINT,\n middlewaresAreDisabled,\n });\n\n if (grantLocalDataError || !grantLocalToken || grantLocalError) {\n console.error('get grantLocalErrorText:', grantLocalErrorText);\n\n return true;\n }\n\n // login central request\n const { additionalErrors: loginCentralAdditionalErrors } = await loginRequest(\n {\n token: grantLocalToken,\n device,\n version: browserInfo,\n endpoint: LOGIN_CENTRAL_ENDPOINT,\n middlewaresAreDisabled,\n }\n );\n\n if (loginCentralAdditionalErrors && loginCentralAdditionalErrors.error) {\n console.error(\n 'get loginCentralAdditionalErrors:',\n loginCentralAdditionalErrors.error\n );\n\n return true;\n }\n\n return true;\n};\n","import { OFFLINE_STATUS_CODE } from '@portals/fetch-api';\nimport { REQUEST_ERROR_STATUS_CODE } from '@portals/fetch-api/dist/constants';\nimport { getDeviceUser } from '../../../_utils/get-device-user';\nimport { OFFLINE_ERROR_TEXT } from '../../../_utils/process-offline-code';\nimport { transformSiteCookieRequest } from '../transform-site-cookie';\nimport { centralGrantAndLocalLogin } from './_utils/central-grant-and-local-login';\nimport { localGrantAndCentralLogin } from './_utils/local-grant-and-central-login';\n\nconst device = getDeviceUser();\n\ntype ParamsType = {\n middlewaresAreDisabled?: boolean;\n};\n\nexport const loginWithSSORequest = async ({\n middlewaresAreDisabled,\n}: ParamsType) => {\n try {\n await centralGrantAndLocalLogin({ middlewaresAreDisabled });\n await localGrantAndCentralLogin({ middlewaresAreDisabled });\n\n return true;\n } catch (error: any) {\n if (error.message === OFFLINE_ERROR_TEXT) {\n return true;\n }\n const offlineStatus =\n typeof navigator.onLine !== 'undefined' && !navigator.onLine;\n // do the tranformation of site's cookie\n const {\n error: transformCookieError,\n errorText: transformCookieErrorText,\n code: transformCookieCode,\n headers: transformCookieHeaders,\n } = await transformSiteCookieRequest({ device, middlewaresAreDisabled });\n if (\n offlineStatus ||\n transformCookieCode === OFFLINE_STATUS_CODE ||\n (transformCookieCode === REQUEST_ERROR_STATUS_CODE &&\n !Object.keys(transformCookieHeaders).length)\n ) {\n return true;\n }\n\n if (transformCookieError) {\n throw Error(transformCookieErrorText);\n }\n\n // if the tranformation success then make local grant and central login\n await localGrantAndCentralLogin({ middlewaresAreDisabled });\n\n return true;\n }\n};\n","import { getBrowserInfo } from '../../../../../_utils/get-browser-info';\nimport { getDeviceUser } from '../../../../../_utils/get-device-user';\nimport {\n GRANT_CENTRAL_ENDPOINT,\n LOGIN_LOCAL_ENDPOINT,\n} from '../../../../../api/endpoints/passport';\nimport { processOfflineRequestCode } from '../../../../../_utils/process-offline-code';\nimport { loginRequest } from '../../../login';\nimport { grantRequest } from '../../../grant';\n\ntype ParamsType = {\n middlewaresAreDisabled?: boolean;\n};\n\nexport const centralGrantAndLocalLogin = async ({\n middlewaresAreDisabled,\n}: ParamsType) => {\n const browserInfo = getBrowserInfo();\n const device = getDeviceUser();\n\n // grant central request\n const {\n data: { token: grantCentralToken, error: grantCentralDataError },\n error: grantCentralError,\n errorText: grantCentralErrorText,\n code: grantCentralResponseCode,\n headers: grantCentralResponseHeaders,\n } = await grantRequest({\n endpoint: GRANT_CENTRAL_ENDPOINT,\n middlewaresAreDisabled,\n });\n if (grantCentralDataError || !grantCentralToken || grantCentralError) {\n processOfflineRequestCode({\n code: grantCentralResponseCode,\n headers: grantCentralResponseHeaders,\n });\n\n throw Error(grantCentralDataError || grantCentralErrorText);\n }\n\n // login local request\n const {\n additionalErrors: loginLocalAdditionalErrors,\n code: loginLocalResponseCode,\n headers: loginLocalResponseHeaders,\n } = await loginRequest({\n token: grantCentralToken,\n device,\n version: browserInfo,\n endpoint: LOGIN_LOCAL_ENDPOINT,\n middlewaresAreDisabled,\n });\n\n if (loginLocalAdditionalErrors && loginLocalAdditionalErrors.error) {\n processOfflineRequestCode({\n code: loginLocalResponseCode,\n headers: loginLocalResponseHeaders,\n });\n throw Error(loginLocalAdditionalErrors.error);\n }\n\n return true;\n};\n","import { IResponse, PureRestRequest } from '@portals/fetch-api';\nimport { TRANSFORM_SITE_COOKIE_ENDPOINT } from '../../../api/endpoints/passport';\nimport { extraVerifyUpgradeNotAuthRetry } from './utils/extra-verify-upgrade-not-auth-retry';\n\ntype ParamsType = {\n device: string;\n middlewaresAreDisabled?: boolean;\n};\n\nexport const transformSiteCookieRequest = ({\n device,\n middlewaresAreDisabled,\n}: ParamsType): Promise =>\n new PureRestRequest().postRequest({\n endpoint: TRANSFORM_SITE_COOKIE_ENDPOINT,\n isErrorTextStraightToOutput: true,\n credentials: 'include',\n body: {\n device,\n },\n retry: 2,\n extraVerifyRetry: extraVerifyUpgradeNotAuthRetry,\n tracingDisabled: true,\n middlewaresAreDisabled,\n extraValidationCallback: ({ statusCode }) => statusCode === 200,\n });\n","import { IAdvancedStore } from '@portals/redux-core-modules';\nimport { Router } from 'router5';\n\ntype ParamsType = {\n store: IAdvancedStore;\n router: Router;\n};\n\nexport const fetchExternalPackages = async ({ store, router }: ParamsType) => {\n try {\n await import('@root/suppliers-portal-external-packages').then(\n ({\n externalPackages,\n registrationSaga,\n registrationReducer,\n registrationDependencies,\n registrationActions,\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 }\n );\n\n return;\n } catch (error: any) {\n console.error(\n 'fetchExternalPackagesWorkerSaga get an error',\n error.message\n );\n }\n};\n","import { setUserDataAction } from '@portals/databus-service-user';\nimport {\n setUserInfoAction,\n setUserPermissionsAction,\n} from '@portals/service-user';\nimport { Dispatch } from 'redux';\n\ntype ParamsType = {\n dispatch: Dispatch;\n userInfo: any;\n};\n\nexport const setUserInfo = ({ dispatch, userInfo }: ParamsType) => {\n try {\n if (!userInfo) {\n return;\n }\n\n dispatch(setUserInfoAction({ userInfo }));\n setUserDataAction(userInfo);\n } catch (error) {\n dispatch(\n setUserPermissionsAction({\n permissions: { [window.ENVS.MAIN_ABAC_SCOPE]: {} },\n })\n );\n }\n};\n","import { setDataPermissionsAction } from '@portals/databus-service-user';\nimport {\n PermissionsDataType,\n getAllPermissionsData,\n getFormattedDataABACRefreshResponse,\n getRefreshedPermissions,\n setUserDataPermissionsAction,\n} from '@portals/service-user';\nimport { IAdvancedStore } from '@portals/redux-core-modules';\nimport { fetchUserPermissionsData } from '../../../_utils/init-app-utils/fetch-permissions-data';\nimport { getAbacPermissionsDataFeatures } from '../../../_utils/get-abac-permissions-data-features';\n\ntype TParams = {\n store: IAdvancedStore;\n supplierId: string | null;\n responseData: Awaited>;\n withPermissionsMerge?: boolean;\n};\n\nconst mergePermissionsData = (\n store: IAdvancedStore,\n newPermissions: PermissionsDataType\n): PermissionsDataType => {\n const currentUserPermissionsData: PermissionsDataType = getAllPermissionsData(\n store.getState() as never\n );\n\n const formattedNewPermissionsData = getRefreshedPermissions({\n currentPermissions: currentUserPermissionsData,\n newPermissions,\n });\n\n return formattedNewPermissionsData;\n};\n\nexport const formatPermissionsDataAndDispatch = ({\n supplierId,\n store,\n responseData,\n withPermissionsMerge,\n}: TParams) => {\n try {\n if (!responseData) {\n return;\n }\n\n const features = getAbacPermissionsDataFeatures(supplierId || '');\n\n const formattedPermissionsData = getFormattedDataABACRefreshResponse({\n fullResponse: responseData as any,\n initialValues: features,\n });\n\n const permissionsData = withPermissionsMerge\n ? mergePermissionsData(store, formattedPermissionsData)\n : formattedPermissionsData;\n\n store.dispatch(setUserDataPermissionsAction({ permissionsData }));\n setDataPermissionsAction(permissionsData);\n } catch (error) {\n console.error('[formatPermissionsDataAndDispatch] get an error', error);\n }\n};\n","/* eslint-disable no-underscore-dangle */\n\nimport {\n fetchUserInfoAction,\n getFormattedFilteredFeatures,\n loadUserPermissionsRequest,\n setUserPermissionsAction,\n} from '@portals/service-user';\nimport { IAdvancedStore } from '@portals/redux-core-modules';\nimport { batchActions } from 'redux-batched-actions';\nimport {\n geti18Next,\n getLocale,\n setLocale,\n setHeadLang,\n setLanguagesListAction,\n setWildcardLocaleCookie,\n} from '@portals/i18next-utils';\nimport { IResponse } from '@portals/fetch-api';\nimport { fetchManifestActionSaga } from '@portals/service-pwa';\nimport { Router } from 'router5';\nimport { fetchMenuActionSaga } from '@portals/service-products';\nimport { selectedSupplierIdSelector } from '@portals/databus-service-suppliers';\nimport {\n setSupplierId as setSupplierIdForDigitalFingerPrint,\n setUserDataForDigitalFingerPrint,\n} from '@portals/fingerprint-utils';\nimport {\n appNamespace,\n LAST_SUCCESSFUL_LOGIN_KEY,\n SELLER_PORTAL_ACCESS_TOKEN,\n} from '../../_constants';\nimport { initDatabusSubscriptions } from '../../databus/init-databus-subscriptions';\nimport { fetchPlatformModulesActionSaga } from '../../_redux/platform-modules';\nimport {\n setCoreRequestsErrorAction,\n setCoreRequestsErrorCodeAction,\n setInitLoadingStartAction,\n setInitLoadingStopAction,\n} from '../../_redux/app-state-module';\nimport { loginInstrospectRequest } from '../../api/requests/login-introspect';\nimport { manifestRequest } from '../../api/requests/manifest';\nimport { i18nextNSInit } from '../../_constants/i18next/i18next-init';\nimport { parseJwt } from '../../_utils/auth-v3/get-decode-jwt-token';\nimport { authViaV3 } from '../../_utils/auth-v3/auth-via-v3';\nimport { OFFLINE_ERROR_TEXT } from '../process-offline-code';\nimport { getIsNotProductionOrigin } from '../get-is-not-production-origin';\nimport { getAbacRequestParams } from '../get-abac-request-params';\nimport { getUserInfoCacheConfig } from '../api-cache/configs/user-info-cache-config';\nimport { getFetchMenuCacheKey } from '../api-cache/configs/get-fetch-menu-cache-key';\nimport { getMainMenuRequestConfig } from '../get-main-menu-request-config';\nimport { LocalStorageWorker } from '../localstorage-worker';\nimport { clearUserInfoCache } from '../api-cache/clear-user-info';\nimport { redirectToLoginPage } from '../redirect-to-login';\nimport { fetchUserPermissionsData } from '../init-app-utils/fetch-permissions-data';\nimport { formatPermissionsAndDispatch } from './_utils/format-permissions-and-dispatch';\nimport { getCookie } from './_utils/get-cookie';\nimport { processIntrospectResponse } from './_utils/process-introspect-response';\nimport { fetchExternalPackages } from './_utils/fetch-external-packages';\nimport { setUserInfo } from './_utils/set-user-info';\nimport { formatPermissionsDataAndDispatch } from './_utils/format-permissions-data-and-dispatch';\nimport { currentZone } from '@portals/geo-utils';\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 = currentZone;\n\n// eslint-disable-next-line no-underscore-dangle\nconst ROOT_URLS = window.__ROOT_URLS__;\n\ntype ParamsType = {\n store: IAdvancedStore;\n router: Router;\n};\n\nexport const initApp = async ({\n store: { dispatch },\n store,\n router,\n}: ParamsType) => {\n const locale = getLocale({ isFromCookie: true });\n let userId: any;\n let sessionId: any;\n\n try {\n // запускаем первичный флаг загрузки\n dispatch(setInitLoadingStartAction());\n // если нет токена в локальном сторадже делаем запрос\n try {\n await authViaV3();\n } catch (authViaV3Error) {\n console.error('error in authViaV3: ', authViaV3Error);\n if (window.ENVS.DISABLE_PASSPORT_FALLBACK) {\n throw authViaV3Error;\n }\n }\n // инициируем все подписки Databus\n initDatabusSubscriptions(store);\n\n // устанавливаем локаль приложения\n setLocale({ locale, isFromCookie: true });\n\n // устанавливаем lang в \n setHeadLang(locale);\n\n // устанавливаем wildcardlocal локаль\n setWildcardLocaleCookie({ locale, domain: WILDCARD_DOMAIN });\n if (process.env.NODE_ENV === 'development') {\n setWildcardLocaleCookie({ locale, domain: '' });\n }\n\n // инициализируем i18next\n await geti18Next({ appNamespace, locale, debug: false });\n\n await i18nextNSInit(locale);\n\n if (languagesFallback) {\n dispatch(setLanguagesListAction(languagesFallback));\n }\n\n const accessToken = localStorage.getItem(SELLER_PORTAL_ACCESS_TOKEN) || '';\n // декодируем полученый токен\n const decodeAccessToken = parseJwt(accessToken);\n\n // забираем данные юзера чтобы использовать id юзера как часть кэш-ключа в запросах\n if (!decodeAccessToken) {\n const [introspectResponse] = (await Promise.all([\n loginInstrospectRequest({}),\n fetchExternalPackages({ store, router }),\n ])) as unknown as Array;\n\n await processIntrospectResponse({\n response: introspectResponse,\n isNotProductionOrigin,\n });\n userId =\n introspectResponse.data?.userID ||\n Number(LocalStorageWorker.getItem(`${appNamespace}.id`) ?? 0);\n sessionId = introspectResponse.data?.sessionID || '';\n } else {\n await fetchExternalPackages({ store, router });\n userId = decodeAccessToken?.user;\n sessionId = decodeAccessToken?.session_id;\n LocalStorageWorker.setItem(`${appNamespace}.id`, userId);\n }\n\n // инитим скрипт цифрового отпечатка (делаем это тут, потому что нам нужен sessionId из ответа loginInstrospectRequest)\n setUserDataForDigitalFingerPrint({\n sessionId,\n userId,\n locale,\n });\n\n // NOTE\n // Выглядит как костыль, но databus дает подписаться на событие один раз\n // Поэтому ловим событие через window\n window.addEventListener('@data-subscriber/selected-supplier', () => {\n const supplierId = selectedSupplierIdSelector();\n setSupplierIdForDigitalFingerPrint(supplierId);\n });\n\n LocalStorageWorker.setItem(LAST_SUCCESSFUL_LOGIN_KEY, String(Date.now()));\n\n const featuresFilterList = getFormattedFilteredFeatures(ROOT_ABAC_FEATURES);\n\n const initialAbacParams = getAbacRequestParams({\n getCookie,\n strategy: 'StaleWhileRevalidate',\n userId,\n featuresFilterList,\n });\n\n const supplierId = initialAbacParams.key\n ? `${initialAbacParams.key}`\n : null;\n\n const userPermissionDataParams = {\n supplierId,\n userId,\n onUpdateCache: (response: any) =>\n formatPermissionsDataAndDispatch({\n supplierId,\n store,\n responseData: response?.data,\n // нет гарантии, что данные придут когда в датабасе еще пусто, поэтому лучше смержить\n withPermissionsMerge: true,\n }),\n };\n\n const [permissionsResponse, permissionsDataResponse] = await Promise.all([\n loadUserPermissionsRequest(initialAbacParams),\n fetchUserPermissionsData(userPermissionDataParams),\n ]);\n\n const { data: permissions } = permissionsResponse || {\n data: {},\n error: true,\n };\n\n formatPermissionsAndDispatch({\n dispatch: store.dispatch,\n permissions,\n });\n\n formatPermissionsDataAndDispatch({\n supplierId,\n store,\n responseData: permissionsDataResponse,\n });\n\n setUserInfo({\n userInfo: { id: userId },\n dispatch: store.dispatch,\n });\n\n // намеренно не сделан батчинг - тут нужна производительность.\n // запрашиваем все платформенные модули\n dispatch(fetchPlatformModulesActionSaga());\n\n store.dispatch(\n fetchUserInfoAction({\n browserCacheParams: getUserInfoCacheConfig({\n userId,\n onUpdateCache: ({ data }) => {\n setUserInfo({ userInfo: data.user, dispatch: store.dispatch });\n },\n strategy: 'StaleWhileRevalidate',\n }),\n })\n );\n\n dispatch(\n fetchManifestActionSaga({\n request: manifestRequest,\n })\n );\n\n const purePermissions = permissions?.features?.permitted ?? {};\n\n const fetchMenuCacheKey = getFetchMenuCacheKey({ getCookie }).key;\n const fetchMenuConfig = getMainMenuRequestConfig({\n cacheKey: fetchMenuCacheKey,\n strategy: 'StaleWhileRevalidate',\n userId,\n menuFromFileRequest:\n !('menuTakenFromFile' in purePermissions) ||\n purePermissions.menuTakenFromFile,\n // feature to switch default merging\n // todo rename feature\n defaultShown:\n !('activeSupplier' in purePermissions) ||\n purePermissions.activeSupplier,\n });\n\n dispatch(\n fetchMenuActionSaga({\n permissions: purePermissions,\n excludeEndpoinds: ROOT_URLS,\n callbackFinallyLoad: async ({ loadProductsStopAction }) => {\n dispatch(\n batchActions([loadProductsStopAction(), setInitLoadingStopAction()])\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","export const getIsNotProductionOrigin = () => {\n return /(localhost)|(http:\\/\\/)/.test(window.origin);\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: any) => {\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: any) => {\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 '@portals/redux-core-modules';\n\nexport const FETCH_LOGIN_NAVIGATION = '@root/FETCH_LOGIN_NAVIGATION';\nexport const fetchLoginNavigationActionSaga: BaseAction = () => ({\n type: FETCH_LOGIN_NAVIGATION,\n});\n","/* eslint-disable no-underscore-dangle */\nimport { call } from 'redux-saga/effects';\nimport { getLocale } from '@portals/i18next-utils';\nimport { OFFLINE_STATUS_CODE } from '@portals/fetch-api';\nimport { REQUEST_ERROR_STATUS_CODE } from '@portals/fetch-api/dist/constants';\nimport { loginInstrospectRequest } from '../../../api/requests/login-introspect';\nimport { loginWithSSORequest } from '../../../api/requests/login-with-sso';\nimport { redirectToLoginPage } from '../../../_utils/redirect-to-login';\nimport { clearUserInfoCache } from '../../../_utils/api-cache/clear-user-info';\nimport { authViaV3 } from '../../../_utils/auth-v3/auth-via-v3';\nimport { RefreshTokenCookieUnavailable } from '../../../_utils/auth-v3/_common/referesh-token-cookie-unavailable';\n\n// если только зашли или уходим\n// если двигаемся внутри одного приложения\n// если не toState.meta.options.replace\nexport function* loginNavigationWorkerSaga() {\n const locale = getLocale({ isFromCookie: true });\n\n try {\n // проверяем локальную сессию\n try {\n yield call(authViaV3);\n } catch (authError) {\n // если в оффлайне то не редиректить пользователя\n if (typeof navigator.onLine !== 'undefined' && !navigator.onLine) {\n return;\n }\n\n if (!(authError instanceof RefreshTokenCookieUnavailable)) {\n throw authError;\n }\n\n const { error, code, headers } = yield call(loginInstrospectRequest, {});\n\n if (\n !error ||\n code === OFFLINE_STATUS_CODE ||\n (code === REQUEST_ERROR_STATUS_CODE && !Object.keys(headers).length)\n ) {\n return;\n }\n\n // попытка SSO\n yield call(loginWithSSORequest, {});\n }\n } catch {\n clearUserInfoCache();\n\n redirectToLoginPage(locale);\n }\n}\n","import { Plugin, Router, State } from 'router5';\nimport { IRouterDependencies } from '@portals/service-router';\nimport { fetchLoginNavigationActionSaga } from '../../_redux/login';\n\nexport const introspectPassportPlugin = (router?: Router): Plugin => {\n // eslint-disable-next-line\n const { store } = router?.getDependencies() as IRouterDependencies;\n\n return {\n onTransitionSuccess(toState?: State, fromState?: State) {\n const coreRouteFromStateName =\n fromState && fromState.name ? fromState.name.split('.')[0] : null;\n const coreRouteToStateName =\n toState && toState.name ? toState.name.split('.')[0] : null;\n\n const isTheSameRoute =\n fromState && toState && fromState.name === toState.name;\n\n // replace используется для сохранение в урл каких-то значений с перезагрузкой роута\n const isRouteReplaced =\n toState?.meta?.options?.replace &&\n coreRouteToStateName === coreRouteFromStateName;\n\n // если только зашли или уходим\n // если двигаемся внутри одного приложения\n // если не toState.meta.options.replace\n if (\n coreRouteFromStateName &&\n coreRouteToStateName &&\n !isRouteReplaced &&\n !isTheSameRoute\n ) {\n store.dispatch(fetchLoginNavigationActionSaga());\n }\n },\n };\n};\n","const BASE_MESSAGE = 'Navigation error';\n\ntype ParamsType = {\n menuName?: string;\n navigateUrl?: string;\n routeName?: string;\n};\n\nexport const getNavigationErrorMessage = ({\n menuName = '',\n routeName = '',\n navigateUrl = '',\n}: ParamsType): string => {\n if (routeName) {\n return `${BASE_MESSAGE}, routeName: ${routeName}`;\n }\n if (navigateUrl) {\n return `${BASE_MESSAGE}, navigateUrl: ${navigateUrl}`;\n }\n if (menuName) {\n return `${BASE_MESSAGE}, menuName: ${menuName}`;\n }\n\n return BASE_MESSAGE;\n};\n","/* eslint-disable no-new-func */\nimport { getActivatedRoutes, IAdvancedRoute } from '@portals/service-router';\nimport { Router, Middleware } from 'router5';\nimport {\n findRouteFromList,\n getProductsData,\n MenuMainProductConfigListType,\n} from '@portals/service-products';\nimport { IAdvancedStore } from '@portals/redux-core-modules';\nimport { fetchRuntimeConfigRequest } from '../../../api/requests/fetch-runtime-config';\nimport { getModulePath } from './_utils/get-module-path';\n\nwindow.cachedWindowEnvs = new Map();\n\nexport const setWindowEndpointsMiddleware =\n (store: IAdvancedStore) =>\n (router: Router): Middleware =>\n async (toState, fromState) => {\n const { routes } = router.getDependencies();\n\n const activatedRoutes = getActivatedRoutes(toState, fromState, routes);\n\n await Promise.all(\n activatedRoutes.map(async (routeData: IAdvancedRoute) => {\n const windowEndpointsConfig = routeData?.params\n ?.endpointsConfig as unknown as Record;\n\n const routeName = routeData.name;\n\n if (!windowEndpointsConfig) {\n return;\n }\n\n const { fromWindow, staticPath, customModulePath } =\n windowEndpointsConfig;\n\n if (!fromWindow) {\n return;\n }\n\n try {\n // получаем полный список сервисов\n const productsMenuItems: MenuMainProductConfigListType =\n getProductsData(store.getState() as never);\n\n const routeItem = productsMenuItems.find(\n findRouteFromList({ routeName })\n );\n\n const modulePath = getModulePath({\n modulePath: staticPath,\n customModulePath,\n });\n\n const serviceEnvs = routeItem?.config?.envs;\n\n if (window.cachedWindowEnvs.has(routeName)) {\n const cachedEnvs = window.cachedWindowEnvs.get(routeName);\n\n if (cachedEnvs) {\n const funcFromText = new Function(cachedEnvs);\n\n funcFromText();\n }\n\n return;\n }\n\n const runtimeRequest =\n Boolean(serviceEnvs) && serviceEnvs !== 'RUNTIME_ENVS'\n ? // если инлайн энвы то просто вернуть их\n { data: serviceEnvs, error: false, errorText: '' }\n : fetchRuntimeConfigRequest(modulePath);\n\n // RUNTIME_ENVS - это шаблон который должен быть заменен на переменные сервиса перед стартом пода\n const { error = false, errorText = '', data } = await runtimeRequest;\n\n if (error) {\n throw new Error(errorText);\n }\n\n const funcFromText = new Function(data);\n\n funcFromText();\n\n window.cachedWindowEnvs.set(routeName, data);\n } catch (error) {\n console.error('load endpoints from window error', error);\n }\n })\n );\n };\n","// https://web.dev/customize-install/#detect-launch-type\n\nexport const detectIsPWA = () => {\n const isStandalone = window.matchMedia('(display-mode: standalone)').matches;\n\n if (document.referrer.startsWith('android-app://')) {\n return true;\n }\n\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n if (navigator.standalone || isStandalone) {\n return true;\n }\n\n return false;\n};\n","/* eslint-disable no-new-func */\n\ntype ParamsType = {\n getCookie: (cookieName: string) => string;\n};\n\ntype OuputType = {\n key: string;\n};\n\nexport const getSupplierIdFromCookie = ({\n getCookie,\n}: ParamsType): OuputType => {\n const initialSerializedFunction = window.INIT_ABAC_PARAMS_FUNCTION;\n\n if (initialSerializedFunction) {\n try {\n const parsedFunction = new Function(\n `return ${initialSerializedFunction}`\n )();\n\n return {\n ...parsedFunction({ getCookie }),\n };\n } catch (error) {\n console.error('error in getSupplierIdfromCookie', error);\n\n return {\n key: '',\n };\n }\n }\n\n return {\n key: '',\n };\n};\n","import {\n PermissionsDataItemType,\n TAbExperiment,\n} from '@portals/databus-service-user';\n\nexport const formatDataToSpits = (permissionsData: PermissionsDataItemType) => {\n try {\n if (!permissionsData || typeof permissionsData !== 'object') {\n return;\n }\n\n return Object.keys(permissionsData).reduce>(\n (acc, value) => {\n const { data, decision } = permissionsData[\n value as keyof typeof permissionsData\n ] as TAbExperiment;\n\n if (data && data?.expID) {\n acc[data.expID] = {\n ...data,\n decision: Boolean(decision),\n };\n }\n\n return acc;\n },\n {}\n );\n } catch (error) {\n console.error('Error in formatDataToSpits', error);\n\n return {};\n }\n};\n","import { analyticsEventEmitter } from '@portals/wb-front-analytics-tracker';\nimport {\n abExperimentsSelector,\n userDataSelector,\n} from '@portals/databus-service-user';\nimport { getSupplierIdFromCookie } from '../get-supplier-id-from-cookie';\nimport { getCookie } from '../init-app/_utils/get-cookie';\nimport { formatDataToSpits } from '../ab-experiments';\nimport { getLocale } from '@portals/i18next-utils';\n\nconst APP_VERSION = process.env.NX_PUBLIC_APP_VERSION || 'v0.0.0';\nconst APP_BUILD_TIME = process.env.BUILD_TIME || '';\n\nconst additionalParamsGetter = () => {\n const abExperiments = abExperimentsSelector();\n\n const language = getLocale({ isFromCookie:true });\n\n return {\n idUser: userDataSelector().id,\n idSupplier: getSupplierIdFromCookie({ getCookie }).key,\n // для АБ пока отправляем строкой\n splits: JSON.stringify(formatDataToSpits(abExperiments)),\n uiRootVersion: APP_VERSION,\n uiRootBuildTime: APP_BUILD_TIME,\n language,\n };\n};\n\nexport const initAnalytics = () => {\n const counterId = Number(window.ENVS.WB_ANALYTICS_COUNTER_ID);\n const cookieDomain = window.ENVS.WB_ANALYTICS_COOKIE_DOMAIN;\n\n analyticsEventEmitter.setAdditionalParamsGetter(additionalParamsGetter);\n\n const removeCookie = `_wbauid=; path=/; domain=${window.location.hostname}; expires=Thu, 01 Jan 1970 00:00:00 GMT`;\n\n // TODO: https://youtrack.wildberries.ru/issue/SPL-6439\n document.cookie = removeCookie;\n\n analyticsEventEmitter.init({ counterId, cookieDomain, withRequestIdleCallback: false });\n};\n","import { checkIsCurrentDomain } from '../check-is-current-domain';\nimport { externalApiPathRegex } from '../external-api-path-regex';\n\nexport const checkIsExternalApiRequest = (endpoint: string | undefined) => {\n if (!endpoint) {\n return false;\n }\n\n return !checkIsCurrentDomain(endpoint) || externalApiPathRegex.test(endpoint);\n};\n","export const checkIsCurrentDomain = (endpoint: string | undefined): boolean => {\n if (!endpoint) {\n return true;\n }\n\n return (\n endpoint.startsWith('/') || endpoint.startsWith(window.location.origin)\n );\n};\n","import { authViaV3 } from '../../../../../../../_utils/auth-v3/auth-via-v3';\nimport { asyncSingleton } from '../../../../../../../_utils/auth-v3/async-singleton';\nimport { RefreshTokenCookieUnavailable } from '../../../../../../../_utils/auth-v3/_common/referesh-token-cookie-unavailable';\nimport { oldWayLogin } from '../old-way-login';\n\nexport const loginApi = () => {\n return asyncSingleton('loginApi', () =>\n authViaV3().catch((error) => {\n if (error instanceof RefreshTokenCookieUnavailable) {\n return oldWayLogin().then(() => true);\n }\n\n throw error;\n })\n );\n};\n","import { loginInstrospectRequest } from '../../../../../../../api/requests/login-introspect';\nimport { loginWithSSORequest } from '../../../../../../../api/requests/login-with-sso';\n\nexport const oldWayLogin = async () => {\n // check local introspect\n const { error: introspectError } = await loginInstrospectRequest({\n middlewaresAreDisabled: true,\n });\n\n if (introspectError) {\n // check SSO\n await loginWithSSORequest({\n middlewaresAreDisabled: true,\n });\n }\n\n return true;\n};\n","import { IMiddleware, IResponse } from '@portals/fetch-api/dist/types';\nimport { getLocale } from '@portals/i18next-utils';\nimport { OFFLINE_STATUS_CODE } from '@portals/fetch-api';\nimport { redirectToLoginPage } from '../../../../../_utils/redirect-to-login';\nimport { clearUserInfoCache } from '../../../../../_utils/api-cache/clear-user-info';\nimport { checkIsExternalApiRequest } from '../_utils/check-is-external-api-request';\nimport { loginApi } from './_utils/login-api';\nimport { getIsNotLogined } from './_utils/get-is-not-logined';\n\nexport const loginMiddleware: IMiddleware = async ({\n pureRequestParams,\n retryRequest,\n response,\n}): Promise => {\n if (!response.error || response.code === OFFLINE_STATUS_CODE) {\n return response;\n }\n\n const locale = getLocale({ isFromCookie: true });\n\n try {\n const isExternalApiRequest = checkIsExternalApiRequest(\n pureRequestParams.endpoint\n );\n\n // works only with current domain\n if (isExternalApiRequest) {\n // pass to next login-separate-domain-middleware\n return response;\n }\n\n // check if not logined\n const isNotLogined = getIsNotLogined({\n responseBodyJson: JSON.stringify(pureRequestParams.responseBody),\n code: pureRequestParams.code,\n });\n\n if (!isNotLogined) {\n return response;\n }\n\n await loginApi();\n\n // retry request with login\n const responseWithLogin = await retryRequest({\n middlewaresAreDisabled: true,\n });\n\n // return response\n return responseWithLogin;\n } catch (error) {\n // if SSo not valid - there will be an exception - to redirect to login page\n console.error('loginMiddleware error', error);\n\n clearUserInfoCache();\n\n redirectToLoginPage(locale);\n\n return response;\n }\n};\n","import { OFFLINE_STATUS_CODE } from '@portals/fetch-api';\n\ntype ParamsType = {\n responseBodyJson: string;\n code: number;\n};\n\nexport const getIsNotLogined = ({ responseBodyJson, code }: ParamsType) => {\n // check offline and self-domain\n if (code === OFFLINE_STATUS_CODE) {\n return false;\n }\n\n return (\n code === 401 ||\n responseBodyJson.indexOf('empty:user id') !== -1 ||\n responseBodyJson.indexOf('unauthorized') !== -1 ||\n responseBodyJson.indexOf('authorization error') !== -1 ||\n responseBodyJson.indexOf('Не Авторизован') !== -1\n );\n};\n","import { loginInstrospectRequest } from '../../../../../../../api/requests/login-introspect';\nimport { getCentralGrantToken } from '../../../../../../../_utils/init-app-utils/requests-proxy/init-request-proxy-verify/login-separate-domain-middleware/_utils/get-central-grant-token';\nimport { loginRequest } from '../../../../../../../api/requests/login';\nimport { getBrowserInfo } from '../../../../../../../_utils/get-browser-info';\nimport { getDeviceUser } from '../../../../../../../_utils/get-device-user';\n\nexport const oldWayExternalLogin = async (apiBaseUrl: string) => {\n const browserInfo = getBrowserInfo();\n const device = getDeviceUser();\n\n // check local introspect and wait for loginMiddleware if there is need to update SSO\n await loginInstrospectRequest({});\n\n // grant central request\n const grantCentralToken = await getCentralGrantToken();\n\n // login local request\n const { error: localLoginError, errorText: localLoginErrorText } =\n await loginRequest({\n token: grantCentralToken,\n device,\n version: browserInfo,\n endpoint: `${apiBaseUrl}/passport/api/v2/auth/login`,\n middlewaresAreDisabled: true,\n });\n\n if (localLoginError) {\n throw new Error(`Error in domain login ${localLoginErrorText}`);\n }\n\n return true;\n};\n","import { grantRequest } from '../../../../../../../api/requests/grant';\nimport { GRANT_CENTRAL_ENDPOINT } from '../../../../../../../api/endpoints/passport';\nimport { localGrantAndCentralLogin } from '../../../../../../../api/requests/login-with-sso/_utils/local-grant-and-central-login';\n\nexport const getCentralGrantToken = async () => {\n // grant central request\n const {\n data: { token: grantCentralToken },\n } = await grantRequest({\n endpoint: GRANT_CENTRAL_ENDPOINT,\n middlewaresAreDisabled: true,\n });\n\n if (grantCentralToken) {\n return grantCentralToken;\n }\n\n await localGrantAndCentralLogin({ middlewaresAreDisabled: true });\n\n const {\n data: {\n token: retryGrantCentralToken,\n error: grantCentralDataError,\n errorText: grantCentralDataErrorText,\n },\n } = await grantRequest({\n endpoint: GRANT_CENTRAL_ENDPOINT,\n middlewaresAreDisabled: true,\n });\n\n if (grantCentralDataError) {\n throw new Error(grantCentralDataErrorText);\n }\n\n return retryGrantCentralToken;\n};\n","import { asyncSingleton } from '../../../../../../../_utils/auth-v3/async-singleton';\nimport { authViaV3 } from '../../../../../../../_utils/auth-v3/auth-via-v3';\nimport { upgradeExternalDomain } from '../../../../../../../_utils/auth-v3/upgrade-external-domain';\nimport { RefreshTokenCookieUnavailable } from '../../../../../../../_utils/auth-v3/_common/referesh-token-cookie-unavailable';\nimport { oldWayExternalLogin } from '../old-way-external-login';\n\nexport const loginExternalApi = (apiBaseUrl: string) => {\n return asyncSingleton(apiBaseUrl, () =>\n authViaV3()\n .then(() => upgradeExternalDomain(apiBaseUrl))\n .catch((error) => {\n if (error instanceof RefreshTokenCookieUnavailable) {\n return oldWayExternalLogin(apiBaseUrl).then(() => true);\n }\n\n throw error;\n })\n );\n};\n","import { SELLER_PORTAL_ACCESS_TOKEN } from '../../../_constants';\nimport { upgradeCookieRequest } from '../../../api/requests/upgrade-cookie';\n\nexport const upgradeExternalDomain = async (apiBaseUrl: string) => {\n const accessToken = localStorage.getItem(SELLER_PORTAL_ACCESS_TOKEN) || '';\n\n if (!accessToken) {\n throw new Error();\n }\n\n const { data, errorText } = await upgradeCookieRequest({\n isCurrentDomainEndpoint: false,\n endpoint: apiBaseUrl,\n token: accessToken,\n });\n\n if (data.success !== 'true') {\n throw new Error(errorText);\n }\n\n return true;\n};\n","import { IMiddleware, IResponse } from '@portals/fetch-api/dist/types';\nimport { OFFLINE_STATUS_CODE } from '@portals/fetch-api';\nimport { saveExternalApiPath } from '../../../../../_utils/auth-v3/downgrade-list';\nimport { getExternalApiEndpoint } from '../_utils/get-external-api-endpoint';\nimport { checkIsExternalApiRequest } from '../_utils/check-is-external-api-request';\nimport { getIsNotLoggedInSeparateDomain } from './_utils/get-is-not-logged-in-separate-domain';\nimport { loginExternalApi } from './_utils/login-external-api';\n\nexport const loginSeparateDomainMiddleware: IMiddleware = async ({\n pureRequestParams,\n retryRequest,\n response,\n}): Promise => {\n try {\n const isExternalApiRequest = checkIsExternalApiRequest(\n pureRequestParams.endpoint\n );\n\n // works only with current domain\n if (!isExternalApiRequest) {\n return response;\n }\n\n const requestEndpoint = getExternalApiEndpoint(pureRequestParams.endpoint);\n\n saveExternalApiPath(requestEndpoint);\n\n if (!response.error || response.code === OFFLINE_STATUS_CODE) {\n return response;\n }\n\n // check if not logined\n const isNotLogined = getIsNotLoggedInSeparateDomain({\n responseBodyJson: JSON.stringify(pureRequestParams.responseBody),\n code: pureRequestParams.code,\n });\n\n if (!isNotLogined) {\n return response;\n }\n\n await loginExternalApi(requestEndpoint);\n\n // retry request with login\n const responseWithLogin = await retryRequest({\n middlewaresAreDisabled: true,\n });\n\n // return response\n return responseWithLogin;\n } catch (error) {\n // if SSo not valid - there will be an exception - silent exit\n console.error('loginSeparateDomainMiddleware error', error);\n\n return response;\n }\n};\n","import { SELLER_PORTAL_DOWNGRADE_LIST } from '../../../../_constants';\nimport { getListFromStorage } from '../get-list-from-storage';\nimport { parseList } from '../parse-list';\n\nexport const saveExternalApiPath = (apiPath: string) => {\n try {\n const currentList = parseList(getListFromStorage());\n currentList.push(apiPath);\n\n const uniqValues = currentList.reduce((acc, item) => {\n if (!acc.includes(item)) {\n acc.push(item);\n }\n\n return acc;\n }, [] as string[]);\n\n localStorage.setItem(\n SELLER_PORTAL_DOWNGRADE_LIST,\n JSON.stringify(uniqValues)\n );\n // eslint-disable-next-line no-empty\n } catch {}\n};\n","import { OFFLINE_STATUS_CODE } from '@portals/fetch-api';\n\ntype ParamsType = {\n responseBodyJson: string;\n code: number;\n};\n\nexport const getIsNotLoggedInSeparateDomain = ({\n responseBodyJson,\n code,\n}: ParamsType) => {\n // check offline and self-domain\n if (code === OFFLINE_STATUS_CODE) {\n return false;\n }\n\n return (\n code === 401 ||\n code === 403 ||\n responseBodyJson.indexOf('empty:user id') !== -1 ||\n responseBodyJson.indexOf('unauthorized') !== -1 ||\n responseBodyJson.indexOf('authorization error') !== -1 ||\n responseBodyJson.indexOf('Не Авторизован') !== -1\n );\n};\n","import i18next from 'i18next';\nimport { mfaStateRequest } from '../../../../../../api/requests/mfa-state-request';\nimport { MFA_STATE } from '../../../../../../api/endpoints/passport';\nimport { DefaultCriticalActionErrors } from '../../../../../../_constants';\nimport { formatSeconds } from '../../../../../../_utils/init-app-utils/requests-proxy/init-request-proxy-verify/_utils/format-seconds';\n\nexport const getMfaState = async (deviceId: string) => {\n const {\n data: { sticker },\n error: mfaStateError,\n additionalErrors,\n } = await mfaStateRequest({\n endpoint: MFA_STATE,\n deviceId,\n middlewaresAreDisabled: true,\n });\n if (additionalErrors?.data?.ttl) {\n const { hours, minutes, seconds } = formatSeconds(\n additionalErrors?.data?.ttl\n );\n\n throw new Error(\n `${i18next.t(\n DefaultCriticalActionErrors.reachedLimit\n )} ${hours} ${minutes} ${seconds}`\n );\n }\n\n if (mfaStateError) {\n throw new Error(i18next.t(DefaultCriticalActionErrors.requestError));\n }\n\n return sticker;\n};\n","import { IResponse, JSONRPCRequest } from '@portals/fetch-api';\n\ntype TMfaStateRequestParams = {\n endpoint: string;\n deviceId: string;\n middlewaresAreDisabled?: boolean;\n};\n\nexport const mfaStateRequest = ({\n endpoint,\n deviceId,\n middlewaresAreDisabled,\n}: TMfaStateRequestParams): Promise =>\n new JSONRPCRequest().makeRequest({\n endpoint,\n body: {\n params: {\n deviceID: deviceId,\n },\n },\n middlewaresAreDisabled,\n credentials: 'include',\n });\n","type TOutput = {\n hours: string;\n minutes: string;\n seconds: string;\n};\n\nconst SEC_IN_HOUR = 3600;\nconst TIME_SCALE = 60;\n\nexport const formatSeconds = (seconds: number): TOutput => {\n if (!seconds) {\n return {\n hours: '0',\n minutes: '0',\n seconds: '0',\n };\n }\n\n const hours = Math.floor(seconds / SEC_IN_HOUR);\n const modHourSeconds = Math.floor(seconds % SEC_IN_HOUR);\n const minutes = Math.floor(modHourSeconds / TIME_SCALE);\n const modMinuteSeconds = Math.floor(modHourSeconds % TIME_SCALE);\n\n return {\n hours: `${hours} ч`,\n minutes: `${minutes} мин`,\n seconds: `${modMinuteSeconds} сек`,\n };\n};\n","import { MFA_VALIDATE } from '../../../../../../api/endpoints/passport';\nimport { mfaValidateRequest } from '../../../../../../api/requests/mfa-validate';\n\nexport const mfaValidate = async ({\n code,\n sticker,\n deviceID,\n}: {\n code: number;\n sticker: string;\n deviceID: string;\n}) => {\n const params = {\n code,\n sticker,\n deviceID,\n };\n\n const { error: mfaValidateError, errorText: mfaValidateErrorText } =\n await mfaValidateRequest({\n endpoint: MFA_VALIDATE,\n middlewaresAreDisabled: true,\n params,\n });\n\n if (mfaValidateError) {\n throw new Error(`Error in mfa validate ${mfaValidateErrorText}`);\n }\n\n return true;\n};\n","import { IResponse, JSONRPCRequest } from '@portals/fetch-api';\n\ntype TMfaValidateRequestParams = {\n endpoint: string;\n middlewaresAreDisabled?: boolean;\n params: { code: number; sticker: string };\n};\n\nexport const mfaValidateRequest = ({\n endpoint,\n middlewaresAreDisabled,\n params,\n}: TMfaValidateRequestParams): Promise =>\n new JSONRPCRequest().makeRequest({\n endpoint,\n body: {\n params,\n },\n middlewaresAreDisabled,\n credentials: 'include',\n });\n","import { v4 } from 'uuid';\nimport { selectedSupplierIdSelector } from '@portals/databus-service-suppliers';\n\nexport const LS_KEY = 'deviceIdForCritActionLimited';\nconst MAX_ID_LENGTH = 64;\n\n/**\n * @returns Возвращает фальшивый device id, не имеет отношения к authv3\n */\nexport const getDeviceIdForCritAction = () => {\n const existingDeviceId = localStorage.getItem(LS_KEY);\n if (existingDeviceId) {\n return existingDeviceId;\n }\n\n const uuid = v4();\n const supplierId = selectedSupplierIdSelector();\n const newDeviceId = `crit_${supplierId}_${uuid}`;\n const newDeviceIdLimited = newDeviceId.substring(0, MAX_ID_LENGTH);\n localStorage.setItem(LS_KEY, newDeviceIdLimited);\n\n return newDeviceIdLimited;\n};\n","import {\n setCriticalActionErrorEvent,\n setIsCriticalActionIncorrectCode,\n setIsUserCriticalAction,\n setUserCriticalActionCode,\n} from '@portals/databus-service-user';\nimport { getMfaState } from '../../../../../../_utils/init-app-utils/requests-proxy/init-request-proxy-verify/_utils/get-mfa-state';\nimport { criticalAction } from '../../../../../../_utils/init-app-utils/requests-proxy/init-request-proxy-verify/_utils/critical-action';\nimport { getDeviceIdForCritAction } from './_utils/get-device-id-for-crit-action';\nimport { ErrorReason } from '@portals/fetch-api';\nimport i18next from 'i18next';\nimport { APP_NAMESPACE } from '../../../../../../_constants/i18next/app-namespace';\n\nexport const confirmationCriticalAction = async ({\n retryRequest,\n isRpc,\n}: {\n retryRequest: () => Promise;\n isRpc: boolean;\n}) => {\n const deviceId = getDeviceIdForCritAction();\n\n try {\n const { sticker }: { sticker: string } = await getMfaState(deviceId);\n\n setUserCriticalActionCode(null);\n setIsCriticalActionIncorrectCode(false);\n setIsUserCriticalAction(true);\n\n const result = await criticalAction({\n retryRequest,\n sticker,\n deviceId,\n });\n\n return result;\n } catch (error: any) {\n const errorText = String(error.message || error);\n\n setCriticalActionErrorEvent({ errorText });\n\n const commonMessage = i18next.t(\n `${APP_NAMESPACE}:backend-errors.failed-to-confirm-action`\n );\n\n return isRpc\n ? new Response(\n JSON.stringify({\n id: 'json-rpc_???',\n jsonrpc: '2.0',\n error: {\n code: -32007,\n message: commonMessage,\n data: {\n message: commonMessage,\n },\n },\n })\n )\n : new Response(\n JSON.stringify({\n error: true,\n errorText: commonMessage,\n data: null,\n additionalErrors: {\n reasonCode: ErrorReason.CriticalAction,\n },\n }),\n { status: 500, statusText: 'critical action error' }\n );\n } finally {\n setIsUserCriticalAction(false);\n }\n};\n","import {\n removeUserDataCriticalActionCodeListener,\n setIsCriticalActionIncorrectCode,\n setUserDataCriticalActionCodeListener,\n setUserSendCodeLoadingAction,\n userDataIsCriticalActionSelector,\n} from '@portals/databus-service-user';\nimport i18next from 'i18next';\nimport { mfaValidate } from '../../../../../../_utils/init-app-utils/requests-proxy/init-request-proxy-verify/_utils/mfa-validate';\nimport { DefaultCriticalActionErrors } from '../../../../../../_constants';\n\nexport const criticalAction = async ({\n retryRequest,\n sticker,\n deviceId,\n}: {\n retryRequest: () => Promise;\n sticker: string;\n deviceId: string;\n}) => {\n return new Promise((resolve, reject) => {\n setUserDataCriticalActionCodeListener(({ criticalActionCode }) => {\n if (criticalActionCode) {\n mfaValidate({ code: criticalActionCode, sticker, deviceID: deviceId })\n .then(() => {\n return retryRequest()\n .then((response) => {\n resolve(response);\n })\n .finally(() => {\n setIsCriticalActionIncorrectCode(false);\n });\n })\n .catch(() => {\n setIsCriticalActionIncorrectCode(true);\n })\n .finally(() => {\n setUserSendCodeLoadingAction(false);\n });\n }\n const userDataIsCriticalAction = userDataIsCriticalActionSelector();\n\n if (!userDataIsCriticalAction) {\n reject(i18next.t(DefaultCriticalActionErrors.abortEnterCodeError));\n }\n });\n }).finally(() => {\n removeUserDataCriticalActionCodeListener();\n });\n};\n","import {\n InterceptorsController,\n MiddlewaresController,\n} from '@portals/fetch-api';\nimport { loginMiddleware } from './login-middleware';\nimport { loginSeparateDomainMiddleware } from './login-separate-domain-middleware';\nimport { checkIsCriticalAction } from './_utils/check-is-critical-action';\nimport { confirmationCriticalAction } from './_utils/confirmation-critical-action';\n\nexport const initRequestProxyVerify = () => {\n new InterceptorsController().addResponseInterceptor((response, { retry, requestProtocol }) => {\n if (checkIsCriticalAction(response.status)) {\n return confirmationCriticalAction({\n retryRequest: retry,\n isRpc: requestProtocol === 'jsonRpc',\n }) as Promise;\n }\n\n return Promise.resolve(response);\n });\n\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","import { CRITICAL_ACTION_CODE } from '../../../../../../_constants';\n\nexport const checkIsCriticalAction = (code: number): boolean => {\n return !!window.ENVS.MFA_CHECK_ENABLE && code === CRITICAL_ACTION_CODE;\n};\n","import './public-path';\n/* eslint-disable @typescript-eslint/ban-ts-comment */\n/* eslint-disable no-underscore-dangle */\n\nimport React from 'react';\nimport { createAppStore } from '@portals/redux-core-modules';\nimport { configureRouter, actionHandler } from '@portals/service-router';\nimport { createRoot } from 'react-dom/client';\nimport i18next from 'i18next';\nimport {\n getI18nextRequestEndpoint,\n i18nReducer,\n I18NEXT_REDUCER_NAME,\n fetchLanguagesWatcherSaga,\n FETCH_LANGUAGES_WATCHER_SAGA_NAME,\n} from '@portals/i18next-utils';\nimport {\n reducerProductsName,\n createFetchProductsWatcherSaga,\n fetchProductsSagaName,\n reducerProducts,\n createNavigateToProductWatcherSaga,\n NAVIGATE_TO_PRODUCT_SAGA_NAME,\n fetchRoutePlugin,\n MenuMainProductConfigListType,\n createPreFetchRouteWatcherSaga,\n PREFETCH_ROUTE_SAGA_NAME,\n} from '@portals/service-products';\nimport { RouterProvider } from 'react-router5';\nimport {\n fetchUserInfoWatcherSagaName,\n fetchUserPermissionsWatcherSagaName,\n reducerUser,\n reducerUserName,\n fetchUserInfoWatcherSaga,\n fetchUserPermissionsWatcherSaga,\n} from '@portals/service-user';\nimport { sentryLogger } from '@portals/service-logger'; /**/\nimport { loadModule } from '@portals/service-modules-load';\nimport { ABORT_REQUEST_EVENT_NAME } from '@portals/fetch-api';\nimport {\n fetchUserPermissionsDataWatcherSaga,\n fetchUserPermissionsDataWatcherSagaName,\n refreshUserFeaturesWatcherSaga,\n refreshUserFeaturesWatcherSagaName,\n} from '@portals/service-user/lib/redux-module';\nimport { analyticsEventEmitter } from '@portals/wb-front-analytics-tracker';\nimport { reducerPWA, PWAReducerName } from '@portals/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 { 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\ninitDigitalFingerPrint({\n environment: window.ENVS.RUNTIME_ENV || 'prod',\n enabledVendors: {\n facct: !!window.ENVS.FINGERPRINT_FACCT_ENABLED\n },\n});\n\nconst {\n ENVS: { SENTRY_DSN_CLIENT, DISABLED_SW = false },\n ADDITIONAL_MENU_CONFIG,\n} = window;\n\n// конфигурирование sentry\nif (SENTRY_DSN_CLIENT) {\n sentryLogger.init({\n dsn: SENTRY_DSN_CLIENT,\n release: `root-monorepo@${process.env.NX_PUBLIC_APP_VERSION}`,\n });\n console.log('@sentry init done');\n}\n\nif (DISABLED_SW) {\n unregisterServiceWorker();\n} else {\n registerServiceWorker();\n}\n\n// init request proxies\ninitRequestProxies();\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 getDefaultMiddlewareOptions: {\n serializableCheck: false,\n },\n rootReducers: {\n [reducerProductsName]: reducerProducts,\n [reducerUserName]: reducerUser,\n [reducerPlatformModulesName]: reducerPlatformModules,\n [reducerAppStateName]: reducerAppState,\n [I18NEXT_REDUCER_NAME]: i18nReducer,\n [PWAReducerName]: reducerPWA,\n },\n rootSagas: {\n [fetchProductsSagaName]: createFetchProductsWatcherSaga({\n loadModuleFunction: loadModule,\n additionalProductsData:\n ADDITIONAL_MENU_CONFIG as MenuMainProductConfigListType, // can not make typings on window envs\n }),\n [fetchUserInfoWatcherSagaName]: fetchUserInfoWatcherSaga,\n [fetchUserPermissionsWatcherSagaName]: fetchUserPermissionsWatcherSaga,\n [fetchUserPermissionsDataWatcherSagaName]:\n fetchUserPermissionsDataWatcherSaga,\n [FETCH_PLATFORM_MODULES_WATCHER_SAGA_NAME]: fetchPlatformModulesWatcherSaga,\n [LOGOUT_ROOT_SAGA_NAME]: logoutWatcherSaga,\n [PREFETCH_ROUTE_SAGA_NAME]: createPreFetchRouteWatcherSaga(loadModule),\n [NAVIGATE_TO_PRODUCT_SAGA_NAME]: createNavigateToProductWatcherSaga({\n loadModuleFunction: loadModule,\n notFoundRouteName: 'page-not-found',\n navigationErrorLogger: createNavigateToNotFoundLogger(),\n }),\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\ninitAnalytics();\ninitPerformanceMetrics();\ninitPWAAnalytics();\nsetPwaPrompt(store);\n\nconst container = document.getElementById('root') as HTMLElement;\n\nconst root = createRoot(container);\n\n// start App\ninitApp({ store, router }).then(() =>\n root.render(\n \n \n \n )\n);\n","/* eslint-disable no-console */\nimport { initGeoHosts } from './init-geo-hosts';\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 initGeoHosts();\n initRequestLoggers();\n initRequestProxyVerify();\n};\n","import { InterceptorsController } from '@portals/fetch-api';\nimport { resolveUrl } from '@portals/geo-utils';\n\nexport const initGeoHosts = () => {\n new InterceptorsController().addRequestInterceptor((r: any) => {\n r.endpoint = resolveUrl(r.endpoint);\n\n return r;\n });\n};\n","/* eslint-disable camelcase */\nimport {\n ProxyController,\n SetResponseTrackCallbackOptions,\n} from '@portals/fetch-api';\nimport { sentryLogger } from '@portals/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","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 '@portals/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 */\nimport { sentryLogger } from '@portals/service-logger';\nimport { NavigationErrorLogger } from '@portals/service-products';\nimport { getNavigationErrorMessage } from './get-navigation-error-message';\n\nexport const createNavigateToNotFoundLogger = (): 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 sentryLogger.sendEvent({\n message,\n level: 'Error',\n tags: {\n 'request custom exception': true,\n origin: window.origin,\n routename: routeName,\n url: 'undefined',\n },\n extra: {\n data: JSON.stringify(\n { routeName, data, menuName, navigateUrl },\n null,\n 2\n ),\n origin: window.origin,\n },\n });\n };\n};\n","import { fork, take, delay } from 'redux-saga/effects';\nimport { FETCH_LOGIN_NAVIGATION } from '../actions';\nimport { loginNavigationWorkerSaga } from './login-worker-saga';\n\n/* eslint-disable no-cond-assign */\n\nexport const LOGIN_NAVIGATION_SAGA_NAME = 'LOGIN_NAVIGATION_SAGA_NAME';\n\nexport function* loginNavigationWatcherSaga() {\n // eslint-disable-next-line\n // @ts-ignore\n while (yield take(FETCH_LOGIN_NAVIGATION)) {\n // because of lacks of type in sagas\n\n yield fork(loginNavigationWorkerSaga);\n\n yield delay(100);\n }\n}\n","import { Dispatch } from 'redux';\nimport { take, fork, cancel } from 'redux-saga/effects';\nimport {\n RESET_HEALTHCHECK_ACTION,\n SET_HEALTHCHECK_ACTION,\n} from '../../actions';\nimport { healthCheckWorkerSaga } from './healtcheck-worker-saga';\n\nexport const HEALTH_CHECK_SAGA_NAME = 'HEALTH_CHECK_SAGA_NAME';\n\ntype ParamsType = {\n dispatch: Dispatch;\n};\n\nexport function* healthCheckWatcherSaga({ dispatch }: ParamsType) {\n // eslint-disable-next-line\n // @ts-ignore\n while (yield take(SET_HEALTHCHECK_ACTION)) {\n // eslint-disable-next-line\n // @ts-ignore\n const task = yield fork(healthCheckWorkerSaga, { dispatch });\n\n yield take(RESET_HEALTHCHECK_ACTION);\n yield cancel(task);\n }\n}\n","import { PureRestRequest } from '@portals/fetch-api';\n\nexport const fetchRuntimeConfigRequest = (endpoint: string) =>\n new PureRestRequest().getRequest({\n parseType: 'text',\n mode: 'cors',\n endpoint,\n cache: 'no-cache',\n isErrorTextStraightToOutput: true,\n retry: 2,\n retryTimeInterval: 3000,\n });\n","type ParamsType = {\n modulePath: string;\n customModulePath?: string;\n};\n\nexport const getModulePath = ({\n modulePath,\n customModulePath,\n}: ParamsType): string => {\n if (customModulePath) {\n return `${customModulePath}/runtime-config.js`;\n }\n\n return `${modulePath}runtime-config.js`;\n};\n","import { PureRestRequest } from '@portals/fetch-api';\nimport Joi from 'joi';\n\ntype ParamsType = {\n endpoint: string;\n version?: string;\n isFileRequest?: boolean;\n};\n\nexport const i18nextRequest = ({\n endpoint,\n version = '',\n isFileRequest,\n}: ParamsType) => {\n return new PureRestRequest().getRequest({\n extraValidationCallback: () => true,\n endpoint,\n parseType: 'json',\n customTimeout: 30000,\n responseSchema: Joi.object({\n translate: Joi.object().required(),\n }).required(),\n isErrorTextStraightToOutput: true,\n retry: 2,\n queryParams: { version },\n notRetryWhenOffline: true,\n pureJsonFileResponse: isFileRequest,\n });\n};\n","import { Plugin, Router, State } from 'router5';\nimport { IRouterDependencies } from '@portals/service-router';\nimport { 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 { pruneRequestCaches } from '@portals/fetch-api';\nimport { pruneProjectsApiCaches } from './prune-projects-api-caches';\n\nexport const pruneApiCaches = async () => {\n await pruneRequestCaches({});\n // sendApiCachePruneEvent(prunedCacheInfo);\n\n await pruneProjectsApiCaches();\n};\n","import { analyticsEventEmitter } from '@portals/wb-front-analytics-tracker';\nimport {\n PWA_INIT_EVENT,\n PWA_INSTALL_EVENT,\n} 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 { IAdvancedStore } from '@portals/redux-core-modules';\nimport {\n setPwaPromptIosShownAction,\n setPwaPromptAndroidEventAction,\n} from '@portals/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 i18next from 'i18next';\nimport { APP_NAMESPACE } from '../../_constants/i18next/app-namespace';\nimport { I18N_DICTIONARY } from './translates/dictionary';\nimport { errorPageNamespace } from '../../_components/error-page-component/_constants';\nimport { ERROR_PAGE_TRANSLATIONS_MAP } from '../../_assets/i18next';\nexport const backendErrorsSubnamespace = 'backend-errors';\n\nexport const i18nextNSInit = async (locale: string) => {\n const wasResourceDownloaded = Boolean(\n i18next.getResourceBundle(locale, APP_NAMESPACE)\n );\n\n if (wasResourceDownloaded) {\n return;\n }\n\n try {\n for (const entry of Object.entries(I18N_DICTIONARY)) {\n const [currentLocale, file] = entry;\n const translates = await fetch(file).then((r) => r.json());\n i18next.addResourceBundle(currentLocale, APP_NAMESPACE, translates);\n }\n\n for (const entry of Object.entries(ERROR_PAGE_TRANSLATIONS_MAP)) {\n const [currentLocale, file] = entry;\n const translates = await fetch(file).then((r) => r.json());\n i18next.addResourceBundle(currentLocale, errorPageNamespace, translates);\n }\n } catch (e) {\n console.log('error'); // TODO sentry\n }\n};\n","export const parseJwt = (token: string) => {\n if (token) {\n const base64Url = token.split('.')[1];\n const base64 = base64Url.replace(/-/g, '+').replace(/_/g, '/');\n const jsonPayload = decodeURIComponent(\n window\n .atob(base64)\n .split('')\n .map((item) => {\n return `%${`00${item.charCodeAt(0).toString(16)}`.slice(-2)}`;\n })\n .join('')\n );\n\n return JSON.parse(jsonPayload);\n }\n\n return '';\n};\n","import { IResponse, OFFLINE_STATUS_CODE } from '@portals/fetch-api';\nimport { REQUEST_ERROR_STATUS_CODE } from '@portals/fetch-api/dist/constants';\nimport { loginWithSSORequest } from '../../../../api/requests/login-with-sso';\nimport { LocalStorageWorker } from '../../../../_utils/localstorage-worker';\nimport { appNamespace } from '../../../../_constants';\n\ntype ParamsType = {\n response: IResponse;\n isNotProductionOrigin: boolean;\n};\n\nexport const processIntrospectResponse = async ({\n response,\n isNotProductionOrigin,\n}: ParamsType) => {\n const { error, errorText, code, headers } = response;\n\n if (!error) {\n // save userId to work offline\n LocalStorageWorker.setItem(`${appNamespace}.id`, response.data.userID);\n\n return true;\n }\n\n // process offline\n if (\n // problems with .onLine method\n code === OFFLINE_STATUS_CODE ||\n (code === REQUEST_ERROR_STATUS_CODE && !Object.keys(headers).length)\n ) {\n return true;\n }\n\n // if not production origin - not do SSO at all\n if (isNotProductionOrigin) {\n throw Error(errorText);\n }\n\n await loginWithSSORequest({});\n\n return true;\n};\n","// @ts-expect-error https://webpack.js.org/guides/public-path/#on-the-fly\n__webpack_public_path__ =\n window.PUBLIC_STATIC_HOST + process.env.NX_PUBLIC_STATIC_PATH;\n"],"names":["modules","react","React","ReactDOM","ReactRedux","ReduxSaga","redux","reselect","ReactRouter","RouterHelpers","RouterPluginBrowser","RouterPluginLogger","router5","reactDeviceDetect","serviceRouter","serviceProducts","serviceUser","i18nextUtils","pwaModule","i18next","reduxCoreModules","databus","databusReact","Joi","joi","databusServiceProducts","databusServiceUser","fetchApiPortals","performanceTracker","analyticsTracker","serviceLogger","classnames","reactVirtualized","requireModule","externalPackages","moduleId","cachedScripts","Map","loadModule","name","staticURL","jsUrl","fromCDN","cdnData","APP_STATIC_NAMESPACE","version","endpoint","promise","has","get","Promise","async","resolve","reject","data","error","errorText","PureRestRequest","getRequest","mode","parseType","extraValidationCallback","isErrorTextStraightToOutput","pureJsonFileResponse","retry","cache","loadModuleRequest","Error","source","replace","extensionFn","Function","module","exports","bind","console","set","then","component","delete","catch","reducerPlatformModulesName","FETCH_PLATFORM_MODULES_SAGA","fetchPlatformModulesActionSaga","type","SET_PLATFORM_MODULES_DATA","setPlatformModulesAction","payload","SET_LOADING_START","setLoadingStartAction","SET_LOADING_STOP","setLoadingStopAction","initialState","loading","productsManagerStorageSelector","store","getPlatformModulesData","createSelector","getPlatformModulesIsLoading","fetchPlatformModulesWorkerSaga","router","put","platformModules","role","loadRef","importFn","JS_CDN","JS","CSS_CDN","CSS","all","map","Component","registrationSaga","registrationReducer","registrationActions","registrationRouterMiddlewares","registrationRouterPlugins","forEach","registrationAction","routerMiddleware","useMiddleware","registrationRouterPlugin","usePlugin","routes","loadAction","oldRoutes","getDependencies","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","ABAC_PERMISSIONS_DATA_CACHE_KEY","APP_NAMESPACE","appNamespace","BROWSER_LIST","Firefox","YaBrowser","OPR","Trident","Edge","Chrome","Safari","USER_DEVICE_LIST","device","platform","DEFAULT_API_CACHE_PARAMS","storageCacheName","expires","debug","disabledCache","window","ENVS","DISABLED_API_CACHE","SELLER_PORTAL_ACCESS_TOKEN","SELLER_PORTAL_DOWNGRADE_LIST","LAST_SUCCESSFUL_LOGIN_KEY","DefaultCriticalActionErrors","incorrectCode","requestError","abortEnterCodeError","reachedLimit","LocalStorageWorker","setItem","key","value","localStorage","JSON","stringify","getItem","storageValue","parse","_unused","deleteItem","removeItem","redirectToLoginPage","locale","_window$__ENDPOINTS__","currentAbsolutPath","encodeURIComponent","location","href","LOGIN_PATH","__ENDPOINTS__","LOGIN_PAGE_ENDPOINT","setLocale","isFromCookie","pathLocale","canRedirectoToLanding","HAS_SUCCESSFUL_LOGIN","SKIP_LANDING","URLSearchParams","document","search","ENABLE_PORTAL_LANDING","PORTAL_LANDING","resolveUrl","clearUserInfoCache","PASSPORT_LOCAL_ENDPOINT","PASSPORT_CENTRAL_ENDPOINT","_window","CENTRAL_PASSPORT","SELLER_AUTH_ENDPOINT","_window$__ENDPOINTS__2","_window2","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","LOGOUT_CMP_ENDPOINT","CMP_NEW_ENDPOINT","_window4","LOGOUT_CMP_NEW_ENDPOINT","DELIVERY_OPTIONS_ENDPOINT","_window5","LOGOUT_DELIVERY_OPTIONS_ENDPOINT","UPGRADE_COOKIE_ENDPOINT","_window$__ENDPOINTS__3","_window6","DOWNGRADE_COOKIE_ENDPOINT","_window$__ENDPOINTS__4","_window7","AUTH_V3_BASE","_window$__ENDPOINTS__5","_window8","LOGOUT_V3_ENDPOINT","LOGIN_V3_ENDPOINT","SLIDE_CONFIRM_ENDPOINT","MFA_BASE","_window9","MFA_GET_STATE_ENDPOINT","MFA_STATE","MFA_VALIDATE","LOGOUT_NAPI_ENDPOINT","_window$__ENDPOINTS__6","_window10","LOGOUT_NAPI","PERSONAL_DATA_LOCAL_ENDPOINT","logoutNapiRequest","credentials","extraVerifyRetry","tracingDisabled","middlewaresAreDisabled","responseSchema","result","required","when","not","otherwise","logoutV3Request","postRequest","RefreshTokenCookieUnavailable","downgradeCookieRequest","requestParams","makeRequestConfig","isCurrentDomainEndpoint","success","getListFromStorage","parseList","list","parsedList","Array","isArray","String","externalApiPathRegex","currentZoneRegex","RegExp","currentZone","getExternalApiEndpoint","origin","pathname","URL","splitEndpoint","match","exec","test","externalApiPath","getSanitizedList","localList","sourceList","reduce","acc","item","includes","push","cleanupList","logoutViaV3","ENABLE_AUTH_V3","logoutV3Error","externalRequests","LOGOUT_REQUIRED_EXTERNAL_ORIGINS","currentDomainRequest","allSettled","downgradeCookies","logoutOldWay","logoutEndpoints","getLogoutEndpoints","logoutRequiredExternalEndpoints","createLogoutEndpoint","filter","headers","body","statusCode","logoutRequest","logoutWorkerSaga","call","authError","getLocale","setUserDataForDigitalFingerPrint","getMenuCacheConfig","cacheKey","strategy","Object","assign","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","Boolean","children","errorPageNamespace","Card","_jsxs","t","ErrorPageComponent","EXTERNAL_FRAMEWORKS","angular","vue","API_CACHE_STORAGE_PATTERN","pruneProjectsApiCaches","t1","performance","now","prunedCaches","log","projectsStorageNames","caches","keys","formattedStorageData","projectStorageNames","projectStorageName","_projectCachedRespons","_Number","_firstResponse$header","awaitedAcc","projectStorage","open","projectCachedResponses","projectCachedFirstResponseUrl","url","length","firstResponse","firstResponseTimestamp","Number","projectName","formattedData","storageName","timestamp","getFormattedStorageData","values","projectStorages","oldProjectStorages","sort","prev","next","slice","pruneProjectStorages","t2","duration","prunedCachesCount","MeasuredContent","PerformanceTrackHOC","componentEventName","mountedCallback","appLoadedMeasureSendCallback","performanceMonitor","sendMeasurements","Content","content","framework","route","useEffect","RouteContent","RouteNode","nodeName","WrappedComponent","Layout","ErrorPage","Preview","platformLoaded","translationIsLoading","handleLogout","appVersion","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","getAbacPermissionsCacheConfig","getAbacRequestParams","featuresFilterList","INIT_ABAC_PARAMS_FUNCTION","initialParams","ignoreResponseIdCompare","getFormattedFilteredFeatures","getUserInfoCacheConfig","onUpdateCache","ABAC_PERMISSIONS_DATA_FEATURES","AB_EXPERIMENTS_SCOPE","featureKey","AB_EXPERIMENTS_ABAC_FEATURE","getAbacPermissionsDataFeatures","supplierId","feature","objectDeepCopy","obj","newObj","updateAbExperimentsAfterSupplierChange","permissionsDataCopy","getAllPermissionsData","getState","path","valueToRemove","pathArray","prop","getObjectValueByPath","removeObjectValueByPath","setUserDataPermissionsAction","permissionsData","setDataPermissionsAction","ROOT_ABAC_FEATURES","loginInstrospectRequest","sessionID","userID","notRetryWhenOffline","customTimeout","PUBLIC_URL","process","manifestRequest","I18N_DICTIONARY","en","translateEN","ru","translateRU","translateCN","zh","tr","ka","ERROR_PAGE_TRANSLATIONS_MAP","translationsRU","translationsEN","translationsCN","personalDataRequest","translateFunction","upgradeCookieRequest","token","AuthorizeV3","pendingRequests","asyncSingleton","promiseMaker","finally","ValidateTokenError","constructor","super","handleOfflineError","OFFLINE_STATUS_CODE","REQUEST_ERROR_STATUS_CODE","validateToken","accessToken","upgradeCookieResponse","personalDataResponse","validateTokenRaw","verifyExistingTokenRaw","is","access_token","slideRequest","slideConfirmRequest","sticker","getNewTokenRaw","slideErrorText","slideConfirmError","confirmResult","authViaV3Raw","authViaV3","OFFLINE_ERROR_TEXT","processOfflineRequestCode","navigator","onLine","fetchUserPermissionsData","loadUserPermissionBatchedRequest","features","DEFAULT_ABAC_VALUES","permitted","formatPermissionsAndDispatch","permissions","userPermissions","getFormattedPermissions","setUserPermissionsAction","setPermissionsAction","getDeviceUser","userAgent","userDevice","find","extraVerifyUpgradeNotAuthRetry","getBrowserInfo","browserName","indexOf","browserFullName","getBrowserVersion","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","registrationDependencies","_store$dependencies","dependencies","setUserInfo","userInfo","setUserInfoAction","setUserDataAction","formatPermissionsDataAndDispatch","responseData","withPermissionsMerge","formattedPermissionsData","getFormattedDataABACRefreshResponse","fullResponse","initialValues","mergePermissionsData","newPermissions","currentUserPermissionsData","getRefreshedPermissions","currentPermissions","languagesFallback","LANGUAGES_FALLBACK","isNotProductionOrigin","WILDCARD_DOMAIN","ROOT_URLS","__ROOT_URLS__","isLocalhost","hostname","GLOBAL_UPDATE_STATE","needsToReload","addEventListener","visibilityState","reload","registerValidSW","swUrl","serviceWorker","register","updateViaCache","registration","onupdatefound","installingWorker","installing","onstatechange","controller","hidden","registerServiceWorker","fetch","response","contentType","status","ready","unregister","checkValidServiceWorker","FETCH_LOGIN_NAVIGATION","loginNavigationWorkerSaga","BASE_MESSAGE","cachedWindowEnvs","detectIsPWA","isStandalone","matchMedia","matches","referrer","startsWith","standalone","getSupplierIdFromCookie","formatDataToSpits","decision","expID","APP_BUILD_TIME","BUILD_TIME","additionalParamsGetter","abExperiments","abExperimentsSelector","language","idUser","userDataSelector","idSupplier","splits","uiRootVersion","uiRootBuildTime","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","getMfaState","_additionalErrors$dat","mfaStateError","mfaStateRequest","deviceId","JSONRPCRequest","makeRequest","params","deviceID","ttl","_additionalErrors$dat2","hours","minutes","seconds","Math","floor","modHourSeconds","formatSeconds","mfaValidate","mfaValidateError","mfaValidateErrorText","mfaValidateRequest","LS_KEY","confirmationCriticalAction","isRpc","getDeviceIdForCritAction","existingDeviceId","uuid","v4","newDeviceIdLimited","selectedSupplierIdSelector","substring","setUserCriticalActionCode","setIsCriticalActionIncorrectCode","setIsUserCriticalAction","setUserDataCriticalActionCodeListener","criticalActionCode","setUserSendCodeLoadingAction","userDataIsCriticalActionSelector","removeUserDataCriticalActionCodeListener","criticalAction","setCriticalActionErrorEvent","commonMessage","Response","jsonrpc","reasonCode","ErrorReason","CriticalAction","statusText","initRequestProxyVerify","InterceptorsController","addResponseInterceptor","requestProtocol","MFA_CHECK_ENABLE","MiddlewaresController","setMiddleware","middleware","initDigitalFingerPrint","environment","RUNTIME_ENV","enabledVendors","facct","FINGERPRINT_FACCT_ENABLED","SENTRY_DSN_CLIENT","DISABLED_SW","ADDITIONAL_MENU_CONFIG","init","dsn","release","addRequestInterceptor","r","ProxyController","setResponseTrackCallback","callback","fetchLogParams","sendEvent","tags","level","request","method","requestBody","requestCookies","requestHeaders","initRequestProxies","configureRouter","defaultRoute","eventNameToCancelRequests","ABORT_REQUEST_EVENT_NAME","enablei18nMiddleware","modifiedNavigation","disabledActionHandler","enableDeactivationMiddleware","createAppStore","getDefaultMiddlewareOptions","serializableCheck","rootReducers","reducerProductsName","reducerProducts","reducerUserName","reducerUser","reducerPlatformModules","reducerAppState","I18NEXT_REDUCER_NAME","i18nReducer","PWAReducerName","reducerPWA","rootSagas","fetchProductsSagaName","createFetchProductsWatcherSaga","loadModuleFunction","additionalProductsData","fetchUserInfoWatcherSagaName","fetchUserInfoWatcherSaga","fetchUserPermissionsWatcherSagaName","fetchUserPermissionsWatcherSaga","fetchUserPermissionsDataWatcherSagaName","fetchUserPermissionsDataWatcherSaga","take","fork","PREFETCH_ROUTE_SAGA_NAME","createPreFetchRouteWatcherSaga","NAVIGATE_TO_PRODUCT_SAGA_NAME","createNavigateToProductWatcherSaga","notFoundRouteName","navigationErrorLogger","routeName","menuName","navigateUrl","getNavigationErrorMessage","routename","extra","refreshUserFeaturesWatcherSagaName","refreshUserFeaturesWatcherSaga","FETCH_LANGUAGES_WATCHER_SAGA_NAME","fetchLanguagesWatcherSaga","task","cancel","reduxStoreName","toState","fromState","activatedRoutes","getActivatedRoutes","_routeData$params","windowEndpointsConfig","routeData","endpointsConfig","fromWindow","staticPath","customModulePath","_routeItem$config","routeItem","getProductsData","findRouteFromList","modulePath","getModulePath","serviceEnvs","config","envs","cachedEnvs","funcFromText","runtimeRequest","retryTimeInterval","setWindowEndpointsMiddleware","i18nextConfig","i18nextRequest","isFileRequest","translate","queryParams","actionToStartLoading","setTranslateLoadingStartAction","actionToStopLoading","setTranslateLoadingStopAction","createEndpoint","getI18nextRequestEndpoint","formatterResponseData","analyticsEventEmitter","fetchRoutePlugin","onTransitionSuccess","_toState$meta","coreRouteFromStateName","coreRouteToStateName","isTheSameRoute","isRouteReplaced","meta","SWClientUpdatePlugin","onTransitionStart","_fromState$name$split","_fromState$name","_toState$name$split$","_toState$name","reg","update","actionHandler","initAnalytics","counterId","WB_ANALYTICS_COUNTER_ID","cookieDomain","WB_ANALYTICS_COOKIE_DOMAIN","setAdditionalParamsGetter","removeCookie","withRequestIdleCallback","addMeasurement","measurementData","tti","ttiPolyfill","pruneRequestCaches","pruneApiCaches","initPerformanceMetrics","initPWAAnalytics","customEvent","setPwaPrompt","isIOS","isSafari","setPwaPromptIosShownAction","isChrome","isYandex","isDesktop","isEdge","event","preventDefault","setPwaPromptAndroidEventAction","container","getElementById","root","createRoot","sessionId","_permissions$features","_permissions$features2","authViaV3Error","DISABLE_PASSPORT_FALLBACK","setFetchProductsListener","actionParams","getUserPermissions","fetchMenuConfig","menuTakenFromFile","activeSupplier","fetchMenuActionSagaParams","setFetchUserDataListener","fetchUserInfoAction","setFetchPermissionsListener","fetchUserPermissionsParams","fetchUserPermissionsDataParams","featuresList","batchActions","fetchUserPermissionsDataAction","setRefreshPermissionsListener","refreshUserFeaturesActionSaga","setNavigateProductListener","navigateToProductActionSaga","setPrefetchProductListener","preloadRouteAction","initDatabusSubscriptions","setHeadLang","setWildcardLocaleCookie","domain","geti18Next","getResourceBundle","entry","entries","currentLocale","file","translates","json","addResourceBundle","e","i18nextNSInit","setLanguagesListAction","decodeAccessToken","base64","jsonPayload","decodeURIComponent","atob","charCodeAt","toString","join","parseJwt","user","session_id","_introspectResponse$d","_LocalStorageWorker$g","_introspectResponse$d2","introspectResponse","processIntrospectResponse","setSupplierIdForDigitalFingerPrint","Date","initialAbacParams","userPermissionDataParams","permissionsResponse","permissionsDataResponse","loadUserPermissionsRequest","fetchManifestActionSaga","purePermissions","excludeEndpoinds","callbackFinallyLoad","loadProductsStopAction","callbackOnError","errorData","requestId","initApp","render","RouterProvider","__webpack_public_path__","PUBLIC_STATIC_HOST"],"sourceRoot":""}