@storybook/csf-plugin
Version:
Enrich CSF files via static analysis
50 lines (46 loc) • 1.83 kB
JavaScript
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
};