digitaltwin-core 0.6.1 → 0.7.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.
Files changed (75) hide show
  1. package/README.md +188 -0
  2. package/dist/auth/apisix_parser.d.ts +122 -0
  3. package/dist/auth/apisix_parser.d.ts.map +1 -0
  4. package/dist/auth/apisix_parser.js +157 -0
  5. package/dist/auth/apisix_parser.js.map +1 -0
  6. package/dist/auth/auth_config.d.ts +95 -0
  7. package/dist/auth/auth_config.d.ts.map +1 -0
  8. package/dist/auth/auth_config.js +125 -0
  9. package/dist/auth/auth_config.js.map +1 -0
  10. package/dist/auth/index.d.ts +5 -0
  11. package/dist/auth/index.d.ts.map +1 -0
  12. package/dist/auth/index.js +4 -0
  13. package/dist/auth/index.js.map +1 -0
  14. package/dist/auth/types.d.ts +100 -0
  15. package/dist/auth/types.d.ts.map +1 -0
  16. package/dist/auth/types.js +2 -0
  17. package/dist/auth/types.js.map +1 -0
  18. package/dist/auth/user_service.d.ts +86 -0
  19. package/dist/auth/user_service.d.ts.map +1 -0
  20. package/dist/auth/user_service.js +239 -0
  21. package/dist/auth/user_service.js.map +1 -0
  22. package/dist/components/assets_manager.d.ts +21 -5
  23. package/dist/components/assets_manager.d.ts.map +1 -1
  24. package/dist/components/assets_manager.js +132 -4
  25. package/dist/components/assets_manager.js.map +1 -1
  26. package/dist/components/custom_table_manager.d.ts +344 -0
  27. package/dist/components/custom_table_manager.d.ts.map +1 -0
  28. package/dist/components/custom_table_manager.js +525 -0
  29. package/dist/components/custom_table_manager.js.map +1 -0
  30. package/dist/components/index.d.ts +4 -1
  31. package/dist/components/index.d.ts.map +1 -1
  32. package/dist/components/index.js +3 -0
  33. package/dist/components/index.js.map +1 -1
  34. package/dist/components/map_manager.d.ts +61 -0
  35. package/dist/components/map_manager.d.ts.map +1 -0
  36. package/dist/components/map_manager.js +233 -0
  37. package/dist/components/map_manager.js.map +1 -0
  38. package/dist/components/tileset_manager.d.ts +55 -0
  39. package/dist/components/tileset_manager.d.ts.map +1 -0
  40. package/dist/components/tileset_manager.js +212 -0
  41. package/dist/components/tileset_manager.js.map +1 -0
  42. package/dist/components/types.d.ts +20 -0
  43. package/dist/components/types.d.ts.map +1 -1
  44. package/dist/database/adapters/knex_database_adapter.d.ts +7 -0
  45. package/dist/database/adapters/knex_database_adapter.d.ts.map +1 -1
  46. package/dist/database/adapters/knex_database_adapter.js +136 -2
  47. package/dist/database/adapters/knex_database_adapter.js.map +1 -1
  48. package/dist/database/database_adapter.d.ts +22 -1
  49. package/dist/database/database_adapter.d.ts.map +1 -1
  50. package/dist/database/database_adapter.js.map +1 -1
  51. package/dist/engine/digital_twin_engine.d.ts +4 -1
  52. package/dist/engine/digital_twin_engine.d.ts.map +1 -1
  53. package/dist/engine/digital_twin_engine.js +69 -3
  54. package/dist/engine/digital_twin_engine.js.map +1 -1
  55. package/dist/engine/endpoints.d.ts +2 -2
  56. package/dist/engine/endpoints.d.ts.map +1 -1
  57. package/dist/engine/endpoints.js.map +1 -1
  58. package/dist/env/env.d.ts +8 -0
  59. package/dist/env/env.d.ts.map +1 -1
  60. package/dist/env/env.js +22 -1
  61. package/dist/env/env.js.map +1 -1
  62. package/dist/index.d.ts +2 -0
  63. package/dist/index.d.ts.map +1 -1
  64. package/dist/index.js +3 -0
  65. package/dist/index.js.map +1 -1
  66. package/dist/types/data_record.d.ts +1 -1
  67. package/dist/utils/index.d.ts +5 -0
  68. package/dist/utils/index.d.ts.map +1 -0
  69. package/dist/utils/index.js +5 -0
  70. package/dist/utils/index.js.map +1 -0
  71. package/dist/utils/zip_utils.d.ts +24 -0
  72. package/dist/utils/zip_utils.d.ts.map +1 -0
  73. package/dist/utils/zip_utils.js +77 -0
  74. package/dist/utils/zip_utils.js.map +1 -0
  75. package/package.json +3 -1
