@empjs/share 3.13.5 → 3.13.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,2 +1,2 @@
1
- "use strict";var m=Object.defineProperty;var a=Object.getOwnPropertyDescriptor;var g=Object.getOwnPropertyNames;var d=Object.prototype.hasOwnProperty;var y=(t,e)=>{for(var n in e)m(t,n,{get:e[n],enumerable:!0})},R=(t,e,n,o)=>{if(e&&typeof e=="object"||typeof e=="function")for(let r of g(e))!d.call(t,r)&&r!==n&&m(t,r,{get:()=>e[r],enumerable:!(o=a(e,r))||o.enumerable});return t};var l=t=>R(m({},"__esModule",{value:!0}),t);var M={};y(M,{default:()=>j});module.exports=l(M);var F=["entry","url","manifest"];function b(t){return F.find(e=>typeof t[e]=="string")}function E(t){return Object.fromEntries(Object.entries(t).flatMap(([e,n])=>typeof n=="string"?[[e,n]]:typeof(n==null?void 0:n.version)=="string"?[[e,n.version]]:[]))}function O(t,e){if(!Object.keys(e).length)return t;let n=t;for(let[o,r]of Object.entries(e)){if(!r)continue;let i=new RegExp(`(${o.replace(/[-/\\^$*+?.()|[\]{}]/g,"\\$&")}@)([^/]+)`);n=n.replace(i,`$1${r}`)}return n}function j(t){let e=E(t);return{name:"emp-remotes-replacer",beforeRegisterRemote(n){var p;let o=n.remote;if(!o)return n;let r=(p=o.alias)!=null?p:o.name,i=r?t[r]:void 0,s=i&&typeof i=="object"&&"entry"in i&&typeof i.entry=="string"?i.entry:void 0,c=b(o),f=c?o[c]:void 0,u=s!=null?s:f?O(f,e):void 0;return c&&u&&(s!==void 0||u!==f)&&(o[c]=u),n}}}
1
+ "use strict";var u=Object.defineProperty;var l=Object.getOwnPropertyDescriptor;var a=Object.getOwnPropertyNames;var p=Object.prototype.hasOwnProperty;var R=(e,t)=>{for(var n in t)u(e,n,{get:t[n],enumerable:!0})},y=(e,t,n,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of a(t))!p.call(e,o)&&o!==n&&u(e,o,{get:()=>t[o],enumerable:!(r=l(t,o))||r.enumerable});return e};var E=e=>y(u({},"__esModule",{value:!0}),e);var h={};R(h,{default:()=>_});module.exports=E(h);var f="EMP_FORCE_REMOTES";var F=["entry","url","manifest"];function b(e){return F.find(t=>typeof e[t]=="string")}function m(e){return typeof e=="object"&&e!==null&&"entry"in e&&typeof e.entry=="string"}function g(e){if(typeof e=="string")return e;let t=e==null?void 0:e.version;return typeof t=="string"?t:void 0}function M(e){return e&&m(e)?e.entry:void 0}function O(e){return Object.fromEntries(Object.entries(e).flatMap(([t,n])=>{if(m(n))return[];let r=g(n);return r?[[t,r]]:[]}))}function I(e,t){if(!Object.keys(t).length)return e;let n=e;for(let[r,o]of Object.entries(t)){if(!o)continue;let i=new RegExp(`(${r.replace(/[-/\\^$*+?.()|[\]{}]/g,"\\$&")}@)([^/]+)`);n=n.replace(i,`$1${o}`)}return n}function _(){return{name:"emp-remotes-replacer",beforeRegisterRemote(e){let t=typeof window!="undefined"?window[f]:void 0;if(!t||typeof t!="object")return e;let n=e.remote;if(!n)return e;let r=b(n);if(!r)return e;let o=n[r],i=n.alias?t[n.alias]:void 0,d=O(t),s=o?I(o,d):void 0;if(s&&s!==o)return n[r]=s,e;let c=M(i);return c&&(n[r]=c),e}}}
2
2
  //# sourceMappingURL=forceRemote.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/plugins/rspack/runtimePlugin/forceRemote.ts"],"sourcesContent":["import {type ModuleFederationRuntimePlugin} from '@module-federation/runtime'\nimport {ForceRemoteOptions, type RemoteInfoForForce} from '../types'\n\nconst ENTRY_KEYS = ['entry', 'url', 'manifest'] as const\n\nfunction getEntryKey(remote: RemoteInfoForForce): (typeof ENTRY_KEYS)[number] | undefined {\n return ENTRY_KEYS.find((k) => typeof remote[k] === 'string')\n}\n\nfunction getVersionMap(forceRemotes: ForceRemoteOptions): Record<string, string> {\n return Object.fromEntries(\n Object.entries(forceRemotes).flatMap(([k, v]) =>\n typeof v === 'string' ? [[k, v]] : typeof (v as {version?: string})?.version === 'string' ? [[k, (v as {version: string}).version]] : [],\n ),\n )\n}\n\nfunction changeCommonVersion(url: string, versions: Record<string, string>): string {\n if (!Object.keys(versions).length) return url\n let result = url\n for (const [key, version] of Object.entries(versions)) {\n if (!version) continue\n const regex = new RegExp(`(${key.replace(/[-/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&')}@)([^/]+)`)\n result = result.replace(regex, `$1${version}`)\n }\n return result\n}\n\nexport default function (forceRemotes: ForceRemoteOptions): ModuleFederationRuntimePlugin {\n const versionMap = getVersionMap(forceRemotes)\n\n return {\n name: 'emp-remotes-replacer',\n beforeRegisterRemote(args) {\n const remote = args.remote as unknown as RemoteInfoForForce\n if (!remote) return args\n\n const matchKey = remote.alias ?? remote.name\n const item = matchKey ? forceRemotes[matchKey] : undefined\n const entryOverride =\n item && typeof item === 'object' && 'entry' in item && typeof item.entry === 'string' ? item.entry : undefined\n const key = getEntryKey(remote)\n const current = key ? remote[key] : undefined\n const next = entryOverride ?? (current ? changeCommonVersion(current, versionMap) : undefined)\n if (key && next && (entryOverride !== undefined || next !== current)) remote[key] = next\n\n return args\n },\n }\n}\n"],"mappings":"yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,aAAAE,IAAA,eAAAC,EAAAH,GAGA,IAAMI,EAAa,CAAC,QAAS,MAAO,UAAU,EAE9C,SAASC,EAAYC,EAAqE,CACxF,OAAOF,EAAW,KAAMG,GAAM,OAAOD,EAAOC,CAAC,GAAM,QAAQ,CAC7D,CAEA,SAASC,EAAcC,EAA0D,CAC/E,OAAO,OAAO,YACZ,OAAO,QAAQA,CAAY,EAAE,QAAQ,CAAC,CAACF,EAAGG,CAAC,IACzC,OAAOA,GAAM,SAAW,CAAC,CAACH,EAAGG,CAAC,CAAC,EAAI,OAAQA,GAAA,YAAAA,EAA0B,UAAY,SAAW,CAAC,CAACH,EAAIG,EAAwB,OAAO,CAAC,EAAI,CAAC,CACzI,CACF,CACF,CAEA,SAASC,EAAoBC,EAAaC,EAA0C,CAClF,GAAI,CAAC,OAAO,KAAKA,CAAQ,EAAE,OAAQ,OAAOD,EAC1C,IAAIE,EAASF,EACb,OAAW,CAACG,EAAKC,CAAO,IAAK,OAAO,QAAQH,CAAQ,EAAG,CACrD,GAAI,CAACG,EAAS,SACd,IAAMC,EAAQ,IAAI,OAAO,IAAIF,EAAI,QAAQ,wBAAyB,MAAM,CAAC,WAAW,EACpFD,EAASA,EAAO,QAAQG,EAAO,KAAKD,CAAO,EAAE,CAC/C,CACA,OAAOF,CACT,CAEe,SAARZ,EAAkBO,EAAiE,CACxF,IAAMS,EAAaV,EAAcC,CAAY,EAE7C,MAAO,CACL,KAAM,uBACN,qBAAqBU,EAAM,CAjC/B,IAAAC,EAkCM,IAAMd,EAASa,EAAK,OACpB,GAAI,CAACb,EAAQ,OAAOa,EAEpB,IAAME,GAAWD,EAAAd,EAAO,QAAP,KAAAc,EAAgBd,EAAO,KAClCgB,EAAOD,EAAWZ,EAAaY,CAAQ,EAAI,OAC3CE,EACJD,GAAQ,OAAOA,GAAS,UAAY,UAAWA,GAAQ,OAAOA,EAAK,OAAU,SAAWA,EAAK,MAAQ,OACjGP,EAAMV,EAAYC,CAAM,EACxBkB,EAAUT,EAAMT,EAAOS,CAAG,EAAI,OAC9BU,EAAOF,GAAA,KAAAA,EAAkBC,EAAUb,EAAoBa,EAASN,CAAU,EAAI,OACpF,OAAIH,GAAOU,IAASF,IAAkB,QAAaE,IAASD,KAAUlB,EAAOS,CAAG,EAAIU,GAE7EN,CACT,CACF,CACF","names":["forceRemote_exports","__export","forceRemote_default","__toCommonJS","ENTRY_KEYS","getEntryKey","remote","k","getVersionMap","forceRemotes","v","changeCommonVersion","url","versions","result","key","version","regex","versionMap","args","_a","matchKey","item","entryOverride","current","next"]}
1
+ {"version":3,"sources":["../src/plugins/rspack/runtimePlugin/forceRemote.ts","../src/helper/config.ts"],"sourcesContent":["/**\n * 运行时插件:根据 window[EMP_FORCE_REMOTES] 配置,在注册 remote 前拦截并改写其 entry/url。\n * 支持两种方式二选一:指定完整 entry 地址,或仅指定 version 做 URL 内版本号替换。\n */\nimport {type ModuleFederationRuntimePlugin} from '@module-federation/runtime'\nimport {shareForceRemote} from 'src/helper/config'\nimport {type ForceRemoteItem, type ForceRemoteOptions, type RemoteInfoForForce} from '../types'\n\ndeclare global {\n interface Window {\n [shareForceRemote]?: ForceRemoteOptions\n }\n}\n\n/** remote 上可能表示入口地址的字段,按优先级 */\nconst REMOTE_ENTRY_FIELD_KEYS = ['entry', 'url', 'manifest'] as const\n\n/**\n * 取当前 remote 用于表示入口的字段名(entry / url / manifest 中第一个为字符串的)\n */\nfunction getRemoteEntryFieldKey(remote: RemoteInfoForForce): (typeof REMOTE_ENTRY_FIELD_KEYS)[number] | undefined {\n return REMOTE_ENTRY_FIELD_KEYS.find((k) => typeof remote[k] === 'string')\n}\n\nfunction hasEntryConfig(config: ForceRemoteItem): boolean {\n return typeof config === 'object' && config !== null && 'entry' in config && typeof (config as {entry?: string}).entry === 'string'\n}\n\nfunction getVersionFromConfig(config: ForceRemoteItem): string | undefined {\n if (typeof config === 'string') return config\n const v = (config as {version?: string})?.version\n return typeof v === 'string' ? v : undefined\n}\n\nfunction getEntryFromConfig(config: ForceRemoteItem | undefined): string | undefined {\n return config && hasEntryConfig(config) ? (config as {entry: string}).entry : undefined\n}\n\n/**\n * 从 forceRemotes 提取「仅 version」项的映射(有 entry 的项不参与,二选一)。\n */\nfunction buildVersionReplaceMap(forceRemotes: ForceRemoteOptions): Record<string, string> {\n return Object.fromEntries(\n Object.entries(forceRemotes).flatMap(([remoteKey, config]) => {\n if (hasEntryConfig(config)) return []\n const version = getVersionFromConfig(config)\n return version ? [[remoteKey, version]] : []\n }),\n )\n}\n\n/**\n * 在 URL 中按 versionMap 替换 common 版本号(匹配 `remoteKey@原版本` -> `remoteKey@新版本`)\n */\nfunction replaceUrlVersions(url: string, versionMap: Record<string, string>): string {\n if (!Object.keys(versionMap).length) return url\n let result = url\n for (const [remoteKey, version] of Object.entries(versionMap)) {\n if (!version) continue\n const regex = new RegExp(`(${remoteKey.replace(/[-/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&')}@)([^/]+)`)\n result = result.replace(regex, `$1${version}`)\n }\n return result\n}\n\nexport default function (): ModuleFederationRuntimePlugin {\n return {\n name: 'emp-remotes-replacer',\n beforeRegisterRemote(args) {\n const forceRemotes = typeof window !== 'undefined' ? window[shareForceRemote] : undefined\n if (!forceRemotes || typeof forceRemotes !== 'object') return args\n\n const remote = args.remote as unknown as RemoteInfoForForce\n if (!remote) return args\n\n const entryFieldKey = getRemoteEntryFieldKey(remote)\n if (!entryFieldKey) return args\n\n const currentEntryUrl = remote[entryFieldKey] as string | undefined\n const forceConfig = remote.alias ? forceRemotes[remote.alias] : undefined\n\n // 优先 version:有则替换并直接 return,不再走 entry\n const versionMap = buildVersionReplaceMap(forceRemotes)\n const versionedEntryUrl = currentEntryUrl ? replaceUrlVersions(currentEntryUrl, versionMap) : undefined\n if (versionedEntryUrl && versionedEntryUrl !== currentEntryUrl) {\n remote[entryFieldKey] = versionedEntryUrl\n return args\n }\n\n // 否则判断 entry:有则改写并 return\n const forcedEntryUrl = getEntryFromConfig(forceConfig)\n if (forcedEntryUrl) {\n remote[entryFieldKey] = forcedEntryUrl\n return args\n }\n\n return args\n },\n }\n}\n","export const shareGlobalName = 'EMP_SHARE_RUNTIME'\nexport const shareGlobalVal = 'EMPShareGlobalVal'\nexport const shareForceRemote = 'EMP_FORCE_REMOTES'\n"],"mappings":"yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,aAAAE,IAAA,eAAAC,EAAAH,GCEO,IAAMI,EAAmB,oBDahC,IAAMC,EAA0B,CAAC,QAAS,MAAO,UAAU,EAK3D,SAASC,EAAuBC,EAAkF,CAChH,OAAOF,EAAwB,KAAMG,GAAM,OAAOD,EAAOC,CAAC,GAAM,QAAQ,CAC1E,CAEA,SAASC,EAAeC,EAAkC,CACxD,OAAO,OAAOA,GAAW,UAAYA,IAAW,MAAQ,UAAWA,GAAU,OAAQA,EAA4B,OAAU,QAC7H,CAEA,SAASC,EAAqBD,EAA6C,CACzE,GAAI,OAAOA,GAAW,SAAU,OAAOA,EACvC,IAAME,EAAKF,GAAA,YAAAA,EAA+B,QAC1C,OAAO,OAAOE,GAAM,SAAWA,EAAI,MACrC,CAEA,SAASC,EAAmBH,EAAyD,CACnF,OAAOA,GAAUD,EAAeC,CAAM,EAAKA,EAA2B,MAAQ,MAChF,CAKA,SAASI,EAAuBC,EAA0D,CACxF,OAAO,OAAO,YACZ,OAAO,QAAQA,CAAY,EAAE,QAAQ,CAAC,CAACC,EAAWN,CAAM,IAAM,CAC5D,GAAID,EAAeC,CAAM,EAAG,MAAO,CAAC,EACpC,IAAMO,EAAUN,EAAqBD,CAAM,EAC3C,OAAOO,EAAU,CAAC,CAACD,EAAWC,CAAO,CAAC,EAAI,CAAC,CAC7C,CAAC,CACH,CACF,CAKA,SAASC,EAAmBC,EAAaC,EAA4C,CACnF,GAAI,CAAC,OAAO,KAAKA,CAAU,EAAE,OAAQ,OAAOD,EAC5C,IAAIE,EAASF,EACb,OAAW,CAACH,EAAWC,CAAO,IAAK,OAAO,QAAQG,CAAU,EAAG,CAC7D,GAAI,CAACH,EAAS,SACd,IAAMK,EAAQ,IAAI,OAAO,IAAIN,EAAU,QAAQ,wBAAyB,MAAM,CAAC,WAAW,EAC1FK,EAASA,EAAO,QAAQC,EAAO,KAAKL,CAAO,EAAE,CAC/C,CACA,OAAOI,CACT,CAEe,SAARE,GAAmD,CACxD,MAAO,CACL,KAAM,uBACN,qBAAqBC,EAAM,CACzB,IAAMT,EAAe,OAAO,QAAW,YAAc,OAAOU,CAAgB,EAAI,OAChF,GAAI,CAACV,GAAgB,OAAOA,GAAiB,SAAU,OAAOS,EAE9D,IAAMjB,EAASiB,EAAK,OACpB,GAAI,CAACjB,EAAQ,OAAOiB,EAEpB,IAAME,EAAgBpB,EAAuBC,CAAM,EACnD,GAAI,CAACmB,EAAe,OAAOF,EAE3B,IAAMG,EAAkBpB,EAAOmB,CAAa,EACtCE,EAAcrB,EAAO,MAAQQ,EAAaR,EAAO,KAAK,EAAI,OAG1Da,EAAaN,EAAuBC,CAAY,EAChDc,EAAoBF,EAAkBT,EAAmBS,EAAiBP,CAAU,EAAI,OAC9F,GAAIS,GAAqBA,IAAsBF,EAC7C,OAAApB,EAAOmB,CAAa,EAAIG,EACjBL,EAIT,IAAMM,EAAiBjB,EAAmBe,CAAW,EACrD,OAAIE,IACFvB,EAAOmB,CAAa,EAAII,GACjBN,CAIX,CACF,CACF","names":["forceRemote_exports","__export","forceRemote_default","__toCommonJS","shareForceRemote","REMOTE_ENTRY_FIELD_KEYS","getRemoteEntryFieldKey","remote","k","hasEntryConfig","config","getVersionFromConfig","v","getEntryFromConfig","buildVersionReplaceMap","forceRemotes","remoteKey","version","replaceUrlVersions","url","versionMap","result","regex","forceRemote_default","args","shareForceRemote","entryFieldKey","currentEntryUrl","forceConfig","versionedEntryUrl","forcedEntryUrl"]}
@@ -2,6 +2,18 @@ import { ModuleFederationRuntimePlugin } from '@module-federation/runtime';
2
2
  import { g as ForceRemoteOptions } from './types-BGnQUQ0O.cjs';
3
3
  import '@empjs/module-federation-rspack';
4
4
 
5
- declare function export_default(forceRemotes: ForceRemoteOptions): ModuleFederationRuntimePlugin;
5
+ declare const shareForceRemote = "EMP_FORCE_REMOTES";
6
+
7
+ /**
8
+ * 运行时插件:根据 window[EMP_FORCE_REMOTES] 配置,在注册 remote 前拦截并改写其 entry/url。
9
+ * 支持两种方式二选一:指定完整 entry 地址,或仅指定 version 做 URL 内版本号替换。
10
+ */
11
+
12
+ declare global {
13
+ interface Window {
14
+ [shareForceRemote]?: ForceRemoteOptions;
15
+ }
16
+ }
17
+ declare function export_default(): ModuleFederationRuntimePlugin;
6
18
 
7
19
  export { export_default as default };
@@ -2,6 +2,18 @@ import { ModuleFederationRuntimePlugin } from '@module-federation/runtime';
2
2
  import { g as ForceRemoteOptions } from './types-BGnQUQ0O.js';
3
3
  import '@empjs/module-federation-rspack';
4
4
 
5
- declare function export_default(forceRemotes: ForceRemoteOptions): ModuleFederationRuntimePlugin;
5
+ declare const shareForceRemote = "EMP_FORCE_REMOTES";
6
+
7
+ /**
8
+ * 运行时插件:根据 window[EMP_FORCE_REMOTES] 配置,在注册 remote 前拦截并改写其 entry/url。
9
+ * 支持两种方式二选一:指定完整 entry 地址,或仅指定 version 做 URL 内版本号替换。
10
+ */
11
+
12
+ declare global {
13
+ interface Window {
14
+ [shareForceRemote]?: ForceRemoteOptions;
15
+ }
16
+ }
17
+ declare function export_default(): ModuleFederationRuntimePlugin;
6
18
 
7
19
  export { export_default as default };
