@storybook/codemod
Version:
A collection of codemod scripts written with JSCodeshift
45 lines (41 loc) • 1.8 kB
JavaScript
import CJS_COMPAT_NODE_URL_9smq7eu765a from 'node:url';
import CJS_COMPAT_NODE_PATH_9smq7eu765a from 'node:path';
import CJS_COMPAT_NODE_MODULE_9smq7eu765a from "node:module";
var __filename = CJS_COMPAT_NODE_URL_9smq7eu765a.fileURLToPath(import.meta.url);
var __dirname = CJS_COMPAT_NODE_PATH_9smq7eu765a.dirname(__filename);
var require = CJS_COMPAT_NODE_MODULE_9smq7eu765a.createRequire(import.meta.url);
// ------------------------------------------------------------
// end of CJS compatibility banner, injected by Storybook's esbuild configuration
// ------------------------------------------------------------
import {
__name
} from "../_node-chunks/chunk-HVEWKEW6.js";
// src/transforms/upgrade-hierarchy-separators.js
function upgradeSeparator(path) {
return path.replace(/[|.]/g, "/");
}
__name(upgradeSeparator, "upgradeSeparator");
function transformer(file, api, options) {
const j = api.jscodeshift;
const root = j(file.source);
root.find(j.CallExpression).filter((call) => call.node.callee.name === "storiesOf").filter(
(call) => call.node.arguments.length > 0 && ["Literal", "StringLiteral"].includes(call.node.arguments[0].type)
).forEach((call) => {
const arg0 = call.node.arguments[0];
arg0.value = upgradeSeparator(arg0.value);
});
root.find(j.ExportDefaultDeclaration).filter((def) => def.node.declaration.properties.map((p) => p.key.name).includes("title")).forEach((def) => {
if (def.node.declaration && def.node.declaration.properties) {
def.node.declaration.properties.forEach((p) => {
if (p.key.name === "title") {
p.value.value = upgradeSeparator(p.value.value);
}
});
}
});
return root.toSource({ quote: "single" });
}
__name(transformer, "transformer");
export {
transformer as default
};