@@ -0,0 +1,525 @@
1
+ export class CustomTableManager {
2
+ /**
3
+ * Injects required dependencies into the custom table manager instance.
4
+ *
5
+ * Called by the Digital Twin Engine during component initialization.
6
+ *
7
+ * @param {DatabaseAdapter} db - Database adapter for data operations
8
+ *
9
+ * @example
10
+ * ```typescript
11
+ * const customTableManager = new MyCustomTableManager()
12
+ * customTableManager.setDependencies(databaseAdapter)
13
+ * ```
14
+ */
15
+ setDependencies(db) {
16
+ this.db = db;
17
+ this.tableName = this.getConfiguration().name;
18
+ }
19
+ /**
20
+ * Initialize the database table with custom columns.
21
+ *
22
+ * Creates the table if it doesn't exist, with standard columns (id, created_at, updated_at)
23
+ * plus the custom columns defined in the configuration.
24
+ *
25
+ * @returns {Promise<void>}
26
+ *
27
+ * @example
28
+ * ```typescript
29
+ * // Called automatically by the framework
30
+ * await customTableManager.initializeTable()
31
+ * ```
32
+ */
33
+ async initializeTable() {
34
+ const config = this.getConfiguration();
35
+ // Use the new createTableWithColumns method from DatabaseAdapter
36
+ await this.db.createTableWithColumns(config.name, config.columns);
37
+ }
38
+ /**
39
+ * Validate query conditions against requirements.
40
+ *
41
+ * @private
42
+ * @param {Record<string, any>} conditions - Conditions to validate
43
+ * @param {QueryValidationOptions} options - Validation options
44
+ * @throws {Error} If validation fails
45
+ */
46
+ validateQuery(conditions, options) {
47
+ if (!options)
48
+ return;
49
+ // Check required fields
50
+ if (options.required) {
51
+ for (const field of options.required) {
52
+ if (!(field in conditions)) {
53
+ throw new Error(`Field '${field}' is required`);
54
+ }
55
+ const value = conditions[field];
56
+ if (value == null || value === '') {
57
+ throw new Error(`Field '${field}' must have a non-empty value`);
58
+ }
59
+ }
60
+ }
61
+ // Custom validation
62
+ if (options.validate) {
63
+ try {
64
+ options.validate(conditions);
65
+ }
66
+ catch (error) {
67
+ throw new Error(`Validation failed: ${error instanceof Error ? error.message : 'Unknown validation error'}`);
68
+ }
69
+ }
70
+ }
71
+ /**
72
+ * Create a new record in the custom table.
73
+ *
74
+ * @param {Record<string, any>} data - Data to insert (excluding id, created_at, updated_at)
75
+ * @returns {Promise<number>} The ID of the created record
76
+ *
77
+ * @example
78
+ * ```typescript
79
+ * const id = await customTableManager.create({
80
+ * sensor_id: 'TEMP001',
81
+ * type: 'temperature',
82
+ * location: 'Building A - Floor 1',
83
+ * active: true
84
+ * })
85
+ * console.log(`Created sensor with ID: ${id}`)
86
+ * ```
87
+ */
88
+ async create(data) {
89
+ const now = new Date();
90
+ const record = {
91
+ name: this.tableName,
92
+ type: 'custom_table_record',
93
+ url: '',
94
+ date: now,
95
+ ...data
96
+ };
97
+ // Use the existing save method from DatabaseAdapter
98
+ const savedRecord = await this.db.save(record);
99
+ return savedRecord.id;
100
+ }
101
+ /**
102
+ * Find all records in the custom table.
103
+ *
104
+ * @returns {Promise<CustomTableRecord[]>} Array of all records
105
+ *
106
+ * @example
107
+ * ```typescript
108
+ * const allSensors = await customTableManager.findAll()
109
+ * console.log(`Found ${allSensors.length} sensors`)
110
+ * ```
111
+ */
112
+ async findAll() {
113
+ const veryOldDate = new Date('1970-01-01');
114
+ const farFutureDate = new Date('2099-12-31');
115
+ const records = await this.db.getByDateRange(this.tableName, veryOldDate, farFutureDate, 1000);
116
+ return records.map(record => ({
117
+ id: record.id,
118
+ created_at: record.date,
119
+ updated_at: record.date,
120
+ ...this.extractCustomFields(record)
121
+ }));
122
+ }
123
+ /**
124
+ * Find a record by its ID.
125
+ *
126
+ * @param {number} id - The record ID to find
127
+ * @returns {Promise<CustomTableRecord | null>} The record or null if not found
128
+ *
129
+ * @example
130
+ * ```typescript
131
+ * const sensor = await customTableManager.findById(123)
132
+ * if (sensor) {
133
+ * console.log(`Sensor: ${sensor.sensor_id}`)
134
+ * }
135
+ * ```
136
+ */
137
+ async findById(id) {
138
+ const record = await this.db.getById(id.toString(), this.tableName);
139
+ if (!record) {
140
+ return null;
141
+ }
142
+ return {
143
+ id: record.id,
144
+ created_at: record.date,
145
+ updated_at: record.date,
146
+ ...this.extractCustomFields(record)
147
+ };
148
+ }
149
+ /**
150
+ * Find records by a single column value with optional validation.
151
+ *
152
+ * @param {string} columnName - Name of the column to search by
153
+ * @param {any} value - Value to search for
154
+ * @param {boolean} required - Whether the value is required (default: true)
155
+ * @returns {Promise<CustomTableRecord[]>} Array of matching records
156
+ *
157
+ * @example
158
+ * ```typescript
159
+ * const wmsLayers = await wmsManager.findByColumn('wms_url', 'https://example.com/wms')
160
+ * const activeLayers = await wmsManager.findByColumn('active', true)
161
+ *
162
+ * // Optional value (won't throw if empty)
163
+ * const layers = await wmsManager.findByColumn('description', '', false)
164
+ * ```
165
+ */
166
+ async findByColumn(columnName, value, required = true) {
167
+ if (required && (value == null || value === '')) {
168
+ throw new Error(`Value for column '${columnName}' is required and cannot be empty`);
169
+ }
170
+ return this.findByCondition({ [columnName]: value });
171
+ }
172
+ /**
173
+ * Find records by multiple column values with validation support.
174
+ *
175
+ * @param {Record<string, any>} conditions - Key-value pairs to match
176
+ * @param {QueryValidationOptions} options - Validation options
177
+ * @returns {Promise<CustomTableRecord[]>} Array of matching records
178
+ *
179
+ * @example
180
+ * ```typescript
181
+ * // Simple query
182
+ * const layers = await wmsManager.findByColumns({
183
+ * wms_url: 'https://example.com/wms',
184
+ * active: true
185
+ * })
186
+ *
187
+ * // With validation
188
+ * const layers = await wmsManager.findByColumns(
189
+ * { wms_url: wmsUrl, projection: projection },
190
+ * {
191
+ * required: ['wms_url', 'projection'],
192
+ * validate: (conditions) => {
193
+ * if (!conditions.wms_url.startsWith('http')) {
194
+ * throw new Error('WMS URL must start with http or https')
195
+ * }
196
+ * }
197
+ * }
198
+ * )
199
+ * ```
200
+ */
201
+ async findByColumns(conditions, options) {
202
+ this.validateQuery(conditions, options);
203
+ return this.findByCondition(conditions);
204
+ }
205
+ /**
206
+ * Find records matching specific conditions (base method).
207
+ *
208
+ * @param {Record<string, any>} conditions - Key-value pairs to match
209
+ * @returns {Promise<CustomTableRecord[]>} Array of matching records
210
+ *
211
+ * @example
212
+ * ```typescript
213
+ * const activeSensors = await customTableManager.findByCondition({ active: true })
214
+ * const tempSensors = await customTableManager.findByCondition({ type: 'temperature' })
215
+ * ```
216
+ */
217
+ async findByCondition(conditions) {
218
+ const records = await this.db.findByConditions(this.tableName, conditions);
219
+ return records.map(record => ({
220
+ id: record.id,
221
+ created_at: record.date,
222
+ updated_at: record.date,
223
+ ...this.extractCustomFields(record)
224
+ }));
225
+ }
226
+ /**
227
+ * Update a record by its ID.
228
+ *
229
+ * @param {number} id - The record ID to update
230
+ * @param {Record<string, any>} data - Data to update (excluding id, created_at)
231
+ * @returns {Promise<void>}
232
+ *
233
+ * @example
234
+ * ```typescript
235
+ * await customTableManager.update(123, {
236
+ * active: false,
237
+ * last_ping: new Date()
238
+ * })
239
+ * ```
240
+ */
241
+ async update(id, data) {
242
+ // Use the new efficient SQL UPDATE method
243
+ await this.db.updateById(this.tableName, id, data);
244
+ }
245
+ /**
246
+ * Delete a record by its ID.
247
+ *
248
+ * @param {number} id - The record ID to delete
249
+ * @returns {Promise<void>}
250
+ *
251
+ * @example
252
+ * ```typescript
253
+ * await customTableManager.delete(123)
254
+ * console.log('Sensor deleted successfully')
255
+ * ```
256
+ */
257
+ async delete(id) {
258
+ await this.db.delete(id.toString(), this.tableName);
259
+ }
260
+ /**
261
+ * Delete records by a single column value.
262
+ *
263
+ * @param {string} columnName - Name of the column to match for deletion
264
+ * @param {any} value - Value to match for deletion
265
+ * @returns {Promise<number>} Number of records deleted
266
+ *
267
+ * @example
268
+ * ```typescript
269
+ * const deleted = await wmsManager.deleteByColumn('active', false)
270
+ * console.log(`Deleted ${deleted} inactive layers`)
271
+ * ```
272
+ */
273
+ async deleteByColumn(columnName, value) {
274
+ return this.deleteByCondition({ [columnName]: value });
275
+ }
276
+ /**
277
+ * Delete records matching specific conditions.
278
+ *
279
+ * @param {Record<string, any>} conditions - Key-value pairs to match for deletion
280
+ * @returns {Promise<number>} Number of records deleted
281
+ *
282
+ * @example
283
+ * ```typescript
284
+ * const deleted = await customTableManager.deleteByCondition({ active: false })
285
+ * console.log(`Deleted ${deleted} inactive sensors`)
286
+ * ```
287
+ */
288
+ async deleteByCondition(conditions) {
289
+ const recordsToDelete = await this.findByCondition(conditions);
290
+ for (const record of recordsToDelete) {
291
+ await this.delete(record.id);
292
+ }
293
+ return recordsToDelete.length;
294
+ }
295
+ /**
296
+ * Extract custom fields from a database record, excluding framework fields.
297
+ *
298
+ * @private
299
+ * @param {any} record - Database record
300
+ * @returns {Record<string, any>} Custom fields only
301
+ */
302
+ extractCustomFields(record) {
303
+ const config = this.getConfiguration();
304
+ const customFields = {};
305
+ for (const columnName of Object.keys(config.columns)) {
306
+ if (columnName in record) {
307
+ customFields[columnName] = record[columnName];
308
+ }
309
+ }
310
+ return customFields;
311
+ }
312
+ /**
313
+ * Get HTTP endpoints exposed by this custom table manager.
314
+ *
315
+ * Returns both standard CRUD endpoints and custom endpoints defined in configuration.
316
+ *
317
+ * @returns {Array} Array of endpoint descriptors with methods, paths, and handlers
318
+ *
319
+ * @example
320
+ * ```typescript
321
+ * // Standard endpoints for a table named 'sensors':
322
+ * GET /sensors - Get all records
323
+ * POST /sensors - Create new record
324
+ * GET /sensors/:id - Get specific record
325
+ * PUT /sensors/:id - Update specific record
326
+ * DELETE /sensors/:id - Delete specific record
327
+ *
328
+ * // Plus any custom endpoints defined in configuration
329
+ * ```
330
+ */
331
+ getEndpoints() {
332
+ const config = this.getConfiguration();
333
+ const endpoints = [];
334
+ // Standard CRUD endpoints
335
+ endpoints.push({
336
+ method: 'get',
337
+ path: `/${config.name}`,
338
+ handler: this.handleGetAll.bind(this),
339
+ responseType: 'application/json'
340
+ });
341
+ endpoints.push({
342
+ method: 'post',
343
+ path: `/${config.name}`,
344
+ handler: this.handleCreate.bind(this),
345
+ responseType: 'application/json'
346
+ });
347
+ endpoints.push({
348
+ method: 'get',
349
+ path: `/${config.name}/:id`,
350
+ handler: this.handleGetById.bind(this),
351
+ responseType: 'application/json'
352
+ });
353
+ endpoints.push({
354
+ method: 'put',
355
+ path: `/${config.name}/:id`,
356
+ handler: this.handleUpdate.bind(this),
357
+ responseType: 'application/json'
358
+ });
359
+ endpoints.push({
360
+ method: 'delete',
361
+ path: `/${config.name}/:id`,
362
+ handler: this.handleDelete.bind(this),
363
+ responseType: 'application/json'
364
+ });
365
+ // Custom endpoints from configuration
366
+ if (config.endpoints) {
367
+ for (const endpoint of config.endpoints) {
368
+ const handlerMethod = this[endpoint.handler];
369
+ if (typeof handlerMethod === 'function') {
370
+ endpoints.push({
371
+ method: endpoint.method,
372
+ path: `/${config.name}${endpoint.path}`,
373
+ handler: handlerMethod.bind(this),
374
+ responseType: 'application/json'
375
+ });
376
+ }
377
+ }
378
+ }
379
+ return endpoints;
380
+ }
381
+ /**
382
+ * Standard endpoint handlers for CRUD operations
383
+ */
384
+ async handleGetAll(req) {
385
+ try {
386
+ const records = await this.findAll();
387
+ return {
388
+ status: 200,
389
+ content: JSON.stringify(records),
390
+ headers: { 'Content-Type': 'application/json' }
391
+ };
392
+ }
393
+ catch (error) {
394
+ return {
395
+ status: 500,
396
+ content: JSON.stringify({
397
+ error: error instanceof Error ? error.message : 'Unknown error'
398
+ }),
399
+ headers: { 'Content-Type': 'application/json' }
400
+ };
401
+ }
402
+ }
403
+ async handleCreate(req) {
404
+ try {
405
+ if (!req?.body) {
406
+ return {
407
+ status: 400,
408
+ content: JSON.stringify({ error: 'Request body is required' }),
409
+ headers: { 'Content-Type': 'application/json' }
410
+ };
411
+ }
412
+ const id = await this.create(req.body);
413
+ return {
414
+ status: 201,
415
+ content: JSON.stringify({ id, message: 'Record created successfully' }),
416
+ headers: { 'Content-Type': 'application/json' }
417
+ };
418
+ }
419
+ catch (error) {
420
+ return {
421
+ status: 500,
422
+ content: JSON.stringify({
423
+ error: error instanceof Error ? error.message : 'Unknown error'
424
+ }),
425
+ headers: { 'Content-Type': 'application/json' }
426
+ };
427
+ }
428
+ }
429
+ async handleGetById(req) {
430
+ try {
431
+ const { id } = req.params || {};
432
+ if (!id) {
433
+ return {
434
+ status: 400,
435
+ content: JSON.stringify({ error: 'ID parameter is required' }),
436
+ headers: { 'Content-Type': 'application/json' }
437
+ };
438
+ }
439
+ const record = await this.findById(parseInt(id));
440
+ if (!record) {
441
+ return {
442
+ status: 404,
443
+ content: JSON.stringify({ error: 'Record not found' }),
444
+ headers: { 'Content-Type': 'application/json' }
445
+ };
446
+ }
447
+ return {
448
+ status: 200,
449
+ content: JSON.stringify(record),
450
+ headers: { 'Content-Type': 'application/json' }
451
+ };
452
+ }
453
+ catch (error) {
454
+ return {
455
+ status: 500,
456
+ content: JSON.stringify({
457
+ error: error instanceof Error ? error.message : 'Unknown error'
458
+ }),
459
+ headers: { 'Content-Type': 'application/json' }
460
+ };
461
+ }
462
+ }
463
+ async handleUpdate(req) {
464
+ try {
465
+ const { id } = req.params || {};
466
+ if (!id) {
467
+ return {
468
+ status: 400,
469
+ content: JSON.stringify({ error: 'ID parameter is required' }),
470
+ headers: { 'Content-Type': 'application/json' }
471
+ };
472
+ }
473
+ if (!req?.body) {
474
+ return {
475
+ status: 400,
476
+ content: JSON.stringify({ error: 'Request body is required' }),
477
+ headers: { 'Content-Type': 'application/json' }
478
+ };
479
+ }
480
+ await this.update(parseInt(id), req.body);
481
+ return {
482
+ status: 200,
483
+ content: JSON.stringify({ message: 'Record updated successfully' }),
484
+ headers: { 'Content-Type': 'application/json' }
485
+ };
486
+ }
487
+ catch (error) {
488
+ return {
489
+ status: 500,
490
+ content: JSON.stringify({
491
+ error: error instanceof Error ? error.message : 'Unknown error'
492
+ }),
493
+ headers: { 'Content-Type': 'application/json' }
494
+ };
495
+ }
496
+ }
497
+ async handleDelete(req) {
498
+ try {
499
+ const { id } = req.params || {};
500
+ if (!id) {
501
+ return {
502
+ status: 400,
503
+ content: JSON.stringify({ error: 'ID parameter is required' }),
504
+ headers: { 'Content-Type': 'application/json' }
505
+ };
506
+ }
507
+ await this.delete(parseInt(id));
508
+ return {
509
+ status: 200,
510
+ content: JSON.stringify({ message: 'Record deleted successfully' }),
511
+ headers: { 'Content-Type': 'application/json' }
512
+ };
513
+ }
514
+ catch (error) {
515
+ return {
516
+ status: 500,
517
+ content: JSON.stringify({
518
+ error: error instanceof Error ? error.message : 'Unknown error'
519
+ }),
520
+ headers: { 'Content-Type': 'application/json' }
521
+ };
522
+ }
523
+ }
524
+ }
525
+ //# sourceMappingURL=custom_table_manager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"custom_table_manager.js","sourceRoot":"","sources":["../../src/components/custom_table_manager.ts"],"names":[],"mappings":"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"}
@@ -2,7 +2,10 @@ export { Collector } from './collector.js';
2
2
  export { Harvester } from './harvester.js';
