digitaltwin-core 0.8.2 → 0.9.0

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 (73) hide show
  1. package/dist/auth/auth_config.d.ts +5 -0
  2. package/dist/auth/auth_config.d.ts.map +1 -1
  3. package/dist/auth/auth_config.js +13 -4
  4. package/dist/auth/auth_config.js.map +1 -1
  5. package/dist/auth/user_service.d.ts.map +1 -1
  6. package/dist/auth/user_service.js +4 -1
  7. package/dist/auth/user_service.js.map +1 -1
  8. package/dist/components/assets_manager.d.ts.map +1 -1
  9. package/dist/components/assets_manager.js +27 -1
  10. package/dist/components/assets_manager.js.map +1 -1
  11. package/dist/components/custom_table_manager.d.ts +143 -2
  12. package/dist/components/custom_table_manager.d.ts.map +1 -1
  13. package/dist/components/custom_table_manager.js +326 -26
  14. package/dist/components/custom_table_manager.js.map +1 -1
  15. package/dist/components/handler.d.ts +70 -9
  16. package/dist/components/handler.d.ts.map +1 -1
  17. package/dist/components/handler.js +45 -6
  18. package/dist/components/handler.js.map +1 -1
  19. package/dist/components/harvester.d.ts +129 -20
  20. package/dist/components/harvester.d.ts.map +1 -1
  21. package/dist/components/harvester.js +134 -41
  22. package/dist/components/harvester.js.map +1 -1
  23. package/dist/components/interfaces.d.ts +108 -0
  24. package/dist/components/interfaces.d.ts.map +1 -1
  25. package/dist/components/interfaces.js +6 -0
  26. package/dist/components/interfaces.js.map +1 -1
  27. package/dist/components/map_manager.d.ts.map +1 -1
  28. package/dist/components/map_manager.js +9 -0
  29. package/dist/components/map_manager.js.map +1 -1
  30. package/dist/components/tileset_manager.d.ts.map +1 -1
  31. package/dist/components/tileset_manager.js +9 -0
  32. package/dist/components/tileset_manager.js.map +1 -1
  33. package/dist/database/adapters/knex_database_adapter.d.ts +15 -2
  34. package/dist/database/adapters/knex_database_adapter.d.ts.map +1 -1
  35. package/dist/database/adapters/knex_database_adapter.js +68 -12
  36. package/dist/database/adapters/knex_database_adapter.js.map +1 -1
  37. package/dist/database/database_adapter.d.ts +22 -0
  38. package/dist/database/database_adapter.d.ts.map +1 -1
  39. package/dist/database/database_adapter.js.map +1 -1
  40. package/dist/engine/digital_twin_engine.d.ts.map +1 -1
  41. package/dist/engine/digital_twin_engine.js +11 -7
  42. package/dist/engine/digital_twin_engine.js.map +1 -1
  43. package/dist/engine/endpoints.d.ts +39 -0
  44. package/dist/engine/endpoints.d.ts.map +1 -1
  45. package/dist/engine/endpoints.js +31 -0
  46. package/dist/engine/endpoints.js.map +1 -1
  47. package/dist/engine/events.d.ts +80 -0
  48. package/dist/engine/events.d.ts.map +1 -1
  49. package/dist/engine/events.js +60 -0
  50. package/dist/engine/events.js.map +1 -1
  51. package/dist/engine/initializer.d.ts +51 -0
  52. package/dist/engine/initializer.d.ts.map +1 -1
  53. package/dist/engine/initializer.js +72 -0
  54. package/dist/engine/initializer.js.map +1 -1
  55. package/dist/env/env.d.ts +101 -0
  56. package/dist/env/env.d.ts.map +1 -1
  57. package/dist/env/env.js +101 -0
  58. package/dist/env/env.js.map +1 -1
  59. package/dist/index.d.ts +19 -1
  60. package/dist/index.d.ts.map +1 -1
  61. package/dist/index.js +18 -1
  62. package/dist/index.js.map +1 -1
  63. package/dist/types/data_record.d.ts +65 -4
  64. package/dist/types/data_record.d.ts.map +1 -1
  65. package/dist/types/data_record.js +6 -0
  66. package/dist/types/data_record.js.map +1 -1
  67. package/dist/utils/servable_endpoint.d.ts +59 -2
  68. package/dist/utils/servable_endpoint.d.ts.map +1 -1
  69. package/dist/utils/servable_endpoint.js +51 -0
  70. package/dist/utils/servable_endpoint.js.map +1 -1
  71. package/dist/utils/zip_utils.js +1 -1
  72. package/dist/utils/zip_utils.js.map +1 -1
  73. package/package.json +1 -1
