storybook/code/addons/storyshots-core/injectFileName.js

24 lines
741 B
JavaScript

const { ScriptTransformer } = require('@jest/transform');
const getNextTransformer = (fileName, config) => {
const self = config.transform.find(([pattern]) => new RegExp(pattern).test(fileName));
return new ScriptTransformer({
...config,
transform: config.transform.filter((entry) => entry !== self),
});
};
module.exports = {
process(src, fileName, config, { instrument }) {
const transformer = getNextTransformer(fileName, config);
const { code } = transformer.transformSource(fileName, src, instrument);
return `${code};
if(exports.default != null) {
exports.default.parameters = exports.default.parameters || {};
exports.default.parameters.fileName = '${fileName.replace(/\\/g, '\\\\')}';
}
`;
},
};