digitaltwin-core 0.13.0 → 0.13.2
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 +46 -65
- package/dist/components/tileset_manager.d.ts.map +1 -1
- package/dist/components/tileset_manager.js +415 -652
- package/dist/components/tileset_manager.js.map +1 -1
- package/dist/database/adapters/knex_database_adapter.d.ts.map +1 -1
- package/dist/database/adapters/knex_database_adapter.js +9 -12
- package/dist/database/adapters/knex_database_adapter.js.map +1 -1
- package/dist/engine/upload_processor.d.ts +7 -37
- package/dist/engine/upload_processor.d.ts.map +1 -1
- package/dist/engine/upload_processor.js +45 -92
- package/dist/engine/upload_processor.js.map +1 -1
- package/dist/storage/adapters/local_storage_service.d.ts +14 -0
- package/dist/storage/adapters/local_storage_service.d.ts.map +1 -1
- package/dist/storage/adapters/local_storage_service.js +46 -0
- package/dist/storage/adapters/local_storage_service.js.map +1 -1
- package/dist/storage/adapters/ovh_storage_service.d.ts +15 -0
- package/dist/storage/adapters/ovh_storage_service.d.ts.map +1 -1
- package/dist/storage/adapters/ovh_storage_service.js +54 -2
- package/dist/storage/adapters/ovh_storage_service.js.map +1 -1
- package/dist/storage/storage_service.d.ts +36 -0
- package/dist/storage/storage_service.d.ts.map +1 -1
- package/dist/storage/storage_service.js.map +1 -1
- package/dist/types/data_record.d.ts +22 -15
- package/dist/types/data_record.d.ts.map +1 -1
- package/dist/utils/index.d.ts +1 -1
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/index.js +1 -1
- package/dist/utils/index.js.map +1 -1
- package/dist/utils/map_to_data_record.d.ts.map +1 -1
- package/dist/utils/map_to_data_record.js +8 -2
- package/dist/utils/map_to_data_record.js.map +1 -1
- package/dist/utils/zip_utils.d.ts +14 -30
- package/dist/utils/zip_utils.d.ts.map +1 -1
- package/dist/utils/zip_utils.js +50 -69
- package/dist/utils/zip_utils.js.map +1 -1
- package/package.json +1 -1
|
@@ -5,64 +5,67 @@ import type { HttpMethod } from '../engine/endpoints.js';
|
|
|
5
5
|
import type { AsyncUploadable } from './async_upload.js';
|
|
6
6
|
import type { Queue } from 'bullmq';
|
|
7
7
|
/**
|
|
8
|
-
*
|
|
8
|
+
* Metadata stored in database for a tileset.
|
|
9
|
+
* Simplified: Cesium accesses files directly from OVH.
|
|
9
10
|
*/
|
|
10
11
|
export interface TilesetMetadataRow {
|
|
11
12
|
id?: number;
|
|
12
13
|
name: string;
|
|
13
14
|
type: string;
|
|
15
|
+
/** Base path in storage for deletion (e.g., tilesets/123) */
|
|
14
16
|
url: string;
|
|
17
|
+
/** Public URL to tileset.json */
|
|
18
|
+
tileset_url: string;
|
|
15
19
|
date: Date;
|
|
16
20
|
description: string;
|
|
17
|
-
source: string;
|
|
18
|
-
owner_id: number | null;
|
|
19
21
|
filename: string;
|
|
22
|
+
owner_id: number | null;
|
|
20
23
|
is_public?: boolean;
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
name: string;
|
|
25
|
-
size: number;
|
|
26
|
-
}>;
|
|
27
|
-
root_file?: string;
|
|
28
|
-
};
|
|
24
|
+
upload_status?: 'pending' | 'processing' | 'completed' | 'failed';
|
|
25
|
+
upload_job_id?: string;
|
|
26
|
+
upload_error?: string;
|
|
29
27
|
}
|
|
30
28
|
/**
|
|
31
29
|
* Specialized Assets Manager for handling 3D Tiles tilesets.
|
|
32
30
|
*
|
|
33
|
-
* This manager extracts uploaded ZIP files and stores each file
|
|
34
|
-
* allowing Cesium and other 3D viewers to load tilesets directly via
|
|
31
|
+
* This manager extracts uploaded ZIP files and stores each file in cloud storage (OVH S3),
|
|
32
|
+
* allowing Cesium and other 3D viewers to load tilesets directly via public URLs.
|
|
33
|
+
*
|
|
34
|
+
* ## How it works
|
|
35
|
+
*
|
|
36
|
+
* 1. User uploads a ZIP containing a 3D Tiles tileset
|
|
37
|
+
* 2. ZIP is extracted and all files are stored in OVH with public-read ACL
|
|
38
|
+
* 3. Database stores only the tileset.json URL and base path
|
|
39
|
+
* 4. Cesium loads tileset.json directly from OVH
|
|
40
|
+
* 5. Cesium fetches tiles using relative paths in tileset.json (directly from OVH)
|
|
35
41
|
*
|
|
36
|
-
*
|
|
37
|
-
* - Extracts ZIP archives on upload (no ZIP stored, only extracted files)
|
|
38
|
-
* - Detects and tracks the root tileset.json file
|
|
39
|
-
* - Serves individual files via dedicated endpoint
|
|
40
|
-
* - Returns tileset.json URL for direct Cesium loading
|
|
42
|
+
* ## Endpoints
|
|
41
43
|
*
|
|
42
|
-
*
|
|
43
|
-
* -
|
|
44
|
-
* -
|
|
45
|
-
* - GET /{endpoint}/:id - Get tileset metadata
|
|
46
|
-
* - GET /{endpoint}/:id/files/* - Serve extracted files (tileset.json, .b3dm, etc.)
|
|
44
|
+
* - GET /{endpoint} - List all tilesets with their public URLs
|
|
45
|
+
* - POST /{endpoint} - Upload tileset ZIP (sync < 50MB, async >= 50MB)
|
|
46
|
+
* - GET /{endpoint}/:id/status - Poll async upload status
|
|
47
47
|
* - PUT /{endpoint}/:id - Update tileset metadata
|
|
48
|
-
* - DELETE /{endpoint}/:id - Delete tileset and all
|
|
48
|
+
* - DELETE /{endpoint}/:id - Delete tileset and all files from storage
|
|
49
49
|
*
|
|
50
50
|
* @example
|
|
51
51
|
* ```typescript
|
|
52
52
|
* class MyTilesetManager extends TilesetManager {
|
|
53
53
|
* getConfiguration() {
|
|
54
54
|
* return {
|
|
55
|
-
* name: '
|
|
55
|
+
* name: 'tilesets',
|
|
56
56
|
* description: 'Manage 3D Tiles tilesets',
|
|
57
57
|
* contentType: 'application/json',
|
|
58
58
|
* endpoint: 'api/tilesets',
|
|
59
|
-
*
|
|
59
|
+
* extension: '.zip'
|
|
60
60
|
* }
|
|
61
61
|
* }
|
|
62
62
|
* }
|
|
63
63
|
*
|
|
64
|
-
* // After upload,
|
|
65
|
-
* //
|
|
64
|
+
* // After upload, response contains:
|
|
65
|
+
* // { tileset_url: 'https://bucket.s3.../tilesets/123/tileset.json' }
|
|
66
|
+
* //
|
|
67
|
+
* // Cesium loads directly:
|
|
68
|
+
* // Cesium.Cesium3DTileset.fromUrl(tileset_url)
|
|
66
69
|
* ```
|
|
67
70
|
*/
|
|
68
71
|
export declare abstract class TilesetManager extends AssetsManager implements AsyncUploadable {
|
|
@@ -74,61 +77,39 @@ export declare abstract class TilesetManager extends AssetsManager implements As
|
|
|
74
77
|
*/
|
|
75
78
|
setUploadQueue(queue: Queue): void;
|
|
76
79
|
/**
|
|
77
|
-
*
|
|
80
|
+
* Handle tileset upload.
|
|
78
81
|
*
|
|
79
|
-
*
|
|
80
|
-
*
|
|
81
|
-
* 2. Creates a database record with status 'pending'
|
|
82
|
-
* 3. Queues a job for background processing
|
|
83
|
-
* 4. Returns immediately with job ID
|
|
84
|
-
*
|
|
85
|
-
* When uploadQueue is not available (sync mode - fallback):
|
|
86
|
-
* 1. Validates request and authentication
|
|
87
|
-
* 2. Extracts ZIP and stores files synchronously
|
|
88
|
-
* 3. Returns with completed tileset info
|
|
89
|
-
*
|
|
90
|
-
* @param req - HTTP request with ZIP file upload
|
|
91
|
-
* @returns DataResponse with upload result (async: job info, sync: tileset info)
|
|
82
|
+
* - Files < 50MB: Synchronous extraction and upload
|
|
83
|
+
* - Files >= 50MB: Queued for async processing (returns 202)
|
|
92
84
|
*/
|
|
93
85
|
handleUpload(req: any): Promise<DataResponse>;
|
|
94
86
|
/**
|
|
95
|
-
*
|
|
96
|
-
*
|
|
87
|
+
* Authenticate user from request headers.
|
|
88
|
+
* Returns user ID on success, or error response on failure.
|
|
89
|
+
*/
|
|
90
|
+
private authenticateUser;
|
|
91
|
+
/**
|
|
92
|
+
* Queue upload for background processing. Returns HTTP 202 immediately.
|
|
97
93
|
*/
|
|
98
94
|
private handleAsyncUpload;
|
|
99
95
|
/**
|
|
100
|
-
*
|
|
101
|
-
* @private
|
|
96
|
+
* Process upload synchronously.
|
|
102
97
|
*/
|
|
103
98
|
private handleSyncUpload;
|
|
104
99
|
/**
|
|
105
|
-
* Get
|
|
100
|
+
* Get upload status for async uploads.
|
|
106
101
|
*/
|
|
107
102
|
handleGetStatus(req: any): Promise<DataResponse>;
|
|
108
103
|
/**
|
|
109
|
-
*
|
|
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
|
|
116
|
-
*/
|
|
117
|
-
handleGetFile(req: any): Promise<DataResponse>;
|
|
118
|
-
/**
|
|
119
|
-
* Determines the MIME content type based on file extension.
|
|
120
|
-
*/
|
|
121
|
-
private getContentTypeForFile;
|
|
122
|
-
/**
|
|
123
|
-
* Override retrieve to include tileset.json URL in the response.
|
|
104
|
+
* List all tilesets with their public URLs.
|
|
124
105
|
*/
|
|
125
106
|
retrieve(req?: any): Promise<DataResponse>;
|
|
126
107
|
/**
|
|
127
|
-
*
|
|
108
|
+
* Delete tileset and all files from storage.
|
|
128
109
|
*/
|
|
129
110
|
handleDelete(req: any): Promise<DataResponse>;
|
|
130
111
|
/**
|
|
131
|
-
*
|
|
112
|
+
* Get HTTP endpoints for this manager.
|
|
132
113
|
*/
|
|
133
114
|
getEndpoints(): Array<{
|
|
134
115
|
method: HttpMethod;
|
|
@@ -137,7 +118,7 @@ export declare abstract class TilesetManager extends AssetsManager implements As
|
|
|
137
118
|
responseType?: string;
|
|
138
119
|
}>;
|
|
139
120
|
/**
|
|
140
|
-
*
|
|
121
|
+
* Generate OpenAPI specification.
|
|
141
122
|
*/
|
|
142
123
|
getOpenAPISpec(): OpenAPIComponentSpec;
|
|
143
124
|
}
|
|
@@ -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;
|
|
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;AAcnC;;;GAGG;AACH,MAAM,WAAW,kBAAkB;IAC/B,EAAE,CAAC,EAAE,MAAM,CAAA;IACX,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,6DAA6D;IAC7D,GAAG,EAAE,MAAM,CAAA;IACX,iCAAiC;IACjC,WAAW,EAAE,MAAM,CAAA;IACnB,IAAI,EAAE,IAAI,CAAA;IACV,WAAW,EAAE,MAAM,CAAA;IACnB,QAAQ,EAAE,MAAM,CAAA;IAChB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAA;IACvB,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,aAAa,CAAC,EAAE,SAAS,GAAG,YAAY,GAAG,WAAW,GAAG,QAAQ,CAAA;IACjE,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,YAAY,CAAC,EAAE,MAAM,CAAA;CACxB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0CG;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;IAIlC;;;;;OAKG;IACG,YAAY,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,YAAY,CAAC;IAkDnD;;;OAGG;YACW,gBAAgB;IA0B9B;;OAEG;YACW,iBAAiB;IAgE/B;;OAEG;YACW,gBAAgB;IAqE9B;;OAEG;IACG,eAAe,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,YAAY,CAAC;IAwCtD;;OAEG;IACG,QAAQ,CAAC,GAAG,CAAC,EAAE,GAAG,GAAG,OAAO,CAAC,YAAY,CAAC;IAyChD;;OAEG;IACG,YAAY,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,YAAY,CAAC;IA8DnD;;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;IA0CF;;OAEG;IACH,cAAc,IAAI,oBAAoB;CA0LzC"}
|