3
3
  export { Handler } from './handler.js';
4
4
  export { AssetsManager, type AssetMetadataRow, type CreateAssetRequest, type UpdateAssetRequest } from './assets_manager.js';
5
+ export { TilesetManager, type TilesetMetadataRow } from './tileset_manager.js';
6
+ export { MapManager, type MapLayerMetadataRow } from './map_manager.js';
5
7
  export { GlobalAssetsHandler } from './global_assets_handler.js';
8
+ export { CustomTableManager, type CustomTableRecord, type QueryValidationOptions, type CustomTableComponent } from './custom_table_manager.js';
6
9
  export { Component, Servable } from './interfaces.js';
7
- export { ComponentConfiguration, AssetsConfiguration, DataResponse } from './types.js';
10
+ export { ComponentConfiguration, AssetsConfiguration, DataResponse, StoreConfiguration, type EndpointDefinition } from './types.js';
8
11
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/components/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAC1C,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAC1C,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AACtC,OAAO,EACH,aAAa,EACb,KAAK,gBAAgB,EACrB,KAAK,kBAAkB,EACvB,KAAK,kBAAkB,EAC1B,MAAM,qBAAqB,CAAA;AAC5B,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAA;AAChE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAA;AACrD,OAAO,EAAE,sBAAsB,EAAE,mBAAmB,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/components/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAC1C,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAC1C,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AACtC,OAAO,EACH,aAAa,EACb,KAAK,gBAAgB,EACrB,KAAK,kBAAkB,EACvB,KAAK,kBAAkB,EAC1B,MAAM,qBAAqB,CAAA;AAC5B,OAAO,EAAE,cAAc,EAAE,KAAK,kBAAkB,EAAE,MAAM,sBAAsB,CAAA;AAC9E,OAAO,EAAE,UAAU,EAAE,KAAK,mBAAmB,EAAE,MAAM,kBAAkB,CAAA;AACvE,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAA;AAChE,OAAO,EACH,kBAAkB,EAClB,KAAK,iBAAiB,EACtB,KAAK,sBAAsB,EAC3B,KAAK,oBAAoB,EAC5B,MAAM,2BAA2B,CAAA;AAClC,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAA;AACrD,OAAO,EACH,sBAAsB,EACtB,mBAAmB,EACnB,YAAY,EACZ,kBAAkB,EAClB,KAAK,kBAAkB,EAC1B,MAAM,YAAY,CAAA"}
@@ -2,5 +2,8 @@ export { Collector } from './collector.js';
2
2
  export { Harvester } from './harvester.js';
