UNPKG

chromogen

Version:

simple, interaction-driven Jest test generator for Recoil and React Hooks apps

47 lines (46 loc) 1.92 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.wrapFamilySetter = exports.wrapFamilyGetter = void 0; const ledger_1 = require("../utils/ledger"); const utils_1 = require("../utils/utils"); const store_1 = require("../utils/store"); const core_utils_1 = require("./core-utils"); const { transactions, selectorFamilies, initialRenderFamilies, setTransactions } = ledger_1.ledger; const wrapFamilyGetter = (key, configGet) => { let returnedPromise = false; return (params) => (utils) => { const { get } = utils; const value = configGet(params)(utils); if (get(store_1.recordingState)) { if (transactions.length === 0) { if (typeof value === 'object' && value !== null && Object.prototype.toString.call(value) === '[object Promise]') { delete selectorFamilies[key]; returnedPromise = true; } else { initialRenderFamilies.push({ key, params, value }); } } else if (!returnedPromise) { if (!selectorFamilies[key].prevParams.has(params)) { selectorFamilies[key].prevParams.add(params); } if (params !== utils_1.dummyParam) (0, core_utils_1.debouncedAddToTransactions)(key, value, params); } } return value; }; }; exports.wrapFamilyGetter = wrapFamilyGetter; const wrapFamilySetter = (key, set) => (params) => (utils, newValue) => { if (utils.get(store_1.recordingState) && setTransactions.length > 0) { setTimeout(() => { setTransactions[setTransactions.length - 1].setter = { key, params, newValue }; }, 0); } return set(params)(utils, newValue); }; exports.wrapFamilySetter = wrapFamilySetter;