@dollhousemcp/mcp-server 2.0.0-rc.6 → 2.0.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.
Files changed (229) hide show
  1. package/CHANGELOG.md +52 -61
  2. package/README.github.md +2 -2
  3. package/README.md +284 -224
  4. package/README.md.backup +284 -224
  5. package/README.npm.md +284 -224
  6. package/dist/cache/LRUCache.d.ts +3 -0
  7. package/dist/cache/LRUCache.d.ts.map +1 -1
  8. package/dist/cache/LRUCache.js +36 -26
  9. package/dist/config/env.d.ts +14 -4
  10. package/dist/config/env.d.ts.map +1 -1
  11. package/dist/config/env.js +20 -6
  12. package/dist/di/Container.d.ts +21 -0
  13. package/dist/di/Container.d.ts.map +1 -1
  14. package/dist/di/Container.js +250 -53
  15. package/dist/elements/BaseElement.d.ts.map +1 -1
  16. package/dist/elements/BaseElement.js +5 -10
  17. package/dist/elements/base/BaseElementManager.d.ts +22 -0
  18. package/dist/elements/base/BaseElementManager.d.ts.map +1 -1
  19. package/dist/elements/base/BaseElementManager.js +47 -7
  20. package/dist/elements/memories/Memory.d.ts +1 -0
  21. package/dist/elements/memories/Memory.d.ts.map +1 -1
  22. package/dist/elements/memories/Memory.js +12 -8
  23. package/dist/elements/memories/MemoryManager.d.ts.map +1 -1
  24. package/dist/elements/memories/MemoryManager.js +23 -42
  25. package/dist/elements/memories/MemorySearchIndex.js +2 -2
  26. package/dist/generated/version.d.ts +2 -2
  27. package/dist/generated/version.d.ts.map +1 -1
  28. package/dist/generated/version.js +3 -3
  29. package/dist/handlers/EnhancedIndexHandler.js +6 -6
  30. package/dist/handlers/element-crud/listElements.d.ts +2 -0
  31. package/dist/handlers/element-crud/listElements.d.ts.map +1 -1
  32. package/dist/handlers/element-crud/listElements.js +3 -1
  33. package/dist/handlers/mcp-aql/Gatekeeper.d.ts.map +1 -1
  34. package/dist/handlers/mcp-aql/Gatekeeper.js +23 -17
  35. package/dist/handlers/mcp-aql/MCPAQLHandler.d.ts +14 -0
  36. package/dist/handlers/mcp-aql/MCPAQLHandler.d.ts.map +1 -1
  37. package/dist/handlers/mcp-aql/MCPAQLHandler.js +110 -14
  38. package/dist/handlers/mcp-aql/OperationRouter.d.ts.map +1 -1
  39. package/dist/handlers/mcp-aql/OperationRouter.js +13 -1
  40. package/dist/handlers/mcp-aql/OperationSchema.d.ts +7 -0
  41. package/dist/handlers/mcp-aql/OperationSchema.d.ts.map +1 -1
  42. package/dist/handlers/mcp-aql/OperationSchema.js +52 -1
  43. package/dist/handlers/mcp-aql/evaluatePermission.d.ts +53 -0
  44. package/dist/handlers/mcp-aql/evaluatePermission.d.ts.map +1 -0
  45. package/dist/handlers/mcp-aql/evaluatePermission.js +132 -0
  46. package/dist/handlers/mcp-aql/policies/ToolClassification.d.ts.map +1 -1
  47. package/dist/handlers/mcp-aql/policies/ToolClassification.js +2 -1
  48. package/dist/index.d.ts.map +1 -1
  49. package/dist/index.js +3 -3
  50. package/dist/logging/LogHooks.js +11 -11
  51. package/dist/logging/LogManager.d.ts +0 -2
  52. package/dist/logging/LogManager.d.ts.map +1 -1
  53. package/dist/logging/LogManager.js +1 -3
  54. package/dist/logging/sinks/MemoryLogSink.d.ts +2 -0
  55. package/dist/logging/sinks/MemoryLogSink.d.ts.map +1 -1
  56. package/dist/logging/sinks/MemoryLogSink.js +12 -3
  57. package/dist/logging/types.d.ts +0 -2
  58. package/dist/logging/types.d.ts.map +1 -1
  59. package/dist/logging/types.js +1 -1
  60. package/dist/metrics/GatekeeperMetricsTracker.d.ts +32 -0
  61. package/dist/metrics/GatekeeperMetricsTracker.d.ts.map +1 -0
  62. package/dist/metrics/GatekeeperMetricsTracker.js +42 -0
  63. package/dist/metrics/MetricsManager.d.ts +47 -0
  64. package/dist/metrics/MetricsManager.d.ts.map +1 -0
  65. package/dist/metrics/MetricsManager.js +232 -0
  66. package/dist/metrics/OperationMetricsTracker.d.ts +32 -0
  67. package/dist/metrics/OperationMetricsTracker.d.ts.map +1 -0
  68. package/dist/metrics/OperationMetricsTracker.js +53 -0
  69. package/dist/metrics/collectors/DefaultElementProviderCollector.d.ts +27 -0
  70. package/dist/metrics/collectors/DefaultElementProviderCollector.d.ts.map +1 -0
  71. package/dist/metrics/collectors/DefaultElementProviderCollector.js +69 -0
  72. package/dist/metrics/collectors/FileLockManagerCollector.d.ts +16 -0
  73. package/dist/metrics/collectors/FileLockManagerCollector.d.ts.map +1 -0
  74. package/dist/metrics/collectors/FileLockManagerCollector.js +51 -0
  75. package/dist/metrics/collectors/GatekeeperMetricsCollector.d.ts +16 -0
  76. package/dist/metrics/collectors/GatekeeperMetricsCollector.d.ts.map +1 -0
  77. package/dist/metrics/collectors/GatekeeperMetricsCollector.js +76 -0
  78. package/dist/metrics/collectors/LRUCacheCollector.d.ts +18 -0
  79. package/dist/metrics/collectors/LRUCacheCollector.d.ts.map +1 -0
  80. package/dist/metrics/collectors/LRUCacheCollector.js +95 -0
  81. package/dist/metrics/collectors/OperationMetricsCollector.d.ts +16 -0
  82. package/dist/metrics/collectors/OperationMetricsCollector.d.ts.map +1 -0
  83. package/dist/metrics/collectors/OperationMetricsCollector.js +80 -0
  84. package/dist/metrics/collectors/OperationalTelemetryCollector.d.ts +17 -0
  85. package/dist/metrics/collectors/OperationalTelemetryCollector.d.ts.map +1 -0
  86. package/dist/metrics/collectors/OperationalTelemetryCollector.js +26 -0
  87. package/dist/metrics/collectors/PerformanceMonitorCollector.d.ts +14 -0
  88. package/dist/metrics/collectors/PerformanceMonitorCollector.d.ts.map +1 -0
  89. package/dist/metrics/collectors/PerformanceMonitorCollector.js +141 -0
  90. package/dist/metrics/collectors/SecurityMonitorCollector.d.ts +21 -0
  91. package/dist/metrics/collectors/SecurityMonitorCollector.d.ts.map +1 -0
  92. package/dist/metrics/collectors/SecurityMonitorCollector.js +56 -0
  93. package/dist/metrics/collectors/SecurityTelemetryCollector.d.ts +15 -0
  94. package/dist/metrics/collectors/SecurityTelemetryCollector.d.ts.map +1 -0
  95. package/dist/metrics/collectors/SecurityTelemetryCollector.js +112 -0
  96. package/dist/metrics/collectors/TriggerMetricsTrackerCollector.d.ts +16 -0
  97. package/dist/metrics/collectors/TriggerMetricsTrackerCollector.d.ts.map +1 -0
  98. package/dist/metrics/collectors/TriggerMetricsTrackerCollector.js +26 -0
  99. package/dist/metrics/collectors/index.d.ts +11 -0
  100. package/dist/metrics/collectors/index.d.ts.map +1 -0
  101. package/dist/metrics/collectors/index.js +11 -0
  102. package/dist/metrics/sinks/MemoryMetricsSink.d.ts +22 -0
  103. package/dist/metrics/sinks/MemoryMetricsSink.d.ts.map +1 -0
  104. package/dist/metrics/sinks/MemoryMetricsSink.js +121 -0
  105. package/dist/metrics/types.d.ts +98 -0
  106. package/dist/metrics/types.d.ts.map +1 -0
  107. package/dist/metrics/types.js +24 -0
  108. package/dist/portfolio/DefaultElementProvider.d.ts.map +1 -1
  109. package/dist/portfolio/DefaultElementProvider.js +1 -7
  110. package/dist/portfolio/EnhancedIndexManager.d.ts.map +1 -1
  111. package/dist/portfolio/EnhancedIndexManager.js +18 -18
  112. package/dist/portfolio/NLPScoringManager.d.ts.map +1 -1
  113. package/dist/portfolio/NLPScoringManager.js +5 -9
  114. package/dist/portfolio/PortfolioIndexManager.js +2 -2
  115. package/dist/portfolio/RelationshipManager.js +2 -2
  116. package/dist/portfolio/VerbTriggerManager.d.ts.map +1 -1
  117. package/dist/portfolio/VerbTriggerManager.js +5 -19
  118. package/dist/portfolio/config/IndexConfig.d.ts.map +1 -1
  119. package/dist/portfolio/config/IndexConfig.js +1 -12
  120. package/dist/portfolio/enhanced-index/ElementDefinitionBuilder.d.ts.map +1 -1
  121. package/dist/portfolio/enhanced-index/ElementDefinitionBuilder.js +3 -15
  122. package/dist/portfolio/enhanced-index/SemanticRelationshipService.d.ts.map +1 -1
  123. package/dist/portfolio/enhanced-index/SemanticRelationshipService.js +2 -16
  124. package/dist/portfolio/types/RelationshipTypes.d.ts.map +1 -1
  125. package/dist/portfolio/types/RelationshipTypes.js +3 -17
  126. package/dist/security/audit/config/suppressions.d.ts.map +1 -1
  127. package/dist/security/audit/config/suppressions.js +36 -8
  128. package/dist/security/constants.d.ts.map +1 -1
  129. package/dist/security/constants.js +10 -6
  130. package/dist/security/fileLockManager.d.ts.map +1 -1
  131. package/dist/security/fileLockManager.js +8 -6
  132. package/dist/security/secureYamlParser.d.ts.map +1 -1
  133. package/dist/security/secureYamlParser.js +1 -13
  134. package/dist/security/securityMonitor.d.ts +2 -1
  135. package/dist/security/securityMonitor.d.ts.map +1 -1
  136. package/dist/security/securityMonitor.js +14 -3
  137. package/dist/security/telemetry/SecurityTelemetry.d.ts +16 -0
  138. package/dist/security/telemetry/SecurityTelemetry.d.ts.map +1 -1
  139. package/dist/security/telemetry/SecurityTelemetry.js +30 -2
  140. package/dist/security/tokenManager.d.ts +3 -0
  141. package/dist/security/tokenManager.d.ts.map +1 -1
  142. package/dist/security/tokenManager.js +13 -5
  143. package/dist/security/validation/BackgroundValidator.d.ts.map +1 -1
  144. package/dist/security/validation/BackgroundValidator.js +7 -7
  145. package/dist/server/startup.d.ts.map +1 -1
  146. package/dist/server/startup.js +8 -24
  147. package/dist/server/tools/MCPAQLTools.js +4 -1
  148. package/dist/services/ActivationStore.d.ts.map +1 -1
  149. package/dist/services/ActivationStore.js +9 -3
  150. package/dist/services/FileWatchService.d.ts +1 -0
  151. package/dist/services/FileWatchService.d.ts.map +1 -1
  152. package/dist/services/FileWatchService.js +83 -48
  153. package/dist/services/MetadataService.d.ts.map +1 -1
  154. package/dist/services/MetadataService.js +7 -2
  155. package/dist/services/query/ElementQueryService.d.ts.map +1 -1
  156. package/dist/services/query/ElementQueryService.js +1 -41
  157. package/dist/services/query/PaginationService.d.ts.map +1 -1
  158. package/dist/services/query/PaginationService.js +1 -14
  159. package/dist/services/query/SortService.d.ts.map +1 -1
  160. package/dist/services/query/SortService.js +1 -6
  161. package/dist/services/validation/ValidationService.d.ts.map +1 -1
  162. package/dist/services/validation/ValidationService.js +3 -8
  163. package/dist/storage/ElementStorageLayer.d.ts.map +1 -1
  164. package/dist/storage/ElementStorageLayer.js +5 -2
  165. package/dist/storage/MemoryStorageLayer.d.ts.map +1 -1
  166. package/dist/storage/MemoryStorageLayer.js +5 -2
  167. package/dist/telemetry/OperationalTelemetry.js +2 -2
  168. package/dist/utils/EventDeduplicator.d.ts +44 -0
  169. package/dist/utils/EventDeduplicator.d.ts.map +1 -0
  170. package/dist/utils/EventDeduplicator.js +93 -0
  171. package/dist/utils/FileLock.d.ts.map +1 -1
  172. package/dist/utils/FileLock.js +1 -9
  173. package/dist/utils/PerformanceMonitor.d.ts.map +1 -1
  174. package/dist/utils/PerformanceMonitor.js +5 -5
  175. package/dist/utils/SlidingWindowRateLimiter.d.ts +13 -0
  176. package/dist/utils/SlidingWindowRateLimiter.d.ts.map +1 -0
  177. package/dist/utils/SlidingWindowRateLimiter.js +23 -0
  178. package/dist/web/console/IngestRoutes.d.ts +84 -0
  179. package/dist/web/console/IngestRoutes.d.ts.map +1 -0
  180. package/dist/web/console/IngestRoutes.js +252 -0
  181. package/dist/web/console/LeaderElection.d.ts +89 -0
  182. package/dist/web/console/LeaderElection.d.ts.map +1 -0
  183. package/dist/web/console/LeaderElection.js +205 -0
  184. package/dist/web/console/LeaderForwardingSink.d.ts +61 -0
  185. package/dist/web/console/LeaderForwardingSink.d.ts.map +1 -0
  186. package/dist/web/console/LeaderForwardingSink.js +197 -0
  187. package/dist/web/console/SessionNames.d.ts +46 -0
  188. package/dist/web/console/SessionNames.d.ts.map +1 -0
  189. package/dist/web/console/SessionNames.js +257 -0
  190. package/dist/web/console/UnifiedConsole.d.ts +64 -0
  191. package/dist/web/console/UnifiedConsole.d.ts.map +1 -0
  192. package/dist/web/console/UnifiedConsole.js +119 -0
  193. package/dist/web/contentPipeline.d.ts +58 -0
  194. package/dist/web/contentPipeline.d.ts.map +1 -0
  195. package/dist/web/contentPipeline.js +112 -0
  196. package/dist/web/portDiscovery.d.ts +58 -0
  197. package/dist/web/portDiscovery.d.ts.map +1 -0
  198. package/dist/web/portDiscovery.js +143 -0
  199. package/dist/web/public/app.js +148 -60
  200. package/dist/web/public/logs.js +638 -0
  201. package/dist/web/public/metrics.js +682 -0
  202. package/dist/web/public/permissions.js +394 -0
  203. package/dist/web/public/sessions.js +369 -0
  204. package/dist/web/routes/healthRoutes.d.ts +16 -0
  205. package/dist/web/routes/healthRoutes.d.ts.map +1 -0
  206. package/dist/web/routes/healthRoutes.js +29 -0
  207. package/dist/web/routes/logRoutes.d.ts +18 -0
  208. package/dist/web/routes/logRoutes.d.ts.map +1 -0
  209. package/dist/web/routes/logRoutes.js +126 -0
  210. package/dist/web/routes/metricsRoutes.d.ts +17 -0
  211. package/dist/web/routes/metricsRoutes.d.ts.map +1 -0
  212. package/dist/web/routes/metricsRoutes.js +90 -0
  213. package/dist/web/routes/permissionRoutes.d.ts +16 -0
  214. package/dist/web/routes/permissionRoutes.d.ts.map +1 -0
  215. package/dist/web/routes/permissionRoutes.js +133 -0
  216. package/dist/web/routes.d.ts.map +1 -1
  217. package/dist/web/routes.js +309 -339
  218. package/dist/web/server.d.ts +21 -1
  219. package/dist/web/server.d.ts.map +1 -1
  220. package/dist/web/server.js +42 -4
  221. package/dist/web/sinks/WebSSELogSink.d.ts +15 -0
  222. package/dist/web/sinks/WebSSELogSink.d.ts.map +1 -0
  223. package/dist/web/sinks/WebSSELogSink.js +22 -0
  224. package/dist/web/sinks/WebSSEMetricsSink.d.ts +16 -0
  225. package/dist/web/sinks/WebSSEMetricsSink.d.ts.map +1 -0
  226. package/dist/web/sinks/WebSSEMetricsSink.js +23 -0
  227. package/package.json +2 -2
  228. package/server.json +2 -2
  229. package/dist/web/public/public/app.js +0 -1878
@@ -205,9 +205,7 @@ export function buildLogManagerConfig(envVars) {
205
205
  fileMaxSize: envVars.DOLLHOUSE_LOG_FILE_MAX_SIZE,
206
206
  maxDirSizeBytes: envVars.DOLLHOUSE_LOG_MAX_DIR_SIZE_BYTES,
207
207
  maxFilesPerCategory: envVars.DOLLHOUSE_LOG_MAX_FILES_PER_CATEGORY,
208
- viewerEnabled: envVars.DOLLHOUSE_LOG_VIEWER,
209
- viewerPort: envVars.DOLLHOUSE_LOG_VIEWER_PORT,
210
208
  logLevel: envVars.LOG_LEVEL,
211
209
  };
212
210
  }
