@lark-apaas/coding-preset-vite-react 0.1.1-alpha.1 → 0.1.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/LICENSE +13 -0
- package/lib/index.d.ts +1 -1
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +6 -2
- package/lib/index.js.map +1 -1
- package/lib/plugins/polyfill.d.ts.map +1 -1
- package/lib/plugins/polyfill.js +6 -3
- package/lib/plugins/polyfill.js.map +1 -1
- package/lib/plugins/static-assets.d.ts.map +1 -1
- package/lib/plugins/static-assets.js +27 -17
- package/lib/plugins/static-assets.js.map +1 -1
- package/lib/plugins/view-context.d.ts +1 -1
- package/lib/plugins/view-context.d.ts.map +1 -1
- package/lib/plugins/view-context.js +65 -32
- package/lib/plugins/view-context.js.map +1 -1
- package/lib/utils/normalize-base-path.d.ts +23 -1
- package/lib/utils/normalize-base-path.d.ts.map +1 -1
- package/lib/utils/normalize-base-path.js +31 -1
- package/lib/utils/normalize-base-path.js.map +1 -1
- package/package.json +2 -2
package/LICENSE
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2024 Lark Technologies Pte. Ltd. and/or its affiliates
|
|
4
|
+
|
|
5
|
+
Permission to use, copy, modify, and/or distribute this software for any purpose with or without fee is hereby granted,provided that the above copyright notice and this permission notice appear in all copies.
|
|
6
|
+
|
|
7
|
+
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
|
|
8
|
+
IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE
|
|
9
|
+
INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO
|
|
10
|
+
EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR
|
|
11
|
+
CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
|
|
12
|
+
DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS
|
|
13
|
+
ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
package/lib/index.d.ts
CHANGED
|
@@ -47,6 +47,6 @@ export { polyfillPlugin } from './plugins/polyfill';
|
|
|
47
47
|
export { viteClientPatchPlugin } from './plugins/vite-client-patch';
|
|
48
48
|
export { slardarPlugin } from './plugins/slardar';
|
|
49
49
|
export { devLogsPlugin } from './plugins/dev-logs';
|
|
50
|
-
export { normalizeBasePath } from './utils/normalize-base-path';
|
|
50
|
+
export { normalizeBasePath, normalizeBasePathWithoutTrailingSlash, } from './utils/normalize-base-path';
|
|
51
51
|
export { registerSnapDomProxyMiddleware } from './utils/snapdom-proxy';
|
|
52
52
|
//# sourceMappingURL=index.d.ts.map
|
package/lib/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAA4B,KAAK,UAAU,EAAsB,MAAM,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAA4B,KAAK,UAAU,EAAsB,MAAM,MAAM,CAAC;AAkFrF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,wBAAgB,YAAY,CAAC,SAAS,GAAE,UAAe,GAAG,UAAU,CAoPnE;AAGD,eAAe,YAAY,CAAC;AAG5B,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC7D,OAAO,EAAE,gBAAgB,EAAE,2BAA2B,EAAE,MAAM,uBAAuB,CAAC;AACtF,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,wBAAwB,EAAE,MAAM,wBAAwB,CAAC;AAClE,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAC;AAC1D,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAC;AACpE,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EACL,iBAAiB,EACjB,qCAAqC,GACtC,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,8BAA8B,EAAE,MAAM,uBAAuB,CAAC"}
|
package/lib/index.js
CHANGED
|
@@ -36,7 +36,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
36
36
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
37
37
|
};
|
|
38
38
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
-
exports.registerSnapDomProxyMiddleware = exports.normalizeBasePath = exports.devLogsPlugin = exports.slardarPlugin = exports.viteClientPatchPlugin = exports.polyfillPlugin = exports.fontsMirrorPlugin = exports.ogMetaPlugin = exports.moduleAliasPlugin = exports.viewContextPlugin = exports.healthMiddlewarePlugin = exports.wsWatchdogPlugin = exports.hmrTimingPlugin = exports.errorOverlayPlugin = exports.capabilitiesBundlePlugin = exports.staticAssetsPlugin = exports.minifyHtmlWithHbsProtection = exports.htmlMinifyPlugin = exports.parseRoutes = exports.routesPlugin = void 0;
|
|
39
|
+
exports.registerSnapDomProxyMiddleware = exports.normalizeBasePathWithoutTrailingSlash = exports.normalizeBasePath = exports.devLogsPlugin = exports.slardarPlugin = exports.viteClientPatchPlugin = exports.polyfillPlugin = exports.fontsMirrorPlugin = exports.ogMetaPlugin = exports.moduleAliasPlugin = exports.viewContextPlugin = exports.healthMiddlewarePlugin = exports.wsWatchdogPlugin = exports.hmrTimingPlugin = exports.errorOverlayPlugin = exports.capabilitiesBundlePlugin = exports.staticAssetsPlugin = exports.minifyHtmlWithHbsProtection = exports.htmlMinifyPlugin = exports.parseRoutes = exports.routesPlugin = void 0;
|
|
40
40
|
exports.defineConfig = defineConfig;
|
|
41
41
|
const fs = __importStar(require("node:fs"));
|
|
42
42
|
const path = __importStar(require("node:path"));
|
|
@@ -154,7 +154,10 @@ function defineConfig(overrides = {}) {
|
|
|
154
154
|
const isDev = process.env.NODE_ENV !== 'production';
|
|
155
155
|
const rootDir = process.cwd();
|
|
156
156
|
const clientBasePath = (0, normalize_base_path_1.normalizeBasePath)(process.env.CLIENT_BASE_PATH);
|
|
157
|
-
|
|
157
|
+
// ASSETS_CDN_PATH 来自 miaoda-cli 注入的 MIAODA_RESOURCE_CDN_PREFIX,通常是完整 URL
|
|
158
|
+
// (`https://cdn.bytetos.com/...`)。必须用 URL-safe 的 normalize,不能强加 `/` 前缀
|
|
159
|
+
// —— 否则会变成 `/https://cdn.bytetos.com/...` 直接破掉 Vite 的 base 替换。
|
|
160
|
+
const assetsCdnPath = (0, normalize_base_path_1.normalizeBasePathWithoutTrailingSlash)(process.env.ASSETS_CDN_PATH);
|
|
158
161
|
// dev / prod base 来源不同:dev 完全用 clientBasePath,prod 优先 CDN
|
|
159
162
|
const publicPath = isDev ? clientBasePath : (assetsCdnPath || clientBasePath);
|
|
160
163
|
const base = publicPath ? `${publicPath}/` : '/';
|
|
@@ -401,6 +404,7 @@ var dev_logs_2 = require("./plugins/dev-logs");
|
|
|
401
404
|
Object.defineProperty(exports, "devLogsPlugin", { enumerable: true, get: function () { return dev_logs_2.devLogsPlugin; } });
|
|
402
405
|
var normalize_base_path_2 = require("./utils/normalize-base-path");
|
|
403
406
|
Object.defineProperty(exports, "normalizeBasePath", { enumerable: true, get: function () { return normalize_base_path_2.normalizeBasePath; } });
|
|
407
|
+
Object.defineProperty(exports, "normalizeBasePathWithoutTrailingSlash", { enumerable: true, get: function () { return normalize_base_path_2.normalizeBasePathWithoutTrailingSlash; } });
|
|
404
408
|
var snapdom_proxy_2 = require("./utils/snapdom-proxy");
|
|
405
409
|
Object.defineProperty(exports, "registerSnapDomProxyMiddleware", { enumerable: true, get: function () { return snapdom_proxy_2.registerSnapDomProxyMiddleware; } });
|
|
406
410
|
//# sourceMappingURL=index.js.map
|
package/lib/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"polyfill.d.ts","sourceRoot":"","sources":["../../src/plugins/polyfill.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,MAAM,EAA0B,MAAM,MAAM,CAAC;AAK3D;;;;;;GAMG;AACH,wBAAgB,cAAc,IAAI,MAAM,
|
|
1
|
+
{"version":3,"file":"polyfill.d.ts","sourceRoot":"","sources":["../../src/plugins/polyfill.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,MAAM,EAA0B,MAAM,MAAM,CAAC;AAK3D;;;;;;GAMG;AACH,wBAAgB,cAAc,IAAI,MAAM,CAsFvC;AAqBD,eAAe,cAAc,CAAC"}
|
package/lib/plugins/polyfill.js
CHANGED
|
@@ -86,12 +86,15 @@ function polyfillPlugin() {
|
|
|
86
86
|
});
|
|
87
87
|
const output = Array.isArray(result) ? result[0] : result;
|
|
88
88
|
polyfillCode = 'output' in output ? output.output[0]?.code || '' : '';
|
|
89
|
+
// emit 到 `assets/polyfills.js` —— 跟 JS/CSS chunks 同目录,
|
|
90
|
+
// 复用现有 build.sh 的 `cp -r dist/client/assets → dist/output_resource/assets/` 路径,
|
|
91
|
+
// 部署侧通过 CDN/static mount 服务。emit 到根目录的话 build.sh 不会拷它。
|
|
89
92
|
this.emitFile({
|
|
90
93
|
type: 'asset',
|
|
91
|
-
fileName: 'polyfills.js',
|
|
94
|
+
fileName: 'assets/polyfills.js',
|
|
92
95
|
source: polyfillCode,
|
|
93
96
|
});
|
|
94
|
-
console.log(`[miaoda-polyfill] generated polyfills.js (${Math.round(polyfillCode.length / 1024)}KB)`);
|
|
97
|
+
console.log(`[miaoda-polyfill] generated assets/polyfills.js (${Math.round(polyfillCode.length / 1024)}KB)`);
|
|
95
98
|
}
|
|
96
99
|
catch (error) {
|
|
97
100
|
console.error('[miaoda-polyfill] build failed:', error);
|
|
@@ -99,7 +102,7 @@ function polyfillPlugin() {
|
|
|
99
102
|
}
|
|
100
103
|
// 改写 HTML:head 起始注入按需加载脚本
|
|
101
104
|
const base = config.base || '/';
|
|
102
|
-
const polyfillUrl = `${base}polyfills.js`.replace(/\/+/g, '/').replace(':/', '://');
|
|
105
|
+
const polyfillUrl = `${base}assets/polyfills.js`.replace(/\/+/g, '/').replace(':/', '://');
|
|
103
106
|
const htmlFiles = Object.keys(bundle).filter((name) => name.endsWith('.html'));
|
|
104
107
|
for (const file of htmlFiles) {
|
|
105
108
|
const chunk = bundle[file];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"polyfill.js","sourceRoot":"","sources":["../../src/plugins/polyfill.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAcA,
|
|
1
|
+
{"version":3,"file":"polyfill.js","sourceRoot":"","sources":["../../src/plugins/polyfill.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"static-assets.d.ts","sourceRoot":"","sources":["../../src/plugins/static-assets.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAqB,MAAM,EAAiB,MAAM,MAAM,CAAC;AAqErE,MAAM,WAAW,yBAAyB;IACxC,0CAA0C;IAC1C,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,2DAA2D;IAC3D,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,wBAAgB,kBAAkB,CAAC,OAAO,GAAE,yBAA8B,GAAG,MAAM,
|
|
1
|
+
{"version":3,"file":"static-assets.d.ts","sourceRoot":"","sources":["../../src/plugins/static-assets.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAqB,MAAM,EAAiB,MAAM,MAAM,CAAC;AAqErE,MAAM,WAAW,yBAAyB;IACxC,0CAA0C;IAC1C,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,2DAA2D;IAC3D,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,wBAAgB,kBAAkB,CAAC,OAAO,GAAE,yBAA8B,GAAG,MAAM,CAiMlF;AAED,eAAe,kBAAkB,CAAC"}
|
|
@@ -134,24 +134,34 @@ function staticAssetsPlugin(options = {}) {
|
|
|
134
134
|
config(_config, { command }) {
|
|
135
135
|
isDev = command === 'serve';
|
|
136
136
|
},
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
137
|
+
// 不能用 rolldown `filter` 限制 id,否则用户在 vite.config / tsconfig
|
|
138
|
+
// 声明的 `@shared` alias 会更早把 spec resolve 成绝对路径,filter 直接 miss。
|
|
139
|
+
// 我们手动 handler 两种 id:原始 spec `@shared/static/foo.jpg` 与已被 alias
|
|
140
|
+
// resolve 的绝对路径 `<staticDir>/foo.jpg`。
|
|
141
|
+
resolveId(id) {
|
|
142
|
+
let rel;
|
|
143
|
+
if (id.startsWith(PREFIX)) {
|
|
144
|
+
rel = id.slice(PREFIX.length);
|
|
145
|
+
}
|
|
146
|
+
else {
|
|
147
|
+
// 已被 alias resolve 的绝对路径
|
|
148
|
+
const normalized = id.split('?')[0];
|
|
149
|
+
if (!normalized.startsWith(staticDir + path.sep) && normalized !== staticDir)
|
|
141
150
|
return null;
|
|
142
|
-
const
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
151
|
+
const query = id.slice(normalized.length);
|
|
152
|
+
rel = path.relative(staticDir, normalized).split(path.sep).join('/') + query;
|
|
153
|
+
}
|
|
154
|
+
const [cleanPath, query] = splitQuery(rel);
|
|
155
|
+
// ?raw / ?url 等:返回真实路径 + query,交给 Vite 内置处理
|
|
156
|
+
if (query)
|
|
157
|
+
return path.join(staticDir, cleanPath) + query;
|
|
158
|
+
// 脚本:解析到真实文件,让 vite 当普通模块打
|
|
159
|
+
const scriptPath = resolveScriptFile(staticDir, cleanPath);
|
|
160
|
+
if (scriptPath)
|
|
161
|
+
return scriptPath;
|
|
162
|
+
const virtualId = VIRTUAL_PREFIX + cleanPath;
|
|
163
|
+
// 后缀 `.js` 避免 vite:json 把 .json 虚拟模块当 JSON 文件 transform
|
|
164
|
+
return cleanPath.endsWith('.json') ? virtualId + '.js' : virtualId;
|
|
155
165
|
},
|
|
156
166
|
load(id) {
|
|
157
167
|
if (!id.startsWith(VIRTUAL_PREFIX))
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"static-assets.js","sourceRoot":"","sources":["../../src/plugins/static-assets.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA0FA,
|
|
1
|
+
{"version":3,"file":"static-assets.js","sourceRoot":"","sources":["../../src/plugins/static-assets.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA0FA,gDAiMC;AA3RD;;;;;;;;;;;GAWG;AACH,4CAA8B;AAC9B,gDAAkC;AAGlC,MAAM,MAAM,GAAG,iBAAiB,CAAC;AACjC,MAAM,cAAc,GAAG,mBAAmB,CAAC;AAE3C,MAAM,iBAAiB,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;AAEzF,MAAM,IAAI,GAA2B;IACnC,OAAO,EAAE,kBAAkB;IAC3B,MAAM,EAAE,WAAW;IACnB,MAAM,EAAE,YAAY;IACpB,OAAO,EAAE,YAAY;IACrB,MAAM,EAAE,WAAW;IACnB,MAAM,EAAE,eAAe;IACvB,OAAO,EAAE,YAAY;IACrB,MAAM,EAAE,cAAc;IACtB,OAAO,EAAE,WAAW;IACpB,QAAQ,EAAE,YAAY;IACtB,MAAM,EAAE,UAAU;IAClB,MAAM,EAAE,+BAA+B;IACvC,MAAM,EAAE,UAAU;IAClB,MAAM,EAAE,UAAU;IAClB,KAAK,EAAE,wBAAwB;IAC/B,MAAM,EAAE,YAAY;IACpB,OAAO,EAAE,WAAW;IACpB,MAAM,EAAE,iBAAiB;IACzB,MAAM,EAAE,iBAAiB;IACzB,MAAM,EAAE,YAAY;IACpB,MAAM,EAAE,WAAW;IACnB,OAAO,EAAE,YAAY;CACtB,CAAC;AAEF,SAAS,UAAU,CAAC,GAAW;IAC7B,MAAM,CAAC,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAC3B,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AAChE,CAAC;AAED,SAAS,iBAAiB,CAAC,SAAiB,EAAE,SAAiB;IAC7D,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,WAAW,EAAE,CAAC;IAClD,IAAI,GAAG,IAAI,iBAAiB,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;QAC3C,OAAO,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;IACzC,CAAC;IACD,IAAI,CAAC,GAAG,EAAE,CAAC;QACT,KAAK,MAAM,CAAC,IAAI,iBAAiB,EAAE,CAAC;YAClC,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,SAAS,GAAG,CAAC,CAAC,CAAC;YAC9C,IAAI,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC;gBAAE,OAAO,CAAC,CAAC;QACjC,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,QAAQ,CAAC,GAAW,EAAE,GAA4B,EAAE,MAAM,GAAG,EAAE;IACtE,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC;QAAE,OAAO;IAChC,KAAK,MAAM,KAAK,IAAI,EAAE,CAAC,WAAW,CAAC,GAAG,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;QACjE,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;QACxC,MAAM,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC;QAC5D,IAAI,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC;YACxB,QAAQ,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;QAC3B,CAAC;aAAM,IAAI,KAAK,CAAC,MAAM,EAAE,IAAI,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;YAC1D,IAAI,CAAC;gBACH,MAAM,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;gBACvC,GAAG,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC;YACxD,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACX,OAAO,CAAC,IAAI,CAAC,6CAA6C,GAAG,KAAK,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YAClH,CAAC;QACH,CAAC;IACH,CAAC;AACH,CAAC;AASD,SAAgB,kBAAkB,CAAC,UAAqC,EAAE;IACxE,MAAM,EAAE,cAAc,GAAG,EAAE,EAAE,OAAO,GAAG,OAAO,CAAC,GAAG,EAAE,EAAE,GAAG,OAAO,CAAC;IACjE,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,eAAe,CAAC,CAAC;IAEzD,IAAI,KAAK,GAAG,IAAI,CAAC;IACjB,IAAI,SAAS,GAAmC,IAAI,CAAC;IAErD,SAAS,OAAO;QACd,IAAI,CAAC,KAAK,IAAI,SAAS;YAAE,OAAO,SAAS,CAAC;QAC1C,MAAM,IAAI,GAA4B,EAAE,CAAC;QACzC,QAAQ,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;QAC1B,IAAI,CAAC,KAAK;YAAE,SAAS,GAAG,IAAI,CAAC;QAC7B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO;QACL,IAAI,EAAE,sBAAsB;QAC5B,2DAA2D;QAC3D,OAAO,EAAE,KAAK;QAEd,MAAM,CAAC,OAAO,EAAE,EAAE,OAAO,EAAE;YACzB,KAAK,GAAG,OAAO,KAAK,OAAO,CAAC;QAC9B,CAAC;QAED,2DAA2D;QAC3D,8DAA8D;QAC9D,gEAAgE;QAChE,uCAAuC;QACvC,SAAS,CAAC,EAAU;YAClB,IAAI,GAAW,CAAC;YAChB,IAAI,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;gBAC1B,GAAG,GAAG,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YAChC,CAAC;iBAAM,CAAC;gBACN,yBAAyB;gBACzB,MAAM,UAAU,GAAG,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;gBACpC,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,UAAU,KAAK,SAAS;oBAAE,OAAO,IAAI,CAAC;gBAC1F,MAAM,KAAK,GAAG,EAAE,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;gBAC1C,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;YAC/E,CAAC;YACD,MAAM,CAAC,SAAS,EAAE,KAAK,CAAC,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC;YAE3C,4CAA4C;YAC5C,IAAI,KAAK;gBAAE,OAAO,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,SAAS,CAAC,GAAG,KAAK,CAAC;YAE1D,2BAA2B;YAC3B,MAAM,UAAU,GAAG,iBAAiB,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;YAC3D,IAAI,UAAU;gBAAE,OAAO,UAAU,CAAC;YAElC,MAAM,SAAS,GAAG,cAAc,GAAG,SAAS,CAAC;YAC7C,wDAAwD;YACxD,OAAO,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,GAAG,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;QACrE,CAAC;QAED,IAAI,CAAC,EAAU;YACb,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,cAAc,CAAC;gBAAE,OAAO,IAAI,CAAC;YAEhD,IAAI,GAAG,GAAG,EAAE,CAAC,KAAK,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;YAC1C,IAAI,GAAG,CAAC,QAAQ,CAAC,UAAU,CAAC;gBAAE,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,iBAAiB;YACvE,MAAM,MAAM,GAAG,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;YAErC,IAAI,MAAM,EAAE,CAAC;gBACX,IAAI,KAAK,EAAE,CAAC;oBACV,+CAA+C;oBAC/C,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;oBACvC,IAAI,CAAC;wBACH,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;wBAC/C,OAAO,kBAAkB,OAAO,GAAG,CAAC;oBACtC,CAAC;oBAAC,OAAO,CAAC,EAAE,CAAC;wBACX,OAAO,CAAC,IAAI,CAAC,4CAA4C,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC;wBACnE,OAAO,2BAA2B,CAAC;oBACrC,CAAC;gBACH,CAAC;gBACD,yDAAyD;gBACzD,MAAM,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;gBACvC,OAAO,yCAAyC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC;YAC1E,CAAC;YAED,oBAAoB;YACpB,uEAAuE;YACvE,wFAAwF;YACxF,oEAAoE;YACpE,mDAAmD;YACnD,IAAI,GAAW,CAAC;YAChB,IAAI,KAAK,EAAE,CAAC;gBACV,GAAG,GAAG,GAAG,cAAc,WAAW,GAAG,EAAE,CAAC;YAC1C,CAAC;iBAAM,CAAC;gBACN,MAAM,SAAS,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,sBAAsB,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;gBACjF,IAAI,CAAC,SAAS,EAAE,CAAC;oBACf,OAAO,CAAC,IAAI,CACV,8DAA8D,GAAG,oCAAoC;wBACnG,gEAAgE,CACnE,CAAC;gBACJ,CAAC;gBACD,GAAG,GAAG,SAAS,CAAC,CAAC,CAAC,GAAG,SAAS,IAAI,GAAG,EAAE,CAAC,CAAC,CAAC,IAAI,GAAG,EAAE,CAAC;YACtD,CAAC;YACD,OAAO,kBAAkB,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC;QAClD,CAAC;QAED,kBAAkB;YAChB,IAAI,KAAK;gBAAE,OAAO,CAAC,sCAAsC;YACzD,MAAM,IAAI,GAAG,OAAO,EAAE,CAAC;YACvB,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC;gBAAE,OAAO;YAC3C,MAAM,IAAI,GAAwB;gBAChC;oBACE,GAAG,EAAE,QAAQ;oBACb,QAAQ,EAAE,4BAA4B,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG;oBAC7D,QAAQ,EAAE,cAAc;iBACzB;aACF,CAAC;YACF,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC;QAC5B,CAAC;QAED,eAAe,CAAC,MAAqB;YACnC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC;gBAAE,OAAO;YAEtC,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;YAC/B,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;YAEvB,MAAM,YAAY,GAAG,CAAC,WAAmB,EAAE,EAAE;gBAC3C,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,SAAS,CAAC;oBAAE,OAAO;gBAC/C,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;gBAClD,IAAI,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;oBAC1B,wCAAwC;oBACxC,MAAM,QAAQ,GAAG,cAAc,GAAG,GAAG,CAAC;oBACtC,MAAM,GAAG,GAAG,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,WAAW,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;oBAC3E,IAAI,GAAG;wBAAE,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,WAAW,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC;oBACtE,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,oBAAoB,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC;oBACtF,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC;gBACtD,CAAC;qBAAM,CAAC;oBACN,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,qBAAqB,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC;gBACzF,CAAC;YACH,CAAC,CAAC;YAEF,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;YACnC,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC;YAChC,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC,WAAmB,EAAE,EAAE;gBAC3C,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,SAAS,CAAC;oBAAE,OAAO;gBAC/C,IAAI,WAAW,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;oBAClC,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;oBAClD,MAAM,QAAQ,GAAG,cAAc,GAAG,GAAG,CAAC;oBACtC,MAAM,GAAG,GAAG,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,WAAW,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;oBAC3E,IAAI,GAAG;wBAAE,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,WAAW,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC;gBACxE,CAAC;gBACD,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC;YACtD,CAAC,CAAC,CAAC;YAEH,kDAAkD;YAClD,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE;gBACxC,MAAM,YAAY,GAAG,GAAG,cAAc,UAAU,CAAC;gBACjD,MAAM,GAAG,GAAG,GAAG,CAAC,GAAG,IAAI,EAAE,CAAC;gBAC1B,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,YAAY,CAAC;oBAAE,OAAO,IAAI,EAAE,CAAC;gBAEjD,MAAM,MAAM,GAAG,GAAG,CAAC,KAAK,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC5D,IAAI,GAAW,CAAC;gBAChB,IAAI,CAAC;oBACH,GAAG,GAAG,kBAAkB,CAAC,MAAM,CAAC,CAAC;gBACnC,CAAC;gBAAC,MAAM,CAAC;oBACP,GAAG,CAAC,UAAU,GAAG,GAAG,CAAC;oBACrB,GAAG,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;oBACvB,OAAO;gBACT,CAAC;gBACD,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;gBAE3C,mBAAmB;gBACnB,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;gBAC5C,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;oBACtC,GAAG,CAAC,UAAU,GAAG,GAAG,CAAC;oBACrB,GAAG,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;oBACrB,OAAO;gBACT,CAAC;gBACD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;oBAC7B,GAAG,CAAC,UAAU,GAAG,GAAG,CAAC;oBACrB,GAAG,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;oBACrB,OAAO;gBACT,CAAC;gBACD,MAAM,IAAI,GAAG,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;gBACnC,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC;oBACvB,GAAG,CAAC,UAAU,GAAG,GAAG,CAAC;oBACrB,GAAG,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;oBACrB,OAAO;gBACT,CAAC;gBAED,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,WAAW,EAAE,CAAC;gBACjD,GAAG,CAAC,SAAS,CAAC,cAAc,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,0BAA0B,CAAC,CAAC;gBACvE,GAAG,CAAC,SAAS,CAAC,eAAe,EAAE,UAAU,CAAC,CAAC;gBAC3C,EAAE,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAC1C,CAAC,CAAC,CAAC;QACL,CAAC;QAED,6DAA6D;QAC7D,+DAA+D;QAC/D,qCAAqC;KACtC,CAAC;AACJ,CAAC;AAED,kBAAe,kBAAkB,CAAC"}
|
|
@@ -5,7 +5,7 @@ interface RequestRenderContext {
|
|
|
5
5
|
tenantId: number | string;
|
|
6
6
|
userName: string;
|
|
7
7
|
csrfToken: string;
|
|
8
|
-
environment:
|
|
8
|
+
environment: string;
|
|
9
9
|
}
|
|
10
10
|
/** 从 incoming request 抽出全部 server 端能拿到的 view-context 字段 */
|
|
11
11
|
export declare function buildRenderContext(req: IncomingMessage): RequestRenderContext;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"view-context.d.ts","sourceRoot":"","sources":["../../src/plugins/view-context.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AACjD,OAAO,KAAK,EAAqB,MAAM,EAAE,MAAM,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"view-context.d.ts","sourceRoot":"","sources":["../../src/plugins/view-context.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AACjD,OAAO,KAAK,EAAqB,MAAM,EAAE,MAAM,MAAM,CAAC;AAkCtD,UAAU,oBAAoB;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,GAAG,MAAM,CAAC;IAC1B,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAGlB,WAAW,EAAE,MAAM,CAAC;CACrB;AA+BD,2DAA2D;AAC3D,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,eAAe,GAAG,oBAAoB,CAS7E;AAID,MAAM,WAAW,wBAAwB;IACvC;;;;OAIG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAkED,wBAAgB,iBAAiB,CAAC,OAAO,GAAE,wBAA6B,GAAG,MAAM,CAyChF;AAED,eAAe,iBAAiB,CAAC"}
|
|
@@ -6,18 +6,23 @@ const node_async_hooks_1 = require("node:async_hooks");
|
|
|
6
6
|
/**
|
|
7
7
|
* 在 HTML head 注入 inline script,把启动期上下文挂到 `window`。
|
|
8
8
|
*
|
|
9
|
-
*
|
|
10
|
-
* 的 cookie / host / `x-larkgw-suda-webuser` header,用 `AsyncLocalStorage` 绑到当前
|
|
11
|
-
* 异步链;`transformIndexHtml` 钩子读出后**全部拼成字面量**注入。
|
|
9
|
+
* 三条路径:
|
|
12
10
|
*
|
|
13
|
-
* **prod /
|
|
14
|
-
*
|
|
15
|
-
* - `ENVIRONMENT` 从 `location.hostname` 推
|
|
16
|
-
* - `userId / tenantId / userName` 空字符串
|
|
11
|
+
* 1. **prod build**:emit `{{userId}}` / `{{tenantId}}` / `{{appId}}` 等 HBS 占位符,
|
|
12
|
+
* 线上 vefaas 渲染时把它们替换为真值。html-minify 已经保护占位符。
|
|
17
13
|
*
|
|
18
|
-
*
|
|
19
|
-
*
|
|
20
|
-
*
|
|
14
|
+
* 2. **dev 有 request ctx**:在 `configureServer` 中间件里解析 incoming request 的
|
|
15
|
+
* cookie / host / `x-larkgw-suda-webuser` header,用 `AsyncLocalStorage` 绑到当前
|
|
16
|
+
* 异步链;`transformIndexHtml` 钩子读出后拼成**字面量真值**注入。沙箱网关把
|
|
17
|
+
* `x-larkgw-suda-webuser` 透传给 devserver,于是 server 端有完整 user 上下文。
|
|
18
|
+
*
|
|
19
|
+
* 3. **dev 无 request ctx**(极少触发,例如 vite 内部预渲染没经过 middleware 链):
|
|
20
|
+
* 退化为 IIFE fallback——`csrfToken` 从 `document.cookie` 读、id 类全空;
|
|
21
|
+
* `ENVIRONMENT` 同 dev-with-ctx 一样从 `process.env.FORCE_FRAMEWORK_ENVIRONMENT` 取,
|
|
22
|
+
* 未设置时兜底 'online'。
|
|
23
|
+
*
|
|
24
|
+
* environment 来源约定:dev 永远读 env var(不感知域名),build 走 HBS 占位符
|
|
25
|
+
* 让 vefaas 渲染。技术栈不依赖 host 推断部署环境。
|
|
21
26
|
*/
|
|
22
27
|
const SUDA_HEADER = 'x-larkgw-suda-webuser';
|
|
23
28
|
const requestContext = new node_async_hooks_1.AsyncLocalStorage();
|
|
@@ -38,14 +43,14 @@ function parseCsrfToken(cookieHeader) {
|
|
|
38
43
|
const m = cookieHeader.match(/(?:^|;\s*)suda-csrf-token=([^;]+)/);
|
|
39
44
|
return m ? decodeURIComponent(m[1]) : '';
|
|
40
45
|
}
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
return 'online';
|
|
46
|
+
/**
|
|
47
|
+
* dev 期 environment 来源:`process.env.FORCE_FRAMEWORK_ENVIRONMENT`。
|
|
48
|
+
* 业务侧或 dev-server 启动脚本可注入这个 env 显式指定环境;未设置时兜底 'online'。
|
|
49
|
+
* 不感知域名信息——技术栈不应依赖 host 推断部署环境。
|
|
50
|
+
*/
|
|
51
|
+
function readDevEnvironment() {
|
|
52
|
+
const v = process.env.FORCE_FRAMEWORK_ENVIRONMENT;
|
|
53
|
+
return v && v.trim() ? v.trim() : 'online';
|
|
49
54
|
}
|
|
50
55
|
/** 从 incoming request 抽出全部 server 端能拿到的 view-context 字段 */
|
|
51
56
|
function buildRenderContext(req) {
|
|
@@ -55,7 +60,7 @@ function buildRenderContext(req) {
|
|
|
55
60
|
tenantId: user?.tenant_id ?? '',
|
|
56
61
|
userName: user?.user_name?.zh_cn ?? '',
|
|
57
62
|
csrfToken: parseCsrfToken(req.headers.cookie),
|
|
58
|
-
environment:
|
|
63
|
+
environment: readDevEnvironment(),
|
|
59
64
|
};
|
|
60
65
|
}
|
|
61
66
|
function appIdExpr(appId) {
|
|
@@ -68,7 +73,7 @@ function appIdExpr(appId) {
|
|
|
68
73
|
return h ? h[0] : '';
|
|
69
74
|
})()`;
|
|
70
75
|
}
|
|
71
|
-
/** 有 request context(dev 沙箱 / dev
|
|
76
|
+
/** 有 request context(dev 沙箱 / dev 本地):全字面量真值 */
|
|
72
77
|
function buildScriptFromRequest(options, ctx) {
|
|
73
78
|
return `
|
|
74
79
|
window.appId = ${appIdExpr(options.appId)};
|
|
@@ -79,8 +84,31 @@ function buildScriptFromRequest(options, ctx) {
|
|
|
79
84
|
window.ENVIRONMENT = ${JSON.stringify(ctx.environment)};
|
|
80
85
|
`;
|
|
81
86
|
}
|
|
82
|
-
/**
|
|
83
|
-
|
|
87
|
+
/**
|
|
88
|
+
* Prod build:emit HBS 占位符,由部署运行时 (vefaas) 替换为真值。
|
|
89
|
+
* 三花括号 `{{{appAvatar}}}` 表示不做 HTML escape——头像地址不能转义。
|
|
90
|
+
* 与上游 `coding-vite-preset/view-context-plugin` 占位符约定保持一致。
|
|
91
|
+
*/
|
|
92
|
+
function buildScriptBuildPlaceholders() {
|
|
93
|
+
return `
|
|
94
|
+
window.appId = "{{appId}}";
|
|
95
|
+
window.userId = "{{userId}}";
|
|
96
|
+
window.tenantId = "{{tenantId}}";
|
|
97
|
+
window.userName = "{{userName}}";
|
|
98
|
+
window.csrfToken = "{{csrfToken}}";
|
|
99
|
+
window.ENVIRONMENT = "{{environment}}";
|
|
100
|
+
const appInfo = {
|
|
101
|
+
name: "{{appName}}",
|
|
102
|
+
avatar: "{{{appAvatar}}}",
|
|
103
|
+
description: "{{appDescription}}",
|
|
104
|
+
};
|
|
105
|
+
if (appInfo.name) {
|
|
106
|
+
window._appInfo = appInfo;
|
|
107
|
+
}
|
|
108
|
+
`;
|
|
109
|
+
}
|
|
110
|
+
/** dev 无 request context(极少触发):IIFE fallback */
|
|
111
|
+
function buildScriptDevNoCtxFallback(options) {
|
|
84
112
|
return `
|
|
85
113
|
window.appId = ${appIdExpr(options.appId)};
|
|
86
114
|
window.userId = '';
|
|
@@ -90,17 +118,16 @@ function buildScriptFallback(options) {
|
|
|
90
118
|
var m = document.cookie.match(/(?:^|;\\s*)suda-csrf-token=([^;]+)/);
|
|
91
119
|
return m ? decodeURIComponent(m[1]) : '';
|
|
92
120
|
})();
|
|
93
|
-
window.ENVIRONMENT = (
|
|
94
|
-
var h = location.hostname;
|
|
95
|
-
if (h.indexOf('boe') !== -1) return 'staging';
|
|
96
|
-
if (h.indexOf('feishu-pre') !== -1 || h.indexOf('-pre.') !== -1) return 'gray';
|
|
97
|
-
return 'online';
|
|
98
|
-
})();
|
|
121
|
+
window.ENVIRONMENT = ${JSON.stringify(readDevEnvironment())};
|
|
99
122
|
`;
|
|
100
123
|
}
|
|
101
124
|
function viewContextPlugin(options = {}) {
|
|
125
|
+
let isBuild = false;
|
|
102
126
|
return {
|
|
103
127
|
name: 'miaoda-view-context',
|
|
128
|
+
config(_config, { command }) {
|
|
129
|
+
isBuild = command === 'build';
|
|
130
|
+
},
|
|
104
131
|
/**
|
|
105
132
|
* dev 期前置 middleware:每个请求都把 render context 绑到 ALS。
|
|
106
133
|
* 后续 `transformIndexHtml` 在同一异步链里 `getStore()` 读出。
|
|
@@ -112,10 +139,16 @@ function viewContextPlugin(options = {}) {
|
|
|
112
139
|
});
|
|
113
140
|
},
|
|
114
141
|
transformIndexHtml() {
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
142
|
+
let children;
|
|
143
|
+
if (isBuild) {
|
|
144
|
+
children = buildScriptBuildPlaceholders();
|
|
145
|
+
}
|
|
146
|
+
else {
|
|
147
|
+
const ctx = requestContext.getStore();
|
|
148
|
+
children = ctx
|
|
149
|
+
? buildScriptFromRequest(options, ctx)
|
|
150
|
+
: buildScriptDevNoCtxFallback(options);
|
|
151
|
+
}
|
|
119
152
|
const tags = [
|
|
120
153
|
{
|
|
121
154
|
tag: 'script',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"view-context.js","sourceRoot":"","sources":["../../src/plugins/view-context.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"view-context.js","sourceRoot":"","sources":["../../src/plugins/view-context.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,9 +1,13 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* 标准化 base path
|
|
2
|
+
* 标准化 base path(**路径语义**,强制 `/` 前缀):
|
|
3
3
|
* - 空 / undefined → 空字符串
|
|
4
4
|
* - 前面强制加 `/`
|
|
5
5
|
* - 去掉尾部 `/`
|
|
6
6
|
*
|
|
7
|
+
* 适用:`CLIENT_BASE_PATH` 这种部署路径(一定以 `/` 开头)。
|
|
8
|
+
* **不要**用在 `ASSETS_CDN_PATH` 上 —— CDN 是完整 URL,强加 `/` 会变成
|
|
9
|
+
* `/https://cdn.foo.com/...` 直接破掉。URL 场景用 `normalizeBasePathWithoutTrailingSlash`。
|
|
10
|
+
*
|
|
7
11
|
* 例:
|
|
8
12
|
* normalizeBasePath('') === ''
|
|
9
13
|
* normalizeBasePath('/') === ''
|
|
@@ -12,4 +16,22 @@
|
|
|
12
16
|
* normalizeBasePath('/app/x/') === '/app/x'
|
|
13
17
|
*/
|
|
14
18
|
export declare function normalizeBasePath(input: string | undefined): string;
|
|
19
|
+
/**
|
|
20
|
+
* 标准化 base path(**URL-safe**,只去尾斜杠不加首斜杠):
|
|
21
|
+
* - 空 / undefined / 单独 `/` → 空字符串
|
|
22
|
+
* - 去掉尾部 `/`
|
|
23
|
+
* - 完整 URL(含 scheme)原样保留
|
|
24
|
+
* - 相对路径不强加 `/` 前缀
|
|
25
|
+
*
|
|
26
|
+
* 适用:`ASSETS_CDN_PATH` 这种可能是完整 URL(`https://cdn.foo.com/x`)
|
|
27
|
+
* 也可能是路径(`/app/x`)的字段。
|
|
28
|
+
*
|
|
29
|
+
* 例:
|
|
30
|
+
* normalizeBasePathWithoutTrailingSlash('') === ''
|
|
31
|
+
* normalizeBasePathWithoutTrailingSlash('/') === ''
|
|
32
|
+
* normalizeBasePathWithoutTrailingSlash('/app/x/') === '/app/x'
|
|
33
|
+
* normalizeBasePathWithoutTrailingSlash('https://cdn.foo.com/x/') === 'https://cdn.foo.com/x'
|
|
34
|
+
* normalizeBasePathWithoutTrailingSlash('https://cdn.foo.com/x') === 'https://cdn.foo.com/x'
|
|
35
|
+
*/
|
|
36
|
+
export declare function normalizeBasePathWithoutTrailingSlash(input: string | undefined): string;
|
|
15
37
|
//# sourceMappingURL=normalize-base-path.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"normalize-base-path.d.ts","sourceRoot":"","sources":["../../src/utils/normalize-base-path.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"normalize-base-path.d.ts","sourceRoot":"","sources":["../../src/utils/normalize-base-path.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAMnE;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,qCAAqC,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAKvF"}
|
|
@@ -1,12 +1,17 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.normalizeBasePath = normalizeBasePath;
|
|
4
|
+
exports.normalizeBasePathWithoutTrailingSlash = normalizeBasePathWithoutTrailingSlash;
|
|
4
5
|
/**
|
|
5
|
-
* 标准化 base path
|
|
6
|
+
* 标准化 base path(**路径语义**,强制 `/` 前缀):
|
|
6
7
|
* - 空 / undefined → 空字符串
|
|
7
8
|
* - 前面强制加 `/`
|
|
8
9
|
* - 去掉尾部 `/`
|
|
9
10
|
*
|
|
11
|
+
* 适用:`CLIENT_BASE_PATH` 这种部署路径(一定以 `/` 开头)。
|
|
12
|
+
* **不要**用在 `ASSETS_CDN_PATH` 上 —— CDN 是完整 URL,强加 `/` 会变成
|
|
13
|
+
* `/https://cdn.foo.com/...` 直接破掉。URL 场景用 `normalizeBasePathWithoutTrailingSlash`。
|
|
14
|
+
*
|
|
10
15
|
* 例:
|
|
11
16
|
* normalizeBasePath('') === ''
|
|
12
17
|
* normalizeBasePath('/') === ''
|
|
@@ -24,4 +29,29 @@ function normalizeBasePath(input) {
|
|
|
24
29
|
p = '/' + p;
|
|
25
30
|
return p.replace(/\/+$/, '');
|
|
26
31
|
}
|
|
32
|
+
/**
|
|
33
|
+
* 标准化 base path(**URL-safe**,只去尾斜杠不加首斜杠):
|
|
34
|
+
* - 空 / undefined / 单独 `/` → 空字符串
|
|
35
|
+
* - 去掉尾部 `/`
|
|
36
|
+
* - 完整 URL(含 scheme)原样保留
|
|
37
|
+
* - 相对路径不强加 `/` 前缀
|
|
38
|
+
*
|
|
39
|
+
* 适用:`ASSETS_CDN_PATH` 这种可能是完整 URL(`https://cdn.foo.com/x`)
|
|
40
|
+
* 也可能是路径(`/app/x`)的字段。
|
|
41
|
+
*
|
|
42
|
+
* 例:
|
|
43
|
+
* normalizeBasePathWithoutTrailingSlash('') === ''
|
|
44
|
+
* normalizeBasePathWithoutTrailingSlash('/') === ''
|
|
45
|
+
* normalizeBasePathWithoutTrailingSlash('/app/x/') === '/app/x'
|
|
46
|
+
* normalizeBasePathWithoutTrailingSlash('https://cdn.foo.com/x/') === 'https://cdn.foo.com/x'
|
|
47
|
+
* normalizeBasePathWithoutTrailingSlash('https://cdn.foo.com/x') === 'https://cdn.foo.com/x'
|
|
48
|
+
*/
|
|
49
|
+
function normalizeBasePathWithoutTrailingSlash(input) {
|
|
50
|
+
if (!input)
|
|
51
|
+
return '';
|
|
52
|
+
const p = input.trim();
|
|
53
|
+
if (!p || p === '/')
|
|
54
|
+
return '';
|
|
55
|
+
return p.replace(/\/+$/, '');
|
|
56
|
+
}
|
|
27
57
|
//# sourceMappingURL=normalize-base-path.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"normalize-base-path.js","sourceRoot":"","sources":["../../src/utils/normalize-base-path.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"normalize-base-path.js","sourceRoot":"","sources":["../../src/utils/normalize-base-path.ts"],"names":[],"mappings":";;AAiBA,8CAMC;AAmBD,sFAKC;AA/CD;;;;;;;;;;;;;;;;GAgBG;AACH,SAAgB,iBAAiB,CAAC,KAAyB;IACzD,IAAI,CAAC,KAAK;QAAE,OAAO,EAAE,CAAC;IACtB,IAAI,CAAC,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;IACrB,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,GAAG;QAAE,OAAO,EAAE,CAAC;IAC/B,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC;QAAE,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;IACpC,OAAO,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;AAC/B,CAAC;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,SAAgB,qCAAqC,CAAC,KAAyB;IAC7E,IAAI,CAAC,KAAK;QAAE,OAAO,EAAE,CAAC;IACtB,MAAM,CAAC,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;IACvB,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,GAAG;QAAE,OAAO,EAAE,CAAC;IAC/B,OAAO,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;AAC/B,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@lark-apaas/coding-preset-vite-react",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.2",
|
|
4
4
|
"description": "Vite 8 preset for miaoda-coding vite-react (jsPage) templates — pure frontend, no fullstack baggage",
|
|
5
5
|
"main": "./lib/index.js",
|
|
6
6
|
"types": "./lib/index.d.ts",
|
|
@@ -25,7 +25,7 @@
|
|
|
25
25
|
"@babel/parser": "^7.28.0",
|
|
26
26
|
"@babel/traverse": "^7.28.0",
|
|
27
27
|
"@babel/types": "^7.28.0",
|
|
28
|
-
"@lark-apaas/vite-inspector-plugin": "1.0.4
|
|
28
|
+
"@lark-apaas/vite-inspector-plugin": "^1.0.4",
|
|
29
29
|
"@tailwindcss/vite": "^4.3.0",
|
|
30
30
|
"@vitejs/plugin-react": "^6.0.0",
|
|
31
31
|
"clsx": "^2.1.1",
|