@lark-apaas/fullstack-rspack-preset 1.0.56-alpha.5 → 1.0.56-alpha.6

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/lib/preset.js CHANGED
@@ -80,12 +80,11 @@ function createRecommendRspackConfig(options) {
80
80
  const localDev = (0, local_dev_1.isLocalDev)();
81
81
  const sandboxBase = (0, local_dev_1.resolveSandboxOrigin)();
82
82
  const { cookie: outboundCookie, csrfToken: outboundCsrfToken } = (0, local_dev_1.composeSandboxOutboundAuth)();
83
+ // parseSudaWebUserEnv 容忍 dotenv@17 对 shell-quoted JSON 不 unescape `\"` 的边界。
83
84
  let localDevWebUserHeader = '';
84
- if (process.env.SUDA_WEBUSER) {
85
- try {
86
- localDevWebUserHeader = encodeURIComponent(JSON.stringify(JSON.parse(process.env.SUDA_WEBUSER)));
87
- }
88
- catch { /* ignore */ }
85
+ const parsedSudaWebUser = (0, local_dev_1.parseSudaWebUserEnv)(process.env.SUDA_WEBUSER);
86
+ if (parsedSudaWebUser) {
87
+ localDevWebUserHeader = encodeURIComponent(JSON.stringify(parsedSudaWebUser));
89
88
  }
90
89
  // 沙箱上 /__runtime__/* 的路由本身就期望带 /app/<appId> 前缀
91
90
  // (跟生产网关 miaoda.feishu-boe.cn 的行为一致),所以直接透传完整路径,不做 pathRewrite。
@@ -29,3 +29,14 @@ export declare function composeSandboxOutboundAuth(): {
29
29
  * (local dev 跑不通,但不抛错——交给上层 `localDev && sandboxBase` 条件兜底)。
30
30
  */
31
31
  export declare function resolveSandboxOrigin(): string;
32
+ /**
33
+ * 解析 `process.env.SUDA_WEBUSER`,容忍沙箱下发的 shell-quoted JSON。
34
+ *
35
+ * 沙箱 env pull 下发到 .env.local 的 SUDA_WEBUSER 是双引号包裹 + 内部 `\"` 转义;
36
+ * dotenv@17 剥外层引号后**不还原**内部 `\"`,导致 `process.env.SUDA_WEBUSER` 是
37
+ * `{\"user_id\":\"...\"}` 这种带反斜杠的字符串,直接 JSON.parse 会挂在
38
+ * `Expected property name or '}' in JSON at position 1`。
39
+ *
40
+ * 容错:先直接 parse;失败再 unescape `\"` 后 parse;都失败返回 null。
41
+ */
42
+ export declare function parseSudaWebUserEnv<T = unknown>(raw: string | undefined): T | null;
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.isLocalDev = isLocalDev;
4
4
  exports.composeSandboxOutboundAuth = composeSandboxOutboundAuth;
5
5
  exports.resolveSandboxOrigin = resolveSandboxOrigin;
6
+ exports.parseSudaWebUserEnv = parseSudaWebUserEnv;
6
7
  /**
7
8
  * 本地开发总开关。由 dev-local.sh export `MIAODA_LOCAL_DEV=1`;
8
9
  * 沙箱 dev / 生产都不设此 env。
@@ -63,3 +64,29 @@ function resolveSandboxOrigin() {
63
64
  }
64
65
  return process.env.SANDBOX_PUBLIC_URL || '';
65
66
  }
67
+ /**
68
+ * 解析 `process.env.SUDA_WEBUSER`,容忍沙箱下发的 shell-quoted JSON。
69
+ *
70
+ * 沙箱 env pull 下发到 .env.local 的 SUDA_WEBUSER 是双引号包裹 + 内部 `\"` 转义;
71
+ * dotenv@17 剥外层引号后**不还原**内部 `\"`,导致 `process.env.SUDA_WEBUSER` 是
72
+ * `{\"user_id\":\"...\"}` 这种带反斜杠的字符串,直接 JSON.parse 会挂在
73
+ * `Expected property name or '}' in JSON at position 1`。
74
+ *
75
+ * 容错:先直接 parse;失败再 unescape `\"` 后 parse;都失败返回 null。
76
+ */
77
+ function parseSudaWebUserEnv(raw) {
78
+ if (!raw)
79
+ return null;
80
+ try {
81
+ return JSON.parse(raw);
82
+ }
83
+ catch {
84
+ // fall through to unescape attempt
85
+ }
86
+ try {
87
+ return JSON.parse(raw.replace(/\\"/g, '"'));
88
+ }
89
+ catch {
90
+ return null;
91
+ }
92
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lark-apaas/fullstack-rspack-preset",
3
- "version": "1.0.56-alpha.5",
3
+ "version": "1.0.56-alpha.6",
4
4
  "files": [
5
5
  "lib",
6
6
  "patches",