213
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTG9nTWFuYWdlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9sb2dnaW5nL0xvZ01hbmFnZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7O0dBUUc7QUFFSCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDMUQsT0FBTyxFQUtMLGtCQUFrQixHQUNuQixNQUFNLFlBQVksQ0FBQztBQUVwQixNQUFNLE9BQU8sVUFBVTtJQUNKLEtBQUssR0FBZSxFQUFFLENBQUM7SUFDdkIsTUFBTSxDQUFpQztJQUN2QyxNQUFNLENBQW1CO0lBQ2xDLFVBQVUsR0FBMEMsSUFBSSxDQUFDO0lBQ3pELFlBQVksR0FBRyxDQUFDLENBQUM7SUFDakIsU0FBUyxHQUFHLENBQUMsQ0FBQztJQUNkLGtCQUFrQixHQUFHLENBQUMsQ0FBQztJQUUvQix3RUFBd0U7SUFDaEUseUJBQXlCLEdBQUcsQ0FBQyxDQUFDO0lBQzlCLG1CQUFtQixHQUFHLENBQUMsQ0FBQztJQUVoQyxZQUFZLE1BQXdCO1FBQ2xDLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxhQUFhLENBQWtCLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNwRSxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7SUFDekIsQ0FBQztJQUVELDhFQUE4RTtJQUM5RSxhQUFhO0lBQ2IsOEVBQThFO0lBRTlFOzs7Ozs7O09BT0c7SUFDSCxHQUFHLENBQUMsS0FBc0I7UUFDeEIsYUFBYTtRQUNiLElBQUksa0JBQWtCLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxHQUFHLGtCQUFrQixDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQztZQUMvRSxPQUFPO1FBQ1QsQ0FBQztRQUVELDJCQUEyQjtRQUMzQixNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMs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QUFFLE9BQU8sQ0FBQyxnQ0FBZ0M7UUFDekQsbUJBQW1CLEVBQUUsT0FBTyxDQUFDLG9DQUFvQztRQUNqRSxhQUFhLEVBQUUsT0FBTyxDQUFDLG9CQUFvQjtRQUMzQyxVQUFVLEVBQUUsT0FBTyxDQUFDLHlCQUF5QjtRQUM3QyxRQUFRLEVBQUUsT0FBTyxDQUFDLFNBQVM7S0FDNUIsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIENlbnRyYWwgY29vcmRpbmF0b3IgZm9yIHRoZSBVbmlmaWVkIExvZ2dpbmcgU3lzdGVtLlxuICpcbiAqIEFjY2VwdHMgVW5pZmllZExvZ0VudHJ5IG9iamVjdHMgZnJvbSBhbGwgc291cmNlcywgZW5mb3JjZXMgbGV2ZWwgZmlsdGVyaW5nXG4gKiBhbmQgZW50cnkgc2l6ZSBsaW1pdHMsIHJvdXRlcyBlbnRyaWVzIHRvIHJlZ2lzdGVyZWQgc2lua3MsIGFuZCBtYW5hZ2VzXG4gKiBmbHVzaCBsaWZlY3ljbGUgKHRpbWVyICsgYnVmZmVyIHRocmVzaG9sZCArIGltbWVkaWF0ZSBmbHVzaCBmb3Igc2VjdXJpdHkpLlxuICpcbiAqIFNlZSBkb2NzL0xPR0dJTkctREVTSUdOLm1kIMKnNC4yIGZvciB0aGUgZnVsbCBkZXNpZ24uXG4gKi9cblxuaW1wb3J0IHsgRXZpY3RpbmdRdWV1ZSB9IGZyb20gJy4uL3V0aWxzL0V2aWN0aW5nUXVldWUuanMnO1xuaW1wb3J0IHtcbiAgdHlwZSBVbmlmaWVkTG9nRW50cnksXG4gIHR5cGUgSUxvZ1NpbmssXG4gIHR5cGUgTG9nTGV2ZWwsXG4gIHR5cGUgTG9nTWFuYWdlckNvbmZpZyxcbiAgTE9HX0xFVkVMX1BSSU9SSVRZLFxufSBmcm9tICcuL3R5cGVzLmpzJztcblxuZXhwb3J0IGNsYXNzIExvZ01hbmFnZXIge1xuICBwcml2YXRlIHJlYWRvbmx5IHNpbmtzOiBJTG9nU2lua1tdID0gW107XG4gIHByaXZhdGUgcmVhZG9ubHkgYnVmZmVyOiBFdmljdGluZ1F1ZXVlPFVuaWZpZWRMb2dFbnRyeT47XG4gIHByaXZhdGUgcmVhZG9ubHkgY29uZmlnOiBMb2dNYW5hZ2VyQ29uZmlnO1xuICBwcml2YXRlIGZsdXNoVGltZXI6IFJldHVyblR5cGU8dHlwZW9mIHNldEludGVydmFsPiB8IG51bGwgPSBudWxsO1xuICBwcml2YXRlIGVudHJ5Q291bnRlciA9IDA7XG4gIHByaXZhdGUgZHJvcENvdW50ID0gMDtcbiAgcHJpdmF0ZSBwcmV2aW91c0J1ZmZlclNpemUgPSAwO1xuXG4gIC8vIFNsaWRpbmctd2luZG93IHJhdGUgbGltaXRlciBmb3IgaW1tZWRpYXRlIGZsdXNoZXMgKHBlci1zZWNvbmQgd2luZG93KVxuICBwcml2YXRlIGltbWVkaWF0ZUZsdXNoV2luZG93U3RhcnQgPSAwO1xuICBwcml2YXRlIGltbWVkaWF0ZUZsdXNoQ291bnQgPSAwO1xuXG4gIGNvbnN0cnVjdG9yKGNvbmZpZzogTG9nTWFuYWdlckNvbmZpZykge1xuICAgIHRoaXMuY29uZmlnID0gY29uZmlnO1xuICAgIHRoaXMuYnVmZmVyID0gbmV3IEV2aWN0aW5nUXVldWU8VW5pZmllZExvZ0VudHJ5Pihjb25maWcuYnVmZmVyU2l6ZSk7XG4gICAgdGhpcy5zdGFydEZsdXNoVGltZXIoKTtcbiAgfVxuXG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAvLyBQdWJsaWMgQVBJXG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4gIC8qKlxuICAgKiBSb3V0ZSBhIGxvZyBlbnRyeSB0byBhbGwgcmVnaXN0ZXJlZCBzaW5rcy5cbiAgICpcbiAgICogLSBTa2lwcyBlbnRyaWVzIGJlbG93IHRoZSBtaW5pbXVtIGxvZyBsZXZlbC5cbiAgICogLSBFbmZvcmNlcyBtYXggZW50cnkgc2l6ZSAodHJ1bmNhdGVzIGBkYXRhYCwgc2V0cyBgX3RydW5jYXRlZGApLlxuICAgKiAtIFNlY3VyaXR5IHdhcm4vZXJyb3IgZW50cmllcyB0cmlnZ2VyIGFuIGltbWVkaWF0ZSAocmF0ZS1saW1pdGVkKSBmbHVzaC5cbiAgICogLSBPdGhlciBlbnRyaWVzIGFyZSBidWZmZXJlZDsgYSBmbHVzaCBpcyB0cmlnZ2VyZWQgd2hlbiB0aGUgYnVmZmVyIGlzIGZ1bGwuXG4gICAqL1xuICBsb2coZW50cnk6IFVuaWZpZWRMb2dFbnRyeSk6IHZvaWQge1xuICAgIC8vIExldmVsIGdhdGVcbiAgICBpZiAoTE9HX0xFVkVMX1BSSU9SSVRZW2VudHJ5LmxldmVsXSA8IExPR19MRVZFTF9QUklPUklUWVt0aGlzLmNvbmZpZy5sb2dMZXZlbF0pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBFbmZvcmNlIGVudHJ5IHNpemUgbGltaXRcbiAgICBjb25zdCBlbmZvcmNlZCA9IHRoaXMuZW5mb3JjZUVudHJ5U2l6ZShlbnRyeSk7XG5cbiAgICAvLyBSb3V0ZSB0byBldmVyeSByZWdpc3RlcmVkIHNpbmtcbiAgICBmb3IgKGNvbnN0IHNpbmsgb2YgdGhpcy5zaW5rcykge1xuICAgICAgc2luay53cml0ZShlbmZvcmNlZCk7XG4gICAgfVxuXG4gICAgLy8gRGV0ZXJtaW5lIGZsdXNoIHN0cmF0ZWd5XG4gICAgY29uc3QgbmVlZHNJbW1lZGlhdGVGbHVzaCA9XG4gICAgICBlbmZvcmNlZC5jYXRlZ29yeSA9PT0gJ3NlY3VyaXR5JyAmJlxuICAgICAgKGVuZm9yY2VkLmxldmVsID09PSAnd2FybicgfHwgZW5mb3JjZWQubGV2ZWwgPT09ICdlcnJvcicpO1xuXG4gICAgaWYgKG5lZWRzSW1tZWRpYXRlRmx1c2ggJiYgdGhpcy5jYW5JbW1lZGlhdGVGbHVzaCgpKSB7XG4gICAgICAvLyBGaXJlLWFuZC1mb3JnZXQg4oCUIGxvZ2dpbmcgbXVzdCBuZXZlciBibG9jayB0aGUgY2FsbGVyXG4gICAgICB2b2lkIHRoaXMuZmx1c2goKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gVHJhY2sgYnVmZmVyIG9jY3VwYW5jeSBmb3IgYmFja3ByZXNzdXJlIHJlcG9ydGluZ1xuICAgICAgY29uc3Qgd2FzRnVsbCA9IHRoaXMuYnVmZmVyLnNpemUgPT09IHRoaXMuYnVmZmVyLmNhcGFjaXR5O1xuICAgICAgdGhpcy5idWZmZXIucHVzaChlbmZvcmNlZCk7XG5cbiAgICAgIC8vIERldGVjdCBldmljdGlvbiAoYnVmZmVyIHdhcyBhdCBjYXBhY2l0eSBiZWZvcmUgcHVzaClcbiAgICAgIGlmICh3YXNGdWxsKSB7XG4gICAgICAgIHRoaXMuZHJvcENvdW50Kys7XG4gICAgICB9XG5cbiAgICAgIC8vIEJ1ZmZlci1mdWxsIGZsdXNoIOKAlCBvbmx5IG9uIHRoZSB0cmFuc2l0aW9uIHRvIGZ1bGwsIG5vdCB3aGlsZSBhbHJlYWR5IGZ1bGwuXG4gICAgICAvLyBUaGUgcGVyaW9kaWMgZmx1c2ggdGltZXIgaGFuZGxlcyBzdGVhZHktc3RhdGUgZHJhaW5pbmcuXG4gICAgICBpZiAoIXdhc0Z1bGwgJiYgdGhpcy5idWZmZXIuc2l6ZSA+PSB0aGlzLmNvbmZpZy5idWZmZXJTaXplKSB7XG4gICAgICAgIHZvaWQgdGhpcy5mbHVzaCgpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qKiBSZWdpc3RlciBhbiBvdXRwdXQgc2luay4gKi9cbiAgcmVnaXN0ZXJTaW5rKHNpbms6IElMb2dTaW5rKTogdm9pZCB7XG4gICAgdGhpcy5zaW5rcy5wdXNoKHNpbmspO1xuICB9XG5cbiAgLyoqIEZsdXNoIGFsbCByZWdpc3RlcmVkIHNpbmtzIGFuZCByZXBvcnQgZHJvcHMgaWYgYW55IG9jY3VycmVkLiAqL1xuICBhc3luYyBmbHVzaCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAvLyBBY2N1bXVsYXRlIGRyb3BzIGFuZCBvbmx5IHJlcG9ydCB3aGVuIG1lYW5pbmdmdWwuXG4gICAgLy8gU2luZ2xlLWVudHJ5IGV2aWN0aW9ucyBhcmUgbm9ybWFsIHJpbmctYnVmZmVyIGN5Y2xpbmcgdW5kZXIgbG9hZDtcbiAgICAvLyBvbmx5IHdhcm4gd2hlbiBkcm9wcyBleGNlZWQgMTAlIG9mIGJ1ZmZlciBjYXBhY2l0eSBwZXIgZmx1c2ggaW50ZXJ2YWwuXG4gICAgY29uc3QgZHJvcFRocmVzaG9sZCA9IE1hdGgubWF4KDUsIE1hdGguY2VpbCh0aGlzLmNvbmZpZy5idWZmZXJTaXplICogMC4xKSk7XG4gICAgaWYgKHRoaXMuZHJvcENvdW50ID49IGRyb3BUaHJlc2hvbGQpIHtcbiAgICAgIGNvbnN0IGRyb3BFbnRyeSA9IHRoaXMuY3JlYXRlTWV0YUVudHJ5KFxuICAgICAgICAnd2FybicsXG4gICAgICAgIGBCYWNrcHJlc3N1cmU6ICR7dGhpcy5kcm9wQ291bnR9IGJ1ZmZlcmVkIGVudHJpZXMgZXZpY3RlZCBzaW5jZSBsYXN0IGZsdXNoYCxcbiAgICAgICAgeyBkcm9wcGVkQ291bnQ6IHRoaXMuZHJvcENvdW50IH0sXG4gICAgICApO1xuICAgICAgZm9yIChjb25zdCBzaW5rIG9mIHRoaXMuc2lua3MpIHtcbiAgICAgICAgc2luay53cml0ZShkcm9wRW50cnkpO1xuICAgICAgfVxuICAgICAgdGhpcy5kcm9wQ291bnQgPSAwO1xuICAgIH1cblxuICAgIGNvbnN0IGZsdXNoUHJvbWlzZXMgPSB0aGlzLnNpbmtzLm1hcCgoc2luaykgPT4gc2luay5mbHVzaCgpKTtcbiAgICBhd2FpdCBQcm9taXNlLmFsbFNldHRsZWQoZmx1c2hQcm9taXNlcyk7XG4gIH1cblxuICAvKiogR3JhY2VmdWwgc2h1dGRvd246IGNsZWFyIHRpbWVyLCBmbHVzaCwgdGhlbiBjbG9zZSBhbGwgc2lua3MuICovXG4gIGFzeW5jIGNsb3NlKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIHRoaXMuc3RvcEZsdXNoVGltZXIoKTtcbiAgICBhd2FpdCB0aGlzLmZsdXNoKCk7XG4gICAgY29uc3QgY2xvc2VQcm9taXNlcyA9IHRoaXMuc2lua3MubWFwKChzaW5rKSA9PiBzaW5rLmNsb3NlKCkpO1xuICAgIGF3YWl0IFByb21pc2UuYWxsU2V0dGxlZChjbG9zZVByb21pc2VzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZW5lcmF0ZSBhIHVuaXF1ZSBsb2cgZW50cnkgSUQuXG4gICAqIEZvcm1hdDogYExPRy17dGltZXN0YW1wfS17Y291bnRlcn1gXG4gICAqL1xuICBnZW5lcmF0ZUlkKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGBMT0ctJHtEYXRlLm5vdygpfS0ke3RoaXMuZW50cnlDb3VudGVyKyt9YDtcbiAgfVxuXG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAvLyBJbnRlcm5hbHNcbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiAgcHJpdmF0ZSBzdGFydEZsdXNoVGltZXIoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuY29uZmlnLmZsdXNoSW50ZXJ2YWxNcyA+IDApIHtcbiAgICAgIHRoaXMuZmx1c2hUaW1lciA9IHNldEludGVydmFsKCgpID0+IHtcbiAgICAgICAgdm9pZCB0aGlzLmZsdXNoKCk7XG4gICAgICB9LCB0aGlzLmNvbmZpZy5mbHVzaEludGVydmFsTXMpO1xuXG4gICAgICAvLyBBbGxvdyB0aGUgcHJvY2VzcyB0byBleGl0IGV2ZW4gaWYgdGhlIHRpbWVyIGlzIHN0aWxsIHJ1bm5pbmdcbiAgICAgIGlmICh0aGlzLmZsdXNoVGltZXIgJiYgdHlwZW9mIHRoaXMuZmx1c2hUaW1lciA9PT0gJ29iamVjdCcgJiYgJ3VucmVmJyBpbiB0aGlzLmZsdXNoVGltZXIpIHtcbiAgICAgICAgdGhpcy5mbHVzaFRpbWVyLnVucmVmKCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzdG9wRmx1c2hUaW1lcigpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5mbHVzaFRpbWVyICE9PSBudWxsKSB7XG4gICAgICBjbGVhckludGVydmFsKHRoaXMuZmx1c2hUaW1lcik7XG4gICAgICB0aGlzLmZsdXNoVGltZXIgPSBudWxsO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBTbGlkaW5nLXdpbmRvdyByYXRlIGxpbWl0ZXIgZm9yIGltbWVkaWF0ZSBmbHVzaGVzLlxuICAgKiBSZXR1cm5zIGB0cnVlYCBpZiBhbiBpbW1lZGlhdGUgZmx1c2ggaXMgYWxsb3dlZCByaWdodCBub3cuXG4gICAqL1xuICBwcml2YXRlIGNhbkltbWVkaWF0ZUZsdXNoKCk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IG5vdyA9IERhdGUubm93KCk7XG4gICAgY29uc3Qgd2luZG93TXMgPSAxMDAwO1xuXG4gICAgaWYgKG5vdyAtIHRoaXMuaW1tZWRpYXRlRmx1c2hXaW5kb3dTdGFydCA+PSB3aW5kb3dNcykge1xuICAgICAgLy8gTmV3IHdpbmRvd1xuICAgICAgdGhpcy5pbW1lZGlhdGVGbHVzaFdpbmRvd1N0YXJ0ID0gbm93O1xuICAgICAgdGhpcy5pbW1lZGlhdGVGbHVzaENvdW50ID0gMTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmltbWVkaWF0ZUZsdXNoQ291bnQgPCB0aGlzLmNvbmZpZy5pbW1lZGlhdGVGbHVzaFJhdGUpIHtcbiAgICAgIHRoaXMuaW1tZWRpYXRlRmx1c2hDb3VudCsrO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgLy8gUmF0ZSBleGNlZWRlZCDigJQgZGVtb3RlIHRvIGJ1ZmZlcmVkIHBhdGggKGNhbGxlciB3aWxsIGJ1ZmZlciBpbnN0ZWFkKVxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBFbmZvcmNlIGBtYXhFbnRyeVNpemVgIGJ5IHRydW5jYXRpbmcgdGhlIGBkYXRhYCBmaWVsZCBpZiBuZWNlc3NhcnkuXG4gICAqIFJldHVybnMgdGhlIG9yaWdpbmFsIGVudHJ5IHVubW9kaWZpZWQgd2hlbiB1bmRlciB0aGUgbGltaXQsIG9yIGFcbiAgICogc2hhbGxvdyBjb3B5IHdpdGggYGRhdGFgIHJlcGxhY2VkIHdoZW4gdHJ1bmNhdGlvbiBpcyBuZWVkZWQuXG4gICAqL1xuICBwcml2YXRlIGVuZm9yY2VFbnRyeVNpemUoZW50cnk6IFVuaWZpZWRMb2dFbnRyeSk6IFVuaWZpZWRMb2dFbnRyeSB7XG4gICAgaWYgKCFlbnRyeS5kYXRhKSByZXR1cm4gZW50cnk7XG5cbiAgICBjb25zdCBzZXJpYWxpemVkID0gSlNPTi5zdHJpbmdpZnkoZW50cnkpO1xuICAgIGlmIChzZXJpYWxpemVkLmxlbmd0aCA8PSB0aGlzLmNvbmZpZy5tYXhFbnRyeVNpemUpIHJldHVybiBlbnRyeTtcblxuICAgIGNvbnN0IG9yaWdpbmFsU2l6ZSA9IHNlcmlhbGl6ZWQubGVuZ3RoO1xuXG4gICAgLy8gRW1pdCBhIHdhcm4gbWV0YS1lbnRyeSBhYm91dCB0aGUgdHJ1bmNhdGlvblxuICAgIGNvbnN0IHRydW5jYXRpb25Ob3RpY2UgPSB0aGlzLmNyZWF0ZU1ldGFFbnRyeShcbiAgICAgICd3YXJuJyxcbiAgICAgIGBFbnRyeSB0cnVuY2F0ZWQ6IG9yaWdpbmFsIHNpemUgJHtvcmlnaW5hbFNpemV9IGJ5dGVzIGV4Y2VlZHMgbGltaXQgJHt0aGlzLmNvbmZpZy5tYXhFbnRyeVNpemV9YCxcbiAgICAgIHsgb3JpZ2luYWxTaXplLCBtYXhTaXplOiB0aGlzLmNvbmZpZy5tYXhFbnRyeVNpemUsIGVudHJ5SWQ6IGVudHJ5LmlkIH0sXG4gICAgKTtcbiAgICBmb3IgKGNvbnN0IHNpbmsgb2YgdGhpcy5zaW5rcykge1xuICAgICAgc2luay53cml0ZSh0cnVuY2F0aW9uTm90aWNlKTtcbiAgICB9XG5cbiAgICAvLyBSZXR1cm4gYSBjb3B5IHdpdGggZGF0YSByZXBsYWNlZCBieSBhIHRydW5jYXRpb24gbWFya2VyXG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLmVudHJ5LFxuICAgICAgZGF0YTogeyBfdHJ1bmNhdGVkOiB0cnVlLCBfb3JpZ2luYWxTaXplOiBvcmlnaW5hbFNpemUgfSxcbiAgICB9O1xuICB9XG5cbiAgLyoqIENyZWF0ZSBhIG1ldGEvc3lzdGVtIGxvZyBlbnRyeSBmcm9tIHRoZSBMb2dNYW5hZ2VyIGl0c2VsZi4gKi9cbiAgcHJpdmF0ZSBjcmVhdGVNZXRhRW50cnkoXG4gICAgbGV2ZWw6IExvZ0xldmVsLFxuICAgIG1lc3NhZ2U6IHN0cmluZyxcbiAgICBkYXRhPzogUmVjb3JkPHN0cmluZywgdW5rbm93bj4sXG4gICk6IFVuaWZpZWRMb2dFbnRyeSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGlkOiB0aGlzLmdlbmVyYXRlSWQoKSxcbiAgICAgIHRpbWVzdGFtcDogbmV3IERhdGUoKS50b0lTT1N0cmluZygpLFxuICAgICAgY2F0ZWdvcnk6ICdhcHBsaWNhdGlvbicsXG4gICAgICBsZXZlbCxcbiAgICAgIHNvdXJjZTogJ0xvZ01hbmFnZXInLFxuICAgICAgbWVzc2FnZSxcbiAgICAgIGRhdGEsXG4gICAgfTtcbiAgfVxufVxuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIEhlbHBlcjogYnVpbGQgTG9nTWFuYWdlckNvbmZpZyBmcm9tIHZhbGlkYXRlZCBlbnYgdmFyc1xuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbi8qKlxuICogTWFwIHRoZSBmbGF0IGVudiBvYmplY3QgKGZyb20gWm9kLXBhcnNlZCBgcHJvY2Vzcy5lbnZgKSB0byBhIHR5cGVkXG4gKiBgTG9nTWFuYWdlckNvbmZpZ2AuIEtlZXBzIHRoZSBtYXBwaW5nIGluIG9uZSBwbGFjZSBzbyB0aGUgREkgY29udGFpbmVyXG4gKiBvbmx5IG5lZWRzIGBidWlsZExvZ01hbmFnZXJDb25maWcoZW52KWAuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBidWlsZExvZ01hbmFnZXJDb25maWcoZW52VmFyczoge1xuICBET0xMSE9VU0VfTE9HX0RJUjogc3RyaW5nO1xuICBET0xMSE9VU0VfTE9HX0ZPUk1BVDogJ3RleHQnIHwgJ2pzb25sJztcbiAgRE9MTEhPVVNFX0xPR19SRVRFTlRJT05fREFZUzogbnVtYmVyO1xuICBET0xMSE9VU0VfTE9HX1NFQ1VSSVRZX1JFVEVOVElPTl9EQVlTOiBudW1iZXI7XG4gIERPTExIT1VTRV9MT0dfRkxVU0hfSU5URVJWQUxfTVM6IG51bWJlcjtcbiAgRE9MTEhPVVNFX0xPR19CVUZGRVJfU0laRTogbnVtYmVyO1xuICBET0xMSE9VU0VfTE9HX01FTU9SWV9DQVBBQ0lUWTogbnVtYmVyO1xuICBET0xMSE9VU0VfTE9HX01FTU9SWV9BUFBfQ0FQQUNJVFk6IG51bWJlcjtcbiAgRE9MTEhPVVNFX0xPR19NRU1PUllfU0VDVVJJVFlfQ0FQQUNJVFk6IG51bWJlcjtcbiAgRE9MTEhPVVNFX0xPR19NRU1PUllfUEVSRl9DQVBBQ0lUWTogbnVtYmVyO1xuICBET0xMSE9VU0VfTE9HX01FTU9SWV9URUxFTUVUUllfQ0FQQUNJVFk6IG51bWJlcjtcbiAgRE9MTEhPVVNFX0xPR19NQVhfRU5UUllfU0laRTogbnVtYmVyO1xuICBET0xMSE9VU0VfTE9HX0lNTUVESUFURV9GTFVTSF9SQVRFOiBudW1iZXI7XG4gIERPTExIT1VTRV9MT0dfRklMRV9NQVhfU0laRTogbnVtYmVyO1xuICBET0xMSE9VU0VfTE9HX01BWF9ESVJfU0laRV9CWVRFUzogbnVtYmVyO1xuICBET0xMSE9VU0VfTE9HX01BWF9GSUxFU19QRVJfQ0FURUdPUlk6IG51bWJlcjtcbiAgRE9MTEhPVVNFX0xPR19WSUVXRVI6IGJvb2xlYW47XG4gIERPTExIT1VTRV9MT0dfVklFV0VSX1BPUlQ6IG51bWJlcjtcbiAgTE9HX0xFVkVMOiAnZGVidWcnIHwgJ2luZm8nIHwgJ3dhcm4nIHwgJ2Vycm9yJztcbn0pOiBMb2dNYW5hZ2VyQ29uZmlnIHtcbiAgcmV0dXJuIHtcbiAgICBsb2dEaXI6IGVudlZhcnMuRE9MTEhPVVNFX0xPR19ESVIsXG4gICAgbG9nRm9ybWF0OiBlbnZWYXJzLkRPTExIT1VTRV9MT0dfRk9STUFULFxuICAgIHJldGVudGlvbkRheXM6IGVudlZhcnMuRE9MTEhPVVNFX0xPR19SRVRFTlRJT05fREFZUyxcbiAgICBzZWN1cml0eVJldGVudGlvbkRheXM6IGVudlZhcnMuRE9MTEhPVVNFX0xPR19TRUNVUklUWV9SRVRFTlRJT05fREFZUyxcbiAgICBmbHVzaEludGVydmFsTXM6IGVudlZhcnMuRE9MTEhPVVNFX0xPR19GTFVTSF9JTlRFUlZBTF9NUyxcbiAgICBidWZmZXJTaXplOiBlbnZWYXJzLkRPTExIT1VTRV9MT0dfQlVGRkVSX1NJWkUsXG4gICAgbWVtb3J5Q2FwYWNpdHk6IGVudlZhcnMuRE9MTEhPVVNFX0xPR19NRU1PUllfQ0FQQUNJVFksXG4gICAgbWVtb3J5QXBwQ2FwYWNpdHk6IGVudlZhcnMuRE9MTEhPVVNFX0xPR19NRU1PUllfQVBQX0NBUEFDSVRZLFxuICAgIG1lbW9yeVNlY3VyaXR5Q2FwYWNpdHk6IGVudlZhcnMuRE9MTEhPVVNFX0xPR19NRU1PUllfU0VDVVJJVFlfQ0FQQUNJVFksXG4gICAgbWVtb3J5UGVyZkNhcGFjaXR5OiBlbnZWYXJzLkRPTExIT1VTRV9MT0dfTUVNT1JZX1BFUkZfQ0FQQUNJVFksXG4gICAgbWVtb3J5VGVsZW1ldHJ5Q2FwYWNpdHk6IGVudlZhcnMuRE9MTEhPVVNFX0xPR19NRU1PUllfVEVMRU1FVFJZX0NBUEFDSVRZLFxuICAgIG1heEVudHJ5U2l6ZTogZW52VmFycy5ET0xMSE9VU0VfTE9HX01BWF9FTlRSWV9TSVpFLFxuICAgIGltbWVkaWF0ZUZsdXNoUmF0ZTogZW52VmFycy5ET0xMSE9VU0VfTE9HX0lNTUVESUFURV9GTFVTSF9SQVRFLFxuICAgIGZpbGVNYXhTaXplOiBlbnZWYXJzLkRPTExIT1VTRV9MT0dfRklMRV9NQVhfU0laRSxcbiAgICBtYXhEaXJTaXplQnl0ZXM6IGVudlZhcnMuRE9MTEhPVVNFX0xPR19NQVhfRElSX1NJWkVfQllURVMsXG4gICAgbWF4RmlsZXNQZXJDYXRlZ29yeTogZW52VmFycy5ET0xMSE9VU0VfTE9HX01BWF9GSUxFU19QRVJfQ0FURUdPUlksXG4gICAgdmlld2VyRW5hYmxlZDogZW52VmFycy5ET0xMSE9VU0VfTE9HX1ZJRVdFUixcbiAgICB2aWV3ZXJQb3J0OiBlbnZWYXJzLkRPTExIT1VTRV9MT0dfVklFV0VSX1BPUlQsXG4gICAgbG9nTGV2ZWw6IGVudlZhcnMuTE9HX0xFVkVMLFxuICB9O1xufVxuIl19
211
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTG9nTWFuYWdlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9sb2dnaW5nL0xvZ01hbmFnZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7O0dBUUc7QUFFSCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDMUQsT0FBTyxFQUtMLGtCQUFrQixHQUNuQixNQUFNLFlBQVksQ0FBQztBQUVwQixNQUFNLE9BQU8sVUFBVTtJQUNKLEtBQUssR0FBZSxFQUFFLENBQUM7SUFDdkIsTUFBTSxDQUFpQztJQUN2QyxNQUFNLENBQW1CO0lBQ2xDLFVBQVUsR0FBMEMsSUFBSSxDQUFDO0lBQ3pELFlBQVksR0FBRyxDQUFDLENBQUM7SUFDakIsU0FBUyxHQUFHLENBQUMsQ0FBQztJQUNkLGtCQUFrQixHQUFHLENBQUMsQ0FBQztJQUUvQix3RUFBd0U7SUFDaEUseUJBQXlCLEdBQUcsQ0FBQyxDQUFDO0lBQzlCLG1CQUFtQixHQUFHLENBQUMsQ0FBQztJQUVoQyxZQUFZLE1BQXdCO1FBQ2xDLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxhQUFhLENBQWtCLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNwRSxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7SUFDekIsQ0FBQztJQUVELDhFQUE4RTtJQUM5RSxhQUFhO0lBQ2IsOEVBQThFO0lBRTlFOzs7Ozs7O09BT0c7SUFDSCxHQUFHLENBQUMsS0FBc0I7UUFDeEIsYUFBYTtRQUNiLElBQUksa0JBQWtCLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxHQUFHLGtCQUFrQixDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQztZQUMvRSxPQUFPO1FBQ1QsQ0FBQztRQUVELDJCQUEyQjtRQUMzQixNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMs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QUFFLE9BQU8sQ0FBQyxnQ0FBZ0M7UUFDekQsbUJBQW1CLEVBQUUsT0FBTyxDQUFDLG9DQUFvQztRQUNqRSxRQUFRLEVBQUUsT0FBTyxDQUFDLFNBQVM7S0FDNUIsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIENlbnRyYWwgY29vcmRpbmF0b3IgZm9yIHRoZSBVbmlmaWVkIExvZ2dpbmcgU3lzdGVtLlxuICpcbiAqIEFjY2VwdHMgVW5pZmllZExvZ0VudHJ5IG9iamVjdHMgZnJvbSBhbGwgc291cmNlcywgZW5mb3JjZXMgbGV2ZWwgZmlsdGVyaW5nXG4gKiBhbmQgZW50cnkgc2l6ZSBsaW1pdHMsIHJvdXRlcyBlbnRyaWVzIHRvIHJlZ2lzdGVyZWQgc2lua3MsIGFuZCBtYW5hZ2VzXG4gKiBmbHVzaCBsaWZlY3ljbGUgKHRpbWVyICsgYnVmZmVyIHRocmVzaG9sZCArIGltbWVkaWF0ZSBmbHVzaCBmb3Igc2VjdXJpdHkpLlxuICpcbiAqIFNlZSBkb2NzL0xPR0dJTkctREVTSUdOLm1kIMKnNC4yIGZvciB0aGUgZnVsbCBkZXNpZ24uXG4gKi9cblxuaW1wb3J0IHsgRXZpY3RpbmdRdWV1ZSB9IGZyb20gJy4uL3V0aWxzL0V2aWN0aW5nUXVldWUuanMnO1xuaW1wb3J0IHtcbiAgdHlwZSBVbmlmaWVkTG9nRW50cnksXG4gIHR5cGUgSUxvZ1NpbmssXG4gIHR5cGUgTG9nTGV2ZWwsXG4gIHR5cGUgTG9nTWFuYWdlckNvbmZpZyxcbiAgTE9HX0xFVkVMX1BSSU9SSVRZLFxufSBmcm9tICcuL3R5cGVzLmpzJztcblxuZXhwb3J0IGNsYXNzIExvZ01hbmFnZXIge1xuICBwcml2YXRlIHJlYWRvbmx5IHNpbmtzOiBJTG9nU2lua1tdID0gW107XG4gIHByaXZhdGUgcmVhZG9ubHkgYnVmZmVyOiBFdmljdGluZ1F1ZXVlPFVuaWZpZWRMb2dFbnRyeT47XG4gIHByaXZhdGUgcmVhZG9ubHkgY29uZmlnOiBMb2dNYW5hZ2VyQ29uZmlnO1xuICBwcml2YXRlIGZsdXNoVGltZXI6IFJldHVyblR5cGU8dHlwZW9mIHNldEludGVydmFsPiB8IG51bGwgPSBudWxsO1xuICBwcml2YXRlIGVudHJ5Q291bnRlciA9IDA7XG4gIHByaXZhdGUgZHJvcENvdW50ID0gMDtcbiAgcHJpdmF0ZSBwcmV2aW91c0J1ZmZlclNpemUgPSAwO1xuXG4gIC8vIFNsaWRpbmctd2luZG93IHJhdGUgbGltaXRlciBmb3IgaW1tZWRpYXRlIGZsdXNoZXMgKHBlci1zZWNvbmQgd2luZG93KVxuICBwcml2YXRlIGltbWVkaWF0ZUZsdXNoV2luZG93U3RhcnQgPSAwO1xuICBwcml2YXRlIGltbWVkaWF0ZUZsdXNoQ291bnQgPSAwO1xuXG4gIGNvbnN0cnVjdG9yKGNvbmZpZzogTG9nTWFuYWdlckNvbmZpZykge1xuICAgIHRoaXMuY29uZmlnID0gY29uZmlnO1xuICAgIHRoaXMuYnVmZmVyID0gbmV3IEV2aWN0aW5nUXVldWU8VW5pZmllZExvZ0VudHJ5Pihjb25maWcuYnVmZmVyU2l6ZSk7XG4gICAgdGhpcy5zdGFydEZsdXNoVGltZXIoKTtcbiAgfVxuXG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAvLyBQdWJsaWMgQVBJXG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4gIC8qKlxuICAgKiBSb3V0ZSBhIGxvZyBlbnRyeSB0byBhbGwgcmVnaXN0ZXJlZCBzaW5rcy5cbiAgICpcbiAgICogLSBTa2lwcyBlbnRyaWVzIGJlbG93IHRoZSBtaW5pbXVtIGxvZyBsZXZlbC5cbiAgICogLSBFbmZvcmNlcyBtYXggZW50cnkgc2l6ZSAodHJ1bmNhdGVzIGBkYXRhYCwgc2V0cyBgX3RydW5jYXRlZGApLlxuICAgKiAtIFNlY3VyaXR5IHdhcm4vZXJyb3IgZW50cmllcyB0cmlnZ2VyIGFuIGltbWVkaWF0ZSAocmF0ZS1saW1pdGVkKSBmbHVzaC5cbiAgICogLSBPdGhlciBlbnRyaWVzIGFyZSBidWZmZXJlZDsgYSBmbHVzaCBpcyB0cmlnZ2VyZWQgd2hlbiB0aGUgYnVmZmVyIGlzIGZ1bGwuXG4gICAqL1xuICBsb2coZW50cnk6IFVuaWZpZWRMb2dFbnRyeSk6IHZvaWQge1xuICAgIC8vIExldmVsIGdhdGVcbiAgICBpZiAoTE9HX0xFVkVMX1BSSU9SSVRZW2VudHJ5LmxldmVsXSA8IExPR19MRVZFTF9QUklPUklUWVt0aGlzLmNvbmZpZy5sb2dMZXZlbF0pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBFbmZvcmNlIGVudHJ5IHNpemUgbGltaXRcbiAgICBjb25zdCBlbmZvcmNlZCA9IHRoaXMuZW5mb3JjZUVudHJ5U2l6ZShlbnRyeSk7XG5cbiAgICAvLyBSb3V0ZSB0byBldmVyeSByZWdpc3RlcmVkIHNpbmtcbiAgICBmb3IgKGNvbnN0IHNpbmsgb2YgdGhpcy5zaW5rcykge1xuICAgICAgc2luay53cml0ZShlbmZvcmNlZCk7XG4gICAgfVxuXG4gICAgLy8gRGV0ZXJtaW5lIGZsdXNoIHN0cmF0ZWd5XG4gICAgY29uc3QgbmVlZHNJbW1lZGlhdGVGbHVzaCA9XG4gICAgICBlbmZvcmNlZC5jYXRlZ29yeSA9PT0gJ3NlY3VyaXR5JyAmJlxuICAgICAgKGVuZm9yY2VkLmxldmVsID09PSAnd2FybicgfHwgZW5mb3JjZWQubGV2ZWwgPT09ICdlcnJvcicpO1xuXG4gICAgaWYgKG5lZWRzSW1tZWRpYXRlRmx1c2ggJiYgdGhpcy5jYW5JbW1lZGlhdGVGbHVzaCgpKSB7XG4gICAgICAvLyBGaXJlLWFuZC1mb3JnZXQg4oCUIGxvZ2dpbmcgbXVzdCBuZXZlciBibG9jayB0aGUgY2FsbGVyXG4gICAgICB2b2lkIHRoaXMuZmx1c2goKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gVHJhY2sgYnVmZmVyIG9jY3VwYW5jeSBmb3IgYmFja3ByZXNzdXJlIHJlcG9ydGluZ1xuICAgICAgY29uc3Qgd2FzRnVsbCA9IHRoaXMuYnVmZmVyLnNpemUgPT09IHRoaXMuYnVmZmVyLmNhcGFjaXR5O1xuICAgICAgdGhpcy5idWZmZXIucHVzaChlbmZvcmNlZCk7XG5cbiAgICAgIC8vIERldGVjdCBldmljdGlvbiAoYnVmZmVyIHdhcyBhdCBjYXBhY2l0eSBiZWZvcmUgcHVzaClcbiAgICAgIGlmICh3YXNGdWxsKSB7XG4gICAgICAgIHRoaXMuZHJvcENvdW50Kys7XG4gICAgICB9XG5cbiAgICAgIC8vIEJ1ZmZlci1mdWxsIGZsdXNoIOKAlCBvbmx5IG9uIHRoZSB0cmFuc2l0aW9uIHRvIGZ1bGwsIG5vdCB3aGlsZSBhbHJlYWR5IGZ1bGwuXG4gICAgICAvLyBUaGUgcGVyaW9kaWMgZmx1c2ggdGltZXIgaGFuZGxlcyBzdGVhZHktc3RhdGUgZHJhaW5pbmcuXG4gICAgICBpZiAoIXdhc0Z1bGwgJiYgdGhpcy5idWZmZXIuc2l6ZSA+PSB0aGlzLmNvbmZpZy5idWZmZXJTaXplKSB7XG4gICAgICAgIHZvaWQgdGhpcy5mbHVzaCgpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qKiBSZWdpc3RlciBhbiBvdXRwdXQgc2luay4gKi9cbiAgcmVnaXN0ZXJTaW5rKHNpbms6IElMb2dTaW5rKTogdm9pZCB7XG4gICAgdGhpcy5zaW5rcy5wdXNoKHNpbmspO1xuICB9XG5cbiAgLyoqIEZsdXNoIGFsbCByZWdpc3RlcmVkIHNpbmtzIGFuZCByZXBvcnQgZHJvcHMgaWYgYW55IG9jY3VycmVkLiAqL1xuICBhc3luYyBmbHVzaCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAvLyBBY2N1bXVsYXRlIGRyb3BzIGFuZCBvbmx5IHJlcG9ydCB3aGVuIG1lYW5pbmdmdWwuXG4gICAgLy8gU2luZ2xlLWVudHJ5IGV2aWN0aW9ucyBhcmUgbm9ybWFsIHJpbmctYnVmZmVyIGN5Y2xpbmcgdW5kZXIgbG9hZDtcbiAgICAvLyBvbmx5IHdhcm4gd2hlbiBkcm9wcyBleGNlZWQgMTAlIG9mIGJ1ZmZlciBjYXBhY2l0eSBwZXIgZmx1c2ggaW50ZXJ2YWwuXG4gICAgY29uc3QgZHJvcFRocmVzaG9sZCA9IE1hdGgubWF4KDUsIE1hdGguY2VpbCh0aGlzLmNvbmZpZy5idWZmZXJTaXplICogMC4xKSk7XG4gICAgaWYgKHRoaXMuZHJvcENvdW50ID49IGRyb3BUaHJlc2hvbGQpIHtcbiAgICAgIGNvbnN0IGRyb3BFbnRyeSA9IHRoaXMuY3JlYXRlTWV0YUVudHJ5KFxuICAgICAgICAnd2FybicsXG4gICAgICAgIGBCYWNrcHJlc3N1cmU6ICR7dGhpcy5kcm9wQ291bnR9IGJ1ZmZlcmVkIGVudHJpZXMgZXZpY3RlZCBzaW5jZSBsYXN0IGZsdXNoYCxcbiAgICAgICAgeyBkcm9wcGVkQ291bnQ6IHRoaXMuZHJvcENvdW50IH0sXG4gICAgICApO1xuICAgICAgZm9yIChjb25zdCBzaW5rIG9mIHRoaXMuc2lua3MpIHtcbiAgICAgICAgc2luay53cml0ZShkcm9wRW50cnkpO1xuICAgICAgfVxuICAgICAgdGhpcy5kcm9wQ291bnQgPSAwO1xuICAgIH1cblxuICAgIGNvbnN0IGZsdXNoUHJvbWlzZXMgPSB0aGlzLnNpbmtzLm1hcCgoc2luaykgPT4gc2luay5mbHVzaCgpKTtcbiAgICBhd2FpdCBQcm9taXNlLmFsbFNldHRsZWQoZmx1c2hQcm9taXNlcyk7XG4gIH1cblxuICAvKiogR3JhY2VmdWwgc2h1dGRvd246IGNsZWFyIHRpbWVyLCBmbHVzaCwgdGhlbiBjbG9zZSBhbGwgc2lua3MuICovXG4gIGFzeW5jIGNsb3NlKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIHRoaXMuc3RvcEZsdXNoVGltZXIoKTtcbiAgICBhd2FpdCB0aGlzLmZsdXNoKCk7XG4gICAgY29uc3QgY2xvc2VQcm9taXNlcyA9IHRoaXMuc2lua3MubWFwKChzaW5rKSA9PiBzaW5rLmNsb3NlKCkpO1xuICAgIGF3YWl0IFByb21pc2UuYWxsU2V0dGxlZChjbG9zZVByb21pc2VzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZW5lcmF0ZSBhIHVuaXF1ZSBsb2cgZW50cnkgSUQuXG4gICAqIEZvcm1hdDogYExPRy17dGltZXN0YW1wfS17Y291bnRlcn1gXG4gICAqL1xuICBnZW5lcmF0ZUlkKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGBMT0ctJHtEYXRlLm5vdygpfS0ke3RoaXMuZW50cnlDb3VudGVyKyt9YDtcbiAgfVxuXG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAvLyBJbnRlcm5hbHNcbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiAgcHJpdmF0ZSBzdGFydEZsdXNoVGltZXIoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuY29uZmlnLmZsdXNoSW50ZXJ2YWxNcyA+IDApIHtcbiAgICAgIHRoaXMuZmx1c2hUaW1lciA9IHNldEludGVydmFsKCgpID0+IHtcbiAgICAgICAgdm9pZCB0aGlzLmZsdXNoKCk7XG4gICAgICB9LCB0aGlzLmNvbmZpZy5mbHVzaEludGVydmFsTXMpO1xuXG4gICAgICAvLyBBbGxvdyB0aGUgcHJvY2VzcyB0byBleGl0IGV2ZW4gaWYgdGhlIHRpbWVyIGlzIHN0aWxsIHJ1bm5pbmdcbiAgICAgIGlmICh0aGlzLmZsdXNoVGltZXIgJiYgdHlwZW9mIHRoaXMuZmx1c2hUaW1lciA9PT0gJ29iamVjdCcgJiYgJ3VucmVmJyBpbiB0aGlzLmZsdXNoVGltZXIpIHtcbiAgICAgICAgdGhpcy5mbHVzaFRpbWVyLnVucmVmKCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzdG9wRmx1c2hUaW1lcigpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5mbHVzaFRpbWVyICE9PSBudWxsKSB7XG4gICAgICBjbGVhckludGVydmFsKHRoaXMuZmx1c2hUaW1lcik7XG4gICAgICB0aGlzLmZsdXNoVGltZXIgPSBudWxsO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBTbGlkaW5nLXdpbmRvdyByYXRlIGxpbWl0ZXIgZm9yIGltbWVkaWF0ZSBmbHVzaGVzLlxuICAgKiBSZXR1cm5zIGB0cnVlYCBpZiBhbiBpbW1lZGlhdGUgZmx1c2ggaXMgYWxsb3dlZCByaWdodCBub3cuXG4gICAqL1xuICBwcml2YXRlIGNhbkltbWVkaWF0ZUZsdXNoKCk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IG5vdyA9IERhdGUubm93KCk7XG4gICAgY29uc3Qgd2luZG93TXMgPSAxMDAwO1xuXG4gICAgaWYgKG5vdyAtIHRoaXMuaW1tZWRpYXRlRmx1c2hXaW5kb3dTdGFydCA+PSB3aW5kb3dNcykge1xuICAgICAgLy8gTmV3IHdpbmRvd1xuICAgICAgdGhpcy5pbW1lZGlhdGVGbHVzaFdpbmRvd1N0YXJ0ID0gbm93O1xuICAgICAgdGhpcy5pbW1lZGlhdGVGbHVzaENvdW50ID0gMTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmltbWVkaWF0ZUZsdXNoQ291bnQgPCB0aGlzLmNvbmZpZy5pbW1lZGlhdGVGbHVzaFJhdGUpIHtcbiAgICAgIHRoaXMuaW1tZWRpYXRlRmx1c2hDb3VudCsrO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgLy8gUmF0ZSBleGNlZWRlZCDigJQgZGVtb3RlIHRvIGJ1ZmZlcmVkIHBhdGggKGNhbGxlciB3aWxsIGJ1ZmZlciBpbnN0ZWFkKVxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBFbmZvcmNlIGBtYXhFbnRyeVNpemVgIGJ5IHRydW5jYXRpbmcgdGhlIGBkYXRhYCBmaWVsZCBpZiBuZWNlc3NhcnkuXG4gICAqIFJldHVybnMgdGhlIG9yaWdpbmFsIGVudHJ5IHVubW9kaWZpZWQgd2hlbiB1bmRlciB0aGUgbGltaXQsIG9yIGFcbiAgICogc2hhbGxvdyBjb3B5IHdpdGggYGRhdGFgIHJlcGxhY2VkIHdoZW4gdHJ1bmNhdGlvbiBpcyBuZWVkZWQuXG4gICAqL1xuICBwcml2YXRlIGVuZm9yY2VFbnRyeVNpemUoZW50cnk6IFVuaWZpZWRMb2dFbnRyeSk6IFVuaWZpZWRMb2dFbnRyeSB7XG4gICAgaWYgKCFlbnRyeS5kYXRhKSByZXR1cm4gZW50cnk7XG5cbiAgICBjb25zdCBzZXJpYWxpemVkID0gSlNPTi5zdHJpbmdpZnkoZW50cnkpO1xuICAgIGlmIChzZXJpYWxpemVkLmxlbmd0aCA8PSB0aGlzLmNvbmZpZy5tYXhFbnRyeVNpemUpIHJldHVybiBlbnRyeTtcblxuICAgIGNvbnN0IG9yaWdpbmFsU2l6ZSA9IHNlcmlhbGl6ZWQubGVuZ3RoO1xuXG4gICAgLy8gRW1pdCBhIHdhcm4gbWV0YS1lbnRyeSBhYm91dCB0aGUgdHJ1bmNhdGlvblxuICAgIGNvbnN0IHRydW5jYXRpb25Ob3RpY2UgPSB0aGlzLmNyZWF0ZU1ldGFFbnRyeShcbiAgICAgICd3YXJuJyxcbiAgICAgIGBFbnRyeSB0cnVuY2F0ZWQ6IG9yaWdpbmFsIHNpemUgJHtvcmlnaW5hbFNpemV9IGJ5dGVzIGV4Y2VlZHMgbGltaXQgJHt0aGlzLmNvbmZpZy5tYXhFbnRyeVNpemV9YCxcbiAgICAgIHsgb3JpZ2luYWxTaXplLCBtYXhTaXplOiB0aGlzLmNvbmZpZy5tYXhFbnRyeVNpemUsIGVudHJ5SWQ6IGVudHJ5LmlkIH0sXG4gICAgKTtcbiAgICBmb3IgKGNvbnN0IHNpbmsgb2YgdGhpcy5zaW5rcykge1xuICAgICAgc2luay53cml0ZSh0cnVuY2F0aW9uTm90aWNlKTtcbiAgICB9XG5cbiAgICAvLyBSZXR1cm4gYSBjb3B5IHdpdGggZGF0YSByZXBsYWNlZCBieSBhIHRydW5jYXRpb24gbWFya2VyXG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLmVudHJ5LFxuICAgICAgZGF0YTogeyBfdHJ1bmNhdGVkOiB0cnVlLCBfb3JpZ2luYWxTaXplOiBvcmlnaW5hbFNpemUgfSxcbiAgICB9O1xuICB9XG5cbiAgLyoqIENyZWF0ZSBhIG1ldGEvc3lzdGVtIGxvZyBlbnRyeSBmcm9tIHRoZSBMb2dNYW5hZ2VyIGl0c2VsZi4gKi9cbiAgcHJpdmF0ZSBjcmVhdGVNZXRhRW50cnkoXG4gICAgbGV2ZWw6IExvZ0xldmVsLFxuICAgIG1lc3NhZ2U6IHN0cmluZyxcbiAgICBkYXRhPzogUmVjb3JkPHN0cmluZywgdW5rbm93bj4sXG4gICk6IFVuaWZpZWRMb2dFbnRyeSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGlkOiB0aGlzLmdlbmVyYXRlSWQoKSxcbiAgICAgIHRpbWVzdGFtcDogbmV3IERhdGUoKS50b0lTT1N0cmluZygpLFxuICAgICAgY2F0ZWdvcnk6ICdhcHBsaWNhdGlvbicsXG4gICAgICBsZXZlbCxcbiAgICAgIHNvdXJjZTogJ0xvZ01hbmFnZXInLFxuICAgICAgbWVzc2FnZSxcbiAgICAgIGRhdGEsXG4gICAgfTtcbiAgfVxufVxuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIEhlbHBlcjogYnVpbGQgTG9nTWFuYWdlckNvbmZpZyBmcm9tIHZhbGlkYXRlZCBlbnYgdmFyc1xuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbi8qKlxuICogTWFwIHRoZSBmbGF0IGVudiBvYmplY3QgKGZyb20gWm9kLXBhcnNlZCBgcHJvY2Vzcy5lbnZgKSB0byBhIHR5cGVkXG4gKiBgTG9nTWFuYWdlckNvbmZpZ2AuIEtlZXBzIHRoZSBtYXBwaW5nIGluIG9uZSBwbGFjZSBzbyB0aGUgREkgY29udGFpbmVyXG4gKiBvbmx5IG5lZWRzIGBidWlsZExvZ01hbmFnZXJDb25maWcoZW52KWAuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBidWlsZExvZ01hbmFnZXJDb25maWcoZW52VmFyczoge1xuICBET0xMSE9VU0VfTE9HX0RJUjogc3RyaW5nO1xuICBET0xMSE9VU0VfTE9HX0ZPUk1BVDogJ3RleHQnIHwgJ2pzb25sJztcbiAgRE9MTEhPVVNFX0xPR19SRVRFTlRJT05fREFZUzogbnVtYmVyO1xuICBET0xMSE9VU0VfTE9HX1NFQ1VSSVRZX1JFVEVOVElPTl9EQVlTOiBudW1iZXI7XG4gIERPTExIT1VTRV9MT0dfRkxVU0hfSU5URVJWQUxfTVM6IG51bWJlcjtcbiAgRE9MTEhPVVNFX0xPR19CVUZGRVJfU0laRTogbnVtYmVyO1xuICBET0xMSE9VU0VfTE9HX01FTU9SWV9DQVBBQ0lUWTogbnVtYmVyO1xuICBET0xMSE9VU0VfTE9HX01FTU9SWV9BUFBfQ0FQQUNJVFk6IG51bWJlcjtcbiAgRE9MTEhPVVNFX0xPR19NRU1PUllfU0VDVVJJVFlfQ0FQQUNJVFk6IG51bWJlcjtcbiAgRE9MTEhPVVNFX0xPR19NRU1PUllfUEVSRl9DQVBBQ0lUWTogbnVtYmVyO1xuICBET0xMSE9VU0VfTE9HX01FTU9SWV9URUxFTUVUUllfQ0FQQUNJVFk6IG51bWJlcjtcbiAgRE9MTEhPVVNFX0xPR19NQVhfRU5UUllfU0laRTogbnVtYmVyO1xuICBET0xMSE9VU0VfTE9HX0lNTUVESUFURV9GTFVTSF9SQVRFOiBudW1iZXI7XG4gIERPTExIT1VTRV9MT0dfRklMRV9NQVhfU0laRTogbnVtYmVyO1xuICBET0xMSE9VU0VfTE9HX01BWF9ESVJfU0laRV9CWVRFUzogbnVtYmVyO1xuICBET0xMSE9VU0VfTE9HX01BWF9GSUxFU19QRVJfQ0FURUdPUlk6IG51bWJlcjtcbiAgTE9HX0xFVkVMOiAnZGVidWcnIHwgJ2luZm8nIHwgJ3dhcm4nIHwgJ2Vycm9yJztcbn0pOiBMb2dNYW5hZ2VyQ29uZmlnIHtcbiAgcmV0dXJuIHtcbiAgICBsb2dEaXI6IGVudlZhcnMuRE9MTEhPVVNFX0xPR19ESVIsXG4gICAgbG9nRm9ybWF0OiBlbnZWYXJzLkRPTExIT1VTRV9MT0dfRk9STUFULFxuICAgIHJldGVudGlvbkRheXM6IGVudlZhcnMuRE9MTEhPVVNFX0xPR19SRVRFTlRJT05fREFZUyxcbiAgICBzZWN1cml0eVJldGVudGlvbkRheXM6IGVudlZhcnMuRE9MTEhPVVNFX0xPR19TRUNVUklUWV9SRVRFTlRJT05fREFZUyxcbiAgICBmbHVzaEludGVydmFsTXM6IGVudlZhcnMuRE9MTEhPVVNFX0xPR19GTFVTSF9JTlRFUlZBTF9NUyxcbiAgICBidWZmZXJTaXplOiBlbnZWYXJzLkRPTExIT1VTRV9MT0dfQlVGRkVSX1NJWkUsXG4gICAgbWVtb3J5Q2FwYWNpdHk6IGVudlZhcnMuRE9MTEhPVVNFX0xPR19NRU1PUllfQ0FQQUNJVFksXG4gICAgbWVtb3J5QXBwQ2FwYWNpdHk6IGVudlZhcnMuRE9MTEhPVVNFX0xPR19NRU1PUllfQVBQX0NBUEFDSVRZLFxuICAgIG1lbW9yeVNlY3VyaXR5Q2FwYWNpdHk6IGVudlZhcnMuRE9MTEhPVVNFX0xPR19NRU1PUllfU0VDVVJJVFlfQ0FQQUNJVFksXG4gICAgbWVtb3J5UGVyZkNhcGFjaXR5OiBlbnZWYXJzLkRPTExIT1VTRV9MT0dfTUVNT1JZX1BFUkZfQ0FQQUNJVFksXG4gICAgbWVtb3J5VGVsZW1ldHJ5Q2FwYWNpdHk6IGVudlZhcnMuRE9MTEhPVVNFX0xPR19NRU1PUllfVEVMRU1FVFJZX0NBUEFDSVRZLFxuICAgIG1heEVudHJ5U2l6ZTogZW52VmFycy5ET0xMSE9VU0VfTE9HX01BWF9FTlRSWV9TSVpFLFxuICAgIGltbWVkaWF0ZUZsdXNoUmF0ZTogZW52VmFycy5ET0xMSE9VU0VfTE9HX0lNTUVESUFURV9GTFVTSF9SQVRFLFxuICAgIGZpbGVNYXhTaXplOiBlbnZWYXJzLkRPTExIT1VTRV9MT0dfRklMRV9NQVhfU0laRSxcbiAgICBtYXhEaXJTaXplQnl0ZXM6IGVudlZhcnMuRE9MTEhPVVNFX0xPR19NQVhfRElSX1NJWkVfQllURVMsXG4gICAgbWF4RmlsZXNQZXJDYXRlZ29yeTogZW52VmFycy5ET0xMSE9VU0VfTE9HX01BWF9GSUxFU19QRVJfQ0FURUdPUlksXG4gICAgbG9nTGV2ZWw6IGVudlZhcnMuTE9HX0xFVkVMLFxuICB9O1xufVxuIl19
@@ -7,6 +7,7 @@ export interface MemoryLogSinkOptions {
7
7
  }
