UNPKG

overmind

Version:
1 lines 9.69 kB
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"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","sourcesContent":["import isPlainObject from 'is-plain-obj'\nimport { IMutation, IS_PROXY, VALUE } from 'proxy-state-tree'\nimport { deepCopy } from './statemachine'\n\n// Due to avoid circular dependency warnings we export this utility from here\nexport { deepCopy } from './statemachine'\n\nexport const createOnInitialize = () => {\n return ({ actions }, instance) => {\n const initializers = getActionsByName('onInitializeOvermind', actions)\n\n return Promise.all(initializers.map((initialize) => initialize(instance)))\n }\n}\n\nexport const ENVIRONMENT = (() => {\n let env: string\n try {\n env = process.env.NODE_ENV!\n } catch {\n console.warn(\n 'Overmind was unable to determine the NODE_ENV, which means it will run in DEVELOPMENT mode. If this is a production app, please configure your build tool to define NODE_ENV'\n )\n env = 'development'\n }\n\n return env\n})()\n\nexport const IS_TEST = ENVIRONMENT === 'test'\nexport const IS_OPERATOR = Symbol('operator')\nexport const ORIGINAL_ACTIONS = Symbol('origina_actions')\nexport const EXECUTION = Symbol('execution')\n\nexport const MODE_DEFAULT = Symbol('MODE_DEFAULT')\nexport const MODE_TEST = Symbol('MODE_TEST')\nexport const MODE_SSR = Symbol('MODE_SSR')\n\nexport class MockedEventEmitter {\n emit() {}\n emitAsync() {}\n on() {}\n once() {}\n addListener() {}\n}\n\nexport const json = <T>(obj: T): T => {\n return deepCopy(obj && obj[IS_PROXY] ? obj[VALUE] : obj)\n}\n\nexport function isPromise(maybePromise: any) {\n return (\n maybePromise instanceof Promise ||\n (maybePromise &&\n typeof maybePromise.then === 'function' &&\n typeof maybePromise.catch === 'function')\n )\n}\n\nexport function processState(state: {}) {\n return Object.keys(state).reduce(\n (aggr, key) => {\n if (key === '__esModule') {\n return aggr\n }\n const originalDescriptor = Object.getOwnPropertyDescriptor(state, key)\n\n if (originalDescriptor && 'get' in originalDescriptor) {\n Object.defineProperty(aggr, key, originalDescriptor as any)\n\n return aggr\n }\n\n const value = state[key]\n\n if (isPlainObject(value)) {\n aggr[key] = processState(value)\n } else {\n Object.defineProperty(aggr, key, originalDescriptor as any)\n }\n\n return aggr\n },\n isPlainObject(state) ? {} : state\n )\n}\n\nexport function getFunctionName(func: Function) {\n return func.name || (func as any).displayName || ''\n}\n\nconst getChangeMutationsDelimiter = '.'\nexport function getChangeMutations(\n stateA: object,\n stateB: object,\n path: string[] = [],\n mutations: IMutation[] = []\n): IMutation[] {\n const stateAKeys = Object.keys(stateA)\n const stateBKeys = Object.keys(stateB)\n\n stateAKeys.forEach((key) => {\n if (!stateBKeys.includes(key)) {\n mutations.push({\n delimiter: getChangeMutationsDelimiter,\n args: [],\n path: path.concat(key).join('.'),\n hasChangedValue: false,\n method: 'unset',\n })\n }\n })\n\n stateBKeys.forEach((key) => {\n if (isPlainObject(stateA[key]) && isPlainObject(stateB[key])) {\n getChangeMutations(stateA[key], stateB[key], path.concat(key), mutations)\n } else if (stateA[key] !== stateB[key]) {\n mutations.push({\n delimiter: getChangeMutationsDelimiter,\n args: [stateB[key]],\n path: path.concat(key).join('.'),\n hasChangedValue: false,\n method: 'set',\n })\n }\n })\n\n return mutations\n}\n\nexport function getActionsByName(\n name: string,\n actions = {},\n currentPath: string[] = []\n) {\n return Object.keys(actions).reduce<string[]>((aggr, key) => {\n if (typeof actions[key] === 'function' && key === name) {\n return aggr.concat(actions[key])\n }\n\n return aggr.concat(\n getActionsByName(name, actions[key], currentPath.concat(key))\n )\n }, [])\n}\n\nexport function getActionPaths(actions = {}, currentPath: string[] = []) {\n return Object.keys(actions).reduce<string[]>((aggr, key) => {\n if (typeof actions[key] === 'function') {\n return aggr.concat(currentPath.concat(key).join('.'))\n }\n\n return aggr.concat(getActionPaths(actions[key], currentPath.concat(key)))\n }, [])\n}\n\nexport function createActionsProxy(actions, cb) {\n return new Proxy(actions, {\n get(target, prop) {\n if (prop === ORIGINAL_ACTIONS) {\n return actions\n }\n\n if (typeof target[prop] === 'function') {\n return cb(target[prop])\n }\n\n if (!target[prop]) {\n return undefined\n }\n\n return createActionsProxy(target[prop], cb)\n },\n })\n}\n"]}