@module-federation/devtools 0.0.0-main-20260508022256 → 0.0.0-main-20260720131707

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 (157) hide show
  1. package/README.md +3 -0
  2. package/dist/es/App.js +20 -4
  3. package/dist/es/App_module.css +3 -3
  4. package/dist/es/component/DependencyGraphItem/index.js +18 -7
  5. package/dist/es/component/LoadingTrace/index.js +944 -0
  6. package/dist/es/component/LoadingTrace/index.module.js +5 -0
  7. package/dist/es/component/LoadingTrace/index_module.css +876 -0
  8. package/dist/es/i18n/index.js +178 -0
  9. package/dist/es/utils/chrome/index.js +40 -21
  10. package/dist/es/utils/chrome/messages.js +7 -1
  11. package/dist/es/utils/chrome/observability-plugin.js +93 -0
  12. package/dist/es/utils/chrome/observability-shared.js +99 -0
  13. package/dist/es/utils/chrome/observability.js +208 -0
  14. package/dist/es/utils/chrome/override-remote.js +2 -42
  15. package/dist/es/utils/chrome/post-message-listener.js +19 -2
  16. package/dist/es/utils/chrome/snapshot-plugin.js +2 -36
  17. package/dist/es/utils/data/index.js +5 -25
  18. package/dist/es/utils/sdk/graph.js +25 -11
  19. package/dist/es/vendor/basic-proxy-core.js +155 -0
  20. package/dist/es/worker/index.js +27 -8
  21. package/dist/lib/App.js +19 -5
  22. package/dist/lib/App.module.js +0 -1
  23. package/dist/lib/App_module.css +3 -3
  24. package/dist/lib/component/DependencyGraph/index.js +0 -1
  25. package/dist/lib/component/DependencyGraph/index.module.js +0 -1
  26. package/dist/lib/component/DependencyGraphItem/index.js +18 -8
  27. package/dist/lib/component/DependencyGraphItem/index.module.js +0 -1
  28. package/dist/lib/component/Form/index.js +0 -1
  29. package/dist/lib/component/Form/index.module.js +0 -1
  30. package/dist/lib/component/LanguageSwitch.js +0 -1
  31. package/dist/lib/component/Layout/index.js +0 -1
  32. package/dist/lib/component/Layout/index.module.js +0 -1
  33. package/dist/lib/component/LoadingTrace/index.js +953 -0
  34. package/dist/lib/component/LoadingTrace/index.module.js +24 -0
  35. package/dist/lib/component/LoadingTrace/index_module.css +876 -0
  36. package/dist/lib/component/ModuleInfo/index.js +0 -1
  37. package/dist/lib/component/ModuleInfo/index.module.js +0 -1
  38. package/dist/lib/component/SharedDepsExplorer/FocusResultDisplay.js +0 -1
  39. package/dist/lib/component/SharedDepsExplorer/FocusResultDisplay.module.js +0 -1
  40. package/dist/lib/component/SharedDepsExplorer/index.js +0 -1
  41. package/dist/lib/component/SharedDepsExplorer/index.module.js +0 -1
  42. package/dist/lib/component/SharedDepsExplorer/share-utils.js +0 -1
  43. package/dist/lib/component/ThemeToggle.js +0 -1
  44. package/dist/lib/component/ThemeToggle.module.js +0 -1
  45. package/dist/lib/hooks/useDevtoolsTheme.js +0 -1
  46. package/dist/lib/i18n/index.js +178 -1
  47. package/dist/lib/init.js +0 -1
  48. package/dist/lib/template/constant.js +0 -1
  49. package/dist/lib/template/index.js +0 -1
  50. package/dist/lib/utils/chrome/fast-refresh.js +0 -1
  51. package/dist/lib/utils/chrome/index.js +41 -22
  52. package/dist/lib/utils/chrome/messages.js +11 -3
  53. package/dist/lib/utils/chrome/observability-plugin.js +85 -0
  54. package/dist/lib/utils/chrome/observability-shared.js +125 -0
  55. package/dist/lib/utils/chrome/observability.js +233 -0
  56. package/dist/lib/utils/chrome/override-remote.js +5 -53
  57. package/dist/lib/utils/chrome/post-message-init.js +0 -1
  58. package/dist/lib/utils/chrome/post-message-listener.js +16 -3
  59. package/dist/lib/utils/chrome/post-message-start.js +0 -1
  60. package/dist/lib/utils/chrome/post-message.js +0 -1
  61. package/dist/lib/utils/chrome/safe-post-message.js +0 -1
  62. package/dist/lib/utils/chrome/snapshot-plugin.js +5 -47
  63. package/dist/lib/utils/chrome/storage.js +0 -1
  64. package/dist/lib/utils/data/index.js +6 -29
  65. package/dist/lib/utils/index.js +0 -1
  66. package/dist/lib/utils/sdk/graph.js +25 -12
  67. package/dist/lib/utils/sdk/index.js +0 -1
  68. package/dist/lib/utils/types/common.js +0 -1
  69. package/dist/lib/utils/types/index.js +0 -1
  70. package/dist/lib/vendor/basic-proxy-core.js +147 -0
  71. package/dist/lib/worker/index.js +27 -9
  72. package/dist/types/App.css +13 -0
  73. package/dist/types/App.js +519 -0
  74. package/dist/types/App.module.js +24 -0
  75. package/dist/types/App_module.css +307 -0
  76. package/dist/types/component/DependencyGraph/index.js +225 -0
  77. package/dist/types/component/DependencyGraph/index.module.js +24 -0
  78. package/dist/types/component/DependencyGraph/index_module.css +100 -0
  79. package/dist/types/component/DependencyGraphItem/index.js +124 -0
  80. package/dist/types/component/DependencyGraphItem/index.module.js +24 -0
  81. package/dist/types/component/DependencyGraphItem/index_module.css +95 -0
  82. package/dist/types/component/Form/index.js +372 -0
  83. package/dist/types/component/Form/index.module.js +24 -0
  84. package/dist/types/component/Form/index_module.css +198 -0
  85. package/dist/types/component/LanguageSwitch.js +79 -0
  86. package/dist/types/component/Layout/index.js +471 -0
  87. package/dist/types/component/Layout/index.module.js +24 -0
  88. package/dist/types/component/Layout/index_module.css +68 -0
  89. package/dist/types/component/LoadingTrace/index.js +953 -0
  90. package/dist/types/component/LoadingTrace/index.module.js +24 -0
  91. package/dist/types/component/LoadingTrace/index_module.css +876 -0
  92. package/dist/types/component/ModuleInfo/index.js +342 -0
  93. package/dist/types/component/ModuleInfo/index.module.js +24 -0
  94. package/dist/types/component/ModuleInfo/index_module.css +184 -0
  95. package/dist/types/component/SharedDepsExplorer/FocusResultDisplay.js +64 -0
  96. package/dist/types/component/SharedDepsExplorer/FocusResultDisplay.module.js +24 -0
  97. package/dist/types/component/SharedDepsExplorer/FocusResultDisplay_module.css +45 -0
  98. package/dist/types/component/SharedDepsExplorer/index.js +638 -0
  99. package/dist/types/component/SharedDepsExplorer/index.module.js +24 -0
  100. package/dist/types/component/SharedDepsExplorer/index_module.css +467 -0
  101. package/dist/types/component/SharedDepsExplorer/share-utils.js +252 -0
  102. package/dist/types/component/ThemeToggle.js +48 -0
  103. package/dist/types/component/ThemeToggle.module.js +24 -0
  104. package/dist/types/component/ThemeToggle_module.css +12 -0
  105. package/dist/types/hooks/useDevtoolsTheme.js +100 -0
  106. package/dist/types/i18n/index.js +721 -0
  107. package/dist/types/init.js +8 -0
  108. package/dist/types/src/App.d.ts +1 -1
  109. package/dist/types/src/component/DependencyGraph/index.d.ts +1 -1
  110. package/dist/types/src/component/DependencyGraphItem/index.d.ts +1 -1
  111. package/dist/types/src/component/Form/index.d.ts +1 -1
  112. package/dist/types/src/component/LanguageSwitch.d.ts +1 -1
  113. package/dist/types/src/component/Layout/index.d.ts +1 -1
  114. package/dist/types/src/component/LoadingTrace/index.d.ts +6 -0
  115. package/dist/types/src/component/ModuleInfo/index.d.ts +1 -1
  116. package/dist/types/src/component/SharedDepsExplorer/index.d.ts +1 -1
  117. package/dist/types/src/component/SharedDepsExplorer/share-utils.d.ts +1 -1
  118. package/dist/types/src/i18n/index.d.ts +1 -1
  119. package/dist/types/src/template/constant.d.ts +1 -1
  120. package/dist/types/src/utils/chrome/index.d.ts +2 -1
  121. package/dist/types/src/utils/chrome/messages.d.ts +3 -0
  122. package/dist/types/src/utils/chrome/observability-plugin.d.ts +1 -0
  123. package/dist/types/src/utils/chrome/observability-shared.d.ts +41 -0
  124. package/dist/types/src/utils/chrome/observability.d.ts +110 -0
  125. package/dist/types/src/utils/chrome/snapshot-plugin.d.ts +0 -3
  126. package/dist/types/src/utils/data/index.d.ts +1 -2
  127. package/dist/types/src/utils/sdk/graph.d.ts +1 -1
  128. package/dist/types/src/utils/sdk/index.d.ts +2 -2
  129. package/dist/types/stories/index.stories.d.ts +2 -1
  130. package/dist/types/template/constant.js +84 -0
  131. package/dist/types/template/index.js +21 -0
  132. package/dist/types/utils/chrome/fast-refresh.js +329 -0
  133. package/dist/types/utils/chrome/index.js +321 -0
  134. package/dist/types/utils/chrome/messages.js +39 -0
  135. package/dist/types/utils/chrome/observability-plugin.js +85 -0
  136. package/dist/types/utils/chrome/observability-shared.js +125 -0
  137. package/dist/types/utils/chrome/observability.js +233 -0
  138. package/dist/types/utils/chrome/override-remote.js +17 -0
  139. package/dist/types/utils/chrome/post-message-init.js +5 -0
  140. package/dist/types/utils/chrome/post-message-listener.js +36 -0
  141. package/dist/types/utils/chrome/post-message-start.js +10 -0
  142. package/dist/types/utils/chrome/post-message.js +91 -0
  143. package/dist/types/utils/chrome/safe-post-message.js +147 -0
  144. package/dist/types/utils/chrome/snapshot-plugin.js +17 -0
  145. package/dist/types/utils/chrome/storage.js +71 -0
  146. package/dist/types/utils/data/index.js +83 -0
  147. package/dist/types/utils/index.js +27 -0
  148. package/dist/types/utils/sdk/graph.js +213 -0
  149. package/dist/types/utils/sdk/index.js +104 -0
  150. package/dist/types/utils/types/common.js +15 -0
  151. package/dist/types/utils/types/index.js +21 -0
  152. package/dist/types/vendor/basic-proxy-core.js +147 -0
  153. package/dist/types/worker/index.js +175 -0
  154. package/package.json +8 -8
  155. package/dist/es/utils/data/snapshot.js +0 -82
  156. package/dist/lib/utils/data/snapshot.js +0 -107
  157. package/dist/types/src/utils/data/snapshot.d.ts +0 -3
