Skip to content
Snippets Groups Projects
config.ts 1.65 KiB
Newer Older
// Look in ./config folder for config
import { OpaqueToken } from '@angular/core';
import * as path from 'path';
let configContext = require.context("../config", false, /js$/);
let EnvConfig: any = {};
let EnvConfigFile: string;
let DefaultConfig: any = {};
  DefaultConfig = configContext('./environment.default.js');
  throw new Error(`Cannot find file "${path.resolve('config', './environment.default.js')}"`);
}

switch (process.env.NODE_ENV) {
  case 'prod':
  case 'production':
    EnvConfigFile = './environment.prod.js';
    break;
  case 'dev':
  case 'development':
  default:
    EnvConfigFile = './environment.dev.js';
  EnvConfig = configContext(EnvConfigFile);
  EnvConfig = {};
const GLOBAL_CONFIG = new OpaqueToken('config');

interface ServerConfig {
  "nameSpace": string,
  "protocol": string,
  "address": string,
  "port": number,
  "baseURL": string
}

interface GlobalConfig {
  "production": string,
  "rest": ServerConfig,
  "ui": ServerConfig,
  "cache": {
    "msToLive": number,
  },
  "universal": {
    "shouldRehydrate": boolean,
    "preboot": boolean,
    "async": boolean
  }
}

const config: GlobalConfig = <GlobalConfig>Object.assign(DefaultConfig, EnvConfig);

function buildURL(server: ServerConfig) {
  return [server.protocol, '://', server.address, (server.port !== 80) ? ':' + server.port : ''].join('');
}

for (let key in config) {
  if (config[key].protocol && config[key].address && config[key].port) {
    config[key].baseURL = buildURL(config[key]);
  }
}

const globalConfig = {
  provide: GLOBAL_CONFIG,
  useValue: config
export { GLOBAL_CONFIG, GlobalConfig, globalConfig, config }