Created
July 31, 2020 12:35
-
-
Save SuperOleg39/f1de9c1b028e5f78a4868d3b7297e712 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| import { commandLineListTokens } from '@tramvai/core' | |
| import { createToken } from 'dippy' | |
| import { | |
| ENV_MANAGER_TOKEN, | |
| LOGGER_TOKEN, | |
| ENV_USED_TOKEN, | |
| } from '@tramvai/tokens-common' | |
| import jsonServer from 'json-server' | |
| import httpProxy from 'http-proxy' | |
| import { WEB_APP_INIT_TOKEN } from '@tramvai/module-server' | |
| const MOCK_SERVER_ENDPOINT_TOKEN = createToken<string>('mockServerEndpoint') | |
| const MOCK_SERVER_SOURCE_TOKEN = createToken<string | Record<string, any>>( | |
| 'mockServerSource' | |
| ) | |
| export default [ | |
| { | |
| provide: ENV_USED_TOKEN, | |
| multi: true, | |
| useValue: [ | |
| { | |
| key: 'MOCK_SERVER_PROXY_API', | |
| optional: true, | |
| dehydrate: false, | |
| }, | |
| ], | |
| }, | |
| { | |
| provide: MOCK_SERVER_ENDPOINT_TOKEN, | |
| useValue: '/mock-api', | |
| }, | |
| { | |
| provide: MOCK_SERVER_SOURCE_TOKEN, | |
| useValue: { | |
| 'resources?name=modules': { | |
| result: { | |
| type: 'json', | |
| value: { | |
| defaultPath: 'static2-qa.tcsbank.ru/platform/modules/', | |
| board: { | |
| latest: '1.13.1-prerelease-4', | |
| beta: '1.16.0-prerelease-13', | |
| }, | |
| header: { latest: '1.22.0', beta: '1.21.0' }, | |
| footer: { latest: '1.8.0', beta: '1.8.0-prerelease-1' }, | |
| 'popup-offer': { latest: '1.8.3', beta: '1.8.3' }, | |
| feedback: { latest: '1.9.0-prerelease-2' }, | |
| mFooter: { latest: '3.0.0' }, | |
| mobileHeader: { latest: '1.2.2' }, | |
| sso: { latest: '1.2.0' }, | |
| 'smart-app-banner': { latest: '3.2.0' }, | |
| test: { latest: '0.0.0', beta: '0.0.0' }, | |
| confirmation: { latest: '0.0.1' }, | |
| 'entertainments-second-header': { latest: '1.2.0', beta: '1.1.0' }, | |
| }, | |
| }, | |
| }, | |
| }, | |
| }, | |
| { | |
| provide: WEB_APP_INIT_TOKEN, | |
| multi: true, | |
| useFactory: ({ | |
| logger, | |
| envManager, | |
| mockServerEndpoint, | |
| mockServerSource, | |
| }: { | |
| logger: typeof LOGGER_TOKEN | |
| envManager: typeof ENV_MANAGER_TOKEN | |
| mockServerEndpoint: typeof MOCK_SERVER_ENDPOINT_TOKEN | |
| mockServerSource: typeof MOCK_SERVER_SOURCE_TOKEN | |
| }) => { | |
| const log = logger('mock-server') | |
| const proxyApi = envManager.get('MOCK_SERVER_PROXY_API') | |
| const router = jsonServer.router(mockServerSource) | |
| const proxy = httpProxy.createProxyServer({ | |
| changeOrigin: true, | |
| target: proxyApi, | |
| }) | |
| ;(router as any).render = (req, res) => { | |
| if (res.statusCode === 404) { | |
| res.status(200) | |
| proxy.web(req, res) | |
| } else { | |
| res.jsonp(res.locals.data) | |
| } | |
| } | |
| return (app) => { | |
| app.use(mockServerEndpoint, router) | |
| } | |
| }, | |
| deps: { | |
| logger: LOGGER_TOKEN, | |
| envManager: ENV_MANAGER_TOKEN, | |
| mockServerEndpoint: MOCK_SERVER_ENDPOINT_TOKEN, | |
| mockServerSource: MOCK_SERVER_SOURCE_TOKEN, | |
| }, | |
| }, | |
| ] |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment