UNPKG

zephyr-rspress-plugin

Version:

Rspress plugin for Zephyr

102 lines (101 loc) • 4.2 kB
"use strict"; var __webpack_require__ = {}; (()=>{ __webpack_require__.d = (exports1, getters, values)=>{ var define = (defs, kind)=>{ for(var key in defs)if (__webpack_require__.o(defs, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, { enumerable: true, [kind]: defs[key] }); }; define(getters, "get"); define(values, "value"); }; })(); (()=>{ __webpack_require__.o = (obj, prop)=>Object.prototype.hasOwnProperty.call(obj, prop); })(); (()=>{ __webpack_require__.r = (exports1)=>{ if ("u" > typeof Symbol && Symbol.toStringTag) Object.defineProperty(exports1, Symbol.toStringTag, { value: 'Module' }); Object.defineProperty(exports1, '__esModule', { value: true }); }; })(); var __webpack_exports__ = {}; __webpack_require__.r(__webpack_exports__); __webpack_require__.d(__webpack_exports__, { moduleFederationPublicPathPlugin: ()=>moduleFederationPublicPathPlugin, setPortableModuleFederationPublicPath: ()=>setPortableModuleFederationPublicPath }); const external_zephyr_xpack_internal_namespaceObject = require("zephyr-xpack-internal"); function moduleFederationPublicPathPlugin(options = {}) { return { name: 'zephyr-rspress-module-federation-public-path', setup (api) { api.onBeforeCreateCompiler({ order: 'post', handler ({ bundlerConfigs }) { const configs = bundlerConfigs ?? []; options.onModuleFederationPlugins?.(configs.filter((config)=>!isNodeCompiler(config)).flatMap((config)=>(config.plugins ?? []).filter((plugin)=>(0, external_zephyr_xpack_internal_namespaceObject.isModuleFederationPlugin)(plugin)))); if ('tap-app' !== options.target) for (const config of configs)setPortableModuleFederationPublicPath(config); } }); } }; } function setPortableModuleFederationPublicPath(config) { if (isNodeCompiler(config) || !hasExposedModuleFederationRemote(config.plugins)) return; if (isHttpPublicPath(config.output?.publicPath)) config.output = { ...config.output, publicPath: 'auto' }; } function isNodeCompiler(config) { return 'node' === config.name || hasNodeTarget(config.target); } function hasNodeTarget(target) { const targets = Array.isArray(target) ? target : [ target ]; return targets.some((value)=>'string' == typeof value && value.toLowerCase().includes('node')); } function hasExposedModuleFederationRemote(plugins = []) { return plugins.some((plugin)=>{ const options = getModuleFederationOptions(plugin); return Boolean(options && hasExposes(options.exposes)); }); } function getModuleFederationOptions(plugin) { if (!isRecord(plugin)) return null; const candidate = plugin; const pluginName = candidate.name ?? candidate.constructor?.name; if (!pluginName?.includes('ModuleFederationPlugin')) return null; const rawOptions = candidate._options; if (!isRecord(rawOptions)) return null; const nestedConfig = rawOptions['config']; return isRecord(nestedConfig) ? nestedConfig : rawOptions; } function hasExposes(exposes) { if (Array.isArray(exposes)) return exposes.length > 0; return isRecord(exposes) ? Object.keys(exposes).length > 0 : false; } function isRecord(value) { return 'object' == typeof value && null !== value; } function isHttpPublicPath(value) { return 'string' == typeof value && /^https?:\/\//i.test(value); } exports.moduleFederationPublicPathPlugin = __webpack_exports__.moduleFederationPublicPathPlugin; exports.setPortableModuleFederationPublicPath = __webpack_exports__.setPortableModuleFederationPublicPath; for(var __rspack_i in __webpack_exports__)if (-1 === [ "moduleFederationPublicPathPlugin", "setPortableModuleFederationPublicPath" ].indexOf(__rspack_i)) exports[__rspack_i] = __webpack_exports__[__rspack_i]; Object.defineProperty(exports, '__esModule', { value: true }); //# sourceMappingURL=moduleFederationPublicPathPlugin.js.map