lanhu-layer-tree 1.0.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 (54) hide show
  1. package/.env.example +11 -0
  2. package/README.md +317 -0
  3. package/dist/assets.d.ts +38 -0
  4. package/dist/assets.d.ts.map +1 -0
  5. package/dist/assets.js +247 -0
  6. package/dist/assets.js.map +1 -0
  7. package/dist/cli.d.ts +3 -0
  8. package/dist/cli.d.ts.map +1 -0
  9. package/dist/cli.js +322 -0
  10. package/dist/cli.js.map +1 -0
  11. package/dist/client.d.ts +44 -0
  12. package/dist/client.d.ts.map +1 -0
  13. package/dist/client.js +441 -0
  14. package/dist/client.js.map +1 -0
  15. package/dist/cookie.d.ts +32 -0
  16. package/dist/cookie.d.ts.map +1 -0
  17. package/dist/cookie.js +177 -0
  18. package/dist/cookie.js.map +1 -0
  19. package/dist/formatter.d.ts +6 -0
  20. package/dist/formatter.d.ts.map +1 -0
  21. package/dist/formatter.js +225 -0
  22. package/dist/formatter.js.map +1 -0
  23. package/dist/index.d.ts +5 -0
  24. package/dist/index.d.ts.map +1 -0
  25. package/dist/index.js +27 -0
  26. package/dist/index.js.map +1 -0
  27. package/dist/merger.d.ts +27 -0
  28. package/dist/merger.d.ts.map +1 -0
  29. package/dist/merger.js +141 -0
  30. package/dist/merger.js.map +1 -0
  31. package/dist/resolver.d.ts +27 -0
  32. package/dist/resolver.d.ts.map +1 -0
  33. package/dist/resolver.js +196 -0
  34. package/dist/resolver.js.map +1 -0
  35. package/dist/types.d.ts +85 -0
  36. package/dist/types.d.ts.map +1 -0
  37. package/dist/types.js +6 -0
  38. package/dist/types.js.map +1 -0
  39. package/dist/utils.d.ts +23 -0
  40. package/dist/utils.d.ts.map +1 -0
  41. package/dist/utils.js +106 -0
  42. package/dist/utils.js.map +1 -0
  43. package/package.json +38 -0
  44. package/src/assets.ts +221 -0
  45. package/src/cli.ts +333 -0
  46. package/src/client.ts +490 -0
  47. package/src/cookie.ts +156 -0
  48. package/src/formatter.ts +251 -0
  49. package/src/index.ts +4 -0
  50. package/src/merger.ts +154 -0
  51. package/src/resolver.ts +195 -0
  52. package/src/types.ts +94 -0
  53. package/src/utils.ts +120 -0
  54. package/tsconfig.json +20 -0
