@fulgurjs/federation 6.13.2 → 6.13.4

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 (59) hide show
  1. package/CHANGELOG.md +14 -0
  2. package/dist/bridge-app-react.js +4 -4
  3. package/dist/bridge-app-vue.cjs +4 -1
  4. package/dist/bridge-app-vue.js +5 -5
  5. package/dist/bridge-core.cjs +8 -2
  6. package/dist/bridge-core.js +4 -4
  7. package/dist/bridge-errors.cjs +9 -3
  8. package/dist/bridge-errors.js +2 -2
  9. package/dist/bridge-host-react.cjs +11 -5
  10. package/dist/bridge-host-react.js +9 -7
  11. package/dist/bridge-host-vue.cjs +11 -5
  12. package/dist/bridge-host-vue.js +9 -7
  13. package/dist/bridge-router-react.js +4 -1
  14. package/dist/bridge-router-vue.js +4 -1
  15. package/dist/bridge-session-auto.js +2 -2
  16. package/dist/{chunk-MBH3TVAS.js → chunk-ATU42YF3.js} +1 -1
  17. package/dist/{chunk-TSPZ3EQ4.js → chunk-EGXWY5NW.js} +5 -4
  18. package/dist/{chunk-NVJN2ARX.js → chunk-EK5JODE4.js} +2 -2
  19. package/dist/{chunk-2OHKAD6I.js → chunk-FXG2TWSA.js} +1 -1
  20. package/dist/{chunk-YHXQHZ3E.js → chunk-NX3HRELG.js} +9 -2
  21. package/dist/{chunk-OQ4CGWNL.js → chunk-Y7YANGLN.js} +1 -1
  22. package/dist/cli.js +2 -2
  23. package/dist/context.cjs +4 -1
  24. package/dist/context.js +2 -2
  25. package/dist/index.cjs +35 -8
  26. package/dist/index.js +35 -8
  27. package/dist/react-adapter.cjs +10 -4
  28. package/dist/react-adapter.js +7 -6
  29. package/dist/runtime.js +13 -13
  30. package/dist/vue-adapter.cjs +27 -12
  31. package/dist/vue-adapter.js +25 -15
  32. package/dist/vue-store.d.cts +1 -1
  33. package/dist/vue-store.d.ts +1 -1
  34. package/dist/vue.d.ts +1 -1
  35. package/docs/en/reference/errors.md +4 -1
  36. package/docs/zh/reference/errors.md +4 -1
  37. package/examples/templates/react-host-vue-remote/pnpm-lock.yaml +7 -7
  38. package/examples/templates/react-host-vue-remote/pnpm-workspace.yaml +1 -1
  39. package/examples/templates/react-host-vue-remote/react-host/package.json +1 -1
  40. package/examples/templates/react-host-vue-remote/vue-remote/package.json +1 -1
  41. package/examples/templates/react-react/host/package.json +1 -1
  42. package/examples/templates/react-react/pnpm-lock.yaml +7 -7
  43. package/examples/templates/react-react/pnpm-workspace.yaml +1 -1
  44. package/examples/templates/react-react/remote/package.json +1 -1
  45. package/examples/templates/showcase/pnpm-lock.yaml +11 -11
  46. package/examples/templates/showcase/pnpm-workspace.yaml +1 -1
  47. package/examples/templates/showcase/react-host/package.json +1 -1
  48. package/examples/templates/showcase/react-remote/package.json +1 -1
  49. package/examples/templates/showcase/vue-host/package.json +1 -1
  50. package/examples/templates/showcase/vue-remote/package.json +1 -1
  51. package/examples/templates/vue-host-react-remote/pnpm-lock.yaml +7 -7
  52. package/examples/templates/vue-host-react-remote/pnpm-workspace.yaml +1 -1
  53. package/examples/templates/vue-host-react-remote/react-remote/package.json +1 -1
  54. package/examples/templates/vue-host-react-remote/vue-host/package.json +1 -1
  55. package/examples/templates/vue-vue/host/package.json +1 -1
  56. package/examples/templates/vue-vue/pnpm-lock.yaml +7 -7
  57. package/examples/templates/vue-vue/pnpm-workspace.yaml +1 -1
  58. package/examples/templates/vue-vue/remote/package.json +1 -1
  59. package/package.json +1 -1
package/CHANGELOG.md CHANGED
@@ -1,5 +1,19 @@
1
1
  # 当前发布说明
2
2
 
3
+ ## 6.13.4
4
+
5
+ - 桥接宿主包装错误时原样保留非 Error 拒绝值;默认 Vue/React 桥接占位与卸载日志使用脱敏摘要。
6
+ - 修复运行时调试出口重新暴露原始远程入口的问题;入口摘要去掉凭据、query/hash,失败摘要和插件日志清理标注的敏感值,原始 cause 不变。
7
+ - 合并重复诊断格式与钩子日志,保持既有体积预算;补充非 Error 身份、调试摘要及两种框架默认提示的回归。
8
+ - 五个模板依赖已发布的 6.13.3;本版本是诊断补强的基础包,后续模板资产版本再统一依赖本版。
9
+
10
+ ## 6.13.3
11
+
12
+ - 修复 `bindStoreToApp` 在内联 `defineStore` 与 Pinia getter 组合时的泛型推导,保留真实 store 字段、方法和容器约束;使用真实 Pinia 的正反例检查。
13
+ - 修复 MFU-019 的身份误判:只比较当前编译 SFC 实际导入的 Vue 函数与消费方 renderer,不再从默认共享表推断远程组件身份。支持生产脚本子请求;无证据、旧远程和冻结组件保持未知,不盲目拒绝合法组件或独立运行时桥接。
14
+ - 默认 Vue/React 错误占位对地址中的凭据、query/hash 及标注的敏感值脱敏,原始异常仍保留在 `cause`;运行时调试摘要复用地址清理规则,并保留无入口地址的 promise remote 注册行为。
15
+ - 同步源码、生成入口与版本锁文件,补充真实浏览器开发/生产对照、SFC 构建及声明消费回归;体积门禁保持原预算。
16
+
3
17
  ## 6.13.2
4
18
 
5
19
  构建期 chunk 分组两处修复(DEMES5.5 从零迁移轮 BI-FIX,均含业务工程生产构建/运行实测回归):
