digitaltwin-core 0.13.0 → 0.13.1
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/components/tileset_manager.d.ts +5 -13
- package/dist/components/tileset_manager.d.ts.map +1 -1
- package/dist/components/tileset_manager.js +128 -238
- package/dist/components/tileset_manager.js.map +1 -1
- package/dist/engine/upload_processor.d.ts +2 -38
- package/dist/engine/upload_processor.d.ts.map +1 -1
- package/dist/engine/upload_processor.js +22 -94
- package/dist/engine/upload_processor.js.map +1 -1
- package/dist/types/data_record.d.ts +16 -0
- package/dist/types/data_record.d.ts.map +1 -1
- package/dist/utils/map_to_data_record.d.ts.map +1 -1
- package/dist/utils/map_to_data_record.js +5 -1
- package/dist/utils/map_to_data_record.js.map +1 -1
- package/dist/utils/zip_utils.d.ts.map +1 -1
- package/dist/utils/zip_utils.js +37 -18
- package/dist/utils/zip_utils.js.map +1 -1
- package/package.json +1 -1
|
@@ -92,27 +92,19 @@ export declare abstract class TilesetManager extends AssetsManager implements As
|
|
|
92
92
|
*/
|
|
93
93
|
handleUpload(req: any): Promise<DataResponse>;
|
|
94
94
|
/**
|
|
95
|
-
*
|
|
96
|
-
* @private
|
|
95
|
+
* Queue upload for background processing. Returns HTTP 202 immediately.
|
|
97
96
|
*/
|
|
98
97
|
private handleAsyncUpload;
|
|
99
98
|
/**
|
|
100
|
-
*
|
|
101
|
-
* @private
|
|
99
|
+
* Process upload synchronously (fallback when queue unavailable).
|
|
102
100
|
*/
|
|
103
101
|
private handleSyncUpload;
|
|
104
102
|
/**
|
|
105
|
-
* Get
|
|
103
|
+
* Get upload status for polling. Returns: pending | processing | completed | failed
|
|
106
104
|
*/
|
|
107
105
|
handleGetStatus(req: any): Promise<DataResponse>;
|
|
108
106
|
/**
|
|
109
|
-
* Serve
|
|
110
|
-
*
|
|
111
|
-
* This endpoint allows Cesium to load tileset.json and all referenced files
|
|
112
|
-
* (tiles, textures, etc.) using relative paths.
|
|
113
|
-
*
|
|
114
|
-
* @param req - HTTP request with params.id and params['0'] (file path)
|
|
115
|
-
* @returns DataResponse with file content
|
|
107
|
+
* Serve extracted tileset file (tileset.json, .b3dm, textures, etc.)
|
|
116
108
|
*/
|
|
117
109
|
handleGetFile(req: any): Promise<DataResponse>;
|
|
118
110
|
/**
|
|
@@ -124,7 +116,7 @@ export declare abstract class TilesetManager extends AssetsManager implements As
|
|
|
124
116
|
*/
|
|
125
117
|
retrieve(req?: any): Promise<DataResponse>;
|
|
126
118
|
/**
|
|
127
|
-
*
|
|
119
|
+
* Delete tileset and all extracted files from storage.
|
|
128
120
|
*/
|
|
129
121
|
handleDelete(req: any): Promise<DataResponse>;
|
|
130
122
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tileset_manager.d.ts","sourceRoot":"","sources":["../../src/components/tileset_manager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA;AACnD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAC9C,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAA;AAC/D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAA;AAIxD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AAExD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAA;AAGnC;;GAEG;AACH,MAAM,WAAW,kBAAkB;IAC/B,EAAE,CAAC,EAAE,MAAM,CAAA;IACX,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,GAAG,EAAE,MAAM,CAAA;IACX,IAAI,EAAE,IAAI,CAAA;IACV,WAAW,EAAE,MAAM,CAAA;IACnB,MAAM,EAAE,MAAM,CAAA;IACd,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAA;IACvB,QAAQ,EAAE,MAAM,CAAA;IAChB,SAAS,CAAC,EAAE,OAAO,CAAA;IAEnB,UAAU,CAAC,EAAE;QACT,KAAK,EAAE,KAAK,CAAC;YACT,IAAI,EAAE,MAAM,CAAA;YACZ,IAAI,EAAE,MAAM,CAAA;YACZ,IAAI,EAAE,MAAM,CAAA;SACf,CAAC,CAAA;QACF,SAAS,CAAC,EAAE,MAAM,CAAA;KACrB,CAAA;CACJ;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AACH,8BAAsB,cAAe,SAAQ,aAAc,YAAW,eAAe;IACjF,6DAA6D;IAC7D,SAAS,CAAC,WAAW,EAAE,KAAK,GAAG,IAAI,CAAO;IAE1C;;;OAGG;IACH,cAAc,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI;IAGlC;;;;;;;;;;;;;;;;OAgBG;IACG,YAAY,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"tileset_manager.d.ts","sourceRoot":"","sources":["../../src/components/tileset_manager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA;AACnD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAC9C,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAA;AAC/D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAA;AAIxD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AAExD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAA;AAGnC;;GAEG;AACH,MAAM,WAAW,kBAAkB;IAC/B,EAAE,CAAC,EAAE,MAAM,CAAA;IACX,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,GAAG,EAAE,MAAM,CAAA;IACX,IAAI,EAAE,IAAI,CAAA;IACV,WAAW,EAAE,MAAM,CAAA;IACnB,MAAM,EAAE,MAAM,CAAA;IACd,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAA;IACvB,QAAQ,EAAE,MAAM,CAAA;IAChB,SAAS,CAAC,EAAE,OAAO,CAAA;IAEnB,UAAU,CAAC,EAAE;QACT,KAAK,EAAE,KAAK,CAAC;YACT,IAAI,EAAE,MAAM,CAAA;YACZ,IAAI,EAAE,MAAM,CAAA;YACZ,IAAI,EAAE,MAAM,CAAA;SACf,CAAC,CAAA;QACF,SAAS,CAAC,EAAE,MAAM,CAAA;KACrB,CAAA;CACJ;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AACH,8BAAsB,cAAe,SAAQ,aAAc,YAAW,eAAe;IACjF,6DAA6D;IAC7D,SAAS,CAAC,WAAW,EAAE,KAAK,GAAG,IAAI,CAAO;IAE1C;;;OAGG;IACH,cAAc,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI;IAGlC;;;;;;;;;;;;;;;;OAgBG;IACG,YAAY,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,YAAY,CAAC;IAuFnD;;OAEG;YACW,iBAAiB;IAiE/B;;OAEG;YACW,gBAAgB;IAyE9B;;OAEG;IACG,eAAe,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,YAAY,CAAC;IA0EtD;;OAEG;IACG,aAAa,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,YAAY,CAAC;IAsFpD;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAoB7B;;OAEG;IACG,QAAQ,CAAC,GAAG,CAAC,EAAE,GAAG,GAAG,OAAO,CAAC,YAAY,CAAC;IA+DhD;;OAEG;IACG,YAAY,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,YAAY,CAAC;IA8FnD;;OAEG;IACH,YAAY,IAAI,KAAK,CAAC;QAClB,MAAM,EAAE,UAAU,CAAA;QAClB,IAAI,EAAE,MAAM,CAAA;QACZ,OAAO,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,GAAG,CAAA;QAChC,YAAY,CAAC,EAAE,MAAM,CAAA;KACxB,CAAC;IA2CF;;OAEG;IACH,cAAc,IAAI,oBAAoB;CAmGzC"}
|
|
@@ -76,29 +76,24 @@ export class TilesetManager extends AssetsManager {
|
|
|
76
76
|
if (!req || !req.body) {
|
|
77
77
|
return {
|
|
78
78
|
status: 400,
|
|
79
|
-
content: JSON.stringify({
|
|
80
|
-
error: 'Invalid request: missing request body'
|
|
81
|
-
}),
|
|
79
|
+
content: JSON.stringify({ error: 'Invalid request: missing request body' }),
|
|
82
80
|
headers: { 'Content-Type': 'application/json' }
|
|
83
81
|
};
|
|
84
82
|
}
|
|
85
|
-
//
|
|
83
|
+
// Authenticate user
|
|
86
84
|
let userId;
|
|
87
85
|
if (AuthConfig.isAuthDisabled()) {
|
|
88
|
-
const
|
|
86
|
+
const userRecord = await this.userService.findOrCreateUser({
|
|
89
87
|
id: AuthConfig.getAnonymousUserId(),
|
|
90
88
|
roles: []
|
|
91
|
-
};
|
|
92
|
-
const userRecord = await this.userService.findOrCreateUser(anonymousUser);
|
|
89
|
+
});
|
|
93
90
|
userId = userRecord.id;
|
|
94
91
|
}
|
|
95
92
|
else {
|
|
96
93
|
if (!ApisixAuthParser.hasValidAuth(req.headers || {})) {
|
|
97
94
|
return {
|
|
98
95
|
status: 401,
|
|
99
|
-
content: JSON.stringify({
|
|
100
|
-
error: 'Authentication required'
|
|
101
|
-
}),
|
|
96
|
+
content: JSON.stringify({ error: 'Authentication required' }),
|
|
102
97
|
headers: { 'Content-Type': 'application/json' }
|
|
103
98
|
};
|
|
104
99
|
}
|
|
@@ -106,9 +101,7 @@ export class TilesetManager extends AssetsManager {
|
|
|
106
101
|
if (!authUser) {
|
|
107
102
|
return {
|
|
108
103
|
status: 401,
|
|
109
|
-
content: JSON.stringify({
|
|
110
|
-
error: 'Invalid authentication headers'
|
|
111
|
-
}),
|
|
104
|
+
content: JSON.stringify({ error: 'Invalid authentication headers' }),
|
|
112
105
|
headers: { 'Content-Type': 'application/json' }
|
|
113
106
|
};
|
|
114
107
|
}
|
|
@@ -116,9 +109,7 @@ export class TilesetManager extends AssetsManager {
|
|
|
116
109
|
if (!userRecord.id) {
|
|
117
110
|
return {
|
|
118
111
|
status: 500,
|
|
119
|
-
content: JSON.stringify({
|
|
120
|
-
error: 'Failed to retrieve user information'
|
|
121
|
-
}),
|
|
112
|
+
content: JSON.stringify({ error: 'Failed to retrieve user information' }),
|
|
122
113
|
headers: { 'Content-Type': 'application/json' }
|
|
123
114
|
};
|
|
124
115
|
}
|
|
@@ -128,147 +119,107 @@ export class TilesetManager extends AssetsManager {
|
|
|
128
119
|
const filePath = req.file?.path;
|
|
129
120
|
const fileBuffer = req.file?.buffer;
|
|
130
121
|
const filename = req.file?.originalname || req.body.filename;
|
|
131
|
-
//
|
|
122
|
+
// Cleanup temp file and return error response
|
|
123
|
+
const cleanupAndReturn = async (status, error) => {
|
|
124
|
+
if (filePath)
|
|
125
|
+
await fs.unlink(filePath).catch(() => { });
|
|
126
|
+
return { status, content: JSON.stringify({ error }), headers: { 'Content-Type': 'application/json' } };
|
|
127
|
+
};
|
|
132
128
|
if (!filePath && !fileBuffer) {
|
|
133
129
|
return {
|
|
134
130
|
status: 400,
|
|
135
|
-
content: JSON.stringify({
|
|
136
|
-
error: 'Missing required fields: ZIP file'
|
|
137
|
-
}),
|
|
138
|
-
headers: { 'Content-Type': 'application/json' }
|
|
139
|
-
};
|
|
140
|
-
}
|
|
141
|
-
if (!description) {
|
|
142
|
-
return {
|
|
143
|
-
status: 400,
|
|
144
|
-
content: JSON.stringify({
|
|
145
|
-
error: 'Missing required fields: description'
|
|
146
|
-
}),
|
|
147
|
-
headers: { 'Content-Type': 'application/json' }
|
|
148
|
-
};
|
|
149
|
-
}
|
|
150
|
-
if (!filename) {
|
|
151
|
-
return {
|
|
152
|
-
status: 400,
|
|
153
|
-
content: JSON.stringify({
|
|
154
|
-
error: 'Filename could not be determined from uploaded file'
|
|
155
|
-
}),
|
|
156
|
-
headers: { 'Content-Type': 'application/json' }
|
|
157
|
-
};
|
|
158
|
-
}
|
|
159
|
-
// Validate ZIP file extension
|
|
160
|
-
if (!filename.toLowerCase().endsWith('.zip')) {
|
|
161
|
-
return {
|
|
162
|
-
status: 400,
|
|
163
|
-
content: JSON.stringify({
|
|
164
|
-
error: 'Invalid file extension. Expected: .zip'
|
|
165
|
-
}),
|
|
131
|
+
content: JSON.stringify({ error: 'Missing required fields: ZIP file' }),
|
|
166
132
|
headers: { 'Content-Type': 'application/json' }
|
|
167
133
|
};
|
|
168
134
|
}
|
|
135
|
+
if (!description)
|
|
136
|
+
return cleanupAndReturn(400, 'Missing required fields: description');
|
|
137
|
+
if (!filename)
|
|
138
|
+
return cleanupAndReturn(400, 'Filename could not be determined from uploaded file');
|
|
139
|
+
if (!filename.toLowerCase().endsWith('.zip'))
|
|
140
|
+
return cleanupAndReturn(400, 'Invalid file extension. Expected: .zip');
|
|
169
141
|
const config = this.getConfiguration();
|
|
170
|
-
//
|
|
171
|
-
console.log(`[TilesetManager] Upload: queue=${!!this.uploadQueue}, filePath=${!!filePath}, fileBuffer=${!!fileBuffer}`);
|
|
172
|
-
// ASYNC MODE: Queue job for background processing (requires disk storage)
|
|
142
|
+
// Route to async or sync handler based on queue availability
|
|
173
143
|
if (this.uploadQueue && filePath) {
|
|
174
|
-
console.log(`[TilesetManager] Using ASYNC mode for ${filename}`);
|
|
175
144
|
return this.handleAsyncUpload(req, userId, filePath, filename, description, config);
|
|
176
145
|
}
|
|
177
|
-
// SYNC MODE: Process immediately (fallback or memory buffer)
|
|
178
|
-
console.log(`[TilesetManager] Using SYNC mode for ${filename}`);
|
|
179
146
|
return this.handleSyncUpload(req, userId, filePath, fileBuffer, filename, description, config);
|
|
180
147
|
}
|
|
181
148
|
catch (error) {
|
|
149
|
+
if (req.file?.path)
|
|
150
|
+
await fs.unlink(req.file.path).catch(() => { });
|
|
182
151
|
return {
|
|
183
152
|
status: 500,
|
|
184
|
-
content: JSON.stringify({
|
|
185
|
-
error: error instanceof Error ? error.message : 'Unknown error'
|
|
186
|
-
}),
|
|
153
|
+
content: JSON.stringify({ error: error instanceof Error ? error.message : 'Unknown error' }),
|
|
187
154
|
headers: { 'Content-Type': 'application/json' }
|
|
188
155
|
};
|
|
189
156
|
}
|
|
190
157
|
}
|
|
191
158
|
/**
|
|
192
|
-
*
|
|
193
|
-
* @private
|
|
159
|
+
* Queue upload for background processing. Returns HTTP 202 immediately.
|
|
194
160
|
*/
|
|
195
161
|
async handleAsyncUpload(req, userId, filePath, filename, description, config) {
|
|
196
|
-
|
|
197
|
-
// Create a pending record in the database
|
|
198
|
-
const metadata = {
|
|
199
|
-
name: config.name,
|
|
200
|
-
type: 'application/json',
|
|
201
|
-
url: '', // Will be set by worker after extraction
|
|
202
|
-
date: now,
|
|
203
|
-
description,
|
|
204
|
-
source: req.body.source || '',
|
|
205
|
-
owner_id: userId,
|
|
206
|
-
filename: filename,
|
|
207
|
-
is_public: req.body.is_public !== undefined ? Boolean(req.body.is_public) : true,
|
|
208
|
-
upload_status: 'pending'
|
|
209
|
-
};
|
|
210
|
-
const savedRecord = await this.db.save(metadata);
|
|
211
|
-
const recordId = savedRecord.id;
|
|
212
|
-
// Queue the processing job
|
|
213
|
-
const jobData = {
|
|
214
|
-
type: 'tileset',
|
|
215
|
-
recordId,
|
|
216
|
-
tempFilePath: filePath,
|
|
217
|
-
componentName: config.name,
|
|
218
|
-
userId,
|
|
219
|
-
filename,
|
|
220
|
-
description
|
|
221
|
-
};
|
|
222
|
-
// uploadQueue is guaranteed to exist here (checked in handleUpload)
|
|
223
|
-
let job;
|
|
162
|
+
let recordId = null;
|
|
224
163
|
try {
|
|
225
|
-
|
|
164
|
+
// Create pending record - will be updated by worker when complete
|
|
165
|
+
const metadata = {
|
|
166
|
+
name: config.name,
|
|
167
|
+
type: 'application/json',
|
|
168
|
+
url: '',
|
|
169
|
+
date: new Date(),
|
|
170
|
+
description,
|
|
171
|
+
source: req.body.source || '',
|
|
172
|
+
owner_id: userId,
|
|
173
|
+
filename,
|
|
174
|
+
is_public: req.body.is_public !== undefined ? Boolean(req.body.is_public) : true,
|
|
175
|
+
upload_status: 'pending'
|
|
176
|
+
};
|
|
177
|
+
const savedRecord = await this.db.save(metadata);
|
|
178
|
+
recordId = savedRecord.id;
|
|
179
|
+
const jobData = {
|
|
180
|
+
type: 'tileset',
|
|
181
|
+
recordId,
|
|
182
|
+
tempFilePath: filePath,
|
|
183
|
+
componentName: config.name,
|
|
184
|
+
userId,
|
|
185
|
+
filename,
|
|
186
|
+
description
|
|
187
|
+
};
|
|
188
|
+
const job = await this.uploadQueue?.add(`tileset-${recordId}`, jobData, {
|
|
226
189
|
jobId: `tileset-upload-${recordId}`
|
|
227
190
|
});
|
|
228
|
-
if (!job)
|
|
191
|
+
if (!job)
|
|
229
192
|
throw new Error('Failed to queue upload job');
|
|
230
|
-
}
|
|
193
|
+
await this.db.updateById(config.name, recordId, { upload_job_id: job.id });
|
|
194
|
+
return {
|
|
195
|
+
status: 202,
|
|
196
|
+
content: JSON.stringify({
|
|
197
|
+
message: 'Tileset upload accepted, processing in background',
|
|
198
|
+
id: recordId,
|
|
199
|
+
job_id: job.id,
|
|
200
|
+
status: 'pending',
|
|
201
|
+
status_url: `/${config.endpoint}/${recordId}/status`
|
|
202
|
+
}),
|
|
203
|
+
headers: { 'Content-Type': 'application/json' }
|
|
204
|
+
};
|
|
231
205
|
}
|
|
232
|
-
catch (
|
|
233
|
-
//
|
|
234
|
-
|
|
235
|
-
|
|
206
|
+
catch (error) {
|
|
207
|
+
// Cleanup on failure: remove DB record and temp file
|
|
208
|
+
if (recordId !== null)
|
|
209
|
+
await this.db.delete(String(recordId), config.name).catch(() => { });
|
|
236
210
|
await fs.unlink(filePath).catch(() => { });
|
|
237
|
-
throw
|
|
211
|
+
throw error;
|
|
238
212
|
}
|
|
239
|
-
// Update record with job ID
|
|
240
|
-
await this.db.updateById(config.name, recordId, {
|
|
241
|
-
upload_job_id: job.id
|
|
242
|
-
});
|
|
243
|
-
return {
|
|
244
|
-
status: 202, // Accepted - processing started
|
|
245
|
-
content: JSON.stringify({
|
|
246
|
-
message: 'Tileset upload accepted, processing in background',
|
|
247
|
-
id: recordId,
|
|
248
|
-
job_id: job.id,
|
|
249
|
-
status: 'pending',
|
|
250
|
-
status_url: `/${config.endpoint}/${recordId}/status`
|
|
251
|
-
}),
|
|
252
|
-
headers: { 'Content-Type': 'application/json' }
|
|
253
|
-
};
|
|
254
213
|
}
|
|
255
214
|
/**
|
|
256
|
-
*
|
|
257
|
-
* @private
|
|
215
|
+
* Process upload synchronously (fallback when queue unavailable).
|
|
258
216
|
*/
|
|
259
217
|
async handleSyncUpload(req, userId, filePath, fileBuffer, filename, description, config) {
|
|
260
|
-
// Read ZIP file content
|
|
261
218
|
let zipBuffer;
|
|
262
219
|
try {
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
}
|
|
266
|
-
else if (filePath) {
|
|
267
|
-
zipBuffer = await fs.readFile(filePath);
|
|
268
|
-
}
|
|
269
|
-
else {
|
|
220
|
+
zipBuffer = fileBuffer || (filePath ? await fs.readFile(filePath) : null);
|
|
221
|
+
if (!zipBuffer)
|
|
270
222
|
throw new Error('No file data available');
|
|
271
|
-
}
|
|
272
223
|
}
|
|
273
224
|
catch (error) {
|
|
274
225
|
return {
|
|
@@ -281,49 +232,33 @@ export class TilesetManager extends AssetsManager {
|
|
|
281
232
|
}
|
|
282
233
|
try {
|
|
283
234
|
const now = new Date();
|
|
284
|
-
|
|
285
|
-
const tilesetId = now.getTime().toString();
|
|
286
|
-
// Base path for storing extracted files: componentName/tilesetId
|
|
287
|
-
const basePath = `${config.name}/${tilesetId}`;
|
|
288
|
-
// Extract ZIP and store all files individually
|
|
235
|
+
const basePath = `${config.name}/${now.getTime()}`;
|
|
289
236
|
const extractResult = await extractAndStoreArchive(zipBuffer, this.storage, basePath);
|
|
290
|
-
// Validate that we found a tileset.json
|
|
291
237
|
if (!extractResult.root_file) {
|
|
292
|
-
// Clean up stored files if no tileset.json found using batch delete
|
|
293
238
|
if (extractResult.files.length > 0) {
|
|
294
|
-
|
|
295
|
-
await this.storage.deleteBatch(filePaths);
|
|
239
|
+
await this.storage.deleteBatch(extractResult.files.map(f => f.path));
|
|
296
240
|
}
|
|
297
241
|
return {
|
|
298
242
|
status: 400,
|
|
299
|
-
content: JSON.stringify({
|
|
300
|
-
error: 'Invalid tileset: no tileset.json found in the ZIP archive'
|
|
301
|
-
}),
|
|
243
|
+
content: JSON.stringify({ error: 'Invalid tileset: no tileset.json found in the ZIP archive' }),
|
|
302
244
|
headers: { 'Content-Type': 'application/json' }
|
|
303
245
|
};
|
|
304
246
|
}
|
|
305
|
-
// Create metadata with file_index
|
|
306
|
-
// url stores the base path for all extracted files
|
|
307
247
|
const metadata = {
|
|
308
248
|
name: config.name,
|
|
309
|
-
type: 'application/json',
|
|
310
|
-
url: basePath,
|
|
249
|
+
type: 'application/json',
|
|
250
|
+
url: basePath,
|
|
311
251
|
date: now,
|
|
312
252
|
description,
|
|
313
253
|
source: req.body.source || '',
|
|
314
254
|
owner_id: userId,
|
|
315
|
-
filename
|
|
255
|
+
filename,
|
|
316
256
|
is_public: req.body.is_public !== undefined ? Boolean(req.body.is_public) : true,
|
|
317
|
-
file_index: {
|
|
318
|
-
files: extractResult.files,
|
|
319
|
-
root_file: extractResult.root_file
|
|
320
|
-
}
|
|
257
|
+
file_index: { files: extractResult.files, root_file: extractResult.root_file }
|
|
321
258
|
};
|
|
322
259
|
const savedRecord = await this.db.save(metadata);
|
|
323
|
-
|
|
324
|
-
if (filePath) {
|
|
260
|
+
if (filePath)
|
|
325
261
|
await fs.unlink(filePath).catch(() => { });
|
|
326
|
-
}
|
|
327
262
|
return {
|
|
328
263
|
status: 200,
|
|
329
264
|
content: JSON.stringify({
|
|
@@ -337,15 +272,13 @@ export class TilesetManager extends AssetsManager {
|
|
|
337
272
|
};
|
|
338
273
|
}
|
|
339
274
|
catch (error) {
|
|
340
|
-
|
|
341
|
-
if (filePath) {
|
|
275
|
+
if (filePath)
|
|
342
276
|
await fs.unlink(filePath).catch(() => { });
|
|
343
|
-
}
|
|
344
277
|
throw error;
|
|
345
278
|
}
|
|
346
279
|
}
|
|
347
280
|
/**
|
|
348
|
-
* Get
|
|
281
|
+
* Get upload status for polling. Returns: pending | processing | completed | failed
|
|
349
282
|
*/
|
|
350
283
|
async handleGetStatus(req) {
|
|
351
284
|
try {
|
|
@@ -368,25 +301,22 @@ export class TilesetManager extends AssetsManager {
|
|
|
368
301
|
const config = this.getConfiguration();
|
|
369
302
|
const record = asset;
|
|
370
303
|
const fileIndex = record.file_index;
|
|
371
|
-
//
|
|
372
|
-
// - If upload_status is 'completed' OR
|
|
373
|
-
// - If upload_status is null/undefined BUT file_index exists (legacy sync uploads)
|
|
304
|
+
// Completed if upload_status says so, or legacy sync upload with file_index
|
|
374
305
|
const isCompleted = record.upload_status === 'completed' ||
|
|
375
|
-
(!record.upload_status && fileIndex
|
|
306
|
+
(!record.upload_status && fileIndex?.files && fileIndex.files.length > 0);
|
|
376
307
|
if (isCompleted) {
|
|
377
|
-
const rootFile = fileIndex?.root_file || 'tileset.json';
|
|
378
308
|
return {
|
|
379
309
|
status: 200,
|
|
380
310
|
content: JSON.stringify({
|
|
381
311
|
id: record.id,
|
|
382
312
|
status: 'completed',
|
|
383
|
-
tileset_url: `/${config.endpoint}/${record.id}/files/${
|
|
313
|
+
tileset_url: `/${config.endpoint}/${record.id}/files/${fileIndex?.root_file || 'tileset.json'}`,
|
|
384
314
|
file_count: fileIndex?.files?.length || 0
|
|
385
315
|
}),
|
|
386
316
|
headers: { 'Content-Type': 'application/json' }
|
|
387
317
|
};
|
|
388
318
|
}
|
|
389
|
-
//
|
|
319
|
+
// Broken record: no status and no files
|
|
390
320
|
if (!record.upload_status) {
|
|
391
321
|
return {
|
|
392
322
|
status: 200,
|
|
@@ -398,7 +328,6 @@ export class TilesetManager extends AssetsManager {
|
|
|
398
328
|
headers: { 'Content-Type': 'application/json' }
|
|
399
329
|
};
|
|
400
330
|
}
|
|
401
|
-
// Return current status (pending, processing, or failed)
|
|
402
331
|
return {
|
|
403
332
|
status: 200,
|
|
404
333
|
content: JSON.stringify({
|
|
@@ -413,105 +342,72 @@ export class TilesetManager extends AssetsManager {
|
|
|
413
342
|
catch (error) {
|
|
414
343
|
return {
|
|
415
344
|
status: 500,
|
|
416
|
-
content: JSON.stringify({
|
|
417
|
-
error: error instanceof Error ? error.message : 'Unknown error'
|
|
418
|
-
}),
|
|
345
|
+
content: JSON.stringify({ error: error instanceof Error ? error.message : 'Unknown error' }),
|
|
419
346
|
headers: { 'Content-Type': 'application/json' }
|
|
420
347
|
};
|
|
421
348
|
}
|
|
422
349
|
}
|
|
423
350
|
/**
|
|
424
|
-
* Serve
|
|
425
|
-
*
|
|
426
|
-
* This endpoint allows Cesium to load tileset.json and all referenced files
|
|
427
|
-
* (tiles, textures, etc.) using relative paths.
|
|
428
|
-
*
|
|
429
|
-
* @param req - HTTP request with params.id and params['0'] (file path)
|
|
430
|
-
* @returns DataResponse with file content
|
|
351
|
+
* Serve extracted tileset file (tileset.json, .b3dm, textures, etc.)
|
|
431
352
|
*/
|
|
432
353
|
async handleGetFile(req) {
|
|
433
354
|
try {
|
|
434
355
|
const { id } = req.params || {};
|
|
435
|
-
//
|
|
436
|
-
// - Express 4.x: params[0] or params['0']
|
|
437
|
-
// - Express 5.x / ultimate-express: params['*'] or via URL parsing
|
|
356
|
+
// Extract file path from wildcard param (Express 4.x/5.x compatibility)
|
|
438
357
|
let filePath = req.params[0] || req.params['0'] || req.params['*'] || req.params.path || req.params['*0'];
|
|
439
|
-
// Fallback: extract from URL if params didn't capture it
|
|
440
358
|
if (!filePath && req.url) {
|
|
441
359
|
const match = req.url.match(/\/files\/(.+)$/);
|
|
442
|
-
if (match)
|
|
360
|
+
if (match)
|
|
443
361
|
filePath = decodeURIComponent(match[1]);
|
|
444
|
-
}
|
|
445
362
|
}
|
|
446
|
-
// Another fallback: use originalUrl
|
|
447
363
|
if (!filePath && req.originalUrl) {
|
|
448
364
|
const match = req.originalUrl.match(/\/files\/(.+)$/);
|
|
449
|
-
if (match)
|
|
365
|
+
if (match)
|
|
450
366
|
filePath = decodeURIComponent(match[1]);
|
|
451
|
-
}
|
|
452
367
|
}
|
|
453
|
-
if (!id)
|
|
368
|
+
if (!id)
|
|
454
369
|
return {
|
|
455
370
|
status: 400,
|
|
456
371
|
content: JSON.stringify({ error: 'Asset ID is required' }),
|
|
457
372
|
headers: { 'Content-Type': 'application/json' }
|
|
458
373
|
};
|
|
459
|
-
|
|
460
|
-
if (!filePath) {
|
|
374
|
+
if (!filePath)
|
|
461
375
|
return {
|
|
462
376
|
status: 400,
|
|
463
377
|
content: JSON.stringify({ error: 'File path is required' }),
|
|
464
378
|
headers: { 'Content-Type': 'application/json' }
|
|
465
379
|
};
|
|
466
|
-
}
|
|
467
|
-
// Get asset metadata
|
|
468
380
|
const asset = await this.getAssetById(id);
|
|
469
|
-
if (!asset) {
|
|
470
|
-
return {
|
|
471
|
-
status: 404,
|
|
472
|
-
content: JSON.stringify({ error: 'Tileset not found' }),
|
|
473
|
-
headers: { 'Content-Type': 'application/json' }
|
|
474
|
-
};
|
|
475
|
-
}
|
|
476
|
-
// Verify this asset belongs to our component
|
|
477
381
|
const config = this.getConfiguration();
|
|
478
|
-
if (asset.name !== config.name) {
|
|
382
|
+
if (!asset || asset.name !== config.name) {
|
|
479
383
|
return {
|
|
480
384
|
status: 404,
|
|
481
385
|
content: JSON.stringify({ error: 'Tileset not found' }),
|
|
482
386
|
headers: { 'Content-Type': 'application/json' }
|
|
483
387
|
};
|
|
484
388
|
}
|
|
485
|
-
// Check access
|
|
486
|
-
if (!asset.is_public) {
|
|
487
|
-
if (ApisixAuthParser.
|
|
488
|
-
// Admin can access everything
|
|
489
|
-
}
|
|
490
|
-
else if (!ApisixAuthParser.hasValidAuth(req.headers || {})) {
|
|
389
|
+
// Check access for private assets
|
|
390
|
+
if (!asset.is_public && !ApisixAuthParser.isAdmin(req.headers || {})) {
|
|
391
|
+
if (!ApisixAuthParser.hasValidAuth(req.headers || {})) {
|
|
491
392
|
return {
|
|
492
393
|
status: 401,
|
|
493
394
|
content: JSON.stringify({ error: 'Authentication required for private assets' }),
|
|
494
395
|
headers: { 'Content-Type': 'application/json' }
|
|
495
396
|
};
|
|
496
397
|
}
|
|
497
|
-
|
|
498
|
-
|
|
499
|
-
|
|
500
|
-
|
|
501
|
-
|
|
502
|
-
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
};
|
|
507
|
-
}
|
|
398
|
+
const authUser = ApisixAuthParser.parseAuthHeaders(req.headers || {});
|
|
399
|
+
if (authUser) {
|
|
400
|
+
const userRecord = await this.userService.findOrCreateUser(authUser);
|
|
401
|
+
if (!userRecord.id || asset.owner_id !== userRecord.id) {
|
|
402
|
+
return {
|
|
403
|
+
status: 403,
|
|
404
|
+
content: JSON.stringify({ error: 'This asset is private' }),
|
|
405
|
+
headers: { 'Content-Type': 'application/json' }
|
|
406
|
+
};
|
|
508
407
|
}
|
|
509
408
|
}
|
|
510
409
|
}
|
|
511
|
-
// Build storage path using asset.url as base path
|
|
512
|
-
// asset.url contains the base path (e.g., 'tilesets_manager/1733064000000')
|
|
513
410
|
const storagePath = `${asset.url}/${filePath}`;
|
|
514
|
-
// Retrieve file from storage
|
|
515
411
|
let fileContent;
|
|
516
412
|
try {
|
|
517
413
|
fileContent = await this.storage.retrieve(storagePath);
|
|
@@ -523,23 +419,16 @@ export class TilesetManager extends AssetsManager {
|
|
|
523
419
|
headers: { 'Content-Type': 'application/json' }
|
|
524
420
|
};
|
|
525
421
|
}
|
|
526
|
-
// Determine content type based on file extension
|
|
527
|
-
const contentType = this.getContentTypeForFile(filePath);
|
|
528
422
|
return {
|
|
529
423
|
status: 200,
|
|
530
424
|
content: fileContent,
|
|
531
|
-
headers: {
|
|
532
|
-
'Content-Type': contentType,
|
|
533
|
-
'Access-Control-Allow-Origin': '*'
|
|
534
|
-
}
|
|
425
|
+
headers: { 'Content-Type': this.getContentTypeForFile(filePath), 'Access-Control-Allow-Origin': '*' }
|
|
535
426
|
};
|
|
536
427
|
}
|
|
537
428
|
catch (error) {
|
|
538
429
|
return {
|
|
539
430
|
status: 500,
|
|
540
|
-
content: JSON.stringify({
|
|
541
|
-
error: error instanceof Error ? error.message : 'Unknown error'
|
|
542
|
-
}),
|
|
431
|
+
content: JSON.stringify({ error: error instanceof Error ? error.message : 'Unknown error' }),
|
|
543
432
|
headers: { 'Content-Type': 'application/json' }
|
|
544
433
|
};
|
|
545
434
|
}
|
|
@@ -625,18 +514,17 @@ export class TilesetManager extends AssetsManager {
|
|
|
625
514
|
}
|
|
626
515
|
}
|
|
627
516
|
/**
|
|
628
|
-
*
|
|
517
|
+
* Delete tileset and all extracted files from storage.
|
|
629
518
|
*/
|
|
630
519
|
async handleDelete(req) {
|
|
631
520
|
try {
|
|
632
|
-
//
|
|
521
|
+
// Authenticate user
|
|
633
522
|
let userId;
|
|
634
523
|
if (AuthConfig.isAuthDisabled()) {
|
|
635
|
-
const
|
|
524
|
+
const userRecord = await this.userService.findOrCreateUser({
|
|
636
525
|
id: AuthConfig.getAnonymousUserId(),
|
|
637
526
|
roles: []
|
|
638
|
-
};
|
|
639
|
-
const userRecord = await this.userService.findOrCreateUser(anonymousUser);
|
|
527
|
+
});
|
|
640
528
|
userId = userRecord.id;
|
|
641
529
|
}
|
|
642
530
|
else {
|
|
@@ -666,23 +554,20 @@ export class TilesetManager extends AssetsManager {
|
|
|
666
554
|
userId = userRecord.id;
|
|
667
555
|
}
|
|
668
556
|
const { id } = req.params || {};
|
|
669
|
-
if (!id)
|
|
557
|
+
if (!id)
|
|
670
558
|
return {
|
|
671
559
|
status: 400,
|
|
672
560
|
content: JSON.stringify({ error: 'Asset ID is required' }),
|
|
673
561
|
headers: { 'Content-Type': 'application/json' }
|
|
674
562
|
};
|
|
675
|
-
}
|
|
676
|
-
// Get asset metadata
|
|
677
563
|
const asset = await this.getAssetById(id);
|
|
678
|
-
if (!asset)
|
|
564
|
+
if (!asset)
|
|
679
565
|
return {
|
|
680
566
|
status: 404,
|
|
681
567
|
content: JSON.stringify({ error: 'Tileset not found' }),
|
|
682
568
|
headers: { 'Content-Type': 'application/json' }
|
|
683
569
|
};
|
|
684
|
-
|
|
685
|
-
// Check ownership (admins can delete any asset)
|
|
570
|
+
// Check ownership (admins can delete any)
|
|
686
571
|
const isAdmin = ApisixAuthParser.isAdmin(req.headers || {});
|
|
687
572
|
if (!isAdmin && asset.owner_id !== null && asset.owner_id !== userId) {
|
|
688
573
|
return {
|
|
@@ -691,13 +576,20 @@ export class TilesetManager extends AssetsManager {
|
|
|
691
576
|
headers: { 'Content-Type': 'application/json' }
|
|
692
577
|
};
|
|
693
578
|
}
|
|
694
|
-
//
|
|
579
|
+
// Block deletion while upload in progress to prevent orphan files
|
|
580
|
+
const record = asset;
|
|
581
|
+
if (record.upload_status === 'pending' || record.upload_status === 'processing') {
|
|
582
|
+
return {
|
|
583
|
+
status: 409,
|
|
584
|
+
content: JSON.stringify({ error: 'Cannot delete tileset while upload is in progress' }),
|
|
585
|
+
headers: { 'Content-Type': 'application/json' }
|
|
586
|
+
};
|
|
587
|
+
}
|
|
588
|
+
// Delete all files from storage
|
|
695
589
|
const fileIndex = asset.file_index;
|
|
696
|
-
if (fileIndex?.files
|
|
697
|
-
|
|
698
|
-
await this.storage.deleteBatch(filePaths);
|
|
590
|
+
if (fileIndex?.files?.length) {
|
|
591
|
+
await this.storage.deleteBatch(fileIndex.files.map(f => f.path));
|
|
699
592
|
}
|
|
700
|
-
// Delete database record
|
|
701
593
|
await this.deleteAssetById(id);
|
|
702
594
|
return {
|
|
703
595
|
status: 200,
|
|
@@ -708,9 +600,7 @@ export class TilesetManager extends AssetsManager {
|
|
|
708
600
|
catch (error) {
|
|
709
601
|
return {
|
|
710
602
|
status: 500,
|
|
711
|
-
content: JSON.stringify({
|
|
712
|
-
error: error instanceof Error ? error.message : 'Unknown error'
|
|
713
|
-
}),
|
|
603
|
+
content: JSON.stringify({ error: error instanceof Error ? error.message : 'Unknown error' }),
|
|
714
604
|
headers: { 'Content-Type': 'application/json' }
|
|
715
605
|
};
|
|
716
606
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tileset_manager.js","sourceRoot":"","sources":["../../src/components/tileset_manager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA;AAInD,OAAO,EAAE,sBAAsB,EAA+B,MAAM,uBAAuB,CAAA;AAC3F,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAA;AAC3D,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAA;AAInD,OAAO,EAAE,MAAM,aAAa,CAAA;AA2B5B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AACH,MAAM,OAAgB,cAAe,SAAQ,aAAa;IAA1D;;QACI,6DAA6D;QACnD,gBAAW,GAAiB,IAAI,CAAA;IAu4B9C,CAAC;IAr4BG;;;OAGG;IACH,cAAc,CAAC,KAAY;QACvB,IAAI,CAAC,WAAW,GAAG,KAAK,CAAA;IAC5B,CAAC;IACD;;;;;;;;;;;;;;;;OAgBG;IACH,KAAK,CAAC,YAAY,CAAC,GAAQ;QACvB,IAAI,CAAC;YACD,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;gBACpB,OAAO;oBACH,MAAM,EAAE,GAAG;oBACX,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC;wBACpB,KAAK,EAAE,uCAAuC;qBACjD,CAAC;oBACF,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;iBAClD,CAAA;YACL,CAAC;YAED,kDAAkD;YAClD,IAAI,MAAc,CAAA;YAElB,IAAI,UAAU,CAAC,cAAc,EAAE,EAAE,CAAC;gBAC9B,MAAM,aAAa,GAAG;oBAClB,EAAE,EAAE,UAAU,CAAC,kBAAkB,EAAE;oBACnC,KAAK,EAAE,EAAE;iBACZ,CAAA;gBACD,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,gBAAgB,CAAC,aAAa,CAAC,CAAA;gBACzE,MAAM,GAAG,UAAU,CAAC,EAAY,CAAA;YACpC,CAAC;iBAAM,CAAC;gBACJ,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,IAAI,EAAE,CAAC,EAAE,CAAC;oBACpD,OAAO;wBACH,MAAM,EAAE,GAAG;wBACX,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC;4BACpB,KAAK,EAAE,yBAAyB;yBACnC,CAAC;wBACF,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;qBAClD,CAAA;gBACL,CAAC;gBAED,MAAM,QAAQ,GAAG,gBAAgB,CAAC,gBAAgB,CAAC,GAAG,CAAC,OAAO,IAAI,EAAE,CAAC,CAAA;gBACrE,IAAI,CAAC,QAAQ,EAAE,CAAC;oBACZ,OAAO;wBACH,MAAM,EAAE,GAAG;wBACX,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC;4BACpB,KAAK,EAAE,gCAAgC;yBAC1C,CAAC;wBACF,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;qBAClD,CAAA;gBACL,CAAC;gBAED,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAA;gBACpE,IAAI,CAAC,UAAU,CAAC,EAAE,EAAE,CAAC;oBACjB,OAAO;wBACH,MAAM,EAAE,GAAG;wBACX,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC;4BACpB,KAAK,EAAE,qCAAqC;yBAC/C,CAAC;wBACF,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;qBAClD,CAAA;gBACL,CAAC;gBACD,MAAM,GAAG,UAAU,CAAC,EAAE,CAAA;YAC1B,CAAC;YAED,MAAM,EAAE,WAAW,EAAE,GAAG,GAAG,CAAC,IAAI,CAAA;YAChC,MAAM,QAAQ,GAAG,GAAG,CAAC,IAAI,EAAE,IAAI,CAAA;YAC/B,MAAM,UAAU,GAAG,GAAG,CAAC,IAAI,EAAE,MAAM,CAAA;YACnC,MAAM,QAAQ,GAAG,GAAG,CAAC,IAAI,EAAE,YAAY,IAAI,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAA;YAE5D,uEAAuE;YACvE,IAAI,CAAC,QAAQ,IAAI,CAAC,UAAU,EAAE,CAAC;gBAC3B,OAAO;oBACH,MAAM,EAAE,GAAG;oBACX,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC;wBACpB,KAAK,EAAE,mCAAmC;qBAC7C,CAAC;oBACF,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;iBAClD,CAAA;YACL,CAAC;YAED,IAAI,CAAC,WAAW,EAAE,CAAC;gBACf,OAAO;oBACH,MAAM,EAAE,GAAG;oBACX,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC;wBACpB,KAAK,EAAE,sCAAsC;qBAChD,CAAC;oBACF,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;iBAClD,CAAA;YACL,CAAC;YAED,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACZ,OAAO;oBACH,MAAM,EAAE,GAAG;oBACX,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC;wBACpB,KAAK,EAAE,qDAAqD;qBAC/D,CAAC;oBACF,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;iBAClD,CAAA;YACL,CAAC;YAED,8BAA8B;YAC9B,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;gBAC3C,OAAO;oBACH,MAAM,EAAE,GAAG;oBACX,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC;wBACpB,KAAK,EAAE,wCAAwC;qBAClD,CAAC;oBACF,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;iBAClD,CAAA;YACL,CAAC;YAED,MAAM,MAAM,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAA;YAEtC,mCAAmC;YACnC,OAAO,CAAC,GAAG,CACP,kCAAkC,CAAC,CAAC,IAAI,CAAC,WAAW,cAAc,CAAC,CAAC,QAAQ,gBAAgB,CAAC,CAAC,UAAU,EAAE,CAC7G,CAAA;YAED,0EAA0E;YAC1E,IAAI,IAAI,CAAC,WAAW,IAAI,QAAQ,EAAE,CAAC;gBAC/B,OAAO,CAAC,GAAG,CAAC,yCAAyC,QAAQ,EAAE,CAAC,CAAA;gBAChE,OAAO,IAAI,CAAC,iBAAiB,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,CAAC,CAAA;YACvF,CAAC;YAED,6DAA6D;YAC7D,OAAO,CAAC,GAAG,CAAC,wCAAwC,QAAQ,EAAE,CAAC,CAAA;YAC/D,OAAO,IAAI,CAAC,gBAAgB,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,CAAC,CAAA;QAClG,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,OAAO;gBACH,MAAM,EAAE,GAAG;gBACX,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC;oBACpB,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe;iBAClE,CAAC;gBACF,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;aAClD,CAAA;QACL,CAAC;IACL,CAAC;IAED;;;OAGG;IACK,KAAK,CAAC,iBAAiB,CAC3B,GAAQ,EACR,MAAc,EACd,QAAgB,EAChB,QAAgB,EAChB,WAAmB,EACnB,MAAgD;QAEhD,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAA;QAEtB,0CAA0C;QAC1C,MAAM,QAAQ,GAA2E;YACrF,IAAI,EAAE,MAAM,CAAC,IAAI;YACjB,IAAI,EAAE,kBAAkB;YACxB,GAAG,EAAE,EAAE,EAAE,yCAAyC;YAClD,IAAI,EAAE,GAAG;YACT,WAAW;YACX,MAAM,EAAE,GAAG,CAAC,IAAI,CAAC,MAAM,IAAI,EAAE;YAC7B,QAAQ,EAAE,MAAM;YAChB,QAAQ,EAAE,QAAQ;YAClB,SAAS,EAAE,GAAG,CAAC,IAAI,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI;YAChF,aAAa,EAAE,SAAS;SAC3B,CAAA;QAED,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;QAChD,MAAM,QAAQ,GAAG,WAAW,CAAC,EAAY,CAAA;QAEzC,2BAA2B;QAC3B,MAAM,OAAO,GAAyB;YAClC,IAAI,EAAE,SAAS;YACf,QAAQ;YACR,YAAY,EAAE,QAAQ;YACtB,aAAa,EAAE,MAAM,CAAC,IAAI;YAC1B,MAAM;YACN,QAAQ;YACR,WAAW;SACd,CAAA;QAED,oEAAoE;QACpE,IAAI,GAAG,CAAA;QACP,IAAI,CAAC;YACD,GAAG,GAAG,MAAM,IAAI,CAAC,WAAW,EAAE,GAAG,CAAC,WAAW,QAAQ,EAAE,EAAE,OAAO,EAAE;gBAC9D,KAAK,EAAE,kBAAkB,QAAQ,EAAE;aACtC,CAAC,CAAA;YAEF,IAAI,CAAC,GAAG,EAAE,CAAC;gBACP,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAA;YACjD,CAAC;QACL,CAAC;QAAC,OAAO,UAAU,EAAE,CAAC;YAClB,gDAAgD;YAChD,MAAM,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAA;YACnE,qBAAqB;YACrB,MAAM,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAA;YACzC,MAAM,UAAU,CAAA;QACpB,CAAC;QAED,4BAA4B;QAC5B,MAAM,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,EAAE,QAAQ,EAAE;YAC5C,aAAa,EAAE,GAAG,CAAC,EAAE;SACxB,CAAC,CAAA;QAEF,OAAO;YACH,MAAM,EAAE,GAAG,EAAE,gCAAgC;YAC7C,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC;gBACpB,OAAO,EAAE,mDAAmD;gBAC5D,EAAE,EAAE,QAAQ;gBACZ,MAAM,EAAE,GAAG,CAAC,EAAE;gBACd,MAAM,EAAE,SAAS;gBACjB,UAAU,EAAE,IAAI,MAAM,CAAC,QAAQ,IAAI,QAAQ,SAAS;aACvD,CAAC;YACF,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;SAClD,CAAA;IACL,CAAC;IAED;;;OAGG;IACK,KAAK,CAAC,gBAAgB,CAC1B,GAAQ,EACR,MAAc,EACd,QAA4B,EAC5B,UAA8B,EAC9B,QAAgB,EAChB,WAAmB,EACnB,MAAgD;QAEhD,wBAAwB;QACxB,IAAI,SAAiB,CAAA;QACrB,IAAI,CAAC;YACD,IAAI,UAAU,EAAE,CAAC;gBACb,SAAS,GAAG,UAAU,CAAA;YAC1B,CAAC;iBAAM,IAAI,QAAQ,EAAE,CAAC;gBAClB,SAAS,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAA;YAC3C,CAAC;iBAAM,CAAC;gBACJ,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAA;YAC7C,CAAC;QACL,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,OAAO;gBACH,MAAM,EAAE,GAAG;gBACX,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC;oBACpB,KAAK,EAAE,iCAAiC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,EAAE;iBACrG,CAAC;gBACF,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;aAClD,CAAA;QACL,CAAC;QAED,IAAI,CAAC;YACD,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAA;YAEtB,wDAAwD;YACxD,MAAM,SAAS,GAAG,GAAG,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAA;YAE1C,iEAAiE;YACjE,MAAM,QAAQ,GAAG,GAAG,MAAM,CAAC,IAAI,IAAI,SAAS,EAAE,CAAA;YAE9C,+CAA+C;YAC/C,MAAM,aAAa,GAA2B,MAAM,sBAAsB,CACtE,SAAS,EACT,IAAI,CAAC,OAAO,EACZ,QAAQ,CACX,CAAA;YAED,wCAAwC;YACxC,IAAI,CAAC,aAAa,CAAC,SAAS,EAAE,CAAC;gBAC3B,oEAAoE;gBACpE,IAAI,aAAa,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBACjC,MAAM,SAAS,GAAG,aAAa,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;oBAC5D,MAAM,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,SAAS,CAAC,CAAA;gBAC7C,CAAC;gBACD,OAAO;oBACH,MAAM,EAAE,GAAG;oBACX,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC;wBACpB,KAAK,EAAE,2DAA2D;qBACrE,CAAC;oBACF,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;iBAClD,CAAA;YACL,CAAC;YAED,kCAAkC;YAClC,mDAAmD;YACnD,MAAM,QAAQ,GAAuB;gBACjC,IAAI,EAAE,MAAM,CAAC,IAAI;gBACjB,IAAI,EAAE,kBAAkB,EAAE,4BAA4B;gBACtD,GAAG,EAAE,QAAQ,EAAE,oDAAoD;gBACnE,IAAI,EAAE,GAAG;gBACT,WAAW;gBACX,MAAM,EAAE,GAAG,CAAC,IAAI,CAAC,MAAM,IAAI,EAAE;gBAC7B,QAAQ,EAAE,MAAM;gBAChB,QAAQ,EAAE,QAAQ;gBAClB,SAAS,EAAE,GAAG,CAAC,IAAI,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI;gBAChF,UAAU,EAAE;oBACR,KAAK,EAAE,aAAa,CAAC,KAAK;oBAC1B,SAAS,EAAE,aAAa,CAAC,SAAS;iBACrC;aACJ,CAAA;YAED,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;YAEhD,kDAAkD;YAClD,IAAI,QAAQ,EAAE,CAAC;gBACX,MAAM,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAA;YAC7C,CAAC;YAED,OAAO;gBACH,MAAM,EAAE,GAAG;gBACX,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC;oBACpB,OAAO,EAAE,6CAA6C;oBACtD,EAAE,EAAE,WAAW,CAAC,EAAE;oBAClB,UAAU,EAAE,aAAa,CAAC,UAAU;oBACpC,SAAS,EAAE,aAAa,CAAC,SAAS;oBAClC,WAAW,EAAE,IAAI,MAAM,CAAC,QAAQ,IAAI,WAAW,CAAC,EAAE,UAAU,aAAa,CAAC,SAAS,EAAE;iBACxF,CAAC;gBACF,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;aAClD,CAAA;QACL,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,wCAAwC;YACxC,IAAI,QAAQ,EAAE,CAAC;gBACX,MAAM,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAA;YAC7C,CAAC;YACD,MAAM,KAAK,CAAA;QACf,CAAC;IACL,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,eAAe,CAAC,GAAQ;QAC1B,IAAI,CAAC;YACD,MAAM,EAAE,EAAE,EAAE,GAAG,GAAG,CAAC,MAAM,IAAI,EAAE,CAAA;YAC/B,IAAI,CAAC,EAAE,EAAE,CAAC;gBACN,OAAO;oBACH,MAAM,EAAE,GAAG;oBACX,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,sBAAsB,EAAE,CAAC;oBAC1D,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;iBAClD,CAAA;YACL,CAAC;YAED,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,CAAA;YACzC,IAAI,CAAC,KAAK,EAAE,CAAC;gBACT,OAAO;oBACH,MAAM,EAAE,GAAG;oBACX,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,mBAAmB,EAAE,CAAC;oBACvD,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;iBAClD,CAAA;YACL,CAAC;YAED,MAAM,MAAM,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAA;YACtC,MAAM,MAAM,GAAG,KAAY,CAAA;YAC3B,MAAM,SAAS,GAAG,MAAM,CAAC,UAAgD,CAAA;YAEzE,2BAA2B;YAC3B,uCAAuC;YACvC,mFAAmF;YACnF,MAAM,WAAW,GACb,MAAM,CAAC,aAAa,KAAK,WAAW;gBACpC,CAAC,CAAC,MAAM,CAAC,aAAa,IAAI,SAAS,IAAI,SAAS,CAAC,KAAK,IAAI,SAAS,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAA;YAEzF,IAAI,WAAW,EAAE,CAAC;gBACd,MAAM,QAAQ,GAAG,SAAS,EAAE,SAAS,IAAI,cAAc,CAAA;gBAEvD,OAAO;oBACH,MAAM,EAAE,GAAG;oBACX,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC;wBACpB,EAAE,EAAE,MAAM,CAAC,EAAE;wBACb,MAAM,EAAE,WAAW;wBACnB,WAAW,EAAE,IAAI,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,EAAE,UAAU,QAAQ,EAAE;wBACjE,UAAU,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,IAAI,CAAC;qBAC5C,CAAC;oBACF,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;iBAClD,CAAA;YACL,CAAC;YAED,8DAA8D;YAC9D,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC;gBACxB,OAAO;oBACH,MAAM,EAAE,GAAG;oBACX,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC;wBACpB,EAAE,EAAE,MAAM,CAAC,EAAE;wBACb,MAAM,EAAE,QAAQ;wBAChB,KAAK,EAAE,oCAAoC;qBAC9C,CAAC;oBACF,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;iBAClD,CAAA;YACL,CAAC;YAED,yDAAyD;YACzD,OAAO;gBACH,MAAM,EAAE,GAAG;gBACX,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC;oBACpB,EAAE,EAAE,MAAM,CAAC,EAAE;oBACb,MAAM,EAAE,MAAM,CAAC,aAAa;oBAC5B,MAAM,EAAE,MAAM,CAAC,aAAa;oBAC5B,KAAK,EAAE,MAAM,CAAC,YAAY,IAAI,SAAS;iBAC1C,CAAC;gBACF,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;aAClD,CAAA;QACL,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,OAAO;gBACH,MAAM,EAAE,GAAG;gBACX,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC;oBACpB,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe;iBAClE,CAAC;gBACF,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;aAClD,CAAA;QACL,CAAC;IACL,CAAC;IAED;;;;;;;;OAQG;IACH,KAAK,CAAC,aAAa,CAAC,GAAQ;QACxB,IAAI,CAAC;YACD,MAAM,EAAE,EAAE,EAAE,GAAG,GAAG,CAAC,MAAM,IAAI,EAAE,CAAA;YAE/B,qEAAqE;YACrE,0CAA0C;YAC1C,mEAAmE;YACnE,IAAI,QAAQ,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,MAAM,CAAC,IAAI,IAAI,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;YAEzG,yDAAyD;YACzD,IAAI,CAAC,QAAQ,IAAI,GAAG,CAAC,GAAG,EAAE,CAAC;gBACvB,MAAM,KAAK,GAAG,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAA;gBAC7C,IAAI,KAAK,EAAE,CAAC;oBACR,QAAQ,GAAG,kBAAkB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAA;gBAC3C,CAAC;YACL,CAAC;YAED,oCAAoC;YACpC,IAAI,CAAC,QAAQ,IAAI,GAAG,CAAC,WAAW,EAAE,CAAC;gBAC/B,MAAM,KAAK,GAAG,GAAG,CAAC,WAAW,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAA;gBACrD,IAAI,KAAK,EAAE,CAAC;oBACR,QAAQ,GAAG,kBAAkB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAA;gBAC3C,CAAC;YACL,CAAC;YAED,IAAI,CAAC,EAAE,EAAE,CAAC;gBACN,OAAO;oBACH,MAAM,EAAE,GAAG;oBACX,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,sBAAsB,EAAE,CAAC;oBAC1D,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;iBAClD,CAAA;YACL,CAAC;YAED,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACZ,OAAO;oBACH,MAAM,EAAE,GAAG;oBACX,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,uBAAuB,EAAE,CAAC;oBAC3D,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;iBAClD,CAAA;YACL,CAAC;YAED,qBAAqB;YACrB,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,CAAA;YACzC,IAAI,CAAC,KAAK,EAAE,CAAC;gBACT,OAAO;oBACH,MAAM,EAAE,GAAG;oBACX,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,mBAAmB,EAAE,CAAC;oBACvD,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;iBAClD,CAAA;YACL,CAAC;YAED,6CAA6C;YAC7C,MAAM,MAAM,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAA;YACtC,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,CAAC,IAAI,EAAE,CAAC;gBAC7B,OAAO;oBACH,MAAM,EAAE,GAAG;oBACX,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,mBAAmB,EAAE,CAAC;oBACvD,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;iBAClD,CAAA;YACL,CAAC;YAED,8CAA8C;YAC9C,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC;gBACnB,IAAI,gBAAgB,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,IAAI,EAAE,CAAC,EAAE,CAAC;oBAC9C,8BAA8B;gBAClC,CAAC;qBAAM,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,IAAI,EAAE,CAAC,EAAE,CAAC;oBAC3D,OAAO;wBACH,MAAM,EAAE,GAAG;wBACX,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,4CAA4C,EAAE,CAAC;wBAChF,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;qBAClD,CAAA;gBACL,CAAC;qBAAM,CAAC;oBACJ,MAAM,QAAQ,GAAG,gBAAgB,CAAC,gBAAgB,CAAC,GAAG,CAAC,OAAO,IAAI,EAAE,CAAC,CAAA;oBACrE,IAAI,QAAQ,EAAE,CAAC;wBACX,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAA;wBACpE,IAAI,CAAC,UAAU,CAAC,EAAE,IAAI,KAAK,CAAC,QAAQ,KAAK,UAAU,CAAC,EAAE,EAAE,CAAC;4BACrD,OAAO;gCACH,MAAM,EAAE,GAAG;gCACX,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,uBAAuB,EAAE,CAAC;gCAC3D,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;6BAClD,CAAA;wBACL,CAAC;oBACL,CAAC;gBACL,CAAC;YACL,CAAC;YAED,kDAAkD;YAClD,4EAA4E;YAC5E,MAAM,WAAW,GAAG,GAAG,KAAK,CAAC,GAAG,IAAI,QAAQ,EAAE,CAAA;YAE9C,6BAA6B;YAC7B,IAAI,WAAmB,CAAA;YACvB,IAAI,CAAC;gBACD,WAAW,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAA;YAC1D,CAAC;YAAC,MAAM,CAAC;gBACL,OAAO;oBACH,MAAM,EAAE,GAAG;oBACX,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,gBAAgB,EAAE,CAAC;oBACpD,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;iBAClD,CAAA;YACL,CAAC;YAED,iDAAiD;YACjD,MAAM,WAAW,GAAG,IAAI,CAAC,qBAAqB,CAAC,QAAQ,CAAC,CAAA;YAExD,OAAO;gBACH,MAAM,EAAE,GAAG;gBACX,OAAO,EAAE,WAAW;gBACpB,OAAO,EAAE;oBACL,cAAc,EAAE,WAAW;oBAC3B,6BAA6B,EAAE,GAAG;iBACrC;aACJ,CAAA;QACL,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,OAAO;gBACH,MAAM,EAAE,GAAG;gBACX,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC;oBACpB,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe;iBAClE,CAAC;gBACF,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;aAClD,CAAA;QACL,CAAC;IACL,CAAC;IAED;;OAEG;IACK,qBAAqB,CAAC,QAAgB;QAC1C,MAAM,GAAG,GAAG,QAAQ,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAA;QACnD,MAAM,YAAY,GAA2B;YACzC,IAAI,EAAE,kBAAkB;YACxB,IAAI,EAAE,0BAA0B;YAChC,IAAI,EAAE,0BAA0B;YAChC,IAAI,EAAE,0BAA0B;YAChC,IAAI,EAAE,0BAA0B;YAChC,GAAG,EAAE,mBAAmB;YACxB,IAAI,EAAE,iBAAiB;YACvB,GAAG,EAAE,0BAA0B;YAC/B,GAAG,EAAE,WAAW;YAChB,GAAG,EAAE,YAAY;YACjB,IAAI,EAAE,YAAY;YAClB,IAAI,EAAE,YAAY;YAClB,IAAI,EAAE,YAAY;SACrB,CAAA;QACD,OAAO,YAAY,CAAC,GAAG,IAAI,EAAE,CAAC,IAAI,0BAA0B,CAAA;IAChE,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,QAAQ,CAAC,GAAS;QACpB,IAAI,CAAC;YACD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,YAAY,EAAE,CAAA;YACxC,MAAM,MAAM,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAA;YACtC,MAAM,OAAO,GAAG,GAAG,IAAI,gBAAgB,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,IAAI,EAAE,CAAC,CAAA;YAElE,yCAAyC;YACzC,IAAI,mBAAmB,GAAkB,IAAI,CAAA;YAC7C,IAAI,GAAG,IAAI,gBAAgB,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,IAAI,EAAE,CAAC,EAAE,CAAC;gBAC1D,MAAM,QAAQ,GAAG,gBAAgB,CAAC,gBAAgB,CAAC,GAAG,CAAC,OAAO,IAAI,EAAE,CAAC,CAAA;gBACrE,IAAI,QAAQ,EAAE,CAAC;oBACX,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAA;oBACpE,mBAAmB,GAAG,UAAU,CAAC,EAAE,IAAI,IAAI,CAAA;gBAC/C,CAAC;YACL,CAAC;YAED,+CAA+C;YAC/C,MAAM,aAAa,GAAG,OAAO;gBACzB,CAAC,CAAC,MAAM;gBACR,CAAC,CAAC,MAAM,CAAC,MAAM,CACT,KAAK,CAAC,EAAE,CACJ,KAAK,CAAC,SAAS,IAAI,CAAC,mBAAmB,KAAK,IAAI,IAAI,KAAK,CAAC,QAAQ,KAAK,mBAAmB,CAAC,CAClG,CAAA;YAEP,oCAAoC;YACpC,MAAM,cAAc,GAAG,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE;gBAC7C,MAAM,SAAS,GAAG,KAAK,CAAC,UAAgD,CAAA;gBACxE,MAAM,QAAQ,GAAG,SAAS,EAAE,SAAS,IAAI,cAAc,CAAA;gBAEvD,OAAO;oBACH,EAAE,EAAE,KAAK,CAAC,EAAE;oBACZ,IAAI,EAAE,KAAK,CAAC,IAAI;oBAChB,IAAI,EAAE,KAAK,CAAC,IAAI;oBAChB,WAAW,EAAE,KAAK,CAAC,WAAW;oBAC9B,WAAW,EAAE,KAAK,CAAC,WAAW,IAAI,EAAE;oBACpC,MAAM,EAAE,KAAK,CAAC,MAAM,IAAI,EAAE;oBAC1B,QAAQ,EAAE,KAAK,CAAC,QAAQ,IAAI,IAAI;oBAChC,QAAQ,EAAE,KAAK,CAAC,QAAQ,IAAI,EAAE;oBAC9B,SAAS,EAAE,KAAK,CAAC,SAAS,IAAI,IAAI;oBAClC,wBAAwB;oBACxB,UAAU,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,IAAI,CAAC;oBACzC,SAAS,EAAE,QAAQ;oBACnB,WAAW,EAAE,IAAI,MAAM,CAAC,QAAQ,IAAI,KAAK,CAAC,EAAE,UAAU,QAAQ,EAAE;oBAChE,cAAc,EAAE,IAAI,MAAM,CAAC,QAAQ,IAAI,KAAK,CAAC,EAAE,QAAQ;iBAC1D,CAAA;YACL,CAAC,CAAC,CAAA;YAEF,OAAO;gBACH,MAAM,EAAE,GAAG;gBACX,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC;gBACvC,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;aAClD,CAAA;QACL,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,OAAO;gBACH,MAAM,EAAE,GAAG;gBACX,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC;oBACpB,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe;iBAClE,CAAC;gBACF,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;aAClD,CAAA;QACL,CAAC;IACL,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,YAAY,CAAC,GAAQ;QACvB,IAAI,CAAC;YACD,kDAAkD;YAClD,IAAI,MAAc,CAAA;YAElB,IAAI,UAAU,CAAC,cAAc,EAAE,EAAE,CAAC;gBAC9B,MAAM,aAAa,GAAG;oBAClB,EAAE,EAAE,UAAU,CAAC,kBAAkB,EAAE;oBACnC,KAAK,EAAE,EAAE;iBACZ,CAAA;gBACD,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,gBAAgB,CAAC,aAAa,CAAC,CAAA;gBACzE,MAAM,GAAG,UAAU,CAAC,EAAY,CAAA;YACpC,CAAC;iBAAM,CAAC;gBACJ,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,IAAI,EAAE,CAAC,EAAE,CAAC;oBACpD,OAAO;wBACH,MAAM,EAAE,GAAG;wBACX,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,yBAAyB,EAAE,CAAC;wBAC7D,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;qBAClD,CAAA;gBACL,CAAC;gBAED,MAAM,QAAQ,GAAG,gBAAgB,CAAC,gBAAgB,CAAC,GAAG,CAAC,OAAO,IAAI,EAAE,CAAC,CAAA;gBACrE,IAAI,CAAC,QAAQ,EAAE,CAAC;oBACZ,OAAO;wBACH,MAAM,EAAE,GAAG;wBACX,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,gCAAgC,EAAE,CAAC;wBACpE,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;qBAClD,CAAA;gBACL,CAAC;gBAED,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAA;gBACpE,IAAI,CAAC,UAAU,CAAC,EAAE,EAAE,CAAC;oBACjB,OAAO;wBACH,MAAM,EAAE,GAAG;wBACX,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,qCAAqC,EAAE,CAAC;wBACzE,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;qBAClD,CAAA;gBACL,CAAC;gBACD,MAAM,GAAG,UAAU,CAAC,EAAE,CAAA;YAC1B,CAAC;YAED,MAAM,EAAE,EAAE,EAAE,GAAG,GAAG,CAAC,MAAM,IAAI,EAAE,CAAA;YAC/B,IAAI,CAAC,EAAE,EAAE,CAAC;gBACN,OAAO;oBACH,MAAM,EAAE,GAAG;oBACX,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,sBAAsB,EAAE,CAAC;oBAC1D,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;iBAClD,CAAA;YACL,CAAC;YAED,qBAAqB;YACrB,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,CAAA;YACzC,IAAI,CAAC,KAAK,EAAE,CAAC;gBACT,OAAO;oBACH,MAAM,EAAE,GAAG;oBACX,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,mBAAmB,EAAE,CAAC;oBACvD,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;iBAClD,CAAA;YACL,CAAC;YAED,gDAAgD;YAChD,MAAM,OAAO,GAAG,gBAAgB,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,IAAI,EAAE,CAAC,CAAA;YAC3D,IAAI,CAAC,OAAO,IAAI,KAAK,CAAC,QAAQ,KAAK,IAAI,IAAI,KAAK,CAAC,QAAQ,KAAK,MAAM,EAAE,CAAC;gBACnE,OAAO;oBACH,MAAM,EAAE,GAAG;oBACX,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,qCAAqC,EAAE,CAAC;oBACzE,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;iBAClD,CAAA;YACL,CAAC;YAED,6EAA6E;YAC7E,MAAM,SAAS,GAAG,KAAK,CAAC,UAAgD,CAAA;YACxE,IAAI,SAAS,EAAE,KAAK,IAAI,SAAS,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACjD,MAAM,SAAS,GAAG,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;gBACxD,MAAM,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,SAAS,CAAC,CAAA;YAC7C,CAAC;YAED,yBAAyB;YACzB,MAAM,IAAI,CAAC,eAAe,CAAC,EAAE,CAAC,CAAA;YAE9B,OAAO;gBACH,MAAM,EAAE,GAAG;gBACX,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,8BAA8B,EAAE,CAAC;gBACpE,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;aAClD,CAAA;QACL,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,OAAO;gBACH,MAAM,EAAE,GAAG;gBACX,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC;oBACpB,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe;iBAClE,CAAC;gBACF,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;aAClD,CAAA;QACL,CAAC;IACL,CAAC;IAED;;OAEG;IACH,YAAY;QAMR,MAAM,MAAM,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAA;QAEtC,iEAAiE;QACjE,MAAM,aAAa,GAAG,KAAK,CAAC,YAAY,EAAE,CAAC,MAAM,CAC7C,EAAE,CAAC,EAAE;QACD,sEAAsE;QACtE,kDAAkD;QAClD,CAAC,CAAC,EAAE,CAAC,MAAM,KAAK,KAAK,IAAI,EAAE,CAAC,IAAI,KAAK,IAAI,MAAM,CAAC,QAAQ,MAAM,CAAC;YAC/D,CAAC,CAAC,EAAE,CAAC,MAAM,KAAK,QAAQ,IAAI,EAAE,CAAC,IAAI,KAAK,IAAI,MAAM,CAAC,QAAQ,MAAM,CAAC;YAClE,wEAAwE;YACxE,CAAC,CAAC,EAAE,CAAC,MAAM,KAAK,KAAK,IAAI,EAAE,CAAC,IAAI,KAAK,IAAI,MAAM,CAAC,QAAQ,eAAe,CAAC,CAC/E,CAAA;QAED,sEAAsE;QACtE,0FAA0F;QAC1F,OAAO;YACH,wCAAwC;YACxC;gBACI,MAAM,EAAE,KAAK;gBACb,IAAI,EAAE,IAAI,MAAM,CAAC,QAAQ,aAAa;gBACtC,OAAO,EAAE,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC;gBACxC,YAAY,EAAE,kBAAkB;aACnC;YACD,wCAAwC;YACxC;gBACI,MAAM,EAAE,KAAK;gBACb,IAAI,EAAE,IAAI,MAAM,CAAC,QAAQ,cAAc;gBACvC,OAAO,EAAE,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC;gBACtC,YAAY,EAAE,0BAA0B;aAC3C;YACD,mDAAmD;YACnD,GAAG,aAAa;YAChB,6DAA6D;YAC7D;gBACI,MAAM,EAAE,QAAQ;gBAChB,IAAI,EAAE,IAAI,MAAM,CAAC,QAAQ,MAAM;gBAC/B,OAAO,EAAE,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC;gBACrC,YAAY,EAAE,kBAAkB;aACnC;SACJ,CAAA;IACL,CAAC;IAED;;OAEG;IACH,cAAc;QACV,MAAM,UAAU,GAAG,KAAK,CAAC,cAAc,EAAE,CAAA;QACzC,MAAM,MAAM,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAA;QACtC,MAAM,QAAQ,GAAG,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAA;QACtC,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,IAAI,CAAA;QAE/C,uBAAuB;QACvB,IAAI,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC;YACvD,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG;gBAC/C,WAAW,EAAE,6CAA6C;gBAC1D,OAAO,EAAE;oBACL,kBAAkB,EAAE;wBAChB,MAAM,EAAE;4BACJ,IAAI,EAAE,QAAQ;4BACd,UAAU,EAAE;gCACR,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;gCAC3B,UAAU,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,WAAW,EAAE,2BAA2B,EAAE;gCACzE,SAAS,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,wBAAwB,EAAE;gCACpE,WAAW,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,uBAAuB,EAAE;6BACxE;yBACJ;qBACJ;iBACJ;aACJ,CAAA;QACL,CAAC;QAED,4BAA4B;QAC5B,UAAU,CAAC,KAAK,CAAC,GAAG,QAAQ,wBAAwB,CAAC,GAAG;YACpD,GAAG,EAAE;gBACD,OAAO,EAAE,kBAAkB;gBAC3B,WAAW,EAAE,yEAAyE;gBACtF,IAAI,EAAE,CAAC,OAAO,CAAC;gBACf,UAAU,EAAE;oBACR;wBACI,IAAI,EAAE,IAAI;wBACV,EAAE,EAAE,MAAM;wBACV,QAAQ,EAAE,IAAI;wBACd,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;wBAC1B,WAAW,EAAE,YAAY;qBAC5B;oBACD;wBACI,IAAI,EAAE,UAAU;wBAChB,EAAE,EAAE,MAAM;wBACV,QAAQ,EAAE,IAAI;wBACd,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;wBAC1B,WAAW,EAAE,qEAAqE;qBACrF;iBACJ;gBACD,SAAS,EAAE;oBACP,KAAK,EAAE;wBACH,WAAW,EAAE,cAAc;wBAC3B,OAAO,EAAE;4BACL,0BAA0B,EAAE;gCACxB,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE;6BAC/C;yBACJ;qBACJ;oBACD,KAAK,EAAE,EAAE,WAAW,EAAE,2BAA2B,EAAE;iBACtD;aACJ;SACJ,CAAA;QAED,kCAAkC;QAClC,IAAI,UAAU,CAAC,OAAO,EAAE,CAAC;YACrB,UAAU,CAAC,OAAO,CAAC,eAAe,GAAG;gBACjC,IAAI,EAAE,QAAQ;gBACd,UAAU,EAAE;oBACR,EAAE,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;oBACvB,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;oBACxB,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE;oBAC7C,WAAW,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;oBAC/B,WAAW,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;oBAC/B,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;oBAC1B,QAAQ,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,IAAI,EAAE;oBAC7C,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;oBAC5B,SAAS,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;oBAC9B,UAAU,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,WAAW,EAAE,4BAA4B,EAAE;oBAC1E,SAAS,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,4BAA4B,EAAE;oBACxE,WAAW,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,+BAA+B,EAAE;oBAC7E,cAAc,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,gCAAgC,EAAE;iBACpF;aACJ,CAAA;QACL,CAAC;QAED,IAAI,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,GAAG,EAAE,SAAS,EAAE,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC,kBAAkB,CAAC,EAAE,CAAC;YACrF,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC,MAAM,GAAG;gBACjF,IAAI,EAAE,OAAO;gBACb,KAAK,EAAE,EAAE,IAAI,EAAE,sCAAsC,EAAE;aAC1D,CAAA;QACL,CAAC;QAED,uEAAuE;QACvE,OAAO,UAAU,CAAC,KAAK,CAAC,GAAG,QAAQ,OAAO,CAAC,EAAE,GAAG,CAAA;QAEhD,2BAA2B;QAC3B,OAAO,UAAU,CAAC,KAAK,CAAC,GAAG,QAAQ,gBAAgB,CAAC,CAAA;QAEpD,OAAO,UAAU,CAAA;IACrB,CAAC;CACJ"}
|
|
1
|
+
{"version":3,"file":"tileset_manager.js","sourceRoot":"","sources":["../../src/components/tileset_manager.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,66 +1,30 @@
|
|
|
1
1
|
import type { ConnectionOptions } from 'bullmq';
|
|
2
2
|
import type { StorageService } from '../storage/storage_service.js';
|
|
3
3
|
import type { DatabaseAdapter } from '../database/database_adapter.js';
|
|
4
|
-
/**
|
|
5
|
-
* Job data for tileset upload processing
|
|
6
|
-
*/
|
|
7
4
|
export interface TilesetUploadJobData {
|
|
8
5
|
type: 'tileset';
|
|
9
|
-
/** Database record ID (created with status 'pending') */
|
|
10
6
|
recordId: number;
|
|
11
|
-
/** Path to temporary ZIP file */
|
|
12
7
|
tempFilePath: string;
|
|
13
|
-
/** Component name (e.g., 'tilesets_manager') */
|
|
14
8
|
componentName: string;
|
|
15
|
-
/** User ID who uploaded */
|
|
16
9
|
userId: number;
|
|
17
|
-
/** Original filename */
|
|
18
10
|
filename: string;
|
|
19
|
-
/** Description */
|
|
20
11
|
description: string;
|
|
21
12
|
}
|
|
22
|
-
/**
|
|
23
|
-
* Generic upload job data (union type for future extension)
|
|
24
|
-
*/
|
|
25
13
|
export type UploadJobData = TilesetUploadJobData;
|
|
26
|
-
/**
|
|
27
|
-
* Upload job status stored in database
|
|
28
|
-
*/
|
|
29
14
|
export type UploadStatus = 'pending' | 'processing' | 'completed' | 'failed';
|
|
30
15
|
/**
|
|
31
|
-
*
|
|
32
|
-
*
|
|
33
|
-
* This processor handles long-running upload tasks that would otherwise
|
|
34
|
-
* timeout the HTTP request. Jobs are queued and processed in the background.
|
|
16
|
+
* Background worker for processing large file uploads (tileset extraction).
|
|
17
|
+
* Prevents HTTP timeout by queuing jobs and processing asynchronously.
|
|
35
18
|
*/
|
|
36
19
|
export declare class UploadProcessor {
|
|
37
20
|
private worker;
|
|
38
21
|
private storage;
|
|
39
22
|
private db;
|
|
40
23
|
constructor(storage: StorageService, db: DatabaseAdapter);
|
|
41
|
-
/**
|
|
42
|
-
* Start the upload processor worker
|
|
43
|
-
*/
|
|
44
24
|
start(connection: ConnectionOptions): void;
|
|
45
|
-
/**
|
|
46
|
-
* Stop the worker gracefully
|
|
47
|
-
*/
|
|
48
25
|
stop(): Promise<void>;
|
|
49
|
-
/**
|
|
50
|
-
* Process a single upload job
|
|
51
|
-
*/
|
|
52
26
|
private processJob;
|
|
53
|
-
/**
|
|
54
|
-
* Process tileset upload: extract ZIP and upload files to storage
|
|
55
|
-
*/
|
|
56
27
|
private processTilesetUpload;
|
|
57
|
-
/**
|
|
58
|
-
* Update record status in database
|
|
59
|
-
*/
|
|
60
28
|
private updateRecordStatus;
|
|
61
|
-
/**
|
|
62
|
-
* Update record with completion data
|
|
63
|
-
*/
|
|
64
|
-
private updateRecordComplete;
|
|
65
29
|
}
|
|
66
30
|
//# sourceMappingURL=upload_processor.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"upload_processor.d.ts","sourceRoot":"","sources":["../../src/engine/upload_processor.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"upload_processor.d.ts","sourceRoot":"","sources":["../../src/engine/upload_processor.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,QAAQ,CAAA;AAC/C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAA;AACnE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAA;AAItE,MAAM,WAAW,oBAAoB;IACjC,IAAI,EAAE,SAAS,CAAA;IACf,QAAQ,EAAE,MAAM,CAAA;IAChB,YAAY,EAAE,MAAM,CAAA;IACpB,aAAa,EAAE,MAAM,CAAA;IACrB,MAAM,EAAE,MAAM,CAAA;IACd,QAAQ,EAAE,MAAM,CAAA;IAChB,WAAW,EAAE,MAAM,CAAA;CACtB;AAED,MAAM,MAAM,aAAa,GAAG,oBAAoB,CAAA;AAChD,MAAM,MAAM,YAAY,GAAG,SAAS,GAAG,YAAY,GAAG,WAAW,GAAG,QAAQ,CAAA;AAE5E;;;GAGG;AACH,qBAAa,eAAe;IACxB,OAAO,CAAC,MAAM,CAAsB;IACpC,OAAO,CAAC,OAAO,CAAgB;IAC/B,OAAO,CAAC,EAAE,CAAiB;gBAEf,OAAO,EAAE,cAAc,EAAE,EAAE,EAAE,eAAe;IAKxD,KAAK,CAAC,UAAU,EAAE,iBAAiB,GAAG,IAAI;IAWpC,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;YAOb,UAAU;YAQV,oBAAoB;YAyCpB,kBAAkB;CAGnC"}
|
|
@@ -1,12 +1,9 @@
|
|
|
1
|
-
// src/engine/upload_processor.ts
|
|
2
1
|
import { Worker } from 'bullmq';
|
|
3
2
|
import { extractAndStoreArchive } from '../utils/zip_utils.js';
|
|
4
3
|
import fs from 'fs/promises';
|
|
5
4
|
/**
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
* This processor handles long-running upload tasks that would otherwise
|
|
9
|
-
* timeout the HTTP request. Jobs are queued and processed in the background.
|
|
5
|
+
* Background worker for processing large file uploads (tileset extraction).
|
|
6
|
+
* Prevents HTTP timeout by queuing jobs and processing asynchronously.
|
|
10
7
|
*/
|
|
11
8
|
export class UploadProcessor {
|
|
12
9
|
constructor(storage, db) {
|
|
@@ -14,135 +11,66 @@ export class UploadProcessor {
|
|
|
14
11
|
this.storage = storage;
|
|
15
12
|
this.db = db;
|
|
16
13
|
}
|
|
17
|
-
/**
|
|
18
|
-
* Start the upload processor worker
|
|
19
|
-
*/
|
|
20
14
|
start(connection) {
|
|
21
|
-
this.worker = new Worker('dt-uploads', async (job) => {
|
|
22
|
-
return this.processJob(job);
|
|
23
|
-
}, {
|
|
15
|
+
this.worker = new Worker('dt-uploads', async (job) => this.processJob(job), {
|
|
24
16
|
connection,
|
|
25
|
-
concurrency: 2,
|
|
26
|
-
limiter: {
|
|
27
|
-
max: 5,
|
|
28
|
-
duration: 60000 // Max 5 jobs per minute to avoid overwhelming OVH
|
|
29
|
-
}
|
|
30
|
-
});
|
|
31
|
-
this.worker.on('completed', job => {
|
|
32
|
-
console.log(`[UploadProcessor] Job ${job.id} completed`);
|
|
33
|
-
});
|
|
34
|
-
this.worker.on('failed', (job, err) => {
|
|
35
|
-
console.error(`[UploadProcessor] Job ${job?.id} failed:`, err.message);
|
|
36
|
-
});
|
|
37
|
-
this.worker.on('progress', (job, progress) => {
|
|
38
|
-
console.log(`[UploadProcessor] Job ${job.id} progress: ${progress}%`);
|
|
17
|
+
concurrency: 2,
|
|
18
|
+
limiter: { max: 5, duration: 60000 }
|
|
39
19
|
});
|
|
20
|
+
this.worker.on('completed', job => console.log(`[UploadProcessor] Job ${job.id} completed`));
|
|
21
|
+
this.worker.on('failed', (job, err) => console.error(`[UploadProcessor] Job ${job?.id} failed:`, err.message));
|
|
40
22
|
}
|
|
41
|
-
/**
|
|
42
|
-
* Stop the worker gracefully
|
|
43
|
-
*/
|
|
44
23
|
async stop() {
|
|
45
24
|
if (this.worker) {
|
|
46
25
|
await this.worker.close();
|
|
47
26
|
this.worker = null;
|
|
48
27
|
}
|
|
49
28
|
}
|
|
50
|
-
/**
|
|
51
|
-
* Process a single upload job
|
|
52
|
-
*/
|
|
53
29
|
async processJob(job) {
|
|
54
|
-
|
|
55
|
-
if (data.type === 'tileset') {
|
|
30
|
+
if (job.data.type === 'tileset') {
|
|
56
31
|
await this.processTilesetUpload(job);
|
|
57
32
|
}
|
|
58
33
|
else {
|
|
59
|
-
throw new Error(`Unknown upload job type: ${data.type}`);
|
|
34
|
+
throw new Error(`Unknown upload job type: ${job.data.type}`);
|
|
60
35
|
}
|
|
61
36
|
}
|
|
62
|
-
/**
|
|
63
|
-
* Process tileset upload: extract ZIP and upload files to storage
|
|
64
|
-
*/
|
|
65
37
|
async processTilesetUpload(job) {
|
|
66
38
|
const { recordId, tempFilePath, componentName } = job.data;
|
|
67
39
|
try {
|
|
68
|
-
// Update status to processing
|
|
69
40
|
await this.updateRecordStatus(recordId, componentName, 'processing');
|
|
70
41
|
await job.updateProgress(10);
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
zipBuffer = await fs.readFile(tempFilePath);
|
|
75
|
-
}
|
|
76
|
-
catch (error) {
|
|
77
|
-
throw new Error(`Failed to read temp file: ${error instanceof Error ? error.message : 'Unknown error'}`);
|
|
78
|
-
}
|
|
42
|
+
const zipBuffer = await fs.readFile(tempFilePath).catch(err => {
|
|
43
|
+
throw new Error(`Failed to read temp file: ${err.message}`);
|
|
44
|
+
});
|
|
79
45
|
await job.updateProgress(20);
|
|
80
|
-
|
|
81
|
-
const tilesetId = Date.now().toString();
|
|
82
|
-
const basePath = `${componentName}/${tilesetId}`;
|
|
83
|
-
// Extract and store all files
|
|
84
|
-
console.log(`[UploadProcessor] Starting extraction for ${basePath}, ZIP size: ${zipBuffer.length} bytes`);
|
|
46
|
+
const basePath = `${componentName}/${Date.now()}`;
|
|
85
47
|
const extractResult = await extractAndStoreArchive(zipBuffer, this.storage, basePath);
|
|
86
|
-
console.log(`[UploadProcessor] Extraction complete: ${extractResult.file_count} files`);
|
|
87
48
|
await job.updateProgress(80);
|
|
88
|
-
// Validate tileset.json was found
|
|
89
49
|
if (!extractResult.root_file) {
|
|
90
|
-
// Clean up stored files using batch delete
|
|
91
50
|
if (extractResult.files.length > 0) {
|
|
92
|
-
|
|
93
|
-
await this.storage.deleteBatch(filePaths);
|
|
51
|
+
await this.storage.deleteBatch(extractResult.files.map(f => f.path));
|
|
94
52
|
}
|
|
95
53
|
throw new Error('Invalid tileset: no tileset.json found in the ZIP archive');
|
|
96
54
|
}
|
|
97
|
-
|
|
98
|
-
await this.updateRecordComplete(recordId, componentName, {
|
|
55
|
+
await this.db.updateById(componentName, recordId, {
|
|
99
56
|
url: basePath,
|
|
100
|
-
file_index: {
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
}
|
|
57
|
+
file_index: { files: extractResult.files, root_file: extractResult.root_file },
|
|
58
|
+
upload_status: 'completed',
|
|
59
|
+
updated_at: new Date()
|
|
104
60
|
});
|
|
105
61
|
await job.updateProgress(90);
|
|
106
|
-
// Clean up temp file
|
|
107
62
|
await fs.unlink(tempFilePath).catch(() => { });
|
|
108
63
|
await job.updateProgress(100);
|
|
109
64
|
}
|
|
110
65
|
catch (error) {
|
|
111
|
-
//
|
|
112
|
-
|
|
113
|
-
await this.db.delete(String(recordId), componentName);
|
|
114
|
-
console.log(`[UploadProcessor] Deleted failed record ${recordId} from ${componentName}`);
|
|
115
|
-
}
|
|
116
|
-
catch (deleteError) {
|
|
117
|
-
console.error(`[UploadProcessor] Failed to delete record ${recordId}:`, deleteError);
|
|
118
|
-
}
|
|
119
|
-
// Clean up temp file even on error
|
|
66
|
+
// Cleanup: delete DB record and temp file on failure
|
|
67
|
+
await this.db.delete(String(recordId), componentName).catch(() => { });
|
|
120
68
|
await fs.unlink(tempFilePath).catch(() => { });
|
|
121
69
|
throw error;
|
|
122
70
|
}
|
|
123
71
|
}
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
*/
|
|
127
|
-
async updateRecordStatus(id, tableName, status, errorMessage) {
|
|
128
|
-
const updateData = {
|
|
129
|
-
upload_status: status,
|
|
130
|
-
updated_at: new Date()
|
|
131
|
-
};
|
|
132
|
-
if (errorMessage) {
|
|
133
|
-
updateData.upload_error = errorMessage;
|
|
134
|
-
}
|
|
135
|
-
await this.db.updateById(tableName, id, updateData);
|
|
136
|
-
}
|
|
137
|
-
/**
|
|
138
|
-
* Update record with completion data
|
|
139
|
-
*/
|
|
140
|
-
async updateRecordComplete(id, tableName, data) {
|
|
141
|
-
await this.db.updateById(tableName, id, {
|
|
142
|
-
...data,
|
|
143
|
-
upload_status: 'completed',
|
|
144
|
-
updated_at: new Date()
|
|
145
|
-
});
|
|
72
|
+
async updateRecordStatus(id, tableName, status) {
|
|
73
|
+
await this.db.updateById(tableName, id, { upload_status: status, updated_at: new Date() });
|
|
146
74
|
}
|
|
147
75
|
}
|
|
148
76
|
//# sourceMappingURL=upload_processor.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"upload_processor.js","sourceRoot":"","sources":["../../src/engine/upload_processor.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"upload_processor.js","sourceRoot":"","sources":["../../src/engine/upload_processor.ts"],"names":[],"mappings":"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"}
|
|
@@ -112,5 +112,21 @@ export interface DataRecord {
|
|
|
112
112
|
/** Main entry point file (e.g., 'tileset.json') */
|
|
113
113
|
root_file?: string;
|
|
114
114
|
};
|
|
115
|
+
/**
|
|
116
|
+
* Status of async upload processing.
|
|
117
|
+
* - 'pending': Job queued, waiting to start
|
|
118
|
+
* - 'processing': Job is running
|
|
119
|
+
* - 'completed': Job finished successfully
|
|
120
|
+
* - 'failed': Job failed with error
|
|
121
|
+
*/
|
|
122
|
+
upload_status?: 'pending' | 'processing' | 'completed' | 'failed' | null;
|
|
123
|
+
/**
|
|
124
|
+
* Error message if upload failed.
|
|
125
|
+
*/
|
|
126
|
+
upload_error?: string | null;
|
|
127
|
+
/**
|
|
128
|
+
* BullMQ job ID for tracking.
|
|
129
|
+
*/
|
|
130
|
+
upload_job_id?: string | null;
|
|
115
131
|
}
|
|
116
132
|
//# sourceMappingURL=data_record.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"data_record.d.ts","sourceRoot":"","sources":["../../src/types/data_record.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,WAAW,UAAU;IACvB,6CAA6C;IAC7C,EAAE,EAAE,MAAM,CAAA;IAEV,wDAAwD;IACxD,IAAI,EAAE,MAAM,CAAA;IAEZ,6DAA6D;IAC7D,IAAI,EAAE,IAAI,CAAA;IAEV,4EAA4E;IAC5E,WAAW,EAAE,MAAM,CAAA;IAEnB,oDAAoD;IACpD,GAAG,EAAE,MAAM,CAAA;IAEX;;;;;;;OAOG;IACH,IAAI,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,CAAA;IAI3B;;;;;OAKG;IACH,WAAW,CAAC,EAAE,MAAM,CAAA;IAEpB;;;;;OAKG;IACH,MAAM,CAAC,EAAE,MAAM,CAAA;IAEf;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAExB;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAA;IAEjB;;;;;;OAMG;IACH,SAAS,CAAC,EAAE,OAAO,CAAA;IAInB;;;;;;;;;;;;;;;;OAgBG;IACH,UAAU,CAAC,EAAE;QACT,6CAA6C;QAC7C,KAAK,EAAE,KAAK,CAAC;YACT,iCAAiC;YACjC,IAAI,EAAE,MAAM,CAAA;YACZ,wBAAwB;YACxB,IAAI,EAAE,MAAM,CAAA;YACZ,yBAAyB;YACzB,IAAI,CAAC,EAAE,MAAM,CAAA;SAChB,CAAC,CAAA;QACF,mDAAmD;QACnD,SAAS,CAAC,EAAE,MAAM,CAAA;KACrB,CAAA;
|
|
1
|
+
{"version":3,"file":"data_record.d.ts","sourceRoot":"","sources":["../../src/types/data_record.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,WAAW,UAAU;IACvB,6CAA6C;IAC7C,EAAE,EAAE,MAAM,CAAA;IAEV,wDAAwD;IACxD,IAAI,EAAE,MAAM,CAAA;IAEZ,6DAA6D;IAC7D,IAAI,EAAE,IAAI,CAAA;IAEV,4EAA4E;IAC5E,WAAW,EAAE,MAAM,CAAA;IAEnB,oDAAoD;IACpD,GAAG,EAAE,MAAM,CAAA;IAEX;;;;;;;OAOG;IACH,IAAI,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,CAAA;IAI3B;;;;;OAKG;IACH,WAAW,CAAC,EAAE,MAAM,CAAA;IAEpB;;;;;OAKG;IACH,MAAM,CAAC,EAAE,MAAM,CAAA;IAEf;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAExB;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAA;IAEjB;;;;;;OAMG;IACH,SAAS,CAAC,EAAE,OAAO,CAAA;IAInB;;;;;;;;;;;;;;;;OAgBG;IACH,UAAU,CAAC,EAAE;QACT,6CAA6C;QAC7C,KAAK,EAAE,KAAK,CAAC;YACT,iCAAiC;YACjC,IAAI,EAAE,MAAM,CAAA;YACZ,wBAAwB;YACxB,IAAI,EAAE,MAAM,CAAA;YACZ,yBAAyB;YACzB,IAAI,CAAC,EAAE,MAAM,CAAA;SAChB,CAAC,CAAA;QACF,mDAAmD;QACnD,SAAS,CAAC,EAAE,MAAM,CAAA;KACrB,CAAA;IAID;;;;;;OAMG;IACH,aAAa,CAAC,EAAE,SAAS,GAAG,YAAY,GAAG,WAAW,GAAG,QAAQ,GAAG,IAAI,CAAA;IAExE;;OAEG;IACH,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAE5B;;OAEG;IACH,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CAChC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"map_to_data_record.d.ts","sourceRoot":"","sources":["../../src/utils/map_to_data_record.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAA;AACnE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAA;AACzD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAA;AAElE;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,WAAW,GAAG,GAAG,EAAE,OAAO,EAAE,cAAc,GAAG,UAAU,
|
|
1
|
+
{"version":3,"file":"map_to_data_record.d.ts","sourceRoot":"","sources":["../../src/utils/map_to_data_record.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAA;AACnE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAA;AACzD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAA;AAElE;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,WAAW,GAAG,GAAG,EAAE,OAAO,EAAE,cAAc,GAAG,UAAU,CA8B3F"}
|
|
@@ -24,7 +24,11 @@ export function mapToDataRecord(row, storage) {
|
|
|
24
24
|
? typeof row.file_index === 'string'
|
|
25
25
|
? JSON.parse(row.file_index)
|
|
26
26
|
: row.file_index
|
|
27
|
-
: undefined
|
|
27
|
+
: undefined,
|
|
28
|
+
// Async upload support
|
|
29
|
+
upload_status: row.upload_status || null,
|
|
30
|
+
upload_error: row.upload_error || null,
|
|
31
|
+
upload_job_id: row.upload_job_id || null
|
|
28
32
|
};
|
|
29
33
|
}
|
|
30
34
|
//# sourceMappingURL=map_to_data_record.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"map_to_data_record.js","sourceRoot":"","sources":["../../src/utils/map_to_data_record.ts"],"names":[],"mappings":"AAIA;;;;GAIG;AACH,MAAM,UAAU,eAAe,CAAC,GAAsB,EAAE,OAAuB;IAC3E,OAAO;QACH,EAAE,EAAE,GAAG,CAAC,EAAE;QACV,IAAI,EAAE,GAAG,CAAC,IAAI;QACd,IAAI,EAAE,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC;QACxB,WAAW,EAAE,GAAG,CAAC,IAAI;QACrB,GAAG,EAAE,GAAG,CAAC,GAAG;QACZ,IAAI,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC;QAErC,2DAA2D;QAC3D,WAAW,EAAE,GAAG,CAAC,WAAW;QAC5B,MAAM,EAAE,GAAG,CAAC,MAAM;QAClB,QAAQ,EAAE,GAAG,CAAC,QAAQ;QACtB,QAAQ,EAAE,GAAG,CAAC,QAAQ;QACtB,0FAA0F;QAC1F,mEAAmE;QACnE,SAAS,EAAE,GAAG,CAAC,SAAS,KAAK,SAAS,IAAI,GAAG,CAAC,SAAS,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC;QAEhG,+DAA+D;QAC/D,UAAU,EAAE,GAAG,CAAC,UAAU;YACtB,CAAC,CAAC,OAAO,GAAG,CAAC,UAAU,KAAK,QAAQ;gBAChC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC;gBAC5B,CAAC,CAAC,GAAG,CAAC,UAAU;YACpB,CAAC,CAAC,SAAS;
|
|
1
|
+
{"version":3,"file":"map_to_data_record.js","sourceRoot":"","sources":["../../src/utils/map_to_data_record.ts"],"names":[],"mappings":"AAIA;;;;GAIG;AACH,MAAM,UAAU,eAAe,CAAC,GAAsB,EAAE,OAAuB;IAC3E,OAAO;QACH,EAAE,EAAE,GAAG,CAAC,EAAE;QACV,IAAI,EAAE,GAAG,CAAC,IAAI;QACd,IAAI,EAAE,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC;QACxB,WAAW,EAAE,GAAG,CAAC,IAAI;QACrB,GAAG,EAAE,GAAG,CAAC,GAAG;QACZ,IAAI,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC;QAErC,2DAA2D;QAC3D,WAAW,EAAE,GAAG,CAAC,WAAW;QAC5B,MAAM,EAAE,GAAG,CAAC,MAAM;QAClB,QAAQ,EAAE,GAAG,CAAC,QAAQ;QACtB,QAAQ,EAAE,GAAG,CAAC,QAAQ;QACtB,0FAA0F;QAC1F,mEAAmE;QACnE,SAAS,EAAE,GAAG,CAAC,SAAS,KAAK,SAAS,IAAI,GAAG,CAAC,SAAS,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC;QAEhG,+DAA+D;QAC/D,UAAU,EAAE,GAAG,CAAC,UAAU;YACtB,CAAC,CAAC,OAAO,GAAG,CAAC,UAAU,KAAK,QAAQ;gBAChC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC;gBAC5B,CAAC,CAAC,GAAG,CAAC,UAAU;YACpB,CAAC,CAAC,SAAS;QAEf,uBAAuB;QACvB,aAAa,EAAE,GAAG,CAAC,aAAa,IAAI,IAAI;QACxC,YAAY,EAAE,GAAG,CAAC,YAAY,IAAI,IAAI;QACtC,aAAa,EAAE,GAAG,CAAC,aAAa,IAAI,IAAI;KAC3C,CAAA;AACL,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"zip_utils.d.ts","sourceRoot":"","sources":["../../src/utils/zip_utils.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAA;AAEnE;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACnC,gDAAgD;IAChD,KAAK,EAAE,KAAK,CAAC;QACT,iCAAiC;QACjC,IAAI,EAAE,MAAM,CAAA;QACZ,2CAA2C;QAC3C,IAAI,EAAE,MAAM,CAAA;QACZ,yBAAyB;QACzB,IAAI,EAAE,MAAM,CAAA;KACf,CAAC,CAAA;IACF,8CAA8C;IAC9C,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,sCAAsC;IACtC,UAAU,EAAE,MAAM,CAAA;CACrB;AAED;;;;GAIG;AACH,wBAAuB,uBAAuB,CAAC,SAAS,EAAE,MAAM,GAAG,cAAc,CAAC,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,CAAC,CAqB3G;AAED;;;;GAIG;AACH,wBAAsB,SAAS,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,CAAC,CAQ3F;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,GAAG;IAC7E,IAAI,EAAE,MAAM,CAAA;IACZ,SAAS,EAAE,MAAM,CAAA;IACjB,WAAW,EAAE,OAAO,CAAA;IACpB,SAAS,EAAE,MAAM,EAAE,CAAA;CACtB,CAkCA;AAED;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,MAAM,GAAG,SAAS,CAezE;AAED;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAiB1E;AAED;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAsB,sBAAsB,CACxC,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,cAAc,EACvB,QAAQ,EAAE,MAAM,GACjB,OAAO,CAAC,sBAAsB,CAAC,
|
|
1
|
+
{"version":3,"file":"zip_utils.d.ts","sourceRoot":"","sources":["../../src/utils/zip_utils.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAA;AAEnE;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACnC,gDAAgD;IAChD,KAAK,EAAE,KAAK,CAAC;QACT,iCAAiC;QACjC,IAAI,EAAE,MAAM,CAAA;QACZ,2CAA2C;QAC3C,IAAI,EAAE,MAAM,CAAA;QACZ,yBAAyB;QACzB,IAAI,EAAE,MAAM,CAAA;KACf,CAAC,CAAA;IACF,8CAA8C;IAC9C,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,sCAAsC;IACtC,UAAU,EAAE,MAAM,CAAA;CACrB;AAED;;;;GAIG;AACH,wBAAuB,uBAAuB,CAAC,SAAS,EAAE,MAAM,GAAG,cAAc,CAAC,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,CAAC,CAqB3G;AAED;;;;GAIG;AACH,wBAAsB,SAAS,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,CAAC,CAQ3F;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,GAAG;IAC7E,IAAI,EAAE,MAAM,CAAA;IACZ,SAAS,EAAE,MAAM,CAAA;IACjB,WAAW,EAAE,OAAO,CAAA;IACpB,SAAS,EAAE,MAAM,EAAE,CAAA;CACtB,CAkCA;AAED;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,MAAM,GAAG,SAAS,CAezE;AAED;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAiB1E;AAED;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAsB,sBAAsB,CACxC,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,cAAc,EACvB,QAAQ,EAAE,MAAM,GACjB,OAAO,CAAC,sBAAsB,CAAC,CA8EjC"}
|
package/dist/utils/zip_utils.js
CHANGED
|
@@ -159,25 +159,44 @@ export async function extractAndStoreArchive(zipBuffer, storage, basePath) {
|
|
|
159
159
|
const entries = Array.from(normalizedPaths.entries());
|
|
160
160
|
const totalFiles = entries.length;
|
|
161
161
|
console.log(`[ZipUtils] Extracting ${totalFiles} files to ${basePath}`);
|
|
162
|
-
|
|
163
|
-
const batch = entries.slice(i, i + PARALLEL_UPLOADS);
|
|
164
|
-
const batchNum = Math.floor(i / PARALLEL_UPLOADS) + 1;
|
|
162
|
+
try {
|
|
165
163
|
const totalBatches = Math.ceil(totalFiles / PARALLEL_UPLOADS);
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
const
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
path:
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
164
|
+
// Log progress every 10% or at least every 10 batches
|
|
165
|
+
const logInterval = Math.max(1, Math.floor(totalBatches / 10));
|
|
166
|
+
for (let i = 0; i < entries.length; i += PARALLEL_UPLOADS) {
|
|
167
|
+
const batch = entries.slice(i, i + PARALLEL_UPLOADS);
|
|
168
|
+
const batchNum = Math.floor(i / PARALLEL_UPLOADS) + 1;
|
|
169
|
+
const results = await Promise.all(batch.map(async ([originalPath, normalizedPath]) => {
|
|
170
|
+
const zipObject = zipContent.files[originalPath];
|
|
171
|
+
const content = await zipObject.async('nodebuffer');
|
|
172
|
+
// Build storage path: basePath/normalizedPath
|
|
173
|
+
const storagePath = `${basePath}/${normalizedPath}`;
|
|
174
|
+
// Save the file using saveWithPath which preserves the exact path
|
|
175
|
+
await storage.saveWithPath(content, storagePath);
|
|
176
|
+
return {
|
|
177
|
+
path: storagePath,
|
|
178
|
+
name: normalizedPath,
|
|
179
|
+
size: content.length
|
|
180
|
+
};
|
|
181
|
+
}));
|
|
182
|
+
storedFiles.push(...results);
|
|
183
|
+
// Log progress periodically (every ~10%) or on last batch
|
|
184
|
+
if (batchNum % logInterval === 0 || batchNum === totalBatches) {
|
|
185
|
+
const percent = Math.round((storedFiles.length / totalFiles) * 100);
|
|
186
|
+
console.log(`[ZipUtils] Progress: ${percent}% (${storedFiles.length}/${totalFiles} files)`);
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
catch (error) {
|
|
191
|
+
// Clean up any files that were already uploaded before the error
|
|
192
|
+
if (storedFiles.length > 0) {
|
|
193
|
+
console.log(`[ZipUtils] Error during extraction, cleaning up ${storedFiles.length} uploaded files...`);
|
|
194
|
+
const uploadedPaths = storedFiles.map(f => f.path);
|
|
195
|
+
await storage.deleteBatch(uploadedPaths).catch(cleanupErr => {
|
|
196
|
+
console.error(`[ZipUtils] Failed to clean up files after error:`, cleanupErr);
|
|
197
|
+
});
|
|
198
|
+
}
|
|
199
|
+
throw error;
|
|
181
200
|
}
|
|
182
201
|
return {
|
|
183
202
|
files: storedFiles,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"zip_utils.js","sourceRoot":"","sources":["../../src/utils/zip_utils.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"zip_utils.js","sourceRoot":"","sources":["../../src/utils/zip_utils.ts"],"names":[],"mappings":"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"}
|