cardbuddy 0.23.0 → 0.25.0

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.
Files changed (23) hide show
  1. package/README.md +2 -2
  2. package/dist/init.js +9 -2
  3. package/dist/preview-editor/assets/{index-C7N5n_qW.js → index-DL4ZCJCA.js} +77 -76
  4. package/dist/preview-editor/assets/{index-7RzNd7tf.css → index-MWKPP9nd.css} +1 -1
  5. package/dist/preview-editor/index.html +2 -2
  6. package/dist/skills-upgrade.js +59 -0
  7. package/dist/vendored/server/core/browser.js +7 -4
  8. package/dist/vendored/server/core/cardCompile.js +202 -0
  9. package/dist/vendored/server/core/flameCompile/client.js +466 -0
  10. package/dist/vendored/server/core/flameCompile/clientElements.js +372 -0
  11. package/dist/vendored/server/core/flameCompile/common.js +253 -0
  12. package/dist/vendored/server/core/flameCompile/h5.js +326 -0
  13. package/dist/vendored/server/core/flameCompile/index.js +126 -0
  14. package/dist/vendored/server/core/flameCompile/model.js +162 -0
  15. package/dist/vendored/server/core/index.js +6 -0
  16. package/dist/vendored/skills/dsl-card-generator/references/generation_pitfalls.md +1 -1
  17. package/dist/vendored/skills/mbank-design-gen/tools/screenshot.mjs +15 -7
  18. package/dist/vendored/skills/platform-card-sync/scripts/api_batch_sync.mjs +12 -4
  19. package/dist/vendored/skills/platform-session-navigator/scripts/package-lock.json +1 -16
  20. package/dist/vendored/skills/platform-session-navigator/scripts/package.json +2 -2
  21. package/dist/vendored/skills/platform-session-navigator/scripts/platform_login.mjs +12 -1
  22. package/dist/vendored/skills/platform-session-navigator/scripts/session-manager.mjs +1 -1
  23. package/package.json +2 -4
@@ -2,7 +2,8 @@
2
2
  // MBank mockup 截图工具:把 375×812 的 mockup HTML 导出为 750×1624 @2x PNG。
3
3
  // 用法:node <skill>/tools/screenshot.mjs <input.html> [output.png] [--full]
4
4
  // --full 整页截图(长页 mockup 用;默认 812pt 视口截断)
5
- // 依赖 playwright(仓库根 node_modules 已装;本脚本从自身位置向上解析)。
5
+ // 依赖 playwright-core(免浏览器下载的纯 JS API,从自身位置向上解析)。
6
+ // 浏览器优先走系统 Chrome(channel: 'chrome',仓库约定),未找到时才尝试内置浏览器。
6
7
  import { createRequire } from 'node:module';
7
8
  import { dirname, resolve } from 'node:path';
8
9
  import { fileURLToPath } from 'node:url';
@@ -10,7 +11,15 @@ import { pathToFileURL } from 'node:url';
10
11
 
11
12
  const here = dirname(fileURLToPath(import.meta.url));
12
13
  const require = createRequire(import.meta.url);
13
- const { chromium } = require('playwright');
14
+ let chromium;
15
+ try {
16
+ ({ chromium } = require('playwright-core'));
17
+ } catch {
18
+ console.error(
19
+ '[screenshot] 缺少依赖 playwright-core:请在本工程根执行 npm install(cardbuddy 依赖会带上),或手动 npm i playwright-core。',
20
+ );
21
+ process.exit(1);
22
+ }
14
23
 
15
24
  const args = process.argv.slice(2);
16
25
  const full = args.includes('--full');
@@ -22,15 +31,14 @@ if (!input) {
22
31
  }
23
32
  const output = positional[1] || input.replace(/\.html$/i, '') + '.png';
24
33
 
25
- // 优先用 Playwright 自带浏览器;未下载(ms-playwright 缓存为空)时回退系统 Chrome,
26
- // 与仓库「Playwright + 系统 Chrome 验证」约定一致,避免强依赖 npx playwright install。
34
+ // 优先用系统 Chrome(channel: 'chrome',仓库约定);不可用时回退内置浏览器。
27
35
  let browser;
