@lark-apaas/coding-vite-preset 1.0.7-alpha.2 → 1.0.7-alpha.20

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.
@@ -1 +1 @@
1
- {"version":3,"file":"preset.d.ts","sourceRoot":"","sources":["../src/preset.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,UAAU,EAAyB,MAAM,MAAM,CAAC;AAwC9D,MAAM,WAAW,gCAAgC;IAC/C,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,2CAA2C;IAC3C,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,uBAAuB;IACvB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,oCAAoC;IACpC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,4CAA4C;IAC5C,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAUD,wBAAgB,yBAAyB,CACvC,OAAO,EAAE,gCAAgC,GACxC,UAAU,CAsgBZ"}
1
+ {"version":3,"file":"preset.d.ts","sourceRoot":"","sources":["../src/preset.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,UAAU,EAAyB,MAAM,MAAM,CAAC;AAuD9D,MAAM,WAAW,gCAAgC;IAC/C,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,2CAA2C;IAC3C,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,uBAAuB;IACvB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,oCAAoC;IACpC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,4CAA4C;IAC5C,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAUD,wBAAgB,yBAAyB,CACvC,OAAO,EAAE,gCAAgC,GACxC,UAAU,CA8hBZ"}
package/lib/preset.js CHANGED
@@ -46,6 +46,7 @@ const vite_1 = __importDefault(require("@tailwindcss/vite"));
46
46
  // to avoid requiring their transitive dependencies (e.g. express) at config load time.
47
47
  // They are only needed in dev mode.
48
48
  const vite_client_patch_plugin_1 = require("./vite-plugins/vite-client-patch-plugin");
49
+ const capabilities_bundle_plugin_1 = require("./vite-plugins/capabilities-bundle-plugin");
49
50
  // routeParserPlugin is loaded dynamically since it depends on @lark-apaas/devtool-kits
50
51
  const slardar_plugin_1 = require("./vite-plugins/slardar-plugin");
51
52
  const view_context_plugin_1 = require("./vite-plugins/view-context-plugin");
@@ -59,6 +60,20 @@ const snapdom_proxy_1 = require("./utils/snapdom-proxy");
59
60
  const hmr_timing_1 = require("./utils/hmr-timing");
60
61
  const ws_watchdog_plugin_1 = require("./vite-plugins/ws-watchdog-plugin");
61
62
  const miaoda_fonts_mirror_plugin_1 = require("./vite-plugins/miaoda-fonts-mirror-plugin");
63
+ const health_middleware_plugin_1 = require("./vite-plugins/health-middleware-plugin");
64
+ /**
65
+ * 兼容两种模板 layout 的路径解析:
66
+ * - 老全栈模板:`client/X` 存在(前后端共存时代)
67
+ * - 新 jsPage 模板:`X` 在项目根(无 client/ 包装)
68
+ *
69
+ * 优先用 `client/<rel>`(如果存在),否则降级到 `<rel>`。
70
+ */
71
+ function resolveClientPath(rootDir, rel) {
72
+ const legacy = path_1.default.resolve(rootDir, 'client', rel);
73
+ if (fs_1.default.existsSync(legacy))
74
+ return legacy;
75
+ return path_1.default.resolve(rootDir, rel);
76
+ }
62
77
  function sendBackendUnavailable502(_err, _req, res) {
63
78
  if (res.headersSent)
64
79
  return;
@@ -83,6 +98,11 @@ function createRecommendViteConfig(options) {
83
98
  const { isDev = true, needRoutes = true, clientBasePath = '', publicPath = '', codeSplitting = true, } = options;
84
99
  const rootDir = process.cwd();
85
100
  const serverPort = process.env.SERVER_PORT || '3000';
101
+ // 从 package.json mclaw.features 推导应用类型;jsPage(client) 没有 server,
102
+ // 不应注入 /api、/__innerapi__、HTML→server 之类的 proxy(否则会被转到老沙箱
103
+ // 的 mock-health 上拿到 "ok" 占位响应)
104
+ const appType = (0, health_middleware_plugin_1.detectAppType)(rootDir);
105
+ const hasServer = appType !== 'client';
86
106
  const appFlags = readAppFlags(rootDir);
87
107
  // Inspector can be disabled via environment variable
88
108
  const enableInspector = isDev && process.env.DISABLE_INSPECTOR !== 'true';
@@ -115,6 +135,10 @@ function createRecommendViteConfig(options) {
115
135
  const plugins = [
116
136
  // Cloud env patch: suppress auto page-reload on HMR WebSocket reconnect (dev only)
117
137
  isDev && (0, vite_client_patch_plugin_1.viteClientPatchPlugin)(),
138
+ // capabilities-bundle: 扫业务工程 capability JSON 注入为 'virtual:capabilities' 虚拟模块,
139
+ // 给 client-capability 的 central 预览态 body 提供完整 capability config。
140
+ // 目录优先级:老路径 server/capabilities/ 存在则用,否则用新路径 shared/capabilities/。
141
+ (0, capabilities_bundle_plugin_1.capabilitiesBundlePlugin)(),
118
142
  // Error overlay plugin - replaces Vite's native error overlay with custom one
119
143
  // Must be first to intercept config and disable native overlay
120
144
  // Only enabled in development mode
@@ -152,7 +176,9 @@ function createRecommendViteConfig(options) {
152
176
  try {
153
177
  const { routeParserPlugin } = require('./vite-plugins/route-parser-plugin');
154
178
  return [routeParserPlugin({
155
- appPath: './client/src/app.tsx',
179
+ appPath: fs_1.default.existsSync(path_1.default.resolve(rootDir, 'client/src/app.tsx'))
180
+ ? './client/src/app.tsx'
181
+ : './src/app.tsx',
156
182
  outputPath: path_1.default.resolve(rootDir, 'dist/client/routes.json'),
157
183
  serveBasePath: clientBasePath,
158
184
  ...(isDev ? { basePath: '' } : {}),
@@ -179,7 +205,9 @@ function createRecommendViteConfig(options) {
179
205
  // Performance monitoring plugin (Slardar + Tea)
180
206
  (0, slardar_plugin_1.slardarPlugin)({ bid: 'apaas_miaoda' }),
181
207
  // View context injection plugin
182
- (0, view_context_plugin_1.viewContextPlugin)(),
208
+ // dev 模式下用 clientBasePath 提取的 appId 直接拼真值,跳过 NestJS hbs 渲染。
209
+ // prod 模式 appId 字段为空,保留 `{{appId}}` 占位符给 vefaas runtime container 替换。
210
+ (0, view_context_plugin_1.viewContextPlugin)({ appId: isDev ? appId : undefined }),
183
211
  // 生产环境:为旧浏览器提供 polyfill(按需加载,现代浏览器零开销)
184
212
  !isDev && (0, polyfill_plugin_1.polyfillPlugin)(),
185
213
  // HTML output plugin - handles HTML path and dev mode disk write
@@ -197,6 +225,9 @@ function createRecommendViteConfig(options) {
197
225
  // 屏蔽 Google Fonts 在内网/部分客户端不可达导致的白屏。
198
226
  // 关闭:env MIAODA_FONTS_MIRROR_OFF=1
199
227
  (0, miaoda_fonts_mirror_plugin_1.miaodaFontsMirrorPlugin)(),
228
+ // 妙搭沙箱外壳的 health endpoint(仅 dev)
229
+ // 规范:飞书文档 - 妙搭应用 Health Check 接口规范
230
+ isDev && (0, health_middleware_plugin_1.healthMiddlewarePlugin)({ rootDir }),
200
231
  ];
201
232
  const config = {
202
233
  root: rootDir,
@@ -235,8 +266,13 @@ function createRecommendViteConfig(options) {
235
266
  'process.env.runtimeMode': JSON.stringify('fullstack'),
236
267
  'process.env.CLIENT_BASE_PATH': JSON.stringify(clientBasePath),
237
268
  '__APP_BASE_PATH__': JSON.stringify(clientBasePath),
238
- // rspack-preset 对齐:默认空字符串,使用 || 进行 fallback
239
- 'process.env.FORCE_FRAMEWORK_DOMAIN_MAIN': JSON.stringify(process.env.FORCE_FRAMEWORK_DOMAIN_MAIN ?? ''),
269
+ // 未设置时替换为字面量 `undefined` 而不是空字符串:
270
+ // - || fallback 不受影响("" 和 undefined 都 falsy)
271
+ // - ?? fallback 也能正确触发("" ?? x → "",undefined ?? x → x)
272
+ // client/inspector/origin.ts、lite/toolkit/postMessage.ts 都用了 ?? 写法
273
+ 'process.env.FORCE_FRAMEWORK_DOMAIN_MAIN': process.env.FORCE_FRAMEWORK_DOMAIN_MAIN
274
+ ? JSON.stringify(process.env.FORCE_FRAMEWORK_DOMAIN_MAIN)
275
+ : 'undefined',
240
276
  'process.env.CWD': JSON.stringify(''),
241
277
  // Runtime injection flag for client-toolkit compatibility
242
278
  'process.env.__RUNTIME_INJECTED__': JSON.stringify('true'),
@@ -248,6 +284,11 @@ function createRecommendViteConfig(options) {
248
284
  // 路由定义,供客户端匹配 referer_path 和 api
249
285
  'process.env.__PAGE_ROUTE_DEFINITIONS__': JSON.stringify(JSON.stringify(pageRouteDefinitions)),
250
286
  'process.env.__API_ROUTE_DEFINITIONS__': JSON.stringify(JSON.stringify(apiRouteDefinitions)),
287
+ // 沙箱注入的妙搭后端 AppType enum(数字字符串),lite 的 Safety 徽标据此决定显隐
288
+ // (AppType=7 是 jsPage MODERN_APP,不显示「由妙搭搭建」徽标)
289
+ 'process.env.MIAODA_APP_TYPE': process.env.MIAODA_APP_TYPE
290
+ ? JSON.stringify(process.env.MIAODA_APP_TYPE)
291
+ : 'undefined',
251
292
  },
252
293
  server: {
253
294
  port: Number(process.env.CLIENT_DEV_PORT) || 8080,
@@ -282,7 +323,9 @@ function createRecommendViteConfig(options) {
282
323
  : {
283
324
  path: `/ws`,
284
325
  },
285
- proxy: {
326
+ // jsPage(client) 没 server,不需要 API / HTML proxy
327
+ // 否则 HTML 请求会被 proxy 到 mock-health 拿到 "ok" 占位响应
328
+ proxy: hasServer ? {
286
329
  // API proxy
287
330
  [`${clientBasePath}/api`]: {
288
331
  target: `http://localhost:${serverPort}`,
@@ -326,7 +369,7 @@ function createRecommendViteConfig(options) {
326
369
  },
327
370
  }
328
371
  : {}),
329
- },
372
+ } : undefined,
330
373
  },
331
374
  build: {
332
375
  outDir: path_1.default.resolve(rootDir, 'dist/client'),
@@ -336,7 +379,7 @@ function createRecommendViteConfig(options) {
336
379
  // CSS 降级:使用 Vite 内置的 Lightning CSS 转换现代 CSS 特性
337
380
  cssTarget: ['ios12', 'safari12', 'chrome80'],
338
381
  rollupOptions: {
339
- input: path_1.default.resolve(rootDir, 'client/index.html'),
382
+ input: resolveClientPath(rootDir, 'index.html'),
340
383
  output: {
341
384
  // Code splitting: when disabled, all dynamic imports are inlined into single bundle
342
385
  // When enabled (default), Vite will split chunks based on dynamic imports
@@ -360,7 +403,7 @@ function createRecommendViteConfig(options) {
360
403
  // Copy public directory
361
404
  copyPublicDir: true,
362
405
  },
363
- publicDir: path_1.default.resolve(rootDir, 'client/public'),
406
+ publicDir: resolveClientPath(rootDir, 'public'),
364
407
  // Don't specify css.postcss here - let Vite pick up the project's postcss.config.js
365
408
  // This allows projects to configure their own PostCSS plugins (e.g., Tailwind v4)
366
409
  // Optimize deps for faster dev startup
@@ -377,22 +420,10 @@ function createRecommendViteConfig(options) {
377
420
  ...(enableInspector ? ['@lark-apaas/miaoda-inspector'] : []),
378
421
  ],
379
422
  exclude: [],
380
- // Pass define replacements to Rolldown for pre-bundling (Vite 8)
381
- // Without this, process.env.X in dependencies won't be replaced
382
- // @ts-expect-error Vite 8 rolldownOptions type defs may lag behind runtime support
383
- rolldownOptions: {
384
- define: {
385
- 'process.env.NODE_ENV': JSON.stringify(isDev ? 'development' : 'production'),
386
- // Use actual value if set, otherwise undefined for ?? fallback
387
- 'process.env.FORCE_FRAMEWORK_DOMAIN_MAIN': process.env
388
- .FORCE_FRAMEWORK_DOMAIN_MAIN
389
- ? JSON.stringify(process.env.FORCE_FRAMEWORK_DOMAIN_MAIN)
390
- : 'undefined',
391
- global: 'globalThis',
392
- // Align with rspack-preset
393
- 'process.env.__RUNTIME_INJECTED__': JSON.stringify('true'),
394
- },
395
- },
423
+ // 不在这里写 define —— vite 8 顶层 `define`(见上方 L273)
424
+ // 会自动应用到 optimizeDeps 预打包阶段,重复写在 rolldownOptions
425
+ // 反而触发 rolldown input options schema 校验 warning:
426
+ // "For the 'define'. Invalid key: Expected never but received 'define'."
396
427
  },
397
428
  };
398
429
  // Add custom middleware setup for dev server
@@ -453,7 +484,7 @@ function createRecommendViteConfig(options) {
453
484
  logDir: process.env.LOG_DIR || './logs',
454
485
  }),
455
486
  createOpenapiMiddleware({
456
- openapiFilePath: path_1.default.resolve(rootDir, './client/src/api/gen/openapi.json'),
487
+ openapiFilePath: resolveClientPath(rootDir, 'src/api/gen/openapi.json'),
457
488
  serverDir: path_1.default.resolve(rootDir, './server'),
458
489
  enableEnhancement: true,
459
490
  }),
@@ -466,47 +497,55 @@ function createRecommendViteConfig(options) {
466
497
  isDev,
467
498
  });
468
499
  // Proxy HTML requests to backend server
469
- server.middlewares.use((req, res, next) => {
470
- const devServerWhiteList = [
471
- '/@vite',
472
- '/@fs',
473
- '/__vite',
474
- '/@id',
475
- '/node_modules',
476
- '/dev/',
477
- '.hot-update',
478
- ];
479
- const isHtmlRequest = req.headers.accept?.includes('text/html');
480
- const pathname = req.url?.split('?')[0] || '';
481
- const isDevServerPath = devServerWhiteList.some((item) => pathname.includes(item));
482
- const isStaticAsset = /\.(js|css|png|jpg|jpeg|gif|svg|ico|woff|woff2|ttf|eot)$/i.test(pathname);
483
- if (isHtmlRequest && !isDevServerPath && !isStaticAsset) {
484
- const http = require('http');
485
- const proxyReq = http.request({
486
- hostname: 'localhost',
487
- port: serverPort,
488
- path: req.url,
489
- method: req.method,
490
- headers: req.headers,
491
- }, (proxyRes) => {
492
- res.writeHead(proxyRes.statusCode || 200, proxyRes.headers);
493
- proxyRes.pipe(res);
494
- });
495
- proxyReq.on('error', (err) => {
496
- handleDevProxyError(err, req, res, {
497
- target: `http://localhost:${serverPort}`,
500
+ // 仅在有 server 的应用类型(fullstack)下启用;jsPage(client) server,
501
+ // vite 自己处理 SPA fallback 即可(HTML 命中 index.html)
502
+ if (hasServer) {
503
+ server.middlewares.use((req, res, next) => {
504
+ const devServerWhiteList = [
505
+ '/@vite',
506
+ '/@fs',
507
+ '/__vite',
508
+ '/@id',
509
+ '/node_modules',
510
+ '/dev/',
511
+ '.hot-update',
512
+ ];
513
+ const isHtmlRequest = req.headers.accept?.includes('text/html');
514
+ const pathname = req.url?.split('?')[0] || '';
515
+ const isDevServerPath = devServerWhiteList.some((item) => pathname.includes(item));
516
+ const isStaticAsset = /\.(js|css|png|jpg|jpeg|gif|svg|ico|woff|woff2|ttf|eot)$/i.test(pathname);
517
+ if (isHtmlRequest && !isDevServerPath && !isStaticAsset) {
518
+ const http = require('http');
519
+ const proxyReq = http.request({
520
+ hostname: 'localhost',
521
+ port: serverPort,
522
+ path: req.url,
523
+ method: req.method,
524
+ headers: req.headers,
525
+ }, (proxyRes) => {
526
+ res.writeHead(proxyRes.statusCode || 200, proxyRes.headers);
527
+ proxyRes.pipe(res);
498
528
  });
499
- });
500
- req.pipe(proxyReq);
501
- }
502
- else {
503
- next();
504
- }
505
- });
529
+ proxyReq.on('error', (err) => {
530
+ handleDevProxyError(err, req, res, {
531
+ target: `http://localhost:${serverPort}`,
532
+ });
533
+ });
534
+ req.pipe(proxyReq);
535
+ }
536
+ else {
537
+ next();
538
+ }
539
+ });
540
+ }
506
541
  }
507
- catch {
508
- // devtool-kits not available, skip dev middlewares
509
- console.warn('[coding-vite-preset] @lark-apaas/devtool-kits not found, skipping dev middlewares');
542
+ catch (error) {
543
+ // devtool-kits 加载失败时输出详细诊断,避免静默吞错导致整套 dev middleware 全死
544
+ const msg = error instanceof Error ? error.message : String(error);
545
+ console.warn(`[coding-vite-preset] @lark-apaas/devtool-kits 加载失败,跳过 dev middlewares\n` +
546
+ ` 错误: ${msg}\n` +
547
+ ` 影响: /dev/logs/* /dev/openapi.json 等 endpoint 不可用\n` +
548
+ ` 排查: ls node_modules/@lark-apaas/devtool-kits;若不存在则 install 没装,若存在则 ESM resolve 问题`);
510
549
  }
511
550
  // Call original configureServer if exists
512
551
  if (originalConfigureServer) {
package/lib/preset.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"preset.js","sourceRoot":"","sources":["../src/preset.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"preset.js","sourceRoot":"","sources":["../src/preset.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ import type { Plugin } from 'vite';
2
+ export interface CapabilitiesBundlePluginOptions {
3
+ /**
4
+ * 覆盖默认扫描目录。不传时按方案默认:老路径存在则用老路径,否则用新路径。
5
+ */
6
+ dir?: string;
7
+ }
8
+ export declare function capabilitiesBundlePlugin(opts?: CapabilitiesBundlePluginOptions): Plugin;
9
+ //# sourceMappingURL=capabilities-bundle-plugin.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"capabilities-bundle-plugin.d.ts","sourceRoot":"","sources":["../../src/vite-plugins/capabilities-bundle-plugin.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,MAAM,EAAiC,MAAM,MAAM,CAAC;AAuBlE,MAAM,WAAW,+BAA+B;IAC9C;;OAEG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED,wBAAgB,wBAAwB,CAAC,IAAI,CAAC,EAAE,+BAA+B,GAAG,MAAM,CAuJvF"}
@@ -0,0 +1,170 @@
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.capabilitiesBundlePlugin = capabilitiesBundlePlugin;
7
+ const fs_1 = __importDefault(require("fs"));
8
+ const path_1 = __importDefault(require("path"));
9
+ /**
10
+ * 把业务工程 capability JSON 打包成 `virtual:capabilities` 虚拟模块。
11
+ * SDK (`client-capability`) 通过 `import map from 'virtual:capabilities'` 拿到完整
12
+ * config map,喂给 plugin_server 预览态 body。
13
+ *
14
+ * 目录约定(方案文档 § 配置目录迁移):
15
+ * - 新约定:`shared/capabilities/*.json`
16
+ * - 旧路径:`server/capabilities/*.json`
17
+ * - 兜底规则:**老路径存在则读老路径,否则读新路径**(方案原话:"旧路径存在
18
+ * 则读旧路径,否则读新路径"),便于策略层 / agent_tool 渐进迁移
19
+ *
20
+ * dev 态 watch 两个目录,文件变更触发 full-reload 让虚拟模块重 load。
21
+ *
22
+ * 方案文档: https://bytedance.larkoffice.com/wiki/WtW5wJ7wli9BImkExyJcjR5znfx
23
+ */
24
+ const VIRTUAL_ID = 'virtual:capabilities';
25
+ const RESOLVED_VIRTUAL_ID = '\0' + VIRTUAL_ID;
26
+ const OLD_DIR = 'server/capabilities';
27
+ const NEW_DIR = 'shared/capabilities';
28
+ function capabilitiesBundlePlugin(opts) {
29
+ /**
30
+ * 业务工程根目录。Vite `configResolved` 后用 `config.root`;之前(含 `config()` /
31
+ * `optimizeDeps.esbuildOptions.plugins` 注册阶段)回退 `process.cwd()`。
32
+ *
33
+ * 不能直接用 `process.cwd()`:Vite depOptimizer 把 esbuild 的 `absWorkingDir`
34
+ * 设为 `config.root`,但我们的 onLoad 回调里 Node 视角的 `process.cwd()` 还是
35
+ * 启动进程的 cwd —— 妙搭沙箱里 vite 通常从父进程起、靠 vite config 的 `root`
36
+ * 指向业务工程,两者不一致 → loadAll() 扫错目录 → 注入空 map → SDK load() 抛
37
+ * CapabilityNotFoundError。
38
+ */
39
+ let projectRoot = process.cwd();
40
+ function resolveDir() {
41
+ if (opts?.dir)
42
+ return path_1.default.resolve(projectRoot, opts.dir);
43
+ const oldAbs = path_1.default.resolve(projectRoot, OLD_DIR);
44
+ if (fs_1.default.existsSync(oldAbs))
45
+ return oldAbs;
46
+ return path_1.default.resolve(projectRoot, NEW_DIR);
47
+ }
48
+ function loadAll() {
49
+ const map = {};
50
+ const abs = resolveDir();
51
+ if (!fs_1.default.existsSync(abs))
52
+ return map;
53
+ for (const f of fs_1.default.readdirSync(abs)) {
54
+ if (!f.endsWith('.json'))
55
+ continue;
56
+ try {
57
+ const cfg = JSON.parse(fs_1.default.readFileSync(path_1.default.join(abs, f), 'utf-8'));
58
+ if (cfg?.id)
59
+ map[cfg.id] = cfg;
60
+ }
61
+ catch (e) {
62
+ // eslint-disable-next-line no-console
63
+ console.warn(`[capabilities-bundle] skip invalid json: ${path_1.default.join(abs, f)}: ${e instanceof Error ? e.message : String(e)}`);
64
+ }
65
+ }
66
+ return map;
67
+ }
68
+ return {
69
+ name: 'lark-apaas:capabilities-bundle',
70
+ configResolved(config) {
71
+ projectRoot = config.root;
72
+ },
73
+ /**
74
+ * 把 `virtual:capabilities` 的解析塞进 depOptimizer 的 esbuild plugin。
75
+ *
76
+ * 历史:早期方案是把 client-capability/toolkit/toolkit-lite 整个 exclude,
77
+ * 强制走 Vite 主 pipeline。但实际这几个包的 dist 根本没 `import 'virtual:capabilities'`
78
+ * (只是源码注释提到,没落地),exclude 是死设计;副作用是 lite 被 exclude 后
79
+ * 它所有 CJS 子依赖(observable-web 这种 `exports.X = ...` 形态的包)也失去
80
+ * pre-bundle,浏览器以 ESM 形态 `import { AppEnv } from '@lark-apaas/observable-web'`
81
+ * 直接拉原始 CJS 文件 → "does not provide an export named 'AppEnv'" 白屏。
82
+ *
83
+ * 现状:删 exclude,让 Vite 正常 pre-bundle 所有依赖(CJS 自动转 ESM);
84
+ * esbuild 兜底 plugin 处理 client-capability 被 inline 进 lite pre-bundle 产物
85
+ * 时的 `import virtual:capabilities`。注意 onLoad 回调里 `loadAll()` 用闭包
86
+ * 里的 `projectRoot`,`configResolved` 已经把它从 `process.cwd()` 升级到
87
+ * `config.root`,扫到的就是业务工程实际目录。
88
+ */
89
+ config() {
90
+ return {
91
+ optimizeDeps: {
92
+ esbuildOptions: {
93
+ plugins: [
94
+ {
95
+ name: 'lark-apaas:capabilities-bundle-esbuild',
96
+ setup(build) {
97
+ build.onResolve({ filter: /^virtual:capabilities$/ }, (args) => ({
98
+ path: args.path,
99
+ namespace: 'lark-apaas-virtual-capabilities',
100
+ }));
101
+ build.onLoad({ filter: /.*/, namespace: 'lark-apaas-virtual-capabilities' }, () => ({
102
+ contents: `export default ${JSON.stringify(loadAll())};`,
103
+ loader: 'js',
104
+ }));
105
+ },
106
+ },
107
+ ],
108
+ },
109
+ },
110
+ };
111
+ },
112
+ resolveId(id) {
113
+ if (id === VIRTUAL_ID)
114
+ return RESOLVED_VIRTUAL_ID;
115
+ return null;
116
+ },
117
+ load(id) {
118
+ if (id !== RESOLVED_VIRTUAL_ID)
119
+ return null;
120
+ return `export default ${JSON.stringify(loadAll())};`;
121
+ },
122
+ configureServer(server) {
123
+ // 两个目录都 watch:用户从老路径迁到新路径中间态,新增 / 删除文件都能感知
124
+ const watchDirs = opts?.dir
125
+ ? [path_1.default.resolve(projectRoot, opts.dir)]
126
+ : [path_1.default.resolve(projectRoot, OLD_DIR), path_1.default.resolve(projectRoot, NEW_DIR)];
127
+ for (const d of watchDirs) {
128
+ if (fs_1.default.existsSync(d))
129
+ server.watcher.add(d);
130
+ }
131
+ /**
132
+ * capability JSON 变更后必须触发**完整 depOptimizer 重跑**,不能只 invalidate
133
+ * 虚拟模块 + full-reload。原因:业务代码 `import 'virtual:capabilities'` 走 Vite
134
+ * 主 pipeline,invalidate 就能更新;但 client-capability SDK 的 `import virtual:
135
+ * capabilities` 是被 esbuild 内联进 `.vite/deps/@lark-apaas_client-toolkit-lite.js`
136
+ * 的 pre-bundle 产物里,仅在 dev server 启动 / depOptimizer 触发时执行一次。
137
+ * 新增 capability JSON 不重 bundle 的话,lite 产物里的 map 字面值永远停留在
138
+ * 启动那一刻,SDK load() 检查 not-found 抛 CapabilityNotFoundError。
139
+ *
140
+ * `server.restart(true)` 重启 dev server 且强制 re-optimize(等同 `--force`),
141
+ * 让 esbuild 重新跑、re-trigger 我们的 onLoad、注入最新 map。debounce 100ms 是
142
+ * 防止 agent 批量写 capability JSON 时短时间多次 restart 把开发态搞挂。
143
+ */
144
+ let restartTimer = null;
145
+ const handle = (file) => {
146
+ if (!file.endsWith('.json'))
147
+ return;
148
+ if (!watchDirs.some((d) => file.startsWith(d)))
149
+ return;
150
+ const mod = server.moduleGraph.getModuleById(RESOLVED_VIRTUAL_ID);
151
+ if (mod)
152
+ server.moduleGraph.invalidateModule(mod);
153
+ if (restartTimer)
154
+ clearTimeout(restartTimer);
155
+ restartTimer = setTimeout(() => {
156
+ restartTimer = null;
157
+ server.config.logger.info(`[capabilities-bundle] capability changed (${path_1.default.basename(file)}), re-optimizing deps...`, { timestamp: true });
158
+ server.restart(true).catch((e) => {
159
+ server.config.logger.warn(`[capabilities-bundle] restart failed, fallback to full-reload: ${e instanceof Error ? e.message : String(e)}`);
160
+ server.ws.send({ type: 'full-reload', path: '*' });
161
+ });
162
+ }, 100);
163
+ };
164
+ server.watcher.on('add', handle);
165
+ server.watcher.on('change', handle);
166
+ server.watcher.on('unlink', handle);
167
+ },
168
+ };
169
+ }
170
+ //# sourceMappingURL=capabilities-bundle-plugin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"capabilities-bundle-plugin.js","sourceRoot":"","sources":["../../src/vite-plugins/capabilities-bundle-plugin.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,43 @@
1
+ import type { Plugin } from 'vite';
2
+ /**
3
+ * Health Check Middleware Plugin
4
+ *
5
+ * 给妙搭外壳提供统一的 health endpoint,让外壳能判断"应用是否就绪"。
6
+ * 接口规范见飞书文档 - 妙搭应用 Health Check 接口规范。
7
+ *
8
+ * Response shape:
9
+ * { ready: true } // dev server 已就绪
10
+ * { ready: false, error: 'starting' } // dev server 还在启动
11
+ *
12
+ * 外壳判断逻辑:
13
+ * - HTTP connection refused / timeout → Case ① dev server 没拉起来 → 重启沙箱
14
+ * - 200 OK + ready: true → 正常进入应用
15
+ * - 200 OK + ready: false → 还在启动,按 error 描述判断,必要时 poll 重试
16
+ *
17
+ * 不归本接口管:
18
+ * - Case ②a vite compile error
19
+ * → 浏览器侧通过 vite-client 的 vite:error overlay + iframe postMessage 上报
20
+ * - Case ②b runtime error(React 渲染 throw 等)
21
+ * → 浏览器侧 ErrorBoundary 接住 → submitPostMessage RenderError / SELECTED_LOG
22
+ * - Case ③ 资源加载失败(网络/CDN 问题)
23
+ * → 浏览器侧 fetch / script onerror 独立上报
24
+ *
25
+ * 设计取舍:放弃 server 侧的 compile error 监听(需要 monkey-patch
26
+ * server.ws.send / server.hot.send 拦截 vite 内部 broadcast,太脏)。
27
+ * 编译错误状态由浏览器侧自己感知 + 上报,更直接。
28
+ */
29
+ interface HealthMiddlewarePluginOptions {
30
+ /** 项目根目录,用于 detectAppType(preset 侧仍在使用) */
31
+ rootDir: string;
32
+ /** Health endpoint 路径,默认 /dev/health */
33
+ endpoint?: string;
34
+ }
35
+ export type AppType = 'client' | 'fullstack' | 'server';
36
+ /**
37
+ * 从 package.json mclaw.features 推导应用类型(client / fullstack / server)。
38
+ * 仅供 preset 内部判断是否注入 server proxy,不再出现在 health 返回里。
39
+ */
40
+ export declare function detectAppType(rootDir: string): AppType;
41
+ export declare function healthMiddlewarePlugin(options: HealthMiddlewarePluginOptions): Plugin;
42
+ export default healthMiddlewarePlugin;
43
+ //# sourceMappingURL=health-middleware-plugin.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"health-middleware-plugin.d.ts","sourceRoot":"","sources":["../../src/vite-plugins/health-middleware-plugin.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,MAAM,EAAiB,MAAM,MAAM,CAAC;AAElD;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAEH,UAAU,6BAA6B;IACrC,2CAA2C;IAC3C,OAAO,EAAE,MAAM,CAAC;IAChB,wCAAwC;IACxC,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,MAAM,OAAO,GAAG,QAAQ,GAAG,WAAW,GAAG,QAAQ,CAAC;AAExD;;;GAGG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAgBtD;AAMD,wBAAgB,sBAAsB,CACpC,OAAO,EAAE,6BAA6B,GACrC,MAAM,CAqCR;AAED,eAAe,sBAAsB,CAAC"}
@@ -0,0 +1,66 @@
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.detectAppType = detectAppType;
7
+ exports.healthMiddlewarePlugin = healthMiddlewarePlugin;
8
+ const fs_1 = __importDefault(require("fs"));
9
+ const path_1 = __importDefault(require("path"));
10
+ /**
11
+ * 从 package.json mclaw.features 推导应用类型(client / fullstack / server)。
12
+ * 仅供 preset 内部判断是否注入 server proxy,不再出现在 health 返回里。
13
+ */
14
+ function detectAppType(rootDir) {
15
+ try {
16
+ const pkg = JSON.parse(fs_1.default.readFileSync(path_1.default.join(rootDir, 'package.json'), 'utf-8'));
17
+ const features = Array.isArray(pkg?.mclaw?.features)
18
+ ? pkg.mclaw.features
19
+ : ['client'];
20
+ const hasClient = features.includes('client');
21
+ const hasServer = features.includes('server');
22
+ if (hasClient && hasServer)
23
+ return 'fullstack';
24
+ if (hasServer)
25
+ return 'server';
26
+ return 'client';
27
+ }
28
+ catch {
29
+ return 'client';
30
+ }
31
+ }
32
+ function healthMiddlewarePlugin(options) {
33
+ const endpoint = options.endpoint ?? '/dev/health';
34
+ let viteReady = false;
35
+ return {
36
+ name: 'fullstack-health-middleware',
37
+ apply: 'serve',
38
+ configureServer(server) {
39
+ // 探测 vite ready 信号:
40
+ // - httpServer 不存在 → middleware mode(被宿主 server 接管),认为已就绪
41
+ // - httpServer.listening 已为 true → 已经在 listen
42
+ // - 否则注册一次性 'listening' 回调,等 Node http.Server emit 时翻成 ready
43
+ const httpServer = server.httpServer;
44
+ if (!httpServer || httpServer.listening) {
45
+ viteReady = true;
46
+ }
47
+ else {
48
+ httpServer.once('listening', () => {
49
+ viteReady = true;
50
+ });
51
+ }
52
+ server.middlewares.use(endpoint, (req, res, next) => {
53
+ if (req.method && req.method !== 'GET') {
54
+ return next();
55
+ }
56
+ const payload = { ready: viteReady };
57
+ res.setHeader('Content-Type', 'application/json');
58
+ res.setHeader('Cache-Control', 'no-store');
59
+ res.statusCode = 200;
60
+ res.end(JSON.stringify(payload));
61
+ });
62
+ },
63
+ };
64
+ }
65
+ exports.default = healthMiddlewarePlugin;
66
+ //# sourceMappingURL=health-middleware-plugin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"health-middleware-plugin.js","sourceRoot":"","sources":["../../src/vite-plugins/health-middleware-plugin.ts"],"names":[],"mappings":";;;;;AA6CA,sCAgBC;AAMD,wDAuCC;AA1GD,4CAAoB;AACpB,gDAAwB;AAwCxB;;;GAGG;AACH,SAAgB,aAAa,CAAC,OAAe;IAC3C,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CACpB,YAAE,CAAC,YAAY,CAAC,cAAI,CAAC,IAAI,CAAC,OAAO,EAAE,cAAc,CAAC,EAAE,OAAO,CAAC,CAC7D,CAAC;QACF,MAAM,QAAQ,GAAa,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,EAAE,QAAQ,CAAC;YAC5D,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ;YACpB,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;QACf,MAAM,SAAS,GAAG,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;QAC9C,MAAM,SAAS,GAAG,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;QAC9C,IAAI,SAAS,IAAI,SAAS;YAAE,OAAO,WAAW,CAAC;QAC/C,IAAI,SAAS;YAAE,OAAO,QAAQ,CAAC;QAC/B,OAAO,QAAQ,CAAC;IAClB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,QAAQ,CAAC;IAClB,CAAC;AACH,CAAC;AAMD,SAAgB,sBAAsB,CACpC,OAAsC;IAEtC,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,IAAI,aAAa,CAAC;IAEnD,IAAI,SAAS,GAAG,KAAK,CAAC;IAEtB,OAAO;QACL,IAAI,EAAE,6BAA6B;QACnC,KAAK,EAAE,OAAO;QAEd,eAAe,CAAC,MAAqB;YACnC,oBAAoB;YACpB,4DAA4D;YAC5D,gDAAgD;YAChD,+DAA+D;YAC/D,MAAM,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;YACrC,IAAI,CAAC,UAAU,IAAI,UAAU,CAAC,SAAS,EAAE,CAAC;gBACxC,SAAS,GAAG,IAAI,CAAC;YACnB,CAAC;iBAAM,CAAC;gBACN,UAAU,CAAC,IAAI,CAAC,WAAW,EAAE,GAAG,EAAE;oBAChC,SAAS,GAAG,IAAI,CAAC;gBACnB,CAAC,CAAC,CAAC;YACL,CAAC;YAED,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE;gBAClD,IAAI,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,MAAM,KAAK,KAAK,EAAE,CAAC;oBACvC,OAAO,IAAI,EAAE,CAAC;gBAChB,CAAC;gBAED,MAAM,OAAO,GAAkB,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC;gBAEpD,GAAG,CAAC,SAAS,CAAC,cAAc,EAAE,kBAAkB,CAAC,CAAC;gBAClD,GAAG,CAAC,SAAS,CAAC,eAAe,EAAE,UAAU,CAAC,CAAC;gBAC3C,GAAG,CAAC,UAAU,GAAG,GAAG,CAAC;gBACrB,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC;YACnC,CAAC,CAAC,CAAC;QACL,CAAC;KACF,CAAC;AACJ,CAAC;AAED,kBAAe,sBAAsB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"runtime-injection-plugin.d.ts","sourceRoot":"","sources":["../../src/vite-plugins/runtime-injection-plugin.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAoC,MAAM,MAAM,CAAC;AAMrE,MAAM,WAAW,6BAA6B;IAC5C,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;;;OAGG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,wBAAgB,sBAAsB,CACpC,OAAO,GAAE,6BAAkC,GAC1C,MAAM,CA+ER;AAED,eAAe,sBAAsB,CAAC"}
1
+ {"version":3,"file":"runtime-injection-plugin.d.ts","sourceRoot":"","sources":["../../src/vite-plugins/runtime-injection-plugin.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAoC,MAAM,MAAM,CAAC;AAMrE,MAAM,WAAW,6BAA6B;IAC5C,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;;;OAGG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,wBAAgB,sBAAsB,CACpC,OAAO,GAAE,6BAAkC,GAC1C,MAAM,CAkFR;AAED,eAAe,sBAAsB,CAAC"}
@@ -60,8 +60,11 @@ function runtimeInjectionPlugin(options = {}) {
60
60
  transform(code, id) {
61
61
  if (!enabled || isDev)
62
62
  return null;
63
- // 只处理入口文件 (client/src/index.tsx 或类似)
64
- if (!/[/\\]client[/\\]src[/\\]index\.(tsx?|jsx?)$/.test(id)) {
63
+ // 只处理入口文件,兼容两种 layout:
64
+ // - 老全栈模板:client/src/index.tsx
65
+ // - 新 jsPage 模板:src/index.tsx(无 client/ 包装)
66
+ // server 端文件不经过 vite transform,正则匹配到 src/index.tsx 是安全的
67
+ if (!/(?:[/\\]client)?[/\\]src[/\\]index\.(tsx?|jsx?)$/.test(id)) {
65
68
  return null;
66
69
  }
67
70
  // 检查是否已经包含 runtime import
@@ -1 +1 @@
1
- {"version":3,"file":"runtime-injection-plugin.js","sourceRoot":"","sources":["../../src/vite-plugins/runtime-injection-plugin.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;GAUG;;AAiBH,wDAiFC;AA9FD,MAAM,cAAc,GAAG,oCAAoC,CAAC;AAC5D,MAAM,YAAY,GAAG,cAAc,CAAC;AACpC,MAAM,cAAc,GAAG,WAAW,cAAc,MAAM,CAAC;AAWvD,SAAgB,sBAAsB,CACpC,UAAyC,EAAE;IAE3C,MAAM,EAAE,OAAO,GAAG,IAAI,EAAE,cAAc,GAAG,EAAE,EAAE,GAAG,OAAO,CAAC;IACxD,MAAM,WAAW,GAAG,cAAc,GAAG,YAAY,CAAC;IAClD,IAAI,KAAK,GAAG,IAAI,CAAC;IAEjB,OAAO;QACL,IAAI,EAAE,6BAA6B;QACnC,OAAO,EAAE,KAAK;QAEd,MAAM,CAAC,MAAM,EAAE,EAAE,OAAO,EAAE;YACxB,IAAI,CAAC,OAAO;gBAAE,OAAO;YACrB,KAAK,GAAG,OAAO,KAAK,OAAO,CAAC;YAE5B,OAAO;gBACL,YAAY,EAAE;oBACZ,OAAO,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,YAAY,EAAE,OAAO,IAAI,EAAE,CAAC,EAAE,cAAc,CAAC;iBACnE;aACF,CAAC;QACJ,CAAC;QAED,6BAA6B;QAC7B,eAAe,CAAC,MAAqB;YACnC,IAAI,CAAC,OAAO;gBAAE,OAAO;YAErB,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE;gBAC9C,IAAI,GAAG,CAAC,GAAG,KAAK,WAAW;oBAAE,OAAO,IAAI,EAAE,CAAC;gBAE3C,IAAI,CAAC;oBACH,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,gBAAgB,CAAC,cAAc,CAAC,CAAC;oBACjF,IAAI,MAAM,EAAE,CAAC;wBACX,GAAG,CAAC,SAAS,CAAC,cAAc,EAAE,wBAAwB,CAAC,CAAC;wBACxD,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;oBACvB,CAAC;yBAAM,CAAC;wBACN,GAAG,CAAC,UAAU,GAAG,GAAG,CAAC;wBACrB,GAAG,CAAC,GAAG,CAAC,2BAA2B,CAAC,CAAC;oBACvC,CAAC;gBACH,CAAC;gBAAC,OAAO,CAAC,EAAE,CAAC;oBACX,GAAG,CAAC,UAAU,GAAG,GAAG,CAAC;oBACrB,GAAG,CAAC,GAAG,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC;gBAC5B,CAAC;YACH,CAAC,CAAC,CAAC;QACL,CAAC;QAED,kCAAkC;QAClC,SAAS,CAAC,IAAI,EAAE,EAAE;YAChB,IAAI,CAAC,OAAO,IAAI,KAAK;gBAAE,OAAO,IAAI,CAAC;YAEnC,qCAAqC;YACrC,IAAI,CAAC,6CAA6C,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC;gBAC5D,OAAO,IAAI,CAAC;YACd,CAAC;YAED,0BAA0B;YAC1B,IAAI,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC;gBAClC,OAAO,IAAI,CAAC;YACd,CAAC;YAED,yBAAyB;YACzB,OAAO;gBACL,IAAI,EAAE,cAAc,GAAG,IAAI;gBAC3B,GAAG,EAAE,IAAI;aACV,CAAC;QACJ,CAAC;QAED,4BAA4B;QAC5B,kBAAkB,CAAC,IAAY;YAC7B,IAAI,CAAC,OAAO,IAAI,CAAC,KAAK;gBAAE,OAAO,IAAI,CAAC;YAEpC,MAAM,IAAI,GAAwB;gBAChC;oBACE,GAAG,EAAE,QAAQ;oBACb,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAE,WAAW,EAAE;oBAC3C,QAAQ,EAAE,cAAc;iBACzB;aACF,CAAC;YAEF,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;QACxB,CAAC;KACF,CAAC;AACJ,CAAC;AAED,kBAAe,sBAAsB,CAAC"}
1
+ {"version":3,"file":"runtime-injection-plugin.js","sourceRoot":"","sources":["../../src/vite-plugins/runtime-injection-plugin.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,28 @@
1
1
  import type { Plugin } from 'vite';
2
- export declare function viewContextPlugin(): Plugin;
2
+ /**
3
+ * 在 HTML head 注入 inline script,把登录态 / 应用信息挂到 window,让前端代码
4
+ * 同步拿到 appId / csrfToken / environment 等启动期上下文。
5
+ *
6
+ * 老全栈链路靠 NestJS hbs 模板引擎在 server 渲染时把 `{{appId}}` 占位符替换为
7
+ * res.locals 真值。jsPage 没有 server 渲染层(vite dev 直接 serve、vefaas 直接
8
+ * serve 静态 HTML),所以本 plugin 改为 **inline script 浏览器 runtime 自解析**:
9
+ *
10
+ * - appId 从 URL pathname (/app/<appId>/) 或 hostname (ai-tenant-app_xxx) 解析;
11
+ * caller 显式传入时用 caller 的值(preset 已经能从 clientBasePath 提取)
12
+ * - csrfToken 从 cookie `suda-csrf-token` 解析
13
+ * - environment 从 hostname 关键字推:boe → staging,pre → gray,否则 online
14
+ * - userId / tenantId 浏览器拿不到(来自 server 侧 `x-larkgw-suda-webuser` header),
15
+ * 留空字符串。业务侧需要时用 lite/useCurrentUserProfile 等 hook fetch
16
+ * - appName / appAvatar / appDescription 来自 platform API,留空。
17
+ * 业务侧用 lite/useAppInfo hook fetch
18
+ */
19
+ export interface ViewContextPluginOptions {
20
+ /**
21
+ * 显式传入的 appId override。preset 已从 clientBasePath(/app/<appId>)提取,
22
+ * 设置后 inline script 直接拼真值字面量,跳过 URL 解析。未设置则走 runtime self-resolve。
23
+ */
24
+ appId?: string;
25
+ }
26
+ export declare function viewContextPlugin(opts?: ViewContextPluginOptions): Plugin;
3
27
  export default viewContextPlugin;
4
28
  //# sourceMappingURL=view-context-plugin.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"view-context-plugin.d.ts","sourceRoot":"","sources":["../../src/vite-plugins/view-context-plugin.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAqB,MAAM,MAAM,CAAC;AAoBtD,wBAAgB,iBAAiB,IAAI,MAAM,CAmB1C;AAED,eAAe,iBAAiB,CAAC"}
1
+ {"version":3,"file":"view-context-plugin.d.ts","sourceRoot":"","sources":["../../src/vite-plugins/view-context-plugin.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAqB,MAAM,MAAM,CAAC;AAEtD;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,WAAW,wBAAwB;IACvC;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAwCD,wBAAgB,iBAAiB,CAAC,IAAI,CAAC,EAAE,wBAAwB,GAAG,MAAM,CAmBzE;AAED,eAAe,iBAAiB,CAAC"}
@@ -1,31 +1,50 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.viewContextPlugin = viewContextPlugin;
4
- function getViewContextScript() {
4
+ function getViewContextScript(opts = {}) {
5
+ const appIdExpr = opts.appId
6
+ ? JSON.stringify(opts.appId)
7
+ : `(function () {
8
+ var p = location.pathname.match(/\\/app\\/(app_[a-z0-9]+)/i);
9
+ if (p) return p[1];
10
+ var h = location.hostname.match(/app_[a-z0-9]+/i);
11
+ return h ? h[0] : '';
12
+ })()`;
5
13
  return `
6
- window.csrfToken = "{{csrfToken}}";
7
- window.userId = "{{userId}}";
8
- window.tenantId = "{{tenantId}}";
9
- window.appId = "{{appId}}";
10
- window.ENVIRONMENT = "{{environment}}";
11
- const appInfo = {
12
- name: "{{appName}}",
13
- avatar: "{{{appAvatar}}}",
14
- description: "{{appDescription}}",
15
- };
16
- if (appInfo.name) {
17
- window._appInfo = appInfo;
18
- }
14
+ // appId: caller override 或 URL 解析
15
+ window.appId = ${appIdExpr};
16
+
17
+ // csrfToken: cookie suda-csrf-token
18
+ window.csrfToken = (function () {
19
+ var m = document.cookie.match(/(?:^|;\\s*)suda-csrf-token=([^;]+)/);
20
+ return m ? decodeURIComponent(m[1]) : '';
21
+ })();
22
+
23
+ // environment: hostname 推
24
+ window.ENVIRONMENT = (function () {
25
+ var h = location.hostname;
26
+ if (h.indexOf('boe') !== -1) return 'staging';
27
+ if (h.indexOf('feishu-pre') !== -1 || h.indexOf('-pre.') !== -1) return 'gray';
28
+ return 'online';
29
+ })();
30
+
31
+ // userId / tenantId: server 侧 x-larkgw-suda-webuser header 才有,浏览器拿不到,
32
+ // 业务侧需要时用 lite/useCurrentUserProfile 等 hook 异步 fetch
33
+ window.userId = '';
34
+ window.tenantId = '';
35
+
36
+ // appInfo (name/avatar/description) 来自 platform API,业务侧用 lite/useAppInfo
37
+ // hook 异步 fetch;这里不预设,避免误用占位字符串
19
38
  `;
20
39
  }
21
- function viewContextPlugin() {
40
+ function viewContextPlugin(opts) {
22
41
  return {
23
42
  name: 'fullstack-view-context',
24
43
  transformIndexHtml(html) {
25
44
  const tags = [
26
45
  {
27
46
  tag: 'script',
28
- children: getViewContextScript(),
47
+ children: getViewContextScript(opts),
29
48
  injectTo: 'head-prepend',
30
49
  },
31
50
  ];
@@ -1 +1 @@
1
- {"version":3,"file":"view-context-plugin.js","sourceRoot":"","sources":["../../src/vite-plugins/view-context-plugin.ts"],"names":[],"mappings":";;AAoBA,8CAmBC;AArCD,SAAS,oBAAoB;IAC3B,OAAO;;;;;;;;;;;;;;KAcJ,CAAC;AACN,CAAC;AAED,SAAgB,iBAAiB;IAC/B,OAAO;QACL,IAAI,EAAE,wBAAwB;QAE9B,kBAAkB,CAAC,IAAI;YACrB,MAAM,IAAI,GAAwB;gBAChC;oBACE,GAAG,EAAE,QAAQ;oBACb,QAAQ,EAAE,oBAAoB,EAAE;oBAChC,QAAQ,EAAE,cAAc;iBACzB;aACF,CAAC;YAEF,OAAO;gBACL,IAAI;gBACJ,IAAI;aACL,CAAC;QACJ,CAAC;KACF,CAAC;AACJ,CAAC;AAED,kBAAe,iBAAiB,CAAC"}
1
+ {"version":3,"file":"view-context-plugin.js","sourceRoot":"","sources":["../../src/vite-plugins/view-context-plugin.ts"],"names":[],"mappings":";;AAiEA,8CAmBC;AAzDD,SAAS,oBAAoB,CAAC,OAAiC,EAAE;IAC/D,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK;QAC1B,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC;QAC5B,CAAC,CAAC;;;;;eAKS,CAAC;IAEd,OAAO;;yBAEgB,SAAS;;;;;;;;;;;;;;;;;;;;;;;KAuB7B,CAAC;AACN,CAAC;AAED,SAAgB,iBAAiB,CAAC,IAA+B;IAC/D,OAAO;QACL,IAAI,EAAE,wBAAwB;QAE9B,kBAAkB,CAAC,IAAI;YACrB,MAAM,IAAI,GAAwB;gBAChC;oBACE,GAAG,EAAE,QAAQ;oBACb,QAAQ,EAAE,oBAAoB,CAAC,IAAI,CAAC;oBACpC,QAAQ,EAAE,cAAc;iBACzB;aACF,CAAC;YAEF,OAAO;gBACL,IAAI;gBACJ,IAAI;aACL,CAAC;QACJ,CAAC;KACF,CAAC;AACJ,CAAC;AAED,kBAAe,iBAAiB,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lark-apaas/coding-vite-preset",
3
- "version": "1.0.7-alpha.2",
3
+ "version": "1.0.7-alpha.20",
4
4
  "description": "Vite 8 preset for OpenClaw projects",
5
5
  "main": "./lib/index.js",
6
6
  "types": "./lib/index.d.ts",
@@ -32,7 +32,7 @@
32
32
  "prepublishOnly": "npm run build"
33
33
  },
34
34
  "dependencies": {
35
- "@lark-apaas/devtool-kits": "^1.2.23",
35
+ "@lark-apaas/devtool-kits": "1.2.24-alpha.11",
36
36
  "@lark-apaas/vite-inspector-plugin": "^1.0.3",
37
37
  "@tailwindcss/vite": "^4.0.0",
38
38
  "@vitejs/plugin-react": "^6.0.0",