8
8
  export declare class MemoryLogSink implements ILogSink {
9
9
  private readonly queues;
10
+ private readonly evictionCounts;
10
11
  constructor(options: MemoryLogSinkOptions);
11
12
  write(entry: UnifiedLogEntry): void;
12
13
  flush(): Promise<void>;
@@ -15,6 +16,7 @@ export declare class MemoryLogSink implements ILogSink {
15
16
  getStats(): Record<LogCategory, {
16
17
  size: number;
17
18
  capacity: number;
19
+ evictions: number;
18
20
  }>;
19
21
  }
20
22
  //# sourceMappingURL=MemoryLogSink.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"MemoryLogSink.d.ts","sourceRoot":"","sources":["../../../src/logging/sinks/MemoryLogSink.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,QAAQ,EACR,WAAW,EACX,eAAe,EACf,cAAc,EACd,eAAe,EAChB,MAAM,aAAa,CAAC;AAGrB,MAAM,WAAW,oBAAoB;IACnC,WAAW,EAAE,MAAM,CAAC;IACpB,gBAAgB,EAAE,MAAM,CAAC;IACzB,YAAY,EAAE,MAAM,CAAC;IACrB,iBAAiB,EAAE,MAAM,CAAC;CAC3B;AASD,qBAAa,aAAc,YAAW,QAAQ;IAC5C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAmD;gBAE9D,OAAO,EAAE,oBAAoB;IAUzC,KAAK,CAAC,KAAK,EAAE,eAAe,GAAG,IAAI;IAO7B,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAItB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAM5B,KAAK,CAAC,OAAO,CAAC,EAAE,eAAe,GAAG,cAAc;IAkEhD,QAAQ,IAAI,MAAM,CAAC,WAAW,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC;CAOpE"}
1
+ {"version":3,"file":"MemoryLogSink.d.ts","sourceRoot":"","sources":["../../../src/logging/sinks/MemoryLogSink.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,QAAQ,EACR,WAAW,EACX,eAAe,EACf,cAAc,EACd,eAAe,EAChB,MAAM,aAAa,CAAC;AAGrB,MAAM,WAAW,oBAAoB;IACnC,WAAW,EAAE,MAAM,CAAC;IACpB,gBAAgB,EAAE,MAAM,CAAC;IACzB,YAAY,EAAE,MAAM,CAAC;IACrB,iBAAiB,EAAE,MAAM,CAAC;CAC3B;AASD,qBAAa,aAAc,YAAW,QAAQ;IAC5C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAmD;IAC1E,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAuC;gBAE1D,OAAO,EAAE,oBAAoB;IAWzC,KAAK,CAAC,KAAK,EAAE,eAAe,GAAG,IAAI;IAa7B,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAItB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAM5B,KAAK,CAAC,OAAO,CAAC,EAAE,eAAe,GAAG,cAAc;IAkEhD,QAAQ,IAAI,MAAM,CAAC,WAAW,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC;CAWvF"}
@@ -8,15 +8,20 @@ const CATEGORY_KEY = {
8
8
  };
9
9
  export class MemoryLogSink {
10
10
  queues;
11
+ evictionCounts = new Map();
11
12
  constructor(options) {
12
13
  this.queues = new Map();
13
14
  for (const [category, key] of Object.entries(CATEGORY_KEY)) {
14
15
  this.queues.set(category, new EvictingQueue(options[key]));
16
+ this.evictionCounts.set(category, 0);
15
17
  }
16
18
  }
17
19
  write(entry) {
18
20
  const queue = this.queues.get(entry.category);
19
21
  if (queue) {
22
+ if (queue.size >= queue.capacity) {
23
+ this.evictionCounts.set(entry.category, (this.evictionCounts.get(entry.category) ?? 0) + 1);
24
+ }
20
25
  queue.push(entry);
21
26
  }
22
27
  }
@@ -30,7 +35,7 @@ export class MemoryLogSink {
30
35
  }
31
36
  query(options) {
32
37
  const category = options?.category ?? 'all';
33
- const limit = Math.max(1, Math.min(options?.limit ?? 50, 500));
38
+ const limit = Math.max(1, Math.min(options?.limit ?? 50, 10000));
34
39
  const offset = Math.max(0, options?.offset ?? 0);
35
40
  // 1. Select queues
36
41
  const selectedQueues = [];
@@ -91,9 +96,13 @@ export class MemoryLogSink {
91
96
  getStats() {
92
97
  const stats = {};
93
98
  for (const [category, queue] of this.queues) {
94
- stats[category] = { size: queue.size, capacity: queue.capacity };
99
+ stats[category] = {
100
+ size: queue.size,
101
+ capacity: queue.capacity,
102
+ evictions: this.evictionCounts.get(category) ?? 0,
103
+ };
95
104
  }
96
105
  return stats;
97
106
  }
98
107
  }
99
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTWVtb3J5TG9nU2luay5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9sb2dnaW5nL3NpbmtzL01lbW9yeUxvZ1NpbmsudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBUTdELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQVNqRCxNQUFNLFlBQVksR0FBb0Q7SUFDcEUsV0FBVyxFQUFFLGFBQWE7SUFDMUIsUUFBUSxFQUFFLGtCQUFrQjtJQUM1QixXQUFXLEVBQUUsY0FBYztJQUMzQixTQUFTLEVBQUUsbUJBQW1CO0NBQy9CLENBQUM7QUFFRixNQUFNLE9BQU8sYUFBYTtJQUNQLE1BQU0sQ0FBbUQ7SUFFMUUsWUFBWSxPQUE2QjtRQUN2QyxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksR0FBRyxFQUErQyxDQUFDO1FBQ3JFLEtBQUssTUFBTSxDQUFDLFFBQVEsRUFBRSxHQUFHLENBQUMsSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUM7WUFDM0QsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQ2IsUUFBdUIsRUFDdkIsSUFBSSxhQUFhLENBQWtCLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUNqRCxDQUFDO1FBQ0osQ0FBQztJQUNILENBQUM7SUFFRCxLQUFLLENBQUMsS0FBc0I7UUFDMUIsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQzlDLElBQUksS0FBSyxFQUFFLENBQUM7WUFDVixLQUFLLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3BCLENBQUM7SUFDSCxDQUFDO0lBRUQsS0FBSyxDQUFDLEtBQUs7UUFDVCx1Q0FBdUM7SUFDekMsQ0FBQztJQUVELEtBQUssQ0FBQyxLQUFLO1FBQ1Qs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QUUsQ0FBQztZQUM1QyxLQUFLLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRSxJQUFJLEVBQUUsS0FBSyxDQUFDLElBQUksRUFBRSxRQUFRLEVBQUUsS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ25FLENBQUM7UUFDRCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEV2aWN0aW5nUXVldWUgfSBmcm9tICcuLi8uLi91dGlscy9FdmljdGluZ1F1ZXVlLmpzJztcbmltcG9ydCB0eXBlIHtcbiAgSUxvZ1NpbmssXG4gIExvZ0NhdGVnb3J5LFxuICBMb2dRdWVyeU9wdGlvbnMsXG4gIExvZ1F1ZXJ5UmVzdWx0LFxuICBVbmlmaWVkTG9nRW50cnksXG59IGZyb20gJy4uL3R5cGVzLmpzJztcbmltcG9ydCB7IExPR19MRVZFTF9QUklPUklUWSB9IGZyb20gJy4uL3R5cGVzLmpzJztcblxuZXhwb3J0IGludGVyZmFjZSBNZW1vcnlMb2dTaW5rT3B0aW9ucyB7XG4gIGFwcENhcGFjaXR5OiBudW1iZXI7XG4gIHNlY3VyaXR5Q2FwYWNpdHk6IG51bWJlcjtcbiAgcGVyZkNhcGFjaXR5OiBudW1iZXI7XG4gIHRlbGVtZXRyeUNhcGFjaXR5OiBudW1iZXI7XG59XG5cbmNvbnN0IENBVEVHT1JZX0tFWTogUmVjb3JkPExvZ0NhdGVnb3J5LCBrZXlvZiBNZW1vcnlMb2dTaW5rT3B0aW9ucz4gPSB7XG4gIGFwcGxpY2F0aW9uOiAnYXBwQ2FwYWNpdHknLFxuICBzZWN1cml0eTogJ3NlY3VyaXR5Q2FwYWNpdHknLFxuICBwZXJmb3JtYW5jZTogJ3BlcmZDYXBhY2l0eScsXG4gIHRlbGVtZXRyeTogJ3RlbGVtZXRyeUNhcGFjaXR5Jyxcbn07XG5cbmV4cG9ydCBjbGFzcyBNZW1vcnlMb2dTaW5rIGltcGxlbWVudHMgSUxvZ1Npbmsge1xuICBwcml2YXRlIHJlYWRvbmx5IHF1ZXVlczogTWFwPExvZ0NhdGVnb3J5LCBFdmljdGluZ1F1ZXVlPFVuaWZpZWRMb2dFbnRyeT4+O1xuXG4gIGNvbnN0cnVjdG9yKG9wdGlvbnM6IE1lbW9yeUxvZ1NpbmtPcHRpb25zKSB7XG4gICAgdGhpcy5xdWV1ZXMgPSBuZXcgTWFwPExvZ0NhdGVnb3J5LCBFdmljdGluZ1F1ZXVlPFVuaWZpZWRMb2dFbnRyeT4+KCk7XG4gICAgZm9yIChjb25zdCBbY2F0ZWdvcnksIGtleV0gb2YgT2JqZWN0LmVudHJpZXMoQ0FURUdPUllfS0VZKSkge1xuICAgICAgdGhpcy5xdWV1ZXMuc2V0KFxuICAgICAgICBjYXRlZ29yeSBhcyBMb2dDYXRlZ29yeSxcbiAgICAgICAgbmV3IEV2aWN0aW5nUXVldWU8VW5pZmllZExvZ0VudHJ5PihvcHRpb25zW2tleV0pLFxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICB3cml0ZShlbnRyeTogVW5pZmllZExvZ0VudHJ5KTogdm9pZCB7XG4gICAgY29uc3QgcXVldWUgPSB0aGlzLnF1ZXVlcy5nZXQoZW50cnkuY2F0ZWdvcnkpO1xuICAgIGlmIChxdWV1ZSkge1xuICAgICAgcXVldWUucHVzaChlbnRyeSk7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgZmx1c2goKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgLy8gTm8tb3Ag4oCUIGluLW1lbW9yeSwgbm90aGluZyB0byBmbHVzaC5cbiAgfVxuXG4gIGFzeW5jIGNsb3NlKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGZvciAoY29uc3QgcXVldWUgb2YgdGhpcy5xdWV1ZXMudmFsdWVzKCkpIHtcbiAgICAgIHF1ZXVlLmNsZWFyKCk7XG4gICAgfVxuICB9XG5cbiAgcXVlcnkob3B0aW9ucz86IExvZ1F1ZXJ5T3B0aW9ucyk6IExvZ1F1ZXJ5UmVzdWx0IHtcbiAgICBjb25zdCBjYXRlZ29yeSA9IG9wdGlvbnM/LmNhdGVnb3J5ID8/ICdhbGwnO1xuICAgIGNvbnN0IGxpbWl0ID0gTWF0aC5tYXgoMSwgTWF0aC5taW4ob3B0aW9ucz8ubGltaXQgPz8gNTAsIDUwMCkpO1xuICAgIGNvbnN0IG9mZnNldCA9IE1hdGgubWF4KDAsIG9wdGlvbnM/Lm9mZnNldCA/PyAwKTtcblxuICAgIC8vIDEuIFNlbGVjdCBxdWV1ZXNcbiAgICBjb25zdCBzZWxlY3RlZFF1ZXVlczogRXZpY3RpbmdRdWV1ZTxVbmlmaWVkTG9nRW50cnk+W10gPSBbXTtcbiAgICBpZiAoY2F0ZWdvcnkgPT09ICdhbGwnKSB7XG4gICAgICBmb3IgKGNvbnN0IHEgb2YgdGhpcy5xdWV1ZXMudmFsdWVzKCkpIHtcbiAgICAgICAgc2VsZWN0ZWRRdWV1ZXMucHVzaChxKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgcSA9IHRoaXMucXVldWVzLmdldChjYXRlZ29yeSk7XG4gICAgICBpZiAocSkgc2VsZWN0ZWRRdWV1ZXMucHVzaChxKTtcbiAgICB9XG5cbiAgICAvLyAyLiBDb2xsZWN0IGVudHJpZXMgZnJvbSBzZWxlY3RlZCBxdWV1ZXNcbiAgICBsZXQgZW50cmllczogVW5pZmllZExvZ0VudHJ5W10gPSBbXTtcbiAgICBmb3IgKGNvbnN0IHEgb2Ygc2VsZWN0ZWRRdWV1ZXMpIHtcbiAgICAgIGVudHJpZXMucHVzaCguLi5xLnRvQXJyYXkoKSk7XG4gICAgfVxuXG4gICAgLy8gMy4gQXBwbHkgZmlsdGVycyBjb25qdW5jdGl2ZWx5XG4gICAgaWYgKG9wdGlvbnM/LmxldmVsKSB7XG4gICAgICBjb25zdCBtaW5Qcmlvcml0eSA9IExPR19MRVZFTF9QUklPUklUWVtvcHRpb25zLmxldmVsXTtcbiAgICAgIGVudHJpZXMgPSBlbnRyaWVzLmZpbHRlcihlID0+IExPR19MRVZFTF9QUklPUklUWVtlLmxldmVsXSA+PSBtaW5Qcmlvcml0eSk7XG4gICAgfVxuICAgIGlmIChvcHRpb25zPy5zb3VyY2UpIHtcbiAgICAgIGNvbnN0IG5lZWRsZSA9IG9wdGlvbnMuc291cmNlLnRvTG93ZXJDYXNlKCk7XG4gICAgICBlbnRyaWVzID0gZW50cmllcy5maWx0ZXIoZSA9PiBlLnNvdXJjZS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKG5lZWRsZSkpO1xuICAgIH1cbiAgICBpZiAob3B0aW9ucz8ubWVzc2FnZSkge1xuICAgICAgY29uc3QgbmVlZGxlID0gb3B0aW9ucy5tZXNzYWdlLnRvTG93ZXJDYXNlKCk7XG4gICAgICBlbnRyaWVzID0gZW50cmllcy5maWx0ZXIoZSA9PiBlLm1lc3NhZ2UudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhuZWVkbGUpKTtcbiAgICB9XG4gICAgaWYgKG9wdGlvbnM/LnNpbmNlKSB7XG4gICAgICBjb25zdCBzaW5jZSA9IG9wdGlvbnMuc2luY2U7XG4gICAgICBlbnRyaWVzID0gZW50cmllcy5maWx0ZXIoZSA9PiBlLnRpbWVzdGFtcCA+IHNpbmNlKTtcbiAgICB9XG4gICAgaWYgKG9wdGlvbnM/LnVudGlsKSB7XG4gICAgICBjb25zdCB1bnRpbCA9IG9wdGlvbnMudW50aWw7XG4gICAgICBlbnRyaWVzID0gZW50cmllcy5maWx0ZXIoZSA9PiBlLnRpbWVzdGFtcCA8IHVudGlsKTtcbiAgICB9XG4gICAgaWYgKG9wdGlvbnM/LmNvcnJlbGF0aW9uSWQpIHtcbiAgICAgIGNvbnN0IGNvcnJJZCA9IG9wdGlvbnMuY29ycmVsYXRpb25JZDtcbiAgICAgIGVudHJpZXMgPSBlbnRyaWVzLmZpbHRlcihlID0+IGUuY29ycmVsYXRpb25JZCA9PT0gY29ycklkKTtcbiAgICB9XG5cbiAgICAvLyA0LiBDb3VudCB0b3RhbCBiZWZvcmUgcGFnaW5hdGlvblxuICAgIGNvbnN0IHRvdGFsID0gZW50cmllcy5sZW5ndGg7XG5cbiAgICAvLyA1LiBTb3J0IG5ld2VzdC1maXJzdCAoZGVzY2VuZGluZyB0aW1lc3RhbXApXG4gICAgZW50cmllcy5zb3J0KChhLCBiKSA9PiAoYS50aW1lc3RhbXAgPiBiLnRpbWVzdGFtcCA/IC0xIDogYS50aW1lc3RhbXAgPCBiLnRpbWVzdGFtcCA/IDEgOiAwKSk7XG5cbiAgICAvLyA2LiBQYWdpbmF0ZVxuICAgIGVudHJpZXMgPSBlbnRyaWVzLnNsaWNlKG9mZnNldCwgb2Zmc2V0ICsgbGltaXQpO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIGVudHJpZXMsXG4gICAgICB0b3RhbCxcbiAgICAgIGhhc01vcmU6IG9mZnNldCArIGxpbWl0IDwgdG90YWwsXG4gICAgICBsaW1pdCxcbiAgICAgIG9mZnNldCxcbiAgICB9O1xuICB9XG5cbiAgZ2V0U3RhdHMoKTogUmVjb3JkPExvZ0NhdGVnb3J5LCB7IHNpemU6IG51bWJlcjsgY2FwYWNpdHk6IG51bWJlciB9PiB7XG4gICAgY29uc3Qgc3RhdHMgPSB7fSBhcyBSZWNvcmQ8TG9nQ2F0ZWdvcnksIHsgc2l6ZTogbnVtYmVyOyBjYXBhY2l0eTogbnVtYmVyIH0+O1xuICAgIGZvciAoY29uc3QgW2NhdGVnb3J5LCBxdWV1ZV0gb2YgdGhpcy5xdWV1ZXMpIHtcbiAgICAgIHN0YXRzW2NhdGVnb3J5XSA9IHsgc2l6ZTogcXVldWUuc2l6ZSwgY2FwYWNpdHk6IHF1ZXVlLmNhcGFjaXR5IH07XG4gICAgfVxuICAgIHJldHVybiBzdGF0cztcbiAgfVxufVxuIl19
108
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTWVtb3J5TG9nU2luay5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9sb2dnaW5nL3NpbmtzL01lbW9yeUxvZ1NpbmsudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBUTdELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQVNqRCxNQUFNLFlBQVksR0FBb0Q7SUFDcEUsV0FBVyxFQUFFLGFBQWE7SUFDMUIsUUFBUSxFQUFFLGtCQUFrQjtJQUM1QixXQUFXLEVBQUUsY0FBYztJQUMzQixTQUFTLEVBQUUsbUJBQW1CO0NBQy9CLENBQUM7QUFFRixNQUFNLE9BQU8sYUFBYTtJQUNQLE1BQU0sQ0FBbUQ7SUFDekQsY0FBYyxHQUE2QixJQUFJLEdBQUcsRUFBRSxDQUFDO0lBRXRFLFlBQVksT0FBNkI7UUFDdkMsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLEdBQUcsRUFBK0MsQ0FBQztRQUNyRSxLQUFLLE1BQU0sQ0FBQyxRQUFRLEVBQUUsR0FBRyxDQUFDLElBQUksTUFBTSxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDO1lBQzNELElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUNiLFFBQXVCLEVBQ3ZCLElBQUksYUFBYSxDQUFrQixPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FDakQsQ0FBQztZQUNGLElBQUksQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLFFBQXVCLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDdEQsQ0FBQztJQUNILENBQUM7SUFFRCxLQUFLLENBQUMsS0FBc0I7UUFDMUIsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQzlDLElBQUksS0FBSyxFQUFFLENBQUM7WUFDVixJQUFJLEtBQUssQ0FBQyxJQUFJLElBQUks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LENBQUMsQ0FBQyxDQUFDO1FBRTdGLGNBQWM7UUFDZCxPQUFPLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsTUFBTSxHQUFHLEtBQUssQ0FBQyxDQUFDO1FBRWhELE9BQU87WUFDTCxPQUFPO1lBQ1AsS0FBSztZQUNMLE9BQU8sRUFBRSxNQUFNLEdBQUcsS0FBSyxHQUFHLEtBQUs7WUFDL0IsS0FBSztZQUNMLE1BQU07U0FDUCxDQUFDO0lBQ0osQ0FBQztJQUVELFFBQVE7UUFDTixNQUFNLEtBQUssR0FBRyxFQUFnRixDQUFDO1FBQy9GLEtBQUssTUFBTSxDQUFDLFFBQVEsRUFBRSxLQUFLLENBQUMsSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDNUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxHQUFHO2dCQUNoQixJQUFJLEVBQUUsS0FBSyxDQUFDLElBQUk7Z0JBQ2hCLFFBQVEsRUFBRSxLQUFLLENBQUMsUUFBUTtnQkFDeEIsU0FBUyxFQUFFLElBQUksQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUM7YUFDbEQsQ0FBQztRQUNKLENBQUM7UUFDRCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEV2aWN0aW5nUXVldWUgfSBmcm9tICcuLi8uLi91dGlscy9FdmljdGluZ1F1ZXVlLmpzJztcbmltcG9ydCB0eXBlIHtcbiAgSUxvZ1NpbmssXG4gIExvZ0NhdGVnb3J5LFxuICBMb2dRdWVyeU9wdGlvbnMsXG4gIExvZ1F1ZXJ5UmVzdWx0LFxuICBVbmlmaWVkTG9nRW50cnksXG59IGZyb20gJy4uL3R5cGVzLmpzJztcbmltcG9ydCB7IExPR19MRVZFTF9QUklPUklUWSB9IGZyb20gJy4uL3R5cGVzLmpzJztcblxuZXhwb3J0IGludGVyZmFjZSBNZW1vcnlMb2dTaW5rT3B0aW9ucyB7XG4gIGFwcENhcGFjaXR5OiBudW1iZXI7XG4gIHNlY3VyaXR5Q2FwYWNpdHk6IG51bWJlcjtcbiAgcGVyZkNhcGFjaXR5OiBudW1iZXI7XG4gIHRlbGVtZXRyeUNhcGFjaXR5OiBudW1iZXI7XG59XG5cbmNvbnN0IENBVEVHT1JZX0tFWTogUmVjb3JkPExvZ0NhdGVnb3J5LCBrZXlvZiBNZW1vcnlMb2dTaW5rT3B0aW9ucz4gPSB7XG4gIGFwcGxpY2F0aW9uOiAnYXBwQ2FwYWNpdHknLFxuICBzZWN1cml0eTogJ3NlY3VyaXR5Q2FwYWNpdHknLFxuICBwZXJmb3JtYW5jZTogJ3BlcmZDYXBhY2l0eScsXG4gIHRlbGVtZXRyeTogJ3RlbGVtZXRyeUNhcGFjaXR5Jyxcbn07XG5cbmV4cG9ydCBjbGFzcyBNZW1vcnlMb2dTaW5rIGltcGxlbWVudHMgSUxvZ1Npbmsge1xuICBwcml2YXRlIHJlYWRvbmx5IHF1ZXVlczogTWFwPExvZ0NhdGVnb3J5LCBFdmljdGluZ1F1ZXVlPFVuaWZpZWRMb2dFbnRyeT4+O1xuICBwcml2YXRlIHJlYWRvbmx5IGV2aWN0aW9uQ291bnRzOiBNYXA8TG9nQ2F0ZWdvcnksIG51bWJlcj4gPSBuZXcgTWFwKCk7XG5cbiAgY29uc3RydWN0b3Iob3B0aW9uczogTWVtb3J5TG9nU2lua09wdGlvbnMpIHtcbiAgICB0aGlzLnF1ZXVlcyA9IG5ldyBNYXA8TG9nQ2F0ZWdvcnksIEV2aWN0aW5nUXVldWU8VW5pZmllZExvZ0VudHJ5Pj4oKTtcbiAgICBmb3IgKGNvbnN0IFtjYXRlZ29yeSwga2V5XSBvZiBPYmplY3QuZW50cmllcyhDQVRFR09SWV9LRVkpKSB7XG4gICAgICB0aGlzLnF1ZXVlcy5zZXQoXG4gICAgICAgIGNhdGVnb3J5IGFzIExvZ0NhdGVnb3J5LFxuICAgICAgICBuZXcgRXZpY3RpbmdRdWV1ZTxVbmlmaWVkTG9nRW50cnk+KG9wdGlvbnNba2V5XSksXG4gICAgICApO1xuICAgICAgdGhpcy5ldmljdGlvbkNvdW50cy5zZXQoY2F0ZWdvcnkgYXMgTG9nQ2F0ZWdvcnksIDApO1xuICAgIH1cbiAgfVxuXG4gIHdyaXRlKGVudHJ5OiBVbmlmaWVkTG9nRW50cnkpOiB2b2lkIHtcbiAgICBjb25zdCBxdWV1ZSA9IHRoaXMucXVldWVzLmdldChlbnRyeS5jYXRlZ29yeSk7XG4gICAgaWYgKHF1ZXVlKSB7XG4gICAgICBpZiAocXVldWUuc2l6ZSA+PSBxdWV1ZS5jYXBhY2l0eSkge1xuICAgICAgICB0aGlzLmV2aWN0aW9uQ291bnRzLnNldChcbiAgICAgICAgICBlbnRyeS5jYXRlZ29yeSxcbiAgICAgICAgICAodGhpcy5ldmljdGlvbkNvdW50cy5nZXQoZW50cnkuY2F0ZWdvcnkpID8/IDApICsgMSxcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgIHF1ZXVlLnB1c2goZW50cnkpO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIGZsdXNoKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIC8vIE5vLW9wIOKAlCBpbi1tZW1vcnksIG5vdGhpbmcgdG8gZmx1c2guXG4gIH1cblxuICBhc3luYyBjbG9zZSgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBmb3IgKGNvbnN0IHF1ZXVlIG9mIHRoaXMucXVldWVzLnZhbHVlcygpKSB7XG4gICAgICBxdWV1ZS5jbGVhcigpO1xuICAgIH1cbiAgfVxuXG4gIHF1ZXJ5KG9wdGlvbnM/OiBMb2dRdWVyeU9wdGlvbnMpOiBMb2dRdWVyeVJlc3VsdCB7XG4gICAgY29uc3QgY2F0ZWdvcnkgPSBvcHRpb25zPy5jYXRlZ29yeSA/PyAnYWxsJztcbiAgICBjb25zdCBsaW1pdCA9IE1hdGgubWF4KDEsIE1hdGgubWluKG9wdGlvbnM/LmxpbWl0ID8/IDUwLCAxMDAwMCkpO1xuICAgIGNvbnN0IG9mZnNldCA9IE1hdGgubWF4KDAsIG9wdGlvbnM/Lm9mZnNldCA/PyAwKTtcblxuICAgIC8vIDEuIFNlbGVjdCBxdWV1ZXNcbiAgICBjb25zdCBzZWxlY3RlZFF1ZXVlczogRXZpY3RpbmdRdWV1ZTxVbmlmaWVkTG9nRW50cnk+W10gPSBbXTtcbiAgICBpZiAoY2F0ZWdvcnkgPT09ICdhbGwnKSB7XG4gICAgICBmb3IgKGNvbnN0IHEgb2YgdGhpcy5xdWV1ZXMudmFsdWVzKCkpIHtcbiAgICAgICAgc2VsZWN0ZWRRdWV1ZXMucHVzaChxKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgcSA9IHRoaXMucXVldWVzLmdldChjYXRlZ29yeSk7XG4gICAgICBpZiAocSkgc2VsZWN0ZWRRdWV1ZXMucHVzaChxKTtcbiAgICB9XG5cbiAgICAvLyAyLiBDb2xsZWN0IGVudHJpZXMgZnJvbSBzZWxlY3RlZCBxdWV1ZXNcbiAgICBsZXQgZW50cmllczogVW5pZmllZExvZ0VudHJ5W10gPSBbXTtcbiAgICBmb3IgKGNvbnN0IHEgb2Ygc2VsZWN0ZWRRdWV1ZXMpIHtcbiAgICAgIGVudHJpZXMucHVzaCguLi5xLnRvQXJyYXkoKSk7XG4gICAgfVxuXG4gICAgLy8gMy4gQXBwbHkgZmlsdGVycyBjb25qdW5jdGl2ZWx5XG4gICAgaWYgKG9wdGlvbnM/LmxldmVsKSB7XG4gICAgICBjb25zdCBtaW5Qcmlvcml0eSA9IExPR19MRVZFTF9QUklPUklUWVtvcHRpb25zLmxldmVsXTtcbiAgICAgIGVudHJpZXMgPSBlbnRyaWVzLmZpbHRlcihlID0+IExPR19MRVZFTF9QUklPUklUWVtlLmxldmVsXSA+PSBtaW5Qcmlvcml0eSk7XG4gICAgfVxuICAgIGlmIChvcHRpb25zPy5zb3VyY2UpIHtcbiAgICAgIGNvbnN0IG5lZWRsZSA9IG9wdGlvbnMuc291cmNlLnRvTG93ZXJDYXNlKCk7XG4gICAgICBlbnRyaWVzID0gZW50cmllcy5maWx0ZXIoZSA9PiBlLnNvdXJjZS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKG5lZWRsZSkpO1xuICAgIH1cbiAgICBpZiAob3B0aW9ucz8ubWVzc2FnZSkge1xuICAgICAgY29uc3QgbmVlZGxlID0gb3B0aW9ucy5tZXNzYWdlLnRvTG93ZXJDYXNlKCk7XG4gICAgICBlbnRyaWVzID0gZW50cmllcy5maWx0ZXIoZSA9PiBlLm1lc3NhZ2UudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhuZWVkbGUpKTtcbiAgICB9XG4gICAgaWYgKG9wdGlvbnM/LnNpbmNlKSB7XG4gICAgICBjb25zdCBzaW5jZSA9IG9wdGlvbnMuc2luY2U7XG4gICAgICBlbnRyaWVzID0gZW50cmllcy5maWx0ZXIoZSA9PiBlLnRpbWVzdGFtcCA+IHNpbmNlKTtcbiAgICB9XG4gICAgaWYgKG9wdGlvbnM/LnVudGlsKSB7XG4gICAgICBjb25zdCB1bnRpbCA9IG9wdGlvbnMudW50aWw7XG4gICAgICBlbnRyaWVzID0gZW50cmllcy5maWx0ZXIoZSA9PiBlLnRpbWVzdGFtcCA8IHVudGlsKTtcbiAgICB9XG4gICAgaWYgKG9wdGlvbnM/LmNvcnJlbGF0aW9uSWQpIHtcbiAgICAgIGNvbnN0IGNvcnJJZCA9IG9wdGlvbnMuY29ycmVsYXRpb25JZDtcbiAgICAgIGVudHJpZXMgPSBlbnRyaWVzLmZpbHRlcihlID0+IGUuY29ycmVsYXRpb25JZCA9PT0gY29ycklkKTtcbiAgICB9XG5cbiAgICAvLyA0LiBDb3VudCB0b3RhbCBiZWZvcmUgcGFnaW5hdGlvblxuICAgIGNvbnN0IHRvdGFsID0gZW50cmllcy5sZW5ndGg7XG5cbiAgICAvLyA1LiBTb3J0IG5ld2VzdC1maXJzdCAoZGVzY2VuZGluZyB0aW1lc3RhbXApXG4gICAgZW50cmllcy5zb3J0KChhLCBiKSA9PiAoYS50aW1lc3RhbXAgPiBiLnRpbWVzdGFtcCA/IC0xIDogYS50aW1lc3RhbXAgPCBiLnRpbWVzdGFtcCA/IDEgOiAwKSk7XG5cbiAgICAvLyA2LiBQYWdpbmF0ZVxuICAgIGVudHJpZXMgPSBlbnRyaWVzLnNsaWNlKG9mZnNldCwgb2Zmc2V0ICsgbGltaXQpO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIGVudHJpZXMsXG4gICAgICB0b3RhbCxcbiAgICAgIGhhc01vcmU6IG9mZnNldCArIGxpbWl0IDwgdG90YWwsXG4gICAgICBsaW1pdCxcbiAgICAgIG9mZnNldCxcbiAgICB9O1xuICB9XG5cbiAgZ2V0U3RhdHMoKTogUmVjb3JkPExvZ0NhdGVnb3J5LCB7IHNpemU6IG51bWJlcjsgY2FwYWNpdHk6IG51bWJlcjsgZXZpY3Rpb25zOiBudW1iZXIgfT4ge1xuICAgIGNvbnN0IHN0YXRzID0ge30gYXMgUmVjb3JkPExvZ0NhdGVnb3J5LCB7IHNpemU6IG51bWJlcjsgY2FwYWNpdHk6IG51bWJlcjsgZXZpY3Rpb25zOiBudW1iZXIgfT47XG4gICAgZm9yIChjb25zdCBbY2F0ZWdvcnksIHF1ZXVlXSBvZiB0aGlzLnF1ZXVlcykge1xuICAgICAgc3RhdHNbY2F0ZWdvcnldID0ge1xuICAgICAgICBzaXplOiBxdWV1ZS5zaXplLFxuICAgICAgICBjYXBhY2l0eTogcXVldWUuY2FwYWNpdHksXG4gICAgICAgIGV2aWN0aW9uczogdGhpcy5ldmljdGlvbkNvdW50cy5nZXQoY2F0ZWdvcnkpID8/IDAsXG4gICAgICB9O1xuICAgIH1cbiAgICByZXR1cm4gc3RhdHM7XG4gIH1cbn1cbiJdfQ==
@@ -84,8 +84,6 @@ export interface LogManagerConfig {
84
84
  fileMaxSize: number;
85
85
  maxDirSizeBytes: number;
86
86
  maxFilesPerCategory: number;
87
- viewerEnabled: boolean;
88
- viewerPort: number;
89
87
  logLevel: LogLevel;
90
88
  }
91
89
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/logging/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH,MAAM,MAAM,WAAW,GAAG,aAAa,GAAG,UAAU,GAAG,aAAa,GAAG,WAAW,CAAC;AAEnF,MAAM,MAAM,QAAQ,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;AAE3D;;;GAGG;AACH,eAAO,MAAM,kBAAkB,EAAE,MAAM,CAAC,QAAQ,EAAE,MAAM,CAKvD,CAAC;AAEF;;;;;;GAMG;AACH,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,WAAW,CAAC;IACtB,KAAK,EAAE,QAAQ,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC/B,KAAK,CAAC,EAAE;QACN,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,EAAE,MAAM,CAAC;QAChB,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB,CAAC;IACF,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAMD,qCAAqC;AACrC,MAAM,WAAW,QAAQ;IACvB,6DAA6D;IAC7D,KAAK,CAAC,KAAK,EAAE,eAAe,GAAG,IAAI,CAAC;IACpC,uDAAuD;IACvD,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACvB,mCAAmC;IACnC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACxB;AAED,uDAAuD;AACvD,MAAM,WAAW,aAAa;IAC5B,MAAM,CAAC,KAAK,EAAE,eAAe,GAAG,MAAM,CAAC;IACvC,qEAAqE;IACrE,aAAa,EAAE,MAAM,CAAC;CACvB;AAUD,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,EAAE,WAAW,GAAG,KAAK,CAAC;IAC/B,KAAK,CAAC,EAAE,QAAQ,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,eAAe,EAAE,CAAC;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB;AAMD,2EAA2E;AAC3E,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC;IAC5B,aAAa,EAAE,MAAM,CAAC;IACtB,qBAAqB,EAAE,MAAM,CAAC;IAC9B,eAAe,EAAE,MAAM,CAAC;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;IACvB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,sBAAsB,EAAE,MAAM,CAAC;IAC/B,kBAAkB,EAAE,MAAM,CAAC;IAC3B,uBAAuB,EAAE,MAAM,CAAC;IAChC,YAAY,EAAE,MAAM,CAAC;IACrB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,WAAW,EAAE,MAAM,CAAC;IACpB,eAAe,EAAE,MAAM,CAAC;IACxB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,aAAa,EAAE,OAAO,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,QAAQ,CAAC;CACpB"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/logging/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH,MAAM,MAAM,WAAW,GAAG,aAAa,GAAG,UAAU,GAAG,aAAa,GAAG,WAAW,CAAC;AAEnF,MAAM,MAAM,QAAQ,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;AAE3D;;;GAGG;AACH,eAAO,MAAM,kBAAkB,EAAE,MAAM,CAAC,QAAQ,EAAE,MAAM,CAKvD,CAAC;AAEF;;;;;;GAMG;AACH,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,WAAW,CAAC;IACtB,KAAK,EAAE,QAAQ,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC/B,KAAK,CAAC,EAAE;QACN,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,EAAE,MAAM,CAAC;QAChB,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB,CAAC;IACF,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAMD,qCAAqC;AACrC,MAAM,WAAW,QAAQ;IACvB,6DAA6D;IAC7D,KAAK,CAAC,KAAK,EAAE,eAAe,GAAG,IAAI,CAAC;IACpC,uDAAuD;IACvD,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACvB,mCAAmC;IACnC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACxB;AAED,uDAAuD;AACvD,MAAM,WAAW,aAAa;IAC5B,MAAM,CAAC,KAAK,EAAE,eAAe,GAAG,MAAM,CAAC;IACvC,qEAAqE;IACrE,aAAa,EAAE,MAAM,CAAC;CACvB;AAUD,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,EAAE,WAAW,GAAG,KAAK,CAAC;IAC/B,KAAK,CAAC,EAAE,QAAQ,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,eAAe,EAAE,CAAC;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB;AAMD,2EAA2E;AAC3E,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC;IAC5B,aAAa,EAAE,MAAM,CAAC;IACtB,qBAAqB,EAAE,MAAM,CAAC;IAC9B,eAAe,EAAE,MAAM,CAAC;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;IACvB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,sBAAsB,EAAE,MAAM,CAAC;IAC/B,kBAAkB,EAAE,MAAM,CAAC;IAC3B,uBAAuB,EAAE,MAAM,CAAC;IAChC,YAAY,EAAE,MAAM,CAAC;IACrB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,WAAW,EAAE,MAAM,CAAC;IACpB,eAAe,EAAE,MAAM,CAAC;IACxB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,QAAQ,EAAE,QAAQ,CAAC;CACpB"}
@@ -14,4 +14,4 @@ export const LOG_LEVEL_PRIORITY = {
14
14
  warn: 2,
15
15
  error: 3,
16
16
  };
17
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbG9nZ2luZy90eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7R0FLRztBQVVIOzs7R0FHRztBQUNILE1BQU0sQ0FBQyxNQUFNLGtCQUFrQixHQUE2QjtJQUMxRCxLQUFLLEVBQUUsQ0FBQztJQUNSLElBQUksRUFBRSxDQUFDO0lBQ1AsSUFBSSxFQUFFLENBQUM7SUFDUCxLQUFLLEVBQUUsQ0FBQztDQUNULENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIENvcmUgdHlwZXMgZm9yIHRoZSBVbmlmaWVkIExvZ2dpbmcgU3lzdGVtLlxuICpcbiAqIFRoZXNlIHR5cGVzIGFyZSBzaGFyZWQgYWNyb3NzIHRoZSBMb2dNYW5hZ2VyLCBhbGwgc2lua3MsIGFuZCBhbGwgZm9ybWF0dGVycy5cbiAqIFNlZSBkb2NzL0xPR0dJTkctREVTSUdOLm1kIGZvciB0aGUgZnVsbCBSRkMuXG4gKi9cblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBMb2cgZW50cnlcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG5leHBvcnQgdHlwZSBMb2dDYXRlZ29yeSA9ICdhcHBsaWNhdGlvbicgfCAnc2VjdXJpdHknIHwgJ3BlcmZvcm1hbmNlJyB8ICd0ZWxlbWV0cnknO1xuXG5leHBvcnQgdHlwZSBMb2dMZXZlbCA9ICdkZWJ1ZycgfCAnaW5mbycgfCAnd2FybicgfCAnZXJyb3InO1xuXG4vKipcbiAqIE51bWVyaWMgcHJpb3JpdHkgZm9yIGVhY2ggbG9nIGxldmVsIChoaWdoZXIgPSBtb3JlIHNldmVyZSkuXG4gKiBVc2VkIGJ5IExvZ01hbmFnZXIgZm9yIG1pbmltdW0tbGV2ZWwgZmlsdGVyaW5nLlxuICovXG5leHBvcnQgY29uc3QgTE9HX0xFVkVMX1BSSU9SSVRZOiBSZWNvcmQ8TG9nTGV2ZWwsIG51bWJlcj4gPSB7XG4gIGRlYnVnOiAwLFxuICBpbmZvOiAxLFxuICB3YXJuOiAyLFxuICBlcnJvcjogMyxcbn07XG5cbi8qKlxuICogVW5pdmVyc2FsIGxvZyBlbnRyeSBmb3JtYXQgdXNlZCBhY3Jvc3MgYWxsIHNpbmtzLlxuICpcbiAqIC0gYGlkYCBmb3JtYXQ6IGBcIkxPRy17dGltZXN0YW1wfS17Y291bnRlcn1cImBcbiAqIC0gYHRpbWVzdGFtcGA6IElTTyA4NjAxLCBhbHdheXMgVVRDXG4gKiAtIGBlcnJvcmA6IHN0cnVjdHVyZWQg4oCUIG5ldmVyIGEgcmF3IEVycm9yIG9iamVjdFxuICovXG5leHBvcnQgaW50ZXJmYWNlIFVuaWZpZWRMb2dFbnRyeSB7XG4gIGlkOiBzdHJpbmc7XG4gIHRpbWVzdGFtcDogc3RyaW5nO1xuICBjYXRlZ29yeTogTG9nQ2F0ZWdvcnk7XG4gIGxldmVsOiBMb2dMZXZlbDtcbiAgc291cmNlOiBzdHJpbmc7XG4gIG1lc3NhZ2U6IHN0cmluZztcbiAgZGF0YT86IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuICBlcnJvcj86IHtcbiAgICBuYW1lOiBzdHJpbmc7XG4gICAgbWVzc2FnZTogc3RyaW5nO1xuICAgIHN0YWNrPzogc3RyaW5nO1xuICB9O1xuICBjb3JyZWxhdGlvbklkPzogc3RyaW5nO1xufVxuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFNpbmsgJiBmb3JtYXR0ZXIgaW50ZXJmYWNlc1xuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbi8qKiBPdXRwdXQgdGFyZ2V0IGZvciBsb2cgZW50cmllcy4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSUxvZ1Npbmsge1xuICAvKiogU3luY2hyb25vdXMgd3JpdGUg4oCUIHNpbmtzIGJ1ZmZlciBpbnRlcm5hbGx5IGlmIG5lZWRlZC4gKi9cbiAgd3JpdGUoZW50cnk6IFVuaWZpZWRMb2dFbnRyeSk6IHZvaWQ7XG4gIC8qKiBGbHVzaCBhbnkgYnVmZmVyZWQgZGF0YSB0byB0aGUgdW5kZXJseWluZyBzdG9yZS4gKi9cbiAgZmx1c2goKTogUHJvbWlzZTx2b2lkPjtcbiAgLyoqIEZsdXNoIGFuZCByZWxlYXNlIHJlc291cmNlcy4gKi9cbiAgY2xvc2UoKTogUHJvbWlzZTx2b2lkPjtcbn1cblxuLyoqIFBsdWdnYWJsZSBkaXNrIGZvcm1hdCAocGxhaW4gdGV4dCwgSlNPTkwsIGV0Yy4pLiAqL1xuZXhwb3J0IGludGVyZmFjZSBJTG9nRm9ybWF0dGVyIHtcbiAgZm9ybWF0KGVudHJ5OiBVbmlmaWVkTG9nRW50cnkpOiBzdHJpbmc7XG4gIC8qKiBGaWxlIGV4dGVuc2lvbiBpbmNsdWRpbmcgdGhlIGRvdCwgZS5nLiBgJy5sb2cnYCBvciBgJy5qc29ubCdgLiAqL1xuICBmaWxlRXh0ZW5zaW9uOiBzdHJpbmc7XG59XG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gQ29uZmlndXJhdGlvblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gUXVlcnkgdHlwZXMgKHVzZWQgYnkgTWVtb3J5TG9nU2luayBhbmQgUGhhc2UgNSBNQ1AgcXVlcnlfbG9ncyB0b29sKVxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbmV4cG9ydCBpbnRlcmZhY2UgTG9nUXVlcnlPcHRpb25zIHtcbiAgY2F0ZWdvcnk/OiBMb2dDYXRlZ29yeSB8ICdhbGwnO1xuICBsZXZlbD86IExvZ0xldmVsO1xuICBzb3VyY2U/OiBzdHJpbmc7XG4gIG1lc3NhZ2U/OiBzdHJpbmc7XG4gIHNpbmNlPzogc3RyaW5nO1xuICB1bnRpbD86IHN0cmluZztcbiAgbGltaXQ/OiBudW1iZXI7XG4gIG9mZnNldD86IG51bWJlcjtcbiAgY29ycmVsYXRpb25JZD86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBMb2dRdWVyeVJlc3VsdCB7XG4gIGVudHJpZXM6IFVuaWZpZWRMb2dFbnRyeVtdO1xuICB0b3RhbDogbnVtYmVyO1xuICBoYXNNb3JlOiBib29sZWFuO1xuICBsaW1pdDogbnVtYmVyO1xuICBvZmZzZXQ6IG51bWJlcjtcbn1cblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBDb25maWd1cmF0aW9uXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuLyoqIFR5cGVkIGNvbmZpZyBmb3IgTG9nTWFuYWdlciwgbWFwcGVkIGZyb20gYERPTExIT1VTRV9MT0dfKmAgZW52IHZhcnMuICovXG5leHBvcnQgaW50ZXJmYWNlIExvZ01hbmFnZXJDb25maWcge1xuICBsb2dEaXI6IHN0cmluZztcbiAgbG9nRm9ybWF0OiAndGV4dCcgfCAnanNvbmwnO1xuICByZXRlbnRpb25EYXlzOiBudW1iZXI7XG4gIHNlY3VyaXR5UmV0ZW50aW9uRGF5czogbnVtYmVyO1xuICBmbHVzaEludGVydmFsTXM6IG51bWJlcjtcbiAgYnVmZmVyU2l6ZTogbnVtYmVyO1xuICBtZW1vcnlDYXBhY2l0eTogbnVtYmVyO1xuICBtZW1vcnlBcHBDYXBhY2l0eTogbnVtYmVyO1xuICBtZW1vcnlTZWN1cml0eUNhcGFjaXR5OiBudW1iZXI7XG4gIG1lbW9yeVBlcmZDYXBhY2l0eTogbnVtYmVyO1xuICBtZW1vcnlUZWxlbWV0cnlDYXBhY2l0eTogbnVtYmVyO1xuICBtYXhFbnRyeVNpemU6IG51bWJlcjtcbiAgaW1tZWRpYXRlRmx1c2hSYXRlOiBudW1iZXI7XG4gIGZpbGVNYXhTaXplOiBudW1iZXI7XG4gIG1heERpclNpemVCeXRlczogbnVtYmVyOyAgICAgICAvLyAwID0gZGlzYWJsZWRcbiAgbWF4RmlsZXNQZXJDYXRlZ29yeTogbnVtYmVyOyAgIC8vIDAgPSBkaXNhYmxlZFxuICB2aWV3ZXJFbmFibGVkOiBib29sZWFuO1xuICB2aWV3ZXJQb3J0OiBudW1iZXI7XG4gIGxvZ0xldmVsOiBMb2dMZXZlbDtcbn1cbiJdfQ==
17
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbG9nZ2luZy90eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7R0FLRztBQVVIOzs7R0FHRztBQUNILE1BQU0sQ0FBQyxNQUFNLGtCQUFrQixHQUE2QjtJQUMxRCxLQUFLLEVBQUUsQ0FBQztJQUNSLElBQUksRUFBRSxDQUFDO0lBQ1AsSUFBSSxFQUFFLENBQUM7SUFDUCxLQUFLLEVBQUUsQ0FBQztDQUNULENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIENvcmUgdHlwZXMgZm9yIHRoZSBVbmlmaWVkIExvZ2dpbmcgU3lzdGVtLlxuICpcbiAqIFRoZXNlIHR5cGVzIGFyZSBzaGFyZWQgYWNyb3NzIHRoZSBMb2dNYW5hZ2VyLCBhbGwgc2lua3MsIGFuZCBhbGwgZm9ybWF0dGVycy5cbiAqIFNlZSBkb2NzL0xPR0dJTkctREVTSUdOLm1kIGZvciB0aGUgZnVsbCBSRkMuXG4gKi9cblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBMb2cgZW50cnlcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG5leHBvcnQgdHlwZSBMb2dDYXRlZ29yeSA9ICdhcHBsaWNhdGlvbicgfCAnc2VjdXJpdHknIHwgJ3BlcmZvcm1hbmNlJyB8ICd0ZWxlbWV0cnknO1xuXG5leHBvcnQgdHlwZSBMb2dMZXZlbCA9ICdkZWJ1ZycgfCAnaW5mbycgfCAnd2FybicgfCAnZXJyb3InO1xuXG4vKipcbiAqIE51bWVyaWMgcHJpb3JpdHkgZm9yIGVhY2ggbG9nIGxldmVsIChoaWdoZXIgPSBtb3JlIHNldmVyZSkuXG4gKiBVc2VkIGJ5IExvZ01hbmFnZXIgZm9yIG1pbmltdW0tbGV2ZWwgZmlsdGVyaW5nLlxuICovXG5leHBvcnQgY29uc3QgTE9HX0xFVkVMX1BSSU9SSVRZOiBSZWNvcmQ8TG9nTGV2ZWwsIG51bWJlcj4gPSB7XG4gIGRlYnVnOiAwLFxuICBpbmZvOiAxLFxuICB3YXJuOiAyLFxuICBlcnJvcjogMyxcbn07XG5cbi8qKlxuICogVW5pdmVyc2FsIGxvZyBlbnRyeSBmb3JtYXQgdXNlZCBhY3Jvc3MgYWxsIHNpbmtzLlxuICpcbiAqIC0gYGlkYCBmb3JtYXQ6IGBcIkxPRy17dGltZXN0YW1wfS17Y291bnRlcn1cImBcbiAqIC0gYHRpbWVzdGFtcGA6IElTTyA4NjAxLCBhbHdheXMgVVRDXG4gKiAtIGBlcnJvcmA6IHN0cnVjdHVyZWQg4oCUIG5ldmVyIGEgcmF3IEVycm9yIG9iamVjdFxuICovXG5leHBvcnQgaW50ZXJmYWNlIFVuaWZpZWRMb2dFbnRyeSB7XG4gIGlkOiBzdHJpbmc7XG4gIHRpbWVzdGFtcDogc3RyaW5nO1xuICBjYXRlZ29yeTogTG9nQ2F0ZWdvcnk7XG4gIGxldmVsOiBMb2dMZXZlbDtcbiAgc291cmNlOiBzdHJpbmc7XG4gIG1lc3NhZ2U6IHN0cmluZztcbiAgZGF0YT86IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuICBlcnJvcj86IHtcbiAgICBuYW1lOiBzdHJpbmc7XG4gICAgbWVzc2FnZTogc3RyaW5nO1xuICAgIHN0YWNrPzogc3RyaW5nO1xuICB9O1xuICBjb3JyZWxhdGlvbklkPzogc3RyaW5nO1xufVxuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFNpbmsgJiBmb3JtYXR0ZXIgaW50ZXJmYWNlc1xuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbi8qKiBPdXRwdXQgdGFyZ2V0IGZvciBsb2cgZW50cmllcy4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSUxvZ1Npbmsge1xuICAvKiogU3luY2hyb25vdXMgd3JpdGUg4oCUIHNpbmtzIGJ1ZmZlciBpbnRlcm5hbGx5IGlmIG5lZWRlZC4gKi9cbiAgd3JpdGUoZW50cnk6IFVuaWZpZWRMb2dFbnRyeSk6IHZvaWQ7XG4gIC8qKiBGbHVzaCBhbnkgYnVmZmVyZWQgZGF0YSB0byB0aGUgdW5kZXJseWluZyBzdG9yZS4gKi9cbiAgZmx1c2goKTogUHJvbWlzZTx2b2lkPjtcbiAgLyoqIEZsdXNoIGFuZCByZWxlYXNlIHJlc291cmNlcy4gKi9cbiAgY2xvc2UoKTogUHJvbWlzZTx2b2lkPjtcbn1cblxuLyoqIFBsdWdnYWJsZSBkaXNrIGZvcm1hdCAocGxhaW4gdGV4dCwgSlNPTkwsIGV0Yy4pLiAqL1xuZXhwb3J0IGludGVyZmFjZSBJTG9nRm9ybWF0dGVyIHtcbiAgZm9ybWF0KGVudHJ5OiBVbmlmaWVkTG9nRW50cnkpOiBzdHJpbmc7XG4gIC8qKiBGaWxlIGV4dGVuc2lvbiBpbmNsdWRpbmcgdGhlIGRvdCwgZS5nLiBgJy5sb2cnYCBvciBgJy5qc29ubCdgLiAqL1xuICBmaWxlRXh0ZW5zaW9uOiBzdHJpbmc7XG59XG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gQ29uZmlndXJhdGlvblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gUXVlcnkgdHlwZXMgKHVzZWQgYnkgTWVtb3J5TG9nU2luayBhbmQgUGhhc2UgNSBNQ1AgcXVlcnlfbG9ncyB0b29sKVxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbmV4cG9ydCBpbnRlcmZhY2UgTG9nUXVlcnlPcHRpb25zIHtcbiAgY2F0ZWdvcnk/OiBMb2dDYXRlZ29yeSB8ICdhbGwnO1xuICBsZXZlbD86IExvZ0xldmVsO1xuICBzb3VyY2U/OiBzdHJpbmc7XG4gIG1lc3NhZ2U/OiBzdHJpbmc7XG4gIHNpbmNlPzogc3RyaW5nO1xuICB1bnRpbD86IHN0cmluZztcbiAgbGltaXQ/OiBudW1iZXI7XG4gIG9mZnNldD86IG51bWJlcjtcbiAgY29ycmVsYXRpb25JZD86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBMb2dRdWVyeVJlc3VsdCB7XG4gIGVudHJpZXM6IFVuaWZpZWRMb2dFbnRyeVtdO1xuICB0b3RhbDogbnVtYmVyO1xuICBoYXNNb3JlOiBib29sZWFuO1xuICBsaW1pdDogbnVtYmVyO1xuICBvZmZzZXQ6IG51bWJlcjtcbn1cblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBDb25maWd1cmF0aW9uXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuLyoqIFR5cGVkIGNvbmZpZyBmb3IgTG9nTWFuYWdlciwgbWFwcGVkIGZyb20gYERPTExIT1VTRV9MT0dfKmAgZW52IHZhcnMuICovXG5leHBvcnQgaW50ZXJmYWNlIExvZ01hbmFnZXJDb25maWcge1xuICBsb2dEaXI6IHN0cmluZztcbiAgbG9nRm9ybWF0OiAndGV4dCcgfCAnanNvbmwnO1xuICByZXRlbnRpb25EYXlzOiBudW1iZXI7XG4gIHNlY3VyaXR5UmV0ZW50aW9uRGF5czogbnVtYmVyO1xuICBmbHVzaEludGVydmFsTXM6IG51bWJlcjtcbiAgYnVmZmVyU2l6ZTogbnVtYmVyO1xuICBtZW1vcnlDYXBhY2l0eTogbnVtYmVyO1xuICBtZW1vcnlBcHBDYXBhY2l0eTogbnVtYmVyO1xuICBtZW1vcnlTZWN1cml0eUNhcGFjaXR5OiBudW1iZXI7XG4gIG1lbW9yeVBlcmZDYXBhY2l0eTogbnVtYmVyO1xuICBtZW1vcnlUZWxlbWV0cnlDYXBhY2l0eTogbnVtYmVyO1xuICBtYXhFbnRyeVNpemU6IG51bWJlcjtcbiAgaW1tZWRpYXRlRmx1c2hSYXRlOiBudW1iZXI7XG4gIGZpbGVNYXhTaXplOiBudW1iZXI7XG4gIG1heERpclNpemVCeXRlczogbnVtYmVyOyAgICAgICAvLyAwID0gZGlzYWJsZWRcbiAgbWF4RmlsZXNQZXJDYXRlZ29yeTogbnVtYmVyOyAgIC8vIDAgPSBkaXNhYmxlZFxuICBsb2dMZXZlbDogTG9nTGV2ZWw7XG59XG4iXX0=
@@ -0,0 +1,32 @@
1
+ /**
2
+ * Lightweight in-memory accumulator for Gatekeeper policy enforcement metrics.
3
+ *
4
+ * Records allowed/denied/confirmation-pending decisions, policy source
5
+ * distribution, and permission level usage. The companion
6
+ * GatekeeperMetricsCollector reads from this tracker each collection cycle.
7
+ */
8
+ export interface GatekeeperDecisionRecord {
9
+ allowed: boolean;
10
+ permissionLevel: string;
11
+ policySource?: string;
12
+ confirmationPending?: boolean;
13
+ }
14
+ export interface GatekeeperMetrics {
15
+ totalDecisions: number;
16
+ allowed: number;
17
+ denied: number;
18
+ confirmationsPending: number;
19
+ byPolicySource: Map<string, number>;
20
+ byPermissionLevel: Map<string, number>;
21
+ }
22
+ export declare class GatekeeperMetricsTracker {
23
+ private totalDecisions;
24
+ private allowed;
25
+ private denied;
26
+ private confirmationsPending;
27
+ private readonly byPolicySource;
28
+ private readonly byPermissionLevel;
29
+ record(decision: GatekeeperDecisionRecord): void;
30
+ getMetrics(): GatekeeperMetrics;
31
+ }
32
+ //# sourceMappingURL=GatekeeperMetricsTracker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GatekeeperMetricsTracker.d.ts","sourceRoot":"","sources":["../../src/metrics/GatekeeperMetricsTracker.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,MAAM,WAAW,wBAAwB;IACvC,OAAO,EAAE,OAAO,CAAC;IACjB,eAAe,EAAE,MAAM,CAAC;IACxB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,mBAAmB,CAAC,EAAE,OAAO,CAAC;CAC/B;AAED,MAAM,WAAW,iBAAiB;IAChC,cAAc,EAAE,MAAM,CAAC;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,oBAAoB,EAAE,MAAM,CAAC;IAC7B,cAAc,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACpC,iBAAiB,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACxC;AAED,qBAAa,wBAAwB;IACnC,OAAO,CAAC,cAAc,CAAK;IAC3B,OAAO,CAAC,OAAO,CAAK;IACpB,OAAO,CAAC,MAAM,CAAK;IACnB,OAAO,CAAC,oBAAoB,CAAK;IACjC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAA6B;IAC5D,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAA6B;IAE/D,MAAM,CAAC,QAAQ,EAAE,wBAAwB,GAAG,IAAI;IAoBhD,UAAU,IAAI,iBAAiB;CAUhC"}
@@ -0,0 +1,42 @@
1
+ /**
2
+ * Lightweight in-memory accumulator for Gatekeeper policy enforcement metrics.
3
+ *
4
+ * Records allowed/denied/confirmation-pending decisions, policy source
5
+ * distribution, and permission level usage. The companion
6
+ * GatekeeperMetricsCollector reads from this tracker each collection cycle.
7
+ */
8
+ export class GatekeeperMetricsTracker {
9
+ totalDecisions = 0;
10
+ allowed = 0;
11
+ denied = 0;
12
+ confirmationsPending = 0;
13
+ byPolicySource = new Map();
14
+ byPermissionLevel = new Map();
15
+ record(decision) {
16
+ this.totalDecisions++;
17
+ if (decision.allowed) {
18
+ this.allowed++;
19
+ }
20
+ else {
21
+ this.denied++;
22
+ }
23
+ if (decision.confirmationPending) {
24
+ this.confirmationsPending++;
25
+ }
26
+ const source = decision.policySource ?? 'unknown';
27
+ this.byPolicySource.set(source, (this.byPolicySource.get(source) ?? 0) + 1);
28
+ const level = decision.permissionLevel;
29
+ this.byPermissionLevel.set(level, (this.byPermissionLevel.get(level) ?? 0) + 1);
30
+ }
31
+ getMetrics() {
32
+ return {
33
+ totalDecisions: this.totalDecisions,
34
+ allowed: this.allowed,
35
+ denied: this.denied,
36
+ confirmationsPending: this.confirmationsPending,
37
+ byPolicySource: new Map(this.byPolicySource),
38
+ byPermissionLevel: new Map(this.byPermissionLevel),
39
+ };
40
+ }
41
+ }
42
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiR2F0ZWtlZXBlck1ldHJpY3NUcmFja2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL21ldHJpY3MvR2F0ZWtlZXBlck1ldHJpY3NUcmFja2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRztBQWtCSCxNQUFNLE9BQU8sd0JBQXdCO0lBQzNCLGNBQWMsR0FBRyxDQUFDLENBQUM7SUFDbkIsT0FBTyxHQUFHLENBQUMsQ0FBQztJQUNaLE1BQU0sR0FBRyxDQUFDLENBQUM7SUFDWCxvQkFBb0IsR0FBRyxDQUFDLENBQUM7SUFDaEIsY0FBYyxHQUFHLElBQUksR0FBRyxFQUFrQixDQUFDO0lBQzNDLGlCQUFpQixHQUFHLElBQUksR0FBRyxFQUFrQixDQUFDO0lBRS9ELE1BQU0sQ0FBQyxRQUFrQztRQUN2QyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7UUFFdEIsSUFBSSxRQUFRLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDckIsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ2pCLENBQUM7YUFBTSxDQUFDO1lBQ04sSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQ2hCLENBQUM7UUFFRCxJQUFJLFFBQVEsQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO1lBQ2pDLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO1FBQzlCLENBQUM7UUFFRCxNQUFNLE1BQU0sR0FBRyxRQUFRLENBQUMsWUFBWSxJQUFJLFNBQVMsQ0FBQztRQUNsRCxJQUFJLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUU1RSxNQUFNLEtBQUssR0FBRyxRQUFRLENBQUMsZUFBZSxDQUFDO1FBQ3ZDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUNsRixDQUFDO0lBRUQsVUFBVTtRQUNSLE9BQU87WUFDTCxjQUFjLEVBQUUsSUFBSSxDQUFDLGNBQWM7WUFDbkMsT0FBTyxFQUFFLElBQUksQ0FBQyxPQUFPO1lBQ3JCLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTTtZQUNuQixvQkFBb0IsRUFBRSxJQUFJLENBQUMsb0JBQW9CO1lBQy9DLGNBQWMsRUFBRSxJQUFJLEdBQUcsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDO1lBQzVDLGlCQUFpQixFQUFFLElBQUksR0FBRyxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQztTQUNuRCxDQUFDO0lBQ0osQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBMaWdodHdlaWdodCBpbi1tZW1vcnkgYWNjdW11bGF0b3IgZm9yIEdhdGVrZWVwZXIgcG9saWN5IGVuZm9yY2VtZW50IG1ldHJpY3MuXG4gKlxuICogUmVjb3JkcyBhbGxvd2VkL2RlbmllZC9jb25maXJtYXRpb24tcGVuZGluZyBkZWNpc2lvbnMsIHBvbGljeSBzb3VyY2VcbiAqIGRpc3RyaWJ1dGlvbiwgYW5kIHBlcm1pc3Npb24gbGV2ZWwgdXNhZ2UuIFRoZSBjb21wYW5pb25cbiAqIEdhdGVrZWVwZXJNZXRyaWNzQ29sbGVjdG9yIHJlYWRzIGZyb20gdGhpcyB0cmFja2VyIGVhY2ggY29sbGVjdGlvbiBjeWNsZS5cbiAqL1xuXG5leHBvcnQgaW50ZXJmYWNlIEdhdGVrZWVwZXJEZWNpc2lvblJlY29yZCB7XG4gIGFsbG93ZWQ6IGJvb2xlYW47XG4gIHBlcm1pc3Npb25MZXZlbDogc3RyaW5nO1xuICBwb2xpY3lTb3VyY2U/OiBzdHJpbmc7XG4gIGNvbmZpcm1hdGlvblBlbmRpbmc/OiBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEdhdGVrZWVwZXJNZXRyaWNzIHtcbiAgdG90YWxEZWNpc2lvbnM6IG51bWJlcjtcbiAgYWxsb3dlZDogbnVtYmVyO1xuICBkZW5pZWQ6IG51bWJlcjtcbiAgY29uZmlybWF0aW9uc1BlbmRpbmc6IG51bWJlcjtcbiAgYnlQb2xpY3lTb3VyY2U6IE1hcDxzdHJpbmcsIG51bWJlcj47XG4gIGJ5UGVybWlzc2lvbkxldmVsOiBNYXA8c3RyaW5nLCBudW1iZXI+O1xufVxuXG5leHBvcnQgY2xhc3MgR2F0ZWtlZXBlck1ldHJpY3NUcmFja2VyIHtcbiAgcHJpdmF0ZSB0b3RhbERlY2lzaW9ucyA9IDA7XG4gIHByaXZhdGUgYWxsb3dlZCA9IDA7XG4gIHByaXZhdGUgZGVuaWVkID0gMDtcbiAgcHJpdmF0ZSBjb25maXJtYXRpb25zUGVuZGluZyA9IDA7XG4gIHByaXZhdGUgcmVhZG9ubHkgYnlQb2xpY3lTb3VyY2UgPSBuZXcgTWFwPHN0cmluZywgbnVtYmVyPigpO1xuICBwcml2YXRlIHJlYWRvbmx5IGJ5UGVybWlzc2lvbkxldmVsID0gbmV3IE1hcDxzdHJpbmcsIG51bWJlcj4oKTtcblxuICByZWNvcmQoZGVjaXNpb246IEdhdGVrZWVwZXJEZWNpc2lvblJlY29yZCk6IHZvaWQge1xuICAgIHRoaXMudG90YWxEZWNpc2lvbnMrKztcblxuICAgIGlmIChkZWNpc2lvbi5hbGxvd2VkKSB7XG4gICAgICB0aGlzLmFsbG93ZWQrKztcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5kZW5pZWQrKztcbiAgICB9XG5cbiAgICBpZiAoZGVjaXNpb24uY29uZmlybWF0aW9uUGVuZGluZykge1xuICAgICAgdGhpcy5jb25maXJtYXRpb25zUGVuZGluZysrO1xuICAgIH1cblxuICAgIGNvbnN0IHNvdXJjZSA9IGRlY2lzaW9uLnBvbGljeVNvdXJjZSA/PyAndW5rbm93bic7XG4gICAgdGhpcy5ieVBvbGljeVNvdXJjZS5zZXQoc291cmNlLCAodGhpcy5ieVBvbGljeVNvdXJjZS5nZXQoc291cmNlKSA/PyAwKSArIDEpO1xuXG4gICAgY29uc3QgbGV2ZWwgPSBkZWNpc2lvbi5wZXJtaXNzaW9uTGV2ZWw7XG4gICAgdGhpcy5ieVBlcm1pc3Npb25MZXZlbC5zZXQobGV2ZWwsICh0aGlzLmJ5UGVybWlzc2lvbkxldmVsLmdldChsZXZlbCkgPz8gMCkgKyAxKTtcbiAgfVxuXG4gIGdldE1ldHJpY3MoKTogR2F0ZWtlZXBlck1ldHJpY3Mge1xuICAgIHJldHVybiB7XG4gICAgICB0b3RhbERlY2lzaW9uczogdGhpcy50b3RhbERlY2lzaW9ucyxcbiAgICAgIGFsbG93ZWQ6IHRoaXMuYWxsb3dlZCxcbiAgICAgIGRlbmllZDogdGhpcy5kZW5pZWQsXG4gICAgICBjb25maXJtYXRpb25zUGVuZGluZzogdGhpcy5jb25maXJtYXRpb25zUGVuZGluZyxcbiAgICAgIGJ5UG9saWN5U291cmNlOiBuZXcgTWFwKHRoaXMuYnlQb2xpY3lTb3VyY2UpLFxuICAgICAgYnlQZXJtaXNzaW9uTGV2ZWw6IG5ldyBNYXAodGhpcy5ieVBlcm1pc3Npb25MZXZlbCksXG4gICAgfTtcbiAgfVxufVxuIl19
@@ -0,0 +1,47 @@
1
+ /**
2
+ * Central coordinator for the Metrics Collection System.
3
+ *
4
+ * Registers collectors and sinks, runs periodic collection cycles,
5
+ * assembles immutable MetricSnapshot objects, and dispatches them
6
+ * to all registered sinks.
7
+ */
8
+ import type { ILogger } from '../types/ILogger.js';
9
+ import type { IMetricCollector, IMetricsSink, MetricSnapshot, MetricsManagerConfig } from './types.js';
10
+ export declare class MetricsManager {
11
+ private readonly collectors;
12
+ private readonly sinks;
13
+ private readonly config;
14
+ private readonly logger;
15
+ private timer;
16
+ private snapshotCounter;
17
+ private collectionsCompleted;
18
+ private collectorErrorsTotal;
19
+ private sinkErrorsTotal;
20
+ private lastCollectionDurationMs;
21
+ private closed;
22
+ private readonly processStartTime;
23
+ constructor(config: MetricsManagerConfig, logger: ILogger);
24
+ registerCollector(collector: IMetricCollector): void;
25
+ registerSink(sink: IMetricsSink): void;
26
+ start(): void;
27
+ collectNow(): Promise<MetricSnapshot>;
28
+ private collectFromCollectors;
29
+ private warnIfOversized;
30
+ private warnIfSlow;
31
+ private deepFreezeSnapshot;
32
+ private dispatchToSinks;
33
+ close(): Promise<void>;
34
+ getManagerStats(): {
35
+ collectionsCompleted: number;
36
+ collectorErrorsTotal: number;
37
+ sinkErrorsTotal: number;
38
+ lastCollectionDurationMs: number;
39
+ collectorsRegistered: number;
40
+ sinksRegistered: number;
41
+ disabledCollectors: number;
42
+ processStartTime: string;
43
+ };
44
+ private assertOpen;
45
+ private buildSelfMonitoringMetrics;
46
+ }
47
+ //# sourceMappingURL=MetricsManager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MetricsManager.d.ts","sourceRoot":"","sources":["../../src/metrics/MetricsManager.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,KAAK,EACV,gBAAgB,EAChB,YAAY,EAEZ,cAAc,EACd,oBAAoB,EACrB,MAAM,YAAY,CAAC;AAQpB,qBAAa,cAAc;IACzB,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAyB;IACpD,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAsB;IAC5C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAuB;IAC9C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAU;IAEjC,OAAO,CAAC,KAAK,CAA+C;IAC5D,OAAO,CAAC,eAAe,CAAK;IAC5B,OAAO,CAAC,oBAAoB,CAAK;IACjC,OAAO,CAAC,oBAAoB,CAAK;IACjC,OAAO,CAAC,eAAe,CAAK;IAC5B,OAAO,CAAC,wBAAwB,CAAK;IACrC,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAS;gBAE9B,MAAM,EAAE,oBAAoB,EAAE,MAAM,EAAE,OAAO;IAUzD,iBAAiB,CAAC,SAAS,EAAE,gBAAgB,GAAG,IAAI;IASpD,YAAY,CAAC,IAAI,EAAE,YAAY,GAAG,IAAI;IAKtC,KAAK,IAAI,IAAI;IAmBP,UAAU,IAAI,OAAO,CAAC,cAAc,CAAC;YA2B7B,qBAAqB;IAkCnC,OAAO,CAAC,eAAe;IAUvB,OAAO,CAAC,UAAU;IASlB,OAAO,CAAC,kBAAkB;IAY1B,OAAO,CAAC,eAAe;IAYjB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAqB5B,eAAe,IAAI;QACjB,oBAAoB,EAAE,MAAM,CAAC;QAC7B,oBAAoB,EAAE,MAAM,CAAC;QAC7B,eAAe,EAAE,MAAM,CAAC;QACxB,wBAAwB,EAAE,MAAM,CAAC;QACjC,oBAAoB,EAAE,MAAM,CAAC;QAC7B,eAAe,EAAE,MAAM,CAAC;QACxB,kBAAkB,EAAE,MAAM,CAAC;QAC3B,gBAAgB,EAAE,MAAM,CAAC;KAC1B;IAiBD,OAAO,CAAC,UAAU;IAMlB,OAAO,CAAC,0BAA0B;CAwDnC"}