UNPKG

lml-main

Version:

This is now a mono repository published into many standalone packages.

59 lines (50 loc) 1.52 kB
import { combineEpics } from 'redux-observable' import * as uuid from 'uuid' import { AppState } from '../../root/reducers' import { cosmoApiEpics } from '@lml/cosmo-redux-api' import { cosmoUiAuthEpic, getAuthHeaders } from '@lml/cosmo-ui-auth' import { createCosmoUiEpics, CosmoUiConfig } from 'cosmoui' import * as RxHTTP from 'redux-rx-http' import { pusherEpics } from './pusher' import { coreUiEpics } from '@lml/core-ui' import { config } from '../../config' import { authEpics } from '../../auth/epics' const mkTraceID = () => `WEB-UI-${uuid()}` export const mkHeaders = (state: AppState) => ({ ...getAuthHeaders(state, 'Auth'), 'Source': 'ui', 'X-Trace-Id': mkTraceID(), 'Content-Type': 'application/json', }) export const mkHttpConfig = (state: AppState): RxHTTP.RxHttpRequestBase => ({ json: true, headers: mkHeaders(state), baseUrl: `https://${config.API_HOST}`, }) const rxHttpEpic = RxHTTP.createRxHttpEpic(mkHttpConfig) const cosmoConfig: CosmoUiConfig = { edq: { token: config.EDQ_TOKEN, url: config.EDQ_URL, }, gmaps: { url: config.GOOGLE_MAPS_API_URL, key: config.GOOGLE_MAPS_API_KEY, }, } export interface EpicDependencies { fetch: RxHTTP.Fetch, } export const epicDependencies: EpicDependencies = { fetch, } export const rootEpic = combineEpics( // external cosmoApiEpics, createCosmoUiEpics(cosmoConfig), rxHttpEpic, cosmoUiAuthEpic, pusherEpics, coreUiEpics, authEpics, )