digitaltwin-core 0.6.1 → 0.7.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/README.md +188 -0
- package/dist/auth/apisix_parser.d.ts +122 -0
- package/dist/auth/apisix_parser.d.ts.map +1 -0
- package/dist/auth/apisix_parser.js +157 -0
- package/dist/auth/apisix_parser.js.map +1 -0
- package/dist/auth/auth_config.d.ts +95 -0
- package/dist/auth/auth_config.d.ts.map +1 -0
- package/dist/auth/auth_config.js +125 -0
- package/dist/auth/auth_config.js.map +1 -0
- package/dist/auth/index.d.ts +5 -0
- package/dist/auth/index.d.ts.map +1 -0
- package/dist/auth/index.js +4 -0
- package/dist/auth/index.js.map +1 -0
- package/dist/auth/types.d.ts +100 -0
- package/dist/auth/types.d.ts.map +1 -0
- package/dist/auth/types.js +2 -0
- package/dist/auth/types.js.map +1 -0
- package/dist/auth/user_service.d.ts +86 -0
- package/dist/auth/user_service.d.ts.map +1 -0
- package/dist/auth/user_service.js +240 -0
- package/dist/auth/user_service.js.map +1 -0
- package/dist/components/assets_manager.d.ts +21 -5
- package/dist/components/assets_manager.d.ts.map +1 -1
- package/dist/components/assets_manager.js +132 -4
- package/dist/components/assets_manager.js.map +1 -1
- package/dist/components/custom_table_manager.d.ts +344 -0
- package/dist/components/custom_table_manager.d.ts.map +1 -0
- package/dist/components/custom_table_manager.js +525 -0
- package/dist/components/custom_table_manager.js.map +1 -0
- package/dist/components/index.d.ts +4 -1
- package/dist/components/index.d.ts.map +1 -1
- package/dist/components/index.js +3 -0
- package/dist/components/index.js.map +1 -1
- package/dist/components/map_manager.d.ts +61 -0
- package/dist/components/map_manager.d.ts.map +1 -0
- package/dist/components/map_manager.js +233 -0
- package/dist/components/map_manager.js.map +1 -0
- package/dist/components/tileset_manager.d.ts +55 -0
- package/dist/components/tileset_manager.d.ts.map +1 -0
- package/dist/components/tileset_manager.js +212 -0
- package/dist/components/tileset_manager.js.map +1 -0
- package/dist/components/types.d.ts +20 -0
- package/dist/components/types.d.ts.map +1 -1
- package/dist/database/adapters/knex_database_adapter.d.ts +3 -0
- package/dist/database/adapters/knex_database_adapter.d.ts.map +1 -1
- package/dist/database/adapters/knex_database_adapter.js +130 -2
- package/dist/database/adapters/knex_database_adapter.js.map +1 -1
- package/dist/database/database_adapter.d.ts +22 -1
- package/dist/database/database_adapter.d.ts.map +1 -1
- package/dist/database/database_adapter.js.map +1 -1
- package/dist/engine/digital_twin_engine.d.ts +4 -1
- package/dist/engine/digital_twin_engine.d.ts.map +1 -1
- package/dist/engine/digital_twin_engine.js +69 -3
- package/dist/engine/digital_twin_engine.js.map +1 -1
- package/dist/engine/endpoints.d.ts +2 -2
- package/dist/engine/endpoints.d.ts.map +1 -1
- package/dist/engine/endpoints.js.map +1 -1
- package/dist/env/env.d.ts +8 -0
- package/dist/env/env.d.ts.map +1 -1
- package/dist/env/env.js +22 -1
- package/dist/env/env.js.map +1 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -0
- package/dist/index.js.map +1 -1
- package/dist/types/data_record.d.ts +1 -1
- package/dist/utils/index.d.ts +5 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +5 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/zip_utils.d.ts +24 -0
- package/dist/utils/zip_utils.d.ts.map +1 -0
- package/dist/utils/zip_utils.js +77 -0
- package/dist/utils/zip_utils.js.map +1 -0
- package/package.json +3 -1
package/dist/env/env.js
CHANGED
|
@@ -8,6 +8,10 @@ export class Env {
|
|
|
8
8
|
type: 'number',
|
|
9
9
|
...opts
|
|
10
10
|
}),
|
|
11
|
+
boolean: (opts) => ({
|
|
12
|
+
type: 'boolean',
|
|
13
|
+
...opts
|
|
14
|
+
}),
|
|
11
15
|
enum: (values) => ({
|
|
12
16
|
type: 'enum',
|
|
13
17
|
values
|
|
@@ -19,8 +23,13 @@ export class Env {
|
|
|
19
23
|
for (const [key, rules] of Object.entries(schema)) {
|
|
20
24
|
const value = rawEnv[key];
|
|
21
25
|
if (value === undefined || value === '') {
|
|
22
|
-
if (rules.optional)
|
|
26
|
+
if (rules.optional) {
|
|
27
|
+
// Use default value if provided
|
|
28
|
+
if (rules.default !== undefined) {
|
|
29
|
+
config[key] = rules.default;
|
|
30
|
+
}
|
|
23
31
|
continue;
|
|
32
|
+
}
|
|
24
33
|
throw new Error(`Missing environment variable: ${key}`);
|
|
25
34
|
}
|
|
26
35
|
switch (rules.type) {
|
|
@@ -40,6 +49,18 @@ export class Env {
|
|
|
40
49
|
}
|
|
41
50
|
config[key] = parsed;
|
|
42
51
|
break;
|
|
52
|
+
case 'boolean':
|
|
53
|
+
const lowerValue = value.toLowerCase();
|
|
54
|
+
if (lowerValue === 'true' || lowerValue === '1') {
|
|
55
|
+
config[key] = true;
|
|
56
|
+
}
|
|
57
|
+
else if (lowerValue === 'false' || lowerValue === '0') {
|
|
58
|
+
config[key] = false;
|
|
59
|
+
}
|
|
60
|
+
else {
|
|
61
|
+
throw new Error(`Invalid boolean format for ${key}, expected true/false or 1/0`);
|
|
62
|
+
}
|
|
63
|
+
break;
|
|
43
64
|
case 'enum':
|
|
44
65
|
if (!rules.values.includes(value)) {
|
|
45
66
|
throw new Error(`Invalid value for ${key}, expected one of ${rules.values.join(', ')}`);
|
package/dist/env/env.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"env.js","sourceRoot":"","sources":["../../src/env/env.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,GAAG;aACL,WAAM,GAAG;QACZ,MAAM,EAAE,CAAC,IAAuD,EAAE,EAAE,CAAC,CAAC;YAClE,IAAI,EAAE,QAAiB;YACvB,GAAG,IAAI;SACV,CAAC;QAEF,MAAM,EAAE,CAAC,IAA6B,EAAE,EAAE,CAAC,CAAC;YACxC,IAAI,EAAE,QAAiB;YACvB,GAAG,IAAI;SACV,CAAC;QAEF,IAAI,EAAE,CAAqB,MAAS,EAAE,EAAE,CAAC,CAAC;YACtC,IAAI,EAAE,MAAe;YACrB,MAAM;SACT,CAAC;KACL,CAAA;aAEM,WAAM,GAAwB,EAAE,CAAA;IAEvC,MAAM,CAAC,QAAQ,CAAgC,MAA2B,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG;QAC5F,MAAM,MAAM,GAAQ,EAAE,CAAA;QAEtB,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;YAChD,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,CAAA;YAEzB,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,EAAE,EAAE,CAAC;gBACtC,IAAI,KAAK,CAAC,QAAQ;
|
|
1
|
+
{"version":3,"file":"env.js","sourceRoot":"","sources":["../../src/env/env.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -4,6 +4,7 @@ export { Harvester } from './components/harvester.js';
|
|
|
4
4
|
export { Handler } from './components/handler.js';
|
|
5
5
|
export { AssetsManager } from './components/assets_manager.js';
|
|
6
6
|
export { GlobalAssetsHandler } from './components/global_assets_handler.js';
|
|
7
|
+
export { CustomTableManager } from './components/custom_table_manager.js';
|
|
7
8
|
export { StorageService } from './storage/storage_service.js';
|
|
8
9
|
export { LocalStorageService } from './storage/adapters/local_storage_service.js';
|
|
9
10
|
export { OvhS3StorageService } from './storage/adapters/ovh_storage_service.js';
|
|
@@ -13,6 +14,7 @@ export { KnexDatabaseAdapter, PostgreSQLConfig, SQLiteConfig } from './database/
|
|
|
13
14
|
export * from './components/types.js';
|
|
14
15
|
export * from './components/interfaces.js';
|
|
15
16
|
export * from './types/data_record.js';
|
|
17
|
+
export * from './auth/index.js';
|
|
16
18
|
export { Logger, LogLevel } from './utils/logger.js';
|
|
17
19
|
export { mapToDataRecord } from './utils/map_to_data_record.js';
|
|
18
20
|
export { servableEndpoint } from './utils/servable_endpoint.js';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAA;AAGnE,OAAO,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAA;AACrD,OAAO,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAA;AACrD,OAAO,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAA;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAA;AAC9D,OAAO,EAAE,mBAAmB,EAAE,MAAM,uCAAuC,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAA;AAGnE,OAAO,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAA;AACrD,OAAO,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAA;AACrD,OAAO,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAA;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAA;AAC9D,OAAO,EAAE,mBAAmB,EAAE,MAAM,uCAAuC,CAAA;AAC3E,OAAO,EAAE,kBAAkB,EAAE,MAAM,sCAAsC,CAAA;AAGzE,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAA;AAC7D,OAAO,EAAE,mBAAmB,EAAE,MAAM,6CAA6C,CAAA;AACjF,OAAO,EAAE,mBAAmB,EAAE,MAAM,2CAA2C,CAAA;AAC/E,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAA;AAGpE,OAAO,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAA;AAChE,OAAO,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,8CAA8C,CAAA;AAGlH,cAAc,uBAAuB,CAAA;AACrC,cAAc,4BAA4B,CAAA;AAC1C,cAAc,wBAAwB,CAAA;AAGtC,cAAc,iBAAiB,CAAA;AAG/B,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AACpD,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAA;AAC/D,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAA;AAG/D,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;AACxD,OAAO,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAA;AAC9D,cAAc,oBAAoB,CAAA;AAClC,cAAc,uBAAuB,CAAA;AAErC,OAAO,EAAE,GAAG,EAAE,MAAM,cAAc,CAAA"}
|
package/dist/index.js
CHANGED
|
@@ -7,6 +7,7 @@ export { Harvester } from './components/harvester.js';
|
|
|
7
7
|
export { Handler } from './components/handler.js';
|
|
8
8
|
export { AssetsManager } from './components/assets_manager.js';
|
|
9
9
|
export { GlobalAssetsHandler } from './components/global_assets_handler.js';
|
|
10
|
+
export { CustomTableManager } from './components/custom_table_manager.js';
|
|
10
11
|
// Storage Services
|
|
11
12
|
export { StorageService } from './storage/storage_service.js';
|
|
12
13
|
export { LocalStorageService } from './storage/adapters/local_storage_service.js';
|
|
@@ -19,6 +20,8 @@ export { KnexDatabaseAdapter } from './database/adapters/knex_database_adapter.j
|
|
|
19
20
|
export * from './components/types.js';
|
|
20
21
|
export * from './components/interfaces.js';
|
|
21
22
|
export * from './types/data_record.js';
|
|
23
|
+
// Authentication
|
|
24
|
+
export * from './auth/index.js';
|
|
22
25
|
// Utilities
|
|
23
26
|
export { Logger, LogLevel } from './utils/logger.js';
|
|
24
27
|
export { mapToDataRecord } from './utils/map_to_data_record.js';
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,gDAAgD;AAEhD,cAAc;AACd,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAA;AAEnE,kBAAkB;AAClB,OAAO,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAA;AACrD,OAAO,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAA;AACrD,OAAO,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAA;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAA;AAC9D,OAAO,EAAE,mBAAmB,EAAE,MAAM,uCAAuC,CAAA;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,gDAAgD;AAEhD,cAAc;AACd,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAA;AAEnE,kBAAkB;AAClB,OAAO,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAA;AACrD,OAAO,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAA;AACrD,OAAO,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAA;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAA;AAC9D,OAAO,EAAE,mBAAmB,EAAE,MAAM,uCAAuC,CAAA;AAC3E,OAAO,EAAE,kBAAkB,EAAE,MAAM,sCAAsC,CAAA;AAEzE,mBAAmB;AACnB,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAA;AAC7D,OAAO,EAAE,mBAAmB,EAAE,MAAM,6CAA6C,CAAA;AACjF,OAAO,EAAE,mBAAmB,EAAE,MAAM,2CAA2C,CAAA;AAC/E,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAA;AAEpE,oBAAoB;AACpB,OAAO,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAA;AAChE,OAAO,EAAE,mBAAmB,EAAkC,MAAM,8CAA8C,CAAA;AAElH,uBAAuB;AACvB,cAAc,uBAAuB,CAAA;AACrC,cAAc,4BAA4B,CAAA;AAC1C,cAAc,wBAAwB,CAAA;AAEtC,iBAAiB;AACjB,cAAc,iBAAiB,CAAA;AAE/B,YAAY;AACZ,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AACpD,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAA;AAC/D,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAA;AAE/D,oBAAoB;AACpB,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;AACxD,OAAO,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAA;AAC9D,cAAc,oBAAoB,CAAA;AAClC,cAAc,uBAAuB,CAAA;AAErC,OAAO,EAAE,GAAG,EAAE,MAAM,cAAc,CAAA"}
|
|
@@ -10,7 +10,7 @@ export interface DataRecord {
|
|
|
10
10
|
/** Source URL for data provenance (AssetsManager only) */
|
|
11
11
|
source?: string;
|
|
12
12
|
/** ID of the user who owns this asset (AssetsManager only) */
|
|
13
|
-
owner_id?:
|
|
13
|
+
owner_id?: number | null;
|
|
14
14
|
/** Original filename provided by the user (AssetsManager only) */
|
|
15
15
|
filename?: string;
|
|
16
16
|
}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export { Logger, LogLevel } from './logger.js';
|
|
2
|
+
export { mapToDataRecord } from './map_to_data_record.js';
|
|
3
|
+
export { servableEndpoint } from './servable_endpoint.js';
|
|
4
|
+
export { extractZipContentStream, zipToDict, analyzeTilesetContent } from './zip_utils.js';
|
|
5
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AAC9C,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAA;AACzD,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAA;AACzD,OAAO,EAAE,uBAAuB,EAAE,SAAS,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAA"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export { Logger, LogLevel } from './logger.js';
|
|
2
|
+
export { mapToDataRecord } from './map_to_data_record.js';
|
|
3
|
+
export { servableEndpoint } from './servable_endpoint.js';
|
|
4
|
+
export { extractZipContentStream, zipToDict, analyzeTilesetContent } from './zip_utils.js';
|
|
5
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AAC9C,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAA;AACzD,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAA;AACzD,OAAO,EAAE,uBAAuB,EAAE,SAAS,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAA"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Extracts the content of a zip file as a stream (for large files)
|
|
3
|
+
* @param zipBuffer - The content of the zip file as Buffer
|
|
4
|
+
* @returns A generator yielding tuples containing the name and content of each file in the zip file
|
|
5
|
+
*/
|
|
6
|
+
export declare function extractZipContentStream(zipBuffer: Buffer): AsyncGenerator<[string, string | Buffer]>;
|
|
7
|
+
/**
|
|
8
|
+
* Converts a zip file to a dictionary containing all files and their contents
|
|
9
|
+
* @param zipBuffer - The content of the zip file as Buffer
|
|
10
|
+
* @returns A dictionary containing the content of the zip file
|
|
11
|
+
*/
|
|
12
|
+
export declare function zipToDict(zipBuffer: Buffer): Promise<Record<string, string | Buffer>>;
|
|
13
|
+
/**
|
|
14
|
+
* Analyzes a tileset ZIP content and extracts metadata
|
|
15
|
+
* @param zipDict - Dictionary of files from zipToDict()
|
|
16
|
+
* @returns Tileset metadata including name and file structure
|
|
17
|
+
*/
|
|
18
|
+
export declare function analyzeTilesetContent(zipDict: Record<string, string | Buffer>): {
|
|
19
|
+
name: string;
|
|
20
|
+
fileCount: number;
|
|
21
|
+
hasMetadata: boolean;
|
|
22
|
+
mainFiles: string[];
|
|
23
|
+
};
|
|
24
|
+
//# sourceMappingURL=zip_utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"zip_utils.d.ts","sourceRoot":"","sources":["../../src/utils/zip_utils.ts"],"names":[],"mappings":"AAEA;;;;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"}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
import JSZip from 'jszip';
|
|
2
|
+
/**
|
|
3
|
+
* Extracts the content of a zip file as a stream (for large files)
|
|
4
|
+
* @param zipBuffer - The content of the zip file as Buffer
|
|
5
|
+
* @returns A generator yielding tuples containing the name and content of each file in the zip file
|
|
6
|
+
*/
|
|
7
|
+
export async function* extractZipContentStream(zipBuffer) {
|
|
8
|
+
const zip = new JSZip();
|
|
9
|
+
const zipContent = await zip.loadAsync(zipBuffer);
|
|
10
|
+
for (const [name, zipObject] of Object.entries(zipContent.files)) {
|
|
11
|
+
if (!zipObject.dir) {
|
|
12
|
+
// Skip directories
|
|
13
|
+
const content = await zipObject.async('nodebuffer');
|
|
14
|
+
// Try to decode as UTF-8, fallback to Buffer for binary files
|
|
15
|
+
try {
|
|
16
|
+
const textContent = content.toString('utf-8');
|
|
17
|
+
// Check if it's valid UTF-8 by trying to encode it back
|
|
18
|
+
Buffer.from(textContent, 'utf-8');
|
|
19
|
+
yield [name, textContent];
|
|
20
|
+
}
|
|
21
|
+
catch (error) {
|
|
22
|
+
// If UTF-8 decoding fails, return as Buffer
|
|
23
|
+
yield [name, content];
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Converts a zip file to a dictionary containing all files and their contents
|
|
30
|
+
* @param zipBuffer - The content of the zip file as Buffer
|
|
31
|
+
* @returns A dictionary containing the content of the zip file
|
|
32
|
+
*/
|
|
33
|
+
export async function zipToDict(zipBuffer) {
|
|
34
|
+
const output = {};
|
|
35
|
+
for await (const [name, content] of extractZipContentStream(zipBuffer)) {
|
|
36
|
+
output[name] = content;
|
|
37
|
+
}
|
|
38
|
+
return output;
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Analyzes a tileset ZIP content and extracts metadata
|
|
42
|
+
* @param zipDict - Dictionary of files from zipToDict()
|
|
43
|
+
* @returns Tileset metadata including name and file structure
|
|
44
|
+
*/
|
|
45
|
+
export function analyzeTilesetContent(zipDict) {
|
|
46
|
+
const files = Object.keys(zipDict);
|
|
47
|
+
const mainFiles = files.filter(f => f.endsWith('.json') || f.endsWith('.xml') || f.endsWith('.txt') || f.includes('metadata'));
|
|
48
|
+
// Try to extract tileset name from common patterns
|
|
49
|
+
let name = 'tileset';
|
|
50
|
+
const metadataFile = files.find(f => f.toLowerCase().includes('metadata'));
|
|
51
|
+
if (metadataFile && typeof zipDict[metadataFile] === 'string') {
|
|
52
|
+
try {
|
|
53
|
+
const metadata = JSON.parse(zipDict[metadataFile]);
|
|
54
|
+
name = metadata.name || metadata.title || name;
|
|
55
|
+
}
|
|
56
|
+
catch {
|
|
57
|
+
// Ignore parsing errors
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
// Fallback: use first directory name or first file prefix
|
|
61
|
+
if (name === 'tileset') {
|
|
62
|
+
const firstFile = files[0];
|
|
63
|
+
if (firstFile && firstFile.includes('/')) {
|
|
64
|
+
name = firstFile.split('/')[0];
|
|
65
|
+
}
|
|
66
|
+
else if (firstFile && firstFile.includes('.')) {
|
|
67
|
+
name = firstFile.split('.')[0];
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
return {
|
|
71
|
+
name,
|
|
72
|
+
fileCount: files.length,
|
|
73
|
+
hasMetadata: mainFiles.length > 0,
|
|
74
|
+
mainFiles
|
|
75
|
+
};
|
|
76
|
+
}
|
|
77
|
+
//# sourceMappingURL=zip_utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"zip_utils.js","sourceRoot":"","sources":["../../src/utils/zip_utils.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "digitaltwin-core",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.7.1",
|
|
4
4
|
"description": "Minimalist framework to collect and handle data in a Digital Twin project",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"author": "Axel Hoffmann",
|
|
@@ -57,6 +57,7 @@
|
|
|
57
57
|
"@testcontainers/redis": "^11.3.1",
|
|
58
58
|
"@types/cors": "^2.8.19",
|
|
59
59
|
"@types/ioredis-mock": "^8.2.6",
|
|
60
|
+
"@types/jszip": "^3.4.0",
|
|
60
61
|
"@types/lodash": "^4.17.20",
|
|
61
62
|
"@types/node": "^24.0.15",
|
|
62
63
|
"eslint": "^9.0.0",
|
|
@@ -97,6 +98,7 @@
|
|
|
97
98
|
"cors": "^2.8.5",
|
|
98
99
|
"ioredis": "^5.6.1",
|
|
99
100
|
"japa": "^4.0.0",
|
|
101
|
+
"jszip": "^3.10.1",
|
|
100
102
|
"lodash": "^4.17.21",
|
|
101
103
|
"multer": "^2.0.2",
|
|
102
104
|
"ultimate-express": "^2.0.9",
|