3
3
  export { Handler } from './handler.js';
4
4
  export { AssetsManager } from './assets_manager.js';
5
+ export { TilesetManager } from './tileset_manager.js';
6
+ export { MapManager } from './map_manager.js';
5
7
  export { GlobalAssetsHandler } from './global_assets_handler.js';
8
+ export { CustomTableManager } from './custom_table_manager.js';
6
9
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/components/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAC1C,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAC1C,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AACtC,OAAO,EACH,aAAa,EAIhB,MAAM,qBAAqB,CAAA;AAC5B,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/components/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAC1C,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAC1C,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AACtC,OAAO,EACH,aAAa,EAIhB,MAAM,qBAAqB,CAAA;AAC5B,OAAO,EAAE,cAAc,EAA2B,MAAM,sBAAsB,CAAA;AAC9E,OAAO,EAAE,UAAU,EAA4B,MAAM,kBAAkB,CAAA;AACvE,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAA;AAChE,OAAO,EACH,kBAAkB,EAIrB,MAAM,2BAA2B,CAAA"}
@@ -0,0 +1,61 @@
1
+ import { AssetsManager } from './assets_manager.js';
2
+ import type { DataResponse } from './types.js';
3
+ /**
4
+ * Extended metadata for map layer assets
5
+ */
6
+ export interface MapLayerMetadataRow {
7
+ id?: number;
8
+ name: string;
9
+ type: string;
10
+ url: string;
11
+ date: Date;
12
+ description: string;
13
+ source: string;
14
+ owner_id: number | null;
15
+ filename: string;
16
+ layer_type?: string;
17
+ layer_name?: string;
18
+ geometry_type?: string;
19
+ properties_count?: number;
20
+ }
21
+ /**
22
+ * Specialized Assets Manager for handling map layer data.
23
+ *
24
+ * Extends the base AssetsManager with specialized logic for:
25
+ * - Processing JSON layer objects containing map data
26
+ * - Extracting and analyzing layer metadata
27
+ * - Storing layer-specific information
28
+ *
29
+ * Inherits all CRUD endpoints from AssetsManager:
30
+ * - GET /{name} - List all layers
31
+ * - POST /{name}/upload - Upload layer data (overridden)
32
+ * - GET /{name}/:id - Get layer data
33
+ * - PUT /{name}/:id - Update layer metadata
34
+ * - DELETE /{name}/:id - Delete layer
35
+ * - GET /{name}/:id/download - Download layer data
36
+ */
37
+ export declare abstract class MapManager extends AssetsManager {
38
+ /**
39
+ * Override the upload handler to process JSON layer objects instead of files.
40
+ *
41
+ * Processes the layer data:
42
+ * 1. Validates the layer object structure
43
+ * 2. Extracts layer-specific metadata
44
+ * 3. Stores the layer data as JSON
45
+ *
46
+ * @param req - HTTP request with layer JSON data
47
+ * @returns DataResponse with upload result
48
+ */
49
+ handleUpload(req: any): Promise<DataResponse>;
50
+ /**
51
+ * Analyze layer content to extract metadata
52
+ * @param layer - The layer object to analyze
53
+ * @returns Layer metadata information
54
+ */
55
+ private analyzeLayerContent;
56
+ /**
57
+ * Override retrieve to include layer-specific metadata in the response
58
+ */
59
+ retrieve(): Promise<DataResponse>;
60
+ }
61
+ //# sourceMappingURL=map_manager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"map_manager.d.ts","sourceRoot":"","sources":["../../src/components/map_manager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA;AACnD,OAAO,KAAK,EAA0B,YAAY,EAAE,MAAM,YAAY,CAAA;AAGtE;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAChC,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;IAEhB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,gBAAgB,CAAC,EAAE,MAAM,CAAA;CAC5B;AAED;;;;;;;;;;;;;;;GAeG;AACH,8BAAsB,UAAW,SAAQ,aAAa;IAClD;;;;;;;;;;OAUG;IACG,YAAY,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,YAAY,CAAC;IAqHnD;;;;OAIG;IACH,OAAO,CAAC,mBAAmB;IA+D3B;;OAEG;IACG,QAAQ,IAAI,OAAO,CAAC,YAAY,CAAC;CAwC1C"}