digitaltwin-core 0.13.1 → 0.13.3
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 +45 -56
- package/dist/components/tileset_manager.d.ts.map +1 -1
- package/dist/components/tileset_manager.js +370 -497
- 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 +6 -0
- package/dist/engine/upload_processor.d.ts.map +1 -1
- package/dist/engine/upload_processor.js +35 -10
- 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 +59 -4
- 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 +6 -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 +3 -1
- 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 +25 -63
- 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
35
|
*
|
|
36
|
-
*
|
|
37
|
-
*
|
|
38
|
-
*
|
|
39
|
-
*
|
|
40
|
-
*
|
|
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)
|
|
41
41
|
*
|
|
42
|
-
* Endpoints
|
|
43
|
-
*
|
|
44
|
-
* -
|
|
45
|
-
* -
|
|
46
|
-
* - GET /{endpoint}/:id/
|
|
42
|
+
* ## Endpoints
|
|
43
|
+
*
|
|
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,53 +77,39 @@ export declare abstract class TilesetManager extends AssetsManager implements As
|
|
|
74
77
|
*/
|
|
75
78
|
setUploadQueue(queue: Queue): void;
|
|
76
79
|
/**
|
|
77
|
-
*
|
|
78
|
-
*
|
|
79
|
-
* When uploadQueue is available (async mode):
|
|
80
|
-
* 1. Validates request and authentication
|
|
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
|
|
80
|
+
* Handle tileset upload.
|
|
89
81
|
*
|
|
90
|
-
*
|
|
91
|
-
*
|
|
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>;
|
|
86
|
+
/**
|
|
87
|
+
* Authenticate user from request headers.
|
|
88
|
+
* Returns user ID on success, or error response on failure.
|
|
89
|
+
*/
|
|
90
|
+
private authenticateUser;
|
|
94
91
|
/**
|
|
95
92
|
* Queue upload for background processing. Returns HTTP 202 immediately.
|
|
96
93
|
*/
|
|
97
94
|
private handleAsyncUpload;
|
|
98
95
|
/**
|
|
99
|
-
* Process upload synchronously
|
|
96
|
+
* Process upload synchronously.
|
|
100
97
|
*/
|
|
101
98
|
private handleSyncUpload;
|
|
102
99
|
/**
|
|
103
|
-
* Get upload status for
|
|
100
|
+
* Get upload status for async uploads.
|
|
104
101
|
*/
|
|
105
102
|
handleGetStatus(req: any): Promise<DataResponse>;
|
|
106
103
|
/**
|
|
107
|
-
*
|
|
108
|
-
*/
|
|
109
|
-
handleGetFile(req: any): Promise<DataResponse>;
|
|
110
|
-
/**
|
|
111
|
-
* Determines the MIME content type based on file extension.
|
|
112
|
-
*/
|
|
113
|
-
private getContentTypeForFile;
|
|
114
|
-
/**
|
|
115
|
-
* Override retrieve to include tileset.json URL in the response.
|
|
104
|
+
* List all tilesets with their public URLs.
|
|
116
105
|
*/
|
|
117
106
|
retrieve(req?: any): Promise<DataResponse>;
|
|
118
107
|
/**
|
|
119
|
-
* Delete tileset and all
|
|
108
|
+
* Delete tileset and all files from storage.
|
|
120
109
|
*/
|
|
121
110
|
handleDelete(req: any): Promise<DataResponse>;
|
|
122
111
|
/**
|
|
123
|
-
*
|
|
112
|
+
* Get HTTP endpoints for this manager.
|
|
124
113
|
*/
|
|
125
114
|
getEndpoints(): Array<{
|
|
126
115
|
method: HttpMethod;
|
|
@@ -129,7 +118,7 @@ export declare abstract class TilesetManager extends AssetsManager implements As
|
|
|
129
118
|
responseType?: string;
|
|
130
119
|
}>;
|
|
131
120
|
/**
|
|
132
|
-
*
|
|
121
|
+
* Generate OpenAPI specification.
|
|
133
122
|
*/
|
|
134
123
|
getOpenAPISpec(): OpenAPIComponentSpec;
|
|
135
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"}
|