package/README.md CHANGED
@@ -4,5 +4,8 @@
4
4
 
5
5
  - Proxy online Module Federation remote module to local
6
6
  - Let proxied remote module get hmr
7
+ - Inject the Chrome-specific observability runtime plugin from the Loading Trace
8
+ tab, receive page events through `window.postMessage`, and export collected
9
+ loading reports
7
10
 
8
11
  https://module-federation.io/
package/dist/es/App.js CHANGED
@@ -46,10 +46,12 @@ import ProxyLayout from "./component/Layout";
46
46
  import Dependency from "./component/DependencyGraph";
47
47
  import ModuleInfo from "./component/ModuleInfo";
48
48
  import SharedDepsExplorer from "./component/SharedDepsExplorer";
49
+ import LoadingTrace from "./component/LoadingTrace";
49
50
  import LanguageSwitch from "./component/LanguageSwitch";
50
51
  import ThemeToggle from "./component/ThemeToggle";
51
52
  import {
52
53
  getGlobalModuleInfo,
54
+ normalizeModuleInfoPayload,
53
55
  refreshModuleInfo,
54
56
  separateType,
55
57
  syncActiveTab
@@ -62,10 +64,10 @@ import styles from "./App.module";
62
64
  import btnStyles from "./component/ThemeToggle.module";
63
65
  const cloneModuleInfo = (info) => {
64
66
  try {
65
- return JSON.parse(JSON.stringify(info || {}));
67
+ return normalizeModuleInfoPayload(info);
66
68
  } catch (error) {
67
69
  console.warn("[MF Devtools] cloneModuleInfo failed", error);
68
- return info || {};
70
+ return {};
69
71
  }
70
72
  };
71
73
  const normalizeShareValue = (target, seen = /* @__PURE__ */ new WeakSet()) => {
@@ -119,6 +121,7 @@ const NAV_ITEMS = [
119
121
  { key: "proxy", i18nKey: "app.nav.proxy" },
120
122
  { key: "dependency", i18nKey: "app.nav.dependency" },
121
123
  { key: "share", i18nKey: "app.nav.share" },
124
+ { key: "loadingTrace", i18nKey: "app.nav.loadingTrace" },
122
125
  { key: "performance", i18nKey: "app.nav.performance" }
123
126
  ];
124
127
  const THEME_STORAGE_KEY = "mf-devtools-theme";
@@ -151,6 +154,7 @@ const InnerApp = (props) => {
151
154
  const [inspectedTab, setInspectedTab] = useState(
152
155
  window.targetTab
153
156
  );
157
+ const [inspectedTabRefreshKey, setInspectedTabRefreshKey] = useState(0);
154
158
  const [activePanel, setActivePanel] = useState("proxy");
155
159
  const [selectedModuleId, setSelectedModuleId] = useState(null);
156
160
  const [refreshing, setRefreshing] = useState(false);
@@ -258,10 +262,14 @@ const InnerApp = (props) => {
258
262
  };
259
263
  }, [applyModuleUpdate]);
260
264
  useEffect(() => {
261
- const updateActiveTab = (tabId) => __async(void 0, null, function* () {
265
+ const updateActiveTab = (tabId, options) => __async(void 0, null, function* () {
262
266
  var _a, _b;
263
267
  const tab = yield syncActiveTab(tabId);
264
268
  setInspectedTab(tab || void 0);
269
+ if ((options == null ? void 0 : options.status) === "loading") {
270
+ setInspectedTabRefreshKey((key) => key + 1);
271
+ return;
272
+ }
265
273
  if ((_a = window.__FEDERATION__) == null ? void 0 : _a.moduleInfo) {
266
274
  applyModuleUpdate(cloneModuleInfo((_b = window.__FEDERATION__) == null ? void 0 : _b.moduleInfo));
267
275
  }
@@ -269,7 +277,7 @@ const InnerApp = (props) => {
269
277
  });
270
278
  const onMessage = (message, _sender, _sendResponse) => {
271
279
  if ((message == null ? void 0 : message.type) === MESSAGE_ACTIVE_TAB_CHANGED) {
272
- updateActiveTab(message.tabId);
280
+ updateActiveTab(message.tabId, { status: message.status });
273
281
  }
274
282
  };
275
283
  chrome.runtime.onMessage.addListener(onMessage);
@@ -397,6 +405,14 @@ const InnerApp = (props) => {
397
405
  )
398
406
  }
399
407
  );
408
+ case "loadingTrace":
409
+ return /* @__PURE__ */ jsx(
410
+ LoadingTrace,
411
+ {
412
+ tabId: inspectedTab == null ? void 0 : inspectedTab.id,
413
+ resetKey: inspectedTabRefreshKey
414
+ }
415
+ );
400
416
  case "performance":
401
417
  return /* @__PURE__ */ jsx("div", { className: styles.placeholder, children: t("app.performance.placeholder") });
402
418
  default:
@@ -76,10 +76,10 @@ body[arco-theme=dark] {
76
76
  }
77
77
 
78
78
  .activeTab_ae2ee {
79
- border-color: rgba(99, 102, 241, 0.65);
80
- background: linear-gradient(135deg, rgba(59, 130, 246, 0.15), rgba(37, 99, 235, 0.1));
79
+ border-color: rgba(24, 24, 27, 0.28);
80
+ background: linear-gradient(135deg, rgba(24, 24, 27, 0.08), rgba(113, 113, 122, 0.08));
81
81
  color: var(--color-text-1, #1e293b);
82
- box-shadow: 0 12px 28px rgba(30, 64, 175, 0.25);
82
+ box-shadow: 0 12px 28px rgba(24, 24, 27, 0.14);
83
83
  }
84
84
 
85
85
  .panel_ae2ee {
@@ -4,6 +4,23 @@ import { Handle, Position } from "reactflow";
4
4
  import { useTranslation } from "react-i18next";
5
5
  import styles from "./index.module";
6
6
  import "reactflow/dist/style.css";
7
+ const parseInfo = (info) => {
8
+ const array = info.split(":");
9
+ const [fallbackName, fallbackVersion = ""] = array;
10
+ const idx = array.findIndex((item, index) => {
11
+ return index > 0 && (item.startsWith("http") || item.startsWith("//"));
12
+ });
13
+ if (idx > 0) {
14
+ return {
15
+ name: array.slice(0, idx).join(":"),
16
+ version: array.slice(idx).join(":")
17
+ };
18
+ }
19
+ return {
20
+ name: fallbackName,
21
+ version: fallbackVersion
22
+ };
23
+ };
7
24
  const GraphItem = (props) => {
8
25
  const [shareds, setShareds] = useState([]);
9
26
  const [exposes, setExposes] = useState([]);
@@ -11,13 +28,7 @@ const GraphItem = (props) => {
11
28
  let name;
12
29
  let version;
13
30
  const { info = "", color, remote } = props.data;
14
- const infoArray = info.split(":");
15
- if (info.endsWith(".json") || info.endsWith(".js")) {
16
- name = infoArray.shift();
17
- version = infoArray.join(":");
18
- } else {
19
- [name, version] = infoArray;
20
- }
31
+ ({ name, version } = parseInfo(info));
21
32
  const isEntryType = (version == null ? void 0 : version.startsWith("http")) || (version == null ? void 0 : version.startsWith("//"));
22
33
  useEffect(() => {
23
34
  var _a, _b;