@lark-apaas/fullstack-rspack-preset 1.0.56-alpha.0 → 1.0.56-alpha.2

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
@@ -78,7 +78,7 @@ function createRecommendRspackConfig(options) {
78
78
  // 由 SDK 而非用户应用承担 cookie / x-larkgw-suda-webuser 注入。
79
79
  const localDev = (0, local_dev_1.isLocalDev)();
80
80
  const sandboxBase = process.env.SANDBOX_PUBLIC_URL;
81
- const sandboxCookie = process.env.SANDBOX_COOKIE || '';
81
+ const { cookie: outboundCookie, csrfToken: outboundCsrfToken } = (0, local_dev_1.composeSandboxOutboundAuth)();
82
82
  let localDevWebUserHeader = '';
83
83
  if (process.env.SUDA_WEBUSER) {
84
84
  try {
@@ -95,9 +95,10 @@ function createRecommendRspackConfig(options) {
95
95
  changeOrigin: true,
96
96
  secure: true,
97
97
  headers: {
98
- ...(sandboxCookie ? { cookie: sandboxCookie } : {}),
98
+ ...(outboundCookie ? { cookie: outboundCookie } : {}),
99
99
  'accept-encoding': 'identity',
100
100
  ...(localDevWebUserHeader ? { 'x-larkgw-suda-webuser': localDevWebUserHeader } : {}),
101
+ ...(outboundCsrfToken ? { 'x-suda-csrf-token': outboundCsrfToken } : {}),
101
102
  },
102
103
  }]
103
104
  : [];
@@ -1 +1,20 @@
1
+ /**
2
+ * 本地开发总开关。由 dev-local.sh export `MIAODA_LOCAL_DEV=1`;
3
+ * 沙箱 dev / 生产都不设此 env。
4
+ */
1
5
  export declare function isLocalDev(): boolean;
6
+ /**
7
+ * 反代沙箱时的认证组装。两条入口:
8
+ * - 新流(推荐):env `FORCE_AUTHN_PREVIEW_SESSION_ID` —— 后端下发的单值 session(实际是
9
+ * X-Force-Runtime-Session 的值)。SDK 自动拼 cookie,suda-csrf-token 用本地常量。
10
+ * - 老流(兼容):env `SANDBOX_COOKIE` —— 用户从浏览器手抠的完整 cookie 字符串(包含
11
+ * X-Force-Runtime-Session / suda-csrf-token / suda_web_did 等)。原样透传,suda-csrf-token
12
+ * 从其中正则提取作为出向 x-suda-csrf-token header。
13
+ *
14
+ * 两个都给的话 `SANDBOX_COOKIE` 优先("已显式拼好"信号更强)。两个都缺的话返回空字符串
15
+ * (local dev 跑不通,但不抛错——交给上层 `localDev && sandboxBase` 条件兜底)。
16
+ */
17
+ export declare function composeSandboxOutboundAuth(): {
18
+ cookie: string;
19
+ csrfToken: string;
20
+ };
@@ -1,9 +1,42 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.isLocalDev = isLocalDev;
4
+ exports.composeSandboxOutboundAuth = composeSandboxOutboundAuth;
5
+ /**
6
+ * 本地开发总开关。由 dev-local.sh export `MIAODA_LOCAL_DEV=1`;
7
+ * 沙箱 dev / 生产都不设此 env。
8
+ */
4
9
  function isLocalDev() {
5
10
  if (process.env.NODE_ENV === 'production')
6
11
  return false;
7
12
  const flag = process.env.MIAODA_LOCAL_DEV;
8
13
  return flag === '1' || flag === 'true';
9
14
  }
15
+ /** 本地常量 csrf token —— sandbox 是 double-submit 模式(cookie===header 即放行),本地随便定一个一致值即可。 */
16
+ const LOCAL_CSRF_TOKEN = 'local-dev-csrf';
17
+ /**
18
+ * 反代沙箱时的认证组装。两条入口:
19
+ * - 新流(推荐):env `FORCE_AUTHN_PREVIEW_SESSION_ID` —— 后端下发的单值 session(实际是
20
+ * X-Force-Runtime-Session 的值)。SDK 自动拼 cookie,suda-csrf-token 用本地常量。
21
+ * - 老流(兼容):env `SANDBOX_COOKIE` —— 用户从浏览器手抠的完整 cookie 字符串(包含
22
+ * X-Force-Runtime-Session / suda-csrf-token / suda_web_did 等)。原样透传,suda-csrf-token
23
+ * 从其中正则提取作为出向 x-suda-csrf-token header。
24
+ *
25
+ * 两个都给的话 `SANDBOX_COOKIE` 优先("已显式拼好"信号更强)。两个都缺的话返回空字符串
26
+ * (local dev 跑不通,但不抛错——交给上层 `localDev && sandboxBase` 条件兜底)。
27
+ */
28
+ function composeSandboxOutboundAuth() {
29
+ const legacyCookie = process.env.SANDBOX_COOKIE;
30
+ if (legacyCookie) {
31
+ const m = legacyCookie.match(/(?:^|;\s*)suda-csrf-token=([^;]+)/i);
32
+ return { cookie: legacyCookie, csrfToken: m ? m[1] : '' };
33
+ }
34
+ const sessionId = process.env.FORCE_AUTHN_PREVIEW_SESSION_ID;
35
+ if (sessionId) {
36
+ return {
37
+ cookie: `X-Force-Runtime-Session=${sessionId}; suda-csrf-token=${LOCAL_CSRF_TOKEN}`,
38
+ csrfToken: LOCAL_CSRF_TOKEN,
39
+ };
40
+ }
41
+ return { cookie: '', csrfToken: '' };
42
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lark-apaas/fullstack-rspack-preset",
3
- "version": "1.0.56-alpha.0",
3
+ "version": "1.0.56-alpha.2",
4
4
  "files": [
5
5
  "lib",
6
6
  "patches",