Sha256: 94ca9a599d28d63d0f64ba302ec88ea4dc726a6b547acbf987352bb744beefba

Contents?: true

Size: 1.31 KB

Versions: 6

Compression:

Stored size: 1.31 KB

Contents

// @flow

export function getEnvName(): string {
  return String(process.env.RAILS_ENV || process.env.NODE_ENV || 'development');
}

export function compact<A>(list: Array<?A>): Array<A> {
  const output = [];
  list.forEach(item => {
    if (item != null) {
      output.push(item);
    }
  });

  return output;
}

export function merge<A: Hash, B: Hash>(a?: A, b?: B): A & B {
  return Object.assign({}, a, b);
}

export function deepMerge<A: Hash, B: Hash>(a?: A, b?: B): A & B {
  const output = Object.assign({}, a, b);
  if (a == null || b == null) {
    return output;
  }

  if (Array.isArray(a) && Array.isArray(b)) {
    return b;
  }

  const validB = b;
  const keysB = Object.keys(validB);
  keysB.forEach(keyB => {
    const valueA = output[keyB];
    const valueB = validB[keyB];
    if (valueB === undefined) {
      return;
    }

    // TODO: valueB null should overwrite valueA
    if (valueA instanceof Object && valueB instanceof Object) {
      Object.assign(output, { [keyB]: deepMerge(valueA, valueB) });
      return;
    }

    Object.assign(output, { [keyB]: valueB });
  });

  return output;
}

export function omit(keys: Array<string>, hash: Hash) {
  const output = {};
  Object.keys(hash).forEach((key) => {
    if (keys.indexOf(key) === -1) {
      output[key] = hash[key];
    }
  });
  return output;
}

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
hauler-0.3.4 src/utils/misc.js
hauler-0.3.3 src/utils/misc.js
hauler-0.3.2 src/utils/misc.js
hauler-0.3.1 src/utils/misc.js
hauler-0.3.0 src/utils/misc.js
hauler-0.2.0 src/utils/misc.js