UNPKG

@storybook/codemod

Version:

A collection of codemod scripts written with JSCodeshift

45 lines (41 loc) 1.8 kB
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 };