@fulgurjs/federation 6.13.1 → 6.13.3

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.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,19 @@
1
1
  # 当前发布说明
2
2
 
3
+ ## 6.13.3
4
+
5
+ - 修复 `bindStoreToApp` 在内联 `defineStore` 与 Pinia getter 组合时的泛型推导,保留真实 store 字段、方法和容器约束;使用真实 Pinia 的正反例检查。
6
+ - 修复 MFU-019 的身份误判:只比较当前编译 SFC 实际导入的 Vue 函数与消费方 renderer,不再从默认共享表推断远程组件身份。支持生产脚本子请求;无证据、旧远程和冻结组件保持未知,不盲目拒绝合法组件或独立运行时桥接。
7
+ - 默认 Vue/React 错误占位对地址中的凭据、query/hash 及标注的敏感值脱敏,原始异常仍保留在 `cause`;运行时调试摘要复用地址清理规则,并保留无入口地址的 promise remote 注册行为。
8
+ - 同步源码、生成入口与版本锁文件,补充真实浏览器开发/生产对照、SFC 构建及声明消费回归;体积门禁保持原预算。
9
+
10
+ ## 6.13.2
11
+
12
+ 构建期 chunk 分组两处修复(DEMES5.5 从零迁移轮 BI-FIX,均含业务工程生产构建/运行实测回归):
13
+
14
+ - **构建期共享门面支持通配符转发层展开**:`export * from '<shared>'` 形态的转发模块(vue-demi——pinia/@vueuse/vxe 等的常见传递依赖)进入 expose 门面改写闭包时,此前直接硬报错(`共享模块不支持 "export * from 'vue'"`),业务工程生产构建因此失败。现在构建期解析 shared 包的 ESM 入口(exports.import 优先、包名转发链递归),静态收集命名导出(不含 default——`export *` 语义本就不转出 default),把通配符改写为显式命名的门面转发;收集失败时保留原硬报错。
15
+ - **preload-helper 分组注入条件放宽**:vite 预载助手(__vitePreload)此前仅在「应用开启 devSharedSelf 且用户已配置 manualChunks」时才被强制独立成组;未配置 manualChunks 的提供方(BPM 实测)助手被 rollup 提升进某个 provider chunk,TLA 协商门面(fulgurjs-shared-*)为取助手对 provider 形成静态边、provider 又静态依赖门面导出的绑定 → 「门面 ⇄ provider」chunk 环,浏览器报 `Cannot access 'e' before initialization`(TDZ)且整应用挂载失败。现在凡有 exposes/remotes 的应用都注入插件分组包装(preload-helper/门面/运行时独立成组),非插件模块返回 undefined 交还 rollup 自动分包,不改变既有分包行为。
16
+
3
17
  ## 6.13.1
4
18
 
5
19
  - **构建期共享门面支持通配符转发层展开(BI-FIX)**:`export * from '<shared>'` 形态的转发模块(vue-demi——pinia/@vueuse/vxe 等的常见传递依赖)进入 expose 门面改写闭包时,此前直接硬报错(`共享模块不支持 "export * from 'vue'"`),业务工程生产构建因此失败。现在构建期从被改写模块出发解析 shared 包的 ESM 入口(exports.import 优先、module/main 兜底;包名转发链如 vue → @vue/runtime-dom 递归解析),静态收集命名导出(不含 default——`export *` 语义本就不转出 default),把通配符改写为显式命名的门面转发;入口缺失或转发过深无法收集时保留原硬报错,不静默交付缺导出的产物。
@@ -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-MZLWIJ6V.js";
7
+ import "./chunk-HWCJILPW.js";
8
+ import "./chunk-H46PAH5S.js";
9
+ import "./chunk-5ZXA4FPA.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-VBPOHJUI.js";
7
7
  import {
8
8
  markBridgeMount
9
- } from "./chunk-NVJN2ARX.js";
9
+ } from "./chunk-MZLWIJ6V.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-HWCJILPW.js";
14
+ import "./chunk-H46PAH5S.js";
15
+ import "./chunk-5ZXA4FPA.js";
16
16
 
17
17
  // src/bridge-router-sync.ts