@@ -1,2 +1,2 @@
1
- var p=["entry","url","manifest"];function a(n){return p.find(t=>typeof n[t]=="string")}function g(n){return Object.fromEntries(Object.entries(n).flatMap(([t,e])=>typeof e=="string"?[[t,e]]:typeof(e==null?void 0:e.version)=="string"?[[t,e.version]]:[]))}function d(n,t){if(!Object.keys(t).length)return n;let e=n;for(let[o,i]of Object.entries(t)){if(!i)continue;let r=new RegExp(`(${o.replace(/[-/\\^$*+?.()|[\]{}]/g,"\\$&")}@)([^/]+)`);e=e.replace(r,`$1${i}`)}return e}function y(n){let t=g(n);return{name:"emp-remotes-replacer",beforeRegisterRemote(e){var m;let o=e.remote;if(!o)return e;let i=(m=o.alias)!=null?m:o.name,r=i?n[i]:void 0,s=r&&typeof r=="object"&&"entry"in r&&typeof r.entry=="string"?r.entry:void 0,c=a(o),f=c?o[c]:void 0,u=s!=null?s:f?d(f,t):void 0;return c&&u&&(s!==void 0||u!==f)&&(o[c]=u),e}}}export{y as default};
1
+ var c="EMP_FORCE_REMOTES";var d=["entry","url","manifest"];function l(e){return d.find(t=>typeof e[t]=="string")}function f(e){return typeof e=="object"&&e!==null&&"entry"in e&&typeof e.entry=="string"}function a(e){if(typeof e=="string")return e;let t=e==null?void 0:e.version;return typeof t=="string"?t:void 0}function p(e){return e&&f(e)?e.entry:void 0}function R(e){return Object.fromEntries(Object.entries(e).flatMap(([t,n])=>{if(f(n))return[];let r=a(n);return r?[[t,r]]:[]}))}function y(e,t){if(!Object.keys(t).length)return e;let n=e;for(let[r,o]of Object.entries(t)){if(!o)continue;let i=new RegExp(`(${r.replace(/[-/\\^$*+?.()|[\]{}]/g,"\\$&")}@)([^/]+)`);n=n.replace(i,`$1${o}`)}return n}function b(){return{name:"emp-remotes-replacer",beforeRegisterRemote(e){let t=typeof window!="undefined"?window[c]:void 0;if(!t||typeof t!="object")return e;let n=e.remote;if(!n)return e;let r=l(n);if(!r)return e;let o=n[r],i=n.alias?t[n.alias]:void 0,m=R(t),s=o?y(o,m):void 0;if(s&&s!==o)return n[r]=s,e;let u=p(i);return u&&(n[r]=u),e}}}export{b as default};
2
2
  //# sourceMappingURL=forceRemote.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/plugins/rspack/runtimePlugin/forceRemote.ts"],"sourcesContent":["import {type ModuleFederationRuntimePlugin} from '@module-federation/runtime'\nimport {ForceRemoteOptions, type RemoteInfoForForce} from '../types'\n\nconst ENTRY_KEYS = ['entry', 'url', 'manifest'] as const\n\nfunction getEntryKey(remote: RemoteInfoForForce): (typeof ENTRY_KEYS)[number] | undefined {\n return ENTRY_KEYS.find((k) => typeof remote[k] === 'string')\n}\n\nfunction getVersionMap(forceRemotes: ForceRemoteOptions): Record<string, string> {\n return Object.fromEntries(\n Object.entries(forceRemotes).flatMap(([k, v]) =>\n typeof v === 'string' ? [[k, v]] : typeof (v as {version?: string})?.version === 'string' ? [[k, (v as {version: string}).version]] : [],\n ),\n )\n}\n\nfunction changeCommonVersion(url: string, versions: Record<string, string>): string {\n if (!Object.keys(versions).length) return url\n let result = url\n for (const [key, version] of Object.entries(versions)) {\n if (!version) continue\n const regex = new RegExp(`(${key.replace(/[-/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&')}@)([^/]+)`)\n result = result.replace(regex, `$1${version}`)\n }\n return result\n}\n\nexport default function (forceRemotes: ForceRemoteOptions): ModuleFederationRuntimePlugin {\n const versionMap = getVersionMap(forceRemotes)\n\n return {\n name: 'emp-remotes-replacer',\n beforeRegisterRemote(args) {\n const remote = args.remote as unknown as RemoteInfoForForce\n if (!remote) return args\n\n const matchKey = remote.alias ?? remote.name\n const item = matchKey ? forceRemotes[matchKey] : undefined\n const entryOverride =\n item && typeof item === 'object' && 'entry' in item && typeof item.entry === 'string' ? item.entry : undefined\n const key = getEntryKey(remote)\n const current = key ? remote[key] : undefined\n const next = entryOverride ?? (current ? changeCommonVersion(current, versionMap) : undefined)\n if (key && next && (entryOverride !== undefined || next !== current)) remote[key] = next\n\n return args\n },\n }\n}\n"],"mappings":"AAGA,IAAMA,EAAa,CAAC,QAAS,MAAO,UAAU,EAE9C,SAASC,EAAYC,EAAqE,CACxF,OAAOF,EAAW,KAAMG,GAAM,OAAOD,EAAOC,CAAC,GAAM,QAAQ,CAC7D,CAEA,SAASC,EAAcC,EAA0D,CAC/E,OAAO,OAAO,YACZ,OAAO,QAAQA,CAAY,EAAE,QAAQ,CAAC,CAACF,EAAGG,CAAC,IACzC,OAAOA,GAAM,SAAW,CAAC,CAACH,EAAGG,CAAC,CAAC,EAAI,OAAQA,GAAA,YAAAA,EAA0B,UAAY,SAAW,CAAC,CAACH,EAAIG,EAAwB,OAAO,CAAC,EAAI,CAAC,CACzI,CACF,CACF,CAEA,SAASC,EAAoBC,EAAaC,EAA0C,CAClF,GAAI,CAAC,OAAO,KAAKA,CAAQ,EAAE,OAAQ,OAAOD,EAC1C,IAAIE,EAASF,EACb,OAAW,CAACG,EAAKC,CAAO,IAAK,OAAO,QAAQH,CAAQ,EAAG,CACrD,GAAI,CAACG,EAAS,SACd,IAAMC,EAAQ,IAAI,OAAO,IAAIF,EAAI,QAAQ,wBAAyB,MAAM,CAAC,WAAW,EACpFD,EAASA,EAAO,QAAQG,EAAO,KAAKD,CAAO,EAAE,CAC/C,CACA,OAAOF,CACT,CAEe,SAARI,EAAkBT,EAAiE,CACxF,IAAMU,EAAaX,EAAcC,CAAY,EAE7C,MAAO,CACL,KAAM,uBACN,qBAAqBW,EAAM,CAjC/B,IAAAC,EAkCM,IAAMf,EAASc,EAAK,OACpB,GAAI,CAACd,EAAQ,OAAOc,EAEpB,IAAME,GAAWD,EAAAf,EAAO,QAAP,KAAAe,EAAgBf,EAAO,KAClCiB,EAAOD,EAAWb,EAAaa,CAAQ,EAAI,OAC3CE,EACJD,GAAQ,OAAOA,GAAS,UAAY,UAAWA,GAAQ,OAAOA,EAAK,OAAU,SAAWA,EAAK,MAAQ,OACjGR,EAAMV,EAAYC,CAAM,EACxBmB,EAAUV,EAAMT,EAAOS,CAAG,EAAI,OAC9BW,EAAOF,GAAA,KAAAA,EAAkBC,EAAUd,EAAoBc,EAASN,CAAU,EAAI,OACpF,OAAIJ,GAAOW,IAASF,IAAkB,QAAaE,IAASD,KAAUnB,EAAOS,CAAG,EAAIW,GAE7EN,CACT,CACF,CACF","names":["ENTRY_KEYS","getEntryKey","remote","k","getVersionMap","forceRemotes","v","changeCommonVersion","url","versions","result","key","version","regex","forceRemote_default","versionMap","args","_a","matchKey","item","entryOverride","current","next"]}
