UNPKG

@storybook/csf-plugin

Version:
50 lines (46 loc) 1.83 kB
import CJS_COMPAT_NODE_URL_8g3f3a8zg7a from 'node:url'; import CJS_COMPAT_NODE_PATH_8g3f3a8zg7a from 'node:path'; import CJS_COMPAT_NODE_MODULE_8g3f3a8zg7a from "node:module"; var __filename = CJS_COMPAT_NODE_URL_8g3f3a8zg7a.fileURLToPath(import.meta.url); var __dirname = CJS_COMPAT_NODE_PATH_8g3f3a8zg7a.dirname(__filename); var require = CJS_COMPAT_NODE_MODULE_8g3f3a8zg7a.createRequire(import.meta.url); // ------------------------------------------------------------ // end of CJS compatibility banner, injected by Storybook's esbuild configuration // ------------------------------------------------------------ import { __name } from "./_node-chunks/chunk-V74KDEWG.js"; // src/webpack-loader.ts import { readFile } from "node:fs/promises"; import { enrichCsf, formatCsf, loadCsf } from "storybook/internal/csf-tools"; async function loader(content, map) { const callback = this.async(); const options = this.getOptions(); const id = this.resourcePath; const sourceCode = await readFile(id, "utf-8"); try { const makeTitle = /* @__PURE__ */ __name((userTitle) => userTitle || "default", "makeTitle"); const csf = loadCsf(content, { makeTitle }).parse(); const csfSource = loadCsf(sourceCode, { makeTitle }).parse(); enrichCsf(csf, csfSource, options); const formattedCsf = formatCsf( csf, { sourceMaps: true, inputSourceMap: map, sourceFileName: id }, content ); if (typeof formattedCsf === "string") { return callback(null, formattedCsf, map); } callback(null, formattedCsf.code, formattedCsf.map); } catch (err) { if (!err.message?.startsWith("CSF:")) { console.warn(err.message); } callback(null, content, map); } } __name(loader, "loader"); var webpack_loader_default = loader; export { webpack_loader_default as default };