storybook-builder-rsbuild
Version:
Rsbuild builder for Storybook
341 lines (334 loc) • 11.8 kB
JavaScript
import { createRequire as __WEBPACK_EXTERNAL_createRequire } from "module";
import * as __WEBPACK_EXTERNAL_MODULE_storybook_internal_common_7991bda6__ from "storybook/internal/common";
import * as __WEBPACK_EXTERNAL_MODULE_storybook_internal_node_logger_87de4309__ from "storybook/internal/node-logger";
var __webpack_modules__ = {
980: (__unused_webpack_module, exports) => {
var __webpack_unused_export__;
__webpack_unused_export__ = { value: true };
exports.TW = void 0;
function dedent(templ) {
var values = [];
for (var _i = 1; _i < arguments.length; _i++) {
values[_i - 1] = arguments[_i];
}
var strings = Array.from(typeof templ === "string" ? [templ] : templ);
strings[strings.length - 1] = strings[strings.length - 1].replace(
/\r?\n([\t ]*)$/,
"",
);
var indentLengths = strings.reduce(function (arr, str) {
var matches = str.match(/\n([\t ]+|(?!\s).)/g);
if (matches) {
return arr.concat(
matches.map(function (match) {
var _a, _b;
return (_b =
(_a = match.match(/[\t ]/g)) === null || _a === void 0
? void 0
: _a.length) !== null && _b !== void 0
? _b
: 0;
}),
);
}
return arr;
}, []);
if (indentLengths.length) {
var pattern_1 = new RegExp(
"\n[\t ]{" + Math.min.apply(Math, indentLengths) + "}",
"g",
);
strings = strings.map(function (str) {
return str.replace(pattern_1, "\n");
});
}
strings[0] = strings[0].replace(/^\r?\n/, "");
var string = strings[0];
values.forEach(function (value, i) {
var endentations = string.match(/(?:^|\n)( *)$/);
var endentation = endentations ? endentations[1] : "";
var indentedValue = value;
if (typeof value === "string" && value.includes("\n")) {
indentedValue = String(value)
.split("\n")
.map(function (str, i) {
return i === 0 ? str : "" + endentation + str;
})
.join("\n");
}
string += indentedValue + strings[i + 1];
});
return string;
}
exports.TW = dedent;
__webpack_unused_export__ = dedent;
},
};
var __webpack_module_cache__ = {};
function __nccwpck_require__(moduleId) {
var cachedModule = __webpack_module_cache__[moduleId];
if (cachedModule !== undefined) {
return cachedModule.exports;
}
var module = (__webpack_module_cache__[moduleId] = { exports: {} });
var threw = true;
try {
__webpack_modules__[moduleId](module, module.exports, __nccwpck_require__);
threw = false;
} finally {
if (threw) delete __webpack_module_cache__[moduleId];
}
return module.exports;
}
(() => {
__nccwpck_require__.d = (exports, definition) => {
for (var key in definition) {
if (
__nccwpck_require__.o(definition, key) &&
!__nccwpck_require__.o(exports, key)
) {
Object.defineProperty(exports, key, {
enumerable: true,
get: definition[key],
});
}
}
};
})();
(() => {
__nccwpck_require__.o = (obj, prop) =>
Object.prototype.hasOwnProperty.call(obj, prop);
})();
if (typeof __nccwpck_require__ !== "undefined")
__nccwpck_require__.ab =
new URL(".", import.meta.url).pathname.slice(
import.meta.url.match(/^file:\/\/\/\w:/) ? 1 : 0,
-1,
) + "/";
var __webpack_exports__ = {};
__nccwpck_require__.d(__webpack_exports__, {
il: () => checkWebpackVersion,
Tu: () => loadCustomWebpackConfig,
SV: () => mergeConfigs,
T1: () => toImportFn,
i8: () => toImportFnPart,
sg: () => toRequireContext,
HO: () => toRequireContextString,
hO: () => webpackIncludeRegexp,
});
const external_node_url_namespaceObject = __WEBPACK_EXTERNAL_createRequire(
import.meta.url,
)("node:url");
const external_node_path_namespaceObject = __WEBPACK_EXTERNAL_createRequire(
import.meta.url,
)("node:path");
const external_node_module_namespaceObject = __WEBPACK_EXTERNAL_createRequire(
import.meta.url,
)("node:module");
var x = (y) => {
var x = {};
__nccwpck_require__.d(x, y);
return x;
};
var y = (x) => () => x;
const common_namespaceObject = x({
["globToRegexp"]: () =>
__WEBPACK_EXTERNAL_MODULE_storybook_internal_common_7991bda6__.globToRegexp,
["serverRequire"]: () =>
__WEBPACK_EXTERNAL_MODULE_storybook_internal_common_7991bda6__.serverRequire,
});
var node_logger_x = (y) => {
var x = {};
__nccwpck_require__.d(x, y);
return x;
};
var node_logger_y = (x) => () => x;
const node_logger_namespaceObject = node_logger_x({
["logger"]: () =>
__WEBPACK_EXTERNAL_MODULE_storybook_internal_node_logger_87de4309__.logger,
});
var dist = __nccwpck_require__(980);
var dist_filename = external_node_url_namespaceObject.fileURLToPath(
import.meta.url,
);
var dist_dirname = external_node_path_namespaceObject.dirname(dist_filename);
var dist_require = external_node_module_namespaceObject.createRequire(
import.meta.url,
);
var webpackConfigs = ["webpack.config", "webpackfile"],
loadCustomWebpackConfig = async (configDir) =>
(0, common_namespaceObject.serverRequire)(
webpackConfigs.map((configName) =>
(0, external_node_path_namespaceObject.resolve)(configDir, configName),
),
);
var checkWebpackVersion = (webpack, specifier, caption) => {
if (!webpack.version) {
node_logger_namespaceObject.logger.info(
"Skipping webpack version check, no version available",
);
return;
}
webpack.version !== specifier &&
node_logger_namespaceObject.logger.warn((0, dist.TW)`
Unexpected webpack version in ${caption}:
- Received '${webpack.version}'
- Expected '${specifier}'
If you're using Webpack 5 in SB6.2 and upgrading, consider: https://github.com/storybookjs/storybook/blob/next/MIGRATION.md#webpack-5-manager-build
For more info about Webpack 5 support: https://gist.github.com/shilman/8856ea1786dcd247139b47b270912324#troubleshooting
`);
};
function mergePluginsField(defaultPlugins = [], customPlugins = []) {
return [...defaultPlugins, ...customPlugins];
}
function mergeRulesField(defaultRules = [], customRules = []) {
return [...defaultRules, ...customRules];
}
function mergeExtensionsField(
{ extensions: defaultExtensions = [] },
{ extensions: customExtensions = [] },
) {
return [...defaultExtensions, ...customExtensions];
}
function mergeAliasField(
{ alias: defaultAlias = {} },
{ alias: customAlias = {} },
) {
return { ...defaultAlias, ...customAlias };
}
function mergeModuleField(a, b) {
return { ...a, ...b, rules: mergeRulesField(a.rules || [], b.rules || []) };
}
function mergeResolveField(
{ resolve: defaultResolve = {} },
{ resolve: customResolve = {} },
) {
return {
...defaultResolve,
...customResolve,
alias: mergeAliasField(defaultResolve, customResolve),
extensions: mergeExtensionsField(defaultResolve, customResolve),
};
}
function mergeOptimizationField(
{ optimization: defaultOptimization = {} },
{ optimization: customOptimization = {} },
) {
return { ...defaultOptimization, ...customOptimization };
}
function mergeConfigs(config, customConfig) {
return {
...customConfig,
...config,
devtool: customConfig.devtool || config.devtool,
plugins: mergePluginsField(config.plugins, customConfig.plugins),
module: mergeModuleField(config.module || {}, customConfig.module || {}),
resolve: mergeResolveField(config, customConfig),
optimization: mergeOptimizationField(config, customConfig),
};
}
function importPipeline() {
let importGate = Promise.resolve();
return async (importFn) => {
await importGate;
let moduleExportsPromise = importFn();
return (
(importGate = importGate.then(async () => {
await moduleExportsPromise;
})),
moduleExportsPromise
);
};
}
function adjustRegexToExcludeNodeModules(originalRegex) {
let originalRegexString = originalRegex.source,
startsWithCaret = originalRegexString.startsWith("^"),
excludeNodeModulesPattern = startsWithCaret
? "(?!.*node_modules)"
: "^(?!.*node_modules)",
adjustedRegexString = startsWithCaret
? `^${excludeNodeModulesPattern}${originalRegexString.substring(1)}`
: excludeNodeModulesPattern + originalRegexString;
return new RegExp(adjustedRegexString);
}
function webpackIncludeRegexp(specifier) {
let { directory, files } = specifier,
directoryWithoutLeadingDots = directory.replace(/^(\.+\/)+/, "/"),
webpackIncludeGlob = [".", ".."].includes(directory)
? files
: `${directoryWithoutLeadingDots}/${files}`,
webpackIncludeRegexpWithCaret = webpackIncludeGlob.includes("node_modules")
? (0, common_namespaceObject.globToRegexp)(webpackIncludeGlob)
: adjustRegexToExcludeNodeModules(
(0, common_namespaceObject.globToRegexp)(webpackIncludeGlob),
);
return new RegExp(webpackIncludeRegexpWithCaret.source.replace(/^\^/, ""));
}
function toImportFnPart(specifier) {
let { directory, importPathMatcher } = specifier;
return (0, dist.TW)`
async (path) => {
if (!${importPathMatcher}.exec(path)) {
return;
}
const pathRemainder = path.substring(${directory.length + 1});
return import(
/* webpackChunkName: "[request]" */
/* webpackInclude: ${webpackIncludeRegexp(specifier)} */
'${directory}/' + pathRemainder
);
}
`;
}
function toImportFn(stories, { needPipelinedImport } = {}) {
let pipelinedImport = "const pipeline = (x) => x();";
return (
needPipelinedImport &&
(pipelinedImport = `\n const importPipeline = ${importPipeline};\n const pipeline = importPipeline();\n `),
(0, dist.TW)`
${pipelinedImport}
const importers = [
${stories.map(toImportFnPart).join(`,\n`)}
];
export async function importFn(path) {
for (let i = 0; i < importers.length; i++) {
const moduleExports = await pipeline(() => importers[i](path));
if (moduleExports) {
return moduleExports;
}
}
}
`
);
}
var toRequireContext = (specifier) => {
let { directory, files } = specifier,
match = (0, common_namespaceObject.globToRegexp)(`./${files}`);
return {
path: directory,
recursive: files.includes("**") || files.split("/").length > 1,
match,
};
},
toRequireContextString = (specifier) => {
let { path: p, recursive: r, match: m } = toRequireContext(specifier);
return `require.context('${p}', ${r}, ${m})`;
};
var __webpack_exports__checkWebpackVersion = __webpack_exports__.il;
var __webpack_exports__loadCustomWebpackConfig = __webpack_exports__.Tu;
var __webpack_exports__mergeConfigs = __webpack_exports__.SV;
var __webpack_exports__toImportFn = __webpack_exports__.T1;
var __webpack_exports__toImportFnPart = __webpack_exports__.i8;
var __webpack_exports__toRequireContext = __webpack_exports__.sg;
var __webpack_exports__toRequireContextString = __webpack_exports__.HO;
var __webpack_exports__webpackIncludeRegexp = __webpack_exports__.hO;
export {
__webpack_exports__checkWebpackVersion as checkWebpackVersion,
__webpack_exports__loadCustomWebpackConfig as loadCustomWebpackConfig,
__webpack_exports__mergeConfigs as mergeConfigs,
__webpack_exports__toImportFn as toImportFn,
__webpack_exports__toImportFnPart as toImportFnPart,
__webpack_exports__toRequireContext as toRequireContext,
__webpack_exports__toRequireContextString as toRequireContextString,
__webpack_exports__webpackIncludeRegexp as webpackIncludeRegexp,
};