@module-federation/devtools 2.6.0 → 2.8.0

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.
Files changed (132) hide show
  1. package/dist/es/App.js +3 -2
  2. package/dist/es/component/DependencyGraphItem/index.js +18 -7
  3. package/dist/es/utils/chrome/index.js +37 -17
  4. package/dist/es/utils/chrome/post-message-listener.js +5 -2
  5. package/dist/es/utils/sdk/graph.js +25 -11
  6. package/dist/lib/App.js +2 -3
  7. package/dist/lib/App.module.js +0 -1
  8. package/dist/lib/component/DependencyGraph/index.js +0 -1
  9. package/dist/lib/component/DependencyGraph/index.module.js +0 -1
  10. package/dist/lib/component/DependencyGraphItem/index.js +18 -8
  11. package/dist/lib/component/DependencyGraphItem/index.module.js +0 -1
  12. package/dist/lib/component/Form/index.js +0 -1
  13. package/dist/lib/component/Form/index.module.js +0 -1
  14. package/dist/lib/component/LanguageSwitch.js +0 -1
  15. package/dist/lib/component/Layout/index.js +0 -1
  16. package/dist/lib/component/Layout/index.module.js +0 -1
  17. package/dist/lib/component/LoadingTrace/index.js +0 -1
  18. package/dist/lib/component/LoadingTrace/index.module.js +0 -1
  19. package/dist/lib/component/ModuleInfo/index.js +0 -1
  20. package/dist/lib/component/ModuleInfo/index.module.js +0 -1
  21. package/dist/lib/component/SharedDepsExplorer/FocusResultDisplay.js +0 -1
  22. package/dist/lib/component/SharedDepsExplorer/FocusResultDisplay.module.js +0 -1
  23. package/dist/lib/component/SharedDepsExplorer/index.js +0 -1
  24. package/dist/lib/component/SharedDepsExplorer/index.module.js +0 -1
  25. package/dist/lib/component/SharedDepsExplorer/share-utils.js +0 -1
  26. package/dist/lib/component/ThemeToggle.js +0 -1
  27. package/dist/lib/component/ThemeToggle.module.js +0 -1
  28. package/dist/lib/hooks/useDevtoolsTheme.js +0 -1
  29. package/dist/lib/i18n/index.js +0 -1
  30. package/dist/lib/init.js +0 -1
  31. package/dist/lib/template/constant.js +0 -1
  32. package/dist/lib/template/index.js +0 -1
  33. package/dist/lib/utils/chrome/fast-refresh.js +0 -1
  34. package/dist/lib/utils/chrome/index.js +38 -18
  35. package/dist/lib/utils/chrome/messages.js +0 -1
  36. package/dist/lib/utils/chrome/observability-plugin.js +0 -1
  37. package/dist/lib/utils/chrome/observability-shared.js +0 -1
  38. package/dist/lib/utils/chrome/observability.js +0 -1
  39. package/dist/lib/utils/chrome/override-remote.js +0 -1
  40. package/dist/lib/utils/chrome/post-message-init.js +0 -1
  41. package/dist/lib/utils/chrome/post-message-listener.js +5 -3
  42. package/dist/lib/utils/chrome/post-message-start.js +0 -1
  43. package/dist/lib/utils/chrome/post-message.js +0 -1
  44. package/dist/lib/utils/chrome/safe-post-message.js +0 -1
  45. package/dist/lib/utils/chrome/snapshot-plugin.js +0 -1
  46. package/dist/lib/utils/chrome/storage.js +0 -1
  47. package/dist/lib/utils/data/index.js +0 -1
  48. package/dist/lib/utils/index.js +0 -1
  49. package/dist/lib/utils/sdk/graph.js +25 -12
  50. package/dist/lib/utils/sdk/index.js +0 -1
  51. package/dist/lib/utils/types/common.js +0 -1
  52. package/dist/lib/utils/types/index.js +0 -1
  53. package/dist/lib/worker/index.js +0 -1
  54. package/dist/types/App.css +13 -0
  55. package/dist/types/App.js +519 -0
  56. package/dist/types/App.module.js +24 -0
  57. package/dist/types/App_module.css +307 -0
  58. package/dist/types/component/DependencyGraph/index.js +225 -0
  59. package/dist/types/component/DependencyGraph/index.module.js +24 -0
  60. package/dist/types/component/DependencyGraph/index_module.css +100 -0
  61. package/dist/types/component/DependencyGraphItem/index.js +124 -0
  62. package/dist/types/component/DependencyGraphItem/index.module.js +24 -0
  63. package/dist/types/component/DependencyGraphItem/index_module.css +95 -0
  64. package/dist/types/component/Form/index.js +372 -0
  65. package/dist/types/component/Form/index.module.js +24 -0
  66. package/dist/types/component/Form/index_module.css +198 -0
  67. package/dist/types/component/LanguageSwitch.js +79 -0
  68. package/dist/types/component/Layout/index.js +471 -0
  69. package/dist/types/component/Layout/index.module.js +24 -0
  70. package/dist/types/component/Layout/index_module.css +68 -0
  71. package/dist/types/component/LoadingTrace/index.js +953 -0
  72. package/dist/types/component/LoadingTrace/index.module.js +24 -0
  73. package/dist/types/component/LoadingTrace/index_module.css +876 -0
  74. package/dist/types/component/ModuleInfo/index.js +342 -0
  75. package/dist/types/component/ModuleInfo/index.module.js +24 -0
  76. package/dist/types/component/ModuleInfo/index_module.css +184 -0
  77. package/dist/types/component/SharedDepsExplorer/FocusResultDisplay.js +64 -0
  78. package/dist/types/component/SharedDepsExplorer/FocusResultDisplay.module.js +24 -0
  79. package/dist/types/component/SharedDepsExplorer/FocusResultDisplay_module.css +45 -0
  80. package/dist/types/component/SharedDepsExplorer/index.js +638 -0
  81. package/dist/types/component/SharedDepsExplorer/index.module.js +24 -0
  82. package/dist/types/component/SharedDepsExplorer/index_module.css +467 -0
  83. package/dist/types/component/SharedDepsExplorer/share-utils.js +252 -0
  84. package/dist/types/component/ThemeToggle.js +48 -0
  85. package/dist/types/component/ThemeToggle.module.js +24 -0
  86. package/dist/types/component/ThemeToggle_module.css +12 -0
  87. package/dist/types/hooks/useDevtoolsTheme.js +100 -0
  88. package/dist/types/i18n/index.js +721 -0
  89. package/dist/types/init.js +8 -0
  90. package/dist/types/src/App.d.ts +1 -1
  91. package/dist/types/src/component/DependencyGraph/index.d.ts +1 -1
  92. package/dist/types/src/component/DependencyGraphItem/index.d.ts +1 -1
  93. package/dist/types/src/component/Form/index.d.ts +1 -1
  94. package/dist/types/src/component/LanguageSwitch.d.ts +1 -1
  95. package/dist/types/src/component/Layout/index.d.ts +1 -1
  96. package/dist/types/src/component/LoadingTrace/index.d.ts +1 -1
  97. package/dist/types/src/component/ModuleInfo/index.d.ts +1 -1
  98. package/dist/types/src/component/SharedDepsExplorer/index.d.ts +1 -1
  99. package/dist/types/src/component/SharedDepsExplorer/share-utils.d.ts +1 -1
  100. package/dist/types/src/i18n/index.d.ts +1 -1
  101. package/dist/types/src/template/constant.d.ts +1 -1
  102. package/dist/types/src/utils/chrome/index.d.ts +2 -1
  103. package/dist/types/src/utils/chrome/observability.d.ts +1 -1
  104. package/dist/types/src/utils/data/index.d.ts +1 -1
  105. package/dist/types/src/utils/sdk/graph.d.ts +1 -1
  106. package/dist/types/src/utils/sdk/index.d.ts +2 -2
  107. package/dist/types/stories/index.stories.d.ts +2 -1
  108. package/dist/types/template/constant.js +84 -0
  109. package/dist/types/template/index.js +21 -0
  110. package/dist/types/utils/chrome/fast-refresh.js +329 -0
  111. package/dist/types/utils/chrome/index.js +321 -0
  112. package/dist/types/utils/chrome/messages.js +39 -0
  113. package/dist/types/utils/chrome/observability-plugin.js +85 -0
  114. package/dist/types/utils/chrome/observability-shared.js +125 -0
  115. package/dist/types/utils/chrome/observability.js +233 -0
  116. package/dist/types/utils/chrome/override-remote.js +17 -0
  117. package/dist/types/utils/chrome/post-message-init.js +5 -0
  118. package/dist/types/utils/chrome/post-message-listener.js +36 -0
  119. package/dist/types/utils/chrome/post-message-start.js +10 -0
  120. package/dist/types/utils/chrome/post-message.js +91 -0
  121. package/dist/types/utils/chrome/safe-post-message.js +147 -0
  122. package/dist/types/utils/chrome/snapshot-plugin.js +17 -0
  123. package/dist/types/utils/chrome/storage.js +71 -0
  124. package/dist/types/utils/data/index.js +83 -0
  125. package/dist/types/utils/index.js +27 -0
  126. package/dist/types/utils/sdk/graph.js +213 -0
  127. package/dist/types/utils/sdk/index.js +104 -0
  128. package/dist/types/utils/types/common.js +15 -0
  129. package/dist/types/utils/types/index.js +21 -0
  130. package/dist/types/vendor/basic-proxy-core.js +147 -0
  131. package/dist/types/worker/index.js +175 -0
  132. package/package.json +8 -9