@@ -1,3 +1,5 @@
1
+ import { UserService } from '../auth/user_service.js';
2
+ import { ApisixAuthParser } from '../auth/apisix_parser.js';
1
3
  export class CustomTableManager {
2
4
  /**
3
5
  * Injects required dependencies into the custom table manager instance.
@@ -14,6 +16,7 @@ export class CustomTableManager {
14
16
  */
15
17
  setDependencies(db) {
16
18
  this.db = db;
19
+ this.userService = new UserService(db);
17
20
  this.tableName = this.getConfiguration().name;
18
21
  }
19
22
  /**
@@ -21,6 +24,7 @@ export class CustomTableManager {
21
24
  *
22
25
  * Creates the table if it doesn't exist, with standard columns (id, created_at, updated_at)
23
26
  * plus the custom columns defined in the configuration.
27
+ * Automatically adds an 'owner_id' column for user ownership tracking.
24
28
  *
25
29
  * @returns {Promise<void>}
26
30
  *
@@ -32,8 +36,13 @@ export class CustomTableManager {
32
36
  */
33
37
  async initializeTable() {
34
38
  const config = this.getConfiguration();
39
+ // Add owner_id column automatically for user ownership
40
+ const columnsWithOwnership = {
41
+ owner_id: 'integer',
42
+ ...config.columns
43
+ };
35
44
  // Use the new createTableWithColumns method from DatabaseAdapter
36
- await this.db.createTableWithColumns(config.name, config.columns);
45
+ await this.db.createTableWithColumns(config.name, columnsWithOwnership);
37
46
  }
38
47
  /**
39
48
  * Validate query conditions against requirements.
@@ -86,17 +95,8 @@ export class CustomTableManager {
86
95
  * ```
87
96
  */
88
97
  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;
98
+ // Use the specialized method for custom tables
99
+ return await this.db.insertCustomTableRecord(this.tableName, data);
100
100
  }
101
101
  /**
102
102
  * Find all records in the custom table.
@@ -110,13 +110,12 @@ export class CustomTableManager {
110
110
  * ```
111
111
  */
112
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);
113
+ // Use specialized method for custom tables that returns raw rows
114
+ const records = await this.db.findCustomTableRecords(this.tableName, {});
116
115
  return records.map(record => ({
117
116
  id: record.id,
118
- created_at: record.date,
119
- updated_at: record.date,
117
+ created_at: new Date(record.created_at),
118
+ updated_at: new Date(record.updated_at),
120
119
  ...this.extractCustomFields(record)
121
120
  }));
122
121
  }
