creevey
Version:
Cross-browser screenshot testing tool for Storybook with fancy UI Runner
79 lines • 3.31 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.deserializeStory = exports.deserializeRawStories = exports.serializeRawStories = exports.denormalizeStoryParameters = exports.combineParameters = void 0;
const mapValues_js_1 = __importDefault(require("lodash/mapValues.js"));
const mergeWith_js_1 = __importDefault(require("lodash/mergeWith.js"));
const cloneDeepWith_js_1 = __importDefault(require("lodash/cloneDeepWith.js"));
const serializeRegExp_js_1 = require("./serializeRegExp.js");
// NOTE: Copy-paste from storybook/api
const combineParameters = (...parameterSets) =>
// eslint-disable-next-line @typescript-eslint/no-unsafe-return
(0, mergeWith_js_1.default)({}, ...parameterSets, (_, srcValue) => {
// Treat arrays as scalars:
if (Array.isArray(srcValue))
return srcValue;
return undefined;
});
exports.combineParameters = combineParameters;
// NOTE: Copy-paste from storybook/api
const denormalizeStoryParameters = ({ globalParameters, kindParameters, stories, }) => {
return (0, mapValues_js_1.default)(stories, (storyData) => ({
...storyData,
parameters: (0, exports.combineParameters)(globalParameters, kindParameters[storyData.title] ?? {}, storyData.parameters),
}));
};
exports.denormalizeStoryParameters = denormalizeStoryParameters;
const serializeRawStories = (stories) => {
return (0, mapValues_js_1.default)(stories, (storyData) => {
const creevey = storyData.parameters.creevey;
if (creevey?.skip) {
return {
...storyData,
parameters: {
...storyData.parameters,
creevey: {
...creevey,
skip: (0, cloneDeepWith_js_1.default)(creevey.skip, (value) => {
if ((0, serializeRegExp_js_1.isRegExp)(value)) {
return (0, serializeRegExp_js_1.serializeRegExp)(value);
}
return undefined;
}),
},
},
};
}
return storyData;
});
};
exports.serializeRawStories = serializeRawStories;
const deserializeRawStories = (stories) => {
return (0, mapValues_js_1.default)(stories, exports.deserializeStory);
};
exports.deserializeRawStories = deserializeRawStories;
const deserializeStory = (story) => {
const creevey = story.parameters.creevey;
if (creevey?.skip) {
return {
...story,
parameters: {
...story.parameters,
creevey: {
...creevey,
skip: (0, cloneDeepWith_js_1.default)(creevey.skip, (value) => {
if ((0, serializeRegExp_js_1.isSerializedRegExp)(value)) {
return (0, serializeRegExp_js_1.deserializeRegExp)(value);
}
return undefined;
}),
},
},
};
}
return story;
};
exports.deserializeStory = deserializeStory;
//# sourceMappingURL=index.js.map