@@ -0,0 +1,8 @@
1
+ if (process.env.NODE_ENV === "development") {
2
+ const createProxy = () => new Proxy(() => Promise.resolve({}), {
3
+ get: () => {
4
+ return createProxy();
5
+ }
6
+ });
7
+ window.chrome = createProxy();
8
+ }
@@ -3,5 +3,5 @@ import './App.css';
3
3
  import './init';
4
4
  import { RootComponentProps } from './utils';
5
5
  import '@arco-design/web-react/dist/css/arco.css';
6
- declare const App: (props: RootComponentProps) => import("react").JSX.Element;
6
+ declare const App: (props: RootComponentProps) => import("node_modules/@types/react").JSX.Element;
7
7
  export default App;
@@ -2,5 +2,5 @@ import { GlobalModuleInfo } from '@module-federation/sdk';
2
2
  import 'reactflow/dist/style.css';
3
3
  declare const Graph: (props: {
4
4
  snapshot: GlobalModuleInfo;
5
- }) => import("react").JSX.Element;
5
+ }) => import("node_modules/@types/react").JSX.Element;
6
6
  export default Graph;
@@ -5,5 +5,5 @@ declare const GraphItem: (props: {
5
5
  color?: string;
6
6
  remote?: any;
7
7
  };
8
- }) => import("react").JSX.Element;
8
+ }) => import("node_modules/@types/react").JSX.Element;
9
9
  export default GraphItem;
