storybook-builder-rsbuild
Version:
Rsbuild builder for Storybook
50 lines (47 loc) • 1.52 kB
JavaScript
import '../chunk-TTFRSOOU.mjs';
import assert from 'assert';
import { init, parse as parse$1 } from 'cjs-module-lexer';
import { parse } from 'es-module-lexer';
import MagicString from 'magic-string';
async function loader(source, map, meta) {
const callback = this.async();
try {
const magicString = new MagicString(source);
try {
const parseResult = await parse(source);
const namedExportsOrder = (parseResult[1] || []).map((e) => source.substring(e.s, e.e)).filter((e) => e !== "default");
assert(
namedExportsOrder.length > 0,
"No named exports found. Very likely that this is not a ES module."
);
magicString.append(
`;export const __namedExportsOrder = ${JSON.stringify(namedExportsOrder)};`
);
} catch {
await init();
const namedExportsOrder = (parse$1(source).exports || []).filter(
(e) => e !== "default" && e !== "__esModule"
);
assert(
namedExportsOrder.length > 0,
"No named exports found. Very likely that this is not a CJS module."
);
magicString.append(
`;module.exports.__namedExportsOrder = ${JSON.stringify(namedExportsOrder)};`
);
}
return callback(
null,
magicString.toString(),
map ?? magicString.generateMap({
hires: true,
includeContent: true,
source: this.resourcePath
}),
meta
);
} catch (err) {
return callback(null, source, map, meta);
}
}
export { loader as default };