All files / src/onDeployManager index.js

88.89% Statements 8/9
100% Branches 0/0
83.33% Functions 5/6
100% Lines 8/8

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40                                    2x 2x       3x       3x 3x 3x       1x         3x  
// @flow
 
import {set, unset, get} from 'lodash';
 
export class OnDeployManager {
  _map: {
    [string]: {
      [string]: Function
    }
  };
  _map = {}
  execute = ({
    key,
    value
  }: {
    key: string,
    value: any
  }): any => {
    const callbacks = this.findCallback(key);
    return callbacks.reduce((result: any, callback: Function) => callback(result), {data: value});
  }
 
  findCallback = (key: string): Array<any> => {
    return Object.values(get(this._map, [key], {}));
  }
 
  registerCallback = (key: string, callback: Function) => {
    const callbackId = randomStr();
    set(this._map, [key, callbackId], callback);
    return callbackId;
  }
 
  unregisterCallback = (key: string, callbackId: ?string) => {
    unset(this._map, [key, callbackId]);
  }
}
 
function randomStr() {
  return Math.random().toString(36).substr(2, 6);
}