package/dist/cli.js ADDED
@@ -0,0 +1,322 @@
1
+ #!/usr/bin/env node
2
+ "use strict";
3
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
4
+ if (k2 === undefined) k2 = k;
5
+ var desc = Object.getOwnPropertyDescriptor(m, k);
6
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
7
+ desc = { enumerable: true, get: function() { return m[k]; } };
8
+ }
9
+ Object.defineProperty(o, k2, desc);
10
+ }) : (function(o, m, k, k2) {
11
+ if (k2 === undefined) k2 = k;
12
+ o[k2] = m[k];
13
+ }));
14
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
15
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
16
+ }) : function(o, v) {
17
+ o["default"] = v;
18
+ });
19
+ var __importStar = (this && this.__importStar) || (function () {
20
+ var ownKeys = function(o) {
21
+ ownKeys = Object.getOwnPropertyNames || function (o) {
22
+ var ar = [];
23
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
24
+ return ar;
25
+ };
26
+ return ownKeys(o);
27
+ };
28
+ return function (mod) {
29
+ if (mod && mod.__esModule) return mod;
30
+ var result = {};
31
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
32
+ __setModuleDefault(result, mod);
33
+ return result;
34
+ };
35
+ })();
36
+ Object.defineProperty(exports, "__esModule", { value: true });
37
+ const commander_1 = require("commander");
38
+ const dotenv_1 = require("dotenv");
39
+ const client_1 = require("./client");
40
+ const formatter_1 = require("./formatter");
41
+ const utils_1 = require("./utils");
42
+ const merger_1 = require("./merger");
43
+ const cookie_1 = require("./cookie");
44
+ const fs = __importStar(require("fs/promises"));
45
+ const fs_1 = require("fs");
46
+ const path = __importStar(require("path"));
47
+ // 加载 .env 文件
48
+ (0, dotenv_1.config)();
49
+ const program = new commander_1.Command();
50
+ program
51
+ .name('lanhu')
52
+ .description('蓝湖设计图图层树提取工具')
53
+ .version('1.0.0');
54
+ // list 命令:列出项目中的所有设计图
55
+ program
56
+ .command('list')
57
+ .description('列出项目中的所有设计图')
58
+ .argument('<url>', '蓝湖项目 URL')
59
+ .option('-o, --output <file>', '输出文件路径')
60
+ .action(async (url, options) => {
61
+ try {
62
+ const client = new client_1.LanhuClient();
63
+ const result = await client.getDesigns(url);
64
+ const output = JSON.stringify(result, null, 2);
65
+ if (options.output) {
66
+ await fs.writeFile(options.output, output, 'utf-8');
67
+ console.log(`✅ 设计图列表已保存到: ${options.output}`);
68
+ }
69
+ else {
70
+ console.log(output);
71
+ }
72
+ }
73
+ catch (error) {
74
+ console.error('❌ 错误:', error instanceof Error ? error.message : error);
75
+ process.exit(1);
76
+ }
77
+ });
78
+ // layers 命令:获取指定设计图的图层信息
79
+ program
80
+ .command('layers')
81
+ .description('获取指定设计图的图层信息')
82
+ .argument('<url>', '蓝湖设计图 URL(如果包含 image_id 参数,可省略 design-id)')
83
+ .argument('[design-id]', '设计图 ID(可选)')
84
+ .option('-o, --output <file>', '输出文件路径')
85
+ .option('-t, --tree', '以树形结构输出图层信息')
86
+ .option('-e, --engine <type>', '引擎类型(unity/cocos),转换为引擎坐标系')
87
+ .option('-a, --assets-dir <dir>', '资源目录路径,用于解析资源 UUID')
88
+ .action(async (urlArg, designId, options) => {
89
+ try {
90
+ if (options.engine && !['unity', 'cocos'].includes(options.engine)) {
91
+ console.error(`❌ 不支持的引擎类型: ${options.engine},仅支持 unity/cocos`);
92
+ process.exit(1);
93
+ }
94
+ // 支持 @file 语法读取 URL
95
+ let urlInput = urlArg;
96
+ if (urlInput.startsWith('@')) {
97
+ const urlFile = urlInput.slice(1);
98
+ if (!(0, fs_1.existsSync)(urlFile)) {
99
+ console.error(`❌ URL 文件不存在: ${urlFile}`);
100
+ process.exit(1);
101
+ }
102
+ urlInput = (0, fs_1.readFileSync)(urlFile, 'utf-8').trim();
103
+ console.log(`✅ 从文件读取 URL: ${urlFile}`);
104
+ }
105
+ // 支持多 URL(逗号分隔)
106
+ const urls = urlInput.split(',').map(u => u.trim()).filter(Boolean);
107
+ const client = new client_1.LanhuClient();
108
+ if (urls.length === 1) {
109
+ const singleUrl = urls[0];
110
+ let did = designId;
111
+ if (!did) {
112
+ const params = (0, utils_1.parseUrl)(singleUrl);
113
+ did = params.doc_id;
114
+ if (!did) {
115
+ console.error('❌ URL 中未找到 image_id 参数,请手动指定设计图ID');
116
+ process.exit(1);
117
+ }
118
+ }
119
+ const result = await client.getDesignLayers(singleUrl, did);
120
+ let output;
121
+ if (options.tree) {
122
+ output = (0, formatter_1.formatLayersTree)(result.layers, result.design_name, result.canvas_size.width, result.canvas_size.height, { engine: options.engine, assetsDir: options.assetsDir });
123
+ }
124
+ else {
125
+ output = JSON.stringify(result, null, 2);
126
+ }
127
+ if (options.output) {
128
+ await fs.writeFile(options.output, output, 'utf-8');
129
+ console.log(`✅ 图层信息已保存到: ${options.output}`);
130
+ }
131
+ else {
132
+ console.log(output);
133
+ }
134
+ return;
135
+ }
136
+ // 多 URL:相似度 + 合并
137
+ console.log(`🔍 检测到 ${urls.length} 个 URL,开始获取图层信息...`);
138
+ const allResults = [];
139
+ const allLayers = [];
140
+ const designNames = [];
141
+ for (let idx = 0; idx < urls.length; idx++) {
142
+ const u = urls[idx];
143
+ console.log(`\n📥 [${idx + 1}/${urls.length}] 获取图层: ${u.slice(0, 80)}...`);
144
+ const params = (0, utils_1.parseUrl)(u);
145
+ const did = params.doc_id;
146
+ if (!did) {
147
+ console.error(`❌ URL ${idx + 1} 中未找到 image_id 参数`);
148
+ process.exit(1);
149
+ }
150
+ const r = await client.getDesignLayers(u, did);
151
+ allResults.push(r);
152
+ allLayers.push(r.layers);
153
+ designNames.push(r.design_name || `Design${idx + 1}`);
154
+ console.log(`✅ 获取成功: ${r.design_name} (${r.total_layers} 个图层)`);
155
+ }
156
+ console.log(`\n🔍 计算图层相似度...`);
157
+ const similarities = [];
158
+ for (let i = 0; i < allLayers.length - 1; i++) {
159
+ const sim = (0, merger_1.calculateLayerSimilarity)(allLayers[i], allLayers[i + 1]);
160
+ similarities.push(sim);
161
+ console.log(` ${designNames[i]} vs ${designNames[i + 1]}: ${sim.toFixed(2)}%`);
162
+ }
163
+ const minSim = similarities.length > 0 ? Math.min(...similarities) : 100;
164
+ console.log(`\n📊 最低相似度: ${minSim.toFixed(2)}%`);
165
+ if (minSim < 80) {
166
+ console.error(`\n❌ 错误: 图层相似度 (${minSim.toFixed(2)}%) 低于阈值 (80%),无法合并`);
167
+ console.error('提示: 请确保所有设计图具有相似的图层结构');
168
+ process.exit(1);
169
+ }
170
+ console.log(`\n🔄 相似度检查通过,开始合并图层...`);
171
+ const merged = (0, merger_1.mergeLayers)(allLayers, designNames);
172
+ console.log(`✅ 合并完成: ${merged.layers.length} 个图层`);
173
+ const canvasSize = allResults[0].canvas_size;
174
+ const mergedResult = {
175
+ design_id: 'merged',
176
+ design_name: merged.name,
177
+ version: 'merged',
178
+ canvas_size: canvasSize,
179
+ total_layers: merged.layers.length,
180
+ layers: merged.layers,
181
+ source_designs: allResults.map(r => ({
182
+ name: r.design_name,
183
+ id: r.design_id,
184
+ total_layers: r.total_layers
185
+ })),
186
+ similarities: similarities.map((s, i) => ({
187
+ pair: `${designNames[i]} vs ${designNames[i + 1]}`,
188
+ similarity: s
189
+ }))
190
+ };
191
+ let output;
192
+ if (options.tree) {
193
+ output = (0, formatter_1.formatLayersTree)(merged.layers, merged.name, canvasSize.width, canvasSize.height, { engine: options.engine, assetsDir: options.assetsDir });
194
+ }
195
+ else {
196
+ output = JSON.stringify(mergedResult, null, 2);
197
+ }
198
+ if (options.output) {
199
+ await fs.writeFile(options.output, output, 'utf-8');
200
+ console.log(`\n✅ 合并后的图层信息已保存到: ${options.output}`);
201
+ }
202
+ else {
203
+ console.log(`\n${output}`);
204
+ }
205
+ }
206
+ catch (error) {
207
+ console.error('❌ 错误:', error instanceof Error ? error.message : error);
208
+ process.exit(1);
209
+ }
210
+ });
211
+ // slices 命令:获取设计图切图列表
212
+ program
213
+ .command('slices')
214
+ .description('获取指定设计图的切图列表')
215
+ .argument('<url>', '蓝湖设计图 URL')
216
+ .argument('[design-id]', '设计图 ID(可选)')
217
+ .option('-o, --output <file>', '输出文件路径(JSON)')
218
+ .option('-d, --download-dir <dir>', '指定目录则批量下载切图到该目录')
219
+ .action(async (url, designId, options) => {
220
+ try {
221
+ if (!designId) {
222
+ const params = (0, utils_1.parseUrl)(url);
223
+ designId = params.doc_id;
224
+ if (!designId) {
225
+ console.error('❌ URL 中未找到 image_id 参数,请手动指定设计图ID');
226
+ process.exit(1);
227
+ }
228
+ }
229
+ const client = new client_1.LanhuClient();
230
+ const result = await client.getDesignSlices(url, designId);
231
+ const output = JSON.stringify(result, null, 2);
232
+ if (options.output) {
233
+ await fs.writeFile(options.output, output, 'utf-8');
234
+ console.log(`✅ 切图列表已保存到: ${options.output}`);
235
+ }
236
+ else if (!options.downloadDir) {
237
+ console.log(output);
238
+ }
239
+ if (options.downloadDir) {
240
+ console.log(`\n📥 开始批量下载 ${result.total_slices} 个切图到: ${options.downloadDir}`);
241
+ let okCount = 0;
242
+ for (const slice of result.slices) {
243
+ const ext = slice.format || 'png';
244
+ const safeName = slice.name.replace(/[\\/:*?"<>|]/g, '_') || 'slice';
245
+ const outPath = path.join(options.downloadDir, `${safeName}.${ext}`);
246
+ const ok = await client.downloadSlice(slice, outPath);
247
+ if (ok)
248
+ okCount++;
249
+ }
250
+ console.log(`✅ 下载完成: ${okCount}/${result.total_slices}`);
251
+ }
252
+ }
253
+ catch (error) {
254
+ console.error('❌ 错误:', error instanceof Error ? error.message : error);
255
+ process.exit(1);
256
+ }
257
+ });
258
+ // download 命令:下载设计图截图
259
+ program
260
+ .command('download')
261
+ .description('下载设计图截图')
262
+ .argument('<url>', '蓝湖设计图 URL')
263
+ .argument('[design-id]', '设计图 ID(可选)')
264
+ .argument('[design-name]', '设计图名称(可选)')
265
+ .option('-d, --output-dir <dir>', '输出目录', '.')
266
+ .action(async (url, designId, designName, options) => {
267
+ try {
268
+ if (!designId) {
269
+ const params = (0, utils_1.parseUrl)(url);
270
+ designId = params.doc_id;
271
+ if (!designId) {
272
+ console.error('❌ URL 中未找到 image_id 参数,请手动指定设计图ID');
273
+ process.exit(1);
274
+ }
275
+ }
276
+ const client = new client_1.LanhuClient();
277
+ const designsResult = await client.getDesigns(url);
278
+ const design = designsResult.designs?.find(d => d.id === designId);
279
+ if (!design) {
280
+ console.error(`❌ 未找到设计图 ID: ${designId}`);
281
+ process.exit(1);
282
+ }
283
+ const name = designName || design.name;
284
+ const outputPath = path.join(options.outputDir, `${name}.png`);
285
+ const success = await client.downloadScreenshot(design, outputPath);
286
+ if (success) {
287
+ console.log(`✅ 截图已下载到: ${outputPath}`);
288
+ }
289
+ else {
290
+ console.error('❌ 下载失败');
291
+ process.exit(1);
292
+ }
293
+ }
294
+ catch (error) {
295
+ console.error('❌ 错误:', error instanceof Error ? error.message : error);
296
+ process.exit(1);
297
+ }
298
+ });
299
+ // refresh-cookie 命令:从 Chrome 刷新蓝湖 cookie
300
+ program
301
+ .command('refresh-cookie')
302
+ .description('从 Chrome 浏览器刷新蓝湖 cookie 并写入 .env 文件')
303
+ .argument('[env-file]', '.env 文件路径(默认为当前目录的 .env)')
304
+ .action(async (envFile) => {
305
+ try {
306
+ const envPath = envFile ? path.resolve(envFile) : path.resolve(process.cwd(), '.env');
307
+ const cookie = await (0, cookie_1.refreshCookieFromChrome)(envPath);
308
+ if (cookie) {
309
+ console.log('✅ Cookie 刷新成功');
310
+ }
311
+ else {
312
+ console.error('❌ Cookie 刷新失败');
313
+ process.exit(1);
314
+ }
315
+ }
316
+ catch (error) {
317
+ console.error('❌ 错误:', error instanceof Error ? error.message : error);
318
+ process.exit(1);
319
+ }
320
+ });
321
+ program.parse();
322
+ //# sourceMappingURL=cli.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,44 @@
1
+ import { LanhuConfig, DesignsResponse, LayersResponse, SlicesResponse, Design, Slice } from './types';
2
+ /**
3
+ * 蓝湖 API 客户端
4
+ */
5
+ export declare class LanhuClient {
6
+ private cookie;
7
+ private baseUrl;
8
+ private timeout;
9
+ private client;
10
+ private defaultTid?;
11
+ private cookieRefreshAttempted;
12
+ private cookieInitialized;
13
+ constructor(config?: LanhuConfig);
14
+ /**
15
+ * 异步初始化:当 cookie 缺失时自动尝试从 Chrome 读取(仅首次)
16
+ */
17
+ ensureCookie(): Promise<void>;
18
+ private buildClient;
19
+ /**
20
+ * 带认证错误自动刷新的 GET 请求
21
+ */
22
+ private requestGet;
23
+ /**
24
+ * 获取设计图列表
25
+ */
26
+ getDesigns(url: string): Promise<DesignsResponse>;
27
+ /**
28
+ * 获取设计图图层信息
29
+ */
30
+ getDesignLayers(url: string, designId: string): Promise<LayersResponse>;
31
+ /**
32
+ * 下载设计图截图
33
+ */
34
+ downloadScreenshot(design: Design, outputPath: string): Promise<boolean>;
35
+ /**
36
+ * 获取设计图的切图/资源列表
37
+ */
38
+ getDesignSlices(url: string, designId: string): Promise<SlicesResponse>;
39
+ /**
40
+ * 下载单个切图
41
+ */
42
+ downloadSlice(slice: Slice, outputPath: string): Promise<boolean>;
43
+ }
44
+ //# sourceMappingURL=client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAa,eAAe,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,EAAS,KAAK,EAAE,MAAM,SAAS,CAAC;AAOxH;;GAEG;AACH,qBAAa,WAAW;IACtB,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,MAAM,CAAgB;IAC9B,OAAO,CAAC,UAAU,CAAC,CAAS;IAC5B,OAAO,CAAC,sBAAsB,CAAkB;IAChD,OAAO,CAAC,iBAAiB,CAAkB;gBAE/B,MAAM,GAAE,WAAgB;IAcpC;;OAEG;IACG,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;IAkBnC,OAAO,CAAC,WAAW;IAiBnB;;OAEG;YACW,UAAU;IAoBxB;;OAEG;IACG,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC;IA4CvD;;OAEG;IACG,eAAe,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC;IAgO7E;;OAEG;IACG,kBAAkB,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAoB9E;;OAEG;IACG,eAAe,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC;IA6E7E;;OAEG;IACG,aAAa,CAAC,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;CAcxE"}