digitaltwin-core 0.14.2 → 1.0.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 (227) hide show
  1. package/LICENSE +20 -20
  2. package/README.md +494 -359
  3. package/dist/auth/apisix_parser.d.ts +141 -0
  4. package/dist/auth/apisix_parser.d.ts.map +1 -0
  5. package/dist/auth/apisix_parser.js +161 -0
  6. package/dist/auth/apisix_parser.js.map +1 -0
  7. package/dist/auth/auth_config.d.ts +126 -0
  8. package/dist/auth/auth_config.d.ts.map +1 -0
  9. package/dist/auth/auth_config.js +169 -0
  10. package/dist/auth/auth_config.js.map +1 -0
  11. package/dist/auth/auth_provider.d.ts +118 -0
  12. package/dist/auth/auth_provider.d.ts.map +1 -0
  13. package/dist/auth/auth_provider.js +8 -0
  14. package/dist/auth/auth_provider.js.map +1 -0
  15. package/dist/auth/auth_provider_factory.d.ts +91 -0
  16. package/dist/auth/auth_provider_factory.d.ts.map +1 -0
  17. package/dist/auth/auth_provider_factory.js +146 -0
  18. package/dist/auth/auth_provider_factory.js.map +1 -0
  19. package/dist/auth/index.d.ts +8 -0
  20. package/dist/auth/index.d.ts.map +1 -0
  21. package/dist/auth/index.js +7 -0
  22. package/dist/auth/index.js.map +1 -0
  23. package/dist/auth/providers/gateway_auth_provider.d.ts +78 -0
  24. package/dist/auth/providers/gateway_auth_provider.d.ts.map +1 -0
  25. package/dist/auth/providers/gateway_auth_provider.js +109 -0
  26. package/dist/auth/providers/gateway_auth_provider.js.map +1 -0
  27. package/dist/auth/providers/index.d.ts +4 -0
  28. package/dist/auth/providers/index.d.ts.map +1 -0
  29. package/dist/auth/providers/index.js +4 -0
  30. package/dist/auth/providers/index.js.map +1 -0
  31. package/dist/auth/providers/jwt_auth_provider.d.ts +91 -0
  32. package/dist/auth/providers/jwt_auth_provider.d.ts.map +1 -0
  33. package/dist/auth/providers/jwt_auth_provider.js +204 -0
  34. package/dist/auth/providers/jwt_auth_provider.js.map +1 -0
  35. package/dist/auth/providers/no_auth_provider.d.ts +61 -0
  36. package/dist/auth/providers/no_auth_provider.d.ts.map +1 -0
  37. package/dist/auth/providers/no_auth_provider.js +76 -0
  38. package/dist/auth/providers/no_auth_provider.js.map +1 -0
  39. package/dist/auth/types.d.ts +100 -0
  40. package/dist/auth/types.d.ts.map +1 -0
  41. package/dist/auth/types.js +2 -0
  42. package/dist/auth/types.js.map +1 -0
  43. package/dist/auth/user_service.d.ts +86 -0
  44. package/dist/auth/user_service.d.ts.map +1 -0
  45. package/dist/auth/user_service.js +237 -0
  46. package/dist/auth/user_service.js.map +1 -0
  47. package/dist/components/assets_manager.d.ts +662 -0
  48. package/dist/components/assets_manager.d.ts.map +1 -0
  49. package/dist/components/assets_manager.js +1537 -0
  50. package/dist/components/assets_manager.js.map +1 -0
  51. package/dist/components/async_upload.d.ts +20 -0
  52. package/dist/components/async_upload.d.ts.map +1 -0
  53. package/dist/components/async_upload.js +10 -0
  54. package/dist/components/async_upload.js.map +1 -0
  55. package/dist/components/collector.d.ts +203 -0
  56. package/dist/components/collector.d.ts.map +1 -0
  57. package/dist/components/collector.js +214 -0
  58. package/dist/components/collector.js.map +1 -0
  59. package/dist/components/custom_table_manager.d.ts +503 -0
  60. package/dist/components/custom_table_manager.d.ts.map +1 -0
  61. package/dist/components/custom_table_manager.js +1023 -0
  62. package/dist/components/custom_table_manager.js.map +1 -0
  63. package/dist/components/global_assets_handler.d.ts +63 -0
  64. package/dist/components/global_assets_handler.d.ts.map +1 -0
  65. package/dist/components/global_assets_handler.js +127 -0
  66. package/dist/components/global_assets_handler.js.map +1 -0
  67. package/dist/components/handler.d.ts +104 -0
  68. package/dist/components/handler.d.ts.map +1 -0
  69. package/dist/components/handler.js +110 -0
  70. package/dist/components/handler.js.map +1 -0
  71. package/dist/components/harvester.d.ts +182 -0
  72. package/dist/components/harvester.d.ts.map +1 -0
  73. package/dist/components/harvester.js +406 -0
  74. package/dist/components/harvester.js.map +1 -0
  75. package/dist/components/index.d.ts +11 -0
  76. package/dist/components/index.d.ts.map +1 -0
  77. package/dist/components/index.js +9 -0
  78. package/dist/components/index.js.map +1 -0
  79. package/dist/components/interfaces.d.ts +126 -0
  80. package/dist/components/interfaces.d.ts.map +1 -0
  81. package/dist/components/interfaces.js +8 -0
  82. package/dist/components/interfaces.js.map +1 -0
  83. package/dist/components/map_manager.d.ts +61 -0
  84. package/dist/components/map_manager.d.ts.map +1 -0
  85. package/dist/components/map_manager.js +242 -0
  86. package/dist/components/map_manager.js.map +1 -0
  87. package/dist/components/tileset_manager.d.ts +125 -0
  88. package/dist/components/tileset_manager.d.ts.map +1 -0
  89. package/dist/components/tileset_manager.js +623 -0
  90. package/dist/components/tileset_manager.js.map +1 -0
  91. package/dist/components/types.d.ts +226 -0
  92. package/dist/components/types.d.ts.map +1 -0
  93. package/dist/components/types.js +8 -0
  94. package/dist/components/types.js.map +1 -0
  95. package/dist/database/adapters/knex_database_adapter.d.ts +97 -0
  96. package/dist/database/adapters/knex_database_adapter.d.ts.map +1 -0
  97. package/dist/database/adapters/knex_database_adapter.js +729 -0
  98. package/dist/database/adapters/knex_database_adapter.js.map +1 -0
  99. package/dist/database/database_adapter.d.ts +262 -0
  100. package/dist/database/database_adapter.d.ts.map +1 -0
  101. package/dist/database/database_adapter.js +46 -0
  102. package/dist/database/database_adapter.js.map +1 -0
  103. package/dist/engine/digital_twin_engine.d.ts +295 -0
  104. package/dist/engine/digital_twin_engine.d.ts.map +1 -0
  105. package/dist/engine/digital_twin_engine.js +907 -0
  106. package/dist/engine/digital_twin_engine.js.map +1 -0
  107. package/dist/engine/endpoints.d.ts +47 -0
  108. package/dist/engine/endpoints.d.ts.map +1 -0
  109. package/dist/engine/endpoints.js +88 -0
  110. package/dist/engine/endpoints.js.map +1 -0
  111. package/dist/engine/error_handler.d.ts +20 -0
  112. package/dist/engine/error_handler.d.ts.map +1 -0
  113. package/dist/engine/error_handler.js +69 -0
  114. package/dist/engine/error_handler.js.map +1 -0
  115. package/dist/engine/events.d.ts +93 -0
  116. package/dist/engine/events.d.ts.map +1 -0
  117. package/dist/engine/events.js +71 -0
  118. package/dist/engine/events.js.map +1 -0
  119. package/dist/engine/health.d.ts +112 -0
  120. package/dist/engine/health.d.ts.map +1 -0
  121. package/dist/engine/health.js +190 -0
  122. package/dist/engine/health.js.map +1 -0
  123. package/dist/engine/initializer.d.ts +62 -0
  124. package/dist/engine/initializer.d.ts.map +1 -0
  125. package/dist/engine/initializer.js +108 -0
  126. package/dist/engine/initializer.js.map +1 -0
  127. package/dist/engine/queue_manager.d.ts +87 -0
  128. package/dist/engine/queue_manager.d.ts.map +1 -0
  129. package/dist/engine/queue_manager.js +196 -0
  130. package/dist/engine/queue_manager.js.map +1 -0
  131. package/dist/engine/scheduler.d.ts +30 -0
  132. package/dist/engine/scheduler.d.ts.map +1 -0
  133. package/dist/engine/scheduler.js +378 -0
  134. package/dist/engine/scheduler.js.map +1 -0
  135. package/dist/engine/upload_processor.d.ts +36 -0
  136. package/dist/engine/upload_processor.d.ts.map +1 -0
  137. package/dist/engine/upload_processor.js +113 -0
  138. package/dist/engine/upload_processor.js.map +1 -0
  139. package/dist/env/env.d.ts +134 -0
  140. package/dist/env/env.d.ts.map +1 -0
  141. package/dist/env/env.js +177 -0
  142. package/dist/env/env.js.map +1 -0
  143. package/dist/errors/index.d.ts +94 -0
  144. package/dist/errors/index.d.ts.map +1 -0
  145. package/dist/errors/index.js +149 -0
  146. package/dist/errors/index.js.map +1 -0
  147. package/dist/index.d.ts +55 -0
  148. package/dist/index.d.ts.map +1 -0
  149. package/dist/index.js +65 -0
  150. package/dist/index.js.map +1 -0
  151. package/dist/openapi/generator.d.ts +93 -0
  152. package/dist/openapi/generator.d.ts.map +1 -0
  153. package/dist/openapi/generator.js +293 -0
  154. package/dist/openapi/generator.js.map +1 -0
  155. package/dist/openapi/index.d.ts +9 -0
  156. package/dist/openapi/index.d.ts.map +1 -0
  157. package/dist/openapi/index.js +9 -0
  158. package/dist/openapi/index.js.map +1 -0
  159. package/dist/openapi/types.d.ts +182 -0
  160. package/dist/openapi/types.d.ts.map +1 -0
  161. package/dist/openapi/types.js +16 -0
  162. package/dist/openapi/types.js.map +1 -0
  163. package/dist/storage/adapters/local_storage_service.d.ts +57 -0
  164. package/dist/storage/adapters/local_storage_service.d.ts.map +1 -0
  165. package/dist/storage/adapters/local_storage_service.js +132 -0
  166. package/dist/storage/adapters/local_storage_service.js.map +1 -0
  167. package/dist/storage/adapters/ovh_storage_service.d.ts +72 -0
  168. package/dist/storage/adapters/ovh_storage_service.d.ts.map +1 -0
  169. package/dist/storage/adapters/ovh_storage_service.js +205 -0
  170. package/dist/storage/adapters/ovh_storage_service.js.map +1 -0
  171. package/dist/storage/storage_factory.d.ts +14 -0
  172. package/dist/storage/storage_factory.d.ts.map +1 -0
  173. package/dist/storage/storage_factory.js +43 -0
  174. package/dist/storage/storage_factory.js.map +1 -0
  175. package/dist/storage/storage_service.d.ts +163 -0
  176. package/dist/storage/storage_service.d.ts.map +1 -0
  177. package/dist/storage/storage_service.js +58 -0
  178. package/dist/storage/storage_service.js.map +1 -0
  179. package/dist/types/data_record.d.ts +123 -0
  180. package/dist/types/data_record.d.ts.map +1 -0
  181. package/dist/types/data_record.js +8 -0
  182. package/dist/types/data_record.js.map +1 -0
  183. package/dist/utils/graceful_shutdown.d.ts +44 -0
  184. package/dist/utils/graceful_shutdown.d.ts.map +1 -0
  185. package/dist/utils/graceful_shutdown.js +79 -0
  186. package/dist/utils/graceful_shutdown.js.map +1 -0
  187. package/dist/utils/http_responses.d.ts +175 -0
  188. package/dist/utils/http_responses.d.ts.map +1 -0
  189. package/dist/utils/http_responses.js +216 -0
  190. package/dist/utils/http_responses.js.map +1 -0
  191. package/dist/utils/index.d.ts +8 -0
  192. package/dist/utils/index.d.ts.map +1 -0
  193. package/dist/utils/index.js +6 -0
  194. package/dist/utils/index.js.map +1 -0
  195. package/dist/utils/logger.d.ts +74 -0
  196. package/dist/utils/logger.d.ts.map +1 -0
  197. package/dist/utils/logger.js +92 -0
  198. package/dist/utils/logger.js.map +1 -0
  199. package/dist/utils/map_to_data_record.d.ts +10 -0
  200. package/dist/utils/map_to_data_record.d.ts.map +1 -0
  201. package/dist/utils/map_to_data_record.js +36 -0
  202. package/dist/utils/map_to_data_record.js.map +1 -0
  203. package/dist/utils/safe_async.d.ts +50 -0
  204. package/dist/utils/safe_async.d.ts.map +1 -0
  205. package/dist/utils/safe_async.js +90 -0
  206. package/dist/utils/safe_async.js.map +1 -0
  207. package/dist/utils/servable_endpoint.d.ts +63 -0
  208. package/dist/utils/servable_endpoint.d.ts.map +1 -0
  209. package/dist/utils/servable_endpoint.js +67 -0
  210. package/dist/utils/servable_endpoint.js.map +1 -0
  211. package/dist/utils/zip_utils.d.ts +66 -0
  212. package/dist/utils/zip_utils.d.ts.map +1 -0
  213. package/dist/utils/zip_utils.js +169 -0
  214. package/dist/utils/zip_utils.js.map +1 -0
  215. package/dist/validation/index.d.ts +3 -0
  216. package/dist/validation/index.d.ts.map +1 -0
  217. package/dist/validation/index.js +7 -0
  218. package/dist/validation/index.js.map +1 -0
  219. package/dist/validation/schemas.d.ts +273 -0
  220. package/dist/validation/schemas.d.ts.map +1 -0
  221. package/dist/validation/schemas.js +82 -0
  222. package/dist/validation/schemas.js.map +1 -0
  223. package/dist/validation/validate.d.ts +49 -0
  224. package/dist/validation/validate.d.ts.map +1 -0
  225. package/dist/validation/validate.js +110 -0
  226. package/dist/validation/validate.js.map +1 -0
  227. package/package.json +23 -13
