@lark-apaas/coding-preset-vite-react 1.0.8 → 1.0.9-alpha.1

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/index.d.ts CHANGED
@@ -30,7 +30,11 @@ import { type UserConfig } from 'vite';
30
30
  * - MIAODA_APP_TYPE 妙搭应用类型(数字字符串,供 lite Safety 徽标判断)
31
31
  * - MIAODA_APP_ARCH_TYPE 妙搭应用架构类型(数字字符串)
32
32
  */
33
- export declare function defineConfig(overrides?: UserConfig): UserConfig;
33
+ export interface PresetOptions {
34
+ /** fullstack 模式下 NestJS server 端口,默认 3000;dev-proxy 反代目标 */
35
+ serverPort?: number;
36
+ }
37
+ export declare function defineConfig(overrides?: UserConfig, options?: PresetOptions): UserConfig;
34
38
  export default defineConfig;
35
39
  export { routesPlugin, parseRoutes } from './plugins/routes';
36
40
  export { htmlMinifyPlugin, minifyHtmlWithHbsProtection } from './plugins/html-minify';
@@ -48,6 +52,10 @@ export { polyfillPlugin } from './plugins/polyfill';
48
52
  export { viteClientPatchPlugin } from './plugins/vite-client-patch';
49
53
  export { slardarPlugin } from './plugins/slardar';
50
54
  export { devLogsPlugin } from './plugins/dev-logs';
55
+ export { devProxyPlugin } from './plugins/dev-proxy';
56
+ export { htmlOutputPlugin } from './plugins/html-output';
57
+ export { basenamePlugin } from './plugins/basename';
58
+ export { serverLogPlugin } from './plugins/server-log';
51
59
  export { normalizeBasePath, normalizeBasePathWithoutTrailingSlash, } from './utils/normalize-base-path';
52
60
  export { registerSnapDomProxyMiddleware } from './utils/snapdom-proxy';
53
61
  //# sourceMappingURL=index.d.ts.map
@@ -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;AA4DrF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,wBAAgB,YAAY,CAAC,SAAS,GAAE,UAAe,GAAG,UAAU,CA2UnE;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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAA4B,KAAK,UAAU,EAAsB,MAAM,MAAM,CAAC;AAkErF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,MAAM,WAAW,aAAa;IAC5B,4DAA4D;IAC5D,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,wBAAgB,YAAY,CAC1B,SAAS,GAAE,UAAe,EAC1B,OAAO,GAAE,aAAkB,GAC1B,UAAU,CAqWZ;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;AAEnD,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,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.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;
39
+ exports.registerSnapDomProxyMiddleware = exports.normalizeBasePathWithoutTrailingSlash = exports.normalizeBasePath = exports.serverLogPlugin = exports.basenamePlugin = exports.htmlOutputPlugin = exports.devProxyPlugin = 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"));
@@ -59,6 +59,11 @@ const polyfill_1 = require("./plugins/polyfill");
59
59
  const vite_client_patch_1 = require("./plugins/vite-client-patch");
60
60
  const slardar_1 = require("./plugins/slardar");
61
61
  const dev_logs_1 = require("./plugins/dev-logs");
62
+ // fullstack-only 4 件套(MIAODA_APP_TYPE === '3' 时启用)
63
+ const dev_proxy_1 = require("./plugins/dev-proxy");
64
+ const html_output_1 = require("./plugins/html-output");
65
+ const basename_1 = require("./plugins/basename");
66
+ const server_log_1 = require("./plugins/server-log");
62
67
  const normalize_base_path_1 = require("./utils/normalize-base-path");
63
68
  const snapdom_proxy_1 = require("./utils/snapdom-proxy");