18
18
  function collapseConsecutiveReports(report) {
@@ -33,11 +33,14 @@ __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
+ }
36
39
  var FgError = class extends Error {
37
40
  code;
38
41
  details;
39
42
  constructor(code, message, details, options) {
40
- super(`[fulgurjs:${code}] ${message}`, options);
43
+ super(`[fulgurjs:${code}] ${diagnosticUrl(message)}`, options);
41
44
  this.name = "FgError";
42
45
  this.code = code;
43
46
  this.details = details;
@@ -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-MZLWIJ6V.js";
12
+ import "./chunk-HWCJILPW.js";
13
+ import "./chunk-H46PAH5S.js";
14
+ import "./chunk-5ZXA4FPA.js";
15
15
  export {
16
16
  acquireBridgeSession,
17
17
  assertBridgeContract,
@@ -35,11 +35,14 @@ __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
+ }
38
41
  var FgError = class extends Error {
39
42
  code;
40
43
  details;
41
44
  constructor(code, message, details, options) {
42
- super(`[fulgurjs:${code}] ${message}`, options);
45
+ super(`[fulgurjs:${code}] ${diagnosticUrl(message)}`, options);
43
46
  this.name = "FgError";
44
47
  this.code = code;
45
48
  this.details = details;
@@ -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-HWCJILPW.js";
14
+ import "./chunk-5ZXA4FPA.js";
15
15
  export {
16
16
  BridgeErrorCodes,
17
17
  bridgeHostError,
@@ -26,11 +26,14 @@ 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
+ }
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;
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  RoutingChannel,
3
3
  assertBridgeRoutingProtocol
4
- } from "./chunk-OQ4CGWNL.js";
4
+ } from "./chunk-VBPOHJUI.js";
5
5
  import {
6
6
  acquireBridgeSession,
7
7
  assertBridgeContract,
@@ -10,14 +10,14 @@ import {
10
10
  releaseBridgeSession,
11
11
  resolveBridgeContext,
12
12
  withBridgeTimeout
13
- } from "./chunk-NVJN2ARX.js";
13
+ } from "./chunk-MZLWIJ6V.js";
14
14
  import {
15
15
  bridgeHostError
16
- } from "./chunk-TSPZ3EQ4.js";
16
+ } from "./chunk-HWCJILPW.js";
17
17
  import {
18
18
  provideAppContext
19
- } from "./chunk-MBH3TVAS.js";
20
- import "./chunk-YHXQHZ3E.js";
19
+ } from "./chunk-H46PAH5S.js";
20
+ import "./chunk-5ZXA4FPA.js";
21
21
 
22
22
  // src/bridge-host-react.ts
23
23
  import {
@@ -26,11 +26,14 @@ 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
+ }
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;
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  RoutingChannel,
3
3
  assertBridgeRoutingProtocol
4
- } from "./chunk-OQ4CGWNL.js";
4
+ } from "./chunk-VBPOHJUI.js";
5
5
  import {
6
6
  acquireBridgeSession,
7
7
  assertBridgeContract,
@@ -10,15 +10,15 @@ import {
10
10
  releaseBridgeSession,
11
11
  resolveBridgeContext,
12
12
  withBridgeTimeout
13
- } from "./chunk-NVJN2ARX.js";
13
+ } from "./chunk-MZLWIJ6V.js";
14
14
  import {
15
15
  bridgeHostError
16
- } from "./chunk-TSPZ3EQ4.js";
16
+ } from "./chunk-HWCJILPW.js";
17
17
  import {
18
18
  clearAppContext,
19
19
  provideAppContext
20
- } from "./chunk-MBH3TVAS.js";
21
- import "./chunk-YHXQHZ3E.js";
20
+ } from "./chunk-H46PAH5S.js";
21
+ import "./chunk-5ZXA4FPA.js";
22
22
 
23
23
  // src/bridge-host-vue.ts
24
24
  import { defineComponent, h, onActivated, onBeforeUnmount, onDeactivated, onMounted, ref, shallowRef, toRaw, watch } from "vue";
@@ -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-H46PAH5S.js";
4
+ import "./chunk-5ZXA4FPA.js";
5
5
 
6
6
  // src/bridge-session-auto.ts
7
7
  import { effectScope, ref, shallowRef, watch } from "vue";
@@ -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 && typeof error === "object" && "message" in error ? 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
  } from "./chunk-TSXZ7TWA.js";
4
4
  import {
5
5
  ErrorCodes
6
- } from "./chunk-YHXQHZ3E.js";
6
+ } from "./chunk-5ZXA4FPA.js";
7
7
 
8
8
  // src/page-providers.ts
9
9
  function isComponentLoader(value) {
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  FgError
3
- } from "./chunk-YHXQHZ3E.js";
3
+ } from "./chunk-5ZXA4FPA.js";
4
4
 
5
5
  // src/context.ts
6
6
  var ContextErrorCodes = {
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  FgError
3
- } from "./chunk-YHXQHZ3E.js";
3
+ } from "./chunk-5ZXA4FPA.js";
4
4
 
5
5
  // src/bridge-errors.ts
6
6
  var BridgeErrorCodes = {
@@ -3,10 +3,10 @@ import {
3
3
  bridgeSessionMismatchError,
4
4
  invalidBridgeContractError,
5
5
  invalidSessionKeyError
6
- } from "./chunk-TSPZ3EQ4.js";
6
+ } from "./chunk-HWCJILPW.js";
7
7
  import {
8
8
  clearAppContext
9
- } from "./chunk-MBH3TVAS.js";
9
+ } from "./chunk-H46PAH5S.js";
10
10
 
11
11
  // src/bridge-core.ts
12
12
  function assertBridgeContract(spec, mod) {
@@ -3,7 +3,7 @@ import {
3
3
  routingNavigationError,
4
4
  routingProtocolError,
5
5
  routingSyncError
6
- } from "./chunk-TSPZ3EQ4.js";
6
+ } from "./chunk-HWCJILPW.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.1";
3190
+ RUNTIME_VERSION = "6.13.3";
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-H46PAH5S.js";
8
+ import "./chunk-5ZXA4FPA.js";
9
9
  export {
10
10
  ContextErrorCodes,
11
11
  clearAppContext,