@easytwin/export 0.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.
- package/dist/index.cjs +511 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.ts +96 -0
- package/dist/index.js +500 -0
- package/dist/index.js.map +1 -0
- package/package.json +44 -0
package/dist/index.cjs
ADDED
|
@@ -0,0 +1,511 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var fflate = require('fflate');
|
|
4
|
+
var fileSaver = require('file-saver');
|
|
5
|
+
var JSZip = require('jszip');
|
|
6
|
+
var lodashEs = require('lodash-es');
|
|
7
|
+
var types = require('@easytwin/types');
|
|
8
|
+
var qs = require('qs');
|
|
9
|
+
|
|
10
|
+
function getCommonBase() {
|
|
11
|
+
return (typeof window !== "undefined" && window.__EASYTWIN_CONFIGS__?.commonBase) || "";
|
|
12
|
+
}
|
|
13
|
+
/** 获取 space-id,优先级:options.sid > URL 的 sid > __EASYTWIN_CONFIGS__.spaceId */
|
|
14
|
+
function getSpaceId(options) {
|
|
15
|
+
if (options?.sid)
|
|
16
|
+
return options.sid;
|
|
17
|
+
if (typeof window !== "undefined") {
|
|
18
|
+
const fromUrl = qs.parse(window.location?.search?.slice(1) ?? "");
|
|
19
|
+
if (fromUrl?.sid)
|
|
20
|
+
return (Array.isArray(fromUrl.sid) ? fromUrl.sid[0] : fromUrl.sid);
|
|
21
|
+
const config = window.__EASYTWIN_CONFIGS__;
|
|
22
|
+
if (config?.spaceId != null)
|
|
23
|
+
return String(config.spaceId);
|
|
24
|
+
}
|
|
25
|
+
return undefined;
|
|
26
|
+
}
|
|
27
|
+
function generateId() {
|
|
28
|
+
return Math.random().toString(36).slice(3, 20);
|
|
29
|
+
}
|
|
30
|
+
function checkStatus(response) {
|
|
31
|
+
switch (response.status) {
|
|
32
|
+
case 401:
|
|
33
|
+
case 418:
|
|
34
|
+
case 420:
|
|
35
|
+
return Promise.reject(new Error("用户未登录"));
|
|
36
|
+
case 403:
|
|
37
|
+
return Promise.reject(new Error("暂无产品权限"));
|
|
38
|
+
case 426:
|
|
39
|
+
return Promise.reject(new Error("证书已过期"));
|
|
40
|
+
case 500:
|
|
41
|
+
return Promise.reject(new Error("服务器端错误"));
|
|
42
|
+
case 200:
|
|
43
|
+
default:
|
|
44
|
+
return response.json();
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
function handleSuccess(response) {
|
|
48
|
+
if (response?.success) {
|
|
49
|
+
return response.data ?? response.success;
|
|
50
|
+
}
|
|
51
|
+
if (response.errorCode === 403018) {
|
|
52
|
+
return Promise.reject(new Error("您当前暂无EasyTwin使用权限,请联系空间管理员"));
|
|
53
|
+
}
|
|
54
|
+
if (response.code) {
|
|
55
|
+
return Promise.reject(response);
|
|
56
|
+
}
|
|
57
|
+
return Promise.reject(new Error(response.message ?? "请求失败"));
|
|
58
|
+
}
|
|
59
|
+
function handleError(error) {
|
|
60
|
+
if (error?.name !== "AbortError") {
|
|
61
|
+
return Promise.reject(error);
|
|
62
|
+
}
|
|
63
|
+
return Promise.resolve("");
|
|
64
|
+
}
|
|
65
|
+
async function request(url, options) {
|
|
66
|
+
const parts = url.split(" ");
|
|
67
|
+
let method = parts[0];
|
|
68
|
+
let path = parts[1];
|
|
69
|
+
if (!path) {
|
|
70
|
+
path = method;
|
|
71
|
+
method = "GET";
|
|
72
|
+
}
|
|
73
|
+
const { query = {}, params = {}, headers = {}, noSpaceId, sid } = options ?? {};
|
|
74
|
+
let { body } = options ?? {};
|
|
75
|
+
Object.keys(params).forEach((key) => {
|
|
76
|
+
path = path.replace(`{${key}}`, params[key]);
|
|
77
|
+
});
|
|
78
|
+
const queryStr = qs.stringify(query);
|
|
79
|
+
if (queryStr) {
|
|
80
|
+
path += `${path.includes("?") ? "&" : "?"}${queryStr}`;
|
|
81
|
+
}
|
|
82
|
+
if (!(body instanceof FormData) && typeof body !== "string") {
|
|
83
|
+
body = body ? JSON.stringify(body) : undefined;
|
|
84
|
+
}
|
|
85
|
+
const COMMON_BASE = getCommonBase();
|
|
86
|
+
const defaultHeaders = {
|
|
87
|
+
"x-request-id": generateId(),
|
|
88
|
+
};
|
|
89
|
+
const spaceId = getSpaceId(options);
|
|
90
|
+
if (!noSpaceId && spaceId) {
|
|
91
|
+
defaultHeaders["space-id"] = spaceId;
|
|
92
|
+
}
|
|
93
|
+
return fetch(`${COMMON_BASE}${path}`, {
|
|
94
|
+
...options,
|
|
95
|
+
method,
|
|
96
|
+
body,
|
|
97
|
+
headers: {
|
|
98
|
+
...defaultHeaders,
|
|
99
|
+
...(body instanceof FormData ? {} : { "content-type": "application/json" }),
|
|
100
|
+
...headers,
|
|
101
|
+
},
|
|
102
|
+
})
|
|
103
|
+
.then(checkStatus)
|
|
104
|
+
.then(handleSuccess)
|
|
105
|
+
.catch(handleError);
|
|
106
|
+
}
|
|
107
|
+
async function exportProject(query, options) {
|
|
108
|
+
return request(types.apis.projectsIdExportGet, {
|
|
109
|
+
params: { id: query.id },
|
|
110
|
+
sid: options?.sid ?? query.sid,
|
|
111
|
+
});
|
|
112
|
+
}
|
|
113
|
+
async function getCustomComponents(query, options) {
|
|
114
|
+
return request(types.apis.customComponentsGet, {
|
|
115
|
+
query: Object.assign({ isLatest: false }, query),
|
|
116
|
+
sid: options?.sid,
|
|
117
|
+
});
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
const FeatZipSubfix = ".easytwin";
|
|
121
|
+
|
|
122
|
+
exports.FileTypeEnum = void 0;
|
|
123
|
+
(function (FileTypeEnum) {
|
|
124
|
+
FileTypeEnum["MODEL"] = "model";
|
|
125
|
+
FileTypeEnum["IMAGE"] = "image";
|
|
126
|
+
FileTypeEnum["HDR"] = "hdr";
|
|
127
|
+
FileTypeEnum["VIDEO"] = "video";
|
|
128
|
+
FileTypeEnum["JSON"] = "json";
|
|
129
|
+
})(exports.FileTypeEnum || (exports.FileTypeEnum = {}));
|
|
130
|
+
const FeatModelExt = ["glb"];
|
|
131
|
+
const FeatImageExt = [
|
|
132
|
+
"jpg",
|
|
133
|
+
"jpeg",
|
|
134
|
+
"png",
|
|
135
|
+
"pjp",
|
|
136
|
+
"pjpeg",
|
|
137
|
+
"svg",
|
|
138
|
+
"ico",
|
|
139
|
+
"tif",
|
|
140
|
+
"tiff",
|
|
141
|
+
"bmp",
|
|
142
|
+
];
|
|
143
|
+
const FeatVideoExt = ["mp4", "webm", "avi"];
|
|
144
|
+
const projectExportMainConfig = {
|
|
145
|
+
version: undefined, // 兼容旧数据
|
|
146
|
+
url: {
|
|
147
|
+
project: "project_info.json",
|
|
148
|
+
file: "file_info.json",
|
|
149
|
+
},
|
|
150
|
+
};
|
|
151
|
+
const projectExportMainConfigV2 = {
|
|
152
|
+
version: "2.0",
|
|
153
|
+
url: {
|
|
154
|
+
project: "project_info.json",
|
|
155
|
+
file: "file_info.json",
|
|
156
|
+
},
|
|
157
|
+
};
|
|
158
|
+
const ProjectExportMainFileName = "main.json";
|
|
159
|
+
|
|
160
|
+
function isNil(val) {
|
|
161
|
+
return val === null || val === undefined;
|
|
162
|
+
}
|
|
163
|
+
const loopHandle = async (dataList, callback, index = 0) => {
|
|
164
|
+
const cloneData = [...dataList];
|
|
165
|
+
const first = cloneData.shift();
|
|
166
|
+
if (first === undefined)
|
|
167
|
+
return;
|
|
168
|
+
await callback(first, index);
|
|
169
|
+
await loopHandle(cloneData, callback, index + 1);
|
|
170
|
+
};
|
|
171
|
+
const sliceFileName = (fileName, length = 32, includesExt = false) => {
|
|
172
|
+
const extIndex = fileName.lastIndexOf(".");
|
|
173
|
+
if (extIndex === -1)
|
|
174
|
+
return fileName.slice(0, length);
|
|
175
|
+
const ext = fileName.slice(extIndex + 1).toLocaleLowerCase();
|
|
176
|
+
if (fileName.length > length) {
|
|
177
|
+
return includesExt
|
|
178
|
+
? `${fileName.slice(0, length - 1 - ext.length)}.${ext}`
|
|
179
|
+
: `${fileName.slice(0, length - 1 - ext.length)}`;
|
|
180
|
+
}
|
|
181
|
+
return includesExt ? fileName : `${fileName.slice(0, fileName.length - 1 - ext.length)}`;
|
|
182
|
+
};
|
|
183
|
+
const getFileNameAndExt = (file, length = 32) => {
|
|
184
|
+
const f = typeof file === "string" ? file : file.name;
|
|
185
|
+
const name = sliceFileName(f, length, true);
|
|
186
|
+
const index = name.lastIndexOf(".");
|
|
187
|
+
const fileName = index === -1 ? name : name.substring(0, index);
|
|
188
|
+
const ext = index === -1 ? "" : name.slice(index + 1).toLocaleLowerCase();
|
|
189
|
+
return { fileName, ext };
|
|
190
|
+
};
|
|
191
|
+
function getAssetsPrefix() {
|
|
192
|
+
return window.__EASYTWIN_CONFIGS__?.assetsPrefix || "";
|
|
193
|
+
}
|
|
194
|
+
function resolveRelativePath(path) {
|
|
195
|
+
let prefix = getAssetsPrefix();
|
|
196
|
+
if (prefix.endsWith("/")) {
|
|
197
|
+
prefix = prefix.slice(0, -1);
|
|
198
|
+
}
|
|
199
|
+
if (!path.startsWith("/")) {
|
|
200
|
+
path = "/" + path;
|
|
201
|
+
}
|
|
202
|
+
return `${prefix}${path}`;
|
|
203
|
+
}
|
|
204
|
+
function getNowDateTime() {
|
|
205
|
+
const date = new Date();
|
|
206
|
+
const pad = (n) => n.toString().padStart(2, "0");
|
|
207
|
+
const Y = date.getFullYear();
|
|
208
|
+
const M = pad(date.getMonth() + 1);
|
|
209
|
+
const D = pad(date.getDate());
|
|
210
|
+
const h = pad(date.getHours());
|
|
211
|
+
const m = pad(date.getMinutes());
|
|
212
|
+
const s = pad(date.getSeconds());
|
|
213
|
+
return `${Y}${M}${D}_${h}${m}${s}`;
|
|
214
|
+
}
|
|
215
|
+
const extTypeMap = new Map([
|
|
216
|
+
[exports.FileTypeEnum.HDR, ["hdr"]],
|
|
217
|
+
[exports.FileTypeEnum.IMAGE, FeatImageExt],
|
|
218
|
+
[exports.FileTypeEnum.MODEL, FeatModelExt],
|
|
219
|
+
[exports.FileTypeEnum.JSON, ["json"]],
|
|
220
|
+
[exports.FileTypeEnum.VIDEO, FeatVideoExt],
|
|
221
|
+
]);
|
|
222
|
+
class FileUtil {
|
|
223
|
+
static calcFileType(ext) {
|
|
224
|
+
for (const [key, value] of extTypeMap) {
|
|
225
|
+
if (value.includes(ext))
|
|
226
|
+
return key;
|
|
227
|
+
}
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
function getTypeVersionKey(type, version) {
|
|
231
|
+
return `${type}@${version}`;
|
|
232
|
+
}
|
|
233
|
+
async function requestFile(req, callbacks, responseType) {
|
|
234
|
+
try {
|
|
235
|
+
const response = await fetch(req);
|
|
236
|
+
if (response.ok) {
|
|
237
|
+
if (responseType === "arraybuffer")
|
|
238
|
+
return await response.arrayBuffer();
|
|
239
|
+
if (responseType === "blob")
|
|
240
|
+
;
|
|
241
|
+
if (responseType === "json")
|
|
242
|
+
;
|
|
243
|
+
return await response.text();
|
|
244
|
+
}
|
|
245
|
+
throw new Error(`fetch for "${req}" responded with ${response.status}: ${response.statusText}`);
|
|
246
|
+
}
|
|
247
|
+
catch (err) {
|
|
248
|
+
console.error("requestFile error:", err);
|
|
249
|
+
return undefined;
|
|
250
|
+
}
|
|
251
|
+
}
|
|
252
|
+
|
|
253
|
+
const SCRIPT_FILE_NAME = "script.js";
|
|
254
|
+
const BP_FILE_NAME = "blueprintNodeTemplate.json";
|
|
255
|
+
/**
|
|
256
|
+
* 导出项目压缩包
|
|
257
|
+
*/
|
|
258
|
+
const exportZipV2 = async (query, messageId, exportResource, message) => {
|
|
259
|
+
const { id: projectId, sid } = query;
|
|
260
|
+
const projectAllInfo = await exportProject(query, { sid });
|
|
261
|
+
if (!projectAllInfo)
|
|
262
|
+
return;
|
|
263
|
+
const zip = new JSZip();
|
|
264
|
+
const { scenes = [] } = projectAllInfo;
|
|
265
|
+
const [sceneInfo] = scenes;
|
|
266
|
+
if (!sceneInfo)
|
|
267
|
+
return;
|
|
268
|
+
const projectInfo = projectAllInfo.project;
|
|
269
|
+
console.log("projectInfo", projectAllInfo);
|
|
270
|
+
// 项目文件夹名称
|
|
271
|
+
const folderName = `${projectInfo.name || "未分组"}_${projectId}_${getNowDateTime()}`;
|
|
272
|
+
zip.file(ProjectExportMainFileName, JSON.stringify(projectExportMainConfigV2));
|
|
273
|
+
// 所有需要上传服务器的资源(图片/视频/模型等)路径
|
|
274
|
+
const allFileUrls = [];
|
|
275
|
+
// 下载用户资源
|
|
276
|
+
const handleCopyFileAndPushInfo = async (url, type, source = "user") => {
|
|
277
|
+
if (isNil(url) || url === "")
|
|
278
|
+
return;
|
|
279
|
+
const realUrl = url[0] === "/" ? url.substring(1) : url; // 去除路径开头的'/'
|
|
280
|
+
// data/assets官方资源
|
|
281
|
+
// /easytwin/system系统资源(要导出来独立部署导进去)
|
|
282
|
+
// /easytwin/<userId(new)|accountId(old)>用户资源V1
|
|
283
|
+
// /easytwin/resource/<image|model|hdr|video> 用户资源V2
|
|
284
|
+
if (realUrl.startsWith("easytwin/system") && source === "user")
|
|
285
|
+
return;
|
|
286
|
+
if (allFileUrls.find((a) => a.url === realUrl))
|
|
287
|
+
return;
|
|
288
|
+
const { ext } = getFileNameAndExt(url);
|
|
289
|
+
type ??= FileUtil.calcFileType(ext);
|
|
290
|
+
if (!type)
|
|
291
|
+
return;
|
|
292
|
+
allFileUrls.push({
|
|
293
|
+
url: realUrl,
|
|
294
|
+
source,
|
|
295
|
+
type,
|
|
296
|
+
});
|
|
297
|
+
const resouceUrl = resolveRelativePath(realUrl);
|
|
298
|
+
console.log("导出资源", realUrl);
|
|
299
|
+
await fetch(resouceUrl)
|
|
300
|
+
.then((res) => {
|
|
301
|
+
if (res.status === 200) {
|
|
302
|
+
return res.blob();
|
|
303
|
+
}
|
|
304
|
+
return Promise.reject(new Error("文件下载失败"));
|
|
305
|
+
})
|
|
306
|
+
.then((result) => {
|
|
307
|
+
zip.file(realUrl, result);
|
|
308
|
+
});
|
|
309
|
+
};
|
|
310
|
+
const handleWriteJsonFile = async (fileUrl, data) => {
|
|
311
|
+
zip.file(fileUrl, JSON.stringify(data));
|
|
312
|
+
};
|
|
313
|
+
message?.success?.({
|
|
314
|
+
id: messageId,
|
|
315
|
+
type: "loading",
|
|
316
|
+
content: "压缩场景资源",
|
|
317
|
+
duration: 0,
|
|
318
|
+
});
|
|
319
|
+
const exportResources = async () => {
|
|
320
|
+
const exportComp = async (obj) => {
|
|
321
|
+
if (isNil(obj))
|
|
322
|
+
return;
|
|
323
|
+
if (Array.isArray(obj)) {
|
|
324
|
+
const promises = obj.map((a) => exportComp(a));
|
|
325
|
+
await Promise.all(promises);
|
|
326
|
+
return;
|
|
327
|
+
}
|
|
328
|
+
for (const key in obj) {
|
|
329
|
+
if (Object.prototype.hasOwnProperty.call(obj, key)) {
|
|
330
|
+
const value = obj[key];
|
|
331
|
+
if (key.match(/\$[rR]$/) && typeof value === "string") {
|
|
332
|
+
await handleCopyFileAndPushInfo(value);
|
|
333
|
+
}
|
|
334
|
+
else if (lodashEs.isPlainObject(value)) {
|
|
335
|
+
await exportComp(value);
|
|
336
|
+
}
|
|
337
|
+
}
|
|
338
|
+
}
|
|
339
|
+
};
|
|
340
|
+
const set = new Set();
|
|
341
|
+
await loopHandle(projectAllInfo.components, async (comp, index) => {
|
|
342
|
+
if (!comp.version)
|
|
343
|
+
throw new Error(`comp${comp}没有版本号`);
|
|
344
|
+
// 导出组件配置资源
|
|
345
|
+
console.log("导出组件资源");
|
|
346
|
+
await exportComp(comp.data);
|
|
347
|
+
comp.states && (await loopHandle(comp.states, async (s) => exportComp(s)));
|
|
348
|
+
// 导出组件静态资源
|
|
349
|
+
const typeVersionKey = getTypeVersionKey(comp.type, comp.version);
|
|
350
|
+
if (!set.has(typeVersionKey)) {
|
|
351
|
+
set.add(typeVersionKey);
|
|
352
|
+
// 下载 script 文件并加入 zip
|
|
353
|
+
const baseUrl = resolveRelativePath(`/easytwin/system/components/custom/${comp.type}/${comp.version}`);
|
|
354
|
+
const basePath = `easytwin/system/components/custom/${comp.type}/${comp.version}`;
|
|
355
|
+
const scriptBuffer = (await requestFile(`${baseUrl}/${SCRIPT_FILE_NAME}`, undefined, "arraybuffer"));
|
|
356
|
+
if (scriptBuffer) {
|
|
357
|
+
zip.file(`${basePath}/${SCRIPT_FILE_NAME}`, new Uint8Array(scriptBuffer));
|
|
358
|
+
}
|
|
359
|
+
// 下载 blueprint 文件并加入 zip
|
|
360
|
+
const bpBuffer = (await requestFile(`${baseUrl}/${BP_FILE_NAME}`, undefined, "arraybuffer"));
|
|
361
|
+
if (bpBuffer) {
|
|
362
|
+
zip.file(`${basePath}/${BP_FILE_NAME}`, new Uint8Array(bpBuffer));
|
|
363
|
+
}
|
|
364
|
+
const info = (await getCustomComponents({ type: comp.type, version: comp.version }, { sid }))[0];
|
|
365
|
+
if (info) {
|
|
366
|
+
const assets = info.content.assets || [];
|
|
367
|
+
for (const asset of assets) {
|
|
368
|
+
await handleCopyFileAndPushInfo(asset, undefined, "system");
|
|
369
|
+
}
|
|
370
|
+
}
|
|
371
|
+
else {
|
|
372
|
+
console.warn(`数据库不存在组件${typeVersionKey}的记录`);
|
|
373
|
+
}
|
|
374
|
+
}
|
|
375
|
+
message?.loading?.({
|
|
376
|
+
id: messageId,
|
|
377
|
+
content: `压缩场景资源${index}/${projectAllInfo.components.length}`,
|
|
378
|
+
duration: 0,
|
|
379
|
+
});
|
|
380
|
+
});
|
|
381
|
+
console.log("resources", projectAllInfo.scenes[0].resources);
|
|
382
|
+
// export materials and textures
|
|
383
|
+
await loopHandle(projectAllInfo.scenes[0].resources, async (resource, index) => {
|
|
384
|
+
switch (resource.type) {
|
|
385
|
+
case "texture": {
|
|
386
|
+
// xx.glb
|
|
387
|
+
const url = resource.config.userData?.source?.url;
|
|
388
|
+
if (!isNil(url))
|
|
389
|
+
await handleCopyFileAndPushInfo(url);
|
|
390
|
+
break;
|
|
391
|
+
}
|
|
392
|
+
case "image": {
|
|
393
|
+
// 贴图列表
|
|
394
|
+
const url = resource.config.url;
|
|
395
|
+
if (!isNil(url))
|
|
396
|
+
await handleCopyFileAndPushInfo(url);
|
|
397
|
+
break;
|
|
398
|
+
}
|
|
399
|
+
case "publicMaterial": {
|
|
400
|
+
const config = resource.config;
|
|
401
|
+
for (const key in config) {
|
|
402
|
+
if (key.toLocaleLowerCase().endsWith("map")) {
|
|
403
|
+
const a = config[key];
|
|
404
|
+
if (typeof a !== "string") {
|
|
405
|
+
// 旧
|
|
406
|
+
const url = a.userData?.source?.url;
|
|
407
|
+
// 新
|
|
408
|
+
const imgurl = a.source?.url;
|
|
409
|
+
if (!isNil(url))
|
|
410
|
+
await handleCopyFileAndPushInfo(url);
|
|
411
|
+
if (!isNil(imgurl))
|
|
412
|
+
await handleCopyFileAndPushInfo(imgurl);
|
|
413
|
+
}
|
|
414
|
+
}
|
|
415
|
+
}
|
|
416
|
+
break;
|
|
417
|
+
}
|
|
418
|
+
}
|
|
419
|
+
message?.loading?.({
|
|
420
|
+
id: messageId,
|
|
421
|
+
content: `压缩材质和纹理资源${index}/${projectAllInfo.scenes[0].resources.length}`,
|
|
422
|
+
duration: 0,
|
|
423
|
+
});
|
|
424
|
+
});
|
|
425
|
+
};
|
|
426
|
+
if (exportResource) {
|
|
427
|
+
await exportResources();
|
|
428
|
+
}
|
|
429
|
+
// 保存项目配置中的资源
|
|
430
|
+
message?.loading?.({
|
|
431
|
+
id: messageId,
|
|
432
|
+
content: "压缩项目预览图中..",
|
|
433
|
+
duration: 0,
|
|
434
|
+
});
|
|
435
|
+
await handleCopyFileAndPushInfo(projectInfo.thumb, "image");
|
|
436
|
+
message?.loading?.({
|
|
437
|
+
id: messageId,
|
|
438
|
+
content: "正在导出压缩包..",
|
|
439
|
+
duration: 0,
|
|
440
|
+
});
|
|
441
|
+
const { url: exportUrl } = projectExportMainConfig;
|
|
442
|
+
// 写入 project 数据文件
|
|
443
|
+
await handleWriteJsonFile(exportUrl.project, projectAllInfo);
|
|
444
|
+
// 写入静态文件
|
|
445
|
+
await handleWriteJsonFile(exportUrl.file, allFileUrls);
|
|
446
|
+
// 导出压缩文件
|
|
447
|
+
return zip.generateAsync({ type: "blob" }).then((blob) => {
|
|
448
|
+
fileSaver.saveAs(blob, `${folderName}${FeatZipSubfix}`);
|
|
449
|
+
});
|
|
450
|
+
};
|
|
451
|
+
const exportCustomComponent = async (comp) => {
|
|
452
|
+
const { type, version, name, classification, source, content, description } = comp;
|
|
453
|
+
const url = resolveRelativePath(`/easytwin/system/components/custom/${type}/${version}`);
|
|
454
|
+
const scriptBuffer = (await requestFile(url + `/${SCRIPT_FILE_NAME}`, undefined, "arraybuffer"));
|
|
455
|
+
const bpBuffer = (await requestFile(url + `/${BP_FILE_NAME}`, undefined, "arraybuffer"));
|
|
456
|
+
const json = await getCustomComponents({
|
|
457
|
+
type,
|
|
458
|
+
version,
|
|
459
|
+
classification: classification,
|
|
460
|
+
sources: source ? [source] : undefined,
|
|
461
|
+
});
|
|
462
|
+
const mainJson = {
|
|
463
|
+
...json[0],
|
|
464
|
+
fileEntry: {
|
|
465
|
+
script: SCRIPT_FILE_NAME,
|
|
466
|
+
blueprint: BP_FILE_NAME,
|
|
467
|
+
},
|
|
468
|
+
};
|
|
469
|
+
if (isNil(json) || json.length === 0) {
|
|
470
|
+
console.error(`服务器上不存在${getTypeVersionKey(type, version)}组件的配置文件`);
|
|
471
|
+
return;
|
|
472
|
+
}
|
|
473
|
+
if (isNil(scriptBuffer)) {
|
|
474
|
+
console.error(`服务器上不存在${getTypeVersionKey(type, version)}组件的脚本文件`);
|
|
475
|
+
return;
|
|
476
|
+
}
|
|
477
|
+
const mainJsonU8 = new TextEncoder().encode(JSON.stringify(mainJson));
|
|
478
|
+
const scriptU8 = new Uint8Array(scriptBuffer);
|
|
479
|
+
const data = { [SCRIPT_FILE_NAME]: scriptU8, "main.json": mainJsonU8 };
|
|
480
|
+
if (bpBuffer) {
|
|
481
|
+
const bpU8 = new Uint8Array(bpBuffer);
|
|
482
|
+
data[BP_FILE_NAME] = bpU8;
|
|
483
|
+
}
|
|
484
|
+
else {
|
|
485
|
+
mainJson.fileEntry.blueprint === undefined;
|
|
486
|
+
}
|
|
487
|
+
// 导出静态资源
|
|
488
|
+
if (content.assets) {
|
|
489
|
+
for (const asset of content.assets) {
|
|
490
|
+
const file = (await requestFile(resolveRelativePath(asset), undefined, "arraybuffer"));
|
|
491
|
+
if (file) {
|
|
492
|
+
data[asset] = new Uint8Array(file);
|
|
493
|
+
}
|
|
494
|
+
}
|
|
495
|
+
}
|
|
496
|
+
const compressed = fflate.zipSync(data);
|
|
497
|
+
const blob = new Blob([compressed.buffer], { type: "application/zip" });
|
|
498
|
+
return blob;
|
|
499
|
+
};
|
|
500
|
+
|
|
501
|
+
exports.BP_FILE_NAME = BP_FILE_NAME;
|
|
502
|
+
exports.FeatImageExt = FeatImageExt;
|
|
503
|
+
exports.FeatModelExt = FeatModelExt;
|
|
504
|
+
exports.FeatVideoExt = FeatVideoExt;
|
|
505
|
+
exports.ProjectExportMainFileName = ProjectExportMainFileName;
|
|
506
|
+
exports.SCRIPT_FILE_NAME = SCRIPT_FILE_NAME;
|
|
507
|
+
exports.exportCustomComponent = exportCustomComponent;
|
|
508
|
+
exports.exportZipV2 = exportZipV2;
|
|
509
|
+
exports.projectExportMainConfig = projectExportMainConfig;
|
|
510
|
+
exports.projectExportMainConfigV2 = projectExportMainConfigV2;
|
|
511
|
+
//# sourceMappingURL=index.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.cjs","sources":["../src/api.ts","../src/constants.ts","../src/types.ts","../src/utils.ts","../src/export.ts"],"sourcesContent":[null,null,null,null,null],"names":["apis","FileTypeEnum","isPlainObject","saveAs","zipSync"],"mappings":"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"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
import { ExportProjectVo } from '@easytwin/types';
|
|
2
|
+
|
|
3
|
+
declare enum FileTypeEnum {
|
|
4
|
+
MODEL = "model",
|
|
5
|
+
IMAGE = "image",
|
|
6
|
+
HDR = "hdr",
|
|
7
|
+
VIDEO = "video",
|
|
8
|
+
JSON = "json"
|
|
9
|
+
}
|
|
10
|
+
declare const FeatModelExt: string[];
|
|
11
|
+
declare const FeatImageExt: string[];
|
|
12
|
+
declare const FeatVideoExt: string[];
|
|
13
|
+
type CustomComponentContent = {
|
|
14
|
+
assets: string[];
|
|
15
|
+
};
|
|
16
|
+
type ExportProjectQuery = {
|
|
17
|
+
id: string;
|
|
18
|
+
exportResource?: boolean;
|
|
19
|
+
sid?: string;
|
|
20
|
+
};
|
|
21
|
+
interface ProjectExportMainConfigType {
|
|
22
|
+
version: string | undefined;
|
|
23
|
+
url: {
|
|
24
|
+
project: string;
|
|
25
|
+
file: string;
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
interface ProjectExportFileInfoType {
|
|
29
|
+
url: string;
|
|
30
|
+
/** 是组件默认用静态资源还是用户配置资源 */
|
|
31
|
+
source?: "system" | "user";
|
|
32
|
+
type: "model" | "video" | "hdr" | "image" | "modelPacket" | "material" | "texture" | "json";
|
|
33
|
+
}
|
|
34
|
+
declare const projectExportMainConfig: ProjectExportMainConfigType;
|
|
35
|
+
declare const projectExportMainConfigV2: ProjectExportMainConfigType;
|
|
36
|
+
declare const ProjectExportMainFileName: string;
|
|
37
|
+
type ExportProjectData = ExportProjectVo;
|
|
38
|
+
type ExportMessageMap = {
|
|
39
|
+
loading?: (args: {
|
|
40
|
+
content: string;
|
|
41
|
+
id?: string;
|
|
42
|
+
type?: string;
|
|
43
|
+
duration?: number;
|
|
44
|
+
}) => void;
|
|
45
|
+
success?: (args: {
|
|
46
|
+
content: string;
|
|
47
|
+
id?: string;
|
|
48
|
+
type?: string;
|
|
49
|
+
duration?: number;
|
|
50
|
+
}) => void;
|
|
51
|
+
error?: (args: {
|
|
52
|
+
content: string;
|
|
53
|
+
id?: string;
|
|
54
|
+
type?: string;
|
|
55
|
+
duration?: number;
|
|
56
|
+
}) => void;
|
|
57
|
+
info?: (args: {
|
|
58
|
+
content: string;
|
|
59
|
+
id?: string;
|
|
60
|
+
type?: string;
|
|
61
|
+
duration?: number;
|
|
62
|
+
}) => void;
|
|
63
|
+
};
|
|
64
|
+
|
|
65
|
+
declare const SCRIPT_FILE_NAME = "script.js";
|
|
66
|
+
declare const BP_FILE_NAME = "blueprintNodeTemplate.json";
|
|
67
|
+
type ScriptMainJson = {
|
|
68
|
+
source: string;
|
|
69
|
+
type: string;
|
|
70
|
+
version: string;
|
|
71
|
+
classification: string;
|
|
72
|
+
name: string;
|
|
73
|
+
content: CustomComponentContent;
|
|
74
|
+
description: string;
|
|
75
|
+
fileEntry: {
|
|
76
|
+
script: string;
|
|
77
|
+
blueprint: string | undefined;
|
|
78
|
+
};
|
|
79
|
+
};
|
|
80
|
+
/** 后台管理导出自定义组件使用 */
|
|
81
|
+
type ExportCustomComponentParam = {
|
|
82
|
+
name: string;
|
|
83
|
+
type: string;
|
|
84
|
+
version: string;
|
|
85
|
+
classification: string;
|
|
86
|
+
source: string;
|
|
87
|
+
description: string;
|
|
88
|
+
content: CustomComponentContent;
|
|
89
|
+
};
|
|
90
|
+
/**
|
|
91
|
+
* 导出项目压缩包
|
|
92
|
+
*/
|
|
93
|
+
declare const exportZipV2: (query: ExportProjectQuery, messageId: string, exportResource: boolean, message?: ExportMessageMap) => Promise<void>;
|
|
94
|
+
declare const exportCustomComponent: (comp: ExportCustomComponentParam) => Promise<Blob | undefined>;
|
|
95
|
+
|
|
96
|
+
export { BP_FILE_NAME, CustomComponentContent, ExportCustomComponentParam, ExportMessageMap, ExportProjectData, ExportProjectQuery, FeatImageExt, FeatModelExt, FeatVideoExt, FileTypeEnum, ProjectExportFileInfoType, ProjectExportMainConfigType, ProjectExportMainFileName, SCRIPT_FILE_NAME, ScriptMainJson, exportCustomComponent, exportZipV2, projectExportMainConfig, projectExportMainConfigV2 };
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,500 @@
|
|
|
1
|
+
import { zipSync } from 'fflate';
|
|
2
|
+
import { saveAs } from 'file-saver';
|
|
3
|
+
import JSZip from 'jszip';
|
|
4
|
+
import { isPlainObject } from 'lodash-es';
|
|
5
|
+
import { apis } from '@easytwin/types';
|
|
6
|
+
import qs from 'qs';
|
|
7
|
+
|
|
8
|
+
function getCommonBase() {
|
|
9
|
+
return (typeof window !== "undefined" && window.__EASYTWIN_CONFIGS__?.commonBase) || "";
|
|
10
|
+
}
|
|
11
|
+
/** 获取 space-id,优先级:options.sid > URL 的 sid > __EASYTWIN_CONFIGS__.spaceId */
|
|
12
|
+
function getSpaceId(options) {
|
|
13
|
+
if (options?.sid)
|
|
14
|
+
return options.sid;
|
|
15
|
+
if (typeof window !== "undefined") {
|
|
16
|
+
const fromUrl = qs.parse(window.location?.search?.slice(1) ?? "");
|
|
17
|
+
if (fromUrl?.sid)
|
|
18
|
+
return (Array.isArray(fromUrl.sid) ? fromUrl.sid[0] : fromUrl.sid);
|
|
19
|
+
const config = window.__EASYTWIN_CONFIGS__;
|
|
20
|
+
if (config?.spaceId != null)
|
|
21
|
+
return String(config.spaceId);
|
|
22
|
+
}
|
|
23
|
+
return undefined;
|
|
24
|
+
}
|
|
25
|
+
function generateId() {
|
|
26
|
+
return Math.random().toString(36).slice(3, 20);
|
|
27
|
+
}
|
|
28
|
+
function checkStatus(response) {
|
|
29
|
+
switch (response.status) {
|
|
30
|
+
case 401:
|
|
31
|
+
case 418:
|
|
32
|
+
case 420:
|
|
33
|
+
return Promise.reject(new Error("用户未登录"));
|
|
34
|
+
case 403:
|
|
35
|
+
return Promise.reject(new Error("暂无产品权限"));
|
|
36
|
+
case 426:
|
|
37
|
+
return Promise.reject(new Error("证书已过期"));
|
|
38
|
+
case 500:
|
|
39
|
+
return Promise.reject(new Error("服务器端错误"));
|
|
40
|
+
case 200:
|
|
41
|
+
default:
|
|
42
|
+
return response.json();
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
function handleSuccess(response) {
|
|
46
|
+
if (response?.success) {
|
|
47
|
+
return response.data ?? response.success;
|
|
48
|
+
}
|
|
49
|
+
if (response.errorCode === 403018) {
|
|
50
|
+
return Promise.reject(new Error("您当前暂无EasyTwin使用权限,请联系空间管理员"));
|
|
51
|
+
}
|
|
52
|
+
if (response.code) {
|
|
53
|
+
return Promise.reject(response);
|
|
54
|
+
}
|
|
55
|
+
return Promise.reject(new Error(response.message ?? "请求失败"));
|
|
56
|
+
}
|
|
57
|
+
function handleError(error) {
|
|
58
|
+
if (error?.name !== "AbortError") {
|
|
59
|
+
return Promise.reject(error);
|
|
60
|
+
}
|
|
61
|
+
return Promise.resolve("");
|
|
62
|
+
}
|
|
63
|
+
async function request(url, options) {
|
|
64
|
+
const parts = url.split(" ");
|
|
65
|
+
let method = parts[0];
|
|
66
|
+
let path = parts[1];
|
|
67
|
+
if (!path) {
|
|
68
|
+
path = method;
|
|
69
|
+
method = "GET";
|
|
70
|
+
}
|
|
71
|
+
const { query = {}, params = {}, headers = {}, noSpaceId, sid } = options ?? {};
|
|
72
|
+
let { body } = options ?? {};
|
|
73
|
+
Object.keys(params).forEach((key) => {
|
|
74
|
+
path = path.replace(`{${key}}`, params[key]);
|
|
75
|
+
});
|
|
76
|
+
const queryStr = qs.stringify(query);
|
|
77
|
+
if (queryStr) {
|
|
78
|
+
path += `${path.includes("?") ? "&" : "?"}${queryStr}`;
|
|
79
|
+
}
|
|
80
|
+
if (!(body instanceof FormData) && typeof body !== "string") {
|
|
81
|
+
body = body ? JSON.stringify(body) : undefined;
|
|
82
|
+
}
|
|
83
|
+
const COMMON_BASE = getCommonBase();
|
|
84
|
+
const defaultHeaders = {
|
|
85
|
+
"x-request-id": generateId(),
|
|
86
|
+
};
|
|
87
|
+
const spaceId = getSpaceId(options);
|
|
88
|
+
if (!noSpaceId && spaceId) {
|
|
89
|
+
defaultHeaders["space-id"] = spaceId;
|
|
90
|
+
}
|
|
91
|
+
return fetch(`${COMMON_BASE}${path}`, {
|
|
92
|
+
...options,
|
|
93
|
+
method,
|
|
94
|
+
body,
|
|
95
|
+
headers: {
|
|
96
|
+
...defaultHeaders,
|
|
97
|
+
...(body instanceof FormData ? {} : { "content-type": "application/json" }),
|
|
98
|
+
...headers,
|
|
99
|
+
},
|
|
100
|
+
})
|
|
101
|
+
.then(checkStatus)
|
|
102
|
+
.then(handleSuccess)
|
|
103
|
+
.catch(handleError);
|
|
104
|
+
}
|
|
105
|
+
async function exportProject(query, options) {
|
|
106
|
+
return request(apis.projectsIdExportGet, {
|
|
107
|
+
params: { id: query.id },
|
|
108
|
+
sid: options?.sid ?? query.sid,
|
|
109
|
+
});
|
|
110
|
+
}
|
|
111
|
+
async function getCustomComponents(query, options) {
|
|
112
|
+
return request(apis.customComponentsGet, {
|
|
113
|
+
query: Object.assign({ isLatest: false }, query),
|
|
114
|
+
sid: options?.sid,
|
|
115
|
+
});
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
const FeatZipSubfix = ".easytwin";
|
|
119
|
+
|
|
120
|
+
var FileTypeEnum;
|
|
121
|
+
(function (FileTypeEnum) {
|
|
122
|
+
FileTypeEnum["MODEL"] = "model";
|
|
123
|
+
FileTypeEnum["IMAGE"] = "image";
|
|
124
|
+
FileTypeEnum["HDR"] = "hdr";
|
|
125
|
+
FileTypeEnum["VIDEO"] = "video";
|
|
126
|
+
FileTypeEnum["JSON"] = "json";
|
|
127
|
+
})(FileTypeEnum || (FileTypeEnum = {}));
|
|
128
|
+
const FeatModelExt = ["glb"];
|
|
129
|
+
const FeatImageExt = [
|
|
130
|
+
"jpg",
|
|
131
|
+
"jpeg",
|
|
132
|
+
"png",
|
|
133
|
+
"pjp",
|
|
134
|
+
"pjpeg",
|
|
135
|
+
"svg",
|
|
136
|
+
"ico",
|
|
137
|
+
"tif",
|
|
138
|
+
"tiff",
|
|
139
|
+
"bmp",
|
|
140
|
+
];
|
|
141
|
+
const FeatVideoExt = ["mp4", "webm", "avi"];
|
|
142
|
+
const projectExportMainConfig = {
|
|
143
|
+
version: undefined, // 兼容旧数据
|
|
144
|
+
url: {
|
|
145
|
+
project: "project_info.json",
|
|
146
|
+
file: "file_info.json",
|
|
147
|
+
},
|
|
148
|
+
};
|
|
149
|
+
const projectExportMainConfigV2 = {
|
|
150
|
+
version: "2.0",
|
|
151
|
+
url: {
|
|
152
|
+
project: "project_info.json",
|
|
153
|
+
file: "file_info.json",
|
|
154
|
+
},
|
|
155
|
+
};
|
|
156
|
+
const ProjectExportMainFileName = "main.json";
|
|
157
|
+
|
|
158
|
+
function isNil(val) {
|
|
159
|
+
return val === null || val === undefined;
|
|
160
|
+
}
|
|
161
|
+
const loopHandle = async (dataList, callback, index = 0) => {
|
|
162
|
+
const cloneData = [...dataList];
|
|
163
|
+
const first = cloneData.shift();
|
|
164
|
+
if (first === undefined)
|
|
165
|
+
return;
|
|
166
|
+
await callback(first, index);
|
|
167
|
+
await loopHandle(cloneData, callback, index + 1);
|
|
168
|
+
};
|
|
169
|
+
const sliceFileName = (fileName, length = 32, includesExt = false) => {
|
|
170
|
+
const extIndex = fileName.lastIndexOf(".");
|
|
171
|
+
if (extIndex === -1)
|
|
172
|
+
return fileName.slice(0, length);
|
|
173
|
+
const ext = fileName.slice(extIndex + 1).toLocaleLowerCase();
|
|
174
|
+
if (fileName.length > length) {
|
|
175
|
+
return includesExt
|
|
176
|
+
? `${fileName.slice(0, length - 1 - ext.length)}.${ext}`
|
|
177
|
+
: `${fileName.slice(0, length - 1 - ext.length)}`;
|
|
178
|
+
}
|
|
179
|
+
return includesExt ? fileName : `${fileName.slice(0, fileName.length - 1 - ext.length)}`;
|
|
180
|
+
};
|
|
181
|
+
const getFileNameAndExt = (file, length = 32) => {
|
|
182
|
+
const f = typeof file === "string" ? file : file.name;
|
|
183
|
+
const name = sliceFileName(f, length, true);
|
|
184
|
+
const index = name.lastIndexOf(".");
|
|
185
|
+
const fileName = index === -1 ? name : name.substring(0, index);
|
|
186
|
+
const ext = index === -1 ? "" : name.slice(index + 1).toLocaleLowerCase();
|
|
187
|
+
return { fileName, ext };
|
|
188
|
+
};
|
|
189
|
+
function getAssetsPrefix() {
|
|
190
|
+
return window.__EASYTWIN_CONFIGS__?.assetsPrefix || "";
|
|
191
|
+
}
|
|
192
|
+
function resolveRelativePath(path) {
|
|
193
|
+
let prefix = getAssetsPrefix();
|
|
194
|
+
if (prefix.endsWith("/")) {
|
|
195
|
+
prefix = prefix.slice(0, -1);
|
|
196
|
+
}
|
|
197
|
+
if (!path.startsWith("/")) {
|
|
198
|
+
path = "/" + path;
|
|
199
|
+
}
|
|
200
|
+
return `${prefix}${path}`;
|
|
201
|
+
}
|
|
202
|
+
function getNowDateTime() {
|
|
203
|
+
const date = new Date();
|
|
204
|
+
const pad = (n) => n.toString().padStart(2, "0");
|
|
205
|
+
const Y = date.getFullYear();
|
|
206
|
+
const M = pad(date.getMonth() + 1);
|
|
207
|
+
const D = pad(date.getDate());
|
|
208
|
+
const h = pad(date.getHours());
|
|
209
|
+
const m = pad(date.getMinutes());
|
|
210
|
+
const s = pad(date.getSeconds());
|
|
211
|
+
return `${Y}${M}${D}_${h}${m}${s}`;
|
|
212
|
+
}
|
|
213
|
+
const extTypeMap = new Map([
|
|
214
|
+
[FileTypeEnum.HDR, ["hdr"]],
|
|
215
|
+
[FileTypeEnum.IMAGE, FeatImageExt],
|
|
216
|
+
[FileTypeEnum.MODEL, FeatModelExt],
|
|
217
|
+
[FileTypeEnum.JSON, ["json"]],
|
|
218
|
+
[FileTypeEnum.VIDEO, FeatVideoExt],
|
|
219
|
+
]);
|
|
220
|
+
class FileUtil {
|
|
221
|
+
static calcFileType(ext) {
|
|
222
|
+
for (const [key, value] of extTypeMap) {
|
|
223
|
+
if (value.includes(ext))
|
|
224
|
+
return key;
|
|
225
|
+
}
|
|
226
|
+
}
|
|
227
|
+
}
|
|
228
|
+
function getTypeVersionKey(type, version) {
|
|
229
|
+
return `${type}@${version}`;
|
|
230
|
+
}
|
|
231
|
+
async function requestFile(req, callbacks, responseType) {
|
|
232
|
+
try {
|
|
233
|
+
const response = await fetch(req);
|
|
234
|
+
if (response.ok) {
|
|
235
|
+
if (responseType === "arraybuffer")
|
|
236
|
+
return await response.arrayBuffer();
|
|
237
|
+
if (responseType === "blob")
|
|
238
|
+
;
|
|
239
|
+
if (responseType === "json")
|
|
240
|
+
;
|
|
241
|
+
return await response.text();
|
|
242
|
+
}
|
|
243
|
+
throw new Error(`fetch for "${req}" responded with ${response.status}: ${response.statusText}`);
|
|
244
|
+
}
|
|
245
|
+
catch (err) {
|
|
246
|
+
console.error("requestFile error:", err);
|
|
247
|
+
return undefined;
|
|
248
|
+
}
|
|
249
|
+
}
|
|
250
|
+
|
|
251
|
+
const SCRIPT_FILE_NAME = "script.js";
|
|
252
|
+
const BP_FILE_NAME = "blueprintNodeTemplate.json";
|
|
253
|
+
/**
|
|
254
|
+
* 导出项目压缩包
|
|
255
|
+
*/
|
|
256
|
+
const exportZipV2 = async (query, messageId, exportResource, message) => {
|
|
257
|
+
const { id: projectId, sid } = query;
|
|
258
|
+
const projectAllInfo = await exportProject(query, { sid });
|
|
259
|
+
if (!projectAllInfo)
|
|
260
|
+
return;
|
|
261
|
+
const zip = new JSZip();
|
|
262
|
+
const { scenes = [] } = projectAllInfo;
|
|
263
|
+
const [sceneInfo] = scenes;
|
|
264
|
+
if (!sceneInfo)
|
|
265
|
+
return;
|
|
266
|
+
const projectInfo = projectAllInfo.project;
|
|
267
|
+
console.log("projectInfo", projectAllInfo);
|
|
268
|
+
// 项目文件夹名称
|
|
269
|
+
const folderName = `${projectInfo.name || "未分组"}_${projectId}_${getNowDateTime()}`;
|
|
270
|
+
zip.file(ProjectExportMainFileName, JSON.stringify(projectExportMainConfigV2));
|
|
271
|
+
// 所有需要上传服务器的资源(图片/视频/模型等)路径
|
|
272
|
+
const allFileUrls = [];
|
|
273
|
+
// 下载用户资源
|
|
274
|
+
const handleCopyFileAndPushInfo = async (url, type, source = "user") => {
|
|
275
|
+
if (isNil(url) || url === "")
|
|
276
|
+
return;
|
|
277
|
+
const realUrl = url[0] === "/" ? url.substring(1) : url; // 去除路径开头的'/'
|
|
278
|
+
// data/assets官方资源
|
|
279
|
+
// /easytwin/system系统资源(要导出来独立部署导进去)
|
|
280
|
+
// /easytwin/<userId(new)|accountId(old)>用户资源V1
|
|
281
|
+
// /easytwin/resource/<image|model|hdr|video> 用户资源V2
|
|
282
|
+
if (realUrl.startsWith("easytwin/system") && source === "user")
|
|
283
|
+
return;
|
|
284
|
+
if (allFileUrls.find((a) => a.url === realUrl))
|
|
285
|
+
return;
|
|
286
|
+
const { ext } = getFileNameAndExt(url);
|
|
287
|
+
type ??= FileUtil.calcFileType(ext);
|
|
288
|
+
if (!type)
|
|
289
|
+
return;
|
|
290
|
+
allFileUrls.push({
|
|
291
|
+
url: realUrl,
|
|
292
|
+
source,
|
|
293
|
+
type,
|
|
294
|
+
});
|
|
295
|
+
const resouceUrl = resolveRelativePath(realUrl);
|
|
296
|
+
console.log("导出资源", realUrl);
|
|
297
|
+
await fetch(resouceUrl)
|
|
298
|
+
.then((res) => {
|
|
299
|
+
if (res.status === 200) {
|
|
300
|
+
return res.blob();
|
|
301
|
+
}
|
|
302
|
+
return Promise.reject(new Error("文件下载失败"));
|
|
303
|
+
})
|
|
304
|
+
.then((result) => {
|
|
305
|
+
zip.file(realUrl, result);
|
|
306
|
+
});
|
|
307
|
+
};
|
|
308
|
+
const handleWriteJsonFile = async (fileUrl, data) => {
|
|
309
|
+
zip.file(fileUrl, JSON.stringify(data));
|
|
310
|
+
};
|
|
311
|
+
message?.success?.({
|
|
312
|
+
id: messageId,
|
|
313
|
+
type: "loading",
|
|
314
|
+
content: "压缩场景资源",
|
|
315
|
+
duration: 0,
|
|
316
|
+
});
|
|
317
|
+
const exportResources = async () => {
|
|
318
|
+
const exportComp = async (obj) => {
|
|
319
|
+
if (isNil(obj))
|
|
320
|
+
return;
|
|
321
|
+
if (Array.isArray(obj)) {
|
|
322
|
+
const promises = obj.map((a) => exportComp(a));
|
|
323
|
+
await Promise.all(promises);
|
|
324
|
+
return;
|
|
325
|
+
}
|
|
326
|
+
for (const key in obj) {
|
|
327
|
+
if (Object.prototype.hasOwnProperty.call(obj, key)) {
|
|
328
|
+
const value = obj[key];
|
|
329
|
+
if (key.match(/\$[rR]$/) && typeof value === "string") {
|
|
330
|
+
await handleCopyFileAndPushInfo(value);
|
|
331
|
+
}
|
|
332
|
+
else if (isPlainObject(value)) {
|
|
333
|
+
await exportComp(value);
|
|
334
|
+
}
|
|
335
|
+
}
|
|
336
|
+
}
|
|
337
|
+
};
|
|
338
|
+
const set = new Set();
|
|
339
|
+
await loopHandle(projectAllInfo.components, async (comp, index) => {
|
|
340
|
+
if (!comp.version)
|
|
341
|
+
throw new Error(`comp${comp}没有版本号`);
|
|
342
|
+
// 导出组件配置资源
|
|
343
|
+
console.log("导出组件资源");
|
|
344
|
+
await exportComp(comp.data);
|
|
345
|
+
comp.states && (await loopHandle(comp.states, async (s) => exportComp(s)));
|
|
346
|
+
// 导出组件静态资源
|
|
347
|
+
const typeVersionKey = getTypeVersionKey(comp.type, comp.version);
|
|
348
|
+
if (!set.has(typeVersionKey)) {
|
|
349
|
+
set.add(typeVersionKey);
|
|
350
|
+
// 下载 script 文件并加入 zip
|
|
351
|
+
const baseUrl = resolveRelativePath(`/easytwin/system/components/custom/${comp.type}/${comp.version}`);
|
|
352
|
+
const basePath = `easytwin/system/components/custom/${comp.type}/${comp.version}`;
|
|
353
|
+
const scriptBuffer = (await requestFile(`${baseUrl}/${SCRIPT_FILE_NAME}`, undefined, "arraybuffer"));
|
|
354
|
+
if (scriptBuffer) {
|
|
355
|
+
zip.file(`${basePath}/${SCRIPT_FILE_NAME}`, new Uint8Array(scriptBuffer));
|
|
356
|
+
}
|
|
357
|
+
// 下载 blueprint 文件并加入 zip
|
|
358
|
+
const bpBuffer = (await requestFile(`${baseUrl}/${BP_FILE_NAME}`, undefined, "arraybuffer"));
|
|
359
|
+
if (bpBuffer) {
|
|
360
|
+
zip.file(`${basePath}/${BP_FILE_NAME}`, new Uint8Array(bpBuffer));
|
|
361
|
+
}
|
|
362
|
+
const info = (await getCustomComponents({ type: comp.type, version: comp.version }, { sid }))[0];
|
|
363
|
+
if (info) {
|
|
364
|
+
const assets = info.content.assets || [];
|
|
365
|
+
for (const asset of assets) {
|
|
366
|
+
await handleCopyFileAndPushInfo(asset, undefined, "system");
|
|
367
|
+
}
|
|
368
|
+
}
|
|
369
|
+
else {
|
|
370
|
+
console.warn(`数据库不存在组件${typeVersionKey}的记录`);
|
|
371
|
+
}
|
|
372
|
+
}
|
|
373
|
+
message?.loading?.({
|
|
374
|
+
id: messageId,
|
|
375
|
+
content: `压缩场景资源${index}/${projectAllInfo.components.length}`,
|
|
376
|
+
duration: 0,
|
|
377
|
+
});
|
|
378
|
+
});
|
|
379
|
+
console.log("resources", projectAllInfo.scenes[0].resources);
|
|
380
|
+
// export materials and textures
|
|
381
|
+
await loopHandle(projectAllInfo.scenes[0].resources, async (resource, index) => {
|
|
382
|
+
switch (resource.type) {
|
|
383
|
+
case "texture": {
|
|
384
|
+
// xx.glb
|
|
385
|
+
const url = resource.config.userData?.source?.url;
|
|
386
|
+
if (!isNil(url))
|
|
387
|
+
await handleCopyFileAndPushInfo(url);
|
|
388
|
+
break;
|
|
389
|
+
}
|
|
390
|
+
case "image": {
|
|
391
|
+
// 贴图列表
|
|
392
|
+
const url = resource.config.url;
|
|
393
|
+
if (!isNil(url))
|
|
394
|
+
await handleCopyFileAndPushInfo(url);
|
|
395
|
+
break;
|
|
396
|
+
}
|
|
397
|
+
case "publicMaterial": {
|
|
398
|
+
const config = resource.config;
|
|
399
|
+
for (const key in config) {
|
|
400
|
+
if (key.toLocaleLowerCase().endsWith("map")) {
|
|
401
|
+
const a = config[key];
|
|
402
|
+
if (typeof a !== "string") {
|
|
403
|
+
// 旧
|
|
404
|
+
const url = a.userData?.source?.url;
|
|
405
|
+
// 新
|
|
406
|
+
const imgurl = a.source?.url;
|
|
407
|
+
if (!isNil(url))
|
|
408
|
+
await handleCopyFileAndPushInfo(url);
|
|
409
|
+
if (!isNil(imgurl))
|
|
410
|
+
await handleCopyFileAndPushInfo(imgurl);
|
|
411
|
+
}
|
|
412
|
+
}
|
|
413
|
+
}
|
|
414
|
+
break;
|
|
415
|
+
}
|
|
416
|
+
}
|
|
417
|
+
message?.loading?.({
|
|
418
|
+
id: messageId,
|
|
419
|
+
content: `压缩材质和纹理资源${index}/${projectAllInfo.scenes[0].resources.length}`,
|
|
420
|
+
duration: 0,
|
|
421
|
+
});
|
|
422
|
+
});
|
|
423
|
+
};
|
|
424
|
+
if (exportResource) {
|
|
425
|
+
await exportResources();
|
|
426
|
+
}
|
|
427
|
+
// 保存项目配置中的资源
|
|
428
|
+
message?.loading?.({
|
|
429
|
+
id: messageId,
|
|
430
|
+
content: "压缩项目预览图中..",
|
|
431
|
+
duration: 0,
|
|
432
|
+
});
|
|
433
|
+
await handleCopyFileAndPushInfo(projectInfo.thumb, "image");
|
|
434
|
+
message?.loading?.({
|
|
435
|
+
id: messageId,
|
|
436
|
+
content: "正在导出压缩包..",
|
|
437
|
+
duration: 0,
|
|
438
|
+
});
|
|
439
|
+
const { url: exportUrl } = projectExportMainConfig;
|
|
440
|
+
// 写入 project 数据文件
|
|
441
|
+
await handleWriteJsonFile(exportUrl.project, projectAllInfo);
|
|
442
|
+
// 写入静态文件
|
|
443
|
+
await handleWriteJsonFile(exportUrl.file, allFileUrls);
|
|
444
|
+
// 导出压缩文件
|
|
445
|
+
return zip.generateAsync({ type: "blob" }).then((blob) => {
|
|
446
|
+
saveAs(blob, `${folderName}${FeatZipSubfix}`);
|
|
447
|
+
});
|
|
448
|
+
};
|
|
449
|
+
const exportCustomComponent = async (comp) => {
|
|
450
|
+
const { type, version, name, classification, source, content, description } = comp;
|
|
451
|
+
const url = resolveRelativePath(`/easytwin/system/components/custom/${type}/${version}`);
|
|
452
|
+
const scriptBuffer = (await requestFile(url + `/${SCRIPT_FILE_NAME}`, undefined, "arraybuffer"));
|
|
453
|
+
const bpBuffer = (await requestFile(url + `/${BP_FILE_NAME}`, undefined, "arraybuffer"));
|
|
454
|
+
const json = await getCustomComponents({
|
|
455
|
+
type,
|
|
456
|
+
version,
|
|
457
|
+
classification: classification,
|
|
458
|
+
sources: source ? [source] : undefined,
|
|
459
|
+
});
|
|
460
|
+
const mainJson = {
|
|
461
|
+
...json[0],
|
|
462
|
+
fileEntry: {
|
|
463
|
+
script: SCRIPT_FILE_NAME,
|
|
464
|
+
blueprint: BP_FILE_NAME,
|
|
465
|
+
},
|
|
466
|
+
};
|
|
467
|
+
if (isNil(json) || json.length === 0) {
|
|
468
|
+
console.error(`服务器上不存在${getTypeVersionKey(type, version)}组件的配置文件`);
|
|
469
|
+
return;
|
|
470
|
+
}
|
|
471
|
+
if (isNil(scriptBuffer)) {
|
|
472
|
+
console.error(`服务器上不存在${getTypeVersionKey(type, version)}组件的脚本文件`);
|
|
473
|
+
return;
|
|
474
|
+
}
|
|
475
|
+
const mainJsonU8 = new TextEncoder().encode(JSON.stringify(mainJson));
|
|
476
|
+
const scriptU8 = new Uint8Array(scriptBuffer);
|
|
477
|
+
const data = { [SCRIPT_FILE_NAME]: scriptU8, "main.json": mainJsonU8 };
|
|
478
|
+
if (bpBuffer) {
|
|
479
|
+
const bpU8 = new Uint8Array(bpBuffer);
|
|
480
|
+
data[BP_FILE_NAME] = bpU8;
|
|
481
|
+
}
|
|
482
|
+
else {
|
|
483
|
+
mainJson.fileEntry.blueprint === undefined;
|
|
484
|
+
}
|
|
485
|
+
// 导出静态资源
|
|
486
|
+
if (content.assets) {
|
|
487
|
+
for (const asset of content.assets) {
|
|
488
|
+
const file = (await requestFile(resolveRelativePath(asset), undefined, "arraybuffer"));
|
|
489
|
+
if (file) {
|
|
490
|
+
data[asset] = new Uint8Array(file);
|
|
491
|
+
}
|
|
492
|
+
}
|
|
493
|
+
}
|
|
494
|
+
const compressed = zipSync(data);
|
|
495
|
+
const blob = new Blob([compressed.buffer], { type: "application/zip" });
|
|
496
|
+
return blob;
|
|
497
|
+
};
|
|
498
|
+
|
|
499
|
+
export { BP_FILE_NAME, FeatImageExt, FeatModelExt, FeatVideoExt, FileTypeEnum, ProjectExportMainFileName, SCRIPT_FILE_NAME, exportCustomComponent, exportZipV2, projectExportMainConfig, projectExportMainConfigV2 };
|
|
500
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../src/api.ts","../src/constants.ts","../src/types.ts","../src/utils.ts","../src/export.ts"],"sourcesContent":[null,null,null,null,null],"names":[],"mappings":"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"}
|
package/package.json
ADDED
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@easytwin/export",
|
|
3
|
+
"private": false,
|
|
4
|
+
"version": "0.0.0",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"main": "./dist/index.cjs",
|
|
7
|
+
"module": "./dist/index.js",
|
|
8
|
+
"types": "./dist/index.d.ts",
|
|
9
|
+
"exports": {
|
|
10
|
+
".": {
|
|
11
|
+
"import": "./dist/index.js",
|
|
12
|
+
"require": "./dist/index.cjs",
|
|
13
|
+
"types": "./dist/index.d.ts"
|
|
14
|
+
}
|
|
15
|
+
},
|
|
16
|
+
"files": [
|
|
17
|
+
"dist"
|
|
18
|
+
],
|
|
19
|
+
"devDependencies": {
|
|
20
|
+
"@rollup/plugin-alias": "^5.0.1",
|
|
21
|
+
"@rollup/plugin-commonjs": "^25.0.7",
|
|
22
|
+
"@rollup/plugin-node-resolve": "^15.2.3",
|
|
23
|
+
"@rollup/plugin-typescript": "^11.1.1",
|
|
24
|
+
"@types/file-saver": "2.0.5",
|
|
25
|
+
"@types/lodash-es": "4.17.6",
|
|
26
|
+
"@types/qs": "^6.9.0",
|
|
27
|
+
"rollup": "^4.24.0",
|
|
28
|
+
"rollup-plugin-dts": "^5.3.1",
|
|
29
|
+
"typescript": "~5.9.3",
|
|
30
|
+
"@easytwin/types": "0.0.1"
|
|
31
|
+
},
|
|
32
|
+
"dependencies": {
|
|
33
|
+
"fflate": "^0.8.2",
|
|
34
|
+
"file-saver": "2.0.5",
|
|
35
|
+
"jszip": "3.10.1",
|
|
36
|
+
"lodash-es": "4.17.21",
|
|
37
|
+
"qs": "^6.11.0"
|
|
38
|
+
},
|
|
39
|
+
"scripts": {
|
|
40
|
+
"dev": "rollup --config rollup.config.js -w",
|
|
41
|
+
"build": "rimraf dist && rollup --config rollup.config.js",
|
|
42
|
+
"publish:npm": "pnpm publish --registry=https://registry.npmjs.org/ --access=public --no-git-checks"
|
|
43
|
+
}
|
|
44
|
+
}
|