@@ -3,10 +3,10 @@ import {
3
3
  } from "./chunk-6OB47FSR.js";
4
4
  import {
5
5
  markBridgeMount
6
- } from "./chunk-NVJN2ARX.js";
7
- import "./chunk-TSPZ3EQ4.js";
8
- import "./chunk-MBH3TVAS.js";
9
- import "./chunk-YHXQHZ3E.js";
6
+ } from "./chunk-EK5JODE4.js";
7
+ import "./chunk-EGXWY5NW.js";
8
+ import "./chunk-ATU42YF3.js";
9
+ import "./chunk-NX3HRELG.js";
10
10
 
11
11
  // src/bridge-app-react.ts
12
12
  import { Component, createElement, useEffect } from "react";
@@ -26,11 +26,14 @@ __export(bridge_app_vue_exports, {
26
26
  module.exports = __toCommonJS(bridge_app_vue_exports);
27
27
 
28
28
  // src/runtime/errors.ts
29
+ function diagnosticUrl(text) {
30
+ return text.replace(/(https?:\/\/)(?:[^\s/@]+@)?([^\s?#"'<>,。;))\]]+)(?:[?#][^\s"'<>,。;))\]]*)?/g, "$1$2");
31
+ }
29
32
  var FgError = class extends Error {
30
33
  code;
31
34
  details;
32
35
  constructor(code, message, details, options) {
33
- super(`[fulgurjs:${code}] ${message}`, options);
36
+ super(`[fulgurjs:${code}] ${diagnosticUrl(message)}`, options);
34
37
  this.name = "FgError";
35
38
  this.code = code;
36
39
  this.details = details;
@@ -3,16 +3,16 @@ import {
3
3
  } from "./chunk-6OB47FSR.js";
4
4
  import {
5
5
  sameLocation
6
- } from "./chunk-OQ4CGWNL.js";
6
+ } from "./chunk-Y7YANGLN.js";
7
7
  import {
8
8
  markBridgeMount
9
- } from "./chunk-NVJN2ARX.js";
9
+ } from "./chunk-EK5JODE4.js";
10
10
  import {
11
11
  routingChannelNotProvidedError,
12
12
  routingSyncError
13
- } from "./chunk-TSPZ3EQ4.js";
14
- import "./chunk-MBH3TVAS.js";
15
- import "./chunk-YHXQHZ3E.js";
13
+ } from "./chunk-EGXWY5NW.js";
14
+ import "./chunk-ATU42YF3.js";
15
+ import "./chunk-NX3HRELG.js";
16
16
 
17
17
  // src/bridge-router-sync.ts
18
18
  function collapseConsecutiveReports(report) {
@@ -33,11 +33,17 @@ __export(bridge_core_exports, {
33
33
  module.exports = __toCommonJS(bridge_core_exports);
34
34
 
35
35
  // src/runtime/errors.ts
36
+ function diagnosticUrl(text) {
37
+ return text.replace(/(https?:\/\/)(?:[^\s/@]+@)?([^\s?#"'<>,。;))\]]+)(?:[?#][^\s"'<>,。;))\]]*)?/g, "$1$2");
38
+ }
39
+ function diagnosticMessage(error) {
40
+ return diagnosticUrl(String(error?.message ?? error)).replace(/\b(token|password|cookie|authorization)["']?\s*[:=]\s*["']?(?:Bearer\s+)?[^\s,;"'}]+/gi, "$1=[redacted]");
41
+ }
36
42
  var FgError = class extends Error {
37
43
  code;
38
44
  details;
39
45
  constructor(code, message, details, options) {
40
- super(`[fulgurjs:${code}] ${message}`, options);
46
+ super(`[fulgurjs:${code}] ${diagnosticUrl(message)}`, options);
41
47
  this.name = "FgError";
42
48
  this.code = code;
43
49
  this.details = details;
@@ -91,7 +97,7 @@ function invalidBridgeContractError(spec, mod) {
91
97
  );
92
98
  }
93
99
  function bridgeLifecycleError(phase, spec, cause, extra) {
94
- const raw = cause instanceof Error ? cause.message : String(cause ?? "unknown");
100
+ const raw = diagnosticMessage(cause);
95
101
  const fixes = {
96
102
  getContext: "\u4FEE\u6CD5: \u2460 getContext \u5FC5\u987B\u662F\u540C\u6B65\u3001\u65E0\u526F\u4F5C\u7528\u7684 getter\uFF08\u4E0D\u5F97\u8FD4\u56DE Promise/thenable\uFF09\uFF1B\n \u2461 \u8FD4\u56DE\u503C\u987B\u662F\u5305\u542B\u672C\u6B21\u4F1A\u8BDD\u5FEB\u7167\u7684\u5BF9\u8C61\uFF08\u53D7\u63A7 sessionKey \u65F6\u987B\u542B\u76F8\u540C sessionKey\uFF09\uFF1B\n \u2462 \u5F02\u6B65\u83B7\u53D6\u7528\u6237\u8D44\u6599\u8BF7\u5728\u5BBF\u4E3B\u5B8C\u6210\u540E\u518D\u8BA9\u6865\u63A5\u7EC4\u4EF6\u8FDB\u5165\u53EF\u6302\u8F7D\u72B6\u6001\u3002",
97
103
  mount: "\u4FEE\u6CD5: \u2460 \u67E5\u770B\u6839\u56E0\u4E2D\u5B50\u5E94\u7528 mount \u7684\u539F\u59CB\u9519\u8BEF\uFF08\u5DE5\u5382\u629B\u9519\u6216\u9996\u6B21\u6E32\u67D3\u5931\u8D25\uFF09\uFF1B\n \u2461 \u540C\u4E00\u5BB9\u5668\u672A\u5378\u8F7D\u524D\u91CD\u590D mount \u662F\u5951\u7EA6\u8FDD\u4F8B\u2014\u2014\u5148 unmount \u518D mount\uFF1B\n \u2462 \u4FEE\u590D\u540E\u70B9\u51FB\u300C\u91CD\u8BD5\u52A0\u8F7D\u300D\u5728\u540C\u9875\u91CD\u5EFA\u6302\u8F7D\u3002",
@@ -8,10 +8,10 @@ import {
8
8
  releaseBridgeSession,
9
9
  resolveBridgeContext,
10
10
  withBridgeTimeout
11
- } from "./chunk-NVJN2ARX.js";
12
- import "./chunk-TSPZ3EQ4.js";
13
- import "./chunk-MBH3TVAS.js";
14
- import "./chunk-YHXQHZ3E.js";
11
+ } from "./chunk-EK5JODE4.js";
12
+ import "./chunk-EGXWY5NW.js";
13
+ import "./chunk-ATU42YF3.js";
14
+ import "./chunk-NX3HRELG.js";
15
15
  export {
16
16
  acquireBridgeSession,
17
17
  assertBridgeContract,
@@ -35,11 +35,17 @@ __export(bridge_errors_exports, {
35
35
  module.exports = __toCommonJS(bridge_errors_exports);
36
36
 
37
37
  // src/runtime/errors.ts
38
+ function diagnosticUrl(text) {
39
+ return text.replace(/(https?:\/\/)(?:[^\s/@]+@)?([^\s?#"'<>,。;))\]]+)(?:[?#][^\s"'<>,。;))\]]*)?/g, "$1$2");
40
+ }
41
+ function diagnosticMessage(error) {
42
+ return diagnosticUrl(String(error?.message ?? error)).replace(/\b(token|password|cookie|authorization)["']?\s*[:=]\s*["']?(?:Bearer\s+)?[^\s,;"'}]+/gi, "$1=[redacted]");
43
+ }
38
44
  var FgError = class extends Error {
39
45
  code;
40
46
  details;
41
47
  constructor(code, message, details, options) {
42
- super(`[fulgurjs:${code}] ${message}`, options);
48
+ super(`[fulgurjs:${code}] ${diagnosticUrl(message)}`, options);
43
49
  this.name = "FgError";
44
50
  this.code = code;
45
51
  this.details = details;
@@ -82,7 +88,7 @@ function invalidBridgeContractError(spec, mod) {
82
88
  );
83
89
  }
84
90
  function bridgeLifecycleError(phase, spec, cause, extra) {
85
- const raw = cause instanceof Error ? cause.message : String(cause ?? "unknown");
91
+ const raw = diagnosticMessage(cause);
86
92
  const fixes = {
87
93
  getContext: "\u4FEE\u6CD5: \u2460 getContext \u5FC5\u987B\u662F\u540C\u6B65\u3001\u65E0\u526F\u4F5C\u7528\u7684 getter\uFF08\u4E0D\u5F97\u8FD4\u56DE Promise/thenable\uFF09\uFF1B\n \u2461 \u8FD4\u56DE\u503C\u987B\u662F\u5305\u542B\u672C\u6B21\u4F1A\u8BDD\u5FEB\u7167\u7684\u5BF9\u8C61\uFF08\u53D7\u63A7 sessionKey \u65F6\u987B\u542B\u76F8\u540C sessionKey\uFF09\uFF1B\n \u2462 \u5F02\u6B65\u83B7\u53D6\u7528\u6237\u8D44\u6599\u8BF7\u5728\u5BBF\u4E3B\u5B8C\u6210\u540E\u518D\u8BA9\u6865\u63A5\u7EC4\u4EF6\u8FDB\u5165\u53EF\u6302\u8F7D\u72B6\u6001\u3002",
88
94
  mount: "\u4FEE\u6CD5: \u2460 \u67E5\u770B\u6839\u56E0\u4E2D\u5B50\u5E94\u7528 mount \u7684\u539F\u59CB\u9519\u8BEF\uFF08\u5DE5\u5382\u629B\u9519\u6216\u9996\u6B21\u6E32\u67D3\u5931\u8D25\uFF09\uFF1B\n \u2461 \u540C\u4E00\u5BB9\u5668\u672A\u5378\u8F7D\u524D\u91CD\u590D mount \u662F\u5951\u7EA6\u8FDD\u4F8B\u2014\u2014\u5148 unmount \u518D mount\uFF1B\n \u2462 \u4FEE\u590D\u540E\u70B9\u51FB\u300C\u91CD\u8BD5\u52A0\u8F7D\u300D\u5728\u540C\u9875\u91CD\u5EFA\u6302\u8F7D\u3002",
@@ -99,7 +105,7 @@ function bridgeLifecycleError(phase, spec, cause, extra) {
99
105
  }
100
106
  function bridgeHostError(phase, spec, cause) {
101
107
  if (cause instanceof FgError) return cause;
102
- return bridgeLifecycleError(phase, spec, cause instanceof Error ? cause : String(cause));
108
+ return bridgeLifecycleError(phase, spec, cause);
103
109
  }
104
110
  function bridgeSessionMismatchError(spec, controlled, actual, extra) {
105
111
  const actualText = actual === void 0 ? "undefined\uFF08\u9875\u9762\u5C1A\u65E0 AppContext\uFF09" : typeof actual === "string" ? `"${actual}"` : String(actual);
@@ -10,8 +10,8 @@ import {
10
10
  routingNavigationError,
11
11
  routingProtocolError,
12
12
  routingSyncError
13
- } from "./chunk-TSPZ3EQ4.js";
14
- import "./chunk-YHXQHZ3E.js";
13
+ } from "./chunk-EGXWY5NW.js";
14
+ import "./chunk-NX3HRELG.js";
15
15
  export {
16
16
  BridgeErrorCodes,
17
17
  bridgeHostError,
@@ -26,11 +26,17 @@ module.exports = __toCommonJS(bridge_host_react_exports);
26
26
  var import_react = require("react");
27
27
 
28
28
  // src/runtime/errors.ts
29
+ function diagnosticUrl(text) {
30
+ return text.replace(/(https?:\/\/)(?:[^\s/@]+@)?([^\s?#"'<>,。;))\]]+)(?:[?#][^\s"'<>,。;))\]]*)?/g, "$1$2");
31
+ }
32
+ function diagnosticMessage(error) {
33
+ return diagnosticUrl(String(error?.message ?? error)).replace(/\b(token|password|cookie|authorization)["']?\s*[:=]\s*["']?(?:Bearer\s+)?[^\s,;"'}]+/gi, "$1=[redacted]");
34
+ }
29
35
  var FgError = class extends Error {
30
36
  code;
31
37
  details;
32
38
  constructor(code, message, details, options) {
33
- super(`[fulgurjs:${code}] ${message}`, options);
39
+ super(`[fulgurjs:${code}] ${diagnosticUrl(message)}`, options);
34
40
  this.name = "FgError";
35
41
  this.code = code;
36
42
  this.details = details;
@@ -106,7 +112,7 @@ function invalidBridgeContractError(spec, mod) {
106
112
  );
107
113
  }
108
114
  function bridgeLifecycleError(phase, spec, cause, extra) {
109
- const raw = cause instanceof Error ? cause.message : String(cause ?? "unknown");
115
+ const raw = diagnosticMessage(cause);
110
116
  const fixes = {
111
117
  getContext: "\u4FEE\u6CD5: \u2460 getContext \u5FC5\u987B\u662F\u540C\u6B65\u3001\u65E0\u526F\u4F5C\u7528\u7684 getter\uFF08\u4E0D\u5F97\u8FD4\u56DE Promise/thenable\uFF09\uFF1B\n \u2461 \u8FD4\u56DE\u503C\u987B\u662F\u5305\u542B\u672C\u6B21\u4F1A\u8BDD\u5FEB\u7167\u7684\u5BF9\u8C61\uFF08\u53D7\u63A7 sessionKey \u65F6\u987B\u542B\u76F8\u540C sessionKey\uFF09\uFF1B\n \u2462 \u5F02\u6B65\u83B7\u53D6\u7528\u6237\u8D44\u6599\u8BF7\u5728\u5BBF\u4E3B\u5B8C\u6210\u540E\u518D\u8BA9\u6865\u63A5\u7EC4\u4EF6\u8FDB\u5165\u53EF\u6302\u8F7D\u72B6\u6001\u3002",
112
118
  mount: "\u4FEE\u6CD5: \u2460 \u67E5\u770B\u6839\u56E0\u4E2D\u5B50\u5E94\u7528 mount \u7684\u539F\u59CB\u9519\u8BEF\uFF08\u5DE5\u5382\u629B\u9519\u6216\u9996\u6B21\u6E32\u67D3\u5931\u8D25\uFF09\uFF1B\n \u2461 \u540C\u4E00\u5BB9\u5668\u672A\u5378\u8F7D\u524D\u91CD\u590D mount \u662F\u5951\u7EA6\u8FDD\u4F8B\u2014\u2014\u5148 unmount \u518D mount\uFF1B\n \u2462 \u4FEE\u590D\u540E\u70B9\u51FB\u300C\u91CD\u8BD5\u52A0\u8F7D\u300D\u5728\u540C\u9875\u91CD\u5EFA\u6302\u8F7D\u3002",
@@ -123,7 +129,7 @@ function bridgeLifecycleError(phase, spec, cause, extra) {
123
129
  }
124
130
  function bridgeHostError(phase, spec, cause) {
125
131
  if (cause instanceof FgError) return cause;
126
- return bridgeLifecycleError(phase, spec, cause instanceof Error ? cause : String(cause));
132
+ return bridgeLifecycleError(phase, spec, cause);
127
133
  }
128
134
  function bridgeSessionMismatchError(spec, controlled, actual, extra) {
129
135
  const actualText = actual === void 0 ? "undefined\uFF08\u9875\u9762\u5C1A\u65E0 AppContext\uFF09" : typeof actual === "string" ? `"${actual}"` : String(actual);
@@ -602,7 +608,7 @@ var SECONDARY_BUTTON_STYLE = {
602
608
  function DefaultBridgeErrorView({ error, retry, blocked }) {
603
609
  const err = error;
604
610
  const code = err?.code ?? "UNKNOWN";
605
- const message = err?.message ?? String(error ?? "unknown error");
611
+ const message = diagnosticMessage(error ?? "unknown error");
606
612
  return (0, import_react.createElement)("div", { style: ERROR_STYLE, "data-fulgurjs-error": code }, [
607
613
  (0, import_react.createElement)("p", { key: "t", style: { margin: "0 0 4px", fontWeight: 600 } }, `\u6865\u63A5\u5E94\u7528\u52A0\u8F7D\u5931\u8D25\uFF08\u9519\u8BEF\u7801 ${code}\uFF09`),
608
614
  (0, import_react.createElement)("p", { key: "m", style: MESSAGE_STYLE }, message),
@@ -717,7 +723,7 @@ function createReactBridgeAppWithLoader(loadRemote) {
717
723
  c.unmount(el);
718
724
  } catch (e) {
719
725
  const err = bridgeHostError("unmount", spec, e);
720
- console.error("[fulgurjs] \u6865\u63A5\u5E94\u7528\u5378\u8F7D\u5931\u8D25\uFF1A", err);
726
+ console.error("[fulgurjs] \u6865\u63A5\u5E94\u7528\u5378\u8F7D\u5931\u8D25\uFF1A", diagnosticMessage(err));
721
727
  blockedRef.current = true;
722
728
  setError(err);
723
729
  setStatus("error");
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  RoutingChannel,
3
3
  assertBridgeRoutingProtocol
4
- } from "./chunk-OQ4CGWNL.js";
4
+ } from "./chunk-Y7YANGLN.js";
5
5
  import {
6
6
  acquireBridgeSession,
7
7
  assertBridgeContract,
@@ -10,14 +10,16 @@ import {
10
10
  releaseBridgeSession,
11
11
  resolveBridgeContext,
12
12
  withBridgeTimeout
13
- } from "./chunk-NVJN2ARX.js";
13
+ } from "./chunk-EK5JODE4.js";
14
14
  import {
15
15
  bridgeHostError
16
- } from "./chunk-TSPZ3EQ4.js";
16
+ } from "./chunk-EGXWY5NW.js";
17
17
  import {
18
18
  provideAppContext
19
- } from "./chunk-MBH3TVAS.js";
20
- import "./chunk-YHXQHZ3E.js";
19
+ } from "./chunk-ATU42YF3.js";
20
+ import {
21
+ diagnosticMessage
22
+ } from "./chunk-NX3HRELG.js";
21
23
 
22
24
  // src/bridge-host-react.ts
23
25
  import {
@@ -64,7 +66,7 @@ var SECONDARY_BUTTON_STYLE = {
64
66
  function DefaultBridgeErrorView({ error, retry, blocked }) {
65
67
  const err = error;
66
68
  const code = err?.code ?? "UNKNOWN";
67
- const message = err?.message ?? String(error ?? "unknown error");
69
+ const message = diagnosticMessage(error ?? "unknown error");
68
70
  return createElement("div", { style: ERROR_STYLE, "data-fulgurjs-error": code }, [
69
71
  createElement("p", { key: "t", style: { margin: "0 0 4px", fontWeight: 600 } }, `\u6865\u63A5\u5E94\u7528\u52A0\u8F7D\u5931\u8D25\uFF08\u9519\u8BEF\u7801 ${code}\uFF09`),
70
72
  createElement("p", { key: "m", style: MESSAGE_STYLE }, message),
@@ -179,7 +181,7 @@ function createReactBridgeAppWithLoader(loadRemote) {
179
181
  c.unmount(el);
180
182
  } catch (e) {
181
183
  const err = bridgeHostError("unmount", spec, e);
182
- console.error("[fulgurjs] \u6865\u63A5\u5E94\u7528\u5378\u8F7D\u5931\u8D25\uFF1A", err);
184
+ console.error("[fulgurjs] \u6865\u63A5\u5E94\u7528\u5378\u8F7D\u5931\u8D25\uFF1A", diagnosticMessage(err));
183
185
  blockedRef.current = true;
184
186
  setError(err);
185
187
  setStatus("error");
@@ -26,11 +26,17 @@ module.exports = __toCommonJS(bridge_host_vue_exports);
26
26
  var import_vue = require("vue");
27
27
 
28
28
  // src/runtime/errors.ts
29
+ function diagnosticUrl(text) {
30
+ return text.replace(/(https?:\/\/)(?:[^\s/@]+@)?([^\s?#"'<>,。;))\]]+)(?:[?#][^\s"'<>,。;))\]]*)?/g, "$1$2");
31
+ }
32
+ function diagnosticMessage(error) {
33
+ return diagnosticUrl(String(error?.message ?? error)).replace(/\b(token|password|cookie|authorization)["']?\s*[:=]\s*["']?(?:Bearer\s+)?[^\s,;"'}]+/gi, "$1=[redacted]");
34
+ }
29
35
  var FgError = class extends Error {
30
36
  code;
31
37
  details;
32
38
  constructor(code, message, details, options) {
33
- super(`[fulgurjs:${code}] ${message}`, options);
39
+ super(`[fulgurjs:${code}] ${diagnosticUrl(message)}`, options);
34
40
  this.name = "FgError";
35
41
  this.code = code;
36
42
  this.details = details;
@@ -106,7 +112,7 @@ function invalidBridgeContractError(spec, mod) {
106
112
  );
107
113
  }
108
114
  function bridgeLifecycleError(phase, spec, cause, extra) {
109
- const raw = cause instanceof Error ? cause.message : String(cause ?? "unknown");
115
+ const raw = diagnosticMessage(cause);
110
116
  const fixes = {
111
117
  getContext: "\u4FEE\u6CD5: \u2460 getContext \u5FC5\u987B\u662F\u540C\u6B65\u3001\u65E0\u526F\u4F5C\u7528\u7684 getter\uFF08\u4E0D\u5F97\u8FD4\u56DE Promise/thenable\uFF09\uFF1B\n \u2461 \u8FD4\u56DE\u503C\u987B\u662F\u5305\u542B\u672C\u6B21\u4F1A\u8BDD\u5FEB\u7167\u7684\u5BF9\u8C61\uFF08\u53D7\u63A7 sessionKey \u65F6\u987B\u542B\u76F8\u540C sessionKey\uFF09\uFF1B\n \u2462 \u5F02\u6B65\u83B7\u53D6\u7528\u6237\u8D44\u6599\u8BF7\u5728\u5BBF\u4E3B\u5B8C\u6210\u540E\u518D\u8BA9\u6865\u63A5\u7EC4\u4EF6\u8FDB\u5165\u53EF\u6302\u8F7D\u72B6\u6001\u3002",
112
118
  mount: "\u4FEE\u6CD5: \u2460 \u67E5\u770B\u6839\u56E0\u4E2D\u5B50\u5E94\u7528 mount \u7684\u539F\u59CB\u9519\u8BEF\uFF08\u5DE5\u5382\u629B\u9519\u6216\u9996\u6B21\u6E32\u67D3\u5931\u8D25\uFF09\uFF1B\n \u2461 \u540C\u4E00\u5BB9\u5668\u672A\u5378\u8F7D\u524D\u91CD\u590D mount \u662F\u5951\u7EA6\u8FDD\u4F8B\u2014\u2014\u5148 unmount \u518D mount\uFF1B\n \u2462 \u4FEE\u590D\u540E\u70B9\u51FB\u300C\u91CD\u8BD5\u52A0\u8F7D\u300D\u5728\u540C\u9875\u91CD\u5EFA\u6302\u8F7D\u3002",
@@ -123,7 +129,7 @@ function bridgeLifecycleError(phase, spec, cause, extra) {
123
129
  }
124
130
  function bridgeHostError(phase, spec, cause) {
125
131
  if (cause instanceof FgError) return cause;
126
- return bridgeLifecycleError(phase, spec, cause instanceof Error ? cause : String(cause));
132
+ return bridgeLifecycleError(phase, spec, cause);
127
133
  }
128
134
  function bridgeSessionMismatchError(spec, controlled, actual, extra) {
129
135
  const actualText = actual === void 0 ? "undefined\uFF08\u9875\u9762\u5C1A\u65E0 AppContext\uFF09" : typeof actual === "string" ? `"${actual}"` : String(actual);
@@ -611,7 +617,7 @@ var BridgeErrorPlaceholder = /* @__PURE__ */ (0, import_vue.defineComponent)({
611
617
  return () => {
612
618
  const err = props.error;
613
619
  const code = err?.code ?? "UNKNOWN";
614
- const message = err?.message ?? String(props.error ?? "unknown error");
620
+ const message = diagnosticMessage(props.error ?? "unknown error");
615
621
  return (0, import_vue.h)("div", { style: ERROR_STYLE, "data-fulgurjs-error": code }, [
616
622
  (0, import_vue.h)("p", { style: "margin:0 0 4px;font-weight:600" }, `\u6865\u63A5\u5E94\u7528\u52A0\u8F7D\u5931\u8D25\uFF08\u9519\u8BEF\u7801 ${code}\uFF09`),
617
623
  (0, import_vue.h)("p", { style: "margin:0 0 8px;word-break:break-all" }, message),
@@ -693,7 +699,7 @@ function createVueBridgeAppWithLoader(loadRemote, automaticSession) {
693
699
  } catch (e) {
694
700
  const err = bridgeHostError("unmount", spec, e);
695
701
  containerBlocked = true;
696
- console.error("[fulgurjs] \u6865\u63A5\u5E94\u7528\u5378\u8F7D\u5931\u8D25\uFF0C\u8BE5\u5BB9\u5668\u5DF2\u5C01\u9501\uFF08\u540C\u9875\u53EA\u80FD\u5237\u65B0\u6062\u590D\uFF09\uFF1A", err);
702
+ console.error("[fulgurjs] \u6865\u63A5\u5E94\u7528\u5378\u8F7D\u5931\u8D25\uFF0C\u8BE5\u5BB9\u5668\u5DF2\u5C01\u9501\uFF08\u540C\u9875\u53EA\u80FD\u5237\u65B0\u6062\u590D\uFF09\uFF1A", diagnosticMessage(err));
697
703
  error.value = err;
698
704
  status.value = "error";
699
705
  return false;
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  RoutingChannel,
3
3
  assertBridgeRoutingProtocol
4
- } from "./chunk-OQ4CGWNL.js";
4
+ } from "./chunk-Y7YANGLN.js";
5
5
  import {
6
6
  acquireBridgeSession,
7
7
  assertBridgeContract,
@@ -10,15 +10,17 @@ import {
10
10
  releaseBridgeSession,
11
11
  resolveBridgeContext,
12
12
  withBridgeTimeout
13
- } from "./chunk-NVJN2ARX.js";
13
+ } from "./chunk-EK5JODE4.js";
14
14
  import {
15
15
  bridgeHostError
16
- } from "./chunk-TSPZ3EQ4.js";
16
+ } from "./chunk-EGXWY5NW.js";
17
17
  import {
18
18
  clearAppContext,
19
19
  provideAppContext
20
- } from "./chunk-MBH3TVAS.js";
21
- import "./chunk-YHXQHZ3E.js";
20
+ } from "./chunk-ATU42YF3.js";
21
+ import {
22
+ diagnosticMessage
23
+ } from "./chunk-NX3HRELG.js";
22
24
 
23
25
  // src/bridge-host-vue.ts
24
26
  import { defineComponent, h, onActivated, onBeforeUnmount, onDeactivated, onMounted, ref, shallowRef, toRaw, watch } from "vue";
@@ -68,7 +70,7 @@ var BridgeErrorPlaceholder = /* @__PURE__ */ defineComponent({
68
70
  return () => {
69
71
  const err = props.error;
70
72
  const code = err?.code ?? "UNKNOWN";
71
- const message = err?.message ?? String(props.error ?? "unknown error");
73
+ const message = diagnosticMessage(props.error ?? "unknown error");
72
74
  return h("div", { style: ERROR_STYLE, "data-fulgurjs-error": code }, [
73
75
  h("p", { style: "margin:0 0 4px;font-weight:600" }, `\u6865\u63A5\u5E94\u7528\u52A0\u8F7D\u5931\u8D25\uFF08\u9519\u8BEF\u7801 ${code}\uFF09`),
74
76
  h("p", { style: "margin:0 0 8px;word-break:break-all" }, message),
@@ -150,7 +152,7 @@ function createVueBridgeAppWithLoader(loadRemote, automaticSession) {
150
152
  } catch (e) {
151
153
  const err = bridgeHostError("unmount", spec, e);
152
154
  containerBlocked = true;
153
- console.error("[fulgurjs] \u6865\u63A5\u5E94\u7528\u5378\u8F7D\u5931\u8D25\uFF0C\u8BE5\u5BB9\u5668\u5DF2\u5C01\u9501\uFF08\u540C\u9875\u53EA\u80FD\u5237\u65B0\u6062\u590D\uFF09\uFF1A", err);
155
+ console.error("[fulgurjs] \u6865\u63A5\u5E94\u7528\u5378\u8F7D\u5931\u8D25\uFF0C\u8BE5\u5BB9\u5668\u5DF2\u5C01\u9501\uFF08\u540C\u9875\u53EA\u80FD\u5237\u65B0\u6062\u590D\uFF09\uFF1A", diagnosticMessage(err));
154
156
  error.value = err;
155
157
  status.value = "error";
156
158
  return false;
@@ -2,11 +2,14 @@
2
2
  import { createElement, useEffect, useState } from "react";
3
3
 
4
4
  // src/runtime/errors.ts
5
+ function diagnosticUrl(text) {
6
+ return text.replace(/(https?:\/\/)(?:[^\s/@]+@)?([^\s?#"'<>,。;))\]]+)(?:[?#][^\s"'<>,。;))\]]*)?/g, "$1$2");
7
+ }
5
8
  var FgError = class extends Error {
6
9
  code;
7
10
  details;
8
11
  constructor(code, message, details, options) {
9
- super(`[fulgurjs:${code}] ${message}`, options);
12
+ super(`[fulgurjs:${code}] ${diagnosticUrl(message)}`, options);
10
13
  this.name = "FgError";
11
14
  this.code = code;
12
15
  this.details = details;
@@ -1,9 +1,12 @@
1
1
  // src/runtime/errors.ts
2
+ function diagnosticUrl(text) {
3
+ return text.replace(/(https?:\/\/)(?:[^\s/@]+@)?([^\s?#"'<>,。;))\]]+)(?:[?#][^\s"'<>,。;))\]]*)?/g, "$1$2");
4
+ }
2
5
  var FgError = class extends Error {
3
6
  code;
4
7
  details;
5
8
  constructor(code, message, details, options) {
6
- super(`[fulgurjs:${code}] ${message}`, options);
9
+ super(`[fulgurjs:${code}] ${diagnosticUrl(message)}`, options);
7
10
  this.name = "FgError";
8
11
  this.code = code;
9
12
  this.details = details;
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  clearAppContext
3
- } from "./chunk-MBH3TVAS.js";
4
- import "./chunk-YHXQHZ3E.js";
3
+ } from "./chunk-ATU42YF3.js";
4
+ import "./chunk-NX3HRELG.js";
5
5
 
6
6
  // src/bridge-session-auto.ts
7
7
  import { effectScope, ref, shallowRef, watch } from "vue";
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  FgError
3
- } from "./chunk-YHXQHZ3E.js";
3
+ } from "./chunk-NX3HRELG.js";
4
4
 
5
5
  // src/context.ts
6
6
  var ContextErrorCodes = {
@@ -1,6 +1,7 @@
1
1
  import {
2
- FgError
3
- } from "./chunk-YHXQHZ3E.js";
2
+ FgError,
3
+ diagnosticMessage
4
+ } from "./chunk-NX3HRELG.js";
4
5
 
5
6
  // src/bridge-errors.ts
6
7
  var BridgeErrorCodes = {
@@ -38,7 +39,7 @@ function invalidBridgeContractError(spec, mod) {
38
39
  );
39
40
  }
40
41
  function bridgeLifecycleError(phase, spec, cause, extra) {
41
- const raw = cause instanceof Error ? cause.message : String(cause ?? "unknown");
42
+ const raw = diagnosticMessage(cause);
42
43
  const fixes = {
43
44
  getContext: "\u4FEE\u6CD5: \u2460 getContext \u5FC5\u987B\u662F\u540C\u6B65\u3001\u65E0\u526F\u4F5C\u7528\u7684 getter\uFF08\u4E0D\u5F97\u8FD4\u56DE Promise/thenable\uFF09\uFF1B\n \u2461 \u8FD4\u56DE\u503C\u987B\u662F\u5305\u542B\u672C\u6B21\u4F1A\u8BDD\u5FEB\u7167\u7684\u5BF9\u8C61\uFF08\u53D7\u63A7 sessionKey \u65F6\u987B\u542B\u76F8\u540C sessionKey\uFF09\uFF1B\n \u2462 \u5F02\u6B65\u83B7\u53D6\u7528\u6237\u8D44\u6599\u8BF7\u5728\u5BBF\u4E3B\u5B8C\u6210\u540E\u518D\u8BA9\u6865\u63A5\u7EC4\u4EF6\u8FDB\u5165\u53EF\u6302\u8F7D\u72B6\u6001\u3002",
44
45
  mount: "\u4FEE\u6CD5: \u2460 \u67E5\u770B\u6839\u56E0\u4E2D\u5B50\u5E94\u7528 mount \u7684\u539F\u59CB\u9519\u8BEF\uFF08\u5DE5\u5382\u629B\u9519\u6216\u9996\u6B21\u6E32\u67D3\u5931\u8D25\uFF09\uFF1B\n \u2461 \u540C\u4E00\u5BB9\u5668\u672A\u5378\u8F7D\u524D\u91CD\u590D mount \u662F\u5951\u7EA6\u8FDD\u4F8B\u2014\u2014\u5148 unmount \u518D mount\uFF1B\n \u2462 \u4FEE\u590D\u540E\u70B9\u51FB\u300C\u91CD\u8BD5\u52A0\u8F7D\u300D\u5728\u540C\u9875\u91CD\u5EFA\u6302\u8F7D\u3002",
@@ -55,7 +56,7 @@ function bridgeLifecycleError(phase, spec, cause, extra) {
55
56
  }
56
57
  function bridgeHostError(phase, spec, cause) {
57
58
  if (cause instanceof FgError) return cause;
58
- return bridgeLifecycleError(phase, spec, cause instanceof Error ? cause : String(cause));
59
+ return bridgeLifecycleError(phase, spec, cause);
59
60
  }
60
61
  function bridgeSessionMismatchError(spec, controlled, actual, extra) {
61
62
  const actualText = actual === void 0 ? "undefined\uFF08\u9875\u9762\u5C1A\u65E0 AppContext\uFF09" : typeof actual === "string" ? `"${actual}"` : String(actual);
@@ -3,10 +3,10 @@ import {
3
3
  bridgeSessionMismatchError,
4
4
  invalidBridgeContractError,
5
5
  invalidSessionKeyError
6
- } from "./chunk-TSPZ3EQ4.js";
6
+ } from "./chunk-EGXWY5NW.js";
7
7
  import {
8
8
  clearAppContext
9
- } from "./chunk-MBH3TVAS.js";
9
+ } from "./chunk-ATU42YF3.js";
10
10
 
11
11
  // src/bridge-core.ts
12
12
  function assertBridgeContract(spec, mod) {
@@ -3,7 +3,7 @@ import {
3
3
  } from "./chunk-TSXZ7TWA.js";
4
4
  import {
5
5
  ErrorCodes
6
- } from "./chunk-YHXQHZ3E.js";
6
+ } from "./chunk-NX3HRELG.js";
7
7
 
8
8
  // src/page-providers.ts
9
9
  function isComponentLoader(value) {
@@ -1,9 +1,15 @@
1
1
  // src/runtime/errors.ts
2
+ function diagnosticUrl(text) {
3
+ return text.replace(/(https?:\/\/)(?:[^\s/@]+@)?([^\s?#"'<>,。;))\]]+)(?:[?#][^\s"'<>,。;))\]]*)?/g, "$1$2");
4
+ }
5
+ function diagnosticMessage(error) {
6
+ return diagnosticUrl(String(error?.message ?? error)).replace(/\b(token|password|cookie|authorization)["']?\s*[:=]\s*["']?(?:Bearer\s+)?[^\s,;"'}]+/gi, "$1=[redacted]");
7
+ }
2
8
  var FgError = class extends Error {
3
9
  code;
4
10
  details;
5
11
  constructor(code, message, details, options) {
6
- super(`[fulgurjs:${code}] ${message}`, options);
12
+ super(`[fulgurjs:${code}] ${diagnosticUrl(message)}`, options);
7
13
  this.name = "FgError";
8
14
  this.code = code;
9
15
  this.details = details;
@@ -40,13 +46,14 @@ var ErrorCodes = {
40
46
  SETUP_RECURSION: "MFU-014",
41
47
  /** 远程模块在组件消费边界导出的不是可渲染组件(适配器实测导出形态后报出) */
42
48
  COMPONENT_EXPORT_INVALID: "MFU-018",
43
- /** Vue 组件直渲染的渲染器与共享作用域实际收敛的 Vue 实例不一致(身份证据已证实) */
49
+ /** 当前编译 SFC 的 Vue 导入引用与消费方渲染器不一致(组件证据已证实) */
44
50
  VUE_RUNTIME_IDENTITY_MISMATCH: "MFU-019",
45
51
  /** 远程组件子树内部渲染错误(插件边界观测:setup/render/嵌套异步组件拒绝;原始异常保留在 cause) */
46
52
  REMOTE_RENDER_ERROR: "MFU-020"
47
53
  };
48
54
 
49
55
  export {
56
+ diagnosticMessage,
50
57
  FgError,
51
58
  ErrorCodes
52
59
  };
@@ -3,7 +3,7 @@ import {
3
3
  routingNavigationError,
4
4
  routingProtocolError,
5
5
  routingSyncError
6
- } from "./chunk-TSPZ3EQ4.js";
6
+ } from "./chunk-EGXWY5NW.js";
7
7
 
8
8
  // src/bridge-router-core.ts
9
9
  var MAX_REDIRECT_PER_REQUEST = 5;
package/dist/cli.js CHANGED
@@ -3187,7 +3187,7 @@ var RUNTIME_VERSION;
3187
3187
  var init_version = __esm({
3188
3188
  "src/version.ts"() {
3189
3189
  "use strict";
3190
- RUNTIME_VERSION = "6.13.2";
3190
+ RUNTIME_VERSION = "6.13.4";
3191
3191
  }
3192
3192
  });
3193
3193
 
@@ -5585,7 +5585,7 @@ async function runSourceDoctor(configPath) {
5585
5585
  "WARN",
5586
5586
  "\u672C\u5730\u662F Vue \u5E94\u7528\u4E14\u914D\u7F6E\u4E86\u8FDC\u7A0B\u6D88\u8D39\uFF0C\u4F46 shared \u672A\u58F0\u660E vue\u3002",
5587
5587
  "\u7EC4\u4EF6\u76F4\u6E32\u67D3\u8981\u6C42\u8FDC\u7A0B\u7EC4\u4EF6\u4E0E\u6D88\u8D39\u65B9\u6E32\u67D3\u5668\u4F7F\u7528\u540C\u4E00 Vue \u5B9E\u4F8B\uFF1B\u672C\u5730\u672A\u58F0\u660E\u65F6\u65E0\u6CD5\u4ECE\u9759\u6001\u626B\u63CF\u786E\u8BA4\u662F\u5426\u6536\u655B\u2014\u2014\u8FD9\u662F\u63A5\u5165\u98CE\u9669\uFF0C\u5C1A\u672A\u8BC1\u5B9E\u5B58\u5728\u91CD\u590D\u5B9E\u4F8B\uFF08\u8FDC\u7A0B\u53EF\u80FD\u672A\u5171\u4EAB vue\u3001\u6216\u4EC5\u66B4\u9732\u7EAF TS \u6A21\u5757\uFF09\u3002",
5588
- "\u6D88\u8D39\u8FDC\u7A0B Vue \u7EC4\u4EF6\u7684\u4E24\u4FA7\u90FD\u5728 federation({ shared }) \u58F0\u660E vue\uFF08\u5EFA\u8BAE singleton\uFF09\uFF0C\u5E76\u6838\u5BF9 shareScope \u4E00\u81F4\uFF1B\u8FD0\u884C\u65F6\u82E5\u5B9E\u4F8B\u5206\u88C2\uFF0CremoteComponent \u8FB9\u754C\u4F1A\u62A5 MFU-019\u3002\u4EC5\u6D88\u8D39\u7EAF TS \u6A21\u5757\u53EF\u5FFD\u7565\u672C\u9879\u3002"
5588
+ "\u6D88\u8D39\u8FDC\u7A0B Vue \u7EC4\u4EF6\u7684\u4E24\u4FA7\u90FD\u5728 federation({ shared }) \u58F0\u660E vue\uFF08\u5EFA\u8BAE singleton\uFF09\uFF0C\u5E76\u6838\u5BF9 shareScope \u4E00\u81F4\uFF1B\u7F16\u8BD1 SFC \u6709\u5B9E\u9645\u5BFC\u5165\u5F15\u7528\u8BC1\u636E\u65F6\uFF0CremoteComponent \u53EF\u62A5 MFU-019\uFF1B\u65E7\u8FDC\u7A0B\u6216\u666E\u901A TS \u7EC4\u4EF6\u7F3A\u5C11\u8BC1\u636E\u65F6\u4E0D\u80FD\u636E\u5171\u4EAB\u8868\u81EA\u52A8\u786E\u8BA4\u51B2\u7A81\u3002\u4EC5\u6D88\u8D39\u7EAF TS \u6A21\u5757\u53EF\u5FFD\u7565\u672C\u9879\u3002"
5589
5589
  );
5590
5590
  }
5591
5591
  for (const [key, remote] of Object.entries(options.remotes ?? {})) {
package/dist/context.cjs CHANGED
@@ -29,11 +29,14 @@ __export(context_exports, {
29
29
  module.exports = __toCommonJS(context_exports);
30
30
 
31
31
  // src/runtime/errors.ts
32
+ function diagnosticUrl(text) {
33
+ return text.replace(/(https?:\/\/)(?:[^\s/@]+@)?([^\s?#"'<>,。;))\]]+)(?:[?#][^\s"'<>,。;))\]]*)?/g, "$1$2");
34
+ }
32
35
  var FgError = class extends Error {
33
36
  code;
34
37
  details;
35
38
  constructor(code, message, details, options) {
36
- super(`[fulgurjs:${code}] ${message}`, options);
39
+ super(`[fulgurjs:${code}] ${diagnosticUrl(message)}`, options);
37
40
  this.name = "FgError";
38
41
  this.code = code;
39
42
  this.details = details;
package/dist/context.js CHANGED
@@ -4,8 +4,8 @@ import {
4
4
  getAppContext,
5
5
  provideAppContext,
6
6
  requireAppContext
7
- } from "./chunk-MBH3TVAS.js";
8
- import "./chunk-YHXQHZ3E.js";
7
+ } from "./chunk-ATU42YF3.js";
8
+ import "./chunk-NX3HRELG.js";
9
9
  export {
10
10
  ContextErrorCodes,
11
11
  clearAppContext,