@@ -135,14 +134,14 @@ export class CustomTableManager {
135
134
  * ```
136
135
  */
137
136
  async findById(id) {
138
- const record = await this.db.getById(id.toString(), this.tableName);
137
+ const record = await this.db.getCustomTableRecordById(this.tableName, id);
139
138
  if (!record) {
140
139
  return null;
141
140
  }
142
141
  return {
143
142
  id: record.id,
144
- created_at: record.date,
145
- updated_at: record.date,
143
+ created_at: new Date(record.created_at),
144
+ updated_at: new Date(record.updated_at),
146
145
  ...this.extractCustomFields(record)
147
146
  };
148
147
  }
@@ -215,11 +214,11 @@ export class CustomTableManager {
215
214
  * ```
216
215
  */
217
216
  async findByCondition(conditions) {
218
- const records = await this.db.findByConditions(this.tableName, conditions);
217
+ const records = await this.db.findCustomTableRecords(this.tableName, conditions);
219
218
  return records.map(record => ({
220
219
  id: record.id,
221
- created_at: record.date,
222
- updated_at: record.date,
220
+ created_at: new Date(record.created_at),
221
+ updated_at: new Date(record.updated_at),
223
222
  ...this.extractCustomFields(record)
224
223
  }));
225
224
  }
@@ -297,11 +296,16 @@ export class CustomTableManager {
297
296
  *
298
297
  * @private
299
298
  * @param {any} record - Database record
300
- * @returns {Record<string, any>} Custom fields only
299
+ * @returns {Record<string, any>} Custom fields only (including owner_id)
301
300
  */
302
301
  extractCustomFields(record) {
303
302
  const config = this.getConfiguration();
304
303
  const customFields = {};
304
+ // Add owner_id if present
305
+ if ('owner_id' in record) {
306
+ customFields.owner_id = record.owner_id;
307
+ }
308
+ // Add all configured custom columns
305
309
  for (const columnName of Object.keys(config.columns)) {
306
310
  if (columnName in record) {
307
311
  customFields[columnName] = record[columnName];
@@ -309,6 +313,185 @@ export class CustomTableManager {
309
313
  }
310
314
  return customFields;
311
315
  }
316
+ /**
317
+ * AUTHENTICATION HELPERS
318
+ * These methods help custom endpoints implement authentication and authorization.
319
+ */
320
+ /**
321
+ * Authenticate a request and return the user record.
322
+ *
323
+ * Use this for endpoints that require authentication but don't need ownership checks.
324
+ *
325
+ * @protected
326
+ * @param {any} req - HTTP request object
327
+ * @returns {Promise<UserRecord | null>} User record if authenticated, null otherwise
328
+ *
329
+ * @example
330
+ * ```typescript
331
+ * async myCustomEndpoint(req: any): Promise<DataResponse> {
332
+ * const userRecord = await this.authenticateRequest(req)
333
+ * if (!userRecord) {
334
+ * return this.authErrorResponse()
335
+ * }
336
+ *
337
+ * // Use userRecord.id for your logic
338
+ * console.log(`User ${userRecord.id} is authenticated`)
339
+ * }
340
+ * ```
341
+ */
342
+ async authenticateRequest(req) {
343
+ if (!ApisixAuthParser.hasValidAuth(req.headers || {})) {
344
+ return null;
345
+ }
346
+ const authUser = ApisixAuthParser.parseAuthHeaders(req.headers || {});
347
+ if (!authUser) {
348
+ return null;
349
+ }
350
+ const userRecord = await this.userService.findOrCreateUser(authUser);
351
+ if (!userRecord.id) {
352
+ return null;
353
+ }
354
+ return userRecord;
355
+ }
356
+ /**
357
+ * Authenticate a request and verify the user owns the specified record.
358
+ *
359
+ * Use this for endpoints that modify or delete specific records.
360
+ *
361
+ * @protected
362
+ * @param {any} req - HTTP request object
363
+ * @param {number} recordId - ID of the record to check ownership for
364
+ * @returns {Promise<{ userRecord: UserRecord; record: CustomTableRecord } | null>}
365
+ * Both user and record if authenticated and owns the record, null otherwise
366
+ *
367
+ * @example
368
+ * ```typescript
369
+ * async deleteMyRecord(req: any): Promise<DataResponse> {
370
+ * const recordId = parseInt(req.params.id)
371
+ * const auth = await this.authenticateAndCheckOwnership(req, recordId)
372
+ *
373
+ * if (!auth) {
374
+ * return this.authErrorResponse()
375
+ * }
376
+ *
377
+ * if (auth.record.owner_id !== auth.userRecord.id) {
378
+ * return this.forbiddenErrorResponse()
379
+ * }
380
+ *
381
+ * await this.delete(recordId)
382
+ * return { status: 200, content: JSON.stringify({ message: 'Deleted' }) }
383
+ * }
384
+ * ```
385
+ */
386
+ async authenticateAndCheckOwnership(req, recordId) {
387
+ const userRecord = await this.authenticateRequest(req);
388
+ if (!userRecord) {
389
+ return null;
390
+ }
391
+ const record = await this.findById(recordId);
392
+ if (!record) {
393
+ return null;
394
+ }
395
+ return { userRecord, record };
396
+ }
397
+ /**
398
+ * Get authenticated user from request, throwing an error response if not authenticated.
399
+ *
400
+ * Use this when authentication is required and you want to fail fast.
401
+ *
402
+ * @protected
403
+ * @param {any} req - HTTP request object
404
+ * @returns {Promise<UserRecord | DataResponse>} User record if authenticated, error response otherwise
405
+ *
406
+ * @example
407
+ * ```typescript
408
+ * async myProtectedEndpoint(req: any): Promise<DataResponse> {
409
+ * const userOrError = await this.requireAuthentication(req)
410
+ * if ('status' in userOrError) {
411
+ * return userOrError // Return error response
412
+ * }
413
+ *
414
+ * const userRecord = userOrError
415
+ * // Continue with authenticated user
416
+ * }
417
+ * ```
418
+ */
419
+ async requireAuthentication(req) {
420
+ const userRecord = await this.authenticateRequest(req);
421
+ if (!userRecord) {
422
+ return this.authErrorResponse();
423
+ }
424
+ return userRecord;
425
+ }
426
+ /**
427
+ * Helper to return a 401 Unauthorized error response.
428
+ *
429
+ * @protected
430
+ * @param {string} message - Custom error message (default: "Authentication required")
431
+ * @returns {DataResponse} 401 error response
432
+ *
433
+ * @example
434
+ * ```typescript
435
+ * if (!userRecord) {
436
+ * return this.authErrorResponse()
437
+ * }
438
+ * ```
439
+ */
440
+ authErrorResponse(message = 'Authentication required') {
441
+ return {
442
+ status: 401,
443
+ content: JSON.stringify({ error: message }),
444
+ headers: { 'Content-Type': 'application/json' }
445
+ };
446
+ }
447
+ /**
448
+ * Helper to return a 403 Forbidden error response.
449
+ *
450
+ * @protected
451
+ * @param {string} message - Custom error message (default: "You don't have permission to access this resource")
452
+ * @returns {DataResponse} 403 error response
453
+ *
454
+ * @example
455
+ * ```typescript
456
+ * if (record.owner_id !== userRecord.id) {
457
+ * return this.forbiddenErrorResponse('You can only modify your own records')
458
+ * }
459
+ * ```
460
+ */
461
+ forbiddenErrorResponse(message = "You don't have permission to access this resource") {
462
+ return {
463
+ status: 403,
464
+ content: JSON.stringify({ error: message }),
465
+ headers: { 'Content-Type': 'application/json' }
466
+ };
467
+ }
468
+ /**
469
+ * Helper to check if a user owns a specific record.
470
+ *
471
+ * Returns false if the record doesn't have an owner_id (legacy records without ownership).
472
+ *
473
+ * @protected
474
+ * @param {CustomTableRecord} record - The record to check
475
+ * @param {UserRecord} userRecord - The user to check against
476
+ * @returns {boolean} True if user owns the record, false otherwise
477
+ *
478
+ * @example
479
+ * ```typescript
480
+ * const record = await this.findById(recordId)
481
+ * const userRecord = await this.authenticateRequest(req)
482
+ *
483
+ * if (!this.userOwnsRecord(record, userRecord)) {
484
+ * return this.forbiddenErrorResponse()
485
+ * }
486
+ * ```
487
+ */
488
+ userOwnsRecord(record, userRecord) {
489
+ // If record doesn't have an owner_id, deny access for security
490
+ if (!record.owner_id) {
491
+ return false;
492
+ }
493
+ return record.owner_id === userRecord.id;
494
+ }
312
495
  /**
313
496
  * Get HTTP endpoints exposed by this custom table manager.
314
497
  *
@@ -381,7 +564,7 @@ export class CustomTableManager {
381
564
  /**
382
565
  * Standard endpoint handlers for CRUD operations
383
566
  */
384
- async handleGetAll(req) {
567
+ async handleGetAll(_req) {
385
568
  try {
386
569
  const records = await this.findAll();
387
570
  return {
@@ -402,6 +585,23 @@ export class CustomTableManager {
402
585
  }
403
586
  async handleCreate(req) {
404
587
  try {
588
+ // Check authentication
589
+ if (!ApisixAuthParser.hasValidAuth(req.headers || {})) {
590
+ return {
591
+ status: 401,
592
+ content: JSON.stringify({ error: 'Authentication required' }),
593
+ headers: { 'Content-Type': 'application/json' }
594
+ };
595
+ }
596
+ // Parse authenticated user
597
+ const authUser = ApisixAuthParser.parseAuthHeaders(req.headers || {});
598
+ if (!authUser) {
599
+ return {
600
+ status: 401,
601
+ content: JSON.stringify({ error: 'Invalid authentication headers' }),
602
+ headers: { 'Content-Type': 'application/json' }
603
+ };
604
+ }
405
605
  if (!req?.body) {
406
606
  return {
407
607
  status: 400,
@@ -409,7 +609,21 @@ export class CustomTableManager {
409
609
  headers: { 'Content-Type': 'application/json' }
410
610
  };
411
611
  }
412
- const id = await this.create(req.body);
612
+ // Find or create user in database
613
+ const userRecord = await this.userService.findOrCreateUser(authUser);
614
+ if (!userRecord.id) {
615
+ return {
616
+ status: 500,
617
+ content: JSON.stringify({ error: 'Failed to retrieve user information' }),
618
+ headers: { 'Content-Type': 'application/json' }
619
+ };
620
+ }
621
+ // Add owner_id to the data
622
+ const dataWithOwner = {
623
+ ...req.body,
624
+ owner_id: userRecord.id
625
+ };
626
+ const id = await this.create(dataWithOwner);
413
627
  return {
414
628
  status: 201,
415
629
  content: JSON.stringify({ id, message: 'Record created successfully' }),
@@ -462,6 +676,23 @@ export class CustomTableManager {
462
676
  }
463
677
  async handleUpdate(req) {
464
678
  try {
679
+ // Check authentication
680
+ if (!ApisixAuthParser.hasValidAuth(req.headers || {})) {
681
+ return {
682
+ status: 401,
683
+ content: JSON.stringify({ error: 'Authentication required' }),
684
+ headers: { 'Content-Type': 'application/json' }
685
+ };
686
+ }
687
+ // Parse authenticated user
688
+ const authUser = ApisixAuthParser.parseAuthHeaders(req.headers || {});
689
+ if (!authUser) {
690
+ return {
691
+ status: 401,
692
+ content: JSON.stringify({ error: 'Invalid authentication headers' }),
693
+ headers: { 'Content-Type': 'application/json' }
694
+ };
695
+ }
465
696
  const { id } = req.params || {};
466
697
  if (!id) {
467
698
  return {
@@ -477,6 +708,32 @@ export class CustomTableManager {
477
708
  headers: { 'Content-Type': 'application/json' }
478
709
  };
479
710
  }
711
+ // Find or create user in database
712
+ const userRecord = await this.userService.findOrCreateUser(authUser);
713
+ if (!userRecord.id) {
714
+ return {
715
+ status: 500,
716
+ content: JSON.stringify({ error: 'Failed to retrieve user information' }),
717
+ headers: { 'Content-Type': 'application/json' }
718
+ };
719
+ }
720
+ // Check if record exists and belongs to this user
721
+ const existingRecord = await this.findById(parseInt(id));
722
+ if (!existingRecord) {
723
+ return {
724
+ status: 404,
725
+ content: JSON.stringify({ error: 'Record not found' }),
726
+ headers: { 'Content-Type': 'application/json' }
727
+ };
728
+ }
729
+ // Check ownership (only owner can modify their records)
730
+ if (!existingRecord.owner_id || existingRecord.owner_id !== userRecord.id) {
731
+ return {
732
+ status: 403,
733
+ content: JSON.stringify({ error: 'You can only modify your own records' }),
734
+ headers: { 'Content-Type': 'application/json' }
735
+ };
736
+ }
480
737
  await this.update(parseInt(id), req.body);
481
738
  return {
482
739
  status: 200,
@@ -496,6 +753,23 @@ export class CustomTableManager {
496
753
  }
497
754
  async handleDelete(req) {
498
755
  try {
756
+ // Check authentication
757
+ if (!ApisixAuthParser.hasValidAuth(req.headers || {})) {
758
+ return {
759
+ status: 401,
760
+ content: JSON.stringify({ error: 'Authentication required' }),
761
+ headers: { 'Content-Type': 'application/json' }
762
+ };
763
+ }
764
+ // Parse authenticated user
765
+ const authUser = ApisixAuthParser.parseAuthHeaders(req.headers || {});
766
+ if (!authUser) {
767
+ return {
768
+ status: 401,
769
+ content: JSON.stringify({ error: 'Invalid authentication headers' }),
770
+ headers: { 'Content-Type': 'application/json' }
771
+ };
772
+ }
499
773
  const { id } = req.params || {};
500
774
  if (!id) {
501
775
  return {
@@ -504,6 +778,32 @@ export class CustomTableManager {
504
778
  headers: { 'Content-Type': 'application/json' }
505
779
  };
506
780
  }
781
+ // Find or create user in database
782
+ const userRecord = await this.userService.findOrCreateUser(authUser);
783
+ if (!userRecord.id) {
784
+ return {
785
+ status: 500,
786
+ content: JSON.stringify({ error: 'Failed to retrieve user information' }),
787
+ headers: { 'Content-Type': 'application/json' }
788
+ };
789
+ }
790
+ // Check if record exists and belongs to this user
791
+ const existingRecord = await this.findById(parseInt(id));
792
+ if (!existingRecord) {
793
+ return {
794
+ status: 404,
795
+ content: JSON.stringify({ error: 'Record not found' }),
796
+ headers: { 'Content-Type': 'application/json' }
797
+ };
798
+ }
799
+ // Check ownership (only owner can delete their records)
800
+ if (!existingRecord.owner_id || existingRecord.owner_id !== userRecord.id) {
801
+ return {
802
+ status: 403,
803
+ content: JSON.stringify({ error: 'You can only delete your own records' }),
804
+ headers: { 'Content-Type': 'application/json' }
805
+ };
806
+ }
507
807
  await this.delete(parseInt(id));
508
808
  return {
509
809
  status: 200,
@@ -1 +1 @@
1
- {"version":3,"file":"custom_table_manager.js","sourceRoot":"","sources":["../../src/components/custom_table_manager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"custom_table_manager.js","sourceRoot":"","sources":["../../src/components/custom_table_manager.ts"],"names":[],"mappings":"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"}
@@ -1,31 +1,92 @@
1
+ /**
2
+ * @fileoverview Handler component base class for HTTP endpoint providers
3
+ *
4
+ * Handlers are lightweight, stateless components that expose HTTP endpoints
5
+ * for on-demand data access, computation, or utility services within the digital twin.
6
+ */
1
7
  import type { Component, Servable } from './interfaces.js';
2
8
  import type { ComponentConfiguration } from './types.js';
3
9
  import type { DataResponse } from './types.js';
4
10
  import type { HttpMethod } from '../engine/endpoints.js';
5
11
  /**
6
- * Description of a runtime HTTP endpoint handler.
12
+ * Runtime descriptor for an HTTP endpoint handler.
13
+ *
14
+ * Represents a fully resolved endpoint with its bound handler function,
15
+ * ready for registration with the Express router.
7
16
  */
8
17
  type EndpointDescriptor = {
18
+ /** HTTP method for the endpoint */
9
19
  method: HttpMethod;
20
+ /** URL path pattern */
10
21
  path: string;
22
+ /** Response content type */
11
23
  responseType?: string;
24
+ /** Bound handler function */
12
25
  handler: (...args: any[]) => Promise<DataResponse>;
13
26
  };
14
27
  /**
15
- * Base abstract class for defining a Handler component.
16
- * A Handler is a stateless, servable component that exposes HTTP endpoints,
17
- * useful for on-demand computation or utility services.
28
+ * Abstract base class for Handler components.
29
+ *
30
+ * Handlers are lightweight, stateless components that expose HTTP endpoints
31
+ * for on-demand data access, computation, or utility services. Unlike Collectors
32
+ * and Harvesters, they don't run on schedules but respond to HTTP requests.
33
+ *
34
+ * Key features:
35
+ * - Expose HTTP endpoints using the @servableEndpoint decorator
36
+ * - Stateless operation (no database or storage dependencies by default)
37
+ * - Suitable for real-time computations, data queries, or API proxies
38
+ *
39
+ * @example
40
+ * ```typescript
41
+ * class CalculatorHandler extends Handler {
42
+ * getConfiguration() {
43
+ * return {
44
+ * name: 'calculator-handler',
45
+ * type: 'handler',
46
+ * contentType: 'application/json'
47
+ * };
48
+ * }
49
+ *
50
+ * @servableEndpoint({ path: '/api/calculate/sum', method: 'post' })
51
+ * async calculateSum(req: Request) {
52
+ * const { a, b } = req.body;
53
+ * return {
54
+ * status: 200,
55
+ * content: { result: a + b }
56
+ * };
57
+ * }
58
+ * }
59
+ * ```
18
60
  */
19
61
  export declare abstract class Handler implements Component, Servable {
20
62
  /**
21
- * Returns the static configuration of the handler.
22
- * Must be implemented by subclasses.
63
+ * Returns the handler's configuration.
64
+ *
65
+ * Implementations must provide basic component information including
66
+ * name, type, and default content type for responses.
67
+ *
68
+ * @returns Component configuration object
69
+ *
70
+ * @example
71
+ * ```typescript
72
+ * getConfiguration() {
73
+ * return {
74
+ * name: 'my-handler',
75
+ * type: 'handler',
76
+ * contentType: 'application/json'
77
+ * };
78
+ * }
79
+ * ```
23
80
  */
24
81
  abstract getConfiguration(): ComponentConfiguration;
25
82
  /**
26
- * Resolves and returns the list of servable endpoints defined on the class.
27
- * Uses static metadata declared on the constructor (__endpoints).
28
- * @returns A list of endpoint descriptors mapping method/path to handlers.
83
+ * Resolves and returns HTTP endpoints defined on this handler.
84
+ *
85
+ * Automatically discovers endpoints declared with the @servableEndpoint
86
+ * decorator and creates bound handler functions for registration with
87
+ * the Express router.
88
+ *
89
+ * @returns Array of endpoint descriptors with bound handler functions
29
90
  */
30
91
  getEndpoints(): EndpointDescriptor[];
31
92
  }
@@ -1 +1 @@
1
- {"version":3,"file":"handler.d.ts","sourceRoot":"","sources":["../../src/components/handler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAA;AAC1D,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAA;AACxD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAC9C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAA;AAYxD;;GAEG;AACH,KAAK,kBAAkB,GAAG;IACtB,MAAM,EAAE,UAAU,CAAA;IAClB,IAAI,EAAE,MAAM,CAAA;IACZ,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,OAAO,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,OAAO,CAAC,YAAY,CAAC,CAAA;CACrD,CAAA;AAED;;;;GAIG;AACH,8BAAsB,OAAQ,YAAW,SAAS,EAAE,QAAQ;IACxD;;;OAGG;IACH,QAAQ,CAAC,gBAAgB,IAAI,sBAAsB;IAEnD;;;;OAIG;IACH,YAAY,IAAI,kBAAkB,EAAE;CAevC"}
1
+ {"version":3,"file":"handler.d.ts","sourceRoot":"","sources":["../../src/components/handler.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAA;AAC1D,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAA;AACxD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAC9C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAA;AAsBxD;;;;;GAKG;AACH,KAAK,kBAAkB,GAAG;IACtB,mCAAmC;IACnC,MAAM,EAAE,UAAU,CAAA;IAElB,uBAAuB;IACvB,IAAI,EAAE,MAAM,CAAA;IAEZ,4BAA4B;IAC5B,YAAY,CAAC,EAAE,MAAM,CAAA;IAErB,6BAA6B;IAC7B,OAAO,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,OAAO,CAAC,YAAY,CAAC,CAAA;CACrD,CAAA;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AACH,8BAAsB,OAAQ,YAAW,SAAS,EAAE,QAAQ;IACxD;;;;;;;;;;;;;;;;;;OAkBG;IACH,QAAQ,CAAC,gBAAgB,IAAI,sBAAsB;IAEnD;;;;;;;;OAQG;IACH,YAAY,IAAI,kBAAkB,EAAE;CAevC"}