drgame-cc 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.
@@ -0,0 +1,125 @@
1
+ /**
2
+ * 资源导出器核心类
3
+ * 支持导出Cocos Creator项目中的预制体、图片、音乐等资源
4
+ */
5
+ import { ExportConfig, ExportResult, AssetBundle } from './asset-types';
6
+ /**
7
+ * 资源导出器类
8
+ */
9
+ export declare class AssetExporter {
10
+ private config;
11
+ private exportedAssets;
12
+ private errors;
13
+ constructor(config: ExportConfig);
14
+ /**
15
+ * 执行资源导出
16
+ * @returns 导出结果
17
+ */
18
+ export(): Promise<ExportResult>;
19
+ /**
20
+ * 扫描源目录中的所有资源文件
21
+ * @returns 文件路径列表
22
+ */
23
+ private scanSourceFiles;
24
+ /**
25
+ * 根据配置过滤文件
26
+ * @param files 文件路径列表
27
+ * @returns 过滤后的文件列表
28
+ */
29
+ private filterFilesByType;
30
+ /**
31
+ * 处理单个文件
32
+ * @param filePath 文件路径
33
+ */
34
+ private processFile;
35
+ /**
36
+ * 创建资源信息对象
37
+ * @param filePath 文件路径
38
+ * @param assetType 资源类型
39
+ * @returns 资源信息
40
+ */
41
+ private createAssetInfo;
42
+ /**
43
+ * 创建图片资源信息
44
+ */
45
+ private createImageAssetInfo;
46
+ /**
47
+ * 创建音频资源信息
48
+ */
49
+ private createAudioAssetInfo;
50
+ /**
51
+ * 创建预制体资源信息
52
+ */
53
+ private createPrefabAssetInfo;
54
+ /**
55
+ * 创建场景资源信息
56
+ */
57
+ private createSceneAssetInfo;
58
+ /**
59
+ * 创建脚本资源信息
60
+ */
61
+ private createScriptAssetInfo;
62
+ /**
63
+ * 创建动画资源信息
64
+ */
65
+ private createAnimationAssetInfo;
66
+ /**
67
+ * 创建字体资源信息
68
+ */
69
+ private createFontAssetInfo;
70
+ /**
71
+ * 创建材质资源信息
72
+ */
73
+ private createMaterialAssetInfo;
74
+ /**
75
+ * 处理特殊资源类型(如图片压缩、音频转码等)
76
+ */
77
+ private processSpecialAsset;
78
+ /**
79
+ * 统计节点数量
80
+ */
81
+ private countNodes;
82
+ /**
83
+ * 提取脚本组件
84
+ */
85
+ private extractScriptComponents;
86
+ /**
87
+ * 生成资源清单文件
88
+ */
89
+ private generateManifest;
90
+ /**
91
+ * 打印导出摘要
92
+ */
93
+ private printSummary;
94
+ /**
95
+ * 创建资源包
96
+ * @param name 包名称
97
+ * @param version 包版本
98
+ * @param description 包描述
99
+ * @returns 资源包对象
100
+ */
101
+ createAssetBundle(name: string, version?: string, description?: string): AssetBundle;
102
+ /**
103
+ * 保存资源包到文件
104
+ * @param bundle 资源包
105
+ * @param outputPath 输出路径
106
+ * @returns 是否保存成功
107
+ */
108
+ saveAssetBundle(bundle: AssetBundle, outputPath: string): boolean;
109
+ }
110
+ /**
111
+ * 快速导出函数
112
+ * @param config 导出配置
113
+ * @returns 导出结果
114
+ */
115
+ export declare function exportAssets(config: ExportConfig): Promise<ExportResult>;
116
+ /**
117
+ * 从Cocos Creator项目导出资源
118
+ * @param projectPath 项目路径
119
+ * @param outputDir 输出目录
120
+ * @param options 额外选项
121
+ * @returns 导出结果
122
+ */
123
+ export declare function exportFromCocosProject(projectPath: string, outputDir: string, options?: Partial<ExportConfig>): Promise<ExportResult>;
124
+ export { AssetExporter as default };
125
+ //# sourceMappingURL=asset-exporter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"asset-exporter.d.ts","sourceRoot":"","sources":["../src/asset-exporter.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,EAGH,YAAY,EACZ,YAAY,EACZ,WAAW,EASd,MAAM,eAAe,CAAC;AAiBvB;;GAEG;AACH,qBAAa,aAAa;IACtB,OAAO,CAAC,MAAM,CAAe;IAC7B,OAAO,CAAC,cAAc,CAAqC;IAC3D,OAAO,CAAC,MAAM,CAAgB;gBAElB,MAAM,EAAE,YAAY;IAUhC;;;OAGG;IACG,MAAM,IAAI,OAAO,CAAC,YAAY,CAAC;IAsDrC;;;OAGG;IACH,OAAO,CAAC,eAAe;IAavB;;;;OAIG;IACH,OAAO,CAAC,iBAAiB;IAWzB;;;OAGG;YACW,WAAW;IAuCzB;;;;;OAKG;YACW,eAAe;IAiD7B;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAgB5B;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAW5B;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAW7B;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAU5B;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAU7B;;OAEG;IACH,OAAO,CAAC,wBAAwB;IAYhC;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAgB3B;;OAEG;IACH,OAAO,CAAC,uBAAuB;IAU/B;;OAEG;YACW,mBAAmB;IAoBjC;;OAEG;IACH,OAAO,CAAC,UAAU;IAgBlB;;OAEG;IACH,OAAO,CAAC,uBAAuB;IA4B/B;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAmBxB;;OAEG;IACH,OAAO,CAAC,YAAY;IAgCpB;;;;;;OAMG;IACH,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,SAAU,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,WAAW;IAcrF;;;;;OAKG;IACH,eAAe,CAAC,MAAM,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO;CASpE;AAED;;;;GAIG;AACH,wBAAsB,YAAY,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC,CAG9E;AAED;;;;;;GAMG;AACH,wBAAsB,sBAAsB,CACxC,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,MAAM,EACjB,OAAO,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC,GAChC,OAAO,CAAC,YAAY,CAAC,CAiBvB;AAED,OAAO,EAAE,aAAa,IAAI,OAAO,EAAE,CAAC"}
@@ -0,0 +1,513 @@
1
+ "use strict";
2
+ /**
3
+ * 资源导出器核心类
4
+ * 支持导出Cocos Creator项目中的预制体、图片、音乐等资源
5
+ */
6
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
7
+ if (k2 === undefined) k2 = k;
8
+ var desc = Object.getOwnPropertyDescriptor(m, k);
9
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
10
+ desc = { enumerable: true, get: function() { return m[k]; } };
11
+ }
12
+ Object.defineProperty(o, k2, desc);
13
+ }) : (function(o, m, k, k2) {
14
+ if (k2 === undefined) k2 = k;
15
+ o[k2] = m[k];
16
+ }));
17
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
18
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
19
+ }) : function(o, v) {
20
+ o["default"] = v;
21
+ });
22
+ var __importStar = (this && this.__importStar) || (function () {
23
+ var ownKeys = function(o) {
24
+ ownKeys = Object.getOwnPropertyNames || function (o) {
25
+ var ar = [];
26
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
27
+ return ar;
28
+ };
29
+ return ownKeys(o);
30
+ };
31
+ return function (mod) {
32
+ if (mod && mod.__esModule) return mod;
33
+ var result = {};
34
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
35
+ __setModuleDefault(result, mod);
36
+ return result;
37
+ };
38
+ })();
39
+ Object.defineProperty(exports, "__esModule", { value: true });
40
+ exports.default = exports.AssetExporter = void 0;
41
+ exports.exportAssets = exportAssets;
42
+ exports.exportFromCocosProject = exportFromCocosProject;
43
+ const fs = __importStar(require("fs"));
44
+ const path = __importStar(require("path"));
45
+ const asset_types_1 = require("./asset-types");
46
+ const utils_1 = require("./utils");
47
+ /**
48
+ * 资源导出器类
49
+ */
50
+ class AssetExporter {
51
+ constructor(config) {
52
+ this.exportedAssets = new Map();
53
+ this.errors = [];
54
+ this.config = {
55
+ assetTypes: Object.values(asset_types_1.AssetType),
56
+ includeDependencies: true,
57
+ compress: false,
58
+ ...config
59
+ };
60
+ (0, utils_1.ensureDir)(this.config.outputDir);
61
+ }
62
+ /**
63
+ * 执行资源导出
64
+ * @returns 导出结果
65
+ */
66
+ async export() {
67
+ const startTime = Date.now();
68
+ this.exportedAssets.clear();
69
+ this.errors = [];
70
+ console.log(`开始导出资源...`);
71
+ console.log(`源目录: ${this.config.sourceDir}`);
72
+ console.log(`输出目录: ${this.config.outputDir}`);
73
+ try {
74
+ // 扫描所有资源文件
75
+ const files = this.scanSourceFiles();
76
+ console.log(`找到 ${files.length} 个资源文件`);
77
+ // 过滤资源类型
78
+ const filteredFiles = this.filterFilesByType(files);
79
+ console.log(`符合过滤条件的文件: ${filteredFiles.length} 个`);
80
+ // 批量处理资源导出
81
+ await (0, utils_1.batchProcess)(filteredFiles, (file) => this.processFile(file), 5);
82
+ // 生成资源清单
83
+ this.generateManifest();
84
+ const duration = Date.now() - startTime;
85
+ const result = {
86
+ assets: Array.from(this.exportedAssets.values()),
87
+ successCount: this.exportedAssets.size,
88
+ failCount: this.errors.length,
89
+ skipCount: files.length - filteredFiles.length,
90
+ errors: this.errors,
91
+ duration,
92
+ outputDir: this.config.outputDir
93
+ };
94
+ this.printSummary(result);
95
+ return result;
96
+ }
97
+ catch (error) {
98
+ const errorMsg = `导出过程发生错误: ${error instanceof Error ? error.message : String(error)}`;
99
+ this.errors.push(errorMsg);
100
+ console.error(errorMsg);
101
+ return {
102
+ assets: [],
103
+ successCount: 0,
104
+ failCount: 1,
105
+ skipCount: 0,
106
+ errors: this.errors,
107
+ duration: Date.now() - startTime,
108
+ outputDir: this.config.outputDir
109
+ };
110
+ }
111
+ }
112
+ /**
113
+ * 扫描源目录中的所有资源文件
114
+ * @returns 文件路径列表
115
+ */
116
+ scanSourceFiles() {
117
+ // 支持的资源扩展名
118
+ const extensions = [
119
+ '.prefab', '.scene', '.ts', '.js', '.anim',
120
+ '.png', '.jpg', '.jpeg', '.webp', '.gif', '.bmp',
121
+ '.mp3', '.ogg', '.wav', '.m4a',
122
+ '.ttf', '.otf', '.woff', '.woff2', '.fnt',
123
+ '.mat', '.mesh', '.plist', '.json', '.tmx'
124
+ ];
125
+ return (0, utils_1.getAllFiles)(this.config.sourceDir, extensions);
126
+ }
127
+ /**
128
+ * 根据配置过滤文件
129
+ * @param files 文件路径列表
130
+ * @returns 过滤后的文件列表
131
+ */
132
+ filterFilesByType(files) {
133
+ if (!this.config.assetTypes || this.config.assetTypes.length === 0) {
134
+ return files;
135
+ }
136
+ return files.filter(file => {
137
+ const assetType = (0, utils_1.getAssetType)(file);
138
+ return this.config.assetTypes.includes(assetType);
139
+ });
140
+ }
141
+ /**
142
+ * 处理单个文件
143
+ * @param filePath 文件路径
144
+ */
145
+ async processFile(filePath) {
146
+ try {
147
+ const assetType = (0, utils_1.getAssetType)(filePath);
148
+ const relativePath = path.relative(this.config.sourceDir, filePath);
149
+ const outputPath = path.join(this.config.outputDir, relativePath);
150
+ // 创建资源信息
151
+ const assetInfo = await this.createAssetInfo(filePath, assetType);
152
+ // 应用自定义过滤器
153
+ if (this.config.filter && !this.config.filter(assetInfo)) {
154
+ return;
155
+ }
156
+ // 复制文件到输出目录
157
+ const success = (0, utils_1.copyFile)(filePath, outputPath);
158
+ if (!success) {
159
+ this.errors.push(`复制文件失败: ${relativePath}`);
160
+ return;
161
+ }
162
+ // 复制对应的 .meta 文件
163
+ const metaPath = filePath + '.meta';
164
+ if (fs.existsSync(metaPath)) {
165
+ (0, utils_1.copyFile)(metaPath, outputPath + '.meta');
166
+ }
167
+ // 处理特殊资源类型
168
+ await this.processSpecialAsset(filePath, outputPath, assetInfo);
169
+ this.exportedAssets.set(assetInfo.uuid, assetInfo);
170
+ console.log(`✓ 导出: ${relativePath} (${(0, utils_1.formatFileSize)(assetInfo.size)})`);
171
+ }
172
+ catch (error) {
173
+ const errorMsg = `处理文件失败 ${filePath}: ${error instanceof Error ? error.message : String(error)}`;
174
+ this.errors.push(errorMsg);
175
+ console.error(`✗ ${errorMsg}`);
176
+ }
177
+ }
178
+ /**
179
+ * 创建资源信息对象
180
+ * @param filePath 文件路径
181
+ * @param assetType 资源类型
182
+ * @returns 资源信息
183
+ */
184
+ async createAssetInfo(filePath, assetType) {
185
+ const stat = fs.statSync(filePath);
186
+ const name = path.basename(filePath, path.extname(filePath));
187
+ const extension = path.extname(filePath).toLowerCase();
188
+ const relativePath = path.relative(this.config.sourceDir, filePath);
189
+ // 尝试从 meta 文件读取 UUID
190
+ let uuid = (0, utils_1.generateUUID)();
191
+ const metaPath = filePath + '.meta';
192
+ if (fs.existsSync(metaPath)) {
193
+ const meta = (0, utils_1.readJSON)(metaPath);
194
+ if (meta?.uuid) {
195
+ uuid = meta.uuid;
196
+ }
197
+ }
198
+ const baseInfo = {
199
+ uuid,
200
+ name,
201
+ path: relativePath,
202
+ type: assetType,
203
+ extension: extension.slice(1),
204
+ size: stat.size,
205
+ modifiedTime: stat.mtime
206
+ };
207
+ // 根据资源类型创建特定信息
208
+ switch (assetType) {
209
+ case asset_types_1.AssetType.IMAGE:
210
+ return this.createImageAssetInfo(filePath, baseInfo);
211
+ case asset_types_1.AssetType.AUDIO:
212
+ return this.createAudioAssetInfo(filePath, baseInfo);
213
+ case asset_types_1.AssetType.PREFAB:
214
+ return this.createPrefabAssetInfo(filePath, baseInfo);
215
+ case asset_types_1.AssetType.SCENE:
216
+ return this.createSceneAssetInfo(filePath, baseInfo);
217
+ case asset_types_1.AssetType.SCRIPT:
218
+ return this.createScriptAssetInfo(filePath, baseInfo);
219
+ case asset_types_1.AssetType.ANIMATION:
220
+ return this.createAnimationAssetInfo(filePath, baseInfo);
221
+ case asset_types_1.AssetType.FONT:
222
+ return this.createFontAssetInfo(filePath, baseInfo);
223
+ case asset_types_1.AssetType.MATERIAL:
224
+ return this.createMaterialAssetInfo(filePath, baseInfo);
225
+ default:
226
+ return baseInfo;
227
+ }
228
+ }
229
+ /**
230
+ * 创建图片资源信息
231
+ */
232
+ createImageAssetInfo(filePath, baseInfo) {
233
+ const format = (0, utils_1.getImageFormat)(filePath) || 'png';
234
+ // 这里可以添加读取图片尺寸的逻辑
235
+ // 需要引入 sharp 或其他图像处理库
236
+ return {
237
+ ...baseInfo,
238
+ type: asset_types_1.AssetType.IMAGE,
239
+ width: 0, // 需要通过图像库获取
240
+ height: 0,
241
+ format,
242
+ hasAlpha: ['png', 'webp', 'gif', 'tga'].includes(format)
243
+ };
244
+ }
245
+ /**
246
+ * 创建音频资源信息
247
+ */
248
+ createAudioAssetInfo(filePath, baseInfo) {
249
+ const format = (0, utils_1.getAudioFormat)(filePath) || 'mp3';
250
+ return {
251
+ ...baseInfo,
252
+ type: asset_types_1.AssetType.AUDIO,
253
+ format,
254
+ loop: false
255
+ };
256
+ }
257
+ /**
258
+ * 创建预制体资源信息
259
+ */
260
+ createPrefabAssetInfo(filePath, baseInfo) {
261
+ const content = (0, utils_1.readJSON)(filePath);
262
+ return {
263
+ ...baseInfo,
264
+ type: asset_types_1.AssetType.PREFAB,
265
+ nodeCount: this.countNodes(content),
266
+ scriptComponents: this.extractScriptComponents(content)
267
+ };
268
+ }
269
+ /**
270
+ * 创建场景资源信息
271
+ */
272
+ createSceneAssetInfo(filePath, baseInfo) {
273
+ const content = (0, utils_1.readJSON)(filePath);
274
+ return {
275
+ ...baseInfo,
276
+ type: asset_types_1.AssetType.SCENE,
277
+ nodeCount: this.countNodes(content)
278
+ };
279
+ }
280
+ /**
281
+ * 创建脚本资源信息
282
+ */
283
+ createScriptAssetInfo(filePath, baseInfo) {
284
+ const ext = path.extname(filePath).toLowerCase();
285
+ return {
286
+ ...baseInfo,
287
+ type: asset_types_1.AssetType.SCRIPT,
288
+ language: ext === '.ts' ? 'typescript' : 'javascript'
289
+ };
290
+ }
291
+ /**
292
+ * 创建动画资源信息
293
+ */
294
+ createAnimationAssetInfo(filePath, baseInfo) {
295
+ const content = (0, utils_1.readJSON)(filePath);
296
+ return {
297
+ ...baseInfo,
298
+ type: asset_types_1.AssetType.ANIMATION,
299
+ duration: content?.duration || 0,
300
+ frameRate: content?.frameRate || 60,
301
+ clipCount: Array.isArray(content?.clips) ? content.clips.length : 1
302
+ };
303
+ }
304
+ /**
305
+ * 创建字体资源信息
306
+ */
307
+ createFontAssetInfo(filePath, baseInfo) {
308
+ const ext = path.extname(filePath).toLowerCase();
309
+ let fontFormat = 'ttf';
310
+ if (ext === '.otf')
311
+ fontFormat = 'otf';
312
+ else if (ext === '.woff')
313
+ fontFormat = 'woff';
314
+ else if (ext === '.woff2')
315
+ fontFormat = 'woff2';
316
+ else if (ext === '.fnt')
317
+ fontFormat = 'bitmap';
318
+ return {
319
+ ...baseInfo,
320
+ type: asset_types_1.AssetType.FONT,
321
+ fontFormat
322
+ };
323
+ }
324
+ /**
325
+ * 创建材质资源信息
326
+ */
327
+ createMaterialAssetInfo(filePath, baseInfo) {
328
+ const content = (0, utils_1.readJSON)(filePath);
329
+ return {
330
+ ...baseInfo,
331
+ type: asset_types_1.AssetType.MATERIAL,
332
+ shaderName: content?.shaderName || ''
333
+ };
334
+ }
335
+ /**
336
+ * 处理特殊资源类型(如图片压缩、音频转码等)
337
+ */
338
+ async processSpecialAsset(_sourcePath, _outputPath, assetInfo) {
339
+ // 这里可以添加图片压缩、音频转码等处理逻辑
340
+ // 需要引入相应的库如 sharp、ffmpeg 等
341
+ switch (assetInfo.type) {
342
+ case asset_types_1.AssetType.IMAGE:
343
+ // TODO: 图片压缩处理
344
+ break;
345
+ case asset_types_1.AssetType.AUDIO:
346
+ // TODO: 音频转码处理
347
+ break;
348
+ default:
349
+ break;
350
+ }
351
+ }
352
+ /**
353
+ * 统计节点数量
354
+ */
355
+ countNodes(content) {
356
+ if (!content || typeof content !== 'object')
357
+ return 0;
358
+ let count = 0;
359
+ const obj = content;
360
+ if (obj.children && Array.isArray(obj.children)) {
361
+ count += obj.children.length;
362
+ for (const child of obj.children) {
363
+ count += this.countNodes(child);
364
+ }
365
+ }
366
+ return count;
367
+ }
368
+ /**
369
+ * 提取脚本组件
370
+ */
371
+ extractScriptComponents(content) {
372
+ const components = [];
373
+ if (!content || typeof content !== 'object')
374
+ return components;
375
+ const obj = content;
376
+ if (obj.components && Array.isArray(obj.components)) {
377
+ for (const comp of obj.components) {
378
+ if (comp && typeof comp === 'object' && comp.type) {
379
+ const type = comp.type;
380
+ if (type && !type.startsWith('cc.')) {
381
+ components.push(type);
382
+ }
383
+ }
384
+ }
385
+ }
386
+ // 递归检查子节点
387
+ if (obj.children && Array.isArray(obj.children)) {
388
+ for (const child of obj.children) {
389
+ components.push(...this.extractScriptComponents(child));
390
+ }
391
+ }
392
+ return [...new Set(components)];
393
+ }
394
+ /**
395
+ * 生成资源清单文件
396
+ */
397
+ generateManifest() {
398
+ const manifest = {
399
+ version: '1.0.0',
400
+ createdAt: new Date().toISOString(),
401
+ assetCount: this.exportedAssets.size,
402
+ assets: Array.from(this.exportedAssets.values()).map(asset => ({
403
+ uuid: asset.uuid,
404
+ name: asset.name,
405
+ path: asset.path,
406
+ type: asset.type,
407
+ size: asset.size
408
+ }))
409
+ };
410
+ const manifestPath = path.join(this.config.outputDir, 'asset-manifest.json');
411
+ (0, utils_1.writeJSON)(manifestPath, manifest);
412
+ console.log(`\n资源清单已生成: ${manifestPath}`);
413
+ }
414
+ /**
415
+ * 打印导出摘要
416
+ */
417
+ printSummary(result) {
418
+ console.log('\n========== 导出摘要 ==========');
419
+ console.log(`成功: ${result.successCount} 个`);
420
+ console.log(`失败: ${result.failCount} 个`);
421
+ console.log(`跳过: ${result.skipCount} 个`);
422
+ console.log(`耗时: ${(result.duration / 1000).toFixed(2)} 秒`);
423
+ // 按类型统计
424
+ const typeCount = new Map();
425
+ for (const asset of result.assets) {
426
+ const count = typeCount.get(asset.type) || 0;
427
+ typeCount.set(asset.type, count + 1);
428
+ }
429
+ console.log('\n资源类型分布:');
430
+ for (const [type, count] of typeCount) {
431
+ console.log(` ${type}: ${count} 个`);
432
+ }
433
+ if (result.errors.length > 0) {
434
+ console.log('\n错误信息:');
435
+ for (const error of result.errors.slice(0, 10)) {
436
+ console.log(` - ${error}`);
437
+ }
438
+ if (result.errors.length > 10) {
439
+ console.log(` ... 还有 ${result.errors.length - 10} 个错误`);
440
+ }
441
+ }
442
+ console.log('==============================\n');
443
+ }
444
+ /**
445
+ * 创建资源包
446
+ * @param name 包名称
447
+ * @param version 包版本
448
+ * @param description 包描述
449
+ * @returns 资源包对象
450
+ */
451
+ createAssetBundle(name, version = '1.0.0', description) {
452
+ const assets = Array.from(this.exportedAssets.values());
453
+ const totalSize = assets.reduce((sum, asset) => sum + asset.size, 0);
454
+ return {
455
+ name,
456
+ version,
457
+ assets,
458
+ totalSize,
459
+ createdAt: new Date(),
460
+ description
461
+ };
462
+ }
463
+ /**
464
+ * 保存资源包到文件
465
+ * @param bundle 资源包
466
+ * @param outputPath 输出路径
467
+ * @returns 是否保存成功
468
+ */
469
+ saveAssetBundle(bundle, outputPath) {
470
+ try {
471
+ (0, utils_1.ensureDir)(path.dirname(outputPath));
472
+ return (0, utils_1.writeJSON)(outputPath, bundle);
473
+ }
474
+ catch (error) {
475
+ console.error('保存资源包失败:', error);
476
+ return false;
477
+ }
478
+ }
479
+ }
480
+ exports.AssetExporter = AssetExporter;
481
+ exports.default = AssetExporter;
482
+ /**
483
+ * 快速导出函数
484
+ * @param config 导出配置
485
+ * @returns 导出结果
486
+ */
487
+ async function exportAssets(config) {
488
+ const exporter = new AssetExporter(config);
489
+ return exporter.export();
490
+ }
491
+ /**
492
+ * 从Cocos Creator项目导出资源
493
+ * @param projectPath 项目路径
494
+ * @param outputDir 输出目录
495
+ * @param options 额外选项
496
+ * @returns 导出结果
497
+ */
498
+ async function exportFromCocosProject(projectPath, outputDir, options) {
499
+ if (!(0, utils_1.isCocosProject)(projectPath)) {
500
+ throw new Error(`无效的Cocos Creator项目路径: ${projectPath}`);
501
+ }
502
+ const assetsDir = (0, utils_1.getAssetsDir)(projectPath);
503
+ if (!assetsDir) {
504
+ throw new Error(`无法找到项目的资源目录: ${projectPath}`);
505
+ }
506
+ const config = {
507
+ sourceDir: assetsDir,
508
+ outputDir,
509
+ ...options
510
+ };
511
+ return exportAssets(config);
512
+ }
513
+ //# sourceMappingURL=asset-exporter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"asset-exporter.js","sourceRoot":"","sources":["../src/asset-exporter.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAuhBH,oCAGC;AASD,wDAqBC;AAtjBD,uCAAyB;AACzB,2CAA6B;AAC7B,+CAcuB;AACvB,mCAciB;AAEjB;;GAEG;AACH,MAAa,aAAa;IAKtB,YAAY,MAAoB;QAHxB,mBAAc,GAA2B,IAAI,GAAG,EAAE,CAAC;QACnD,WAAM,GAAa,EAAE,CAAC;QAG1B,IAAI,CAAC,MAAM,GAAG;YACV,UAAU,EAAE,MAAM,CAAC,MAAM,CAAC,uBAAS,CAAC;YACpC,mBAAmB,EAAE,IAAI;YACzB,QAAQ,EAAE,KAAK;YACf,GAAG,MAAM;SACZ,CAAC;QACF,IAAA,iBAAS,EAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IACrC,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,MAAM;QACR,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAC7B,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,CAAC;QAC5B,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;QAEjB,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;QACzB,OAAO,CAAC,GAAG,CAAC,QAAQ,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC;QAC7C,OAAO,CAAC,GAAG,CAAC,SAAS,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC;QAE9C,IAAI,CAAC;YACD,WAAW;YACX,MAAM,KAAK,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;YACrC,OAAO,CAAC,GAAG,CAAC,MAAM,KAAK,CAAC,MAAM,QAAQ,CAAC,CAAC;YAExC,SAAS;YACT,MAAM,aAAa,GAAG,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;YACpD,OAAO,CAAC,GAAG,CAAC,cAAc,aAAa,CAAC,MAAM,IAAI,CAAC,CAAC;YAEpD,WAAW;YACX,MAAM,IAAA,oBAAY,EAAC,aAAa,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;YAEvE,SAAS;YACT,IAAI,CAAC,gBAAgB,EAAE,CAAC;YAExB,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;YACxC,MAAM,MAAM,GAAiB;gBACzB,MAAM,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,CAAC;gBAChD,YAAY,EAAE,IAAI,CAAC,cAAc,CAAC,IAAI;gBACtC,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM;gBAC7B,SAAS,EAAE,KAAK,CAAC,MAAM,GAAG,aAAa,CAAC,MAAM;gBAC9C,MAAM,EAAE,IAAI,CAAC,MAAM;gBACnB,QAAQ;gBACR,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS;aACnC,CAAC;YAEF,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;YAC1B,OAAO,MAAM,CAAC;QAClB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,MAAM,QAAQ,GAAG,aAAa,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;YACvF,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAC3B,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;YAExB,OAAO;gBACH,MAAM,EAAE,EAAE;gBACV,YAAY,EAAE,CAAC;gBACf,SAAS,EAAE,CAAC;gBACZ,SAAS,EAAE,CAAC;gBACZ,MAAM,EAAE,IAAI,CAAC,MAAM;gBACnB,QAAQ,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS;gBAChC,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS;aACnC,CAAC;QACN,CAAC;IACL,CAAC;IAED;;;OAGG;IACK,eAAe;QACnB,WAAW;QACX,MAAM,UAAU,GAAG;YACf,SAAS,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO;YAC1C,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM;YAChD,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;YAC9B,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM;YACzC,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM;SAC7C,CAAC;QAEF,OAAO,IAAA,mBAAW,EAAC,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;IAC1D,CAAC;IAED;;;;OAIG;IACK,iBAAiB,CAAC,KAAe;QACrC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,IAAI,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACjE,OAAO,KAAK,CAAC;QACjB,CAAC;QAED,OAAO,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE;YACvB,MAAM,SAAS,GAAG,IAAA,oBAAY,EAAC,IAAI,CAAC,CAAC;YACrC,OAAO,IAAI,CAAC,MAAM,CAAC,UAAW,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;QACvD,CAAC,CAAC,CAAC;IACP,CAAC;IAED;;;OAGG;IACK,KAAK,CAAC,WAAW,CAAC,QAAgB;QACtC,IAAI,CAAC;YACD,MAAM,SAAS,GAAG,IAAA,oBAAY,EAAC,QAAQ,CAAC,CAAC;YACzC,MAAM,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;YACpE,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;YAElE,SAAS;YACT,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;YAElE,WAAW;YACX,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC;gBACvD,OAAO;YACX,CAAC;YAED,YAAY;YACZ,MAAM,OAAO,GAAG,IAAA,gBAAQ,EAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;YAC/C,IAAI,CAAC,OAAO,EAAE,CAAC;gBACX,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,YAAY,EAAE,CAAC,CAAC;gBAC5C,OAAO;YACX,CAAC;YAED,iBAAiB;YACjB,MAAM,QAAQ,GAAG,QAAQ,GAAG,OAAO,CAAC;YACpC,IAAI,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAC1B,IAAA,gBAAQ,EAAC,QAAQ,EAAE,UAAU,GAAG,OAAO,CAAC,CAAC;YAC7C,CAAC;YAED,WAAW;YACX,MAAM,IAAI,CAAC,mBAAmB,CAAC,QAAQ,EAAE,UAAU,EAAE,SAAS,CAAC,CAAC;YAEhE,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;YACnD,OAAO,CAAC,GAAG,CAAC,SAAS,YAAY,KAAK,IAAA,sBAAc,EAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC7E,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,MAAM,QAAQ,GAAG,UAAU,QAAQ,KAAK,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;YACjG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAC3B,OAAO,CAAC,KAAK,CAAC,KAAK,QAAQ,EAAE,CAAC,CAAC;QACnC,CAAC;IACL,CAAC;IAED;;;;;OAKG;IACK,KAAK,CAAC,eAAe,CAAC,QAAgB,EAAE,SAAoB;QAChE,MAAM,IAAI,GAAG,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;QACnC,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC;QAC7D,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,WAAW,EAAE,CAAC;QACvD,MAAM,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;QAEpE,qBAAqB;QACrB,IAAI,IAAI,GAAG,IAAA,oBAAY,GAAE,CAAC;QAC1B,MAAM,QAAQ,GAAG,QAAQ,GAAG,OAAO,CAAC;QACpC,IAAI,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC1B,MAAM,IAAI,GAAG,IAAA,gBAAQ,EAAoB,QAAQ,CAAC,CAAC;YACnD,IAAI,IAAI,EAAE,IAAI,EAAE,CAAC;gBACb,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;YACrB,CAAC;QACL,CAAC;QAED,MAAM,QAAQ,GAAc;YACxB,IAAI;YACJ,IAAI;YACJ,IAAI,EAAE,YAAY;YAClB,IAAI,EAAE,SAAS;YACf,SAAS,EAAE,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;YAC7B,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,YAAY,EAAE,IAAI,CAAC,KAAK;SAC3B,CAAC;QAEF,eAAe;QACf,QAAQ,SAAS,EAAE,CAAC;YAChB,KAAK,uBAAS,CAAC,KAAK;gBAChB,OAAO,IAAI,CAAC,oBAAoB,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;YACzD,KAAK,uBAAS,CAAC,KAAK;gBAChB,OAAO,IAAI,CAAC,oBAAoB,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;YACzD,KAAK,uBAAS,CAAC,MAAM;gBACjB,OAAO,IAAI,CAAC,qBAAqB,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;YAC1D,KAAK,uBAAS,CAAC,KAAK;gBAChB,OAAO,IAAI,CAAC,oBAAoB,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;YACzD,KAAK,uBAAS,CAAC,MAAM;gBACjB,OAAO,IAAI,CAAC,qBAAqB,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;YAC1D,KAAK,uBAAS,CAAC,SAAS;gBACpB,OAAO,IAAI,CAAC,wBAAwB,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;YAC7D,KAAK,uBAAS,CAAC,IAAI;gBACf,OAAO,IAAI,CAAC,mBAAmB,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;YACxD,KAAK,uBAAS,CAAC,QAAQ;gBACnB,OAAO,IAAI,CAAC,uBAAuB,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;YAC5D;gBACI,OAAO,QAAQ,CAAC;QACxB,CAAC;IACL,CAAC;IAED;;OAEG;IACK,oBAAoB,CAAC,QAAgB,EAAE,QAAmB;QAC9D,MAAM,MAAM,GAAG,IAAA,sBAAc,EAAC,QAAQ,CAAC,IAAI,KAAK,CAAC;QAEjD,kBAAkB;QAClB,sBAAsB;QAEtB,OAAO;YACH,GAAG,QAAQ;YACX,IAAI,EAAE,uBAAS,CAAC,KAAK;YACrB,KAAK,EAAE,CAAC,EAAE,YAAY;YACtB,MAAM,EAAE,CAAC;YACT,MAAM;YACN,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC;SAC3D,CAAC;IACN,CAAC;IAED;;OAEG;IACK,oBAAoB,CAAC,QAAgB,EAAE,QAAmB;QAC9D,MAAM,MAAM,GAAG,IAAA,sBAAc,EAAC,QAAQ,CAAC,IAAI,KAAK,CAAC;QAEjD,OAAO;YACH,GAAG,QAAQ;YACX,IAAI,EAAE,uBAAS,CAAC,KAAK;YACrB,MAAM;YACN,IAAI,EAAE,KAAK;SACd,CAAC;IACN,CAAC;IAED;;OAEG;IACK,qBAAqB,CAAC,QAAgB,EAAE,QAAmB;QAC/D,MAAM,OAAO,GAAG,IAAA,gBAAQ,EAA0B,QAAQ,CAAC,CAAC;QAE5D,OAAO;YACH,GAAG,QAAQ;YACX,IAAI,EAAE,uBAAS,CAAC,MAAM;YACtB,SAAS,EAAE,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC;YACnC,gBAAgB,EAAE,IAAI,CAAC,uBAAuB,CAAC,OAAO,CAAC;SAC1D,CAAC;IACN,CAAC;IAED;;OAEG;IACK,oBAAoB,CAAC,QAAgB,EAAE,QAAmB;QAC9D,MAAM,OAAO,GAAG,IAAA,gBAAQ,EAA0B,QAAQ,CAAC,CAAC;QAE5D,OAAO;YACH,GAAG,QAAQ;YACX,IAAI,EAAE,uBAAS,CAAC,KAAK;YACrB,SAAS,EAAE,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC;SACtC,CAAC;IACN,CAAC;IAED;;OAEG;IACK,qBAAqB,CAAC,QAAgB,EAAE,QAAmB;QAC/D,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,WAAW,EAAE,CAAC;QAEjD,OAAO;YACH,GAAG,QAAQ;YACX,IAAI,EAAE,uBAAS,CAAC,MAAM;YACtB,QAAQ,EAAE,GAAG,KAAK,KAAK,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,YAAY;SACxD,CAAC;IACN,CAAC;IAED;;OAEG;IACK,wBAAwB,CAAC,QAAgB,EAAE,QAAmB;QAClE,MAAM,OAAO,GAAG,IAAA,gBAAQ,EAA0B,QAAQ,CAAC,CAAC;QAE5D,OAAO;YACH,GAAG,QAAQ;YACX,IAAI,EAAE,uBAAS,CAAC,SAAS;YACzB,QAAQ,EAAG,OAAO,EAAE,QAAmB,IAAI,CAAC;YAC5C,SAAS,EAAG,OAAO,EAAE,SAAoB,IAAI,EAAE;YAC/C,SAAS,EAAE,KAAK,CAAC,OAAO,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;SACtE,CAAC;IACN,CAAC;IAED;;OAEG;IACK,mBAAmB,CAAC,QAAgB,EAAE,QAAmB;QAC7D,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,WAAW,EAAE,CAAC;QACjD,IAAI,UAAU,GAA4B,KAAK,CAAC;QAEhD,IAAI,GAAG,KAAK,MAAM;YAAE,UAAU,GAAG,KAAK,CAAC;aAClC,IAAI,GAAG,KAAK,OAAO;YAAE,UAAU,GAAG,MAAM,CAAC;aACzC,IAAI,GAAG,KAAK,QAAQ;YAAE,UAAU,GAAG,OAAO,CAAC;aAC3C,IAAI,GAAG,KAAK,MAAM;YAAE,UAAU,GAAG,QAAQ,CAAC;QAE/C,OAAO;YACH,GAAG,QAAQ;YACX,IAAI,EAAE,uBAAS,CAAC,IAAI;YACpB,UAAU;SACb,CAAC;IACN,CAAC;IAED;;OAEG;IACK,uBAAuB,CAAC,QAAgB,EAAE,QAAmB;QACjE,MAAM,OAAO,GAAG,IAAA,gBAAQ,EAA0B,QAAQ,CAAC,CAAC;QAE5D,OAAO;YACH,GAAG,QAAQ;YACX,IAAI,EAAE,uBAAS,CAAC,QAAQ;YACxB,UAAU,EAAG,OAAO,EAAE,UAAqB,IAAI,EAAE;SACpD,CAAC;IACN,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,mBAAmB,CAC7B,WAAmB,EACnB,WAAmB,EACnB,SAAoB;QAEpB,uBAAuB;QACvB,2BAA2B;QAE3B,QAAQ,SAAS,CAAC,IAAI,EAAE,CAAC;YACrB,KAAK,uBAAS,CAAC,KAAK;gBAChB,eAAe;gBACf,MAAM;YACV,KAAK,uBAAS,CAAC,KAAK;gBAChB,eAAe;gBACf,MAAM;YACV;gBACI,MAAM;QACd,CAAC;IACL,CAAC;IAED;;OAEG;IACK,UAAU,CAAC,OAAgB;QAC/B,IAAI,CAAC,OAAO,IAAI,OAAO,OAAO,KAAK,QAAQ;YAAE,OAAO,CAAC,CAAC;QAEtD,IAAI,KAAK,GAAG,CAAC,CAAC;QACd,MAAM,GAAG,GAAG,OAAkC,CAAC;QAE/C,IAAI,GAAG,CAAC,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC9C,KAAK,IAAI,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC;YAC7B,KAAK,MAAM,KAAK,IAAI,GAAG,CAAC,QAAQ,EAAE,CAAC;gBAC/B,KAAK,IAAI,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;YACpC,CAAC;QACL,CAAC;QAED,OAAO,KAAK,CAAC;IACjB,CAAC;IAED;;OAEG;IACK,uBAAuB,CAAC,OAAgB;QAC5C,MAAM,UAAU,GAAa,EAAE,CAAC;QAEhC,IAAI,CAAC,OAAO,IAAI,OAAO,OAAO,KAAK,QAAQ;YAAE,OAAO,UAAU,CAAC;QAE/D,MAAM,GAAG,GAAG,OAAkC,CAAC;QAE/C,IAAI,GAAG,CAAC,UAAU,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC;YAClD,KAAK,MAAM,IAAI,IAAI,GAAG,CAAC,UAAU,EAAE,CAAC;gBAChC,IAAI,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAK,IAAgC,CAAC,IAAI,EAAE,CAAC;oBAC7E,MAAM,IAAI,GAAI,IAAgC,CAAC,IAAc,CAAC;oBAC9D,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;wBAClC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;oBAC1B,CAAC;gBACL,CAAC;YACL,CAAC;QACL,CAAC;QAED,UAAU;QACV,IAAI,GAAG,CAAC,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC9C,KAAK,MAAM,KAAK,IAAI,GAAG,CAAC,QAAQ,EAAE,CAAC;gBAC/B,UAAU,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,uBAAuB,CAAC,KAAK,CAAC,CAAC,CAAC;YAC5D,CAAC;QACL,CAAC;QAED,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC;IACpC,CAAC;IAED;;OAEG;IACK,gBAAgB;QACpB,MAAM,QAAQ,GAAG;YACb,OAAO,EAAE,OAAO;YAChB,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YACnC,UAAU,EAAE,IAAI,CAAC,cAAc,CAAC,IAAI;YACpC,MAAM,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;gBAC3D,IAAI,EAAE,KAAK,CAAC,IAAI;gBAChB,IAAI,EAAE,KAAK,CAAC,IAAI;gBAChB,IAAI,EAAE,KAAK,CAAC,IAAI;gBAChB,IAAI,EAAE,KAAK,CAAC,IAAI;gBAChB,IAAI,EAAE,KAAK,CAAC,IAAI;aACnB,CAAC,CAAC;SACN,CAAC;QAEF,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,qBAAqB,CAAC,CAAC;QAC7E,IAAA,iBAAS,EAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;QAClC,OAAO,CAAC,GAAG,CAAC,cAAc,YAAY,EAAE,CAAC,CAAC;IAC9C,CAAC;IAED;;OAEG;IACK,YAAY,CAAC,MAAoB;QACrC,OAAO,CAAC,GAAG,CAAC,8BAA8B,CAAC,CAAC;QAC5C,OAAO,CAAC,GAAG,CAAC,OAAO,MAAM,CAAC,YAAY,IAAI,CAAC,CAAC;QAC5C,OAAO,CAAC,GAAG,CAAC,OAAO,MAAM,CAAC,SAAS,IAAI,CAAC,CAAC;QACzC,OAAO,CAAC,GAAG,CAAC,OAAO,MAAM,CAAC,SAAS,IAAI,CAAC,CAAC;QACzC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QAE5D,QAAQ;QACR,MAAM,SAAS,GAAG,IAAI,GAAG,EAAqB,CAAC;QAC/C,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;YAChC,MAAM,KAAK,GAAG,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC7C,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC;QACzC,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;QACzB,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,SAAS,EAAE,CAAC;YACpC,OAAO,CAAC,GAAG,CAAC,KAAK,IAAI,KAAK,KAAK,IAAI,CAAC,CAAC;QACzC,CAAC;QAED,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC3B,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;YACvB,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC;gBAC7C,OAAO,CAAC,GAAG,CAAC,OAAO,KAAK,EAAE,CAAC,CAAC;YAChC,CAAC;YACD,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,EAAE,EAAE,CAAC;gBAC5B,OAAO,CAAC,GAAG,CAAC,YAAY,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,EAAE,MAAM,CAAC,CAAC;YAC7D,CAAC;QACL,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,kCAAkC,CAAC,CAAC;IACpD,CAAC;IAED;;;;;;OAMG;IACH,iBAAiB,CAAC,IAAY,EAAE,OAAO,GAAG,OAAO,EAAE,WAAoB;QACnE,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,CAAC,CAAC;QACxD,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE,CAAC,GAAG,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;QAErE,OAAO;YACH,IAAI;YACJ,OAAO;YACP,MAAM;YACN,SAAS;YACT,SAAS,EAAE,IAAI,IAAI,EAAE;YACrB,WAAW;SACd,CAAC;IACN,CAAC;IAED;;;;;OAKG;IACH,eAAe,CAAC,MAAmB,EAAE,UAAkB;QACnD,IAAI,CAAC;YACD,IAAA,iBAAS,EAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC;YACpC,OAAO,IAAA,iBAAS,EAAC,UAAU,EAAE,MAAM,CAAC,CAAC;QACzC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,OAAO,CAAC,KAAK,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;YACjC,OAAO,KAAK,CAAC;QACjB,CAAC;IACL,CAAC;CACJ;AA1eD,sCA0eC;AA0CyB,gCAAO;AAxCjC;;;;GAIG;AACI,KAAK,UAAU,YAAY,CAAC,MAAoB;IACnD,MAAM,QAAQ,GAAG,IAAI,aAAa,CAAC,MAAM,CAAC,CAAC;IAC3C,OAAO,QAAQ,CAAC,MAAM,EAAE,CAAC;AAC7B,CAAC;AAED;;;;;;GAMG;AACI,KAAK,UAAU,sBAAsB,CACxC,WAAmB,EACnB,SAAiB,EACjB,OAA+B;IAE/B,IAAI,CAAC,IAAA,sBAAc,EAAC,WAAW,CAAC,EAAE,CAAC;QAC/B,MAAM,IAAI,KAAK,CAAC,yBAAyB,WAAW,EAAE,CAAC,CAAC;IAC5D,CAAC;IAED,MAAM,SAAS,GAAG,IAAA,oBAAY,EAAC,WAAW,CAAC,CAAC;IAC5C,IAAI,CAAC,SAAS,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CAAC,gBAAgB,WAAW,EAAE,CAAC,CAAC;IACnD,CAAC;IAED,MAAM,MAAM,GAAiB;QACzB,SAAS,EAAE,SAAS;QACpB,SAAS;QACT,GAAG,OAAO;KACb,CAAC;IAEF,OAAO,YAAY,CAAC,MAAM,CAAC,CAAC;AAChC,CAAC"}