From 2b6954902be641c6c0186ab8d6216e6b34666c56 Mon Sep 17 00:00:00 2001 From: Dmitriy Pogonyshev Date: Tue, 9 Dec 2025 00:27:02 +0800 Subject: [PATCH] =?UTF-8?q?feat(TEAMCACQ-23995):=20=D0=94=D0=BE=D0=B1?= =?UTF-8?q?=D0=B0=D0=B2=D0=BB=D0=B5=D0=BD=20=D0=BC=D0=BE=D0=B4=D1=83=D0=BB?= =?UTF-8?q?=D1=8C=20msb-acquiring?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/shared/constants/paths.tsx | 5 ++ scripts/build-modules.js | 1 + services/msb-acquiring/README.md | 3 + services/msb-acquiring/jest.config.ts | 24 ++++++ services/msb-acquiring/package.json | 79 +++++++++++++++++++ services/msb-acquiring/src/app/index.ts | 2 + .../app/providers/FractalThemeProvider.tsx | 11 +++ .../msb-acquiring/src/app/providers/index.ts | 1 + .../msb-acquiring/src/app/router/index.ts | 1 + .../msb-acquiring/src/app/router/router.tsx | 11 +++ services/msb-acquiring/src/bootstrap.tsx | 19 +++++ services/msb-acquiring/src/declarations.d.ts | 9 +++ services/msb-acquiring/src/exposes/App.tsx | 6 ++ services/msb-acquiring/src/index.ts | 3 + services/msb-acquiring/src/mocks/fileMock.js | 1 + .../msb-acquiring/src/mocks/matchMediaMock.ts | 21 +++++ .../src/mocks/resizeObserverMock.ts | 11 +++ .../msb-acquiring/src/mocks/setupTests.ts | 50 ++++++++++++ .../__tests__/AcquiringMainPage.test.tsx | 25 ++++++ .../AcquiringMainPage/constants/index.ts | 1 + .../constants/localization.ts | 5 ++ .../src/pages/AcquiringMainPage/index.ts | 1 + .../ui/AcquiringMainPage.tsx | 6 ++ .../src/pages/AcquiringMainPage/ui/index.ts | 1 + services/msb-acquiring/src/types/assets.d.ts | 9 +++ services/msb-acquiring/src/types/fractal.d.ts | 10 +++ services/msb-acquiring/tsconfig.json | 18 +++++ services/msb-acquiring/webpack.config.ts | 27 +++++++ services/msb-host/webpack.config.ts | 1 + 29 files changed, 362 insertions(+) create mode 100644 services/msb-acquiring/README.md create mode 100644 services/msb-acquiring/jest.config.ts create mode 100644 services/msb-acquiring/package.json create mode 100644 services/msb-acquiring/src/app/index.ts create mode 100644 services/msb-acquiring/src/app/providers/FractalThemeProvider.tsx create mode 100644 services/msb-acquiring/src/app/providers/index.ts create mode 100644 services/msb-acquiring/src/app/router/index.ts create mode 100644 services/msb-acquiring/src/app/router/router.tsx create mode 100644 services/msb-acquiring/src/bootstrap.tsx create mode 100644 services/msb-acquiring/src/declarations.d.ts create mode 100644 services/msb-acquiring/src/exposes/App.tsx create mode 100644 services/msb-acquiring/src/index.ts create mode 100644 services/msb-acquiring/src/mocks/fileMock.js create mode 100644 services/msb-acquiring/src/mocks/matchMediaMock.ts create mode 100644 services/msb-acquiring/src/mocks/resizeObserverMock.ts create mode 100644 services/msb-acquiring/src/mocks/setupTests.ts create mode 100644 services/msb-acquiring/src/pages/AcquiringMainPage/__tests__/AcquiringMainPage.test.tsx create mode 100644 services/msb-acquiring/src/pages/AcquiringMainPage/constants/index.ts create mode 100644 services/msb-acquiring/src/pages/AcquiringMainPage/constants/localization.ts create mode 100644 services/msb-acquiring/src/pages/AcquiringMainPage/index.ts create mode 100644 services/msb-acquiring/src/pages/AcquiringMainPage/ui/AcquiringMainPage.tsx create mode 100644 services/msb-acquiring/src/pages/AcquiringMainPage/ui/index.ts create mode 100644 services/msb-acquiring/src/types/assets.d.ts create mode 100644 services/msb-acquiring/src/types/fractal.d.ts create mode 100644 services/msb-acquiring/tsconfig.json create mode 100644 services/msb-acquiring/webpack.config.ts diff --git a/packages/shared/constants/paths.tsx b/packages/shared/constants/paths.tsx index b4437ccc3..a9471100a 100644 --- a/packages/shared/constants/paths.tsx +++ b/packages/shared/constants/paths.tsx @@ -64,6 +64,10 @@ const ACCOUNTS_PATHS = { OPEN_ACCOUNT_ORDERS_LIST: `${PATHS.ACCOUNTS}/open-account`, } as const; +const ACQUIRING_PATHS = { + HOME: PATHS.ACQUIRING, +}; + const BUSINESS_CARDS_PATHS = { HOME: `${PATHS.BUSINESS_CARDS}/cards`, DETAILS: `${PATHS.BUSINESS_CARDS}/cards-view/:id`, @@ -165,6 +169,7 @@ export { CROSS_SELLING_JSON, CROSS_BORDER_AB_PAYMENTS, ACCOUNTS_PATHS, + ACQUIRING_PATHS, BUSINESS_CARDS_PATHS, CROSS_SALE_PATHS, EXTERNAL_LINKS, diff --git a/scripts/build-modules.js b/scripts/build-modules.js index 337afbab3..b51e6f7b5 100644 --- a/scripts/build-modules.js +++ b/scripts/build-modules.js @@ -12,6 +12,7 @@ const modules = [ 'msb-fea', 'msb-partner-check', 'msb-treasury-deals', + 'msb-acquiring' ]; async function build() { diff --git a/services/msb-acquiring/README.md b/services/msb-acquiring/README.md new file mode 100644 index 000000000..073377e3e --- /dev/null +++ b/services/msb-acquiring/README.md @@ -0,0 +1,3 @@ +# msb-accounts + +Модуль "Эквайринг" МСБ diff --git a/services/msb-acquiring/jest.config.ts b/services/msb-acquiring/jest.config.ts new file mode 100644 index 000000000..53bd5254b --- /dev/null +++ b/services/msb-acquiring/jest.config.ts @@ -0,0 +1,24 @@ +/* eslint-disable jest/no-jest-import */ +import { pathsToModuleNameMapper } from 'ts-jest'; +import { compilerOptions } from './tsconfig.json'; + +const config = { + clearMocks: true, + testEnvironment: 'jsdom', + transform: { + '^.+\\.(ts|tsx)$': 'ts-jest', + }, + verbose: true, + testRegex: '(/__tests__/.*|(\\.|/)(test|spec))\\.tsx?$', + moduleFileExtensions: ['ts', 'tsx', 'js', 'jsx', 'json', 'node'], + roots: [''], + modulePaths: [compilerOptions.baseUrl], + moduleNameMapper: { + ...pathsToModuleNameMapper(compilerOptions.paths, { prefix: '/' }), + '\\.(jpg|jpeg|png|gif|eot|otf|webp|svg|ttf|woff|woff2|mp4|webm|wav|mp3|m4a|aac|oga)$': '/src/mocks/fileMock.js', + '\\.(css|less|scss|sass)$': 'identity-obj-proxy', + }, + setupFilesAfterEnv: ['/src/mocks/setupTests.ts'], +}; + +export default config; diff --git a/services/msb-acquiring/package.json b/services/msb-acquiring/package.json new file mode 100644 index 000000000..046b0bd21 --- /dev/null +++ b/services/msb-acquiring/package.json @@ -0,0 +1,79 @@ +{ + "name": "msb-acquiring", + "version": "1.0.0", + "description": "", + "main": "index.js", + "scripts": { + "start": "build-app start", + "build:dev": "build-app build:dev", + "build": "build-app build", + "lint-fix": "eslint --fix --ext .js,.jsx,.ts,.tsx ./src", + "check-types": "tsc", + "lint": "eslint --ext .js,.jsx,.ts,.tsx ./src --max-warnings=0", + "stylelint": "stylelint --fix --ext .js,.jsx,.ts,.tsx ./src --max-warnings=0", + "lint:ci": "eslint --quiet --ext .js,.jsx,.ts,.tsx ./src", + "format": "prettier --write ./src", + "check-format": "prettier -c .", + "test:coverage": "echo 'skipped'", + "test": "jest --passWithNoTests", + "precommit": "lint-staged" + }, + "author": "Pogonyshev Dmitriy", + "license": "ISC", + "dependencies": { + "@emotion/react": "11.8.1", + "@emotion/styled": "11.8.1", + "@fractal-ui/core": "30.15.0", + "@fractal-ui/extended": "30.15.0", + "@fractal-ui/form": "30.15.0", + "@fractal-ui/layout": "30.15.0", + "@fractal-ui/library": "31.4.0", + "@fractal-ui/overlays": "30.15.0", + "@fractal-ui/styling": "30.18.0", + "@fractal-ui/table": "30.15.0", + "@fractal-ui/visualization": "30.15.0", + "@msb/fractal-ui-composites": "30.15.1", + "@msb/http": "^1.0.0", + "@msb/mf-utils": "^1.0.0", + "@msb/shared": "^1.0.0", + "@styled-system/css": "^5.1.5", + "dayjs": "^1.11.3", + "react": "17.0.2", + "react-animate-height": "^2.0.23", + "react-dnd": "^11.1.3", + "react-dnd-html5-backend": "^11.1.3", + "react-dom": "17.0.2", + "react-final-form": "6.5.3", + "react-router-dom": "5.2.0", + "react-test-renderer": "17.0.2", + "styled-system": "5.1.5", + "virtua": "^0.31.0" + }, + "devDependencies": { + "@eco/lint-staged-config": "21.10.0", + "@fractal-ui/layout": "30.15.0", + "@msb/mf-builder": "1.0.0", + "@testing-library/jest-dom": "5.16.2", + "@testing-library/react": "12.1.3", + "@testing-library/react-hooks": "7.0.2", + "@testing-library/user-event": "13.5.0", + "@types/jest": "^27.4.0", + "@types/react": "17.0.36", + "@types/react-dom": "17.0.2", + "@types/react-router-dom": "5.1.7", + "@types/react-test-renderer": "17.0.2", + "@types/react-transition-group": "4.4.1", + "@types/styled-system": "5.1.15", + "@types/styled-system__css": "5.0.16", + "jest": "^27.0.6", + "jest-environment-jsdom": "^27.5.1", + "json-server": "^0.16.3", + "lint-staged": "^12.3.4", + "react-test-renderer": "17.0.2" + }, + "browserslist": [ + ">0.2%", + "not dead", + "not op_mini all" + ] +} diff --git a/services/msb-acquiring/src/app/index.ts b/services/msb-acquiring/src/app/index.ts new file mode 100644 index 000000000..41a67fcf7 --- /dev/null +++ b/services/msb-acquiring/src/app/index.ts @@ -0,0 +1,2 @@ +export { FractalThemeProvider } from './providers'; +export { AppRouter } from './router'; diff --git a/services/msb-acquiring/src/app/providers/FractalThemeProvider.tsx b/services/msb-acquiring/src/app/providers/FractalThemeProvider.tsx new file mode 100644 index 000000000..c0f709682 --- /dev/null +++ b/services/msb-acquiring/src/app/providers/FractalThemeProvider.tsx @@ -0,0 +1,11 @@ +import type { FC } from 'react'; +import { ThemeProvider } from '@emotion/react'; +import { useTheme } from '@fractal-ui/styling'; + +const FractalThemeProvider: FC = ({ children }) => { + const theme = useTheme(); + + return {children}; +}; + +export { FractalThemeProvider }; diff --git a/services/msb-acquiring/src/app/providers/index.ts b/services/msb-acquiring/src/app/providers/index.ts new file mode 100644 index 000000000..165ee4f47 --- /dev/null +++ b/services/msb-acquiring/src/app/providers/index.ts @@ -0,0 +1 @@ +export * from './FractalThemeProvider'; diff --git a/services/msb-acquiring/src/app/router/index.ts b/services/msb-acquiring/src/app/router/index.ts new file mode 100644 index 000000000..61b9e0eb9 --- /dev/null +++ b/services/msb-acquiring/src/app/router/index.ts @@ -0,0 +1 @@ +export { AppRouter } from './router'; diff --git a/services/msb-acquiring/src/app/router/router.tsx b/services/msb-acquiring/src/app/router/router.tsx new file mode 100644 index 000000000..7b8d89a54 --- /dev/null +++ b/services/msb-acquiring/src/app/router/router.tsx @@ -0,0 +1,11 @@ +import { ACQUIRING_PATHS } from '@msb/shared'; +import { Route, Switch } from 'react-router-dom'; +import { AcquiringMainPage } from '@/pages/AcquiringMainPage'; + +const AppRouter = () => ( + + + +); + +export { AppRouter }; diff --git a/services/msb-acquiring/src/bootstrap.tsx b/services/msb-acquiring/src/bootstrap.tsx new file mode 100644 index 000000000..93f241b13 --- /dev/null +++ b/services/msb-acquiring/src/bootstrap.tsx @@ -0,0 +1,19 @@ +import { StrictMode } from 'react'; +import { FractalThemeProvider } from '@fractal-ui/styling'; +import { render } from 'react-dom'; + +import App from './exposes/App'; + +// Глобальные стили +import '@fractal-ui/styling/dist/fonts.css'; + +const rootNode = document.querySelector('#root'); + +render( + + + + + , + rootNode +); diff --git a/services/msb-acquiring/src/declarations.d.ts b/services/msb-acquiring/src/declarations.d.ts new file mode 100644 index 000000000..3f42d751d --- /dev/null +++ b/services/msb-acquiring/src/declarations.d.ts @@ -0,0 +1,9 @@ +declare module '*.svg' { + const content: string; + export default content; +} + +declare module '*.webp' { + const content: any; + export default content; +} \ No newline at end of file diff --git a/services/msb-acquiring/src/exposes/App.tsx b/services/msb-acquiring/src/exposes/App.tsx new file mode 100644 index 000000000..f735fc36c --- /dev/null +++ b/services/msb-acquiring/src/exposes/App.tsx @@ -0,0 +1,6 @@ +import type { ReactElement } from 'react'; +import { AppRouter } from '@/app/router'; + +const App = (): ReactElement => ; + +export default App; diff --git a/services/msb-acquiring/src/index.ts b/services/msb-acquiring/src/index.ts new file mode 100644 index 000000000..6cce57c05 --- /dev/null +++ b/services/msb-acquiring/src/index.ts @@ -0,0 +1,3 @@ +import('./bootstrap'); + +export default {}; diff --git a/services/msb-acquiring/src/mocks/fileMock.js b/services/msb-acquiring/src/mocks/fileMock.js new file mode 100644 index 000000000..86059f362 --- /dev/null +++ b/services/msb-acquiring/src/mocks/fileMock.js @@ -0,0 +1 @@ +module.exports = 'test-file-stub'; diff --git a/services/msb-acquiring/src/mocks/matchMediaMock.ts b/services/msb-acquiring/src/mocks/matchMediaMock.ts new file mode 100644 index 000000000..fe0061aec --- /dev/null +++ b/services/msb-acquiring/src/mocks/matchMediaMock.ts @@ -0,0 +1,21 @@ +export class MatchMediaMock { + private handlers: Array<(event: MediaQueryListEvent) => void> = []; + + mock(matches: boolean): { + matches: boolean; + addEventListener(_event: string, handler: (event: MediaQueryListEvent) => void): void; + removeEventListener(): void; + } { + return { + matches, + addEventListener: (_event: string, handler: (event: MediaQueryListEvent) => void) => { + this.handlers.push(handler); + }, + removeEventListener: jest.fn(), + }; + } + + dispatchEvent(event: MediaQueryListEvent): void { + for (const handler of this.handlers) handler(event); + } +} diff --git a/services/msb-acquiring/src/mocks/resizeObserverMock.ts b/services/msb-acquiring/src/mocks/resizeObserverMock.ts new file mode 100644 index 000000000..2a93246e7 --- /dev/null +++ b/services/msb-acquiring/src/mocks/resizeObserverMock.ts @@ -0,0 +1,11 @@ +type ResizeObserverCallback = (entries: ResizeObserverEntry[], observer: ResizeObserver) => void; + +export class ResizeObserverMock { + private callback: ResizeObserverCallback; + constructor(callback: ResizeObserverCallback) { + this.callback = callback; + } + observe(): void {} + unobserve(): void {} + disconnect(): void {} +} diff --git a/services/msb-acquiring/src/mocks/setupTests.ts b/services/msb-acquiring/src/mocks/setupTests.ts new file mode 100644 index 000000000..2678c6f06 --- /dev/null +++ b/services/msb-acquiring/src/mocks/setupTests.ts @@ -0,0 +1,50 @@ +import { MatchMediaMock } from './matchMediaMock'; +import { ResizeObserverMock } from './resizeObserverMock'; + +jest.spyOn(window.console, 'error').mockImplementation(); + +const matchMediaMock = new MatchMediaMock(); + +Object.defineProperty(window, 'matchMedia', { + writable: true, + value: jest.fn().mockImplementation(() => matchMediaMock.mock(false)), +}); + +global.ResizeObserver = ResizeObserverMock; + +const mockIntersectionObserver = jest.fn(); + +mockIntersectionObserver.mockReturnValue({ + observe: () => null, + unobserve: () => null, + disconnect: () => null, +}); +window.IntersectionObserver = mockIntersectionObserver; + +const mockAxiosInstance = { + get: jest.fn(), + post: jest.fn(), + put: jest.fn(), + delete: jest.fn(), + interceptors: { + request: { use: jest.fn(), eject: jest.fn() }, + response: { use: jest.fn(), eject: jest.fn() }, + }, +}; + +jest.mock('axios', () => ({ + __esModule: true, + default: { + create: jest.fn(() => mockAxiosInstance), + }, +})); + +jest.mock('egoroof-blowfish', () => ({ + __esModule: true, + Blowfish: jest.fn().mockImplementation(() => ({ + encode: jest.fn().mockReturnValue('encoded'), + decode: jest.fn().mockReturnValue('decoded'), + })), +})); + +export {}; diff --git a/services/msb-acquiring/src/pages/AcquiringMainPage/__tests__/AcquiringMainPage.test.tsx b/services/msb-acquiring/src/pages/AcquiringMainPage/__tests__/AcquiringMainPage.test.tsx new file mode 100644 index 000000000..f068021c2 --- /dev/null +++ b/services/msb-acquiring/src/pages/AcquiringMainPage/__tests__/AcquiringMainPage.test.tsx @@ -0,0 +1,25 @@ +/* eslint-disable jest/no-mocks-import */ +import { render } from '@msb/shared/lib/tests/customRender'; +import '@testing-library/jest-dom'; +import { screen } from '@testing-library/react'; +import { LOCALIZATION } from '../constants'; +import { AcquiringMainPage } from '../ui/AcquiringMainPage'; + +const historyPushMock = jest.fn(); + +jest.mock('react-router-dom', () => ({ + ...jest.requireActual('react-router-dom'), + useHistory: () => ({ + push: historyPushMock, + }), +})); + +const renderAccountsMainPage = () => render(); + +describe('AcquiringMainPage', () => { + it('должен отображать эквайринг', () => { + renderAccountsMainPage(); + + expect(screen.queryByText(LOCALIZATION.ACQUIRING)).toBeInTheDocument(); + }); +}); diff --git a/services/msb-acquiring/src/pages/AcquiringMainPage/constants/index.ts b/services/msb-acquiring/src/pages/AcquiringMainPage/constants/index.ts new file mode 100644 index 000000000..7a8bed41f --- /dev/null +++ b/services/msb-acquiring/src/pages/AcquiringMainPage/constants/index.ts @@ -0,0 +1 @@ +export * from './localization'; diff --git a/services/msb-acquiring/src/pages/AcquiringMainPage/constants/localization.ts b/services/msb-acquiring/src/pages/AcquiringMainPage/constants/localization.ts new file mode 100644 index 000000000..caf2c71db --- /dev/null +++ b/services/msb-acquiring/src/pages/AcquiringMainPage/constants/localization.ts @@ -0,0 +1,5 @@ +const LOCALIZATION = { + ACQUIRING: 'Эквайринг', +}; + +export { LOCALIZATION }; diff --git a/services/msb-acquiring/src/pages/AcquiringMainPage/index.ts b/services/msb-acquiring/src/pages/AcquiringMainPage/index.ts new file mode 100644 index 000000000..5ecdd1f34 --- /dev/null +++ b/services/msb-acquiring/src/pages/AcquiringMainPage/index.ts @@ -0,0 +1 @@ +export * from './ui'; diff --git a/services/msb-acquiring/src/pages/AcquiringMainPage/ui/AcquiringMainPage.tsx b/services/msb-acquiring/src/pages/AcquiringMainPage/ui/AcquiringMainPage.tsx new file mode 100644 index 000000000..4600ea447 --- /dev/null +++ b/services/msb-acquiring/src/pages/AcquiringMainPage/ui/AcquiringMainPage.tsx @@ -0,0 +1,6 @@ +import { type ReactElement } from 'react'; +import { LOCALIZATION } from '../constants'; + +const AcquiringMainPage = (): ReactElement =>
{LOCALIZATION.ACQUIRING}
; + +export { AcquiringMainPage }; diff --git a/services/msb-acquiring/src/pages/AcquiringMainPage/ui/index.ts b/services/msb-acquiring/src/pages/AcquiringMainPage/ui/index.ts new file mode 100644 index 000000000..89de59a88 --- /dev/null +++ b/services/msb-acquiring/src/pages/AcquiringMainPage/ui/index.ts @@ -0,0 +1 @@ +export { AcquiringMainPage } from './AcquiringMainPage'; diff --git a/services/msb-acquiring/src/types/assets.d.ts b/services/msb-acquiring/src/types/assets.d.ts new file mode 100644 index 000000000..889020b60 --- /dev/null +++ b/services/msb-acquiring/src/types/assets.d.ts @@ -0,0 +1,9 @@ +declare module '*.png' { + const value: any; + export = value; +} + +declare module '*.svg' { + const content: React.FunctionComponent>; + export default content; +} \ No newline at end of file diff --git a/services/msb-acquiring/src/types/fractal.d.ts b/services/msb-acquiring/src/types/fractal.d.ts new file mode 100644 index 000000000..d0d4cd278 --- /dev/null +++ b/services/msb-acquiring/src/types/fractal.d.ts @@ -0,0 +1,10 @@ +import { ReactNode } from 'react'; +import { ThemeType } from '@fractal-ui/styling'; + +declare module '@fractal-ui/styling' { + export declare const FractalThemeProvider: React.FC<{ + /** Название темы. */ + theme?: ThemeType; + children: ReactNode; + }>; +} \ No newline at end of file diff --git a/services/msb-acquiring/tsconfig.json b/services/msb-acquiring/tsconfig.json new file mode 100644 index 000000000..83a86de58 --- /dev/null +++ b/services/msb-acquiring/tsconfig.json @@ -0,0 +1,18 @@ +{ + "extends": "../../tsconfig.base.json", + "compilerOptions": { + "baseUrl": ".", + "paths": { + "@/app/*": ["./src/app/*"], + "@/shared/*": ["src/shared/*"], + "@/pages/*": ["./src/pages/*"], + "@/widgets/*": ["./src/widgets/*"], + "@/features/*": ["./src/features/*"], + "@/entities/*": ["./src/entities/*"], + "@/mocks/*": ["./src/mocks/*"] + }, + "types": ["node", "jest"] + }, + "include": ["src"], + "exclude": ["node_modules", "./webpack.config.ts"] +} diff --git a/services/msb-acquiring/webpack.config.ts b/services/msb-acquiring/webpack.config.ts new file mode 100644 index 000000000..531221538 --- /dev/null +++ b/services/msb-acquiring/webpack.config.ts @@ -0,0 +1,27 @@ +import type { IWebpackAppConfig } from '@msb/mf-builder'; +import { normalizePackageName } from '@msb/mf-builder'; +import path from 'node:path'; +import packageJson from './package.json'; + +const packageName = normalizePackageName(packageJson.name); + +const config: IWebpackAppConfig = { + moduleName: packageJson.name, + paths: { + outputPath: path.resolve(__dirname, '../../msb-acquiring'), + publicUrl: '/msb-acquiring/', + }, + devServerOptions: { + port: 3012, + }, + moduleFederationOptions: { + exposes: { + './App': { + import: path.resolve(__dirname, 'src/exposes/App.tsx'), + name: `${packageName}_remote`, + }, + }, + }, +}; + +export default config; diff --git a/services/msb-host/webpack.config.ts b/services/msb-host/webpack.config.ts index 5ce1fbc72..34c581acf 100644 --- a/services/msb-host/webpack.config.ts +++ b/services/msb-host/webpack.config.ts @@ -65,6 +65,7 @@ const config: IWebpackAppConfig = { { context: ['/msb-business-cards'], target: 'http://localhost:3011', changeOrigin: true }, { context: ['/msb-accounts'], target: 'http://localhost:3006', changeOrigin: true }, { context: ['/msb-treasury-deals'], target: 'http://localhost:3010', changeOrigin: true }, + { context: ['/msb-acquiring'], target: 'http://localhost:3012', changeOrigin: true }, { context: ['/api', '/.well-known'], target: 'https://client.stage.gboteam.ru',