@@ -17,5 +17,5 @@ interface FormProps {
17
17
  onClipChange: (on: boolean) => void;
18
18
  headerSlot?: ReactNode;
19
19
  }
20
- declare const FormComponent: (props: FormProps & RootComponentProps) => import("react").JSX.Element;
20
+ declare const FormComponent: (props: FormProps & RootComponentProps) => import("node_modules/@types/react").JSX.Element;
21
21
  export default FormComponent;
@@ -1,2 +1,2 @@
1
- declare const LanguageSwitch: () => import("react").JSX.Element;
1
+ declare const LanguageSwitch: () => import("node_modules/@types/react").JSX.Element;
2
2
  export default LanguageSwitch;
@@ -11,5 +11,5 @@ declare global {
11
11
  }
12
12
  declare const Layout: (props: {
13
13
  moduleInfo: GlobalModuleInfo;
14
- } & RootComponentProps) => import("react").JSX.Element;
14
+ } & RootComponentProps) => import("node_modules/@types/react").JSX.Element;
15
15
  export default Layout;
@@ -2,5 +2,5 @@ interface LoadingTraceProps {
2
2
  tabId?: number;
3
3
  resetKey?: number;
4
4
  }
5
- declare const LoadingTrace: ({ tabId, resetKey }: LoadingTraceProps) => import("react").JSX.Element;
5
+ declare const LoadingTrace: ({ tabId, resetKey }: LoadingTraceProps) => import("node_modules/@types/react").JSX.Element;
6
6
  export default LoadingTrace;
@@ -4,5 +4,5 @@ interface HomeProps {
4
4
  selectedModuleId: string | null;
5
5
  onSelectModule: (moduleId: string) => void;
6
6
  }
7
- declare const Home: (props: HomeProps) => import("react").JSX.Element;
7
+ declare const Home: (props: HomeProps) => import("node_modules/@types/react").JSX.Element;
8
8
  export default Home;
@@ -2,5 +2,5 @@ import type { GlobalShareScopeMap } from '@module-federation/runtime/types';
2
2
  interface SharedDepsExplorerProps {
3
3
  shareData?: GlobalShareScopeMap;
4
4
  }
5
- declare function SharedDepsExplorer({ shareData: shareDataProp, }: SharedDepsExplorerProps): import("react").JSX.Element;
5
+ declare function SharedDepsExplorer({ shareData: shareDataProp, }: SharedDepsExplorerProps): import("node_modules/@types/react").JSX.Element;
6
6
  export default SharedDepsExplorer;
@@ -41,5 +41,5 @@ export declare function findPackageProvider(versions: NormalizedSharedVersion[],
41
41
  version: string;
42
42
  providers: string[];
43
43
  status: LoadedStatus;
44
- } | null;
44
+ };
45
45
  export declare function getReusedVersions(versions: NormalizedSharedVersion[]): NormalizedSharedVersion[];
@@ -1,5 +1,5 @@
1
1
  import i18n from 'i18next';
2
2
  export declare const LANGUAGE_STORAGE_KEY = "mf-devtools-language";