64
69
  /**
@@ -95,41 +100,16 @@ function tryLoadInspector(enabled) {
95
100
  return [];
96
101
  }
97
102
  }
98
- /**
99
- * miaoda-coding vite-react (jsPage) 默认 Vite 配置。
100
- *
101
- * 通过环境变量自动读取部署相关参数,用户只需提供项目特有的覆盖:
102
- *
103
- * ```ts
104
- * import { defineConfig } from '@lark-apaas/coding-preset-vite-react';
105
- * import path from 'node:path';
106
- *
107
- * export default defineConfig({
108
- * resolve: {
109
- * alias: {
110
- * '@': path.resolve(__dirname, 'src'),
111
- * '@shared': path.resolve(__dirname, 'shared'),
112
- * },
113
- * },
114
- * });
115
- * ```
116
- *
117
- * 支持环境变量:
118
- * - NODE_ENV development | production(默认 development)
119
- * - CLIENT_BASE_PATH 部署侧 client base path(如 `/app/<id>`)
120
- * - ASSETS_CDN_PATH 生产 JS/CSS CDN 前缀(可选)
121
- * - CLIENT_DEV_PORT dev server 端口(默认 8080)
122
- * - CLIENT_DEV_HOST dev server host(默认 localhost)
123
- * - FORCE_FRAMEWORK_DOMAIN_MAIN 反向代理域名(启用 wss HMR + 设置 ACAO)
124
- * - DISABLE_INSPECTOR `true` 关 inspector
125
- * - MIAODA_FONTS_MIRROR_OFF `1` 关 Google Fonts 代理替换
126
- * - MIAODA_APP_TYPE 妙搭应用类型(数字字符串,供 lite Safety 徽标判断)
127
- * - MIAODA_APP_ARCH_TYPE 妙搭应用架构类型(数字字符串)
128
- */
129
- function defineConfig(overrides = {}) {
103
+ function defineConfig(overrides = {}, options = {}) {
130
104
  const isDev = process.env.NODE_ENV !== 'production';
131
105
  const rootDir = process.cwd();
132
106
  const clientBasePath = (0, normalize_base_path_1.normalizeBasePath)(process.env.CLIENT_BASE_PATH);
107
+ // fullstack 模式判断:MIAODA_APP_TYPE === '3'(妙搭 fullstack stack 的 archType)。
108
+ // 沙箱 / dev.sh 入口注入此 env;jsPage 形态(APP_TYPE === '2')自动不启用 4 件套。
109
+ // 通过 env 而非 vite.config 第二参,让同一份 preset 同时给 jsPage 和 fullstack 用,
110
+ // user vite.config 不用感知。
111
+ const isFullstack = process.env.MIAODA_APP_TYPE === '3';
112
+ const fullstackServerPort = options.serverPort ?? 3000;
133
113
  // ASSETS_CDN_PATH 来自 miaoda-cli 注入的 MIAODA_RESOURCE_CDN_PREFIX,通常是完整 URL
134
114
  // (`https://cdn.bytetos.com/...`)。必须用 URL-safe 的 normalize,不能强加 `/` 前缀
135
115
  // —— 否则会变成 `/https://cdn.bytetos.com/...` 直接破掉 Vite 的 base 替换。
@@ -300,6 +280,25 @@ function defineConfig(overrides = {}) {
300
280
  isDev && (0, dev_logs_1.devLogsPlugin)({ basePath: clientBasePath }),
301
281
  // Google Fonts → 妙搭字体代理(编译时字符串 replace;dev / build 都有用)
302
282
  (0, fonts_mirror_1.fontsMirrorPlugin)(),
283
+ // ── fullstack-only 4 件套(option fullstack:true 启用,jsPage 默认不挂) ──
284
+ // 模拟沙箱网关注入 csrf + suda-webuser,反代 /api 等到 NestJS server;
285
+ // 同时把 accept:text/html 请求反代到 NestJS(让 vite 8080 也能作为入口)。
286
+ isFullstack &&
287
+ (0, dev_proxy_1.devProxyPlugin)({
288
+ serverPort: fullstackServerPort,
289
+ clientBasePath,
290
+ appId,
291
+ }),
292
+ // dev 写出 dist/client/index.html 让 NestJS HBS 渲染;prod 修正 outDir + minify
293
+ isFullstack && (0, html_output_1.htmlOutputPlugin)({
294
+ isDev,
295
+ outDir: path.resolve(rootDir, 'dist/client'),
296
+ }),
297
+ // CLIENT_BASE_PATH 占位符替换为运行时 window.__BASENAME__
298
+ isFullstack && (0, basename_1.basenamePlugin)({ envBasePath: clientBasePath }),
299
+ // 挂 devtool-kits 的 dev-logs middleware:提供 /server-logs SSE 等 endpoints
300
+ // 给妙搭外壳实时读 NestJS server.log;require() 加载,包未装时自动跳过
301
+ isFullstack && (0, server_log_1.serverLogPlugin)({ basePath: clientBasePath }),
303
302
  ].filter(Boolean),
304
303
  resolve: {
305
304
  // Vite 8 原生 tsconfig paths 解析
@@ -461,6 +460,15 @@ var slardar_2 = require("./plugins/slardar");
461
460
  Object.defineProperty(exports, "slardarPlugin", { enumerable: true, get: function () { return slardar_2.slardarPlugin; } });
462
461
  var dev_logs_2 = require("./plugins/dev-logs");
463
462
  Object.defineProperty(exports, "devLogsPlugin", { enumerable: true, get: function () { return dev_logs_2.devLogsPlugin; } });
463
+ // fullstack-only 4 件套(option fullstack:true 启用,也可单独引入)
464
+ var dev_proxy_2 = require("./plugins/dev-proxy");
465
+ Object.defineProperty(exports, "devProxyPlugin", { enumerable: true, get: function () { return dev_proxy_2.devProxyPlugin; } });
466
+ var html_output_2 = require("./plugins/html-output");
467
+ Object.defineProperty(exports, "htmlOutputPlugin", { enumerable: true, get: function () { return html_output_2.htmlOutputPlugin; } });
468
+ var basename_2 = require("./plugins/basename");
469
+ Object.defineProperty(exports, "basenamePlugin", { enumerable: true, get: function () { return basename_2.basenamePlugin; } });
470
+ var server_log_2 = require("./plugins/server-log");
471
+ Object.defineProperty(exports, "serverLogPlugin", { enumerable: true, get: function () { return server_log_2.serverLogPlugin; } });
464
472
  var normalize_base_path_2 = require("./utils/normalize-base-path");
465
473
  Object.defineProperty(exports, "normalizeBasePath", { enumerable: true, get: function () { return normalize_base_path_2.normalizeBasePath; } });
466
474
  Object.defineProperty(exports, "normalizeBasePathWithoutTrailingSlash", { enumerable: true, get: function () { return normalize_base_path_2.normalizeBasePathWithoutTrailingSlash; } });
package/lib/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,29 @@
1
+ /**
2
+ * Basename Injection Plugin for Vite
3
+ *
4
+ * 仅对应用入口文件做字符串替换:
5
+ * process.env.CLIENT_BASE_PATH
6
+ * → ((typeof window !== "undefined" && window.__BASENAME__) || "<envBasePath>")
7
+ *
8
+ * 让 BrowserRouter basename 运行时从 server 注入的 window.__BASENAME__ 读取,
9
+ * 实现"同一份 bundle 跑在不同 basename 下"(默认域名 `/app/<appId>`、自定义域名 `/` 或 `/<alias>`)。
10
+ *
11
+ * 入口文件识别(AST 预扫描法):
12
+ * configResolved 阶段从 vite 解析好的 rollupOptions.input 拿到 HTML 入口,
13
+ * 读取 HTML 内容提取所有 <script type="module" src="..."> 的 src 属性,
14
+ * resolve 为绝对路径存入入口白名单。transform 阶段直接用 id 匹配白名单,
15
+ * 不依赖 moduleGraph / getModuleInfo(enforce:'pre' 阶段不可靠)。
16
+ *
17
+ * 关键约束:
18
+ * - 只匹配入口文件,不影响 SDK 内部代码(如 client-toolkit-lite 内部读 process.env.CLIENT_BASE_PATH 的逻辑保持编译期常量)
19
+ * - enforce: 'pre' 确保在 vite 内置 define 替换之前执行
20
+ * - 兜底常量来自构建时 process.env.CLIENT_BASE_PATH,保证 SSR 渲染失败 / 静态导出场景下仍可降级运行
21
+ */
22
+ import type { Plugin } from 'vite';
23
+ export interface BasenamePluginOptions {
24
+ /** 编译时兜底 basename,通常等于 process.env.CLIENT_BASE_PATH */
25
+ envBasePath?: string;
26
+ }
27
+ export declare function basenamePlugin(options?: BasenamePluginOptions): Plugin;
28
+ export default basenamePlugin;
29
+ //# sourceMappingURL=basename.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"basename.d.ts","sourceRoot":"","sources":["../../src/plugins/basename.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAIH,OAAO,KAAK,EAAE,MAAM,EAAkB,MAAM,MAAM,CAAC;AAMnD,MAAM,WAAW,qBAAqB;IACpC,uDAAuD;IACvD,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAsCD,wBAAgB,cAAc,CAC5B,OAAO,GAAE,qBAA0B,GAClC,MAAM,CAwCR;AAED,eAAe,cAAc,CAAC"}
@@ -0,0 +1,106 @@
1
+ "use strict";
2
+ /**
3
+ * Basename Injection Plugin for Vite
4
+ *
5
+ * 仅对应用入口文件做字符串替换:
6
+ * process.env.CLIENT_BASE_PATH
7
+ * → ((typeof window !== "undefined" && window.__BASENAME__) || "<envBasePath>")
8
+ *
9
+ * 让 BrowserRouter basename 运行时从 server 注入的 window.__BASENAME__ 读取,
10
+ * 实现"同一份 bundle 跑在不同 basename 下"(默认域名 `/app/<appId>`、自定义域名 `/` 或 `/<alias>`)。
11
+ *
12
+ * 入口文件识别(AST 预扫描法):
13
+ * configResolved 阶段从 vite 解析好的 rollupOptions.input 拿到 HTML 入口,
14
+ * 读取 HTML 内容提取所有 <script type="module" src="..."> 的 src 属性,
15
+ * resolve 为绝对路径存入入口白名单。transform 阶段直接用 id 匹配白名单,
16
+ * 不依赖 moduleGraph / getModuleInfo(enforce:'pre' 阶段不可靠)。
17
+ *
18
+ * 关键约束:
19
+ * - 只匹配入口文件,不影响 SDK 内部代码(如 client-toolkit-lite 内部读 process.env.CLIENT_BASE_PATH 的逻辑保持编译期常量)
20
+ * - enforce: 'pre' 确保在 vite 内置 define 替换之前执行
21
+ * - 兜底常量来自构建时 process.env.CLIENT_BASE_PATH,保证 SSR 渲染失败 / 静态导出场景下仍可降级运行
22
+ */
23
+ var __importDefault = (this && this.__importDefault) || function (mod) {
24
+ return (mod && mod.__esModule) ? mod : { "default": mod };
25
+ };
26
+ Object.defineProperty(exports, "__esModule", { value: true });
27
+ exports.basenamePlugin = basenamePlugin;
28
+ const fs_1 = __importDefault(require("fs"));
29
+ const path_1 = __importDefault(require("path"));
30
+ const TARGET_PATTERN = /\bprocess\.env\.CLIENT_BASE_PATH\b/g;
31
+ // 兜底正则:HTML 解析失败时使用
32
+ const FALLBACK_ENTRY_REGEX = /[/\\]client[/\\]src[/\\]index\.(tsx?|jsx?)$/;
33
+ /**
34
+ * 从 HTML 文件中提取所有 <script type="module" src="..."> 的 src,
35
+ * 相对于 vite root 解析为绝对路径返回。
36
+ *
37
+ * 注意 src 的两种写法:
38
+ * - "/client/src/index.tsx" → vite root-relative(以 / 开头,相对于 vite root)
39
+ * - "./src/index.tsx" → 相对于 HTML 文件所在目录
40
+ */
41
+ function extractEntryScripts(htmlPath, viteRoot) {
42
+ const entries = new Set();
43
+ try {
44
+ const html = fs_1.default.readFileSync(htmlPath, 'utf-8');
45
+ const htmlDir = path_1.default.dirname(htmlPath);
46
+ // 每次调用都新建 regex,避免 g flag 的 lastIndex 状态残留
47
+ const regex = /<script\b[^>]*type=["']module["'][^>]*src=["']([^"']+)["']|<script\b[^>]*src=["']([^"']+)["'][^>]*type=["']module["']/g;
48
+ let match;
49
+ while ((match = regex.exec(html)) !== null) {
50
+ const src = match[1] || match[2];
51
+ if (!src)
52
+ continue;
53
+ // vite root-relative 路径(如 /client/src/index.tsx)需要相对于 vite root 解析
54
+ // 相对路径(如 ./src/index.tsx)则相对于 HTML 文件目录解析
55
+ const resolved = src.startsWith('/')
56
+ ? path_1.default.resolve(viteRoot, src.slice(1))
57
+ : path_1.default.resolve(htmlDir, src);
58
+ entries.add(path_1.default.normalize(resolved));
59
+ }
60
+ }
61
+ catch {
62
+ // HTML 读取失败,fallback 到默认正则
63
+ }
64
+ return entries;
65
+ }
66
+ function basenamePlugin(options = {}) {
67
+ const envBasePath = options.envBasePath ?? process.env.CLIENT_BASE_PATH ?? '';
68
+ const fallback = JSON.stringify(envBasePath);
69
+ const runtimeExpr = `((typeof window !== "undefined" && window.__BASENAME__) || ${fallback})`;
70
+ // 入口文件白名单(绝对路径),configResolved 阶段填充
71
+ let entryFiles;
72
+ return {
73
+ name: 'nestjs-vite-react-basename',
74
+ enforce: 'pre',
75
+ configResolved(config) {
76
+ const input = config.build?.rollupOptions?.input;
77
+ if (typeof input === 'string' && input.endsWith('.html')) {
78
+ entryFiles = extractEntryScripts(input, config.root);
79
+ }
80
+ },
81
+ transform(code, id) {
82
+ // 1. 排除虚拟模块和 node_modules
83
+ if (id.startsWith('\0') || id.includes('node_modules'))
84
+ return null;
85
+ // 2. 内容快速过滤
86
+ if (!code.includes('process.env.CLIENT_BASE_PATH'))
87
+ return null;
88
+ // 3. 入口文件匹配
89
+ const cleanId = path_1.default.normalize(id.split('?')[0].split('#')[0]);
90
+ if (entryFiles && entryFiles.size > 0) {
91
+ if (!entryFiles.has(cleanId))
92
+ return null;
93
+ }
94
+ else {
95
+ if (!FALLBACK_ENTRY_REGEX.test(cleanId))
96
+ return null;
97
+ }
98
+ return {
99
+ code: code.replace(TARGET_PATTERN, runtimeExpr),
100
+ map: null,
101
+ };
102
+ },
103
+ };
104
+ }
105
+ exports.default = basenamePlugin;
106
+ //# sourceMappingURL=basename.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"basename.js","sourceRoot":"","sources":["../../src/plugins/basename.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,41 @@
1
+ /**
2
+ * Dev Server Proxy(vite dev → Nest backend)for nestjs-vite-react fullstack 形态。
3
+ *
4
+ * 命名澄清:这是**构建工具层**的 vite `server.proxy` 配置(HTTP 反代),跟 client-toolkit
5
+ * AppContainer 内置的 `api-proxy` / `childApi`(**运行时**的 postMessage 桥,给妙搭外壳
6
+ * 接口测试面板用)是不同概念,请勿混淆。
7
+ *
8
+ * fullstack 应用 dev 时 Vite(8080)是**用户入口**、Nest(3000)服务后端,二者分进程。
9
+ * 本 plugin 同时承担两件事:
10
+ *
11
+ * A. `config()` 注入 `server.proxy`:把 `/api`、`/openapi`、`/__innerapi__` 反代到 Nest,
12
+ * 且模拟沙箱网关的两件事:
13
+ * 1. 注入 `x-larkgw-suda-webuser` header(身份)—— 本地从 SUDA_WEBUSER env 取
14
+ * 2. 注入 `x-suda-csrf-token` header(csrf double-submit)—— per-request 从 cookie 抠
15
+ * 否则 Nest 端 ViewController 拿不到 appId(→ window.appId="" → auth-sdk URL 拼错),
16
+ * csrf middleware 也会拦下请求。
17
+ *
18
+ * B. `configureServer()` 挂 HTML 反代 middleware:用户访问 `vite-8080/<path>` 拿页面时,
19
+ * vite 默认走自己的 index.html。但 fullstack 形态要 Nest 渲染 HBS(注入 appId / csrf /
20
+ * platform-data 等),所以拦截所有 `accept: text/html` 请求转发到 Nest 3000。
21
+ * 白名单避开 vite dev-only 路径(`/@vite`、`/@fs`、`/__vite`、`/@id`、`/node_modules`、
22
+ * `/dev/`、`.hot-update`)和静态资源(.js / .css / 图片 / 字体),这些应该走 vite 自身。
23
+ *
24
+ * 实现搬自 fullstack-vite-preset/src/preset.ts 的 server.proxy + HTML proxy 段,逻辑一致。
25
+ */
26
+ import type { Plugin } from 'vite';
27
+ export interface DevProxyPluginOptions {
28
+ /** Nest server 监听端口。默认 3000 */
29
+ serverPort?: number;
30
+ /** client base path,跟 normalizeBasePath 处理后一致(如 `/app/<id>` 或空串) */
31
+ clientBasePath?: string;
32
+ /** 从 clientBasePath 提取的 appId,用于挂老路径兼容 proxy(`/af/p/<appId>/...`) */
33
+ appId?: string;
34
+ }
35
+ /**
36
+ * Vite plugin: 注入 dev server proxy 配置(仅 dev,build 时不挂)。
37
+ * 通过 `config()` hook 返回 `server.proxy` 让 vite mergeConfig 自动合并。
38
+ */
39
+ export declare function devProxyPlugin(options?: DevProxyPluginOptions): Plugin;
40
+ export default devProxyPlugin;
41
+ //# sourceMappingURL=dev-proxy.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dev-proxy.d.ts","sourceRoot":"","sources":["../../src/plugins/dev-proxy.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAIH,OAAO,KAAK,EAAE,MAAM,EAAgB,MAAM,MAAM,CAAC;AASjD,MAAM,WAAW,qBAAqB;IACpC,+BAA+B;IAC/B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,oEAAoE;IACpE,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,qEAAqE;IACrE,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAoBD;;;GAGG;AACH,wBAAgB,cAAc,CAAC,OAAO,GAAE,qBAA0B,GAAG,MAAM,CAoK1E;AAED,eAAe,cAAc,CAAC"}
@@ -0,0 +1,228 @@
1
+ "use strict";
2
+ /**
3
+ * Dev Server Proxy(vite dev → Nest backend)for nestjs-vite-react fullstack 形态。
4
+ *
5
+ * 命名澄清:这是**构建工具层**的 vite `server.proxy` 配置(HTTP 反代),跟 client-toolkit
6
+ * AppContainer 内置的 `api-proxy` / `childApi`(**运行时**的 postMessage 桥,给妙搭外壳
7
+ * 接口测试面板用)是不同概念,请勿混淆。
8
+ *
9
+ * fullstack 应用 dev 时 Vite(8080)是**用户入口**、Nest(3000)服务后端,二者分进程。
10
+ * 本 plugin 同时承担两件事:
11
+ *
12
+ * A. `config()` 注入 `server.proxy`:把 `/api`、`/openapi`、`/__innerapi__` 反代到 Nest,
13
+ * 且模拟沙箱网关的两件事:
14
+ * 1. 注入 `x-larkgw-suda-webuser` header(身份)—— 本地从 SUDA_WEBUSER env 取
15
+ * 2. 注入 `x-suda-csrf-token` header(csrf double-submit)—— per-request 从 cookie 抠
16
+ * 否则 Nest 端 ViewController 拿不到 appId(→ window.appId="" → auth-sdk URL 拼错),
17
+ * csrf middleware 也会拦下请求。
18
+ *
19
+ * B. `configureServer()` 挂 HTML 反代 middleware:用户访问 `vite-8080/<path>` 拿页面时,
20
+ * vite 默认走自己的 index.html。但 fullstack 形态要 Nest 渲染 HBS(注入 appId / csrf /
21
+ * platform-data 等),所以拦截所有 `accept: text/html` 请求转发到 Nest 3000。
22
+ * 白名单避开 vite dev-only 路径(`/@vite`、`/@fs`、`/__vite`、`/@id`、`/node_modules`、
23
+ * `/dev/`、`.hot-update`)和静态资源(.js / .css / 图片 / 字体),这些应该走 vite 自身。
24
+ *
25
+ * 实现搬自 fullstack-vite-preset/src/preset.ts 的 server.proxy + HTML proxy 段,逻辑一致。
26
+ */
27
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
28
+ if (k2 === undefined) k2 = k;
29
+ var desc = Object.getOwnPropertyDescriptor(m, k);
30
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
31
+ desc = { enumerable: true, get: function() { return m[k]; } };
32
+ }
33
+ Object.defineProperty(o, k2, desc);
34
+ }) : (function(o, m, k, k2) {
35
+ if (k2 === undefined) k2 = k;
36
+ o[k2] = m[k];
37
+ }));
38
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
39
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
40
+ }) : function(o, v) {
41
+ o["default"] = v;
42
+ });
43
+ var __importStar = (this && this.__importStar) || (function () {
44
+ var ownKeys = function(o) {
45
+ ownKeys = Object.getOwnPropertyNames || function (o) {
46
+ var ar = [];
47
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
48
+ return ar;
49
+ };
50
+ return ownKeys(o);
51
+ };
52
+ return function (mod) {
53
+ if (mod && mod.__esModule) return mod;
54
+ var result = {};
55
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
56
+ __setModuleDefault(result, mod);
57
+ return result;
58
+ };
59
+ })();
60
+ Object.defineProperty(exports, "__esModule", { value: true });
61
+ exports.devProxyPlugin = devProxyPlugin;
62
+ const http = __importStar(require("node:http"));
63
+ const local_dev_1 = require("../utils/local-dev");
64
+ function sendBackendUnavailable502(_err, _req, res) {
65
+ if (res.headersSent)
66
+ return;
67
+ res.writeHead(502, {
68
+ 'Content-Type': 'application/json; charset=utf-8',
69
+ 'Cache-Control': 'no-cache, no-store, must-revalidate',
70
+ });
71
+ res.end(JSON.stringify({
72
+ error: 'Bad Gateway',
73
+ message: 'Backend service is not running',
74
+ }));
75
+ }
76
+ /**
77
+ * Vite plugin: 注入 dev server proxy 配置(仅 dev,build 时不挂)。
78
+ * 通过 `config()` hook 返回 `server.proxy` 让 vite mergeConfig 自动合并。
79
+ */
80
+ function devProxyPlugin(options = {}) {
81
+ const serverPort = options.serverPort ?? 3000;
82
+ const clientBasePath = options.clientBasePath ?? '';
83
+ const appId = options.appId;
84
+ return {
85
+ name: 'nestjs-vite-react-dev-proxy',
86
+ apply: 'serve',
87
+ config() {
88
+ const localDev = (0, local_dev_1.isLocalDev)();
89
+ const sandboxBase = (0, local_dev_1.resolveSandboxOrigin)();
90
+ const { cookie: outboundCookie, csrfToken: outboundCsrfToken } = (0, local_dev_1.composeSandboxOutboundAuth)();
91
+ // 解析 SUDA_WEBUSER(沙箱注入到 .env.local,dotenv@17 转义边界容错)
92
+ let localDevWebUserHeader = '';
93
+ const parsedSudaWebUser = (0, local_dev_1.parseSudaWebUserEnv)(process.env.SUDA_WEBUSER);
94
+ if (parsedSudaWebUser) {
95
+ try {
96
+ localDevWebUserHeader = encodeURIComponent(JSON.stringify(parsedSudaWebUser));
97
+ }
98
+ catch {
99
+ /* ignore */
100
+ }
101
+ }
102
+ const proxy = {};
103
+ // 本地反代沙箱的平台 runtime API(条件性)
104
+ if (localDev && sandboxBase) {
105
+ proxy[`${clientBasePath}/__runtime__`] = {
106
+ target: sandboxBase,
107
+ changeOrigin: true,
108
+ headers: {
109
+ ...(outboundCookie ? { cookie: outboundCookie } : {}),
110
+ ...(outboundCsrfToken ? { 'x-suda-csrf-token': outboundCsrfToken } : {}),
111
+ },
112
+ };
113
+ }
114
+ // API proxy。本地 dev 没有 larkgw 经过这条 incoming 链路,server 端 NestJS 缺:
115
+ // 1. x-larkgw-suda-webuser header(身份) → ViewController 拿不到 appId
116
+ // 2. x-suda-csrf-token header(csrf double-submit) → csrf middleware 403
117
+ // 在 dev server 这层模拟 larkgw 注入这两样
118
+ proxy[`${clientBasePath}/api`] = {
119
+ target: `http://localhost:${serverPort}`,
120
+ changeOrigin: true,
121
+ ...(localDev && localDevWebUserHeader
122
+ ? { headers: { 'x-larkgw-suda-webuser': localDevWebUserHeader } }
123
+ : {}),
124
+ configure: (proxyServer) => {
125
+ proxyServer.on('error', (err, req, res) => {
126
+ sendBackendUnavailable502(err, req, res);
127
+ });
128
+ if (localDev) {
129
+ proxyServer.on('proxyReq', (proxyReq, req) => {
130
+ if (proxyReq.getHeader('x-suda-csrf-token'))
131
+ return;
132
+ const cookie = req.headers.cookie;
133
+ if (!cookie)
134
+ return;
135
+ const m = /(?:^|;\s*)suda-csrf-token=([^;]+)/.exec(cookie);
136
+ if (m)
137
+ proxyReq.setHeader('x-suda-csrf-token', m[1]);
138
+ });
139
+ }
140
+ },
141
+ };
142
+ // OpenAPI proxy
143
+ proxy[`${clientBasePath}/openapi`] = {
144
+ target: `http://localhost:${serverPort}`,
145
+ changeOrigin: true,
146
+ configure: (proxyServer) => {
147
+ proxyServer.on('error', (err, req, res) => {
148
+ sendBackendUnavailable502(err, req, res);
149
+ });
150
+ },
151
+ };
152
+ // Inner API proxy
153
+ proxy[`${clientBasePath}/__innerapi__`] = {
154
+ target: `http://localhost:${serverPort}`,
155
+ changeOrigin: true,
156
+ configure: (proxyServer) => {
157
+ proxyServer.on('error', (err, req, res) => {
158
+ sendBackendUnavailable502(err, req, res);
159
+ });
160
+ },
161
+ };
162
+ // 旧路径(/af/p/:appId)兼容代理(仅在 appId 已知时挂)
163
+ if (appId) {
164
+ proxy[`/af/p/${appId}/api`] = {
165
+ target: `http://localhost:${serverPort}`,
166
+ changeOrigin: true,
167
+ configure: (proxyServer) => {
168
+ proxyServer.on('error', (err, req, res) => {
169
+ sendBackendUnavailable502(err, req, res);
170
+ });
171
+ },
172
+ };
173
+ proxy[`/af/p/${appId}/__innerapi__`] = {
174
+ target: `http://localhost:${serverPort}`,
175
+ changeOrigin: true,
176
+ configure: (proxyServer) => {
177
+ proxyServer.on('error', (err, req, res) => {
178
+ sendBackendUnavailable502(err, req, res);
179
+ });
180
+ },
181
+ };
182
+ }
183
+ return {
184
+ server: { proxy },
185
+ };
186
+ },
187
+ configureServer(server) {
188
+ // HTML 反代到 Nest:fullstack 入口是 vite (8080),但 HTML 由 Nest hbs 渲染
189
+ server.middlewares.use((req, res, next) => {
190
+ const devServerWhiteList = [
191
+ '/@vite',
192
+ '/@fs',
193
+ '/__vite',
194
+ '/@id',
195
+ '/node_modules',
196
+ '/dev/',
197
+ '.hot-update',
198
+ '/@react-refresh',
199
+ '/@ws-watchdog',
200
+ '/@error-overlay',
201
+ ];
202
+ const isHtmlRequest = req.headers.accept?.includes('text/html');
203
+ const pathname = req.url?.split('?')[0] || '';
204
+ const isDevServerPath = devServerWhiteList.some((item) => pathname.includes(item));
205
+ const isStaticAsset = /\.(js|mjs|cjs|css|map|png|jpg|jpeg|gif|svg|ico|webp|woff|woff2|ttf|eot)$/i.test(pathname);
206
+ if (!isHtmlRequest || isDevServerPath || isStaticAsset) {
207
+ return next();
208
+ }
209
+ const proxyReq = http.request({
210
+ hostname: 'localhost',
211
+ port: serverPort,
212
+ path: req.url,
213
+ method: req.method,
214
+ headers: req.headers,
215
+ }, (proxyRes) => {
216
+ res.writeHead(proxyRes.statusCode || 200, proxyRes.headers);
217
+ proxyRes.pipe(res);
218
+ });
219
+ proxyReq.on('error', (err) => {
220
+ sendBackendUnavailable502(err, req, res);
221
+ });
222
+ req.pipe(proxyReq);
223
+ });
224
+ },
225
+ };
226
+ }
227
+ exports.default = devProxyPlugin;
228
+ //# sourceMappingURL=dev-proxy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dev-proxy.js","sourceRoot":"","sources":["../../src/plugins/dev-proxy.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ import type { Plugin } from 'vite';
2
+ /**
3
+ * Minify HTML while preserving HBS (Handlebars) template expressions.
4
+ *
5
+ * HBS expressions like {{csrfToken}} and {{{appAvatar}}} are temporarily
6
+ * replaced with safe placeholders before minification, then restored after.
7
+ */
8
+ export declare function minifyHtmlWithHbsProtection(html: string): Promise<string>;
9
+ export interface HtmlOutputPluginOptions {
10
+ /** Whether running in development mode */
11
+ isDev: boolean;
12
+ /** Output directory for built files */
13
+ outDir: string;
14
+ }
15
+ /**
16
+ * Vite plugin to handle HTML output:
17
+ * 1. In production: fixes HTML output path (removes extra 'client' directory)
18
+ * 2. In development: writes transformed HTML to disk for backend to serve
19
+ */
20
+ export declare function htmlOutputPlugin(options: HtmlOutputPluginOptions): Plugin;
21
+ //# sourceMappingURL=html-output.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"html-output.d.ts","sourceRoot":"","sources":["../../src/plugins/html-output.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,MAAM,EAAiC,MAAM,MAAM,CAAC;AAGlE;;;;;GAKG;AACH,wBAAsB,2BAA2B,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CA0B/E;AAED,MAAM,WAAW,uBAAuB;IACtC,0CAA0C;IAC1C,KAAK,EAAE,OAAO,CAAC;IACf,uCAAuC;IACvC,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,uBAAuB,GAAG,MAAM,CAwIzE"}
@@ -0,0 +1,171 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.minifyHtmlWithHbsProtection = minifyHtmlWithHbsProtection;
7
+ exports.htmlOutputPlugin = htmlOutputPlugin;
8
+ const fs_1 = __importDefault(require("fs"));
9
+ const path_1 = __importDefault(require("path"));
10
+ const html_minifier_terser_1 = require("html-minifier-terser");
11
+ /**
12
+ * Minify HTML while preserving HBS (Handlebars) template expressions.
13
+ *
14
+ * HBS expressions like {{csrfToken}} and {{{appAvatar}}} are temporarily
15
+ * replaced with safe placeholders before minification, then restored after.
16
+ */
17
+ async function minifyHtmlWithHbsProtection(html) {
18
+ // Replace HBS expressions with placeholders before minification
19
+ // to prevent html-minifier-terser from corrupting them
20
+ const hbsPlaceholders = [];
21
+ let processed = html.replace(/\{\{\{?.+?\}\}\}?/g, (match) => {
22
+ const index = hbsPlaceholders.length;
23
+ hbsPlaceholders.push(match);
24
+ return `__HBS_${index}__`;
25
+ });
26
+ processed = await (0, html_minifier_terser_1.minify)(processed, {
27
+ collapseWhitespace: true,
28
+ removeComments: true,
29
+ removeRedundantAttributes: true,
30
+ removeEmptyAttributes: true,
31
+ minifyCSS: true,
32
+ // Do NOT minifyJS — inline scripts may reference HBS placeholders
33
+ minifyJS: false,
34
+ });
35
+ // Restore HBS expressions
36
+ processed = processed.replace(/__HBS_(\d+)__/g, (_, index) => {
37
+ return hbsPlaceholders[Number(index)];
38
+ });
39
+ return processed;
40
+ }
41
+ /**
42
+ * Vite plugin to handle HTML output:
43
+ * 1. In production: fixes HTML output path (removes extra 'client' directory)
44
+ * 2. In development: writes transformed HTML to disk for backend to serve
45
+ */
46
+ function htmlOutputPlugin(options) {
47
+ const { isDev, outDir } = options;
48
+ let config;
49
+ let server = null;
50
+ /**
51
+ * Transform and write HTML to disk for backend to serve
52
+ */
53
+ async function writeHtmlToDisk() {
54
+ if (!server || !config)
55
+ return;
56
+ try {
57
+ // Find the input HTML file from rollup options
58
+ const rollupInput = config.build.rollupOptions?.input;
59
+ let htmlPath;
60
+ if (typeof rollupInput === 'string') {
61
+ htmlPath = rollupInput;
62
+ }
63
+ else if (Array.isArray(rollupInput)) {
64
+ htmlPath = rollupInput.find((f) => f.endsWith('.html')) || '';
65
+ }
66
+ else if (rollupInput && typeof rollupInput === 'object') {
67
+ htmlPath =
68
+ Object.values(rollupInput).find((f) => f.endsWith('.html')) || '';
69
+ }
70
+ else {
71
+ htmlPath = path_1.default.resolve(config.root, 'index.html');
72
+ }
73
+ if (!htmlPath || !fs_1.default.existsSync(htmlPath)) {
74
+ console.warn(`[html-output] HTML file not found: ${htmlPath}`);
75
+ return;
76
+ }
77
+ // Read the source HTML
78
+ let html = fs_1.default.readFileSync(htmlPath, 'utf-8');
79
+ // Apply Vite's HTML transformations (this calls all plugin's transformIndexHtml hooks)
80
+ const url = '/' + path_1.default.relative(config.root, htmlPath);
81
+ html = await server.transformIndexHtml(url, html);
82
+ // Write to output directory
83
+ const outputPath = path_1.default.resolve(outDir, 'index.html');
84
+ // Ensure output directory exists
85
+ const dir = path_1.default.dirname(outputPath);
86
+ if (!fs_1.default.existsSync(dir)) {
87
+ fs_1.default.mkdirSync(dir, { recursive: true });
88
+ }
89
+ fs_1.default.writeFileSync(outputPath, html);
90
+ console.log(`[html-output] Written to: ${outputPath}`);
91
+ }
92
+ catch (e) {
93
+ console.error(`[html-output] Failed to write HTML:`, e);
94
+ }
95
+ }
96
+ return {
97
+ name: 'vite-html-output',
98
+ configResolved(resolvedConfig) {
99
+ config = resolvedConfig;
100
+ },
101
+ configureServer(devServer) {
102
+ if (!isDev)
103
+ return;
104
+ server = devServer;
105
+ // Return a post hook to run after all plugins' configureServer and
106
+ // Vite's internal middlewares are set up
107
+ return () => {
108
+ writeHtmlToDisk();
109
+ // Watch for HTML file changes
110
+ const rollupInput = config.build.rollupOptions?.input;
111
+ let htmlPath;
112
+ if (typeof rollupInput === 'string' && rollupInput.endsWith('.html')) {
113
+ htmlPath = rollupInput;
114
+ }
115
+ else if (rollupInput && typeof rollupInput === 'object') {
116
+ const inputs = Array.isArray(rollupInput)
117
+ ? rollupInput
118
+ : Object.values(rollupInput);
119
+ htmlPath = inputs.find((f) => f.endsWith('.html'));
120
+ }
121
+ if (htmlPath) {
122
+ devServer.watcher.add(htmlPath);
123
+ devServer.watcher.on('change', (file) => {
124
+ if (file === htmlPath) {
125
+ console.log(`[html-output] HTML changed, regenerating...`);
126
+ writeHtmlToDisk();
127
+ }
128
+ });
129
+ }
130
+ };
131
+ },
132
+ // In production, fix the HTML output path and minify after build
133
+ async closeBundle() {
134
+ if (!isDev && config) {
135
+ const outDir = config.build.outDir;
136
+ const wrongPath = path_1.default.resolve(outDir, 'client/index.html');
137
+ const correctPath = path_1.default.resolve(outDir, 'index.html');
138
+ // Check if HTML was output to wrong location
139
+ if (fs_1.default.existsSync(wrongPath)) {
140
+ // Move HTML to correct location
141
+ fs_1.default.renameSync(wrongPath, correctPath);
142
+ console.log(`[html-output] Moved: ${wrongPath} -> ${correctPath}`);
143
+ // Remove empty client directory if it exists
144
+ const clientDir = path_1.default.resolve(outDir, 'client');
145
+ try {
146
+ const files = fs_1.default.readdirSync(clientDir);
147
+ if (files.length === 0) {
148
+ fs_1.default.rmdirSync(clientDir);
149
+ }
150
+ }
151
+ catch {
152
+ // Directory doesn't exist or not empty, ignore
153
+ }
154
+ }
155
+ // Minify HTML (protect HBS templates like {{csrfToken}}, {{{appAvatar}}})
156
+ if (fs_1.default.existsSync(correctPath)) {
157
+ try {
158
+ const html = fs_1.default.readFileSync(correctPath, 'utf-8');
159
+ const minified = await minifyHtmlWithHbsProtection(html);
160
+ fs_1.default.writeFileSync(correctPath, minified);
161
+ console.log(`[html-output] Minified: ${correctPath}`);
162
+ }
163
+ catch (e) {
164
+ console.warn(`[html-output] HTML minification failed, skipping:`, e);
165
+ }
166
+ }
167
+ }
168
+ },
169
+ };
170
+ }
171
+ //# sourceMappingURL=html-output.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"html-output.js","sourceRoot":"","sources":["../../src/plugins/html-output.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,33 @@
1
+ /**
2
+ * Server-Log Middleware Plugin(dev only)for nestjs-vite-react fullstack 形态。
3
+ *
4
+ * 在 vite dev server 上挂 `@lark-apaas/devtool-kits` 的 dev-logs middleware(含
5
+ * server-log SSE / 合并读 / 单文件分页等 endpoints),让妙搭外壳(编辑器侧)能够
6
+ * 实时拿到 Nest server 写的日志(server.log / trace.log / *.std.log)。
7
+ *
8
+ * 提供的 endpoints(由 devtool-kits 实现,挂在 `<basePath>/dev/logs` 下):
9
+ * - GET /server-logs/stream SSE 实时流
10
+ * - GET /server-logs 合并读所有日志文件(分页 / 过滤)
11
+ * - GET /files/:fileName 单文件分页读
12
+ * - 其他 dev-logs middleware 提供的辅助接口
13
+ *
14
+ * 跟 `coding-preset-vite-react/plugins/dev-logs.ts`(jsPage 的浏览器端 batch logger
15
+ * 收集 `/dev/logs/collect-batch` → `browser.log`)互不冲突——前者读 server 端日志文件
16
+ * 提供给外壳;后者收浏览器端 batch 上报写 `browser.log`。
17
+ *
18
+ * 实现搬自 fullstack-vite-preset/src/preset.ts 的 registerMiddlewares 段,逻辑一致。
19
+ */
20
+ import type { Plugin } from 'vite';
21
+ export interface ServerLogPluginOptions {
22
+ /** 日志读取目录。默认 `process.env.LOG_DIR || './logs'`,跟 Nest server 写日志的目录一致 */
23
+ logDir?: string;
24
+ /** 挂载基路径(沙箱 base path),devtool-kits 内部会把 routes 挂到 `<basePath>/dev/logs/...` */
25
+ basePath?: string;
26
+ }
27
+ /**
28
+ * Vite plugin: 挂载 devtool-kits 的 dev-logs middleware(server-log SSE 等)。
29
+ * 仅 dev 模式启用;build 时不影响。
30
+ */
31
+ export declare function serverLogPlugin(options?: ServerLogPluginOptions): Plugin;
32
+ export default serverLogPlugin;
33
+ //# sourceMappingURL=server-log.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server-log.d.ts","sourceRoot":"","sources":["../../src/plugins/server-log.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAiB,MAAM,MAAM,CAAC;AAElD,MAAM,WAAW,sBAAsB;IACrC,yEAAyE;IACzE,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,gFAAgF;IAChF,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,OAAO,GAAE,sBAA2B,GAAG,MAAM,CAuC5E;AAED,eAAe,eAAe,CAAC"}
@@ -0,0 +1,61 @@
1
+ "use strict";
2
+ /**
3
+ * Server-Log Middleware Plugin(dev only)for nestjs-vite-react fullstack 形态。
4
+ *
5
+ * 在 vite dev server 上挂 `@lark-apaas/devtool-kits` 的 dev-logs middleware(含
6
+ * server-log SSE / 合并读 / 单文件分页等 endpoints),让妙搭外壳(编辑器侧)能够
7
+ * 实时拿到 Nest server 写的日志(server.log / trace.log / *.std.log)。
8
+ *
9
+ * 提供的 endpoints(由 devtool-kits 实现,挂在 `<basePath>/dev/logs` 下):
10
+ * - GET /server-logs/stream SSE 实时流
11
+ * - GET /server-logs 合并读所有日志文件(分页 / 过滤)
12
+ * - GET /files/:fileName 单文件分页读
13
+ * - 其他 dev-logs middleware 提供的辅助接口
14
+ *
15
+ * 跟 `coding-preset-vite-react/plugins/dev-logs.ts`(jsPage 的浏览器端 batch logger
16
+ * 收集 `/dev/logs/collect-batch` → `browser.log`)互不冲突——前者读 server 端日志文件
17
+ * 提供给外壳;后者收浏览器端 batch 上报写 `browser.log`。
18
+ *
19
+ * 实现搬自 fullstack-vite-preset/src/preset.ts 的 registerMiddlewares 段,逻辑一致。
20
+ */
21
+ Object.defineProperty(exports, "__esModule", { value: true });
22
+ exports.serverLogPlugin = serverLogPlugin;
23
+ /**
24
+ * Vite plugin: 挂载 devtool-kits 的 dev-logs middleware(server-log SSE 等)。
25
+ * 仅 dev 模式启用;build 时不影响。
26
+ */
27
+ function serverLogPlugin(options = {}) {
28
+ const logDir = options.logDir ?? process.env.LOG_DIR ?? './logs';
29
+ const basePath = options.basePath ?? '';
30
+ return {
31
+ name: 'nestjs-vite-react-server-log',
32
+ apply: 'serve',
33
+ async configureServer(server) {
34
+ // 用 require 而不是 `await import()` —— 后者会被 vite import-analysis 静态扫描,
35
+ // 在 worktree / monorepo 里 devtool-kits 还没 build 出 dist 时报"Failed to
36
+ // resolve entry"。devtool-kits 是 CJS 包,require 直接走 Node 解析,不进 vite。
37
+ // 同时这样写也兼容"包未装"的场景——require 失败就跳过 server-log middleware。
38
+ // eslint-disable-next-line @typescript-eslint/no-var-requires
39
+ let devtoolKits;
40
+ try {
41
+ // eslint-disable-next-line @typescript-eslint/no-require-imports
42
+ devtoolKits = require('@lark-apaas/devtool-kits');
43
+ }
44
+ catch {
45
+ console.warn('[nestjs-vite-react-server-log] @lark-apaas/devtool-kits not installed; server-log SSE disabled.');
46
+ return;
47
+ }
48
+ const { registerMiddlewares, createDevLogsMiddleware } = devtoolKits;
49
+ await registerMiddlewares(server.middlewares, [
50
+ createDevLogsMiddleware({
51
+ logDir,
52
+ }),
53
+ ], {
54
+ basePath,
55
+ isDev: true,
56
+ });
57
+ },
58
+ };
59
+ }
60
+ exports.default = serverLogPlugin;
61
+ //# sourceMappingURL=server-log.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server-log.js","sourceRoot":"","sources":["../../src/plugins/server-log.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;GAkBG;;AAeH,0CAuCC;AA3CD;;;GAGG;AACH,SAAgB,eAAe,CAAC,UAAkC,EAAE;IAClE,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,GAAG,CAAC,OAAO,IAAI,QAAQ,CAAC;IACjE,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,IAAI,EAAE,CAAC;IAExC,OAAO;QACL,IAAI,EAAE,8BAA8B;QACpC,KAAK,EAAE,OAAO;QACd,KAAK,CAAC,eAAe,CAAC,MAAqB;YACzC,oEAAoE;YACpE,oEAAoE;YACpE,mEAAmE;YACnE,yDAAyD;YACzD,8DAA8D;YAC9D,IAAI,WAAsD,CAAC;YAC3D,IAAI,CAAC;gBACH,iEAAiE;gBACjE,WAAW,GAAG,OAAO,CAAC,0BAA0B,CAAC,CAAC;YACpD,CAAC;YAAC,MAAM,CAAC;gBACP,OAAO,CAAC,IAAI,CACV,iGAAiG,CAClG,CAAC;gBACF,OAAO;YACT,CAAC;YAED,MAAM,EAAE,mBAAmB,EAAE,uBAAuB,EAAE,GAAG,WAAW,CAAC;YACrE,MAAM,mBAAmB,CACvB,MAAM,CAAC,WAAW,EAClB;gBACE,uBAAuB,CAAC;oBACtB,MAAM;iBACP,CAAC;aACH,EACD;gBACE,QAAQ;gBACR,KAAK,EAAE,IAAI;aACZ,CACF,CAAC;QACJ,CAAC;KACF,CAAC;AACJ,CAAC;AAED,kBAAe,eAAe,CAAC"}
@@ -0,0 +1,46 @@
1
+ /**
2
+ * 本地开发总开关。
3
+ *
4
+ * 由 `dev-local.sh`(平台 CLI `miaoda app sync` 同步到项目)export `MIAODA_LOCAL_DEV=1`。
5
+ * 沙箱 dev / 生产都不设此 env,所以本地专属逻辑(view-context 占位填充、__runtime__ 反代沙箱)
6
+ * 只在用户本机 `npm run dev:local` 时启用,沙箱 / 生产行为完全不受影响。
7
+ */
8
+ export declare function isLocalDev(): boolean;
9
+ /**
10
+ * 反代沙箱时的认证组装。两条入口:
11
+ * - 新流(推荐):env `FORCE_AUTHN_PREVIEW_SESSION_ID` —— 后端下发的单值 session(实际是
12
+ * X-Force-Runtime-Session 的值)。SDK 自动拼 cookie,suda-csrf-token 用本地常量。
13
+ * - 老流(兼容):env `SANDBOX_COOKIE` —— 用户从浏览器手抠的完整 cookie 字符串(包含
14
+ * X-Force-Runtime-Session / suda-csrf-token / suda_web_did 等)。原样透传,suda-csrf-token
15
+ * 从其中正则提取作为出向 x-suda-csrf-token header。
16
+ *
17
+ * 两个都给的话 `SANDBOX_COOKIE` 优先("已显式拼好"信号更强)。两个都缺的话返回空字符串
18
+ * (local dev 跑不通,但不抛错——交给上层 `localDev && sandboxBase` 条件兜底)。
19
+ */
20
+ export declare function composeSandboxOutboundAuth(): {
21
+ cookie: string;
22
+ csrfToken: string;
23
+ };
24
+ /**
25
+ * 解析沙箱反代的 target origin。两条入口:
26
+ * - 新流(推荐):env `MIAODA_DEV_PLATFORM_BASE` —— 后端下发的完整 URL,**可能带路径前缀**
27
+ * (例如 `https://ai-tenant-<app>-<sandbox>.aiforce-boe-preview.bytedance.net/app/<app>`)。
28
+ * SDK 抽 `new URL(...).origin` 拿 host,扔掉路径——避免反代 target 双前缀。
29
+ * - 老流(兼容):env `SANDBOX_COOKIE` 配套用的 `SANDBOX_PUBLIC_URL`(用户从沙箱信息手抠 host)。
30
+ *
31
+ * 两个都给的话 `MIAODA_DEV_PLATFORM_BASE` 优先。两个都缺的话返回空字符串
32
+ * (local dev 跑不通,但不抛错——交给上层 `localDev && sandboxBase` 条件兜底)。
33
+ */
34
+ export declare function resolveSandboxOrigin(): string;
35
+ /**
36
+ * 解析 `process.env.SUDA_WEBUSER`,容忍沙箱下发的 shell-quoted JSON。
37
+ *
38
+ * 沙箱 env pull 下发到 .env.local 的 SUDA_WEBUSER 是双引号包裹 + 内部 `\"` 转义;
39
+ * dotenv@17 剥外层引号后**不还原**内部 `\"`,导致 `process.env.SUDA_WEBUSER` 是
40
+ * `{\"user_id\":\"...\"}` 这种带反斜杠的字符串,直接 JSON.parse 会挂在
41
+ * `Expected property name or '}' in JSON at position 1`。
42
+ *
43
+ * 容错:先直接 parse;失败再 unescape `\"` 后 parse;都失败返回 null。
44
+ */
45
+ export declare function parseSudaWebUserEnv<T = unknown>(raw: string | undefined): T | null;
46
+ //# sourceMappingURL=local-dev.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"local-dev.d.ts","sourceRoot":"","sources":["../../src/utils/local-dev.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,wBAAgB,UAAU,IAAI,OAAO,CAIpC;AAKD;;;;;;;;;;GAUG;AACH,wBAAgB,0BAA0B,IAAI;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,CAclF;AAED;;;;;;;;;GASG;AACH,wBAAgB,oBAAoB,IAAI,MAAM,CAU7C;AAED;;;;;;;;;GASG;AACH,wBAAgB,mBAAmB,CAAC,CAAC,GAAG,OAAO,EAAE,GAAG,EAAE,MAAM,GAAG,SAAS,GAAG,CAAC,GAAG,IAAI,CAYlF"}
@@ -0,0 +1,96 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.isLocalDev = isLocalDev;
4
+ exports.composeSandboxOutboundAuth = composeSandboxOutboundAuth;
5
+ exports.resolveSandboxOrigin = resolveSandboxOrigin;
6
+ exports.parseSudaWebUserEnv = parseSudaWebUserEnv;
7
+ /**
8
+ * 本地开发总开关。
9
+ *
10
+ * 由 `dev-local.sh`(平台 CLI `miaoda app sync` 同步到项目)export `MIAODA_LOCAL_DEV=1`。
11
+ * 沙箱 dev / 生产都不设此 env,所以本地专属逻辑(view-context 占位填充、__runtime__ 反代沙箱)
12
+ * 只在用户本机 `npm run dev:local` 时启用,沙箱 / 生产行为完全不受影响。
13
+ */
14
+ function isLocalDev() {
15
+ if (process.env.NODE_ENV === 'production')
16
+ return false;
17
+ const flag = process.env.MIAODA_LOCAL_DEV;
18
+ return flag === '1' || flag === 'true';
19
+ }
20
+ /** 本地常量 csrf token —— sandbox 是 double-submit 模式(cookie===header 即放行),本地随便定一个一致值即可。 */
21
+ const LOCAL_CSRF_TOKEN = 'local-dev-csrf';
22
+ /**
23
+ * 反代沙箱时的认证组装。两条入口:
24
+ * - 新流(推荐):env `FORCE_AUTHN_PREVIEW_SESSION_ID` —— 后端下发的单值 session(实际是
25
+ * X-Force-Runtime-Session 的值)。SDK 自动拼 cookie,suda-csrf-token 用本地常量。
26
+ * - 老流(兼容):env `SANDBOX_COOKIE` —— 用户从浏览器手抠的完整 cookie 字符串(包含
27
+ * X-Force-Runtime-Session / suda-csrf-token / suda_web_did 等)。原样透传,suda-csrf-token
28
+ * 从其中正则提取作为出向 x-suda-csrf-token header。
29
+ *
30
+ * 两个都给的话 `SANDBOX_COOKIE` 优先("已显式拼好"信号更强)。两个都缺的话返回空字符串
31
+ * (local dev 跑不通,但不抛错——交给上层 `localDev && sandboxBase` 条件兜底)。
32
+ */
33
+ function composeSandboxOutboundAuth() {
34
+ const legacyCookie = process.env.SANDBOX_COOKIE;
35
+ if (legacyCookie) {
36
+ const m = legacyCookie.match(/(?:^|;\s*)suda-csrf-token=([^;]+)/i);
37
+ return { cookie: legacyCookie, csrfToken: m ? m[1] : '' };
38
+ }
39
+ const sessionId = process.env.FORCE_AUTHN_PREVIEW_SESSION_ID;
40
+ if (sessionId) {
41
+ return {
42
+ cookie: `X-Force-Runtime-Session=${sessionId}; suda-csrf-token=${LOCAL_CSRF_TOKEN}`,
43
+ csrfToken: LOCAL_CSRF_TOKEN,
44
+ };
45
+ }
46
+ return { cookie: '', csrfToken: '' };
47
+ }
48
+ /**
49
+ * 解析沙箱反代的 target origin。两条入口:
50
+ * - 新流(推荐):env `MIAODA_DEV_PLATFORM_BASE` —— 后端下发的完整 URL,**可能带路径前缀**
51
+ * (例如 `https://ai-tenant-<app>-<sandbox>.aiforce-boe-preview.bytedance.net/app/<app>`)。
52
+ * SDK 抽 `new URL(...).origin` 拿 host,扔掉路径——避免反代 target 双前缀。
53
+ * - 老流(兼容):env `SANDBOX_COOKIE` 配套用的 `SANDBOX_PUBLIC_URL`(用户从沙箱信息手抠 host)。
54
+ *
55
+ * 两个都给的话 `MIAODA_DEV_PLATFORM_BASE` 优先。两个都缺的话返回空字符串
56
+ * (local dev 跑不通,但不抛错——交给上层 `localDev && sandboxBase` 条件兜底)。
57
+ */
58
+ function resolveSandboxOrigin() {
59
+ const platformBase = process.env.MIAODA_DEV_PLATFORM_BASE;
60
+ if (platformBase) {
61
+ try {
62
+ return new URL(platformBase).origin;
63
+ }
64
+ catch {
65
+ // 非合法 URL → 回落到 legacy
66
+ }
67
+ }
68
+ return process.env.SANDBOX_PUBLIC_URL || '';
69
+ }
70
+ /**
71
+ * 解析 `process.env.SUDA_WEBUSER`,容忍沙箱下发的 shell-quoted JSON。
72
+ *
73
+ * 沙箱 env pull 下发到 .env.local 的 SUDA_WEBUSER 是双引号包裹 + 内部 `\"` 转义;
74
+ * dotenv@17 剥外层引号后**不还原**内部 `\"`,导致 `process.env.SUDA_WEBUSER` 是
75
+ * `{\"user_id\":\"...\"}` 这种带反斜杠的字符串,直接 JSON.parse 会挂在
76
+ * `Expected property name or '}' in JSON at position 1`。
77
+ *
78
+ * 容错:先直接 parse;失败再 unescape `\"` 后 parse;都失败返回 null。
79
+ */
80
+ function parseSudaWebUserEnv(raw) {
81
+ if (!raw)
82
+ return null;
83
+ try {
84
+ return JSON.parse(raw);
85
+ }
86
+ catch {
87
+ // fall through to unescape attempt
88
+ }
89
+ try {
90
+ return JSON.parse(raw.replace(/\\"/g, '"'));
91
+ }
92
+ catch {
93
+ return null;
94
+ }
95
+ }
96
+ //# sourceMappingURL=local-dev.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"local-dev.js","sourceRoot":"","sources":["../../src/utils/local-dev.ts"],"names":[],"mappings":";;AAOA,gCAIC;AAgBD,gEAcC;AAYD,oDAUC;AAYD,kDAYC;AAvFD;;;;;;GAMG;AACH,SAAgB,UAAU;IACxB,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,YAAY;QAAE,OAAO,KAAK,CAAC;IACxD,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC;IAC1C,OAAO,IAAI,KAAK,GAAG,IAAI,IAAI,KAAK,MAAM,CAAC;AACzC,CAAC;AAED,uFAAuF;AACvF,MAAM,gBAAgB,GAAG,gBAAgB,CAAC;AAE1C;;;;;;;;;;GAUG;AACH,SAAgB,0BAA0B;IACxC,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC;IAChD,IAAI,YAAY,EAAE,CAAC;QACjB,MAAM,CAAC,GAAG,YAAY,CAAC,KAAK,CAAC,oCAAoC,CAAC,CAAC;QACnE,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;IAC5D,CAAC;IACD,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,8BAA8B,CAAC;IAC7D,IAAI,SAAS,EAAE,CAAC;QACd,OAAO;YACL,MAAM,EAAE,2BAA2B,SAAS,qBAAqB,gBAAgB,EAAE;YACnF,SAAS,EAAE,gBAAgB;SAC5B,CAAC;IACJ,CAAC;IACD,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC;AACvC,CAAC;AAED;;;;;;;;;GASG;AACH,SAAgB,oBAAoB;IAClC,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,CAAC,wBAAwB,CAAC;IAC1D,IAAI,YAAY,EAAE,CAAC;QACjB,IAAI,CAAC;YACH,OAAO,IAAI,GAAG,CAAC,YAAY,CAAC,CAAC,MAAM,CAAC;QACtC,CAAC;QAAC,MAAM,CAAC;YACP,uBAAuB;QACzB,CAAC;IACH,CAAC;IACD,OAAO,OAAO,CAAC,GAAG,CAAC,kBAAkB,IAAI,EAAE,CAAC;AAC9C,CAAC;AAED;;;;;;;;;GASG;AACH,SAAgB,mBAAmB,CAAc,GAAuB;IACtE,IAAI,CAAC,GAAG;QAAE,OAAO,IAAI,CAAC;IACtB,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAM,CAAC;IAC9B,CAAC;IAAC,MAAM,CAAC;QACP,mCAAmC;IACrC,CAAC;IACD,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAM,CAAC;IACnD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lark-apaas/coding-preset-vite-react",
3
- "version": "1.0.8",
3
+ "version": "1.0.9-alpha.1",
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",