1
+ {"version":3,"sources":["../src/helper/config.ts","../src/plugins/rspack/runtimePlugin/forceRemote.ts"],"sourcesContent":["export const shareGlobalName = 'EMP_SHARE_RUNTIME'\nexport const shareGlobalVal = 'EMPShareGlobalVal'\nexport const shareForceRemote = 'EMP_FORCE_REMOTES'\n","/**\n * 运行时插件:根据 window[EMP_FORCE_REMOTES] 配置,在注册 remote 前拦截并改写其 entry/url。\n * 支持两种方式二选一:指定完整 entry 地址,或仅指定 version 做 URL 内版本号替换。\n */\nimport {type ModuleFederationRuntimePlugin} from '@module-federation/runtime'\nimport {shareForceRemote} from 'src/helper/config'\nimport {type ForceRemoteItem, type ForceRemoteOptions, type RemoteInfoForForce} from '../types'\n\ndeclare global {\n interface Window {\n [shareForceRemote]?: ForceRemoteOptions\n }\n}\n\n/** remote 上可能表示入口地址的字段,按优先级 */\nconst REMOTE_ENTRY_FIELD_KEYS = ['entry', 'url', 'manifest'] as const\n\n/**\n * 取当前 remote 用于表示入口的字段名(entry / url / manifest 中第一个为字符串的)\n */\nfunction getRemoteEntryFieldKey(remote: RemoteInfoForForce): (typeof REMOTE_ENTRY_FIELD_KEYS)[number] | undefined {\n return REMOTE_ENTRY_FIELD_KEYS.find((k) => typeof remote[k] === 'string')\n}\n\nfunction hasEntryConfig(config: ForceRemoteItem): boolean {\n return typeof config === 'object' && config !== null && 'entry' in config && typeof (config as {entry?: string}).entry === 'string'\n}\n\nfunction getVersionFromConfig(config: ForceRemoteItem): string | undefined {\n if (typeof config === 'string') return config\n const v = (config as {version?: string})?.version\n return typeof v === 'string' ? v : undefined\n}\n\nfunction getEntryFromConfig(config: ForceRemoteItem | undefined): string | undefined {\n return config && hasEntryConfig(config) ? (config as {entry: string}).entry : undefined\n}\n\n/**\n * 从 forceRemotes 提取「仅 version」项的映射(有 entry 的项不参与,二选一)。\n */\nfunction buildVersionReplaceMap(forceRemotes: ForceRemoteOptions): Record<string, string> {\n return Object.fromEntries(\n Object.entries(forceRemotes).flatMap(([remoteKey, config]) => {\n if (hasEntryConfig(config)) return []\n const version = getVersionFromConfig(config)\n return version ? [[remoteKey, version]] : []\n }),\n )\n}\n\n/**\n * 在 URL 中按 versionMap 替换 common 版本号(匹配 `remoteKey@原版本` -> `remoteKey@新版本`)\n */\nfunction replaceUrlVersions(url: string, versionMap: Record<string, string>): string {\n if (!Object.keys(versionMap).length) return url\n let result = url\n for (const [remoteKey, version] of Object.entries(versionMap)) {\n if (!version) continue\n const regex = new RegExp(`(${remoteKey.replace(/[-/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&')}@)([^/]+)`)\n result = result.replace(regex, `$1${version}`)\n }\n return result\n}\n\nexport default function (): ModuleFederationRuntimePlugin {\n return {\n name: 'emp-remotes-replacer',\n beforeRegisterRemote(args) {\n const forceRemotes = typeof window !== 'undefined' ? window[shareForceRemote] : undefined\n if (!forceRemotes || typeof forceRemotes !== 'object') return args\n\n const remote = args.remote as unknown as RemoteInfoForForce\n if (!remote) return args\n\n const entryFieldKey = getRemoteEntryFieldKey(remote)\n if (!entryFieldKey) return args\n\n const currentEntryUrl = remote[entryFieldKey] as string | undefined\n const forceConfig = remote.alias ? forceRemotes[remote.alias] : undefined\n\n // 优先 version:有则替换并直接 return,不再走 entry\n const versionMap = buildVersionReplaceMap(forceRemotes)\n const versionedEntryUrl = currentEntryUrl ? replaceUrlVersions(currentEntryUrl, versionMap) : undefined\n if (versionedEntryUrl && versionedEntryUrl !== currentEntryUrl) {\n remote[entryFieldKey] = versionedEntryUrl\n return args\n }\n\n // 否则判断 entry:有则改写并 return\n const forcedEntryUrl = getEntryFromConfig(forceConfig)\n if (forcedEntryUrl) {\n remote[entryFieldKey] = forcedEntryUrl\n return args\n }\n\n return args\n },\n }\n}\n"],"mappings":"AAEO,IAAMA,EAAmB,oBCahC,IAAMC,EAA0B,CAAC,QAAS,MAAO,UAAU,EAK3D,SAASC,EAAuBC,EAAkF,CAChH,OAAOF,EAAwB,KAAMG,GAAM,OAAOD,EAAOC,CAAC,GAAM,QAAQ,CAC1E,CAEA,SAASC,EAAeC,EAAkC,CACxD,OAAO,OAAOA,GAAW,UAAYA,IAAW,MAAQ,UAAWA,GAAU,OAAQA,EAA4B,OAAU,QAC7H,CAEA,SAASC,EAAqBD,EAA6C,CACzE,GAAI,OAAOA,GAAW,SAAU,OAAOA,EACvC,IAAME,EAAKF,GAAA,YAAAA,EAA+B,QAC1C,OAAO,OAAOE,GAAM,SAAWA,EAAI,MACrC,CAEA,SAASC,EAAmBH,EAAyD,CACnF,OAAOA,GAAUD,EAAeC,CAAM,EAAKA,EAA2B,MAAQ,MAChF,CAKA,SAASI,EAAuBC,EAA0D,CACxF,OAAO,OAAO,YACZ,OAAO,QAAQA,CAAY,EAAE,QAAQ,CAAC,CAACC,EAAWN,CAAM,IAAM,CAC5D,GAAID,EAAeC,CAAM,EAAG,MAAO,CAAC,EACpC,IAAMO,EAAUN,EAAqBD,CAAM,EAC3C,OAAOO,EAAU,CAAC,CAACD,EAAWC,CAAO,CAAC,EAAI,CAAC,CAC7C,CAAC,CACH,CACF,CAKA,SAASC,EAAmBC,EAAaC,EAA4C,CACnF,GAAI,CAAC,OAAO,KAAKA,CAAU,EAAE,OAAQ,OAAOD,EAC5C,IAAIE,EAASF,EACb,OAAW,CAACH,EAAWC,CAAO,IAAK,OAAO,QAAQG,CAAU,EAAG,CAC7D,GAAI,CAACH,EAAS,SACd,IAAMK,EAAQ,IAAI,OAAO,IAAIN,EAAU,QAAQ,wBAAyB,MAAM,CAAC,WAAW,EAC1FK,EAASA,EAAO,QAAQC,EAAO,KAAKL,CAAO,EAAE,CAC/C,CACA,OAAOI,CACT,CAEe,SAARE,GAAmD,CACxD,MAAO,CACL,KAAM,uBACN,qBAAqBC,EAAM,CACzB,IAAMT,EAAe,OAAO,QAAW,YAAc,OAAOU,CAAgB,EAAI,OAChF,GAAI,CAACV,GAAgB,OAAOA,GAAiB,SAAU,OAAOS,EAE9D,IAAMjB,EAASiB,EAAK,OACpB,GAAI,CAACjB,EAAQ,OAAOiB,EAEpB,IAAME,EAAgBpB,EAAuBC,CAAM,EACnD,GAAI,CAACmB,EAAe,OAAOF,EAE3B,IAAMG,EAAkBpB,EAAOmB,CAAa,EACtCE,EAAcrB,EAAO,MAAQQ,EAAaR,EAAO,KAAK,EAAI,OAG1Da,EAAaN,EAAuBC,CAAY,EAChDc,EAAoBF,EAAkBT,EAAmBS,EAAiBP,CAAU,EAAI,OAC9F,GAAIS,GAAqBA,IAAsBF,EAC7C,OAAApB,EAAOmB,CAAa,EAAIG,EACjBL,EAIT,IAAMM,EAAiBjB,EAAmBe,CAAW,EACrD,OAAIE,IACFvB,EAAOmB,CAAa,EAAII,GACjBN,CAIX,CACF,CACF","names":["shareForceRemote","REMOTE_ENTRY_FIELD_KEYS","getRemoteEntryFieldKey","remote","k","hasEntryConfig","config","getVersionFromConfig","v","getEntryFromConfig","buildVersionReplaceMap","forceRemotes","remoteKey","version","replaceUrlVersions","url","versionMap","result","regex","forceRemote_default","args","shareForceRemote","entryFieldKey","currentEntryUrl","forceConfig","versionedEntryUrl","forcedEntryUrl"]}
package/dist/index.cjs CHANGED
@@ -1,3 +1,3 @@
1
- "use strict";var N=Object.create;var c=Object.defineProperty;var w=Object.getOwnPropertyDescriptor;var H=Object.getOwnPropertyNames,g=Object.getOwnPropertySymbols,$=Object.getPrototypeOf,R=Object.prototype.hasOwnProperty,F=Object.prototype.propertyIsEnumerable;var h=(i,e,t)=>e in i?c(i,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):i[e]=t,j=(i,e)=>{for(var t in e||(e={}))R.call(e,t)&&h(i,t,e[t]);if(g)for(var t of g(e))F.call(e,t)&&h(i,t,e[t]);return i};var G=(i,e)=>{for(var t in e)c(i,t,{get:e[t],enumerable:!0})},k=(i,e,t,s)=>{if(e&&typeof e=="object"||typeof e=="function")for(let n of H(e))!R.call(i,n)&&n!==t&&c(i,n,{get:()=>e[n],enumerable:!(s=w(e,n))||s.enumerable});return i};var A=(i,e,t)=>(t=i!=null?N($(i)):{},k(e||!i||!i.__esModule?c(t,"default",{value:i,enumerable:!0}):t,i)),_=i=>k(c({},"__esModule",{value:!0}),i);var l=(i,e,t)=>h(i,typeof e!="symbol"?e+"":e,t);var d=(i,e,t)=>new Promise((s,n)=>{var o=m=>{try{a(t.next(m))}catch(p){n(p)}},r=m=>{try{a(t.throw(m))}catch(p){n(p)}},a=m=>m.done?s(m.value):Promise.resolve(m.value).then(o,r);a((t=t.apply(i,e)).next())});var J={};G(J,{default:()=>I,externalReact:()=>D,externalVue:()=>q,pluginRspackEmpShare:()=>L});module.exports=_(J);var O=A(require("path"),1);var x=i=>`data:text/javascript,${i}`;function b(i,...e){for(let t of e)for(let s in t){let n=t[s],o=i[s];if(Object(n)==n&&Object(o)===o){i[s]=b(o,n);continue}i[s]=t[s]}return i}var C=!1,z=C?console.log.bind(console,"[EMP Share]"):()=>{};var E="EMP_SHARE_RUNTIME";var y=require("@empjs/module-federation-rspack");var V=i=>{let e=[`import '${i}'`].join(`
2
- `);return x(e)},u=class{constructor(e){l(this,"options");this.options=e}apply(e){let{webpack:t}=e,s=V("@empjs/share/library");new t.EntryPlugin(e.context,s,{name:void 0}).apply(e)}};var S=(i,e)=>{Object.keys(e).length>0&&i.injectTags([{innerHTML:`window.EMP_FORCE_REMOTES = ${JSON.stringify(e)};`,tagName:"script",pos:"head"}],"EMP_FORCE_REMOTES")};function M(i,e,t="runtime"){return typeof i=="string"?t==="runtime"?`${i}/runtime${e==="development"?".development":""}.umd.js`:`${i}/${t}.${e}.umd.js`:typeof i=="object"?e==="development"?i.dev:i.prod:""}var P=/^([0-9a-zA-Z_\s]+)@(.*)/,f=class{constructor(e,t){l(this,"op");l(this,"store");l(this,"injectHtml",[]);l(this,"externalsLib",[]);l(this,"fk");l(this,"rt");this.op=e||{},this.store=t}setup(){this.resetRuntime(),this.resetFramework(),this.setMfName(),this.setMF(),this.injectGlobalVal(),this.injectFramework(),this.setShareLib(),this.setRuntimeLib(),this.injectToHtml(),this.setExternal()}injectToHtml(){let{store:e,injectHtml:t}=this;t.length>0&&e.injectTags(t,"EMPShare")}injectFramework(){if(this.fk&&this.fk.libs.length>0)return this.injectFkLibs(this.fk.libs);if(!this.op.empRuntime||!this.fk.lib)return;let{store:e,injectHtml:t}=this;if(this.fk.lib){let s=M(this.fk.lib,e.mode,this.fk.entry);t.push({attributes:{src:s},tagName:"script"})}}injectFkLibs(e){e.map(t=>{if(t.endsWith(".css"))return this.injectHtml.push({attributes:{href:t,rel:"stylesheet"},tagName:"link"});this.injectHtml.push({attributes:{src:t},tagName:"script"})})}injectGlobalVal(){if(!this.op.empRuntime)return;let{empRuntime:e}=this.op,{injectHtml:t}=this,s=this.fk.global||(e.shareLib?"window":"");if(!(e.injectGlobalValToHtml===!1||!this.rt.lib)){let o={frameworkLib:s,runtimeLib:this.rt.global};this.fk.name&&this.fk.name!=="none"&&(o.framework=this.fk.name),t.push({tagName:"script",innerHTML:`EMPShareGlobalVal=${JSON.stringify(o)}`})}}resetFramework(){if(!this.op.empRuntime)return;let{framework:e,frameworkGlobal:t,frameworkLib:s}=this.op.empRuntime;this.fk={name:"none",version:0,entry:"",global:t||"",lib:s||"",libs:[]},typeof e=="string"?this.fk.name=e:typeof e=="object"&&Object.keys(e).length>0&&(e.entry=e.entry?e.entry:e.name,this.fk=b(this.fk,e))}resetRuntime(){var n;let{empRuntime:e}=this.op;if(!e)return;let t=e.runtimeGlobal||E,s=e.runtimeLib?e.runtimeLib:(n=e.runtime)!=null&&n.lib?e.runtime.lib:"";this.rt={lib:s,global:t}}setExternal(){if(!this.op.empRuntime)return;let{store:e,externalsLib:t}=this,{empRuntime:s}=this.op,{shareLib:n}=s,o=this.rt.lib?{"@module-federation/runtime":"MFRuntime","@module-federation/sdk":"MFSDK"}:{},r={};for(let[a,m]of Object.entries(o))r[a]=`${this.rt.global}.${m}`;if(this.fk.name==="react"&&!n&&this.fk.global){let a=this.fk.version,m={react:"React","react-dom":"ReactDOM"};this.fk.entry==="reactRouter"&&(m["react-router-dom"]="ReactRouterDOM");for(let[p,v]of Object.entries(m))r[p]=`${this.fk.global}.${v}`;[17,18,19].includes(a)&&(r["react-dom/client"]=this.fk.global,r["react/jsx-runtime"]=this.fk.global,r["react/jsx-dev-runtime"]=this.fk.global)}n&&t.map(a=>{a.type==="js"&&a.module&&a.global&&(r[a.module]=`${this.fk.global}.${a.global}`)}),s.setExternals&&s.setExternals(r,this.fk.global,this.rt.global),e.chain.merge({externals:r})}setRuntimeLib(){if(!this.op.empRuntime)return;let{shareLib:e}=this.op.empRuntime,{store:t,injectHtml:s}=this,{empRuntime:n}=this.op;this.rt.lib?this.rt.lib==="useFrameworkLib"&&!e||s.push({tagName:"script",pos:"head",attributes:{src:this.rt.lib}}):t.chain.plugin("plugin-emp-share-framework").use(u,[n])}setMfName(){this.op.name?(this.op.name=this.store.encodeVarName(this.op.name),this.op.name!==this.store.empConfig.output.uniqueName&&this.store.chain.output.set("uniqueName",this.op.name)):this.op.name=this.store.empConfig.output.uniqueName}setMF(){var s;let e=this.op,{store:t}=this;if(e.name){let n=t.deepAssign({filename:"emp.js"},e);if(n.empRuntime&&delete n.empRuntime,e.forceRemotes){let o=j({},e.forceRemotes);S(t,e.forceRemotes),delete e.forceRemotes,(s=n.runtimePlugins)==null||s.push([require.resolve(O.default.join(__dirname,"forceRemote")),o])}t.chain.plugin("plugin-emp-share").use(y.ModuleFederationPlugin,[n])}}setShareLib(){if(!this.op.empRuntime)return;let{shareLib:e}=this.op.empRuntime,{externalsLib:t,injectHtml:s}=this;if(e&&typeof e=="object"){for(let[n,o]of Object.entries(e)){let r={};if(r.module=n,typeof o=="string"){let a=o.match(P)||[];a.length>0?(r.global=a[1],r.entry=a[2],r.type="js",t.push(r),r={}):(r.global="",r.entry=o,r.type="js",t.push(r),r={})}else Array.isArray(o)?o.map(a=>{if(!a)return;if(a.split("?")[0].endsWith(".css"))r.entry=a,r.type="css";else{let p=a.match(P)||[];p.length>0?(r.global=p[1],r.entry=p[2],r.type="js"):(r.global="",r.entry=a,r.type="js")}t.push(r),r={}}):typeof o=="object"&&o.entry&&(r.entry=o.entry,r.global=o.global,r.type=o.type,t.push(r),r={})}t.map(n=>{n.type==="js"?s.push({attributes:{src:n.entry},tagName:"script"}):n.type==="css"&&s.push({attributes:{href:n.entry,rel:"stylesheet"},tagName:"link"})})}}};var D=(i,e)=>(i=Object.assign(i,{react:`${e}.React`,"react-dom":`${e}.ReactDOM`,"react-dom/client":e,"react/jsx-runtime":e,"react/jsx-dev-runtime":e,"react-router-dom":`${e}.ReactRouterDOM`}),i);var q=(i,e)=>(i=Object.assign(i,{vue:`${e}.Vue`,"vue-router":`${e}.VueRouter`}),i);var L=(i={})=>({name:"@empjs/share",rsConfig(t){return d(this,null,function*(){i.manifest===!0?i.manifest={fileName:"emp.json"}:typeof i.manifest=="object"&&(i.manifest=t.deepAssign({fileName:"emp.json"},i.manifest)),new f(i,t).setup()})}}),T=L;var I=T;0&&(module.exports={externalReact,externalVue,pluginRspackEmpShare});
1
+ "use strict";var L=Object.create;var c=Object.defineProperty;var T=Object.getOwnPropertyDescriptor;var v=Object.getOwnPropertyNames;var w=Object.getPrototypeOf,N=Object.prototype.hasOwnProperty;var H=(i,e,t)=>e in i?c(i,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):i[e]=t;var $=(i,e)=>{for(var t in e)c(i,t,{get:e[t],enumerable:!0})},y=(i,e,t,s)=>{if(e&&typeof e=="object"||typeof e=="function")for(let n of v(e))!N.call(i,n)&&n!==t&&c(i,n,{get:()=>e[n],enumerable:!(s=T(e,n))||s.enumerable});return i};var F=(i,e,t)=>(t=i!=null?L(w(i)):{},y(e||!i||!i.__esModule?c(t,"default",{value:i,enumerable:!0}):t,i)),G=i=>y(c({},"__esModule",{value:!0}),i);var l=(i,e,t)=>H(i,typeof e!="symbol"?e+"":e,t);var g=(i,e,t)=>new Promise((s,n)=>{var a=m=>{try{o(t.next(m))}catch(p){n(p)}},r=m=>{try{o(t.throw(m))}catch(p){n(p)}},o=m=>m.done?s(m.value):Promise.resolve(m.value).then(a,r);o((t=t.apply(i,e)).next())});var q={};$(q,{default:()=>D,externalReact:()=>C,externalVue:()=>_,pluginRspackEmpShare:()=>M});module.exports=G(q);var R=i=>`data:text/javascript,${i}`;function h(i,...e){for(let t of e)for(let s in t){let n=t[s],a=i[s];if(Object(n)==n&&Object(a)===a){i[s]=h(a,n);continue}i[s]=t[s]}return i}var A=!1,J=A?console.log.bind(console,"[EMP Share]"):()=>{};var j="EMP_SHARE_RUNTIME",k="EMPShareGlobalVal",d="EMP_FORCE_REMOTES";var b=require("@empjs/module-federation-rspack");var V=i=>{let e=[`import '${i}'`].join(`
2
+ `);return R(e)},u=class{constructor(e){l(this,"options");this.options=e}apply(e){let{webpack:t}=e,s=V("@empjs/share/library");new t.EntryPlugin(e.context,s,{name:void 0}).apply(e)}};var x=(i,e)=>{Object.keys(e).length>0&&i.injectTags([{innerHTML:`window.${d} = ${JSON.stringify(e)};`,tagName:"script",pos:"head"}],"EMP_FORCE_REMOTES")};function E(i,e,t="runtime"){return typeof i=="string"?t==="runtime"?`${i}/runtime${e==="development"?".development":""}.umd.js`:`${i}/${t}.${e}.umd.js`:typeof i=="object"?e==="development"?i.dev:i.prod:""}var S=/^([0-9a-zA-Z_\s]+)@(.*)/,f=class{constructor(e,t){l(this,"op");l(this,"store");l(this,"injectHtml",[]);l(this,"externalsLib",[]);l(this,"fk");l(this,"rt");this.op=e||{},this.store=t}setup(){this.resetRuntime(),this.resetFramework(),this.setMfName(),this.setMF(),this.injectGlobalVal(),this.injectFramework(),this.setShareLib(),this.setRuntimeLib(),this.injectToHtml(),this.setExternal()}injectToHtml(){let{store:e,injectHtml:t}=this;t.length>0&&e.injectTags(t,"EMPShare")}injectFramework(){if(this.fk&&this.fk.libs.length>0)return this.injectFkLibs(this.fk.libs);if(!this.op.empRuntime||!this.fk.lib)return;let{store:e,injectHtml:t}=this;if(this.fk.lib){let s=E(this.fk.lib,e.mode,this.fk.entry);t.push({attributes:{src:s},tagName:"script"})}}injectFkLibs(e){e.map(t=>{if(t.endsWith(".css"))return this.injectHtml.push({attributes:{href:t,rel:"stylesheet"},tagName:"link"});this.injectHtml.push({attributes:{src:t},tagName:"script"})})}injectGlobalVal(){if(!this.op.empRuntime)return;let{empRuntime:e}=this.op,{injectHtml:t}=this,s=this.fk.global||(e.shareLib?"window":"");if(!(e.injectGlobalValToHtml===!1||!this.rt.lib)){let a={frameworkLib:s,runtimeLib:this.rt.global};this.fk.name&&this.fk.name!=="none"&&(a.framework=this.fk.name),t.push({tagName:"script",innerHTML:`window.${k}=${JSON.stringify(a)}`})}}resetFramework(){if(!this.op.empRuntime)return;let{framework:e,frameworkGlobal:t,frameworkLib:s}=this.op.empRuntime;this.fk={name:"none",version:0,entry:"",global:t||"",lib:s||"",libs:[]},typeof e=="string"?this.fk.name=e:typeof e=="object"&&Object.keys(e).length>0&&(e.entry=e.entry?e.entry:e.name,this.fk=h(this.fk,e))}resetRuntime(){var n;let{empRuntime:e}=this.op;if(!e)return;let t=e.runtimeGlobal||j,s=e.runtimeLib?e.runtimeLib:(n=e.runtime)!=null&&n.lib?e.runtime.lib:"";this.rt={lib:s,global:t}}setExternal(){if(!this.op.empRuntime)return;let{store:e,externalsLib:t}=this,{empRuntime:s}=this.op,{shareLib:n}=s,a=this.rt.lib?{"@module-federation/runtime":"MFRuntime","@module-federation/sdk":"MFSDK"}:{},r={};for(let[o,m]of Object.entries(a))r[o]=`${this.rt.global}.${m}`;if(this.fk.name==="react"&&!n&&this.fk.global){let o=this.fk.version,m={react:"React","react-dom":"ReactDOM"};this.fk.entry==="reactRouter"&&(m["react-router-dom"]="ReactRouterDOM");for(let[p,O]of Object.entries(m))r[p]=`${this.fk.global}.${O}`;[17,18,19].includes(o)&&(r["react-dom/client"]=this.fk.global,r["react/jsx-runtime"]=this.fk.global,r["react/jsx-dev-runtime"]=this.fk.global)}n&&t.map(o=>{o.type==="js"&&o.module&&o.global&&(r[o.module]=`${this.fk.global}.${o.global}`)}),s.setExternals&&s.setExternals(r,this.fk.global,this.rt.global),e.chain.merge({externals:r})}setRuntimeLib(){if(!this.op.empRuntime)return;let{shareLib:e}=this.op.empRuntime,{store:t,injectHtml:s}=this,{empRuntime:n}=this.op;this.rt.lib?this.rt.lib==="useFrameworkLib"&&!e||s.push({tagName:"script",pos:"head",attributes:{src:this.rt.lib}}):t.chain.plugin("plugin-emp-share-framework").use(u,[n])}setMfName(){this.op.name?(this.op.name=this.store.encodeVarName(this.op.name),this.op.name!==this.store.empConfig.output.uniqueName&&this.store.chain.output.set("uniqueName",this.op.name)):this.op.name=this.store.empConfig.output.uniqueName}setMF(){var s;let e=this.op,{store:t}=this;if(e.name){let n=t.deepAssign({filename:"emp.js"},e);n.empRuntime&&delete n.empRuntime,e.forceRemotes&&(x(t,e.forceRemotes),delete e.forceRemotes,(s=n.runtimePlugins)==null||s.push(require.resolve("@empjs/share/forceRemote"))),t.chain.plugin("plugin-emp-share").use(b.ModuleFederationPlugin,[n])}}setShareLib(){if(!this.op.empRuntime)return;let{shareLib:e}=this.op.empRuntime,{externalsLib:t,injectHtml:s}=this;if(e&&typeof e=="object"){for(let[n,a]of Object.entries(e)){let r={};if(r.module=n,typeof a=="string"){let o=a.match(S)||[];o.length>0?(r.global=o[1],r.entry=o[2],r.type="js",t.push(r),r={}):(r.global="",r.entry=a,r.type="js",t.push(r),r={})}else Array.isArray(a)?a.map(o=>{if(!o)return;if(o.split("?")[0].endsWith(".css"))r.entry=o,r.type="css";else{let p=o.match(S)||[];p.length>0?(r.global=p[1],r.entry=p[2],r.type="js"):(r.global="",r.entry=o,r.type="js")}t.push(r),r={}}):typeof a=="object"&&a.entry&&(r.entry=a.entry,r.global=a.global,r.type=a.type,t.push(r),r={})}t.map(n=>{n.type==="js"?s.push({attributes:{src:n.entry},tagName:"script"}):n.type==="css"&&s.push({attributes:{href:n.entry,rel:"stylesheet"},tagName:"link"})})}}};var C=(i,e)=>(i=Object.assign(i,{react:`${e}.React`,"react-dom":`${e}.ReactDOM`,"react-dom/client":e,"react/jsx-runtime":e,"react/jsx-dev-runtime":e,"react-router-dom":`${e}.ReactRouterDOM`}),i);var _=(i,e)=>(i=Object.assign(i,{vue:`${e}.Vue`,"vue-router":`${e}.VueRouter`}),i);var M=(i={})=>({name:"@empjs/share",rsConfig(t){return g(this,null,function*(){i.manifest===!0?i.manifest={fileName:"emp.json"}:typeof i.manifest=="object"&&(i.manifest=t.deepAssign({fileName:"emp.json"},i.manifest)),new f(i,t).setup()})}}),P=M;var D=P;0&&(module.exports={externalReact,externalVue,pluginRspackEmpShare});
3
3
  //# sourceMappingURL=index.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts","../src/plugins/rspack/share.ts","../src/helper/index.ts","../src/helper/config.ts","../src/helper/rspack.ts","../src/plugins/rspack/plugin.ts","../src/plugins/rspack/runtimePlugin/registerRemotes.ts","../src/plugins/rspack/utils.ts","../src/framework/react/config.ts","../src/framework/vue/config.ts","../src/plugins/rspack/index.ts"],"sourcesContent":["import {default as pluginRspackEmpShare} from 'src/plugins/rspack'\nexport default pluginRspackEmpShare\nexport * from 'src/plugins/rspack'\n","import type {GlobalStore} from '@empjs/cli'\nimport path from 'path'\nimport {deepAssign} from 'src/helper'\nimport {shareGlobalName} from 'src/helper/config'\nimport {ModuleFederationPlugin} from 'src/helper/rspack'\nimport {EmpShareRemoteLibPlugin} from './plugin'\nimport {registerRemotes} from './runtimePlugin/registerRemotes'\nimport type {\n EMPPluginShareType,\n ExternalsItemType,\n frameworkOptions,\n ModuleFederationPluginOptions,\n runtimeLibType,\n} from './types'\nimport {getRuntimeLib} from './utils'\n\nconst exp = /^([0-9a-zA-Z_\\s]+)@(.*)/\nexport class EmpShare {\n private op: EMPPluginShareType\n private store: GlobalStore\n /**\n * 注入资源\n */\n private injectHtml: any[] = []\n /**\n * 兼容 shareLib\n */\n private externalsLib: ExternalsItemType[] = []\n constructor(op: EMPPluginShareType, store: GlobalStore) {\n this.op = op || {}\n this.store = store\n }\n setup() {\n this.resetRuntime()\n this.resetFramework()\n this.setMfName() //设置 mfName 默认为 uniqueName\n this.setMF() // 设置 MF 配置\n this.injectGlobalVal() // 插入全局变量 方便emp外的项目调用\n this.injectFramework() // 插入ui框架库\n this.setShareLib() //兼容 emp Sharelib的共享模型设置\n this.setRuntimeLib() // 设置 MF SDK\n this.injectToHtml() //触发插入动作\n this.setExternal() // 设置 external 降低包体\n }\n private injectToHtml() {\n const {store, injectHtml} = this\n if (injectHtml.length > 0) {\n store.injectTags(injectHtml, 'EMPShare')\n }\n }\n private injectFramework() {\n if (this.fk && this.fk.libs.length > 0) {\n return this.injectFkLibs(this.fk.libs)\n }\n if (!this.op.empRuntime || !this.fk.lib) return\n const {store, injectHtml} = this\n if (this.fk.lib) {\n const url = getRuntimeLib(this.fk.lib, store.mode, this.fk.entry)\n injectHtml.push({\n attributes: {\n src: url,\n },\n tagName: 'script',\n })\n }\n }\n private injectFkLibs(libs: string[]) {\n libs.map(url => {\n if (url.endsWith('.css')) {\n return this.injectHtml.push({\n attributes: {\n href: url,\n rel: 'stylesheet',\n },\n tagName: 'link',\n })\n }\n this.injectHtml.push({\n attributes: {\n src: url,\n },\n tagName: 'script',\n })\n })\n }\n private injectGlobalVal() {\n if (!this.op.empRuntime) return\n const {empRuntime} = this.op\n const {injectHtml} = this\n const frameworkGlobal = this.fk.global || (empRuntime.shareLib ? 'window' : '')\n const injectGlobalValToHtml = empRuntime.injectGlobalValToHtml === false || !this.rt.lib ? false : true\n // 插入全局引用变量 让 empRuntime 可以提前实例化 不需要在页面重复实例化\n if (injectGlobalValToHtml) {\n const injectData: any = {frameworkLib: frameworkGlobal, runtimeLib: this.rt.global}\n if (this.fk.name && this.fk.name !== 'none') injectData.framework = this.fk.name\n injectHtml.push({\n // type: 'js',\n tagName: 'script',\n innerHTML: `EMPShareGlobalVal=${JSON.stringify(injectData)}`,\n })\n }\n }\n public fk!: Required<frameworkOptions>\n private resetFramework() {\n if (!this.op.empRuntime) return\n const {framework, frameworkGlobal, frameworkLib} = this.op.empRuntime\n //\n this.fk = {\n name: 'none',\n version: 0,\n entry: '',\n global: frameworkGlobal || '',\n lib: frameworkLib || '',\n libs: [],\n }\n //\n if (typeof framework === 'string') {\n this.fk.name = framework as any\n }\n // TODO 通用 CDN 的适配方案\n else if (typeof framework === 'object' && Object.keys(framework).length > 0) {\n // 默认 框架名 为入口\n framework.entry = framework.entry ? framework.entry : framework.name\n this.fk = deepAssign(this.fk, framework)\n }\n }\n public rt!: Required<runtimeLibType>\n private resetRuntime() {\n const {empRuntime} = this.op\n if (!empRuntime) return\n const global = empRuntime.runtimeGlobal || shareGlobalName\n const lib = empRuntime.runtimeLib ? empRuntime.runtimeLib : empRuntime.runtime?.lib ? empRuntime.runtime.lib : ''\n this.rt = {\n lib,\n global,\n }\n }\n private setExternal() {\n if (!this.op.empRuntime) return\n const {store, externalsLib} = this\n const {empRuntime} = this.op\n const {shareLib} = empRuntime\n //\n const externalRuntime = this.rt.lib\n ? {\n '@module-federation/runtime': `MFRuntime`,\n '@module-federation/sdk': `MFSDK`,\n }\n : {}\n const externals = {}\n for (const [key, value] of Object.entries(externalRuntime)) {\n externals[key] = `${this.rt.global}.${value}`\n }\n /**\n * TODO\n * 框架相关内容需要移除 share 由外部简化配置实现\n */\n if (this.fk.name === 'react' && !shareLib && this.fk.global) {\n const version = this.fk.version\n const externalReact = {\n react: `React`,\n 'react-dom': `ReactDOM`,\n }\n if (this.fk.entry === 'reactRouter') {\n externalReact['react-router-dom'] = 'ReactRouterDOM'\n }\n for (const [key, value] of Object.entries(externalReact)) {\n externals[key] = `${this.fk.global}.${value}`\n }\n if ([17, 18, 19].includes(version)) {\n externals['react-dom/client'] = this.fk.global\n externals['react/jsx-runtime'] = this.fk.global\n externals['react/jsx-dev-runtime'] = this.fk.global\n }\n }\n if (shareLib) {\n externalsLib.map(v => {\n if (v.type === 'js' && v.module && v.global) {\n externals[v.module] = `${this.fk.global}.${v.global}`\n }\n })\n }\n if (empRuntime.setExternals) empRuntime.setExternals(externals, this.fk.global, this.rt.global)\n //\n // console.log('externals in plugin', externals)\n store.chain.merge({externals})\n }\n private setRuntimeLib() {\n if (!this.op.empRuntime) return\n\n const {shareLib} = this.op.empRuntime\n const {store, injectHtml} = this\n const {empRuntime} = this.op\n if (!this.rt.lib) {\n // 内置 this.rt.lib\n store.chain.plugin('plugin-emp-share-framework').use(EmpShareRemoteLibPlugin, [empRuntime])\n }\n // 统一封装到 frameworkLib\n else if (this.rt.lib === 'useFrameworkLib' && !shareLib) {\n } else {\n // 插入 runtime\n injectHtml.push({tagName: 'script', pos: 'head', attributes: {src: this.rt.lib}})\n }\n }\n private setMfName() {\n if (this.op.name) {\n this.op.name = this.store.encodeVarName(this.op.name)\n if (this.op.name !== this.store.empConfig.output.uniqueName) {\n this.store.chain.output.set('uniqueName', this.op.name)\n }\n } else {\n this.op.name = this.store.empConfig.output.uniqueName\n }\n }\n private setMF() {\n const o = this.op\n const {store} = this\n if (o.name) {\n const op = store.deepAssign<ModuleFederationPluginOptions & {empRuntime: any}>(\n {\n filename: 'emp.js',\n // manifest: false,\n // dts: false,\n // dev: {\n // disableDynamicRemoteTypeHints: true,\n // },\n },\n o,\n )\n //\n // if (o.dev === false) op.dev = false\n //\n if (op.empRuntime) {\n delete op.empRuntime\n }\n /**\n * 注册 forceRemotes\n */\n if (o.forceRemotes) {\n //\n const forceRemotes = {...o.forceRemotes}\n //\n registerRemotes(store, o.forceRemotes)\n delete o.forceRemotes\n op.runtimePlugins?.push([require.resolve(path.join(__dirname, 'forceRemote')), forceRemotes])\n }\n // console.log('op', op)\n store.chain.plugin('plugin-emp-share').use(ModuleFederationPlugin, [op])\n }\n }\n private setShareLib() {\n if (!this.op.empRuntime) return\n const {shareLib} = this.op.empRuntime\n const {externalsLib, injectHtml} = this\n if (shareLib && typeof shareLib === 'object') {\n for (const [k, v] of Object.entries(shareLib)) {\n let externalsItem: ExternalsItemType = {}\n externalsItem.module = k\n //增加下划线 支持lodash 等特殊符号的问题 如 _@http\n\n if (typeof v === 'string') {\n const cb: any = v.match(exp) || []\n if (cb.length > 0) {\n externalsItem.global = cb[1]\n externalsItem.entry = cb[2]\n externalsItem.type = 'js'\n externalsLib.push(externalsItem)\n externalsItem = {}\n } else {\n externalsItem.global = ''\n externalsItem.entry = v\n externalsItem.type = 'js'\n externalsLib.push(externalsItem)\n externalsItem = {}\n }\n } else if (Array.isArray(v)) {\n v.map(vo => {\n if (!vo) return\n const isCSS = vo.split('?')[0].endsWith('.css')\n if (isCSS) {\n externalsItem.entry = vo\n externalsItem.type = 'css'\n } else {\n const cb: any = vo.match(exp) || []\n if (cb.length > 0) {\n externalsItem.global = cb[1]\n externalsItem.entry = cb[2]\n externalsItem.type = 'js'\n } else {\n externalsItem.global = ''\n externalsItem.entry = vo\n externalsItem.type = 'js'\n }\n }\n externalsLib.push(externalsItem)\n externalsItem = {}\n })\n } else if (typeof v === 'object' && v.entry) {\n externalsItem.entry = v.entry\n externalsItem.global = v.global\n externalsItem.type = v.type\n externalsLib.push(externalsItem)\n externalsItem = {}\n }\n }\n // console.log(externalsLib)\n externalsLib.map(v => {\n if (v.type === 'js') {\n injectHtml.push({\n attributes: {\n src: v.entry,\n },\n tagName: 'script',\n })\n } else if (v.type === 'css') {\n injectHtml.push({\n attributes: {\n href: v.entry,\n rel: 'stylesheet',\n },\n tagName: 'link',\n })\n }\n })\n }\n }\n}\n","export const importJsVm = (content: string) => `data:text/javascript,${content}`\n\nexport function deepAssign<T>(target: any, ...sources: any): T {\n for (const source of sources) {\n for (const k in source) {\n const vs = source[k],\n vt = target[k]\n if (Object(vs) == vs && Object(vt) === vt) {\n target[k] = deepAssign(vt, vs)\n continue\n }\n target[k] = source[k]\n }\n }\n return target\n}\n\nexport const checkVersion = (version: string) => (version ? Number(version.split('.')[0]) : 0)\nexport const isPromise = (p: any) => p && Object.prototype.toString.call(p) === '[object Promise]'\n\n//\nexport const isDev = process.env.EMPSHARE_ENV === 'dev'\nexport const log = isDev ? console.log.bind(console, '[EMP Share]') : () => {}\n","export const shareGlobalName = 'EMP_SHARE_RUNTIME'\n","// export {ModuleFederationPlugin} from '@module-federation/rspack'\nexport {ModuleFederationPlugin} from '@empjs/module-federation-rspack'\n","import {Compiler} from '@empjs/cli'\nimport {importJsVm} from 'src/helper'\nimport type {EMPSHARERuntimeOptions} from './types'\n\nconst getShareRuntimeEntry = url => {\n const content = [`import '${url}'`].join('\\n')\n return importJsVm(content)\n}\n// 当没有设置 runtimeLib 时候需要内置\nexport class EmpShareRemoteLibPlugin {\n options: EMPSHARERuntimeOptions\n constructor(op: EMPSHARERuntimeOptions) {\n this.options = op\n }\n apply(compiler: Compiler) {\n const {webpack} = compiler\n const entry = getShareRuntimeEntry('@empjs/share/library')\n new webpack.EntryPlugin(compiler.context, entry, {\n name: undefined,\n }).apply(compiler)\n }\n}\n","import {type GlobalStore} from '@empjs/cli'\nimport {ForceRemoteOptions} from '../types'\n\nexport const registerRemotes = (store: GlobalStore, forceRemotes: ForceRemoteOptions) => {\n if (Object.keys(forceRemotes).length > 0) {\n store.injectTags(\n [\n {\n innerHTML: `window.EMP_FORCE_REMOTES = ${JSON.stringify(forceRemotes)};`,\n tagName: 'script',\n pos: 'head',\n },\n ],\n 'EMP_FORCE_REMOTES',\n )\n }\n}\n","import type {EMPSHARERuntimeOptions} from './types'\nexport function getRuntimeLib(host: EMPSHARERuntimeOptions['frameworkLib'], mode: string, entry = 'runtime') {\n if (typeof host === 'string') {\n if (entry === 'runtime') {\n return `${host}/runtime${mode === 'development' ? '.development' : ''}.umd.js`\n } else {\n return `${host}/${entry}.${mode}.umd.js`\n }\n } else if (typeof host === 'object') {\n if (mode === 'development') return host.dev\n else return host.prod\n }\n return ''\n}\n","export const externalReact = (o: any, globalVal: string) => {\n o = Object.assign(o, {\n react: `${globalVal}.React`,\n 'react-dom': `${globalVal}.ReactDOM`,\n 'react-dom/client': globalVal,\n 'react/jsx-runtime': globalVal,\n 'react/jsx-dev-runtime': globalVal,\n 'react-router-dom': `${globalVal}.ReactRouterDOM`,\n })\n return o\n}\n","export const externalVue = (o: any, globalVal: string) => {\n o = Object.assign(o, {\n vue: `${globalVal}.Vue`,\n 'vue-router': `${globalVal}.VueRouter`,\n })\n return o\n}\n","import type {GlobalStore} from '@empjs/cli'\nimport {EmpShare} from './share'\nimport type {EMPPluginShareType} from './types'\nexport type {EMPPluginShareType}\n//\nexport * from 'src/framework/react/config'\nexport * from 'src/framework/vue/config'\nexport * from './types'\n//\nexport const pluginRspackEmpShare = (o: EMPPluginShareType = {}) => {\n return {\n name: '@empjs/share',\n async rsConfig(store: GlobalStore) {\n //\n if (o.manifest === true) {\n o.manifest = {\n fileName: 'emp.json',\n }\n } else if (typeof o.manifest === 'object') {\n o.manifest = store.deepAssign({fileName: 'emp.json'}, o.manifest)\n }\n const empShare = new EmpShare(o, store)\n empShare.setup()\n },\n }\n}\nexport default pluginRspackEmpShare\n"],"mappings":"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","names":["src_exports","__export","src_default","externalReact","externalVue","pluginRspackEmpShare","__toCommonJS","import_path","importJsVm","content","deepAssign","target","sources","source","k","vs","vt","isDev","log","shareGlobalName","import_module_federation_rspack","getShareRuntimeEntry","url","content","importJsVm","EmpShareRemoteLibPlugin","op","__publicField","compiler","webpack","entry","registerRemotes","store","forceRemotes","getRuntimeLib","host","mode","entry","exp","EmpShare","op","store","__publicField","injectHtml","url","getRuntimeLib","libs","empRuntime","frameworkGlobal","injectData","framework","frameworkLib","deepAssign","_a","global","shareGlobalName","lib","externalsLib","shareLib","externalRuntime","externals","key","value","version","externalReact","v","EmpShareRemoteLibPlugin","o","forceRemotes","__spreadValues","registerRemotes","path","k","externalsItem","cb","vo","externalReact","o","globalVal","externalVue","o","globalVal","pluginRspackEmpShare","o","store","__async","EmpShare","rspack_default","src_default","rspack_default"]}