3
- declare const supportedLanguages: readonly ["zh-CN", "en"];
3
+ declare const supportedLanguages: readonly ['zh-CN', 'en'];
4
4
  export type SupportedLanguage = (typeof supportedLanguages)[number];
5
5
  export default i18n;
@@ -8,7 +8,7 @@ export declare const defaultDataItem: {
8
8
  checked: boolean;
9
9
  };
10
10
  export declare const defaultModuleData: {
11
- proxyFormField: never[];
11
+ proxyFormField: undefined[];
12
12
  };
13
13
  export declare const statusInfo: Record<string, {
14
14
  status: string;
@@ -1,11 +1,12 @@
1
1
  import { GlobalModuleInfo } from '@module-federation/sdk';
2
2
  export * from './storage';
3
+ export declare const normalizeModuleInfoPayload: (moduleInfo: unknown) => GlobalModuleInfo;
3
4
  export declare const injectPostMessage: (postMessageUrl: string) => void;
4
5
  export declare const TabInfo: {
5
6
  currentTabId: number;
6
7
  };
7
8
  export declare const setTargetTab: (tab?: chrome.tabs.Tab | null) => void;
8
- export declare const syncActiveTab: (tabId?: number) => Promise<chrome.tabs.Tab | undefined>;
9
+ export declare const syncActiveTab: (tabId?: number) => Promise<chrome.tabs.Tab>;
9
10
  export declare function getCurrentTabId(): number;
10
11
  export declare function getInspectWindowTabId(): Promise<unknown>;
11
12
  export declare const refreshModuleInfo: () => Promise<void>;
@@ -107,4 +107,4 @@ export declare const disableObservabilityConfig: () => Promise<any>;
107
107
  export declare const reloadInspectedPage: () => Promise<any>;
108
108
  export declare const readObservabilitySnapshot: () => Promise<ObservabilityDevtoolsSnapshot>;
109
109
  export declare const mergeObservabilityReports: (currentReports: ObservabilityDevtoolsReport[], incomingReports: ObservabilityDevtoolsReport[]) => ObservabilityDevtoolsReport[];
110
- export declare const getObservabilityReportScopeLabel: (report: Pick<ObservabilityDevtoolsReport, "__scope">) => string | undefined;
110
+ export declare const getObservabilityReportScopeLabel: (report: Pick<ObservabilityDevtoolsReport, '__scope'>) => string;
@@ -1,6 +1,6 @@
1
1
  import { GlobalModuleInfo } from '@module-federation/sdk';
2
2
  export declare const separateType: (moduleInfo: GlobalModuleInfo) => {
3
- consumers: Record<string, import("@module-federation/sdk").ModuleInfo | import("@module-federation/sdk").ManifestProvider | import("@module-federation/sdk").PureEntryProvider | undefined>;
3
+ consumers: Record<string, import("@module-federation/sdk").ManifestProvider | import("@module-federation/sdk").PureEntryProvider | import("@module-federation/sdk").ModuleInfo>;
4
4
  producer: string[];
5
5
  };
6
6
  export declare const getModuleInfo: (proxyRules: Array<any>) => Promise<{
@@ -40,7 +40,7 @@ export declare class DependencyGraph {
40
40
  createGraph(target?: string): void;
41
41
  addNode(id: string, type: string, x: number, y: number, nodeData: NodeCustomData): void;
42
42
  addEdge(id: string, source: string, target: string, type?: Edge): void;
43
- run(targetGraph: any, target: string | undefined, type: string, id?: string, depth?: number, maxDepth?: number): void;
43
+ run(targetGraph: any, target: string, type: string, id?: string, depth?: number, maxDepth?: number): void;
44
44
  identify(): string;
45
45
  calculateDepth(target?: string, visited?: Set<string>): number;
46
46
  }
@@ -1,11 +1,11 @@
1
1
  export * from './graph';
2
2
  export declare const setLocalStorage: (key: string, value: any) => void;
3
- export declare const getLocalStorage: (key: string) => string | null;
3
+ export declare const getLocalStorage: (key: string) => string;
4
4
  export declare const removeLocalStorage: (key: string) => void;
5
5
  export declare const mergeLocalStorage: (target: string, key: string, value: any) => void;
6
6
  export declare const removeLocalStorageKey: (target: string, key: string) => void;
7
7
  export declare const isObject: (target: any) => boolean;
8
8
  export declare const reloadPage: () => void;
9
9
  export declare const validateCustom: (schema: string) => boolean;
10
- export declare const getUnpkgUrl: (pkg: string, version: string) => string | undefined;
10
+ export declare const getUnpkgUrl: (pkg: string, version: string) => string;
11
11
  export declare const definePropertyGlobalVal: (target: Record<string, any>, key: string, val: any) => void;
@@ -1,9 +1,10 @@
1
1
  import React from 'react';
2
2
  import '../src/init';
3
3
  import '../mock';
4
+ declare const Component: () => React.JSX.Element;
4
5
  declare const _default: {
5
6
  title: string;
6
- component: () => React.JSX.Element;
7
+ component: typeof Component;
7
8
  };
8
9
  export default _default;
9
10
  export declare const Primary: {};
@@ -0,0 +1,84 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
3
+ var __getOwnPropNames = Object.getOwnPropertyNames;
4
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
5
+ var __export = (target, all) => {
6
+ for (var name in all)
7
+ __defProp(target, name, { get: all[name], enumerable: true });
8
+ };
9
+ var __copyProps = (to, from, except, desc) => {
10
+ if (from && typeof from === "object" || typeof from === "function") {
11
+ for (let key of __getOwnPropNames(from))
12
+ if (!__hasOwnProp.call(to, key) && key !== except)
13
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
14
+ }
15
+ return to;
16
+ };
17
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
18
+ var constant_exports = {};
19
+ __export(constant_exports, {
20
+ BROWSER_ENV_KEY: () => BROWSER_ENV_KEY,
21
+ ENABLEHMR: () => ENABLEHMR,
22
+ ENABLE_CLIP: () => ENABLE_CLIP,
23
+ FormID: () => FormID,
24
+ __EAGER_SHARE__: () => __EAGER_SHARE__,
25
+ __ENABLE_FAST_REFRESH__: () => __ENABLE_FAST_REFRESH__,
26
+ __FEDERATION_DEVTOOLS__: () => __FEDERATION_DEVTOOLS__,
27
+ defaultDataItem: () => defaultDataItem,
28
+ defaultModuleData: () => defaultModuleData,
29
+ proxyFormField: () => proxyFormField,
30
+ statusInfo: () => statusInfo
31
+ });
32
+ module.exports = __toCommonJS(constant_exports);
33
+ const FormID = "FormID";
34
+ const ENABLEHMR = "enableHMR";
35
+ const ENABLE_CLIP = "enableClip";
36
+ const proxyFormField = "proxyFormField";
37
+ const defaultDataItem = {
38
+ key: "",
39
+ value: "",
40
+ checked: true
41
+ };
42
+ const defaultModuleData = {
43
+ proxyFormField: []
44
+ };
45
+ const statusInfo = {
46
+ noProxy: {
47
+ status: "noProxy",
48
+ message: "Modules are not currently proxied",
49
+ color: "#698cee"
50
+ },
51
+ processing: {
52
+ status: "processing",
53
+ message: "Obtaining remote module information",
54
+ color: "#FF7D00"
55
+ },
56
+ success: {
57
+ status: "success",
58
+ message: "The proxy configuration has taken effect and the corresponding page has been automatically refreshed.",
59
+ color: "#50b042"
60
+ },
61
+ error: {
62
+ status: "error",
63
+ message: "Calculating Snapshot failed, please confirm whether the package information is correct",
64
+ color: "#F53F3F"
65
+ }
66
+ };
67
+ const __ENABLE_FAST_REFRESH__ = "enableFastRefresh";
68
+ const __EAGER_SHARE__ = "eagerShare";
69
+ const BROWSER_ENV_KEY = "MF_ENV";
70
+ const __FEDERATION_DEVTOOLS__ = "__MF_DEVTOOLS__";
71
+ // Annotate the CommonJS export names for ESM import in node:
72
+ 0 && (module.exports = {
73
+ BROWSER_ENV_KEY,
74
+ ENABLEHMR,
75
+ ENABLE_CLIP,
76
+ FormID,
77
+ __EAGER_SHARE__,
78
+ __ENABLE_FAST_REFRESH__,
79
+ __FEDERATION_DEVTOOLS__,
80
+ defaultDataItem,
81
+ defaultModuleData,
82
+ proxyFormField,
83
+ statusInfo
84
+ });
@@ -0,0 +1,21 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
3
+ var __getOwnPropNames = Object.getOwnPropertyNames;
4
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
5
+ var __copyProps = (to, from, except, desc) => {
6
+ if (from && typeof from === "object" || typeof from === "function") {
7
+ for (let key of __getOwnPropNames(from))
8
+ if (!__hasOwnProp.call(to, key) && key !== except)
9
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
10
+ }
11
+ return to;
12
+ };
13
+ var __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, "default"), secondTarget && __copyProps(secondTarget, mod, "default"));
14
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
15
+ var template_exports = {};
16
+ module.exports = __toCommonJS(template_exports);
17
+ __reExport(template_exports, require("./constant"), module.exports);
18
+ // Annotate the CommonJS export names for ESM import in node:
19
+ 0 && (module.exports = {
20
+ ...require("./constant")
21
+ });
@@ -0,0 +1,329 @@
1
+ var __async = (__this, __arguments, generator) => {
2
+ return new Promise((resolve, reject) => {
3
+ var fulfilled = (value) => {
4
+ try {
5
+ step(generator.next(value));
6
+ } catch (e) {
7
+ reject(e);
8
+ }
9
+ };
10
+ var rejected = (value) => {
11
+ try {
12
+ step(generator.throw(value));
13
+ } catch (e) {
14
+ reject(e);
15
+ }
16
+ };
17
+ var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);
18
+ step((generator = generator.apply(__this, __arguments)).next());
19
+ });
20
+ };
21
+ var import__ = require("../index");
22
+ var import_sdk = require("../sdk");
23
+ var import_constant = require("../../template/constant");
24
+ var _a;
25
+ const SUPPORT_PKGS = ["react", "react-dom"];
26
+ const DEFAULT_SHARE_SCOPE = "default";
27
+ const DEFAULT_GLOBAL_KEY_MAP = {
28
+ react: "React",
29
+ "react-dom": "ReactDOM"
30
+ };
31
+ const sanitizeWindowKey = (value) => value.replace(/[^a-zA-Z0-9_$]/g, "_");
32
+ const getShareScopes = (scope) => Array.isArray(scope) && scope.length ? scope : [DEFAULT_SHARE_SCOPE];
33
+ const getDefaultGlobalKey = (pkgName) => DEFAULT_GLOBAL_KEY_MAP[pkgName];
34
+ const getScopedGlobalKey = (scope, pkgName) => `${sanitizeWindowKey(scope)}_${sanitizeWindowKey(pkgName)}`;
35
+ const getWindowValue = (key) => window[key];
36
+ const setWindowValue = (key, value) => {
37
+ window[key] = value;
38
+ };
39
+ const setScopeGlobals = (pkgName, scopes, source) => {
40
+ if (!source) {
41
+ return source;
42
+ }
43
+ scopes.forEach((scope) => {
44
+ setWindowValue(getScopedGlobalKey(scope, pkgName), source);
45
+ });
46
+ return source;
47
+ };
48
+ const getScopeGlobal = (pkgName, scopes) => {
49
+ for (const scope of scopes) {
50
+ const scopeGlobal = getWindowValue(getScopedGlobalKey(scope, pkgName));
51
+ if (scopeGlobal) {
52
+ return scopeGlobal;
53
+ }
54
+ }
55
+ return void 0;
56
+ };
57
+ const getEagerShareInfo = (eagerShare) => {
58
+ if (!Array.isArray(eagerShare) || eagerShare.length < 2) {
59
+ return null;
60
+ }
61
+ const [, version, scopes] = eagerShare;
62
+ if (typeof version !== "string") {
63
+ return null;
64
+ }
65
+ return {
66
+ version,
67
+ scopes: getShareScopes(scopes)
68
+ };
69
+ };
70
+ const updateEagerShareInfo = (devtoolsMessage2, pkgName, version, scopes) => {
71
+ const existing = getEagerShareInfo(devtoolsMessage2[import_constant.__EAGER_SHARE__]);
72
+ const mergedScopes = Array.from(
73
+ /* @__PURE__ */ new Set([...(existing == null ? void 0 : existing.scopes) || [], ...scopes])
74
+ );
75
+ devtoolsMessage2[import_constant.__EAGER_SHARE__] = [pkgName, version, mergedScopes];
76
+ return {
77
+ shouldReload: !existing || existing.version !== version
78
+ };
79
+ };
80
+ const requestUmdSourceSync = (url) => {
81
+ try {
82
+ const response = new XMLHttpRequest();
83
+ response.open("GET", url, false);
84
+ response.overrideMimeType("text/plain");
85
+ response.send();
86
+ if (response.status === 200) {
87
+ return response.responseText;
88
+ }
89
+ throw new Error(
90
+ `Failed to load module from ${url}: HTTP ${response.status}`
91
+ );
92
+ } catch (error) {
93
+ throw new Error(`Failed to fetch module from ${url}: ${error.message}`);
94
+ }
95
+ };
96
+ const requestUmdSource = (url) => new Promise((resolve, reject) => {
97
+ try {
98
+ const response = new XMLHttpRequest();
99
+ response.open("GET", url, true);
100
+ response.overrideMimeType("text/plain");
101
+ response.onload = () => {
102
+ if (response.status === 200) {
103
+ resolve(response.responseText);
104
+ return;
105
+ }
106
+ reject(
107
+ new Error(
108
+ `Failed to load module from ${url}: HTTP ${response.status}`
109
+ )
110
+ );
111
+ };
112
+ response.onerror = () => {
113
+ reject(new Error(`Failed to fetch module from ${url}`));
114
+ };
115
+ response.send();
116
+ } catch (error) {
117
+ reject(new Error(`Failed to fetch module from ${url}: ${error.message}`));
118
+ }
119
+ });
120
+ const createUmdSandbox = (pkgName, scopes) => {
121
+ const sandboxTarget = /* @__PURE__ */ Object.create(null);
122
+ const sandbox = new Proxy(sandboxTarget, {
123
+ get(target, key) {
124
+ if (typeof key === "symbol") {
125
+ return Reflect.get(target, key);
126
+ }
127
+ if (key in target) {
128
+ return target[key];
129
+ }
130
+ const value = window[key];
131
+ return typeof value === "function" ? value.bind(window) : value;
132
+ },
133
+ set(target, key, value) {
134
+ target[key] = value;
135
+ return true;
136
+ },
137
+ has(target, key) {
138
+ return key in target || key in window;
139
+ }
140
+ });
141
+ sandboxTarget.window = sandbox;
142
+ sandboxTarget.self = sandbox;
143
+ sandboxTarget.globalThis = sandbox;
144
+ sandboxTarget.global = sandbox;
145
+ sandboxTarget.document = window.document;
146
+ if (pkgName === "react-dom") {
147
+ sandboxTarget.React = getScopeGlobal("react", scopes);
148
+ }
149
+ return sandbox;
150
+ };
151
+ const executeUmdModule = (scriptContent, pkgName, scopes) => {
152
+ const sandbox = createUmdSandbox(pkgName, scopes);
153
+ const moduleFunction = new Function(
154
+ "window",
155
+ "self",
156
+ "globalThis",
157
+ "global",
158
+ "document",
159
+ "exports",
160
+ "module",
161
+ "define",
162
+ "require",
163
+ scriptContent
164
+ );
165
+ moduleFunction.call(
166
+ sandbox,
167
+ sandbox,
168
+ sandbox,
169
+ sandbox,
170
+ sandbox,
171
+ sandbox.document,
172
+ void 0,
173
+ void 0,
174
+ void 0,
175
+ void 0
176
+ );
177
+ return sandbox[getDefaultGlobalKey(pkgName)];
178
+ };
179
+ const loadUmdModuleSync = (pkgName, version, scopes) => executeUmdModule(
180
+ requestUmdSourceSync((0, import__.getUnpkgUrl)(pkgName, version)),
181
+ pkgName,
182
+ scopes
183
+ );
184
+ const loadUmdModule = (pkgName, version, scopes) => __async(exports, null, function* () {
185
+ return executeUmdModule(
186
+ yield requestUmdSource((0, import__.getUnpkgUrl)(pkgName, version)),
187
+ pkgName,
188
+ scopes
189
+ );
190
+ });
191
+ const getDevtoolsMessage = () => {
192
+ const devtoolsMessageStr = localStorage.getItem(import_constant.__FEDERATION_DEVTOOLS__);
193
+ if (devtoolsMessageStr) {
194
+ try {
195
+ return JSON.parse(devtoolsMessageStr);
196
+ } catch (e) {
197
+ console.debug("Fast Refresh Plugin Error: ", e);
198
+ }
199
+ }
200
+ return null;
201
+ };
202
+ const devtoolsMessage = getDevtoolsMessage();
203
+ const eagerShareInfo = getEagerShareInfo(devtoolsMessage == null ? void 0 : devtoolsMessage[import_constant.__EAGER_SHARE__]);
204
+ if ((devtoolsMessage == null ? void 0 : devtoolsMessage[import_constant.__ENABLE_FAST_REFRESH__]) && eagerShareInfo) {
205
+ const { version, scopes } = eagerShareInfo;
206
+ setScopeGlobals("react", scopes, loadUmdModuleSync("react", version, scopes));
207
+ setScopeGlobals(
208
+ "react-dom",
209
+ scopes,
210
+ loadUmdModuleSync("react-dom", version, scopes)
211
+ );
212
+ }
213
+ const fastRefreshPlugin = () => {
214
+ let orderResolve;
215
+ const orderPromise = new Promise((resolve) => {
216
+ orderResolve = resolve;
217
+ });
218
+ return {
219
+ name: "mf-fast-refresh-plugin",
220
+ beforeRegisterShare(args) {
221
+ var _a2;
222
+ const { pkgName, shared } = args;
223
+ if (!SUPPORT_PKGS.includes(pkgName)) {
224
+ return args;
225
+ }
226
+ const supportPkgName = pkgName;
227
+ const shareScopes = getShareScopes(shared.scope);
228
+ let enableFastRefresh = false;
229
+ let devtoolsMessage2 = {};
230
+ const devtoolsMessageStr = localStorage.getItem(import_constant.__FEDERATION_DEVTOOLS__);
231
+ if (devtoolsMessageStr) {
232
+ try {
233
+ devtoolsMessage2 = JSON.parse(devtoolsMessageStr);
234
+ enableFastRefresh = devtoolsMessage2 == null ? void 0 : devtoolsMessage2[import_constant.__ENABLE_FAST_REFRESH__];
235
+ } catch (e) {
236
+ console.debug("Fast Refresh Plugin Error: ", e);
237
+ }
238
+ }
239
+ if (!enableFastRefresh) {
240
+ return args;
241
+ }
242
+ if (((_a2 = shared.shareConfig) == null ? void 0 : _a2.eager) || shared.lib) {
243
+ if (!(devtoolsMessage2 == null ? void 0 : devtoolsMessage2[import_constant.__EAGER_SHARE__])) {
244
+ const eagerShareInfo2 = updateEagerShareInfo(
245
+ devtoolsMessage2,
246
+ pkgName,
247
+ shared.version,
248
+ shareScopes
249
+ );
250
+ localStorage.setItem(
251
+ import_constant.__FEDERATION_DEVTOOLS__,
252
+ JSON.stringify(devtoolsMessage2)
253
+ );
254
+ if (eagerShareInfo2.shouldReload) {
255
+ window.location.reload();
256
+ }
257
+ } else {
258
+ updateEagerShareInfo(
259
+ devtoolsMessage2,
260
+ pkgName,
261
+ shared.version,
262
+ shareScopes
263
+ );
264
+ localStorage.setItem(
265
+ import_constant.__FEDERATION_DEVTOOLS__,
266
+ JSON.stringify(devtoolsMessage2)
267
+ );
268
+ }
269
+ if (pkgName === "react-dom") {
270
+ shared.lib = () => getScopeGlobal(supportPkgName, shareScopes);
271
+ }
272
+ if (pkgName === "react") {
273
+ shared.lib = () => getScopeGlobal(supportPkgName, shareScopes);
274
+ }
275
+ return args;
276
+ }
277
+ let get;
278
+ if (pkgName === "react") {
279
+ get = () => loadUmdModule(supportPkgName, shared.version, shareScopes).then((moduleValue) => {
280
+ setScopeGlobals(supportPkgName, shareScopes, moduleValue);
281
+ return moduleValue;
282
+ }).then(() => {
283
+ orderResolve();
284
+ });
285
+ }
286
+ if (pkgName === "react-dom") {
287
+ get = () => orderPromise.then(
288
+ () => loadUmdModule(supportPkgName, shared.version, shareScopes)
289
+ ).then((result) => {
290
+ setScopeGlobals(supportPkgName, shareScopes, result);
291
+ return result;
292
+ });
293
+ }
294
+ if (typeof get === "function") {
295
+ const finalGet = get;
296
+ if (pkgName === "react") {
297
+ shared.get = () => __async(this, null, function* () {
298
+ if (!getScopeGlobal(supportPkgName, shareScopes)) {
299
+ yield finalGet();
300
+ console.warn(
301
+ "[Module Federation HMR]: You are using Module Federation Devtools to debug online host, it will cause your project load Dev mode React and ReactDOM. If not in this mode, please disable it in Module Federation Devtools"
302
+ );
303
+ }
304
+ shared.lib = () => getScopeGlobal(supportPkgName, shareScopes);
305
+ return () => getScopeGlobal(supportPkgName, shareScopes);
306
+ });
307
+ }
308
+ if (pkgName === "react-dom") {
309
+ shared.get = () => __async(this, null, function* () {
310
+ if (!getScopeGlobal(supportPkgName, shareScopes)) {
311
+ yield finalGet();
312
+ }
313
+ shared.lib = () => getScopeGlobal(supportPkgName, shareScopes);
314
+ return () => getScopeGlobal(supportPkgName, shareScopes);
315
+ });
316
+ }
317
+ }
318
+ return args;
319
+ }
320
+ };
321
+ };
322
+ if (!(window == null ? void 0 : window.__FEDERATION__)) {
323
+ (0, import_sdk.definePropertyGlobalVal)(window, "__FEDERATION__", {});
324
+ (0, import_sdk.definePropertyGlobalVal)(window, "__VMOK__", window.__FEDERATION__);
325
+ }
326
+ if (!(window == null ? void 0 : window.__FEDERATION__.__GLOBAL_PLUGIN__)) {
327
+ window.__FEDERATION__.__GLOBAL_PLUGIN__ = [];
328
+ }
329
+ (_a = window.__FEDERATION__.__GLOBAL_PLUGIN__) == null ? void 0 : _a.push(fastRefreshPlugin());