package/dist/index.js ADDED
@@ -0,0 +1,65 @@
1
+ /**
2
+ * @fileoverview Main entry point for the digitaltwin-core package
3
+ *
4
+ * This module provides the core functionality for building digital twin applications,
5
+ * including data collection, processing, asset management, and real-time synchronization.
6
+ *
7
+ * @version 1.0.0
8
+ * @author FARI Team
9
+ *
10
+ * @example
11
+ * ```typescript
12
+ * import { DigitalTwinEngine, Collector, AssetsManager } from 'digitaltwin-core';
13
+ *
14
+ * const engine = new DigitalTwinEngine({ ... });
15
+ * await engine.start();
16
+ * ```
17
+ */
18
+ // Core Engine
19
+ export { DigitalTwinEngine } from './engine/digital_twin_engine.js';
20
+ // Base Components
21
+ export { Collector } from './components/collector.js';
22
+ export { Harvester } from './components/harvester.js';
23
+ export { Handler } from './components/handler.js';
24
+ export { AssetsManager } from './components/assets_manager.js';
25
+ export { GlobalAssetsHandler } from './components/global_assets_handler.js';
26
+ export { CustomTableManager } from './components/custom_table_manager.js';
27
+ export { TilesetManager } from './components/tileset_manager.js';
28
+ export { isAsyncUploadable } from './components/async_upload.js';
29
+ // Storage Services
30
+ export { StorageService } from './storage/storage_service.js';
31
+ export { LocalStorageService } from './storage/adapters/local_storage_service.js';
32
+ export { OvhS3StorageService } from './storage/adapters/ovh_storage_service.js';
33
+ export { StorageServiceFactory } from './storage/storage_factory.js';
34
+ // Database Services
35
+ export { DatabaseAdapter } from './database/database_adapter.js';
36
+ export { KnexDatabaseAdapter } from './database/adapters/knex_database_adapter.js';
37
+ // Types and Interfaces
38
+ export * from './components/types.js';
39
+ export * from './components/interfaces.js';
40
+ export * from './types/data_record.js';
41
+ // Authentication
42
+ export * from './auth/index.js';
43
+ // Errors
44
+ export * from './errors/index.js';
45
+ // Validation
46
+ export * from './validation/index.js';
47
+ // Utilities
48
+ export { Logger, LogLevel } from './utils/logger.js';
49
+ export { safeAsync, tryAsync, safeCleanup, retryAsync } from './utils/safe_async.js';
50
+ export { setupGracefulShutdown } from './utils/graceful_shutdown.js';
51
+ export { mapToDataRecord } from './utils/map_to_data_record.js';
52
+ export { servableEndpoint } from './utils/servable_endpoint.js';
53
+ export { HttpStatus, jsonResponse, successResponse, errorResponse, badRequestResponse, unauthorizedResponse, forbiddenResponse, notFoundResponse, textResponse, fileResponse, multiStatusResponse } from './utils/http_responses.js';
54
+ // Engine Components
55
+ export { QueueManager } from './engine/queue_manager.js';
56
+ export { errorHandler, asyncHandler, notFoundHandler } from './engine/error_handler.js';
57
+ export { HealthChecker, createDatabaseCheck, createRedisCheck, createStorageCheck, performHealthCheck, livenessCheck } from './engine/health.js';
58
+ export { UploadProcessor } from './engine/upload_processor.js';
59
+ export { initializeComponents } from './engine/initializer.js';
60
+ export * from './engine/events.js';
61
+ export * from './engine/endpoints.js';
62
+ // OpenAPI Documentation Generation
63
+ export * from './openapi/index.js';
64
+ export { Env } from './env/env.js';
65
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,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,EACH,kBAAkB,EAGrB,MAAM,sCAAsC,CAAA;AAC7C,OAAO,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAA;AAChE,OAAO,EAAwB,iBAAiB,EAAE,MAAM,8BAA8B,CAAA;AAEtF,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,SAAS;AACT,cAAc,mBAAmB,CAAA;AAEjC,aAAa;AACb,cAAc,uBAAuB,CAAA;AAErC,YAAY;AACZ,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AACpD,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAA;AACpF,OAAO,EAAE,qBAAqB,EAAwB,MAAM,8BAA8B,CAAA;AAC1F,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAA;AAC/D,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAA;AAC/D,OAAO,EACH,UAAU,EACV,YAAY,EACZ,eAAe,EACf,aAAa,EACb,kBAAkB,EAClB,oBAAoB,EACpB,iBAAiB,EACjB,gBAAgB,EAChB,YAAY,EACZ,YAAY,EACZ,mBAAmB,EACtB,MAAM,2BAA2B,CAAA;AAGlC,oBAAoB;AACpB,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;AACxD,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAA;AACvF,OAAO,EACH,aAAa,EACb,mBAAmB,EACnB,gBAAgB,EAChB,kBAAkB,EAClB,kBAAkB,EAClB,aAAa,EAKhB,MAAM,oBAAoB,CAAA;AAC3B,OAAO,EACH,eAAe,EAIlB,MAAM,8BAA8B,CAAA;AACrC,OAAO,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAA;AAC9D,cAAc,oBAAoB,CAAA;AAClC,cAAc,uBAAuB,CAAA;AAErC,mCAAmC;AACnC,cAAc,oBAAoB,CAAA;AAElC,OAAO,EAAE,GAAG,EAAE,MAAM,cAAc,CAAA"}
@@ -0,0 +1,93 @@
1
+ /**
2
+ * @fileoverview OpenAPI specification generator for Digital Twin components
3
+ *
4
+ * This module provides utilities to automatically generate OpenAPI 3.0
5
+ * documentation from Digital Twin components that implement OpenAPIDocumentable.
6
+ */
7
+ import type { OpenAPIDocument, OpenAPIGeneratorOptions, OpenAPISchema } from './types.js';
8
+ /**
9
+ * Generates OpenAPI 3.0 specifications from Digital Twin components.
10
+ *
11
+ * The generator aggregates OpenAPI specs from all components that implement
12
+ * the OpenAPIDocumentable interface and produces a complete OpenAPI document.
13
+ *
14
+ * @example
15
+ * ```typescript
16
+ * import { OpenAPIGenerator } from 'digitaltwin-core'
17
+ * import * as components from './src/components'
18
+ *
19
+ * const spec = OpenAPIGenerator.generate({
20
+ * info: {
21
+ * title: 'My Digital Twin API',
22
+ * version: '1.0.0',
23
+ * description: 'API documentation'
24
+ * },
25
+ * components: Object.values(components),
26
+ * servers: [{ url: 'http://localhost:3000' }]
27
+ * })
28
+ *
29
+ * // Write to file
30
+ * OpenAPIGenerator.writeYAML(spec, './openapi.yaml')
31
+ * ```
32
+ */
33
+ export declare class OpenAPIGenerator {
34
+ /**
35
+ * Generates an OpenAPI document from the provided components.
36
+ *
37
+ * @param options - Generation options including components and metadata
38
+ * @returns Complete OpenAPI document
39
+ */
40
+ static generate(options: OpenAPIGeneratorOptions): OpenAPIDocument;
41
+ /**
42
+ * Returns default security schemes for APISIX/Keycloak authentication.
43
+ */
44
+ private static getDefaultSecuritySchemes;
45
+ /**
46
+ * Converts an OpenAPI document to YAML string.
47
+ *
48
+ * @param document - OpenAPI document to convert
49
+ * @returns YAML string representation
50
+ */
51
+ static toYAML(document: OpenAPIDocument): string;
52
+ /**
53
+ * Converts an OpenAPI document to JSON string.
54
+ *
55
+ * @param document - OpenAPI document to convert
56
+ * @param pretty - Whether to format with indentation (default: true)
57
+ * @returns JSON string representation
58
+ */
59
+ static toJSON(document: OpenAPIDocument, pretty?: boolean): string;
60
+ /**
61
+ * Recursively converts an object to YAML format.
62
+ * Simple implementation without external dependencies.
63
+ */
64
+ private static objectToYAML;
65
+ /**
66
+ * Helper to create a simple schema reference.
67
+ */
68
+ static schemaRef(name: string): OpenAPISchema;
69
+ /**
70
+ * Helper to create a common response for 200 OK with content.
71
+ */
72
+ static successResponse(contentType: string, schema: OpenAPISchema, description?: string): {
73
+ '200': {
74
+ description: string;
75
+ content: {
76
+ [contentType]: {
77
+ schema: OpenAPISchema;
78
+ };
79
+ };
80
+ };
81
+ };
82
+ /**
83
+ * Helper to create common error responses.
84
+ */
85
+ static errorResponses(codes?: Array<400 | 401 | 403 | 404 | 500>): Record<string, {
86
+ description: string;
87
+ }>;
88
+ /**
89
+ * Common schemas used across components.
90
+ */
91
+ static commonSchemas: Record<string, OpenAPISchema>;
92
+ }
93
+ //# sourceMappingURL=generator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generator.d.ts","sourceRoot":"","sources":["../../src/openapi/generator.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EACR,eAAe,EACf,uBAAuB,EAEvB,aAAa,EAGhB,MAAM,YAAY,CAAA;AAGnB;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,qBAAa,gBAAgB;IACzB;;;;;OAKG;IACH,MAAM,CAAC,QAAQ,CAAC,OAAO,EAAE,uBAAuB,GAAG,eAAe;IAqFlE;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,yBAAyB;IAWxC;;;;;OAKG;IACH,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,eAAe,GAAG,MAAM;IAIhD;;;;;;OAMG;IACH,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,eAAe,EAAE,MAAM,UAAO,GAAG,MAAM;IAI/D;;;OAGG;IACH,OAAO,CAAC,MAAM,CAAC,YAAY;IAoF3B;;OAEG;IACH,MAAM,CAAC,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,aAAa;IAI7C;;OAEG;IACH,MAAM,CAAC,eAAe,CAAC,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,EAAE,WAAW,SAAwB;;;;gBAKtF,CAAC,WAAW,CAAC;;kBAAY;;;;IAMzC;;OAEG;IACH,MAAM,CAAC,cAAc,CAAC,KAAK,GAAE,KAAK,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAwB;qBACnC,MAAM;;IAiBzD;;OAEG;IACH,MAAM,CAAC,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAuClD;CACJ"}
@@ -0,0 +1,293 @@
1
+ /**
2
+ * @fileoverview OpenAPI specification generator for Digital Twin components
3
+ *
4
+ * This module provides utilities to automatically generate OpenAPI 3.0
5
+ * documentation from Digital Twin components that implement OpenAPIDocumentable.
6
+ */
7
+ import { isOpenAPIDocumentable } from './types.js';
8
+ /**
9
+ * Generates OpenAPI 3.0 specifications from Digital Twin components.
10
+ *
11
+ * The generator aggregates OpenAPI specs from all components that implement
12
+ * the OpenAPIDocumentable interface and produces a complete OpenAPI document.
13
+ *
14
+ * @example
15
+ * ```typescript
16
+ * import { OpenAPIGenerator } from 'digitaltwin-core'
17
+ * import * as components from './src/components'
18
+ *
19
+ * const spec = OpenAPIGenerator.generate({
20
+ * info: {
21
+ * title: 'My Digital Twin API',
22
+ * version: '1.0.0',
23
+ * description: 'API documentation'
24
+ * },
25
+ * components: Object.values(components),
26
+ * servers: [{ url: 'http://localhost:3000' }]
27
+ * })
28
+ *
29
+ * // Write to file
30
+ * OpenAPIGenerator.writeYAML(spec, './openapi.yaml')
31
+ * ```
32
+ */
33
+ export class OpenAPIGenerator {
34
+ /**
35
+ * Generates an OpenAPI document from the provided components.
36
+ *
37
+ * @param options - Generation options including components and metadata
38
+ * @returns Complete OpenAPI document
39
+ */
40
+ static generate(options) {
41
+ const { info, servers, components, additionalSchemas, additionalTags, includeAuth = true } = options;
42
+ // Filter components that implement OpenAPIDocumentable
43
+ const documentableComponents = components.filter(isOpenAPIDocumentable);
44
+ // Aggregate paths, tags, and schemas from all components
45
+ const allPaths = {};
46
+ const allTags = additionalTags ? [...additionalTags] : [];
47
+ const allSchemas = additionalSchemas ? { ...additionalSchemas } : {};
48
+ const tagNames = new Set(additionalTags?.map(t => t.name) || []);
49
+ for (const component of documentableComponents) {
50
+ try {
51
+ const spec = component.getOpenAPISpec();
52
+ // Merge paths
53
+ for (const [path, pathItem] of Object.entries(spec.paths)) {
54
+ if (allPaths[path]) {
55
+ // Merge operations into existing path
56
+ allPaths[path] = { ...allPaths[path], ...pathItem };
57
+ }
58
+ else {
59
+ allPaths[path] = pathItem;
60
+ }
61
+ }
62
+ // Merge tags (avoid duplicates)
63
+ if (spec.tags) {
64
+ for (const tag of spec.tags) {
65
+ if (!tagNames.has(tag.name)) {
66
+ allTags.push(tag);
67
+ tagNames.add(tag.name);
68
+ }
69
+ }
70
+ }
71
+ // Merge schemas
72
+ if (spec.schemas) {
73
+ Object.assign(allSchemas, spec.schemas);
74
+ }
75
+ }
76
+ catch (error) {
77
+ const componentName = 'getConfiguration' in component
78
+ ? component.getConfiguration().name
79
+ : 'unknown';
80
+ console.warn(`Warning: Failed to get OpenAPI spec from component "${componentName}":`, error);
81
+ }
82
+ }
83
+ // Sort tags alphabetically
84
+ allTags.sort((a, b) => a.name.localeCompare(b.name));
85
+ // Build components section
86
+ const componentsSection = {};
87
+ if (Object.keys(allSchemas).length > 0) {
88
+ componentsSection.schemas = allSchemas;
89
+ }
90
+ if (includeAuth) {
91
+ componentsSection.securitySchemes = this.getDefaultSecuritySchemes();
92
+ }
93
+ // Build final document
94
+ const document = {
95
+ openapi: '3.0.3',
96
+ info,
97
+ paths: allPaths
98
+ };
99
+ if (servers && servers.length > 0) {
100
+ document.servers = servers;
101
+ }
102
+ if (allTags.length > 0) {
103
+ document.tags = allTags;
104
+ }
105
+ if (Object.keys(componentsSection).length > 0) {
106
+ document.components = componentsSection;
107
+ }
108
+ return document;
109
+ }
110
+ /**
111
+ * Returns default security schemes for APISIX/Keycloak authentication.
112
+ */
113
+ static getDefaultSecuritySchemes() {
114
+ return {
115
+ ApiKeyAuth: {
116
+ type: 'apiKey',
117
+ in: 'header',
118
+ name: 'x-user-id',
119
+ description: 'Keycloak user ID (forwarded by APISIX)'
120
+ }
121
+ };
122
+ }
123
+ /**
124
+ * Converts an OpenAPI document to YAML string.
125
+ *
126
+ * @param document - OpenAPI document to convert
127
+ * @returns YAML string representation
128
+ */
129
+ static toYAML(document) {
130
+ return this.objectToYAML(document, 0);
131
+ }
132
+ /**
133
+ * Converts an OpenAPI document to JSON string.
134
+ *
135
+ * @param document - OpenAPI document to convert
136
+ * @param pretty - Whether to format with indentation (default: true)
137
+ * @returns JSON string representation
138
+ */
139
+ static toJSON(document, pretty = true) {
140
+ return JSON.stringify(document, null, pretty ? 2 : undefined);
141
+ }
142
+ /**
143
+ * Recursively converts an object to YAML format.
144
+ * Simple implementation without external dependencies.
145
+ */
146
+ static objectToYAML(obj, indent) {
147
+ const spaces = ' '.repeat(indent);
148
+ if (obj === null || obj === undefined) {
149
+ return 'null';
150
+ }
151
+ if (typeof obj === 'string') {
152
+ // Check if string needs quoting
153
+ if (obj === '' ||
154
+ obj.includes(':') ||
155
+ obj.includes('#') ||
156
+ obj.includes('\n') ||
157
+ obj.includes('"') ||
158
+ obj.includes("'") ||
159
+ obj.startsWith(' ') ||
160
+ obj.endsWith(' ') ||
161
+ obj === 'true' ||
162
+ obj === 'false' ||
163
+ obj === 'null' ||
164
+ /^[\d.]+$/.test(obj)) {
165
+ // Use double quotes and escape
166
+ return `"${obj.replace(/\\/g, '\\\\').replace(/"/g, '\\"').replace(/\n/g, '\\n')}"`;
167
+ }
168
+ return obj;
169
+ }
170
+ if (typeof obj === 'number' || typeof obj === 'boolean') {
171
+ return String(obj);
172
+ }
173
+ if (Array.isArray(obj)) {
174
+ if (obj.length === 0) {
175
+ return '[]';
176
+ }
177
+ const items = obj.map(item => {
178
+ const value = this.objectToYAML(item, indent + 1);
179
+ if (typeof item === 'object' && item !== null && !Array.isArray(item)) {
180
+ // Object in array - put first property on same line as dash
181
+ const lines = value.split('\n');
182
+ if (lines.length > 0) {
183
+ return `${spaces}- ${lines[0].trimStart()}\n${lines.slice(1).join('\n')}`;
184
+ }
185
+ }
186
+ return `${spaces}- ${value}`;
187
+ });
188
+ return items.join('\n').replace(/\n+$/, '');
189
+ }
190
+ if (typeof obj === 'object') {
191
+ const entries = Object.entries(obj);
192
+ if (entries.length === 0) {
193
+ return '{}';
194
+ }
195
+ const lines = entries.map(([key, value]) => {
196
+ // Handle special keys that need quoting
197
+ const quotedKey = /[:\s#[\]{}]/.test(key) ? `"${key}"` : key;
198
+ if (value === null || value === undefined) {
199
+ return `${spaces}${quotedKey}: null`;
200
+ }
201
+ if (typeof value === 'object' && !Array.isArray(value) && Object.keys(value).length > 0) {
202
+ return `${spaces}${quotedKey}:\n${this.objectToYAML(value, indent + 1)}`;
203
+ }
204
+ if (Array.isArray(value) && value.length > 0) {
205
+ return `${spaces}${quotedKey}:\n${this.objectToYAML(value, indent + 1)}`;
206
+ }
207
+ return `${spaces}${quotedKey}: ${this.objectToYAML(value, indent + 1)}`;
208
+ });
209
+ return lines.join('\n');
210
+ }
211
+ return String(obj);
212
+ }
213
+ /**
214
+ * Helper to create a simple schema reference.
215
+ */
216
+ static schemaRef(name) {
217
+ return { $ref: `#/components/schemas/${name}` };
218
+ }
219
+ /**
220
+ * Helper to create a common response for 200 OK with content.
221
+ */
222
+ static successResponse(contentType, schema, description = 'Successful response') {
223
+ return {
224
+ '200': {
225
+ description,
226
+ content: {
227
+ [contentType]: { schema }
228
+ }
229
+ }
230
+ };
231
+ }
232
+ /**
233
+ * Helper to create common error responses.
234
+ */
235
+ static errorResponses(codes = [400, 401, 404, 500]) {
236
+ const responses = {};
237
+ const descriptions = {
238
+ 400: 'Bad request',
239
+ 401: 'Unauthorized',
240
+ 403: 'Forbidden',
241
+ 404: 'Not found',
242
+ 500: 'Internal server error'
243
+ };
244
+ for (const code of codes) {
245
+ responses[String(code)] = { description: descriptions[code] };
246
+ }
247
+ return responses;
248
+ }
249
+ /**
250
+ * Common schemas used across components.
251
+ */
252
+ static { this.commonSchemas = {
253
+ Error: {
254
+ type: 'object',
255
+ properties: {
256
+ error: { type: 'string' },
257
+ message: { type: 'string' }
258
+ }
259
+ },
260
+ Point: {
261
+ type: 'object',
262
+ required: ['type', 'coordinates'],
263
+ properties: {
264
+ type: { type: 'string', enum: ['Point'] },
265
+ coordinates: {
266
+ type: 'array',
267
+ items: { type: 'number' }
268
+ }
269
+ }
270
+ },
271
+ Feature: {
272
+ type: 'object',
273
+ required: ['type', 'geometry', 'properties'],
274
+ properties: {
275
+ type: { type: 'string', enum: ['Feature'] },
276
+ geometry: { type: 'object' },
277
+ properties: { type: 'object' }
278
+ }
279
+ },
280
+ FeatureCollection: {
281
+ type: 'object',
282
+ required: ['type', 'features'],
283
+ properties: {
284
+ type: { type: 'string', enum: ['FeatureCollection'] },
285
+ features: {
286
+ type: 'array',
287
+ items: { $ref: '#/components/schemas/Feature' }
288
+ }
289
+ }
290
+ }
291
+ }; }
292
+ }
293
+ //# sourceMappingURL=generator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generator.js","sourceRoot":"","sources":["../../src/openapi/generator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * @fileoverview OpenAPI documentation generation module
3
+ *
4
+ * This module exports utilities for generating OpenAPI 3.0 specifications
5
+ * from Digital Twin components.
6
+ */
7
+ export * from './types.js';
8
+ export * from './generator.js';
9
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/openapi/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,cAAc,YAAY,CAAA;AAC1B,cAAc,gBAAgB,CAAA"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * @fileoverview OpenAPI documentation generation module
3
+ *
4
+ * This module exports utilities for generating OpenAPI 3.0 specifications
5
+ * from Digital Twin components.
6
+ */
7
+ export * from './types.js';
8
+ export * from './generator.js';
9
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/openapi/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,cAAc,YAAY,CAAA;AAC1B,cAAc,gBAAgB,CAAA"}