1
+ {"version":3,"sources":["../src/index.ts","../src/helper/index.ts","../src/helper/config.ts","../src/helper/rspack.ts","../src/plugins/rspack/plugin.ts","../src/plugins/rspack/runtimePlugin/registerRemotes.ts","../src/plugins/rspack/utils.ts","../src/plugins/rspack/share.ts","../src/framework/react/config.ts","../src/framework/vue/config.ts","../src/plugins/rspack/index.ts"],"sourcesContent":["import {default as pluginRspackEmpShare} from 'src/plugins/rspack'\nexport default pluginRspackEmpShare\nexport * from 'src/plugins/rspack'\n","export const importJsVm = (content: string) => `data:text/javascript,${content}`\n\nexport function deepAssign<T>(target: any, ...sources: any): T {\n for (const source of sources) {\n for (const k in source) {\n const vs = source[k],\n vt = target[k]\n if (Object(vs) == vs && Object(vt) === vt) {\n target[k] = deepAssign(vt, vs)\n continue\n }\n target[k] = source[k]\n }\n }\n return target\n}\n\nexport const checkVersion = (version: string) => (version ? Number(version.split('.')[0]) : 0)\nexport const isPromise = (p: any) => p && Object.prototype.toString.call(p) === '[object Promise]'\n\n//\nexport const isDev = process.env.EMPSHARE_ENV === 'dev'\nexport const log = isDev ? console.log.bind(console, '[EMP Share]') : () => {}\n","export const shareGlobalName = 'EMP_SHARE_RUNTIME'\nexport const shareGlobalVal = 'EMPShareGlobalVal'\nexport const shareForceRemote = 'EMP_FORCE_REMOTES'\n","// export {ModuleFederationPlugin} from '@module-federation/rspack'\nexport {ModuleFederationPlugin} from '@empjs/module-federation-rspack'\n","import {Compiler} from '@empjs/cli'\nimport {importJsVm} from 'src/helper'\nimport type {EMPSHARERuntimeOptions} from './types'\n\nconst getShareRuntimeEntry = url => {\n const content = [`import '${url}'`].join('\\n')\n return importJsVm(content)\n}\n// 当没有设置 runtimeLib 时候需要内置\nexport class EmpShareRemoteLibPlugin {\n options: EMPSHARERuntimeOptions\n constructor(op: EMPSHARERuntimeOptions) {\n this.options = op\n }\n apply(compiler: Compiler) {\n const {webpack} = compiler\n const entry = getShareRuntimeEntry('@empjs/share/library')\n new webpack.EntryPlugin(compiler.context, entry, {\n name: undefined,\n }).apply(compiler)\n }\n}\n","import {type GlobalStore} from '@empjs/cli'\nimport {shareForceRemote} from 'src/helper/config'\nimport {ForceRemoteOptions} from '../types'\n\nexport const registerRemotes = (store: GlobalStore, forceRemotes: ForceRemoteOptions) => {\n if (Object.keys(forceRemotes).length > 0) {\n store.injectTags(\n [\n {\n innerHTML: `window.${shareForceRemote} = ${JSON.stringify(forceRemotes)};`,\n tagName: 'script',\n pos: 'head',\n },\n ],\n 'EMP_FORCE_REMOTES',\n )\n }\n}\n","import type {EMPSHARERuntimeOptions} from './types'\nexport function getRuntimeLib(host: EMPSHARERuntimeOptions['frameworkLib'], mode: string, entry = 'runtime') {\n if (typeof host === 'string') {\n if (entry === 'runtime') {\n return `${host}/runtime${mode === 'development' ? '.development' : ''}.umd.js`\n } else {\n return `${host}/${entry}.${mode}.umd.js`\n }\n } else if (typeof host === 'object') {\n if (mode === 'development') return host.dev\n else return host.prod\n }\n return ''\n}\n","import type {GlobalStore} from '@empjs/cli'\nimport {deepAssign} from 'src/helper'\nimport {shareGlobalName, shareGlobalVal} from 'src/helper/config'\nimport {ModuleFederationPlugin} from 'src/helper/rspack'\nimport {EmpShareRemoteLibPlugin} from './plugin'\nimport {registerRemotes} from './runtimePlugin/registerRemotes'\nimport type {\n EMPPluginShareType,\n ExternalsItemType,\n frameworkOptions,\n ModuleFederationPluginOptions,\n runtimeLibType,\n} from './types'\nimport {getRuntimeLib} from './utils'\n\nconst exp = /^([0-9a-zA-Z_\\s]+)@(.*)/\nexport class EmpShare {\n private op: EMPPluginShareType\n private store: GlobalStore\n /**\n * 注入资源\n */\n private injectHtml: any[] = []\n /**\n * 兼容 shareLib\n */\n private externalsLib: ExternalsItemType[] = []\n constructor(op: EMPPluginShareType, store: GlobalStore) {\n this.op = op || {}\n this.store = store\n }\n setup() {\n this.resetRuntime()\n this.resetFramework()\n this.setMfName() //设置 mfName 默认为 uniqueName\n this.setMF() // 设置 MF 配置\n this.injectGlobalVal() // 插入全局变量 方便emp外的项目调用\n this.injectFramework() // 插入ui框架库\n this.setShareLib() //兼容 emp Sharelib的共享模型设置\n this.setRuntimeLib() // 设置 MF SDK\n this.injectToHtml() //触发插入动作\n this.setExternal() // 设置 external 降低包体\n }\n private injectToHtml() {\n const {store, injectHtml} = this\n if (injectHtml.length > 0) {\n store.injectTags(injectHtml, 'EMPShare')\n }\n }\n private injectFramework() {\n if (this.fk && this.fk.libs.length > 0) {\n return this.injectFkLibs(this.fk.libs)\n }\n if (!this.op.empRuntime || !this.fk.lib) return\n const {store, injectHtml} = this\n if (this.fk.lib) {\n const url = getRuntimeLib(this.fk.lib, store.mode, this.fk.entry)\n injectHtml.push({\n attributes: {\n src: url,\n },\n tagName: 'script',\n })\n }\n }\n private injectFkLibs(libs: string[]) {\n libs.map(url => {\n if (url.endsWith('.css')) {\n return this.injectHtml.push({\n attributes: {\n href: url,\n rel: 'stylesheet',\n },\n tagName: 'link',\n })\n }\n this.injectHtml.push({\n attributes: {\n src: url,\n },\n tagName: 'script',\n })\n })\n }\n private injectGlobalVal() {\n if (!this.op.empRuntime) return\n const {empRuntime} = this.op\n const {injectHtml} = this\n const frameworkGlobal = this.fk.global || (empRuntime.shareLib ? 'window' : '')\n const injectGlobalValToHtml = empRuntime.injectGlobalValToHtml === false || !this.rt.lib ? false : true\n // 插入全局引用变量 让 empRuntime 可以提前实例化 不需要在页面重复实例化\n if (injectGlobalValToHtml) {\n const injectData: any = {frameworkLib: frameworkGlobal, runtimeLib: this.rt.global}\n if (this.fk.name && this.fk.name !== 'none') injectData.framework = this.fk.name\n injectHtml.push({\n // type: 'js',\n tagName: 'script',\n innerHTML: `window.${shareGlobalVal}=${JSON.stringify(injectData)}`,\n })\n }\n }\n public fk!: Required<frameworkOptions>\n private resetFramework() {\n if (!this.op.empRuntime) return\n const {framework, frameworkGlobal, frameworkLib} = this.op.empRuntime\n //\n this.fk = {\n name: 'none',\n version: 0,\n entry: '',\n global: frameworkGlobal || '',\n lib: frameworkLib || '',\n libs: [],\n }\n //\n if (typeof framework === 'string') {\n this.fk.name = framework as any\n }\n // TODO 通用 CDN 的适配方案\n else if (typeof framework === 'object' && Object.keys(framework).length > 0) {\n // 默认 框架名 为入口\n framework.entry = framework.entry ? framework.entry : framework.name\n this.fk = deepAssign(this.fk, framework)\n }\n }\n public rt!: Required<runtimeLibType>\n private resetRuntime() {\n const {empRuntime} = this.op\n if (!empRuntime) return\n const global = empRuntime.runtimeGlobal || shareGlobalName\n const lib = empRuntime.runtimeLib ? empRuntime.runtimeLib : empRuntime.runtime?.lib ? empRuntime.runtime.lib : ''\n this.rt = {\n lib,\n global,\n }\n }\n private setExternal() {\n if (!this.op.empRuntime) return\n const {store, externalsLib} = this\n const {empRuntime} = this.op\n const {shareLib} = empRuntime\n //\n const externalRuntime = this.rt.lib\n ? {\n '@module-federation/runtime': `MFRuntime`,\n '@module-federation/sdk': `MFSDK`,\n }\n : {}\n const externals = {}\n for (const [key, value] of Object.entries(externalRuntime)) {\n externals[key] = `${this.rt.global}.${value}`\n }\n /**\n * TODO\n * 框架相关内容需要移除 share 由外部简化配置实现\n */\n if (this.fk.name === 'react' && !shareLib && this.fk.global) {\n const version = this.fk.version\n const externalReact = {\n react: `React`,\n 'react-dom': `ReactDOM`,\n }\n if (this.fk.entry === 'reactRouter') {\n externalReact['react-router-dom'] = 'ReactRouterDOM'\n }\n for (const [key, value] of Object.entries(externalReact)) {\n externals[key] = `${this.fk.global}.${value}`\n }\n if ([17, 18, 19].includes(version)) {\n externals['react-dom/client'] = this.fk.global\n externals['react/jsx-runtime'] = this.fk.global\n externals['react/jsx-dev-runtime'] = this.fk.global\n }\n }\n if (shareLib) {\n externalsLib.map(v => {\n if (v.type === 'js' && v.module && v.global) {\n externals[v.module] = `${this.fk.global}.${v.global}`\n }\n })\n }\n if (empRuntime.setExternals) empRuntime.setExternals(externals, this.fk.global, this.rt.global)\n //\n // console.log('externals in plugin', externals)\n store.chain.merge({externals})\n }\n private setRuntimeLib() {\n if (!this.op.empRuntime) return\n\n const {shareLib} = this.op.empRuntime\n const {store, injectHtml} = this\n const {empRuntime} = this.op\n if (!this.rt.lib) {\n // 内置 this.rt.lib\n store.chain.plugin('plugin-emp-share-framework').use(EmpShareRemoteLibPlugin, [empRuntime])\n }\n // 统一封装到 frameworkLib\n else if (this.rt.lib === 'useFrameworkLib' && !shareLib) {\n } else {\n // 插入 runtime\n injectHtml.push({tagName: 'script', pos: 'head', attributes: {src: this.rt.lib}})\n }\n }\n private setMfName() {\n if (this.op.name) {\n this.op.name = this.store.encodeVarName(this.op.name)\n if (this.op.name !== this.store.empConfig.output.uniqueName) {\n this.store.chain.output.set('uniqueName', this.op.name)\n }\n } else {\n this.op.name = this.store.empConfig.output.uniqueName\n }\n }\n private setMF() {\n const o = this.op\n const {store} = this\n if (o.name) {\n const op = store.deepAssign<ModuleFederationPluginOptions & {empRuntime: any}>(\n {\n filename: 'emp.js',\n // manifest: false,\n // dts: false,\n // dev: {\n // disableDynamicRemoteTypeHints: true,\n // },\n },\n o,\n )\n //\n // if (o.dev === false) op.dev = false\n //\n if (op.empRuntime) {\n delete op.empRuntime\n }\n /**\n * 注册 forceRemotes\n */\n if (o.forceRemotes) {\n registerRemotes(store, o.forceRemotes)\n delete o.forceRemotes\n op.runtimePlugins?.push(require.resolve('@empjs/share/forceRemote'))\n }\n // console.log('op', op)\n store.chain.plugin('plugin-emp-share').use(ModuleFederationPlugin, [op])\n }\n }\n private setShareLib() {\n if (!this.op.empRuntime) return\n const {shareLib} = this.op.empRuntime\n const {externalsLib, injectHtml} = this\n if (shareLib && typeof shareLib === 'object') {\n for (const [k, v] of Object.entries(shareLib)) {\n let externalsItem: ExternalsItemType = {}\n externalsItem.module = k\n //增加下划线 支持lodash 等特殊符号的问题 如 _@http\n\n if (typeof v === 'string') {\n const cb: any = v.match(exp) || []\n if (cb.length > 0) {\n externalsItem.global = cb[1]\n externalsItem.entry = cb[2]\n externalsItem.type = 'js'\n externalsLib.push(externalsItem)\n externalsItem = {}\n } else {\n externalsItem.global = ''\n externalsItem.entry = v\n externalsItem.type = 'js'\n externalsLib.push(externalsItem)\n externalsItem = {}\n }\n } else if (Array.isArray(v)) {\n v.map(vo => {\n if (!vo) return\n const isCSS = vo.split('?')[0].endsWith('.css')\n if (isCSS) {\n externalsItem.entry = vo\n externalsItem.type = 'css'\n } else {\n const cb: any = vo.match(exp) || []\n if (cb.length > 0) {\n externalsItem.global = cb[1]\n externalsItem.entry = cb[2]\n externalsItem.type = 'js'\n } else {\n externalsItem.global = ''\n externalsItem.entry = vo\n externalsItem.type = 'js'\n }\n }\n externalsLib.push(externalsItem)\n externalsItem = {}\n })\n } else if (typeof v === 'object' && v.entry) {\n externalsItem.entry = v.entry\n externalsItem.global = v.global\n externalsItem.type = v.type\n externalsLib.push(externalsItem)\n externalsItem = {}\n }\n }\n // console.log(externalsLib)\n externalsLib.map(v => {\n if (v.type === 'js') {\n injectHtml.push({\n attributes: {\n src: v.entry,\n },\n tagName: 'script',\n })\n } else if (v.type === 'css') {\n injectHtml.push({\n attributes: {\n href: v.entry,\n rel: 'stylesheet',\n },\n tagName: 'link',\n })\n }\n })\n }\n }\n}\n","export const externalReact = (o: any, globalVal: string) => {\n o = Object.assign(o, {\n react: `${globalVal}.React`,\n 'react-dom': `${globalVal}.ReactDOM`,\n 'react-dom/client': globalVal,\n 'react/jsx-runtime': globalVal,\n 'react/jsx-dev-runtime': globalVal,\n 'react-router-dom': `${globalVal}.ReactRouterDOM`,\n })\n return o\n}\n","export const externalVue = (o: any, globalVal: string) => {\n o = Object.assign(o, {\n vue: `${globalVal}.Vue`,\n 'vue-router': `${globalVal}.VueRouter`,\n })\n return o\n}\n","import type {GlobalStore} from '@empjs/cli'\nimport {EmpShare} from './share'\nimport type {EMPPluginShareType} from './types'\nexport type {EMPPluginShareType}\n//\nexport * from 'src/framework/react/config'\nexport * from 'src/framework/vue/config'\nexport * from './types'\n//\nexport const pluginRspackEmpShare = (o: EMPPluginShareType = {}) => {\n return {\n name: '@empjs/share',\n async rsConfig(store: GlobalStore) {\n //\n if (o.manifest === true) {\n o.manifest = {\n fileName: 'emp.json',\n }\n } else if (typeof o.manifest === 'object') {\n o.manifest = store.deepAssign({fileName: 'emp.json'}, o.manifest)\n }\n const empShare = new EmpShare(o, store)\n empShare.setup()\n },\n }\n}\nexport default pluginRspackEmpShare\n"],"mappings":"+4BAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,aAAAE,EAAA,kBAAAC,EAAA,gBAAAC,EAAA,yBAAAC,IAAA,eAAAC,EAAAN,GCAO,IAAMO,EAAcC,GAAoB,wBAAwBA,CAAO,GAEvE,SAASC,EAAcC,KAAgBC,EAAiB,CAC7D,QAAWC,KAAUD,EACnB,QAAWE,KAAKD,EAAQ,CACtB,IAAME,EAAKF,EAAOC,CAAC,EACjBE,EAAKL,EAAOG,CAAC,EACf,GAAI,OAAOC,CAAE,GAAKA,GAAM,OAAOC,CAAE,IAAMA,EAAI,CACzCL,EAAOG,CAAC,EAAIJ,EAAWM,EAAID,CAAE,EAC7B,QACF,CACAJ,EAAOG,CAAC,EAAID,EAAOC,CAAC,CACtB,CAEF,OAAOH,CACT,CAMO,IAAMM,EAAQ,GACRC,EAAMD,EAAQ,QAAQ,IAAI,KAAK,QAAS,aAAa,EAAI,IAAM,CAAC,ECtBtE,IAAME,EAAkB,oBAClBC,EAAiB,oBACjBC,EAAmB,oBCDhC,IAAAC,EAAqC,2CCGrC,IAAMC,EAAuBC,GAAO,CAClC,IAAMC,EAAU,CAAC,WAAWD,CAAG,GAAG,EAAE,KAAK;AAAA,CAAI,EAC7C,OAAOE,EAAWD,CAAO,CAC3B,EAEaE,EAAN,KAA8B,CAEnC,YAAYC,EAA4B,CADxCC,EAAA,gBAEE,KAAK,QAAUD,CACjB,CACA,MAAME,EAAoB,CACxB,GAAM,CAAC,QAAAC,CAAO,EAAID,EACZE,EAAQT,EAAqB,sBAAsB,EACzD,IAAIQ,EAAQ,YAAYD,EAAS,QAASE,EAAO,CAC/C,KAAM,MACR,CAAC,EAAE,MAAMF,CAAQ,CACnB,CACF,ECjBO,IAAMG,EAAkB,CAACC,EAAoBC,IAAqC,CACnF,OAAO,KAAKA,CAAY,EAAE,OAAS,GACrCD,EAAM,WACJ,CACE,CACE,UAAW,UAAUE,CAAgB,MAAM,KAAK,UAAUD,CAAY,CAAC,IACvE,QAAS,SACT,IAAK,MACP,CACF,EACA,mBACF,CAEJ,EChBO,SAASE,EAAcC,EAA8CC,EAAcC,EAAQ,UAAW,CAC3G,OAAI,OAAOF,GAAS,SACdE,IAAU,UACL,GAAGF,CAAI,WAAWC,IAAS,cAAgB,eAAiB,EAAE,UAE9D,GAAGD,CAAI,IAAIE,CAAK,IAAID,CAAI,UAExB,OAAOD,GAAS,SACrBC,IAAS,cAAsBD,EAAK,IAC5BA,EAAK,KAEZ,EACT,CCEA,IAAMG,EAAM,0BACCC,EAAN,KAAe,CAWpB,YAAYC,EAAwBC,EAAoB,CAVxDC,EAAA,KAAQ,MACRA,EAAA,KAAQ,SAIRA,EAAA,KAAQ,aAAoB,CAAC,GAI7BA,EAAA,KAAQ,eAAoC,CAAC,GA2E7CA,EAAA,KAAO,MAwBPA,EAAA,KAAO,MAjGL,KAAK,GAAKF,GAAM,CAAC,EACjB,KAAK,MAAQC,CACf,CACA,OAAQ,CACN,KAAK,aAAa,EAClB,KAAK,eAAe,EACpB,KAAK,UAAU,EACf,KAAK,MAAM,EACX,KAAK,gBAAgB,EACrB,KAAK,gBAAgB,EACrB,KAAK,YAAY,EACjB,KAAK,cAAc,EACnB,KAAK,aAAa,EAClB,KAAK,YAAY,CACnB,CACQ,cAAe,CACrB,GAAM,CAAC,MAAAA,EAAO,WAAAE,CAAU,EAAI,KACxBA,EAAW,OAAS,GACtBF,EAAM,WAAWE,EAAY,UAAU,CAE3C,CACQ,iBAAkB,CACxB,GAAI,KAAK,IAAM,KAAK,GAAG,KAAK,OAAS,EACnC,OAAO,KAAK,aAAa,KAAK,GAAG,IAAI,EAEvC,GAAI,CAAC,KAAK,GAAG,YAAc,CAAC,KAAK,GAAG,IAAK,OACzC,GAAM,CAAC,MAAAF,EAAO,WAAAE,CAAU,EAAI,KAC5B,GAAI,KAAK,GAAG,IAAK,CACf,IAAMC,EAAMC,EAAc,KAAK,GAAG,IAAKJ,EAAM,KAAM,KAAK,GAAG,KAAK,EAChEE,EAAW,KAAK,CACd,WAAY,CACV,IAAKC,CACP,EACA,QAAS,QACX,CAAC,CACH,CACF,CACQ,aAAaE,EAAgB,CACnCA,EAAK,IAAIF,GAAO,CACd,GAAIA,EAAI,SAAS,MAAM,EACrB,OAAO,KAAK,WAAW,KAAK,CAC1B,WAAY,CACV,KAAMA,EACN,IAAK,YACP,EACA,QAAS,MACX,CAAC,EAEH,KAAK,WAAW,KAAK,CACnB,WAAY,CACV,IAAKA,CACP,EACA,QAAS,QACX,CAAC,CACH,CAAC,CACH,CACQ,iBAAkB,CACxB,GAAI,CAAC,KAAK,GAAG,WAAY,OACzB,GAAM,CAAC,WAAAG,CAAU,EAAI,KAAK,GACpB,CAAC,WAAAJ,CAAU,EAAI,KACfK,EAAkB,KAAK,GAAG,SAAWD,EAAW,SAAW,SAAW,IAG5E,GAF8B,EAAAA,EAAW,wBAA0B,IAAS,CAAC,KAAK,GAAG,KAE1D,CACzB,IAAME,EAAkB,CAAC,aAAcD,EAAiB,WAAY,KAAK,GAAG,MAAM,EAC9E,KAAK,GAAG,MAAQ,KAAK,GAAG,OAAS,SAAQC,EAAW,UAAY,KAAK,GAAG,MAC5EN,EAAW,KAAK,CAEd,QAAS,SACT,UAAW,UAAUO,CAAc,IAAI,KAAK,UAAUD,CAAU,CAAC,EACnE,CAAC,CACH,CACF,CAEQ,gBAAiB,CACvB,GAAI,CAAC,KAAK,GAAG,WAAY,OACzB,GAAM,CAAC,UAAAE,EAAW,gBAAAH,EAAiB,aAAAI,CAAY,EAAI,KAAK,GAAG,WAE3D,KAAK,GAAK,CACR,KAAM,OACN,QAAS,EACT,MAAO,GACP,OAAQJ,GAAmB,GAC3B,IAAKI,GAAgB,GACrB,KAAM,CAAC,CACT,EAEI,OAAOD,GAAc,SACvB,KAAK,GAAG,KAAOA,EAGR,OAAOA,GAAc,UAAY,OAAO,KAAKA,CAAS,EAAE,OAAS,IAExEA,EAAU,MAAQA,EAAU,MAAQA,EAAU,MAAQA,EAAU,KAChE,KAAK,GAAKE,EAAW,KAAK,GAAIF,CAAS,EAE3C,CAEQ,cAAe,CA9HzB,IAAAG,EA+HI,GAAM,CAAC,WAAAP,CAAU,EAAI,KAAK,GAC1B,GAAI,CAACA,EAAY,OACjB,IAAMQ,EAASR,EAAW,eAAiBS,EACrCC,EAAMV,EAAW,WAAaA,EAAW,YAAaO,EAAAP,EAAW,UAAX,MAAAO,EAAoB,IAAMP,EAAW,QAAQ,IAAM,GAC/G,KAAK,GAAK,CACR,IAAAU,EACA,OAAAF,CACF,CACF,CACQ,aAAc,CACpB,GAAI,CAAC,KAAK,GAAG,WAAY,OACzB,GAAM,CAAC,MAAAd,EAAO,aAAAiB,CAAY,EAAI,KACxB,CAAC,WAAAX,CAAU,EAAI,KAAK,GACpB,CAAC,SAAAY,CAAQ,EAAIZ,EAEba,EAAkB,KAAK,GAAG,IAC5B,CACE,6BAA8B,YAC9B,yBAA0B,OAC5B,EACA,CAAC,EACCC,EAAY,CAAC,EACnB,OAAW,CAACC,EAAKC,CAAK,IAAK,OAAO,QAAQH,CAAe,EACvDC,EAAUC,CAAG,EAAI,GAAG,KAAK,GAAG,MAAM,IAAIC,CAAK,GAM7C,GAAI,KAAK,GAAG,OAAS,SAAW,CAACJ,GAAY,KAAK,GAAG,OAAQ,CAC3D,IAAMK,EAAU,KAAK,GAAG,QAClBC,EAAgB,CACpB,MAAO,QACP,YAAa,UACf,EACI,KAAK,GAAG,QAAU,gBACpBA,EAAc,kBAAkB,EAAI,kBAEtC,OAAW,CAACH,EAAKC,CAAK,IAAK,OAAO,QAAQE,CAAa,EACrDJ,EAAUC,CAAG,EAAI,GAAG,KAAK,GAAG,MAAM,IAAIC,CAAK,GAEzC,CAAC,GAAI,GAAI,EAAE,EAAE,SAASC,CAAO,IAC/BH,EAAU,kBAAkB,EAAI,KAAK,GAAG,OACxCA,EAAU,mBAAmB,EAAI,KAAK,GAAG,OACzCA,EAAU,uBAAuB,EAAI,KAAK,GAAG,OAEjD,CACIF,GACFD,EAAa,IAAIQ,GAAK,CAChBA,EAAE,OAAS,MAAQA,EAAE,QAAUA,EAAE,SACnCL,EAAUK,EAAE,MAAM,EAAI,GAAG,KAAK,GAAG,MAAM,IAAIA,EAAE,MAAM,GAEvD,CAAC,EAECnB,EAAW,cAAcA,EAAW,aAAac,EAAW,KAAK,GAAG,OAAQ,KAAK,GAAG,MAAM,EAG9FpB,EAAM,MAAM,MAAM,CAAC,UAAAoB,CAAS,CAAC,CAC/B,CACQ,eAAgB,CACtB,GAAI,CAAC,KAAK,GAAG,WAAY,OAEzB,GAAM,CAAC,SAAAF,CAAQ,EAAI,KAAK,GAAG,WACrB,CAAC,MAAAlB,EAAO,WAAAE,CAAU,EAAI,KACtB,CAAC,WAAAI,CAAU,EAAI,KAAK,GACrB,KAAK,GAAG,IAKJ,KAAK,GAAG,MAAQ,mBAAqB,CAACY,GAG7ChB,EAAW,KAAK,CAAC,QAAS,SAAU,IAAK,OAAQ,WAAY,CAAC,IAAK,KAAK,GAAG,GAAG,CAAC,CAAC,EANhFF,EAAM,MAAM,OAAO,4BAA4B,EAAE,IAAI0B,EAAyB,CAACpB,CAAU,CAAC,CAQ9F,CACQ,WAAY,CACd,KAAK,GAAG,MACV,KAAK,GAAG,KAAO,KAAK,MAAM,cAAc,KAAK,GAAG,IAAI,EAChD,KAAK,GAAG,OAAS,KAAK,MAAM,UAAU,OAAO,YAC/C,KAAK,MAAM,MAAM,OAAO,IAAI,aAAc,KAAK,GAAG,IAAI,GAGxD,KAAK,GAAG,KAAO,KAAK,MAAM,UAAU,OAAO,UAE/C,CACQ,OAAQ,CArNlB,IAAAO,EAsNI,IAAMc,EAAI,KAAK,GACT,CAAC,MAAA3B,CAAK,EAAI,KAChB,GAAI2B,EAAE,KAAM,CACV,IAAM5B,EAAKC,EAAM,WACf,CACE,SAAU,QAMZ,EACA2B,CACF,EAII5B,EAAG,YACL,OAAOA,EAAG,WAKR4B,EAAE,eACJC,EAAgB5B,EAAO2B,EAAE,YAAY,EACrC,OAAOA,EAAE,cACTd,EAAAd,EAAG,iBAAH,MAAAc,EAAmB,KAAK,gBAAgB,0BAA0B,IAGpEb,EAAM,MAAM,OAAO,kBAAkB,EAAE,IAAI,yBAAwB,CAACD,CAAE,CAAC,CACzE,CACF,CACQ,aAAc,CACpB,GAAI,CAAC,KAAK,GAAG,WAAY,OACzB,GAAM,CAAC,SAAAmB,CAAQ,EAAI,KAAK,GAAG,WACrB,CAAC,aAAAD,EAAc,WAAAf,CAAU,EAAI,KACnC,GAAIgB,GAAY,OAAOA,GAAa,SAAU,CAC5C,OAAW,CAACW,EAAGJ,CAAC,IAAK,OAAO,QAAQP,CAAQ,EAAG,CAC7C,IAAIY,EAAmC,CAAC,EAIxC,GAHAA,EAAc,OAASD,EAGnB,OAAOJ,GAAM,SAAU,CACzB,IAAMM,EAAUN,EAAE,MAAM5B,CAAG,GAAK,CAAC,EAC7BkC,EAAG,OAAS,GACdD,EAAc,OAASC,EAAG,CAAC,EAC3BD,EAAc,MAAQC,EAAG,CAAC,EAC1BD,EAAc,KAAO,KACrBb,EAAa,KAAKa,CAAa,EAC/BA,EAAgB,CAAC,IAEjBA,EAAc,OAAS,GACvBA,EAAc,MAAQL,EACtBK,EAAc,KAAO,KACrBb,EAAa,KAAKa,CAAa,EAC/BA,EAAgB,CAAC,EAErB,MAAW,MAAM,QAAQL,CAAC,EACxBA,EAAE,IAAIO,GAAM,CACV,GAAI,CAACA,EAAI,OAET,GADcA,EAAG,MAAM,GAAG,EAAE,CAAC,EAAE,SAAS,MAAM,EAE5CF,EAAc,MAAQE,EACtBF,EAAc,KAAO,UAChB,CACL,IAAMC,EAAUC,EAAG,MAAMnC,CAAG,GAAK,CAAC,EAC9BkC,EAAG,OAAS,GACdD,EAAc,OAASC,EAAG,CAAC,EAC3BD,EAAc,MAAQC,EAAG,CAAC,EAC1BD,EAAc,KAAO,OAErBA,EAAc,OAAS,GACvBA,EAAc,MAAQE,EACtBF,EAAc,KAAO,KAEzB,CACAb,EAAa,KAAKa,CAAa,EAC/BA,EAAgB,CAAC,CACnB,CAAC,EACQ,OAAOL,GAAM,UAAYA,EAAE,QACpCK,EAAc,MAAQL,EAAE,MACxBK,EAAc,OAASL,EAAE,OACzBK,EAAc,KAAOL,EAAE,KACvBR,EAAa,KAAKa,CAAa,EAC/BA,EAAgB,CAAC,EAErB,CAEAb,EAAa,IAAIQ,GAAK,CAChBA,EAAE,OAAS,KACbvB,EAAW,KAAK,CACd,WAAY,CACV,IAAKuB,EAAE,KACT,EACA,QAAS,QACX,CAAC,EACQA,EAAE,OAAS,OACpBvB,EAAW,KAAK,CACd,WAAY,CACV,KAAMuB,EAAE,MACR,IAAK,YACP,EACA,QAAS,MACX,CAAC,CAEL,CAAC,CACH,CACF,CACF,EClUO,IAAMQ,EAAgB,CAACC,EAAQC,KACpCD,EAAI,OAAO,OAAOA,EAAG,CACnB,MAAO,GAAGC,CAAS,SACnB,YAAa,GAAGA,CAAS,YACzB,mBAAoBA,EACpB,oBAAqBA,EACrB,wBAAyBA,EACzB,mBAAoB,GAAGA,CAAS,iBAClC,CAAC,EACMD,GCTF,IAAME,EAAc,CAACC,EAAQC,KAClCD,EAAI,OAAO,OAAOA,EAAG,CACnB,IAAK,GAAGC,CAAS,OACjB,aAAc,GAAGA,CAAS,YAC5B,CAAC,EACMD,GCIF,IAAME,EAAuB,CAACC,EAAwB,CAAC,KACrD,CACL,KAAM,eACA,SAASC,EAAoB,QAAAC,EAAA,sBAE7BF,EAAE,WAAa,GACjBA,EAAE,SAAW,CACX,SAAU,UACZ,EACS,OAAOA,EAAE,UAAa,WAC/BA,EAAE,SAAWC,EAAM,WAAW,CAAC,SAAU,UAAU,EAAGD,EAAE,QAAQ,GAEjD,IAAIG,EAASH,EAAGC,CAAK,EAC7B,MAAM,CACjB,GACF,GAEKG,EAAQL,EVzBf,IAAOM,EAAQC","names":["src_exports","__export","src_default","externalReact","externalVue","pluginRspackEmpShare","__toCommonJS","importJsVm","content","deepAssign","target","sources","source","k","vs","vt","isDev","log","shareGlobalName","shareGlobalVal","shareForceRemote","import_module_federation_rspack","getShareRuntimeEntry","url","content","importJsVm","EmpShareRemoteLibPlugin","op","__publicField","compiler","webpack","entry","registerRemotes","store","forceRemotes","shareForceRemote","getRuntimeLib","host","mode","entry","exp","EmpShare","op","store","__publicField","injectHtml","url","getRuntimeLib","libs","empRuntime","frameworkGlobal","injectData","shareGlobalVal","framework","frameworkLib","deepAssign","_a","global","shareGlobalName","lib","externalsLib","shareLib","externalRuntime","externals","key","value","version","externalReact","v","EmpShareRemoteLibPlugin","o","registerRemotes","k","externalsItem","cb","vo","externalReact","o","globalVal","externalVue","o","globalVal","pluginRspackEmpShare","o","store","__async","EmpShare","rspack_default","src_default","rspack_default"]}
package/dist/index.js CHANGED
@@ -1,3 +1,3 @@
1
- var O=Object.defineProperty;var b=Object.getOwnPropertySymbols;var L=Object.prototype.hasOwnProperty,T=Object.prototype.propertyIsEnumerable;var f=(i,e,t)=>e in i?O(i,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):i[e]=t,y=(i,e)=>{for(var t in e||(e={}))L.call(e,t)&&f(i,t,e[t]);if(b)for(var t of b(e))T.call(e,t)&&f(i,t,e[t]);return i};var g=(i=>typeof require!="undefined"?require:typeof Proxy!="undefined"?new Proxy(i,{get:(e,t)=>(typeof require!="undefined"?require:e)[t]}):i)(function(i){if(typeof require!="undefined")return require.apply(this,arguments);throw Error('Dynamic require of "'+i+'" is not supported')});var l=(i,e,t)=>f(i,typeof e!="symbol"?e+"":e,t);var R=(i,e,t)=>new Promise((s,n)=>{var o=m=>{try{a(t.next(m))}catch(p){n(p)}},r=m=>{try{a(t.throw(m))}catch(p){n(p)}},a=m=>m.done?s(m.value):Promise.resolve(m.value).then(o,r);a((t=t.apply(i,e)).next())});import w from"path";var j=i=>`data:text/javascript,${i}`;function h(i,...e){for(let t of e)for(let s in t){let n=t[s],o=i[s];if(Object(n)==n&&Object(o)===o){i[s]=h(o,n);continue}i[s]=t[s]}return i}var v=!1,F=v?console.log.bind(console,"[EMP Share]"):()=>{};var k="EMP_SHARE_RUNTIME";import{ModuleFederationPlugin as d}from"@empjs/module-federation-rspack";var N=i=>{let e=[`import '${i}'`].join(`
2
- `);return j(e)},c=class{constructor(e){l(this,"options");this.options=e}apply(e){let{webpack:t}=e,s=N("@empjs/share/library");new t.EntryPlugin(e.context,s,{name:void 0}).apply(e)}};var x=(i,e)=>{Object.keys(e).length>0&&i.injectTags([{innerHTML:`window.EMP_FORCE_REMOTES = ${JSON.stringify(e)};`,tagName:"script",pos:"head"}],"EMP_FORCE_REMOTES")};function E(i,e,t="runtime"){return typeof i=="string"?t==="runtime"?`${i}/runtime${e==="development"?".development":""}.umd.js`:`${i}/${t}.${e}.umd.js`:typeof i=="object"?e==="development"?i.dev:i.prod:""}var S=/^([0-9a-zA-Z_\s]+)@(.*)/,u=class{constructor(e,t){l(this,"op");l(this,"store");l(this,"injectHtml",[]);l(this,"externalsLib",[]);l(this,"fk");l(this,"rt");this.op=e||{},this.store=t}setup(){this.resetRuntime(),this.resetFramework(),this.setMfName(),this.setMF(),this.injectGlobalVal(),this.injectFramework(),this.setShareLib(),this.setRuntimeLib(),this.injectToHtml(),this.setExternal()}injectToHtml(){let{store:e,injectHtml:t}=this;t.length>0&&e.injectTags(t,"EMPShare")}injectFramework(){if(this.fk&&this.fk.libs.length>0)return this.injectFkLibs(this.fk.libs);if(!this.op.empRuntime||!this.fk.lib)return;let{store:e,injectHtml:t}=this;if(this.fk.lib){let s=E(this.fk.lib,e.mode,this.fk.entry);t.push({attributes:{src:s},tagName:"script"})}}injectFkLibs(e){e.map(t=>{if(t.endsWith(".css"))return this.injectHtml.push({attributes:{href:t,rel:"stylesheet"},tagName:"link"});this.injectHtml.push({attributes:{src:t},tagName:"script"})})}injectGlobalVal(){if(!this.op.empRuntime)return;let{empRuntime:e}=this.op,{injectHtml:t}=this,s=this.fk.global||(e.shareLib?"window":"");if(!(e.injectGlobalValToHtml===!1||!this.rt.lib)){let o={frameworkLib:s,runtimeLib:this.rt.global};this.fk.name&&this.fk.name!=="none"&&(o.framework=this.fk.name),t.push({tagName:"script",innerHTML:`EMPShareGlobalVal=${JSON.stringify(o)}`})}}resetFramework(){if(!this.op.empRuntime)return;let{framework:e,frameworkGlobal:t,frameworkLib:s}=this.op.empRuntime;this.fk={name:"none",version:0,entry:"",global:t||"",lib:s||"",libs:[]},typeof e=="string"?this.fk.name=e:typeof e=="object"&&Object.keys(e).length>0&&(e.entry=e.entry?e.entry:e.name,this.fk=h(this.fk,e))}resetRuntime(){var n;let{empRuntime:e}=this.op;if(!e)return;let t=e.runtimeGlobal||k,s=e.runtimeLib?e.runtimeLib:(n=e.runtime)!=null&&n.lib?e.runtime.lib:"";this.rt={lib:s,global:t}}setExternal(){if(!this.op.empRuntime)return;let{store:e,externalsLib:t}=this,{empRuntime:s}=this.op,{shareLib:n}=s,o=this.rt.lib?{"@module-federation/runtime":"MFRuntime","@module-federation/sdk":"MFSDK"}:{},r={};for(let[a,m]of Object.entries(o))r[a]=`${this.rt.global}.${m}`;if(this.fk.name==="react"&&!n&&this.fk.global){let a=this.fk.version,m={react:"React","react-dom":"ReactDOM"};this.fk.entry==="reactRouter"&&(m["react-router-dom"]="ReactRouterDOM");for(let[p,P]of Object.entries(m))r[p]=`${this.fk.global}.${P}`;[17,18,19].includes(a)&&(r["react-dom/client"]=this.fk.global,r["react/jsx-runtime"]=this.fk.global,r["react/jsx-dev-runtime"]=this.fk.global)}n&&t.map(a=>{a.type==="js"&&a.module&&a.global&&(r[a.module]=`${this.fk.global}.${a.global}`)}),s.setExternals&&s.setExternals(r,this.fk.global,this.rt.global),e.chain.merge({externals:r})}setRuntimeLib(){if(!this.op.empRuntime)return;let{shareLib:e}=this.op.empRuntime,{store:t,injectHtml:s}=this,{empRuntime:n}=this.op;this.rt.lib?this.rt.lib==="useFrameworkLib"&&!e||s.push({tagName:"script",pos:"head",attributes:{src:this.rt.lib}}):t.chain.plugin("plugin-emp-share-framework").use(c,[n])}setMfName(){this.op.name?(this.op.name=this.store.encodeVarName(this.op.name),this.op.name!==this.store.empConfig.output.uniqueName&&this.store.chain.output.set("uniqueName",this.op.name)):this.op.name=this.store.empConfig.output.uniqueName}setMF(){var s;let e=this.op,{store:t}=this;if(e.name){let n=t.deepAssign({filename:"emp.js"},e);if(n.empRuntime&&delete n.empRuntime,e.forceRemotes){let o=y({},e.forceRemotes);x(t,e.forceRemotes),delete e.forceRemotes,(s=n.runtimePlugins)==null||s.push([g.resolve(w.join(__dirname,"forceRemote")),o])}t.chain.plugin("plugin-emp-share").use(d,[n])}}setShareLib(){if(!this.op.empRuntime)return;let{shareLib:e}=this.op.empRuntime,{externalsLib:t,injectHtml:s}=this;if(e&&typeof e=="object"){for(let[n,o]of Object.entries(e)){let r={};if(r.module=n,typeof o=="string"){let a=o.match(S)||[];a.length>0?(r.global=a[1],r.entry=a[2],r.type="js",t.push(r),r={}):(r.global="",r.entry=o,r.type="js",t.push(r),r={})}else Array.isArray(o)?o.map(a=>{if(!a)return;if(a.split("?")[0].endsWith(".css"))r.entry=a,r.type="css";else{let p=a.match(S)||[];p.length>0?(r.global=p[1],r.entry=p[2],r.type="js"):(r.global="",r.entry=a,r.type="js")}t.push(r),r={}}):typeof o=="object"&&o.entry&&(r.entry=o.entry,r.global=o.global,r.type=o.type,t.push(r),r={})}t.map(n=>{n.type==="js"?s.push({attributes:{src:n.entry},tagName:"script"}):n.type==="css"&&s.push({attributes:{href:n.entry,rel:"stylesheet"},tagName:"link"})})}}};var ee=(i,e)=>(i=Object.assign(i,{react:`${e}.React`,"react-dom":`${e}.ReactDOM`,"react-dom/client":e,"react/jsx-runtime":e,"react/jsx-dev-runtime":e,"react-router-dom":`${e}.ReactRouterDOM`}),i);var ie=(i,e)=>(i=Object.assign(i,{vue:`${e}.Vue`,"vue-router":`${e}.VueRouter`}),i);var H=(i={})=>({name:"@empjs/share",rsConfig(t){return R(this,null,function*(){i.manifest===!0?i.manifest={fileName:"emp.json"}:typeof i.manifest=="object"&&(i.manifest=t.deepAssign({fileName:"emp.json"},i.manifest)),new u(i,t).setup()})}}),M=H;var ce=M;export{ce as default,ee as externalReact,ie as externalVue,H as pluginRspackEmpShare};
1
+ var P=Object.defineProperty;var O=(i,e,t)=>e in i?P(i,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):i[e]=t;var h=(i=>typeof require!="undefined"?require:typeof Proxy!="undefined"?new Proxy(i,{get:(e,t)=>(typeof require!="undefined"?require:e)[t]}):i)(function(i){if(typeof require!="undefined")return require.apply(this,arguments);throw Error('Dynamic require of "'+i+'" is not supported')});var l=(i,e,t)=>O(i,typeof e!="symbol"?e+"":e,t);var b=(i,e,t)=>new Promise((s,n)=>{var a=m=>{try{o(t.next(m))}catch(p){n(p)}},r=m=>{try{o(t.throw(m))}catch(p){n(p)}},o=m=>m.done?s(m.value):Promise.resolve(m.value).then(a,r);o((t=t.apply(i,e)).next())});var y=i=>`data:text/javascript,${i}`;function f(i,...e){for(let t of e)for(let s in t){let n=t[s],a=i[s];if(Object(n)==n&&Object(a)===a){i[s]=f(a,n);continue}i[s]=t[s]}return i}var L=!1,N=L?console.log.bind(console,"[EMP Share]"):()=>{};var g="EMP_SHARE_RUNTIME",R="EMPShareGlobalVal",j="EMP_FORCE_REMOTES";import{ModuleFederationPlugin as k}from"@empjs/module-federation-rspack";var T=i=>{let e=[`import '${i}'`].join(`
2
+ `);return y(e)},c=class{constructor(e){l(this,"options");this.options=e}apply(e){let{webpack:t}=e,s=T("@empjs/share/library");new t.EntryPlugin(e.context,s,{name:void 0}).apply(e)}};var d=(i,e)=>{Object.keys(e).length>0&&i.injectTags([{innerHTML:`window.${j} = ${JSON.stringify(e)};`,tagName:"script",pos:"head"}],"EMP_FORCE_REMOTES")};function x(i,e,t="runtime"){return typeof i=="string"?t==="runtime"?`${i}/runtime${e==="development"?".development":""}.umd.js`:`${i}/${t}.${e}.umd.js`:typeof i=="object"?e==="development"?i.dev:i.prod:""}var E=/^([0-9a-zA-Z_\s]+)@(.*)/,u=class{constructor(e,t){l(this,"op");l(this,"store");l(this,"injectHtml",[]);l(this,"externalsLib",[]);l(this,"fk");l(this,"rt");this.op=e||{},this.store=t}setup(){this.resetRuntime(),this.resetFramework(),this.setMfName(),this.setMF(),this.injectGlobalVal(),this.injectFramework(),this.setShareLib(),this.setRuntimeLib(),this.injectToHtml(),this.setExternal()}injectToHtml(){let{store:e,injectHtml:t}=this;t.length>0&&e.injectTags(t,"EMPShare")}injectFramework(){if(this.fk&&this.fk.libs.length>0)return this.injectFkLibs(this.fk.libs);if(!this.op.empRuntime||!this.fk.lib)return;let{store:e,injectHtml:t}=this;if(this.fk.lib){let s=x(this.fk.lib,e.mode,this.fk.entry);t.push({attributes:{src:s},tagName:"script"})}}injectFkLibs(e){e.map(t=>{if(t.endsWith(".css"))return this.injectHtml.push({attributes:{href:t,rel:"stylesheet"},tagName:"link"});this.injectHtml.push({attributes:{src:t},tagName:"script"})})}injectGlobalVal(){if(!this.op.empRuntime)return;let{empRuntime:e}=this.op,{injectHtml:t}=this,s=this.fk.global||(e.shareLib?"window":"");if(!(e.injectGlobalValToHtml===!1||!this.rt.lib)){let a={frameworkLib:s,runtimeLib:this.rt.global};this.fk.name&&this.fk.name!=="none"&&(a.framework=this.fk.name),t.push({tagName:"script",innerHTML:`window.${R}=${JSON.stringify(a)}`})}}resetFramework(){if(!this.op.empRuntime)return;let{framework:e,frameworkGlobal:t,frameworkLib:s}=this.op.empRuntime;this.fk={name:"none",version:0,entry:"",global:t||"",lib:s||"",libs:[]},typeof e=="string"?this.fk.name=e:typeof e=="object"&&Object.keys(e).length>0&&(e.entry=e.entry?e.entry:e.name,this.fk=f(this.fk,e))}resetRuntime(){var n;let{empRuntime:e}=this.op;if(!e)return;let t=e.runtimeGlobal||g,s=e.runtimeLib?e.runtimeLib:(n=e.runtime)!=null&&n.lib?e.runtime.lib:"";this.rt={lib:s,global:t}}setExternal(){if(!this.op.empRuntime)return;let{store:e,externalsLib:t}=this,{empRuntime:s}=this.op,{shareLib:n}=s,a=this.rt.lib?{"@module-federation/runtime":"MFRuntime","@module-federation/sdk":"MFSDK"}:{},r={};for(let[o,m]of Object.entries(a))r[o]=`${this.rt.global}.${m}`;if(this.fk.name==="react"&&!n&&this.fk.global){let o=this.fk.version,m={react:"React","react-dom":"ReactDOM"};this.fk.entry==="reactRouter"&&(m["react-router-dom"]="ReactRouterDOM");for(let[p,M]of Object.entries(m))r[p]=`${this.fk.global}.${M}`;[17,18,19].includes(o)&&(r["react-dom/client"]=this.fk.global,r["react/jsx-runtime"]=this.fk.global,r["react/jsx-dev-runtime"]=this.fk.global)}n&&t.map(o=>{o.type==="js"&&o.module&&o.global&&(r[o.module]=`${this.fk.global}.${o.global}`)}),s.setExternals&&s.setExternals(r,this.fk.global,this.rt.global),e.chain.merge({externals:r})}setRuntimeLib(){if(!this.op.empRuntime)return;let{shareLib:e}=this.op.empRuntime,{store:t,injectHtml:s}=this,{empRuntime:n}=this.op;this.rt.lib?this.rt.lib==="useFrameworkLib"&&!e||s.push({tagName:"script",pos:"head",attributes:{src:this.rt.lib}}):t.chain.plugin("plugin-emp-share-framework").use(c,[n])}setMfName(){this.op.name?(this.op.name=this.store.encodeVarName(this.op.name),this.op.name!==this.store.empConfig.output.uniqueName&&this.store.chain.output.set("uniqueName",this.op.name)):this.op.name=this.store.empConfig.output.uniqueName}setMF(){var s;let e=this.op,{store:t}=this;if(e.name){let n=t.deepAssign({filename:"emp.js"},e);n.empRuntime&&delete n.empRuntime,e.forceRemotes&&(d(t,e.forceRemotes),delete e.forceRemotes,(s=n.runtimePlugins)==null||s.push(h.resolve("@empjs/share/forceRemote"))),t.chain.plugin("plugin-emp-share").use(k,[n])}}setShareLib(){if(!this.op.empRuntime)return;let{shareLib:e}=this.op.empRuntime,{externalsLib:t,injectHtml:s}=this;if(e&&typeof e=="object"){for(let[n,a]of Object.entries(e)){let r={};if(r.module=n,typeof a=="string"){let o=a.match(E)||[];o.length>0?(r.global=o[1],r.entry=o[2],r.type="js",t.push(r),r={}):(r.global="",r.entry=a,r.type="js",t.push(r),r={})}else Array.isArray(a)?a.map(o=>{if(!o)return;if(o.split("?")[0].endsWith(".css"))r.entry=o,r.type="css";else{let p=o.match(E)||[];p.length>0?(r.global=p[1],r.entry=p[2],r.type="js"):(r.global="",r.entry=o,r.type="js")}t.push(r),r={}}):typeof a=="object"&&a.entry&&(r.entry=a.entry,r.global=a.global,r.type=a.type,t.push(r),r={})}t.map(n=>{n.type==="js"?s.push({attributes:{src:n.entry},tagName:"script"}):n.type==="css"&&s.push({attributes:{href:n.entry,rel:"stylesheet"},tagName:"link"})})}}};var Q=(i,e)=>(i=Object.assign(i,{react:`${e}.React`,"react-dom":`${e}.ReactDOM`,"react-dom/client":e,"react/jsx-runtime":e,"react/jsx-dev-runtime":e,"react-router-dom":`${e}.ReactRouterDOM`}),i);var Y=(i,e)=>(i=Object.assign(i,{vue:`${e}.Vue`,"vue-router":`${e}.VueRouter`}),i);var v=(i={})=>({name:"@empjs/share",rsConfig(t){return b(this,null,function*(){i.manifest===!0?i.manifest={fileName:"emp.json"}:typeof i.manifest=="object"&&(i.manifest=t.deepAssign({fileName:"emp.json"},i.manifest)),new u(i,t).setup()})}}),S=v;var me=S;export{me as default,Q as externalReact,Y as externalVue,v as pluginRspackEmpShare};
3
3
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/plugins/rspack/share.ts","../src/helper/index.ts","../src/helper/config.ts","../src/helper/rspack.ts","../src/plugins/rspack/plugin.ts","../src/plugins/rspack/runtimePlugin/registerRemotes.ts","../src/plugins/rspack/utils.ts","../src/framework/react/config.ts","../src/framework/vue/config.ts","../src/plugins/rspack/index.ts","../src/index.ts"],"sourcesContent":["import type {GlobalStore} from '@empjs/cli'\nimport path from 'path'\nimport {deepAssign} from 'src/helper'\nimport {shareGlobalName} from 'src/helper/config'\nimport {ModuleFederationPlugin} from 'src/helper/rspack'\nimport {EmpShareRemoteLibPlugin} from './plugin'\nimport {registerRemotes} from './runtimePlugin/registerRemotes'\nimport type {\n EMPPluginShareType,\n ExternalsItemType,\n frameworkOptions,\n ModuleFederationPluginOptions,\n runtimeLibType,\n} from './types'\nimport {getRuntimeLib} from './utils'\n\nconst exp = /^([0-9a-zA-Z_\\s]+)@(.*)/\nexport class EmpShare {\n private op: EMPPluginShareType\n private store: GlobalStore\n /**\n * 注入资源\n */\n private injectHtml: any[] = []\n /**\n * 兼容 shareLib\n */\n private externalsLib: ExternalsItemType[] = []\n constructor(op: EMPPluginShareType, store: GlobalStore) {\n this.op = op || {}\n this.store = store\n }\n setup() {\n this.resetRuntime()\n this.resetFramework()\n this.setMfName() //设置 mfName 默认为 uniqueName\n this.setMF() // 设置 MF 配置\n this.injectGlobalVal() // 插入全局变量 方便emp外的项目调用\n this.injectFramework() // 插入ui框架库\n this.setShareLib() //兼容 emp Sharelib的共享模型设置\n this.setRuntimeLib() // 设置 MF SDK\n this.injectToHtml() //触发插入动作\n this.setExternal() // 设置 external 降低包体\n }\n private injectToHtml() {\n const {store, injectHtml} = this\n if (injectHtml.length > 0) {\n store.injectTags(injectHtml, 'EMPShare')\n }\n }\n private injectFramework() {\n if (this.fk && this.fk.libs.length > 0) {\n return this.injectFkLibs(this.fk.libs)\n }\n if (!this.op.empRuntime || !this.fk.lib) return\n const {store, injectHtml} = this\n if (this.fk.lib) {\n const url = getRuntimeLib(this.fk.lib, store.mode, this.fk.entry)\n injectHtml.push({\n attributes: {\n src: url,\n },\n tagName: 'script',\n })\n }\n }\n private injectFkLibs(libs: string[]) {\n libs.map(url => {\n if (url.endsWith('.css')) {\n return this.injectHtml.push({\n attributes: {\n href: url,\n rel: 'stylesheet',\n },\n tagName: 'link',\n })\n }\n this.injectHtml.push({\n attributes: {\n src: url,\n },\n tagName: 'script',\n })\n })\n }\n private injectGlobalVal() {\n if (!this.op.empRuntime) return\n const {empRuntime} = this.op\n const {injectHtml} = this\n const frameworkGlobal = this.fk.global || (empRuntime.shareLib ? 'window' : '')\n const injectGlobalValToHtml = empRuntime.injectGlobalValToHtml === false || !this.rt.lib ? false : true\n // 插入全局引用变量 让 empRuntime 可以提前实例化 不需要在页面重复实例化\n if (injectGlobalValToHtml) {\n const injectData: any = {frameworkLib: frameworkGlobal, runtimeLib: this.rt.global}\n if (this.fk.name && this.fk.name !== 'none') injectData.framework = this.fk.name\n injectHtml.push({\n // type: 'js',\n tagName: 'script',\n innerHTML: `EMPShareGlobalVal=${JSON.stringify(injectData)}`,\n })\n }\n }\n public fk!: Required<frameworkOptions>\n private resetFramework() {\n if (!this.op.empRuntime) return\n const {framework, frameworkGlobal, frameworkLib} = this.op.empRuntime\n //\n this.fk = {\n name: 'none',\n version: 0,\n entry: '',\n global: frameworkGlobal || '',\n lib: frameworkLib || '',\n libs: [],\n }\n //\n if (typeof framework === 'string') {\n this.fk.name = framework as any\n }\n // TODO 通用 CDN 的适配方案\n else if (typeof framework === 'object' && Object.keys(framework).length > 0) {\n // 默认 框架名 为入口\n framework.entry = framework.entry ? framework.entry : framework.name\n this.fk = deepAssign(this.fk, framework)\n }\n }\n public rt!: Required<runtimeLibType>\n private resetRuntime() {\n const {empRuntime} = this.op\n if (!empRuntime) return\n const global = empRuntime.runtimeGlobal || shareGlobalName\n const lib = empRuntime.runtimeLib ? empRuntime.runtimeLib : empRuntime.runtime?.lib ? empRuntime.runtime.lib : ''\n this.rt = {\n lib,\n global,\n }\n }\n private setExternal() {\n if (!this.op.empRuntime) return\n const {store, externalsLib} = this\n const {empRuntime} = this.op\n const {shareLib} = empRuntime\n //\n const externalRuntime = this.rt.lib\n ? {\n '@module-federation/runtime': `MFRuntime`,\n '@module-federation/sdk': `MFSDK`,\n }\n : {}\n const externals = {}\n for (const [key, value] of Object.entries(externalRuntime)) {\n externals[key] = `${this.rt.global}.${value}`\n }\n /**\n * TODO\n * 框架相关内容需要移除 share 由外部简化配置实现\n */\n if (this.fk.name === 'react' && !shareLib && this.fk.global) {\n const version = this.fk.version\n const externalReact = {\n react: `React`,\n 'react-dom': `ReactDOM`,\n }\n if (this.fk.entry === 'reactRouter') {\n externalReact['react-router-dom'] = 'ReactRouterDOM'\n }\n for (const [key, value] of Object.entries(externalReact)) {\n externals[key] = `${this.fk.global}.${value}`\n }\n if ([17, 18, 19].includes(version)) {\n externals['react-dom/client'] = this.fk.global\n externals['react/jsx-runtime'] = this.fk.global\n externals['react/jsx-dev-runtime'] = this.fk.global\n }\n }\n if (shareLib) {\n externalsLib.map(v => {\n if (v.type === 'js' && v.module && v.global) {\n externals[v.module] = `${this.fk.global}.${v.global}`\n }\n })\n }\n if (empRuntime.setExternals) empRuntime.setExternals(externals, this.fk.global, this.rt.global)\n //\n // console.log('externals in plugin', externals)\n store.chain.merge({externals})\n }\n private setRuntimeLib() {\n if (!this.op.empRuntime) return\n\n const {shareLib} = this.op.empRuntime\n const {store, injectHtml} = this\n const {empRuntime} = this.op\n if (!this.rt.lib) {\n // 内置 this.rt.lib\n store.chain.plugin('plugin-emp-share-framework').use(EmpShareRemoteLibPlugin, [empRuntime])\n }\n // 统一封装到 frameworkLib\n else if (this.rt.lib === 'useFrameworkLib' && !shareLib) {\n } else {\n // 插入 runtime\n injectHtml.push({tagName: 'script', pos: 'head', attributes: {src: this.rt.lib}})\n }\n }\n private setMfName() {\n if (this.op.name) {\n this.op.name = this.store.encodeVarName(this.op.name)\n if (this.op.name !== this.store.empConfig.output.uniqueName) {\n this.store.chain.output.set('uniqueName', this.op.name)\n }\n } else {\n this.op.name = this.store.empConfig.output.uniqueName\n }\n }\n private setMF() {\n const o = this.op\n const {store} = this\n if (o.name) {\n const op = store.deepAssign<ModuleFederationPluginOptions & {empRuntime: any}>(\n {\n filename: 'emp.js',\n // manifest: false,\n // dts: false,\n // dev: {\n // disableDynamicRemoteTypeHints: true,\n // },\n },\n o,\n )\n //\n // if (o.dev === false) op.dev = false\n //\n if (op.empRuntime) {\n delete op.empRuntime\n }\n /**\n * 注册 forceRemotes\n */\n if (o.forceRemotes) {\n //\n const forceRemotes = {...o.forceRemotes}\n //\n registerRemotes(store, o.forceRemotes)\n delete o.forceRemotes\n op.runtimePlugins?.push([require.resolve(path.join(__dirname, 'forceRemote')), forceRemotes])\n }\n // console.log('op', op)\n store.chain.plugin('plugin-emp-share').use(ModuleFederationPlugin, [op])\n }\n }\n private setShareLib() {\n if (!this.op.empRuntime) return\n const {shareLib} = this.op.empRuntime\n const {externalsLib, injectHtml} = this\n if (shareLib && typeof shareLib === 'object') {\n for (const [k, v] of Object.entries(shareLib)) {\n let externalsItem: ExternalsItemType = {}\n externalsItem.module = k\n //增加下划线 支持lodash 等特殊符号的问题 如 _@http\n\n if (typeof v === 'string') {\n const cb: any = v.match(exp) || []\n if (cb.length > 0) {\n externalsItem.global = cb[1]\n externalsItem.entry = cb[2]\n externalsItem.type = 'js'\n externalsLib.push(externalsItem)\n externalsItem = {}\n } else {\n externalsItem.global = ''\n externalsItem.entry = v\n externalsItem.type = 'js'\n externalsLib.push(externalsItem)\n externalsItem = {}\n }\n } else if (Array.isArray(v)) {\n v.map(vo => {\n if (!vo) return\n const isCSS = vo.split('?')[0].endsWith('.css')\n if (isCSS) {\n externalsItem.entry = vo\n externalsItem.type = 'css'\n } else {\n const cb: any = vo.match(exp) || []\n if (cb.length > 0) {\n externalsItem.global = cb[1]\n externalsItem.entry = cb[2]\n externalsItem.type = 'js'\n } else {\n externalsItem.global = ''\n externalsItem.entry = vo\n externalsItem.type = 'js'\n }\n }\n externalsLib.push(externalsItem)\n externalsItem = {}\n })\n } else if (typeof v === 'object' && v.entry) {\n externalsItem.entry = v.entry\n externalsItem.global = v.global\n externalsItem.type = v.type\n externalsLib.push(externalsItem)\n externalsItem = {}\n }\n }\n // console.log(externalsLib)\n externalsLib.map(v => {\n if (v.type === 'js') {\n injectHtml.push({\n attributes: {\n src: v.entry,\n },\n tagName: 'script',\n })\n } else if (v.type === 'css') {\n injectHtml.push({\n attributes: {\n href: v.entry,\n rel: 'stylesheet',\n },\n tagName: 'link',\n })\n }\n })\n }\n }\n}\n","export const importJsVm = (content: string) => `data:text/javascript,${content}`\n\nexport function deepAssign<T>(target: any, ...sources: any): T {\n for (const source of sources) {\n for (const k in source) {\n const vs = source[k],\n vt = target[k]\n if (Object(vs) == vs && Object(vt) === vt) {\n target[k] = deepAssign(vt, vs)\n continue\n }\n target[k] = source[k]\n }\n }\n return target\n}\n\nexport const checkVersion = (version: string) => (version ? Number(version.split('.')[0]) : 0)\nexport const isPromise = (p: any) => p && Object.prototype.toString.call(p) === '[object Promise]'\n\n//\nexport const isDev = process.env.EMPSHARE_ENV === 'dev'\nexport const log = isDev ? console.log.bind(console, '[EMP Share]') : () => {}\n","export const shareGlobalName = 'EMP_SHARE_RUNTIME'\n","// export {ModuleFederationPlugin} from '@module-federation/rspack'\nexport {ModuleFederationPlugin} from '@empjs/module-federation-rspack'\n","import {Compiler} from '@empjs/cli'\nimport {importJsVm} from 'src/helper'\nimport type {EMPSHARERuntimeOptions} from './types'\n\nconst getShareRuntimeEntry = url => {\n const content = [`import '${url}'`].join('\\n')\n return importJsVm(content)\n}\n// 当没有设置 runtimeLib 时候需要内置\nexport class EmpShareRemoteLibPlugin {\n options: EMPSHARERuntimeOptions\n constructor(op: EMPSHARERuntimeOptions) {\n this.options = op\n }\n apply(compiler: Compiler) {\n const {webpack} = compiler\n const entry = getShareRuntimeEntry('@empjs/share/library')\n new webpack.EntryPlugin(compiler.context, entry, {\n name: undefined,\n }).apply(compiler)\n }\n}\n","import {type GlobalStore} from '@empjs/cli'\nimport {ForceRemoteOptions} from '../types'\n\nexport const registerRemotes = (store: GlobalStore, forceRemotes: ForceRemoteOptions) => {\n if (Object.keys(forceRemotes).length > 0) {\n store.injectTags(\n [\n {\n innerHTML: `window.EMP_FORCE_REMOTES = ${JSON.stringify(forceRemotes)};`,\n tagName: 'script',\n pos: 'head',\n },\n ],\n 'EMP_FORCE_REMOTES',\n )\n }\n}\n","import type {EMPSHARERuntimeOptions} from './types'\nexport function getRuntimeLib(host: EMPSHARERuntimeOptions['frameworkLib'], mode: string, entry = 'runtime') {\n if (typeof host === 'string') {\n if (entry === 'runtime') {\n return `${host}/runtime${mode === 'development' ? '.development' : ''}.umd.js`\n } else {\n return `${host}/${entry}.${mode}.umd.js`\n }\n } else if (typeof host === 'object') {\n if (mode === 'development') return host.dev\n else return host.prod\n }\n return ''\n}\n","export const externalReact = (o: any, globalVal: string) => {\n o = Object.assign(o, {\n react: `${globalVal}.React`,\n 'react-dom': `${globalVal}.ReactDOM`,\n 'react-dom/client': globalVal,\n 'react/jsx-runtime': globalVal,\n 'react/jsx-dev-runtime': globalVal,\n 'react-router-dom': `${globalVal}.ReactRouterDOM`,\n })\n return o\n}\n","export const externalVue = (o: any, globalVal: string) => {\n o = Object.assign(o, {\n vue: `${globalVal}.Vue`,\n 'vue-router': `${globalVal}.VueRouter`,\n })\n return o\n}\n","import type {GlobalStore} from '@empjs/cli'\nimport {EmpShare} from './share'\nimport type {EMPPluginShareType} from './types'\nexport type {EMPPluginShareType}\n//\nexport * from 'src/framework/react/config'\nexport * from 'src/framework/vue/config'\nexport * from './types'\n//\nexport const pluginRspackEmpShare = (o: EMPPluginShareType = {}) => {\n return {\n name: '@empjs/share',\n async rsConfig(store: GlobalStore) {\n //\n if (o.manifest === true) {\n o.manifest = {\n fileName: 'emp.json',\n }\n } else if (typeof o.manifest === 'object') {\n o.manifest = store.deepAssign({fileName: 'emp.json'}, o.manifest)\n }\n const empShare = new EmpShare(o, store)\n empShare.setup()\n },\n }\n}\nexport default pluginRspackEmpShare\n","import {default as pluginRspackEmpShare} from 'src/plugins/rspack'\nexport default pluginRspackEmpShare\nexport * from 'src/plugins/rspack'\n"],"mappings":"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","names":["path","importJsVm","content","deepAssign","target","sources","source","k","vs","vt","isDev","log","shareGlobalName","ModuleFederationPlugin","getShareRuntimeEntry","url","content","importJsVm","EmpShareRemoteLibPlugin","op","__publicField","compiler","webpack","entry","registerRemotes","store","forceRemotes","getRuntimeLib","host","mode","entry","exp","EmpShare","op","store","__publicField","injectHtml","url","getRuntimeLib","libs","empRuntime","frameworkGlobal","injectData","framework","frameworkLib","deepAssign","_a","global","shareGlobalName","lib","externalsLib","shareLib","externalRuntime","externals","key","value","version","externalReact","v","EmpShareRemoteLibPlugin","o","forceRemotes","__spreadValues","registerRemotes","__require","path","ModuleFederationPlugin","k","externalsItem","cb","vo","externalReact","o","globalVal","externalVue","o","globalVal","pluginRspackEmpShare","o","store","__async","EmpShare","rspack_default","src_default","rspack_default"]}
1
+ {"version":3,"sources":["../src/helper/index.ts","../src/helper/config.ts","../src/helper/rspack.ts","../src/plugins/rspack/plugin.ts","../src/plugins/rspack/runtimePlugin/registerRemotes.ts","../src/plugins/rspack/utils.ts","../src/plugins/rspack/share.ts","../src/framework/react/config.ts","../src/framework/vue/config.ts","../src/plugins/rspack/index.ts","../src/index.ts"],"sourcesContent":["export const importJsVm = (content: string) => `data:text/javascript,${content}`\n\nexport function deepAssign<T>(target: any, ...sources: any): T {\n for (const source of sources) {\n for (const k in source) {\n const vs = source[k],\n vt = target[k]\n if (Object(vs) == vs && Object(vt) === vt) {\n target[k] = deepAssign(vt, vs)\n continue\n }\n target[k] = source[k]\n }\n }\n return target\n}\n\nexport const checkVersion = (version: string) => (version ? Number(version.split('.')[0]) : 0)\nexport const isPromise = (p: any) => p && Object.prototype.toString.call(p) === '[object Promise]'\n\n//\nexport const isDev = process.env.EMPSHARE_ENV === 'dev'\nexport const log = isDev ? console.log.bind(console, '[EMP Share]') : () => {}\n","export const shareGlobalName = 'EMP_SHARE_RUNTIME'\nexport const shareGlobalVal = 'EMPShareGlobalVal'\nexport const shareForceRemote = 'EMP_FORCE_REMOTES'\n","// export {ModuleFederationPlugin} from '@module-federation/rspack'\nexport {ModuleFederationPlugin} from '@empjs/module-federation-rspack'\n","import {Compiler} from '@empjs/cli'\nimport {importJsVm} from 'src/helper'\nimport type {EMPSHARERuntimeOptions} from './types'\n\nconst getShareRuntimeEntry = url => {\n const content = [`import '${url}'`].join('\\n')\n return importJsVm(content)\n}\n// 当没有设置 runtimeLib 时候需要内置\nexport class EmpShareRemoteLibPlugin {\n options: EMPSHARERuntimeOptions\n constructor(op: EMPSHARERuntimeOptions) {\n this.options = op\n }\n apply(compiler: Compiler) {\n const {webpack} = compiler\n const entry = getShareRuntimeEntry('@empjs/share/library')\n new webpack.EntryPlugin(compiler.context, entry, {\n name: undefined,\n }).apply(compiler)\n }\n}\n","import {type GlobalStore} from '@empjs/cli'\nimport {shareForceRemote} from 'src/helper/config'\nimport {ForceRemoteOptions} from '../types'\n\nexport const registerRemotes = (store: GlobalStore, forceRemotes: ForceRemoteOptions) => {\n if (Object.keys(forceRemotes).length > 0) {\n store.injectTags(\n [\n {\n innerHTML: `window.${shareForceRemote} = ${JSON.stringify(forceRemotes)};`,\n tagName: 'script',\n pos: 'head',\n },\n ],\n 'EMP_FORCE_REMOTES',\n )\n }\n}\n","import type {EMPSHARERuntimeOptions} from './types'\nexport function getRuntimeLib(host: EMPSHARERuntimeOptions['frameworkLib'], mode: string, entry = 'runtime') {\n if (typeof host === 'string') {\n if (entry === 'runtime') {\n return `${host}/runtime${mode === 'development' ? '.development' : ''}.umd.js`\n } else {\n return `${host}/${entry}.${mode}.umd.js`\n }\n } else if (typeof host === 'object') {\n if (mode === 'development') return host.dev\n else return host.prod\n }\n return ''\n}\n","import type {GlobalStore} from '@empjs/cli'\nimport {deepAssign} from 'src/helper'\nimport {shareGlobalName, shareGlobalVal} from 'src/helper/config'\nimport {ModuleFederationPlugin} from 'src/helper/rspack'\nimport {EmpShareRemoteLibPlugin} from './plugin'\nimport {registerRemotes} from './runtimePlugin/registerRemotes'\nimport type {\n EMPPluginShareType,\n ExternalsItemType,\n frameworkOptions,\n ModuleFederationPluginOptions,\n runtimeLibType,\n} from './types'\nimport {getRuntimeLib} from './utils'\n\nconst exp = /^([0-9a-zA-Z_\\s]+)@(.*)/\nexport class EmpShare {\n private op: EMPPluginShareType\n private store: GlobalStore\n /**\n * 注入资源\n */\n private injectHtml: any[] = []\n /**\n * 兼容 shareLib\n */\n private externalsLib: ExternalsItemType[] = []\n constructor(op: EMPPluginShareType, store: GlobalStore) {\n this.op = op || {}\n this.store = store\n }\n setup() {\n this.resetRuntime()\n this.resetFramework()\n this.setMfName() //设置 mfName 默认为 uniqueName\n this.setMF() // 设置 MF 配置\n this.injectGlobalVal() // 插入全局变量 方便emp外的项目调用\n this.injectFramework() // 插入ui框架库\n this.setShareLib() //兼容 emp Sharelib的共享模型设置\n this.setRuntimeLib() // 设置 MF SDK\n this.injectToHtml() //触发插入动作\n this.setExternal() // 设置 external 降低包体\n }\n private injectToHtml() {\n const {store, injectHtml} = this\n if (injectHtml.length > 0) {\n store.injectTags(injectHtml, 'EMPShare')\n }\n }\n private injectFramework() {\n if (this.fk && this.fk.libs.length > 0) {\n return this.injectFkLibs(this.fk.libs)\n }\n if (!this.op.empRuntime || !this.fk.lib) return\n const {store, injectHtml} = this\n if (this.fk.lib) {\n const url = getRuntimeLib(this.fk.lib, store.mode, this.fk.entry)\n injectHtml.push({\n attributes: {\n src: url,\n },\n tagName: 'script',\n })\n }\n }\n private injectFkLibs(libs: string[]) {\n libs.map(url => {\n if (url.endsWith('.css')) {\n return this.injectHtml.push({\n attributes: {\n href: url,\n rel: 'stylesheet',\n },\n tagName: 'link',\n })\n }\n this.injectHtml.push({\n attributes: {\n src: url,\n },\n tagName: 'script',\n })\n })\n }\n private injectGlobalVal() {\n if (!this.op.empRuntime) return\n const {empRuntime} = this.op\n const {injectHtml} = this\n const frameworkGlobal = this.fk.global || (empRuntime.shareLib ? 'window' : '')\n const injectGlobalValToHtml = empRuntime.injectGlobalValToHtml === false || !this.rt.lib ? false : true\n // 插入全局引用变量 让 empRuntime 可以提前实例化 不需要在页面重复实例化\n if (injectGlobalValToHtml) {\n const injectData: any = {frameworkLib: frameworkGlobal, runtimeLib: this.rt.global}\n if (this.fk.name && this.fk.name !== 'none') injectData.framework = this.fk.name\n injectHtml.push({\n // type: 'js',\n tagName: 'script',\n innerHTML: `window.${shareGlobalVal}=${JSON.stringify(injectData)}`,\n })\n }\n }\n public fk!: Required<frameworkOptions>\n private resetFramework() {\n if (!this.op.empRuntime) return\n const {framework, frameworkGlobal, frameworkLib} = this.op.empRuntime\n //\n this.fk = {\n name: 'none',\n version: 0,\n entry: '',\n global: frameworkGlobal || '',\n lib: frameworkLib || '',\n libs: [],\n }\n //\n if (typeof framework === 'string') {\n this.fk.name = framework as any\n }\n // TODO 通用 CDN 的适配方案\n else if (typeof framework === 'object' && Object.keys(framework).length > 0) {\n // 默认 框架名 为入口\n framework.entry = framework.entry ? framework.entry : framework.name\n this.fk = deepAssign(this.fk, framework)\n }\n }\n public rt!: Required<runtimeLibType>\n private resetRuntime() {\n const {empRuntime} = this.op\n if (!empRuntime) return\n const global = empRuntime.runtimeGlobal || shareGlobalName\n const lib = empRuntime.runtimeLib ? empRuntime.runtimeLib : empRuntime.runtime?.lib ? empRuntime.runtime.lib : ''\n this.rt = {\n lib,\n global,\n }\n }\n private setExternal() {\n if (!this.op.empRuntime) return\n const {store, externalsLib} = this\n const {empRuntime} = this.op\n const {shareLib} = empRuntime\n //\n const externalRuntime = this.rt.lib\n ? {\n '@module-federation/runtime': `MFRuntime`,\n '@module-federation/sdk': `MFSDK`,\n }\n : {}\n const externals = {}\n for (const [key, value] of Object.entries(externalRuntime)) {\n externals[key] = `${this.rt.global}.${value}`\n }\n /**\n * TODO\n * 框架相关内容需要移除 share 由外部简化配置实现\n */\n if (this.fk.name === 'react' && !shareLib && this.fk.global) {\n const version = this.fk.version\n const externalReact = {\n react: `React`,\n 'react-dom': `ReactDOM`,\n }\n if (this.fk.entry === 'reactRouter') {\n externalReact['react-router-dom'] = 'ReactRouterDOM'\n }\n for (const [key, value] of Object.entries(externalReact)) {\n externals[key] = `${this.fk.global}.${value}`\n }\n if ([17, 18, 19].includes(version)) {\n externals['react-dom/client'] = this.fk.global\n externals['react/jsx-runtime'] = this.fk.global\n externals['react/jsx-dev-runtime'] = this.fk.global\n }\n }\n if (shareLib) {\n externalsLib.map(v => {\n if (v.type === 'js' && v.module && v.global) {\n externals[v.module] = `${this.fk.global}.${v.global}`\n }\n })\n }\n if (empRuntime.setExternals) empRuntime.setExternals(externals, this.fk.global, this.rt.global)\n //\n // console.log('externals in plugin', externals)\n store.chain.merge({externals})\n }\n private setRuntimeLib() {\n if (!this.op.empRuntime) return\n\n const {shareLib} = this.op.empRuntime\n const {store, injectHtml} = this\n const {empRuntime} = this.op\n if (!this.rt.lib) {\n // 内置 this.rt.lib\n store.chain.plugin('plugin-emp-share-framework').use(EmpShareRemoteLibPlugin, [empRuntime])\n }\n // 统一封装到 frameworkLib\n else if (this.rt.lib === 'useFrameworkLib' && !shareLib) {\n } else {\n // 插入 runtime\n injectHtml.push({tagName: 'script', pos: 'head', attributes: {src: this.rt.lib}})\n }\n }\n private setMfName() {\n if (this.op.name) {\n this.op.name = this.store.encodeVarName(this.op.name)\n if (this.op.name !== this.store.empConfig.output.uniqueName) {\n this.store.chain.output.set('uniqueName', this.op.name)\n }\n } else {\n this.op.name = this.store.empConfig.output.uniqueName\n }\n }\n private setMF() {\n const o = this.op\n const {store} = this\n if (o.name) {\n const op = store.deepAssign<ModuleFederationPluginOptions & {empRuntime: any}>(\n {\n filename: 'emp.js',\n // manifest: false,\n // dts: false,\n // dev: {\n // disableDynamicRemoteTypeHints: true,\n // },\n },\n o,\n )\n //\n // if (o.dev === false) op.dev = false\n //\n if (op.empRuntime) {\n delete op.empRuntime\n }\n /**\n * 注册 forceRemotes\n */\n if (o.forceRemotes) {\n registerRemotes(store, o.forceRemotes)\n delete o.forceRemotes\n op.runtimePlugins?.push(require.resolve('@empjs/share/forceRemote'))\n }\n // console.log('op', op)\n store.chain.plugin('plugin-emp-share').use(ModuleFederationPlugin, [op])\n }\n }\n private setShareLib() {\n if (!this.op.empRuntime) return\n const {shareLib} = this.op.empRuntime\n const {externalsLib, injectHtml} = this\n if (shareLib && typeof shareLib === 'object') {\n for (const [k, v] of Object.entries(shareLib)) {\n let externalsItem: ExternalsItemType = {}\n externalsItem.module = k\n //增加下划线 支持lodash 等特殊符号的问题 如 _@http\n\n if (typeof v === 'string') {\n const cb: any = v.match(exp) || []\n if (cb.length > 0) {\n externalsItem.global = cb[1]\n externalsItem.entry = cb[2]\n externalsItem.type = 'js'\n externalsLib.push(externalsItem)\n externalsItem = {}\n } else {\n externalsItem.global = ''\n externalsItem.entry = v\n externalsItem.type = 'js'\n externalsLib.push(externalsItem)\n externalsItem = {}\n }\n } else if (Array.isArray(v)) {\n v.map(vo => {\n if (!vo) return\n const isCSS = vo.split('?')[0].endsWith('.css')\n if (isCSS) {\n externalsItem.entry = vo\n externalsItem.type = 'css'\n } else {\n const cb: any = vo.match(exp) || []\n if (cb.length > 0) {\n externalsItem.global = cb[1]\n externalsItem.entry = cb[2]\n externalsItem.type = 'js'\n } else {\n externalsItem.global = ''\n externalsItem.entry = vo\n externalsItem.type = 'js'\n }\n }\n externalsLib.push(externalsItem)\n externalsItem = {}\n })\n } else if (typeof v === 'object' && v.entry) {\n externalsItem.entry = v.entry\n externalsItem.global = v.global\n externalsItem.type = v.type\n externalsLib.push(externalsItem)\n externalsItem = {}\n }\n }\n // console.log(externalsLib)\n externalsLib.map(v => {\n if (v.type === 'js') {\n injectHtml.push({\n attributes: {\n src: v.entry,\n },\n tagName: 'script',\n })\n } else if (v.type === 'css') {\n injectHtml.push({\n attributes: {\n href: v.entry,\n rel: 'stylesheet',\n },\n tagName: 'link',\n })\n }\n })\n }\n }\n}\n","export const externalReact = (o: any, globalVal: string) => {\n o = Object.assign(o, {\n react: `${globalVal}.React`,\n 'react-dom': `${globalVal}.ReactDOM`,\n 'react-dom/client': globalVal,\n 'react/jsx-runtime': globalVal,\n 'react/jsx-dev-runtime': globalVal,\n 'react-router-dom': `${globalVal}.ReactRouterDOM`,\n })\n return o\n}\n","export const externalVue = (o: any, globalVal: string) => {\n o = Object.assign(o, {\n vue: `${globalVal}.Vue`,\n 'vue-router': `${globalVal}.VueRouter`,\n })\n return o\n}\n","import type {GlobalStore} from '@empjs/cli'\nimport {EmpShare} from './share'\nimport type {EMPPluginShareType} from './types'\nexport type {EMPPluginShareType}\n//\nexport * from 'src/framework/react/config'\nexport * from 'src/framework/vue/config'\nexport * from './types'\n//\nexport const pluginRspackEmpShare = (o: EMPPluginShareType = {}) => {\n return {\n name: '@empjs/share',\n async rsConfig(store: GlobalStore) {\n //\n if (o.manifest === true) {\n o.manifest = {\n fileName: 'emp.json',\n }\n } else if (typeof o.manifest === 'object') {\n o.manifest = store.deepAssign({fileName: 'emp.json'}, o.manifest)\n }\n const empShare = new EmpShare(o, store)\n empShare.setup()\n },\n }\n}\nexport default pluginRspackEmpShare\n","import {default as pluginRspackEmpShare} from 'src/plugins/rspack'\nexport default pluginRspackEmpShare\nexport * from 'src/plugins/rspack'\n"],"mappings":"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","names":["importJsVm","content","deepAssign","target","sources","source","k","vs","vt","isDev","log","shareGlobalName","shareGlobalVal","shareForceRemote","ModuleFederationPlugin","getShareRuntimeEntry","url","content","importJsVm","EmpShareRemoteLibPlugin","op","__publicField","compiler","webpack","entry","registerRemotes","store","forceRemotes","shareForceRemote","getRuntimeLib","host","mode","entry","exp","EmpShare","op","store","__publicField","injectHtml","url","getRuntimeLib","libs","empRuntime","frameworkGlobal","injectData","shareGlobalVal","framework","frameworkLib","deepAssign","_a","global","shareGlobalName","lib","externalsLib","shareLib","externalRuntime","externals","key","value","version","externalReact","v","EmpShareRemoteLibPlugin","o","registerRemotes","__require","ModuleFederationPlugin","k","externalsItem","cb","vo","externalReact","o","globalVal","externalVue","o","globalVal","pluginRspackEmpShare","o","store","__async","EmpShare","rspack_default","src_default","rspack_default"]}
package/dist/rspack.cjs CHANGED
@@ -1,3 +1,3 @@
1
- "use strict";var v=Object.create;var c=Object.defineProperty;var N=Object.getOwnPropertyDescriptor;var w=Object.getOwnPropertyNames,g=Object.getOwnPropertySymbols,H=Object.getPrototypeOf,R=Object.prototype.hasOwnProperty,$=Object.prototype.propertyIsEnumerable;var h=(i,e,t)=>e in i?c(i,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):i[e]=t,j=(i,e)=>{for(var t in e||(e={}))R.call(e,t)&&h(i,t,e[t]);if(g)for(var t of g(e))$.call(e,t)&&h(i,t,e[t]);return i};var F=(i,e)=>{for(var t in e)c(i,t,{get:e[t],enumerable:!0})},k=(i,e,t,s)=>{if(e&&typeof e=="object"||typeof e=="function")for(let n of w(e))!R.call(i,n)&&n!==t&&c(i,n,{get:()=>e[n],enumerable:!(s=N(e,n))||s.enumerable});return i};var G=(i,e,t)=>(t=i!=null?v(H(i)):{},k(e||!i||!i.__esModule?c(t,"default",{value:i,enumerable:!0}):t,i)),A=i=>k(c({},"__esModule",{value:!0}),i);var l=(i,e,t)=>h(i,typeof e!="symbol"?e+"":e,t);var d=(i,e,t)=>new Promise((s,n)=>{var o=m=>{try{a(t.next(m))}catch(p){n(p)}},r=m=>{try{a(t.throw(m))}catch(p){n(p)}},a=m=>m.done?s(m.value):Promise.resolve(m.value).then(o,r);a((t=t.apply(i,e)).next())});var I={};F(I,{default:()=>q,externalReact:()=>V,externalVue:()=>D,pluginRspackEmpShare:()=>L});module.exports=A(I);var O=G(require("path"),1);var x=i=>`data:text/javascript,${i}`;function b(i,...e){for(let t of e)for(let s in t){let n=t[s],o=i[s];if(Object(n)==n&&Object(o)===o){i[s]=b(o,n);continue}i[s]=t[s]}return i}var _=!1,W=_?console.log.bind(console,"[EMP Share]"):()=>{};var E="EMP_SHARE_RUNTIME";var y=require("@empjs/module-federation-rspack");var C=i=>{let e=[`import '${i}'`].join(`
2
- `);return x(e)},u=class{constructor(e){l(this,"options");this.options=e}apply(e){let{webpack:t}=e,s=C("@empjs/share/library");new t.EntryPlugin(e.context,s,{name:void 0}).apply(e)}};var S=(i,e)=>{Object.keys(e).length>0&&i.injectTags([{innerHTML:`window.EMP_FORCE_REMOTES = ${JSON.stringify(e)};`,tagName:"script",pos:"head"}],"EMP_FORCE_REMOTES")};function M(i,e,t="runtime"){return typeof i=="string"?t==="runtime"?`${i}/runtime${e==="development"?".development":""}.umd.js`:`${i}/${t}.${e}.umd.js`:typeof i=="object"?e==="development"?i.dev:i.prod:""}var P=/^([0-9a-zA-Z_\s]+)@(.*)/,f=class{constructor(e,t){l(this,"op");l(this,"store");l(this,"injectHtml",[]);l(this,"externalsLib",[]);l(this,"fk");l(this,"rt");this.op=e||{},this.store=t}setup(){this.resetRuntime(),this.resetFramework(),this.setMfName(),this.setMF(),this.injectGlobalVal(),this.injectFramework(),this.setShareLib(),this.setRuntimeLib(),this.injectToHtml(),this.setExternal()}injectToHtml(){let{store:e,injectHtml:t}=this;t.length>0&&e.injectTags(t,"EMPShare")}injectFramework(){if(this.fk&&this.fk.libs.length>0)return this.injectFkLibs(this.fk.libs);if(!this.op.empRuntime||!this.fk.lib)return;let{store:e,injectHtml:t}=this;if(this.fk.lib){let s=M(this.fk.lib,e.mode,this.fk.entry);t.push({attributes:{src:s},tagName:"script"})}}injectFkLibs(e){e.map(t=>{if(t.endsWith(".css"))return this.injectHtml.push({attributes:{href:t,rel:"stylesheet"},tagName:"link"});this.injectHtml.push({attributes:{src:t},tagName:"script"})})}injectGlobalVal(){if(!this.op.empRuntime)return;let{empRuntime:e}=this.op,{injectHtml:t}=this,s=this.fk.global||(e.shareLib?"window":"");if(!(e.injectGlobalValToHtml===!1||!this.rt.lib)){let o={frameworkLib:s,runtimeLib:this.rt.global};this.fk.name&&this.fk.name!=="none"&&(o.framework=this.fk.name),t.push({tagName:"script",innerHTML:`EMPShareGlobalVal=${JSON.stringify(o)}`})}}resetFramework(){if(!this.op.empRuntime)return;let{framework:e,frameworkGlobal:t,frameworkLib:s}=this.op.empRuntime;this.fk={name:"none",version:0,entry:"",global:t||"",lib:s||"",libs:[]},typeof e=="string"?this.fk.name=e:typeof e=="object"&&Object.keys(e).length>0&&(e.entry=e.entry?e.entry:e.name,this.fk=b(this.fk,e))}resetRuntime(){var n;let{empRuntime:e}=this.op;if(!e)return;let t=e.runtimeGlobal||E,s=e.runtimeLib?e.runtimeLib:(n=e.runtime)!=null&&n.lib?e.runtime.lib:"";this.rt={lib:s,global:t}}setExternal(){if(!this.op.empRuntime)return;let{store:e,externalsLib:t}=this,{empRuntime:s}=this.op,{shareLib:n}=s,o=this.rt.lib?{"@module-federation/runtime":"MFRuntime","@module-federation/sdk":"MFSDK"}:{},r={};for(let[a,m]of Object.entries(o))r[a]=`${this.rt.global}.${m}`;if(this.fk.name==="react"&&!n&&this.fk.global){let a=this.fk.version,m={react:"React","react-dom":"ReactDOM"};this.fk.entry==="reactRouter"&&(m["react-router-dom"]="ReactRouterDOM");for(let[p,T]of Object.entries(m))r[p]=`${this.fk.global}.${T}`;[17,18,19].includes(a)&&(r["react-dom/client"]=this.fk.global,r["react/jsx-runtime"]=this.fk.global,r["react/jsx-dev-runtime"]=this.fk.global)}n&&t.map(a=>{a.type==="js"&&a.module&&a.global&&(r[a.module]=`${this.fk.global}.${a.global}`)}),s.setExternals&&s.setExternals(r,this.fk.global,this.rt.global),e.chain.merge({externals:r})}setRuntimeLib(){if(!this.op.empRuntime)return;let{shareLib:e}=this.op.empRuntime,{store:t,injectHtml:s}=this,{empRuntime:n}=this.op;this.rt.lib?this.rt.lib==="useFrameworkLib"&&!e||s.push({tagName:"script",pos:"head",attributes:{src:this.rt.lib}}):t.chain.plugin("plugin-emp-share-framework").use(u,[n])}setMfName(){this.op.name?(this.op.name=this.store.encodeVarName(this.op.name),this.op.name!==this.store.empConfig.output.uniqueName&&this.store.chain.output.set("uniqueName",this.op.name)):this.op.name=this.store.empConfig.output.uniqueName}setMF(){var s;let e=this.op,{store:t}=this;if(e.name){let n=t.deepAssign({filename:"emp.js"},e);if(n.empRuntime&&delete n.empRuntime,e.forceRemotes){let o=j({},e.forceRemotes);S(t,e.forceRemotes),delete e.forceRemotes,(s=n.runtimePlugins)==null||s.push([require.resolve(O.default.join(__dirname,"forceRemote")),o])}t.chain.plugin("plugin-emp-share").use(y.ModuleFederationPlugin,[n])}}setShareLib(){if(!this.op.empRuntime)return;let{shareLib:e}=this.op.empRuntime,{externalsLib:t,injectHtml:s}=this;if(e&&typeof e=="object"){for(let[n,o]of Object.entries(e)){let r={};if(r.module=n,typeof o=="string"){let a=o.match(P)||[];a.length>0?(r.global=a[1],r.entry=a[2],r.type="js",t.push(r),r={}):(r.global="",r.entry=o,r.type="js",t.push(r),r={})}else Array.isArray(o)?o.map(a=>{if(!a)return;if(a.split("?")[0].endsWith(".css"))r.entry=a,r.type="css";else{let p=a.match(P)||[];p.length>0?(r.global=p[1],r.entry=p[2],r.type="js"):(r.global="",r.entry=a,r.type="js")}t.push(r),r={}}):typeof o=="object"&&o.entry&&(r.entry=o.entry,r.global=o.global,r.type=o.type,t.push(r),r={})}t.map(n=>{n.type==="js"?s.push({attributes:{src:n.entry},tagName:"script"}):n.type==="css"&&s.push({attributes:{href:n.entry,rel:"stylesheet"},tagName:"link"})})}}};var V=(i,e)=>(i=Object.assign(i,{react:`${e}.React`,"react-dom":`${e}.ReactDOM`,"react-dom/client":e,"react/jsx-runtime":e,"react/jsx-dev-runtime":e,"react-router-dom":`${e}.ReactRouterDOM`}),i);var D=(i,e)=>(i=Object.assign(i,{vue:`${e}.Vue`,"vue-router":`${e}.VueRouter`}),i);var L=(i={})=>({name:"@empjs/share",rsConfig(t){return d(this,null,function*(){i.manifest===!0?i.manifest={fileName:"emp.json"}:typeof i.manifest=="object"&&(i.manifest=t.deepAssign({fileName:"emp.json"},i.manifest)),new f(i,t).setup()})}}),q=L;0&&(module.exports={externalReact,externalVue,pluginRspackEmpShare});
1
+ "use strict";var O=Object.create;var c=Object.defineProperty;var L=Object.getOwnPropertyDescriptor;var T=Object.getOwnPropertyNames;var v=Object.getPrototypeOf,w=Object.prototype.hasOwnProperty;var N=(i,e,t)=>e in i?c(i,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):i[e]=t;var H=(i,e)=>{for(var t in e)c(i,t,{get:e[t],enumerable:!0})},y=(i,e,t,s)=>{if(e&&typeof e=="object"||typeof e=="function")for(let n of T(e))!w.call(i,n)&&n!==t&&c(i,n,{get:()=>e[n],enumerable:!(s=L(e,n))||s.enumerable});return i};var $=(i,e,t)=>(t=i!=null?O(v(i)):{},y(e||!i||!i.__esModule?c(t,"default",{value:i,enumerable:!0}):t,i)),F=i=>y(c({},"__esModule",{value:!0}),i);var l=(i,e,t)=>N(i,typeof e!="symbol"?e+"":e,t);var g=(i,e,t)=>new Promise((s,n)=>{var a=m=>{try{o(t.next(m))}catch(p){n(p)}},r=m=>{try{o(t.throw(m))}catch(p){n(p)}},o=m=>m.done?s(m.value):Promise.resolve(m.value).then(a,r);o((t=t.apply(i,e)).next())});var D={};H(D,{default:()=>_,externalReact:()=>V,externalVue:()=>C,pluginRspackEmpShare:()=>M});module.exports=F(D);var R=i=>`data:text/javascript,${i}`;function h(i,...e){for(let t of e)for(let s in t){let n=t[s],a=i[s];if(Object(n)==n&&Object(a)===a){i[s]=h(a,n);continue}i[s]=t[s]}return i}var G=!1,I=G?console.log.bind(console,"[EMP Share]"):()=>{};var j="EMP_SHARE_RUNTIME",k="EMPShareGlobalVal",d="EMP_FORCE_REMOTES";var b=require("@empjs/module-federation-rspack");var A=i=>{let e=[`import '${i}'`].join(`
2
+ `);return R(e)},u=class{constructor(e){l(this,"options");this.options=e}apply(e){let{webpack:t}=e,s=A("@empjs/share/library");new t.EntryPlugin(e.context,s,{name:void 0}).apply(e)}};var x=(i,e)=>{Object.keys(e).length>0&&i.injectTags([{innerHTML:`window.${d} = ${JSON.stringify(e)};`,tagName:"script",pos:"head"}],"EMP_FORCE_REMOTES")};function E(i,e,t="runtime"){return typeof i=="string"?t==="runtime"?`${i}/runtime${e==="development"?".development":""}.umd.js`:`${i}/${t}.${e}.umd.js`:typeof i=="object"?e==="development"?i.dev:i.prod:""}var S=/^([0-9a-zA-Z_\s]+)@(.*)/,f=class{constructor(e,t){l(this,"op");l(this,"store");l(this,"injectHtml",[]);l(this,"externalsLib",[]);l(this,"fk");l(this,"rt");this.op=e||{},this.store=t}setup(){this.resetRuntime(),this.resetFramework(),this.setMfName(),this.setMF(),this.injectGlobalVal(),this.injectFramework(),this.setShareLib(),this.setRuntimeLib(),this.injectToHtml(),this.setExternal()}injectToHtml(){let{store:e,injectHtml:t}=this;t.length>0&&e.injectTags(t,"EMPShare")}injectFramework(){if(this.fk&&this.fk.libs.length>0)return this.injectFkLibs(this.fk.libs);if(!this.op.empRuntime||!this.fk.lib)return;let{store:e,injectHtml:t}=this;if(this.fk.lib){let s=E(this.fk.lib,e.mode,this.fk.entry);t.push({attributes:{src:s},tagName:"script"})}}injectFkLibs(e){e.map(t=>{if(t.endsWith(".css"))return this.injectHtml.push({attributes:{href:t,rel:"stylesheet"},tagName:"link"});this.injectHtml.push({attributes:{src:t},tagName:"script"})})}injectGlobalVal(){if(!this.op.empRuntime)return;let{empRuntime:e}=this.op,{injectHtml:t}=this,s=this.fk.global||(e.shareLib?"window":"");if(!(e.injectGlobalValToHtml===!1||!this.rt.lib)){let a={frameworkLib:s,runtimeLib:this.rt.global};this.fk.name&&this.fk.name!=="none"&&(a.framework=this.fk.name),t.push({tagName:"script",innerHTML:`window.${k}=${JSON.stringify(a)}`})}}resetFramework(){if(!this.op.empRuntime)return;let{framework:e,frameworkGlobal:t,frameworkLib:s}=this.op.empRuntime;this.fk={name:"none",version:0,entry:"",global:t||"",lib:s||"",libs:[]},typeof e=="string"?this.fk.name=e:typeof e=="object"&&Object.keys(e).length>0&&(e.entry=e.entry?e.entry:e.name,this.fk=h(this.fk,e))}resetRuntime(){var n;let{empRuntime:e}=this.op;if(!e)return;let t=e.runtimeGlobal||j,s=e.runtimeLib?e.runtimeLib:(n=e.runtime)!=null&&n.lib?e.runtime.lib:"";this.rt={lib:s,global:t}}setExternal(){if(!this.op.empRuntime)return;let{store:e,externalsLib:t}=this,{empRuntime:s}=this.op,{shareLib:n}=s,a=this.rt.lib?{"@module-federation/runtime":"MFRuntime","@module-federation/sdk":"MFSDK"}:{},r={};for(let[o,m]of Object.entries(a))r[o]=`${this.rt.global}.${m}`;if(this.fk.name==="react"&&!n&&this.fk.global){let o=this.fk.version,m={react:"React","react-dom":"ReactDOM"};this.fk.entry==="reactRouter"&&(m["react-router-dom"]="ReactRouterDOM");for(let[p,P]of Object.entries(m))r[p]=`${this.fk.global}.${P}`;[17,18,19].includes(o)&&(r["react-dom/client"]=this.fk.global,r["react/jsx-runtime"]=this.fk.global,r["react/jsx-dev-runtime"]=this.fk.global)}n&&t.map(o=>{o.type==="js"&&o.module&&o.global&&(r[o.module]=`${this.fk.global}.${o.global}`)}),s.setExternals&&s.setExternals(r,this.fk.global,this.rt.global),e.chain.merge({externals:r})}setRuntimeLib(){if(!this.op.empRuntime)return;let{shareLib:e}=this.op.empRuntime,{store:t,injectHtml:s}=this,{empRuntime:n}=this.op;this.rt.lib?this.rt.lib==="useFrameworkLib"&&!e||s.push({tagName:"script",pos:"head",attributes:{src:this.rt.lib}}):t.chain.plugin("plugin-emp-share-framework").use(u,[n])}setMfName(){this.op.name?(this.op.name=this.store.encodeVarName(this.op.name),this.op.name!==this.store.empConfig.output.uniqueName&&this.store.chain.output.set("uniqueName",this.op.name)):this.op.name=this.store.empConfig.output.uniqueName}setMF(){var s;let e=this.op,{store:t}=this;if(e.name){let n=t.deepAssign({filename:"emp.js"},e);n.empRuntime&&delete n.empRuntime,e.forceRemotes&&(x(t,e.forceRemotes),delete e.forceRemotes,(s=n.runtimePlugins)==null||s.push(require.resolve("@empjs/share/forceRemote"))),t.chain.plugin("plugin-emp-share").use(b.ModuleFederationPlugin,[n])}}setShareLib(){if(!this.op.empRuntime)return;let{shareLib:e}=this.op.empRuntime,{externalsLib:t,injectHtml:s}=this;if(e&&typeof e=="object"){for(let[n,a]of Object.entries(e)){let r={};if(r.module=n,typeof a=="string"){let o=a.match(S)||[];o.length>0?(r.global=o[1],r.entry=o[2],r.type="js",t.push(r),r={}):(r.global="",r.entry=a,r.type="js",t.push(r),r={})}else Array.isArray(a)?a.map(o=>{if(!o)return;if(o.split("?")[0].endsWith(".css"))r.entry=o,r.type="css";else{let p=o.match(S)||[];p.length>0?(r.global=p[1],r.entry=p[2],r.type="js"):(r.global="",r.entry=o,r.type="js")}t.push(r),r={}}):typeof a=="object"&&a.entry&&(r.entry=a.entry,r.global=a.global,r.type=a.type,t.push(r),r={})}t.map(n=>{n.type==="js"?s.push({attributes:{src:n.entry},tagName:"script"}):n.type==="css"&&s.push({attributes:{href:n.entry,rel:"stylesheet"},tagName:"link"})})}}};var V=(i,e)=>(i=Object.assign(i,{react:`${e}.React`,"react-dom":`${e}.ReactDOM`,"react-dom/client":e,"react/jsx-runtime":e,"react/jsx-dev-runtime":e,"react-router-dom":`${e}.ReactRouterDOM`}),i);var C=(i,e)=>(i=Object.assign(i,{vue:`${e}.Vue`,"vue-router":`${e}.VueRouter`}),i);var M=(i={})=>({name:"@empjs/share",rsConfig(t){return g(this,null,function*(){i.manifest===!0?i.manifest={fileName:"emp.json"}:typeof i.manifest=="object"&&(i.manifest=t.deepAssign({fileName:"emp.json"},i.manifest)),new f(i,t).setup()})}}),_=M;0&&(module.exports={externalReact,externalVue,pluginRspackEmpShare});
3
3
  //# sourceMappingURL=rspack.cjs.map