|
| 1 | +import { Backends, Backend, KuzzleProtocol } from '../types'; |
| 2 | + |
| 3 | +const LS_KEY = 'kuzzle-backend'; |
| 4 | +const GLOBAL_NAME = 'kuzzleBackend'; |
| 5 | + |
| 6 | +export function getBackendFromConf(backendsConfig: Backends = {}): Backend | null { |
| 7 | + /* eslint-disable sort-keys */ |
| 8 | + const backends: Backends = { |
| 9 | + default: { |
| 10 | + host: process.env.VUE_APP_BACKEND_HOST ?? 'localhost', |
| 11 | + protocol: |
| 12 | + (process.env.VUE_APP_BACKEND_PROTO as KuzzleProtocol | undefined) ?? |
| 13 | + KuzzleProtocol.WEBSOCKET, |
| 14 | + options: { |
| 15 | + port: parseInt(process.env.VUE_APP_BACKEND_PORT ?? '7512'), |
| 16 | + sslConnection: process.env.VUE_APP_BACKEND_SSL === 'true' || false, |
| 17 | + }, |
| 18 | + }, |
| 19 | + ...backendsConfig, |
| 20 | + }; |
| 21 | + /* eslint-enable sort-keys */ |
| 22 | + |
| 23 | + const backendName = process.env.VUE_APP_BACKEND ?? 'default'; |
| 24 | + |
| 25 | + if (backends[backendName] === undefined) { |
| 26 | + throw new Error(`Unable to find backend ${backendName} in configuration.`); |
| 27 | + } |
| 28 | + |
| 29 | + return backends[backendName] ?? null; |
| 30 | +} |
| 31 | + |
| 32 | +export function getBackendFromLocalStorage(): Backend | null { |
| 33 | + const lsItem = localStorage.getItem(LS_KEY); |
| 34 | + if (lsItem === null) { |
| 35 | + return null; |
| 36 | + } |
| 37 | + const backend = JSON.parse(lsItem); |
| 38 | + |
| 39 | + if (typeof backend !== 'object') { |
| 40 | + throw new Error( |
| 41 | + `Item found in localStorage (${LS_KEY}) is malformed. Expected an object, found ${backend}`, |
| 42 | + ); |
| 43 | + } |
| 44 | + |
| 45 | + return backend; |
| 46 | +} |
| 47 | + |
| 48 | +export function getBackendFromWindow(): Backend | null { |
| 49 | + if ((window as any)[GLOBAL_NAME] === undefined) { |
| 50 | + return null; |
| 51 | + } |
| 52 | + |
| 53 | + const backend = JSON.parse((window as any)[GLOBAL_NAME]); |
| 54 | + |
| 55 | + if (typeof backend !== 'object') { |
| 56 | + throw new Error( |
| 57 | + `Item found in global (${GLOBAL_NAME}) is malformed. Expected an object, found ${backend}`, |
| 58 | + ); |
| 59 | + } |
| 60 | + |
| 61 | + return backend; |
| 62 | +} |
0 commit comments