UNPKG

@testplane/storybook

Version:

Testplane plugin that enables runtime screenshot storybook tests autogeneration

45 lines 1.85 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.extractInheritedValue = exports.inheritValue = void 0; // eslint-disable-next-line @typescript-eslint/no-explicit-any const isFunc = (obj) => typeof obj === "function"; // Acts like "Object.assign", but: // - Does not mutate arguments // - Supports functions (previousValue) => nextValue // eslint-disable-next-line @typescript-eslint/no-explicit-any function inheritValue(...values) { let resultValue = values[0]; for (let i = 1; i < values.length; i++) { const prevValue = resultValue; const curValue = values[i]; if (!curValue) { continue; } if (!resultValue) { resultValue = curValue; } if (!isFunc(prevValue) && !isFunc(curValue)) { resultValue = Object.assign({}, prevValue, curValue); } else if (isFunc(prevValue) && isFunc(curValue)) { resultValue = (baseValue) => curValue(prevValue(structuredClone(baseValue))); } else if (isFunc(prevValue) && !isFunc(curValue)) { resultValue = (baseValue) => Object.assign({}, prevValue(structuredClone(baseValue)), curValue); } else if (!isFunc(prevValue) && isFunc(curValue)) { resultValue = (baseValue) => curValue(structuredClone(Object.assign({}, baseValue, prevValue))); } } return resultValue; } exports.inheritValue = inheritValue; // eslint-disable-next-line @typescript-eslint/no-explicit-any function extractInheritedValue(value, baseValue) { if (!value) { return baseValue; } return typeof value === "function" ? value(baseValue) : structuredClone(Object.assign({}, baseValue, value)); } exports.extractInheritedValue = extractInheritedValue; //# sourceMappingURL=inheritable-values.js.map