28
36
  try {
29
- browser = await chromium.launch();
37
+ browser = await chromium.launch({ channel: 'chrome' });
30
38
  } catch (err) {
31
39
  if (!/Executable doesn't exist/.test(String(err?.message ?? err))) throw err;
32
- console.error('[screenshot] 未找到 Playwright 内置浏览器,回退系统 Chrome');
33
- browser = await chromium.launch({ channel: 'chrome' });
40
+ console.error('[screenshot] 未找到系统 Chrome,回退 Playwright 内置浏览器');
41
+ browser = await chromium.launch();
34
42
  }
35
43
  const page = await browser.newPage({
36
44
  viewport: { width: 375, height: 812 },
@@ -29,10 +29,18 @@ const scriptDir = path.dirname(fileURLToPath(import.meta.url));
29
29
  const skillDir = path.resolve(scriptDir, '..');
30
30
  // skill now lives under <repo-root>/skills/<name>: repo root is two levels up from skillDir
31
31
  const workspace = path.resolve(skillDir, '..', '..');
32
- // 与 platform_login.mjs 保持一致的解析方式:用裸标识符让 Node 从项目根 node_modules 解析
33
- // playwright。原硬编码路径指向 .workbuddy/skills/platform-session-navigator/scripts/node_modules
34
- // (该 node_modules 是已失效的断链符号链接),导致「Cannot find module」报错。
35
- const { chromium } = await import('playwright');
32
+ // 与 platform_login.mjs 保持一致的解析方式:用裸标识符让 Node 从项目根 node_modules 解析。
33
+ // 用 playwright-core(免浏览器下载的纯 JS API):浏览器走系统 Chrome + CDP,
34
+ // 不需要 playwright 自带浏览器;playwright 作为 optional 依赖安装失败时会被 npm
35
+ // 静默跳过,导致运行时报 Cannot find package(0.83.x 事故)。
36
+ let chromium;
37
+ try {
38
+ ({ chromium } = await import('playwright-core'));
39
+ } catch {
40
+ throw new Error(
41
+ '缺少依赖 playwright-core:请在本工程根执行 npm install(cardbuddy 依赖会带上 playwright-core),或手动 npm i playwright-core。',
42
+ );
43
+ }
36
44
 
37
45
  // 统一日志美化(容错:缺 server/core/logger 时回退极简实现,保证 demo / 老项目不崩)。
38
46
  // 实时项目与 build 后的 dist/server-core 均含该模块;demo 等缺少 server/ 目录的场景走 fallback。
@@ -8,22 +8,7 @@
8
8
  "name": "platform-session-navigator-scripts",
9
9
  "version": "1.0.0",
10
10
  "dependencies": {
11
- "playwright": "^1.62.1"
12
- }
13
- },
14
- "node_modules/playwright": {
15
- "version": "1.64.1",
16
- "resolved": "https://registry.npmmirror.com/playwright/-/playwright-1.64.1.tgz",
17
- "integrity": "sha512-HCrVhHr5QQuwYoswEUGTb7gGp522yflbv/ST8nF4sFWGuLjQCt17Q/EubpGGSNKYn1tsTCPZxqHhHCfVURu7UA==",
18
- "license": "Apache-2.0",
19
- "dependencies": {
20
- "playwright-core": "1.64.1"
21
- },
22
- "bin": {
23
- "playwright": "cli.js"
24
- },
25
- "engines": {
26
- "node": ">=20"
11
+ "playwright-core": "^1.62.1"
27
12
  }
28
13
  },
29
14
  "node_modules/playwright-core": {
@@ -3,8 +3,8 @@
3
3
  "version": "1.0.0",
4
4
  "private": true,
5
5
  "type": "module",
6
- "description": "Playwright-based 远端 UAT auto-login scripts",
6
+ "description": "playwright-core-based 远端自动登录脚本(纯 JS API,浏览器走系统 Chrome + CDP)",
7
7
  "dependencies": {
8
- "playwright": "^1.62.1"
8
+ "playwright-core": "^1.62.1"
9
9
  }
10
10
  }
@@ -1,4 +1,15 @@
1
- import { chromium } from "playwright";
1
+ // 依赖只取 playwright 的 JS API(浏览器由本脚本 spawn 系统 Chrome + connectOverCDP 连接,
2
+ // 不需要 playwright 自带浏览器),因此用免下载的 playwright-core:它是 cardbuddy 与工程
3
+ // devDependencies 里的普通依赖,npm install 即落地;不用 playwright(postinstall 下载
4
+ // 数百 MB 浏览器,作为 optionalDependency 安装失败时会被 npm 静默跳过,错误延迟到运行时)。
5
+ let chromium;
6
+ try {
7
+ ({ chromium } = await import("playwright-core"));
8
+ } catch {
9
+ throw new Error(
10
+ "缺少依赖 playwright-core:请在本工程根执行 npm install(cardbuddy 依赖会带上 playwright-core),或手动 npm i playwright-core。",
11
+ );
12
+ }
2
13
  import { readFile, writeFile, mkdir } from "node:fs/promises";
3
14
  import { existsSync } from "node:fs";
4
15
  import { spawn } from "node:child_process";
@@ -58,7 +58,7 @@ let _sessionCache = null; // { browser, login, at }
58
58
  * @param {object} [options]
59
59
  * @param {number} [options.debugPort=SYNC_PORT]
60
60
  * @param {boolean} [options.headless=true]
61
- * @returns {Promise<{ browser: import('playwright').Browser, login: object }>}
61
+ * @returns {Promise<{ browser: import('playwright-core').Browser, login: object }>}
62
62
  */
63
63
  export async function ensurePlatformSession({ debugPort = SYNC_PORT, headless = true } = {}) {
64
64
  // 热路径:进程内缓存未过期且 CDP 仍连通 → 直接复用(跳过 runPlatformLogin 的
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "cardbuddy",
3
- "version": "0.23.0",
3
+ "version": "0.25.0",
4
4
  "description": "Local dev service for the CardBuddy card editor — decouples card CRUD (sync/save/validate/render-status/screenshot) from the static public editor, so the editor can be deployed to any static host while each developer runs a local service against their own card source.",
5
5
  "type": "module",
6
6
  "bin": {
@@ -30,14 +30,12 @@
30
30
  "codejar": "^4.3.0",
31
31
  "connect": "^3.7.0",
32
32
  "dotenv": "^18.0.9",
33
+ "playwright-core": "^1.62.1",
33
34
  "pngjs": "^7.0.0",
34
35
  "prismjs": "^1.30.0",
35
36
  "qrcode": "^1.5.4",
36
37
  "selfsigned": "^4.0.1",
37
38
  "vite": "^8.2.0",
38
39
  "vue": "^3.5.40"
39
- },
40
- "optionalDependencies": {
41
- "playwright": "^1.62.1"
42
40
  }
43
41
  }