@marinoscar/platform-api 0.0.0-stage → 0.1.0-next.3

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 (616) hide show
  1. package/CHANGELOG.md +54 -0
  2. package/LICENSE +21 -0
  3. package/README.md +106 -2
  4. package/dist/core/crypto/encryption-key-startup-check.d.ts +29 -0
  5. package/dist/core/crypto/encryption-key-startup-check.d.ts.map +1 -0
  6. package/dist/core/crypto/encryption-key-startup-check.js +221 -0
  7. package/dist/core/crypto/encryption-key-startup-check.js.map +1 -0
  8. package/dist/core/crypto/secret-cipher.d.ts +151 -0
  9. package/dist/core/crypto/secret-cipher.d.ts.map +1 -0
  10. package/dist/core/crypto/secret-cipher.js +452 -0
  11. package/dist/core/crypto/secret-cipher.js.map +1 -0
  12. package/dist/core/data-access/index.d.ts +6 -0
  13. package/dist/core/data-access/index.d.ts.map +1 -0
  14. package/dist/core/data-access/index.js +19 -0
  15. package/dist/core/data-access/index.js.map +1 -0
  16. package/dist/core/data-access/scoped-access.error.d.ts +35 -0
  17. package/dist/core/data-access/scoped-access.error.d.ts.map +1 -0
  18. package/dist/core/data-access/scoped-access.error.js +43 -0
  19. package/dist/core/data-access/scoped-access.error.js.map +1 -0
  20. package/dist/core/data-access/scoped-client.d.ts +104 -0
  21. package/dist/core/data-access/scoped-client.d.ts.map +1 -0
  22. package/dist/core/data-access/scoped-client.js +270 -0
  23. package/dist/core/data-access/scoped-client.js.map +1 -0
  24. package/dist/core/data-access/types.d.ts +85 -0
  25. package/dist/core/data-access/types.d.ts.map +1 -0
  26. package/dist/core/data-access/types.js +12 -0
  27. package/dist/core/data-access/types.js.map +1 -0
  28. package/dist/core/data-access/user-owned-data.registry.d.ts +60 -0
  29. package/dist/core/data-access/user-owned-data.registry.d.ts.map +1 -0
  30. package/dist/core/data-access/user-owned-data.registry.js +140 -0
  31. package/dist/core/data-access/user-owned-data.registry.js.map +1 -0
  32. package/dist/core/errors/database-seed.exception.d.ts +23 -0
  33. package/dist/core/errors/database-seed.exception.d.ts.map +1 -0
  34. package/dist/core/errors/database-seed.exception.js +49 -0
  35. package/dist/core/errors/database-seed.exception.js.map +1 -0
  36. package/dist/core/errors/error.dto.d.ts +47 -0
  37. package/dist/core/errors/error.dto.d.ts.map +1 -0
  38. package/dist/core/errors/error.dto.js +121 -0
  39. package/dist/core/errors/error.dto.js.map +1 -0
  40. package/dist/core/errors/http-exception.filter.d.ts +63 -0
  41. package/dist/core/errors/http-exception.filter.d.ts.map +1 -0
  42. package/dist/core/errors/http-exception.filter.js +234 -0
  43. package/dist/core/errors/http-exception.filter.js.map +1 -0
  44. package/dist/core/errors/verbatim-error-body.exception.d.ts +46 -0
  45. package/dist/core/errors/verbatim-error-body.exception.d.ts.map +1 -0
  46. package/dist/core/errors/verbatim-error-body.exception.js +135 -0
  47. package/dist/core/errors/verbatim-error-body.exception.js.map +1 -0
  48. package/dist/core/host/index.d.ts +7 -0
  49. package/dist/core/host/index.d.ts.map +1 -0
  50. package/dist/core/host/index.js +14 -0
  51. package/dist/core/host/index.js.map +1 -0
  52. package/dist/core/host/platform-host.d.ts +58 -0
  53. package/dist/core/host/platform-host.d.ts.map +1 -0
  54. package/dist/core/host/platform-host.js +104 -0
  55. package/dist/core/host/platform-host.js.map +1 -0
  56. package/dist/core/host/platform-host.module.d.ts +53 -0
  57. package/dist/core/host/platform-host.module.d.ts.map +1 -0
  58. package/dist/core/host/platform-host.module.js +90 -0
  59. package/dist/core/host/platform-host.module.js.map +1 -0
  60. package/dist/core/host/ports.d.ts +132 -0
  61. package/dist/core/host/ports.d.ts.map +1 -0
  62. package/dist/core/host/ports.js +48 -0
  63. package/dist/core/host/ports.js.map +1 -0
  64. package/dist/core/index.d.ts +15 -0
  65. package/dist/core/index.d.ts.map +1 -0
  66. package/dist/core/index.js +77 -0
  67. package/dist/core/index.js.map +1 -0
  68. package/dist/core/openapi/openapi-tag.registry.d.ts +80 -0
  69. package/dist/core/openapi/openapi-tag.registry.d.ts.map +1 -0
  70. package/dist/core/openapi/openapi-tag.registry.js +72 -0
  71. package/dist/core/openapi/openapi-tag.registry.js.map +1 -0
  72. package/dist/core/principal/index.d.ts +6 -0
  73. package/dist/core/principal/index.d.ts.map +1 -0
  74. package/dist/core/principal/index.js +3 -0
  75. package/dist/core/principal/index.js.map +1 -0
  76. package/dist/core/principal/principal.types.d.ts +222 -0
  77. package/dist/core/principal/principal.types.d.ts.map +1 -0
  78. package/dist/core/principal/principal.types.js +22 -0
  79. package/dist/core/principal/principal.types.js.map +1 -0
  80. package/dist/core/registry/index.d.ts +4 -0
  81. package/dist/core/registry/index.d.ts.map +1 -0
  82. package/dist/core/registry/index.js +19 -0
  83. package/dist/core/registry/index.js.map +1 -0
  84. package/dist/core/registry/registry-freeze.service.d.ts +14 -0
  85. package/dist/core/registry/registry-freeze.service.d.ts.map +1 -0
  86. package/dist/core/registry/registry-freeze.service.js +55 -0
  87. package/dist/core/registry/registry-freeze.service.js.map +1 -0
  88. package/dist/core/registry/registry.d.ts +268 -0
  89. package/dist/core/registry/registry.d.ts.map +1 -0
  90. package/dist/core/registry/registry.js +351 -0
  91. package/dist/core/registry/registry.js.map +1 -0
  92. package/dist/core/registry/testing.d.ts +29 -0
  93. package/dist/core/registry/testing.d.ts.map +1 -0
  94. package/dist/core/registry/testing.js +63 -0
  95. package/dist/core/registry/testing.js.map +1 -0
  96. package/dist/doctor/doctor-check.interface.d.ts +100 -0
  97. package/dist/doctor/doctor-check.interface.d.ts.map +1 -0
  98. package/dist/doctor/doctor-check.interface.js +95 -0
  99. package/dist/doctor/doctor-check.interface.js.map +1 -0
  100. package/dist/doctor/doctor-check.registry.d.ts +37 -0
  101. package/dist/doctor/doctor-check.registry.d.ts.map +1 -0
  102. package/dist/doctor/doctor-check.registry.js +96 -0
  103. package/dist/doctor/doctor-check.registry.js.map +1 -0
  104. package/dist/doctor/doctor.controller.factory.d.ts +29 -0
  105. package/dist/doctor/doctor.controller.factory.d.ts.map +1 -0
  106. package/dist/doctor/doctor.controller.factory.js +121 -0
  107. package/dist/doctor/doctor.controller.factory.js.map +1 -0
  108. package/dist/doctor/doctor.module.d.ts +78 -0
  109. package/dist/doctor/doctor.module.d.ts.map +1 -0
  110. package/dist/doctor/doctor.module.js +158 -0
  111. package/dist/doctor/doctor.module.js.map +1 -0
  112. package/dist/doctor/doctor.options.d.ts +39 -0
  113. package/dist/doctor/doctor.options.d.ts.map +1 -0
  114. package/dist/doctor/doctor.options.js +21 -0
  115. package/dist/doctor/doctor.options.js.map +1 -0
  116. package/dist/doctor/doctor.service.d.ts +80 -0
  117. package/dist/doctor/doctor.service.d.ts.map +1 -0
  118. package/dist/doctor/doctor.service.js +301 -0
  119. package/dist/doctor/doctor.service.js.map +1 -0
  120. package/dist/doctor/dto/doctor-query.dto.d.ts +15 -0
  121. package/dist/doctor/dto/doctor-query.dto.d.ts.map +1 -0
  122. package/dist/doctor/dto/doctor-query.dto.js +16 -0
  123. package/dist/doctor/dto/doctor-query.dto.js.map +1 -0
  124. package/dist/doctor/dto/doctor-report.dto.d.ts +27 -0
  125. package/dist/doctor/dto/doctor-report.dto.d.ts.map +1 -0
  126. package/dist/doctor/dto/doctor-report.dto.js +23 -0
  127. package/dist/doctor/dto/doctor-report.dto.js.map +1 -0
  128. package/dist/doctor/egress/classify-host.d.ts +73 -0
  129. package/dist/doctor/egress/classify-host.d.ts.map +1 -0
  130. package/dist/doctor/egress/classify-host.js +210 -0
  131. package/dist/doctor/egress/classify-host.js.map +1 -0
  132. package/dist/doctor/egress/egress.registry.d.ts +34 -0
  133. package/dist/doctor/egress/egress.registry.d.ts.map +1 -0
  134. package/dist/doctor/egress/egress.registry.js +70 -0
  135. package/dist/doctor/egress/egress.registry.js.map +1 -0
  136. package/dist/doctor/egress/egress.types.d.ts +135 -0
  137. package/dist/doctor/egress/egress.types.d.ts.map +1 -0
  138. package/dist/doctor/egress/egress.types.js +42 -0
  139. package/dist/doctor/egress/egress.types.js.map +1 -0
  140. package/dist/doctor/egress/index.d.ts +6 -0
  141. package/dist/doctor/egress/index.d.ts.map +1 -0
  142. package/dist/doctor/egress/index.js +23 -0
  143. package/dist/doctor/egress/index.js.map +1 -0
  144. package/dist/doctor/egress/network-egress.doctor-check.d.ts +78 -0
  145. package/dist/doctor/egress/network-egress.doctor-check.d.ts.map +1 -0
  146. package/dist/doctor/egress/network-egress.doctor-check.js +226 -0
  147. package/dist/doctor/egress/network-egress.doctor-check.js.map +1 -0
  148. package/dist/doctor/index.d.ts +19 -0
  149. package/dist/doctor/index.d.ts.map +1 -0
  150. package/dist/doctor/index.js +66 -0
  151. package/dist/doctor/index.js.map +1 -0
  152. package/dist/doctor/support-bundle/index.d.ts +12 -0
  153. package/dist/doctor/support-bundle/index.d.ts.map +1 -0
  154. package/dist/doctor/support-bundle/index.js +32 -0
  155. package/dist/doctor/support-bundle/index.js.map +1 -0
  156. package/dist/doctor/support-bundle/redact.d.ts +76 -0
  157. package/dist/doctor/support-bundle/redact.d.ts.map +1 -0
  158. package/dist/doctor/support-bundle/redact.js +236 -0
  159. package/dist/doctor/support-bundle/redact.js.map +1 -0
  160. package/dist/doctor/support-bundle/sections/doctor.section.d.ts +81 -0
  161. package/dist/doctor/support-bundle/sections/doctor.section.d.ts.map +1 -0
  162. package/dist/doctor/support-bundle/sections/doctor.section.js +83 -0
  163. package/dist/doctor/support-bundle/sections/doctor.section.js.map +1 -0
  164. package/dist/doctor/support-bundle/sections/egress.section.d.ts +73 -0
  165. package/dist/doctor/support-bundle/sections/egress.section.d.ts.map +1 -0
  166. package/dist/doctor/support-bundle/sections/egress.section.js +97 -0
  167. package/dist/doctor/support-bundle/sections/egress.section.js.map +1 -0
  168. package/dist/doctor/support-bundle/sections/meta.section.d.ts +39 -0
  169. package/dist/doctor/support-bundle/sections/meta.section.d.ts.map +1 -0
  170. package/dist/doctor/support-bundle/sections/meta.section.js +89 -0
  171. package/dist/doctor/support-bundle/sections/meta.section.js.map +1 -0
  172. package/dist/doctor/support-bundle/support-bundle-section.interface.d.ts +100 -0
  173. package/dist/doctor/support-bundle/support-bundle-section.interface.d.ts.map +1 -0
  174. package/dist/doctor/support-bundle/support-bundle-section.interface.js +59 -0
  175. package/dist/doctor/support-bundle/support-bundle-section.interface.js.map +1 -0
  176. package/dist/doctor/support-bundle/support-bundle.controller.d.ts +57 -0
  177. package/dist/doctor/support-bundle/support-bundle.controller.d.ts.map +1 -0
  178. package/dist/doctor/support-bundle/support-bundle.controller.js +141 -0
  179. package/dist/doctor/support-bundle/support-bundle.controller.js.map +1 -0
  180. package/dist/doctor/support-bundle/support-bundle.options.d.ts +92 -0
  181. package/dist/doctor/support-bundle/support-bundle.options.d.ts.map +1 -0
  182. package/dist/doctor/support-bundle/support-bundle.options.js +100 -0
  183. package/dist/doctor/support-bundle/support-bundle.options.js.map +1 -0
  184. package/dist/doctor/support-bundle/support-bundle.registry.d.ts +38 -0
  185. package/dist/doctor/support-bundle/support-bundle.registry.d.ts.map +1 -0
  186. package/dist/doctor/support-bundle/support-bundle.registry.js +90 -0
  187. package/dist/doctor/support-bundle/support-bundle.registry.js.map +1 -0
  188. package/dist/doctor/support-bundle/support-bundle.service.d.ts +63 -0
  189. package/dist/doctor/support-bundle/support-bundle.service.d.ts.map +1 -0
  190. package/dist/doctor/support-bundle/support-bundle.service.js +244 -0
  191. package/dist/doctor/support-bundle/support-bundle.service.js.map +1 -0
  192. package/dist/index.d.ts +11 -0
  193. package/dist/index.d.ts.map +1 -0
  194. package/dist/index.js +14 -0
  195. package/dist/index.js.map +1 -0
  196. package/dist/otel-core/index.d.ts +9 -0
  197. package/dist/otel-core/index.d.ts.map +1 -0
  198. package/dist/otel-core/index.js +58 -0
  199. package/dist/otel-core/index.js.map +1 -0
  200. package/dist/otel-core/metrics/gauge-provider.d.ts +44 -0
  201. package/dist/otel-core/metrics/gauge-provider.d.ts.map +1 -0
  202. package/dist/otel-core/metrics/gauge-provider.js +37 -0
  203. package/dist/otel-core/metrics/gauge-provider.js.map +1 -0
  204. package/dist/otel-core/metrics/labels.d.ts +79 -0
  205. package/dist/otel-core/metrics/labels.d.ts.map +1 -0
  206. package/dist/otel-core/metrics/labels.js +135 -0
  207. package/dist/otel-core/metrics/labels.js.map +1 -0
  208. package/dist/otel-core/metrics/metric-name.registry.d.ts +130 -0
  209. package/dist/otel-core/metrics/metric-name.registry.d.ts.map +1 -0
  210. package/dist/otel-core/metrics/metric-name.registry.js +134 -0
  211. package/dist/otel-core/metrics/metric-name.registry.js.map +1 -0
  212. package/dist/otel-core/metrics/metrics-host.service.d.ts +163 -0
  213. package/dist/otel-core/metrics/metrics-host.service.d.ts.map +1 -0
  214. package/dist/otel-core/metrics/metrics-host.service.js +344 -0
  215. package/dist/otel-core/metrics/metrics-host.service.js.map +1 -0
  216. package/dist/otel-core/metrics/otel-metrics.module.d.ts +54 -0
  217. package/dist/otel-core/metrics/otel-metrics.module.d.ts.map +1 -0
  218. package/dist/otel-core/metrics/otel-metrics.module.js +83 -0
  219. package/dist/otel-core/metrics/otel-metrics.module.js.map +1 -0
  220. package/dist/otel-core/sdk/index.d.ts +5 -0
  221. package/dist/otel-core/sdk/index.d.ts.map +1 -0
  222. package/dist/otel-core/sdk/index.js +27 -0
  223. package/dist/otel-core/sdk/index.js.map +1 -0
  224. package/dist/otel-core/sdk/initialize-otel.d.ts +126 -0
  225. package/dist/otel-core/sdk/initialize-otel.d.ts.map +1 -0
  226. package/dist/otel-core/sdk/initialize-otel.js +204 -0
  227. package/dist/otel-core/sdk/initialize-otel.js.map +1 -0
  228. package/dist/otel-core/sdk/instance-id.d.ts +29 -0
  229. package/dist/otel-core/sdk/instance-id.d.ts.map +1 -0
  230. package/dist/otel-core/sdk/instance-id.js +65 -0
  231. package/dist/otel-core/sdk/instance-id.js.map +1 -0
  232. package/dist/otel-core/sdk/service-name.d.ts +28 -0
  233. package/dist/otel-core/sdk/service-name.d.ts.map +1 -0
  234. package/dist/otel-core/sdk/service-name.js +63 -0
  235. package/dist/otel-core/sdk/service-name.js.map +1 -0
  236. package/dist/otel-core/sdk/telemetry-gate.d.ts +116 -0
  237. package/dist/otel-core/sdk/telemetry-gate.d.ts.map +1 -0
  238. package/dist/otel-core/sdk/telemetry-gate.js +297 -0
  239. package/dist/otel-core/sdk/telemetry-gate.js.map +1 -0
  240. package/dist/otel-core/spans/request-span-attributes.d.ts +58 -0
  241. package/dist/otel-core/spans/request-span-attributes.d.ts.map +1 -0
  242. package/dist/otel-core/spans/request-span-attributes.js +155 -0
  243. package/dist/otel-core/spans/request-span-attributes.js.map +1 -0
  244. package/dist/otel-core/spans/trace.decorator.d.ts +36 -0
  245. package/dist/otel-core/spans/trace.decorator.d.ts.map +1 -0
  246. package/dist/otel-core/spans/trace.decorator.js +74 -0
  247. package/dist/otel-core/spans/trace.decorator.js.map +1 -0
  248. package/dist/telemetry/assistant/telemetry-ai-enabled.guard.d.ts +15 -0
  249. package/dist/telemetry/assistant/telemetry-ai-enabled.guard.d.ts.map +1 -0
  250. package/dist/telemetry/assistant/telemetry-ai-enabled.guard.js +50 -0
  251. package/dist/telemetry/assistant/telemetry-ai-enabled.guard.js.map +1 -0
  252. package/dist/telemetry/assistant/telemetry-assistant.controller.d.ts +14 -0
  253. package/dist/telemetry/assistant/telemetry-assistant.controller.d.ts.map +1 -0
  254. package/dist/telemetry/assistant/telemetry-assistant.controller.js +178 -0
  255. package/dist/telemetry/assistant/telemetry-assistant.controller.js.map +1 -0
  256. package/dist/telemetry/assistant/telemetry-assistant.metrics.d.ts +147 -0
  257. package/dist/telemetry/assistant/telemetry-assistant.metrics.d.ts.map +1 -0
  258. package/dist/telemetry/assistant/telemetry-assistant.metrics.js +495 -0
  259. package/dist/telemetry/assistant/telemetry-assistant.metrics.js.map +1 -0
  260. package/dist/telemetry/assistant/telemetry-assistant.service.d.ts +216 -0
  261. package/dist/telemetry/assistant/telemetry-assistant.service.d.ts.map +1 -0
  262. package/dist/telemetry/assistant/telemetry-assistant.service.js +1256 -0
  263. package/dist/telemetry/assistant/telemetry-assistant.service.js.map +1 -0
  264. package/dist/telemetry/assistant/telemetry-assistant.sql.d.ts +69 -0
  265. package/dist/telemetry/assistant/telemetry-assistant.sql.d.ts.map +1 -0
  266. package/dist/telemetry/assistant/telemetry-assistant.sql.js +471 -0
  267. package/dist/telemetry/assistant/telemetry-assistant.sql.js.map +1 -0
  268. package/dist/telemetry/assistant/telemetry-assistant.sse.d.ts +15 -0
  269. package/dist/telemetry/assistant/telemetry-assistant.sse.d.ts.map +1 -0
  270. package/dist/telemetry/assistant/telemetry-assistant.sse.js +68 -0
  271. package/dist/telemetry/assistant/telemetry-assistant.sse.js.map +1 -0
  272. package/dist/telemetry/connection/dto/telemetry-connection.dto.d.ts +92 -0
  273. package/dist/telemetry/connection/dto/telemetry-connection.dto.d.ts.map +1 -0
  274. package/dist/telemetry/connection/dto/telemetry-connection.dto.js +41 -0
  275. package/dist/telemetry/connection/dto/telemetry-connection.dto.js.map +1 -0
  276. package/dist/telemetry/connection/telemetry-connection-admin.service.d.ts +45 -0
  277. package/dist/telemetry/connection/telemetry-connection-admin.service.d.ts.map +1 -0
  278. package/dist/telemetry/connection/telemetry-connection-admin.service.js +303 -0
  279. package/dist/telemetry/connection/telemetry-connection-admin.service.js.map +1 -0
  280. package/dist/telemetry/connection/telemetry-connection-test.service.d.ts +41 -0
  281. package/dist/telemetry/connection/telemetry-connection-test.service.d.ts.map +1 -0
  282. package/dist/telemetry/connection/telemetry-connection-test.service.js +187 -0
  283. package/dist/telemetry/connection/telemetry-connection-test.service.js.map +1 -0
  284. package/dist/telemetry/connection/telemetry-connection.controller.d.ts +14 -0
  285. package/dist/telemetry/connection/telemetry-connection.controller.d.ts.map +1 -0
  286. package/dist/telemetry/connection/telemetry-connection.controller.js +192 -0
  287. package/dist/telemetry/connection/telemetry-connection.controller.js.map +1 -0
  288. package/dist/telemetry/connection/telemetry-connection.schema.d.ts +28 -0
  289. package/dist/telemetry/connection/telemetry-connection.schema.d.ts.map +1 -0
  290. package/dist/telemetry/connection/telemetry-connection.schema.js +106 -0
  291. package/dist/telemetry/connection/telemetry-connection.schema.js.map +1 -0
  292. package/dist/telemetry/connection/telemetry-connection.service.d.ts +197 -0
  293. package/dist/telemetry/connection/telemetry-connection.service.d.ts.map +1 -0
  294. package/dist/telemetry/connection/telemetry-connection.service.js +461 -0
  295. package/dist/telemetry/connection/telemetry-connection.service.js.map +1 -0
  296. package/dist/telemetry/dashboard/sql-literals.d.ts +19 -0
  297. package/dist/telemetry/dashboard/sql-literals.d.ts.map +1 -0
  298. package/dist/telemetry/dashboard/sql-literals.js +75 -0
  299. package/dist/telemetry/dashboard/sql-literals.js.map +1 -0
  300. package/dist/telemetry/dashboard/telemetry-dashboard.controller.d.ts +14 -0
  301. package/dist/telemetry/dashboard/telemetry-dashboard.controller.d.ts.map +1 -0
  302. package/dist/telemetry/dashboard/telemetry-dashboard.controller.js +277 -0
  303. package/dist/telemetry/dashboard/telemetry-dashboard.controller.js.map +1 -0
  304. package/dist/telemetry/dashboard/telemetry-dashboard.service.d.ts +112 -0
  305. package/dist/telemetry/dashboard/telemetry-dashboard.service.d.ts.map +1 -0
  306. package/dist/telemetry/dashboard/telemetry-dashboard.service.js +904 -0
  307. package/dist/telemetry/dashboard/telemetry-dashboard.service.js.map +1 -0
  308. package/dist/telemetry/dashboard/telemetry-dashboard.sql.d.ts +212 -0
  309. package/dist/telemetry/dashboard/telemetry-dashboard.sql.d.ts.map +1 -0
  310. package/dist/telemetry/dashboard/telemetry-dashboard.sql.js +486 -0
  311. package/dist/telemetry/dashboard/telemetry-dashboard.sql.js.map +1 -0
  312. package/dist/telemetry/dashboard/telemetry-dashboard.verdict.d.ts +235 -0
  313. package/dist/telemetry/dashboard/telemetry-dashboard.verdict.d.ts.map +1 -0
  314. package/dist/telemetry/dashboard/telemetry-dashboard.verdict.js +269 -0
  315. package/dist/telemetry/dashboard/telemetry-dashboard.verdict.js.map +1 -0
  316. package/dist/telemetry/dashboard/verdict-policy.d.ts +51 -0
  317. package/dist/telemetry/dashboard/verdict-policy.d.ts.map +1 -0
  318. package/dist/telemetry/dashboard/verdict-policy.js +77 -0
  319. package/dist/telemetry/dashboard/verdict-policy.js.map +1 -0
  320. package/dist/telemetry/doctor/egress/greptimedb.egress.contributor.d.ts +21 -0
  321. package/dist/telemetry/doctor/egress/greptimedb.egress.contributor.d.ts.map +1 -0
  322. package/dist/telemetry/doctor/egress/greptimedb.egress.contributor.js +59 -0
  323. package/dist/telemetry/doctor/egress/greptimedb.egress.contributor.js.map +1 -0
  324. package/dist/telemetry/doctor/telemetry-connection.doctor-check.d.ts +23 -0
  325. package/dist/telemetry/doctor/telemetry-connection.doctor-check.d.ts.map +1 -0
  326. package/dist/telemetry/doctor/telemetry-connection.doctor-check.js +69 -0
  327. package/dist/telemetry/doctor/telemetry-connection.doctor-check.js.map +1 -0
  328. package/dist/telemetry/doctor/telemetry-export.doctor-check.d.ts +33 -0
  329. package/dist/telemetry/doctor/telemetry-export.doctor-check.d.ts.map +1 -0
  330. package/dist/telemetry/doctor/telemetry-export.doctor-check.js +105 -0
  331. package/dist/telemetry/doctor/telemetry-export.doctor-check.js.map +1 -0
  332. package/dist/telemetry/doctor/telemetry-freshness.doctor-check.d.ts +38 -0
  333. package/dist/telemetry/doctor/telemetry-freshness.doctor-check.d.ts.map +1 -0
  334. package/dist/telemetry/doctor/telemetry-freshness.doctor-check.js +104 -0
  335. package/dist/telemetry/doctor/telemetry-freshness.doctor-check.js.map +1 -0
  336. package/dist/telemetry/doctor/telemetry-reachable.doctor-check.d.ts +23 -0
  337. package/dist/telemetry/doctor/telemetry-reachable.doctor-check.d.ts.map +1 -0
  338. package/dist/telemetry/doctor/telemetry-reachable.doctor-check.js +65 -0
  339. package/dist/telemetry/doctor/telemetry-reachable.doctor-check.js.map +1 -0
  340. package/dist/telemetry/doctor/telemetry-tables.doctor-check.d.ts +23 -0
  341. package/dist/telemetry/doctor/telemetry-tables.doctor-check.d.ts.map +1 -0
  342. package/dist/telemetry/doctor/telemetry-tables.doctor-check.js +91 -0
  343. package/dist/telemetry/doctor/telemetry-tables.doctor-check.js.map +1 -0
  344. package/dist/telemetry/dto/telemetry-assistant.dto.d.ts +14 -0
  345. package/dist/telemetry/dto/telemetry-assistant.dto.d.ts.map +1 -0
  346. package/dist/telemetry/dto/telemetry-assistant.dto.js +29 -0
  347. package/dist/telemetry/dto/telemetry-assistant.dto.js.map +1 -0
  348. package/dist/telemetry/dto/telemetry-config.dto.d.ts +59 -0
  349. package/dist/telemetry/dto/telemetry-config.dto.d.ts.map +1 -0
  350. package/dist/telemetry/dto/telemetry-config.dto.js +18 -0
  351. package/dist/telemetry/dto/telemetry-config.dto.js.map +1 -0
  352. package/dist/telemetry/dto/telemetry-dashboard.dto.d.ts +397 -0
  353. package/dist/telemetry/dto/telemetry-dashboard.dto.d.ts.map +1 -0
  354. package/dist/telemetry/dto/telemetry-dashboard.dto.js +118 -0
  355. package/dist/telemetry/dto/telemetry-dashboard.dto.js.map +1 -0
  356. package/dist/telemetry/dto/telemetry-query.dto.d.ts +44 -0
  357. package/dist/telemetry/dto/telemetry-query.dto.d.ts.map +1 -0
  358. package/dist/telemetry/dto/telemetry-query.dto.js +42 -0
  359. package/dist/telemetry/dto/telemetry-query.dto.js.map +1 -0
  360. package/dist/telemetry/dto/telemetry-status.dto.d.ts +22 -0
  361. package/dist/telemetry/dto/telemetry-status.dto.d.ts.map +1 -0
  362. package/dist/telemetry/dto/telemetry-status.dto.js +12 -0
  363. package/dist/telemetry/dto/telemetry-status.dto.js.map +1 -0
  364. package/dist/telemetry/export/parquet-writer.loader.d.ts +13 -0
  365. package/dist/telemetry/export/parquet-writer.loader.d.ts.map +1 -0
  366. package/dist/telemetry/export/parquet-writer.loader.js +29 -0
  367. package/dist/telemetry/export/parquet-writer.loader.js.map +1 -0
  368. package/dist/telemetry/export/telemetry-export.service.d.ts +39 -0
  369. package/dist/telemetry/export/telemetry-export.service.d.ts.map +1 -0
  370. package/dist/telemetry/export/telemetry-export.service.js +185 -0
  371. package/dist/telemetry/export/telemetry-export.service.js.map +1 -0
  372. package/dist/telemetry/greptime/greptime-host.d.ts +44 -0
  373. package/dist/telemetry/greptime/greptime-host.d.ts.map +1 -0
  374. package/dist/telemetry/greptime/greptime-host.js +114 -0
  375. package/dist/telemetry/greptime/greptime-host.js.map +1 -0
  376. package/dist/telemetry/greptime/greptime.client.d.ts +171 -0
  377. package/dist/telemetry/greptime/greptime.client.d.ts.map +1 -0
  378. package/dist/telemetry/greptime/greptime.client.js +352 -0
  379. package/dist/telemetry/greptime/greptime.client.js.map +1 -0
  380. package/dist/telemetry/greptime/greptime.errors.d.ts +59 -0
  381. package/dist/telemetry/greptime/greptime.errors.d.ts.map +1 -0
  382. package/dist/telemetry/greptime/greptime.errors.js +100 -0
  383. package/dist/telemetry/greptime/greptime.errors.js.map +1 -0
  384. package/dist/telemetry/handlers/telemetry-retention.handler.d.ts +27 -0
  385. package/dist/telemetry/handlers/telemetry-retention.handler.d.ts.map +1 -0
  386. package/dist/telemetry/handlers/telemetry-retention.handler.js +123 -0
  387. package/dist/telemetry/handlers/telemetry-retention.handler.js.map +1 -0
  388. package/dist/telemetry/index.d.ts +37 -0
  389. package/dist/telemetry/index.d.ts.map +1 -0
  390. package/dist/telemetry/index.js +97 -0
  391. package/dist/telemetry/index.js.map +1 -0
  392. package/dist/telemetry/internal/blank-secret.d.ts +3 -0
  393. package/dist/telemetry/internal/blank-secret.d.ts.map +1 -0
  394. package/dist/telemetry/internal/blank-secret.js +14 -0
  395. package/dist/telemetry/internal/blank-secret.js.map +1 -0
  396. package/dist/telemetry/internal/csv.d.ts +9 -0
  397. package/dist/telemetry/internal/csv.d.ts.map +1 -0
  398. package/dist/telemetry/internal/csv.js +23 -0
  399. package/dist/telemetry/internal/csv.js.map +1 -0
  400. package/dist/telemetry/internal/sse.d.ts +23 -0
  401. package/dist/telemetry/internal/sse.d.ts.map +1 -0
  402. package/dist/telemetry/internal/sse.js +43 -0
  403. package/dist/telemetry/internal/sse.js.map +1 -0
  404. package/dist/telemetry/metrics/groups/database.metric-group.d.ts +7 -0
  405. package/dist/telemetry/metrics/groups/database.metric-group.d.ts.map +1 -0
  406. package/dist/telemetry/metrics/groups/database.metric-group.js +159 -0
  407. package/dist/telemetry/metrics/groups/database.metric-group.js.map +1 -0
  408. package/dist/telemetry/metrics/groups/host.metric-group.d.ts +7 -0
  409. package/dist/telemetry/metrics/groups/host.metric-group.d.ts.map +1 -0
  410. package/dist/telemetry/metrics/groups/host.metric-group.js +146 -0
  411. package/dist/telemetry/metrics/groups/host.metric-group.js.map +1 -0
  412. package/dist/telemetry/metrics/groups/nodes.metric-group.d.ts +7 -0
  413. package/dist/telemetry/metrics/groups/nodes.metric-group.d.ts.map +1 -0
  414. package/dist/telemetry/metrics/groups/nodes.metric-group.js +159 -0
  415. package/dist/telemetry/metrics/groups/nodes.metric-group.js.map +1 -0
  416. package/dist/telemetry/metrics/groups/pipeline.metric-group.d.ts +7 -0
  417. package/dist/telemetry/metrics/groups/pipeline.metric-group.d.ts.map +1 -0
  418. package/dist/telemetry/metrics/groups/pipeline.metric-group.js +144 -0
  419. package/dist/telemetry/metrics/groups/pipeline.metric-group.js.map +1 -0
  420. package/dist/telemetry/metrics/groups/queue.metric-group.d.ts +7 -0
  421. package/dist/telemetry/metrics/groups/queue.metric-group.d.ts.map +1 -0
  422. package/dist/telemetry/metrics/groups/queue.metric-group.js +163 -0
  423. package/dist/telemetry/metrics/groups/queue.metric-group.js.map +1 -0
  424. package/dist/telemetry/metrics/groups/uptime.metric-group.d.ts +7 -0
  425. package/dist/telemetry/metrics/groups/uptime.metric-group.d.ts.map +1 -0
  426. package/dist/telemetry/metrics/groups/uptime.metric-group.js +103 -0
  427. package/dist/telemetry/metrics/groups/uptime.metric-group.js.map +1 -0
  428. package/dist/telemetry/metrics/metric-catalog.d.ts +324 -0
  429. package/dist/telemetry/metrics/metric-catalog.d.ts.map +1 -0
  430. package/dist/telemetry/metrics/metric-catalog.helpers.d.ts +30 -0
  431. package/dist/telemetry/metrics/metric-catalog.helpers.d.ts.map +1 -0
  432. package/dist/telemetry/metrics/metric-catalog.helpers.js +37 -0
  433. package/dist/telemetry/metrics/metric-catalog.helpers.js.map +1 -0
  434. package/dist/telemetry/metrics/metric-catalog.js +180 -0
  435. package/dist/telemetry/metrics/metric-catalog.js.map +1 -0
  436. package/dist/telemetry/metrics/metric-group-registry.service.d.ts +59 -0
  437. package/dist/telemetry/metrics/metric-group-registry.service.d.ts.map +1 -0
  438. package/dist/telemetry/metrics/metric-group-registry.service.js +99 -0
  439. package/dist/telemetry/metrics/metric-group-registry.service.js.map +1 -0
  440. package/dist/telemetry/metrics/metric-group.d.ts +113 -0
  441. package/dist/telemetry/metrics/metric-group.d.ts.map +1 -0
  442. package/dist/telemetry/metrics/metric-group.js +647 -0
  443. package/dist/telemetry/metrics/metric-group.js.map +1 -0
  444. package/dist/telemetry/metrics/metric-group.manifest.d.ts +2 -0
  445. package/dist/telemetry/metrics/metric-group.manifest.d.ts.map +1 -0
  446. package/dist/telemetry/metrics/metric-group.manifest.js +30 -0
  447. package/dist/telemetry/metrics/metric-group.manifest.js.map +1 -0
  448. package/dist/telemetry/metrics/metric-group.registry.d.ts +109 -0
  449. package/dist/telemetry/metrics/metric-group.registry.d.ts.map +1 -0
  450. package/dist/telemetry/metrics/metric-group.registry.js +181 -0
  451. package/dist/telemetry/metrics/metric-group.registry.js.map +1 -0
  452. package/dist/telemetry/metrics/metric-sql.d.ts +98 -0
  453. package/dist/telemetry/metrics/metric-sql.d.ts.map +1 -0
  454. package/dist/telemetry/metrics/metric-sql.js +259 -0
  455. package/dist/telemetry/metrics/metric-sql.js.map +1 -0
  456. package/dist/telemetry/metrics/metric-values.d.ts +19 -0
  457. package/dist/telemetry/metrics/metric-values.d.ts.map +1 -0
  458. package/dist/telemetry/metrics/metric-values.js +97 -0
  459. package/dist/telemetry/metrics/metric-values.js.map +1 -0
  460. package/dist/telemetry/metrics/metric-verdict.d.ts +20 -0
  461. package/dist/telemetry/metrics/metric-verdict.d.ts.map +1 -0
  462. package/dist/telemetry/metrics/metric-verdict.js +218 -0
  463. package/dist/telemetry/metrics/metric-verdict.js.map +1 -0
  464. package/dist/telemetry/ports.d.ts +575 -0
  465. package/dist/telemetry/ports.d.ts.map +1 -0
  466. package/dist/telemetry/ports.js +78 -0
  467. package/dist/telemetry/ports.js.map +1 -0
  468. package/dist/telemetry/query/sql-guard.d.ts +71 -0
  469. package/dist/telemetry/query/sql-guard.d.ts.map +1 -0
  470. package/dist/telemetry/query/sql-guard.js +258 -0
  471. package/dist/telemetry/query/sql-guard.js.map +1 -0
  472. package/dist/telemetry/query/telemetry-availability.d.ts +11 -0
  473. package/dist/telemetry/query/telemetry-availability.d.ts.map +1 -0
  474. package/dist/telemetry/query/telemetry-availability.js +55 -0
  475. package/dist/telemetry/query/telemetry-availability.js.map +1 -0
  476. package/dist/telemetry/query/telemetry-query.errors.d.ts +48 -0
  477. package/dist/telemetry/query/telemetry-query.errors.d.ts.map +1 -0
  478. package/dist/telemetry/query/telemetry-query.errors.js +100 -0
  479. package/dist/telemetry/query/telemetry-query.errors.js.map +1 -0
  480. package/dist/telemetry/query/telemetry-query.service.d.ts +57 -0
  481. package/dist/telemetry/query/telemetry-query.service.d.ts.map +1 -0
  482. package/dist/telemetry/query/telemetry-query.service.js +194 -0
  483. package/dist/telemetry/query/telemetry-query.service.js.map +1 -0
  484. package/dist/telemetry/query/telemetry-schema.service.d.ts +36 -0
  485. package/dist/telemetry/query/telemetry-schema.service.d.ts.map +1 -0
  486. package/dist/telemetry/query/telemetry-schema.service.js +154 -0
  487. package/dist/telemetry/query/telemetry-schema.service.js.map +1 -0
  488. package/dist/telemetry/stack/dto/telemetry-stack.dto.d.ts +29 -0
  489. package/dist/telemetry/stack/dto/telemetry-stack.dto.d.ts.map +1 -0
  490. package/dist/telemetry/stack/dto/telemetry-stack.dto.js +27 -0
  491. package/dist/telemetry/stack/dto/telemetry-stack.dto.js.map +1 -0
  492. package/dist/telemetry/stack/stack-agent.client.d.ts +76 -0
  493. package/dist/telemetry/stack/stack-agent.client.d.ts.map +1 -0
  494. package/dist/telemetry/stack/stack-agent.client.js +208 -0
  495. package/dist/telemetry/stack/stack-agent.client.js.map +1 -0
  496. package/dist/telemetry/stack/telemetry-stack-deploy.handler.d.ts +43 -0
  497. package/dist/telemetry/stack/telemetry-stack-deploy.handler.d.ts.map +1 -0
  498. package/dist/telemetry/stack/telemetry-stack-deploy.handler.js +159 -0
  499. package/dist/telemetry/stack/telemetry-stack-deploy.handler.js.map +1 -0
  500. package/dist/telemetry/stack/telemetry-stack.controller.d.ts +14 -0
  501. package/dist/telemetry/stack/telemetry-stack.controller.d.ts.map +1 -0
  502. package/dist/telemetry/stack/telemetry-stack.controller.js +107 -0
  503. package/dist/telemetry/stack/telemetry-stack.controller.js.map +1 -0
  504. package/dist/telemetry/stack/telemetry-stack.service.d.ts +19 -0
  505. package/dist/telemetry/stack/telemetry-stack.service.d.ts.map +1 -0
  506. package/dist/telemetry/stack/telemetry-stack.service.js +122 -0
  507. package/dist/telemetry/stack/telemetry-stack.service.js.map +1 -0
  508. package/dist/telemetry/tasks/telemetry-retention.task.d.ts +8 -0
  509. package/dist/telemetry/tasks/telemetry-retention.task.d.ts.map +1 -0
  510. package/dist/telemetry/tasks/telemetry-retention.task.js +61 -0
  511. package/dist/telemetry/tasks/telemetry-retention.task.js.map +1 -0
  512. package/dist/telemetry/telemetry-admin.controller.d.ts +14 -0
  513. package/dist/telemetry/telemetry-admin.controller.d.ts.map +1 -0
  514. package/dist/telemetry/telemetry-admin.controller.js +148 -0
  515. package/dist/telemetry/telemetry-admin.controller.js.map +1 -0
  516. package/dist/telemetry/telemetry-config.controller.d.ts +14 -0
  517. package/dist/telemetry/telemetry-config.controller.d.ts.map +1 -0
  518. package/dist/telemetry/telemetry-config.controller.js +73 -0
  519. package/dist/telemetry/telemetry-config.controller.js.map +1 -0
  520. package/dist/telemetry/telemetry-explorer.controller.d.ts +14 -0
  521. package/dist/telemetry/telemetry-explorer.controller.d.ts.map +1 -0
  522. package/dist/telemetry/telemetry-explorer.controller.js +193 -0
  523. package/dist/telemetry/telemetry-explorer.controller.js.map +1 -0
  524. package/dist/telemetry/telemetry-settings.service.d.ts +85 -0
  525. package/dist/telemetry/telemetry-settings.service.d.ts.map +1 -0
  526. package/dist/telemetry/telemetry-settings.service.js +278 -0
  527. package/dist/telemetry/telemetry-settings.service.js.map +1 -0
  528. package/dist/telemetry/telemetry-status.service.d.ts +28 -0
  529. package/dist/telemetry/telemetry-status.service.d.ts.map +1 -0
  530. package/dist/telemetry/telemetry-status.service.js +185 -0
  531. package/dist/telemetry/telemetry-status.service.js.map +1 -0
  532. package/dist/telemetry/telemetry-support-bundle.section.d.ts +163 -0
  533. package/dist/telemetry/telemetry-support-bundle.section.d.ts.map +1 -0
  534. package/dist/telemetry/telemetry-support-bundle.section.js +187 -0
  535. package/dist/telemetry/telemetry-support-bundle.section.js.map +1 -0
  536. package/dist/telemetry/telemetry.module.d.ts +35 -0
  537. package/dist/telemetry/telemetry.module.d.ts.map +1 -0
  538. package/dist/telemetry/telemetry.module.js +210 -0
  539. package/dist/telemetry/telemetry.module.js.map +1 -0
  540. package/dist/telemetry/telemetry.options.d.ts +176 -0
  541. package/dist/telemetry/telemetry.options.d.ts.map +1 -0
  542. package/dist/telemetry/telemetry.options.js +246 -0
  543. package/dist/telemetry/telemetry.options.js.map +1 -0
  544. package/dist/telemetry/telemetry.permissions.d.ts +76 -0
  545. package/dist/telemetry/telemetry.permissions.d.ts.map +1 -0
  546. package/dist/telemetry/telemetry.permissions.js +85 -0
  547. package/dist/telemetry/telemetry.permissions.js.map +1 -0
  548. package/dist/telemetry/telemetry.settings.d.ts +79 -0
  549. package/dist/telemetry/telemetry.settings.d.ts.map +1 -0
  550. package/dist/telemetry/telemetry.settings.js +92 -0
  551. package/dist/telemetry/telemetry.settings.js.map +1 -0
  552. package/dist/telemetry/testing/coach-metric-group.fixture.d.ts +17 -0
  553. package/dist/telemetry/testing/coach-metric-group.fixture.d.ts.map +1 -0
  554. package/dist/telemetry/testing/coach-metric-group.fixture.js +128 -0
  555. package/dist/telemetry/testing/coach-metric-group.fixture.js.map +1 -0
  556. package/dist/telemetry/testing/conformance.d.ts +257 -0
  557. package/dist/telemetry/testing/conformance.d.ts.map +1 -0
  558. package/dist/telemetry/testing/conformance.js +626 -0
  559. package/dist/telemetry/testing/conformance.js.map +1 -0
  560. package/dist/telemetry/testing/index.d.ts +10 -0
  561. package/dist/telemetry/testing/index.d.ts.map +1 -0
  562. package/dist/telemetry/testing/index.js +41 -0
  563. package/dist/telemetry/testing/index.js.map +1 -0
  564. package/dist/telemetry/testing/metric-schema.fixture.d.ts +73 -0
  565. package/dist/telemetry/testing/metric-schema.fixture.d.ts.map +1 -0
  566. package/dist/telemetry/testing/metric-schema.fixture.js +362 -0
  567. package/dist/telemetry/testing/metric-schema.fixture.js.map +1 -0
  568. package/dist/telemetry/testing/stub-ports.d.ts +46 -0
  569. package/dist/telemetry/testing/stub-ports.d.ts.map +1 -0
  570. package/dist/telemetry/testing/stub-ports.js +119 -0
  571. package/dist/telemetry/testing/stub-ports.js.map +1 -0
  572. package/dist/testing/conformance-suite.d.ts +106 -0
  573. package/dist/testing/conformance-suite.d.ts.map +1 -0
  574. package/dist/testing/conformance-suite.js +8 -0
  575. package/dist/testing/conformance-suite.js.map +1 -0
  576. package/dist/testing/conformance-suites.d.ts +14 -0
  577. package/dist/testing/conformance-suites.d.ts.map +1 -0
  578. package/dist/testing/conformance-suites.js +27 -0
  579. package/dist/testing/conformance-suites.js.map +1 -0
  580. package/dist/testing/host/in-memory-audit-sink.d.ts +23 -0
  581. package/dist/testing/host/in-memory-audit-sink.d.ts.map +1 -0
  582. package/dist/testing/host/in-memory-audit-sink.js +30 -0
  583. package/dist/testing/host/in-memory-audit-sink.js.map +1 -0
  584. package/dist/testing/host/in-memory-system-settings-store.d.ts +31 -0
  585. package/dist/testing/host/in-memory-system-settings-store.d.ts.map +1 -0
  586. package/dist/testing/host/in-memory-system-settings-store.js +54 -0
  587. package/dist/testing/host/in-memory-system-settings-store.js.map +1 -0
  588. package/dist/testing/host/index.d.ts +4 -0
  589. package/dist/testing/host/index.d.ts.map +1 -0
  590. package/dist/testing/host/index.js +13 -0
  591. package/dist/testing/host/index.js.map +1 -0
  592. package/dist/testing/host/test-platform-host.d.ts +35 -0
  593. package/dist/testing/host/test-platform-host.d.ts.map +1 -0
  594. package/dist/testing/host/test-platform-host.js +81 -0
  595. package/dist/testing/host/test-platform-host.js.map +1 -0
  596. package/dist/testing/index.d.ts +12 -0
  597. package/dist/testing/index.d.ts.map +1 -0
  598. package/dist/testing/index.js +32 -0
  599. package/dist/testing/index.js.map +1 -0
  600. package/dist/testing/prisma-schema.d.ts +99 -0
  601. package/dist/testing/prisma-schema.d.ts.map +1 -0
  602. package/dist/testing/prisma-schema.js +175 -0
  603. package/dist/testing/prisma-schema.js.map +1 -0
  604. package/dist/testing/run-platform-conformance.d.ts +70 -0
  605. package/dist/testing/run-platform-conformance.d.ts.map +1 -0
  606. package/dist/testing/run-platform-conformance.js +77 -0
  607. package/dist/testing/run-platform-conformance.js.map +1 -0
  608. package/dist/testing/suites/cron-enqueue-only.d.ts +46 -0
  609. package/dist/testing/suites/cron-enqueue-only.d.ts.map +1 -0
  610. package/dist/testing/suites/cron-enqueue-only.js +177 -0
  611. package/dist/testing/suites/cron-enqueue-only.js.map +1 -0
  612. package/dist/testing/suites/user-owned-data.d.ts +86 -0
  613. package/dist/testing/suites/user-owned-data.d.ts.map +1 -0
  614. package/dist/testing/suites/user-owned-data.js +329 -0
  615. package/dist/testing/suites/user-owned-data.js.map +1 -0
  616. package/package.json +129 -4
@@ -0,0 +1,626 @@
1
+ "use strict";
2
+ // =============================================================================
3
+ // The telemetry slice's conformance suite (PP-4.6)
4
+ // =============================================================================
5
+ //
6
+ // "Conformance suites travel with packages" (docs/specs/platform-packages.md):
7
+ // the slice's invariants used to be enforced by tests that live in the
8
+ // platform repository, so an app that consumed the package stopped being
9
+ // checked. This suite is those invariants as a registered
10
+ // `ConformanceSuite`, run in every app through `runPlatformConformance()`:
11
+ //
12
+ // 1 metric groups every registered group is well formed, and computes
13
+ // against an empty schema with everything `skipped`
14
+ // 2 route permissions every route declares exactly its permissions
15
+ // 3 doctor read-only no telemetry Doctor check can write, enqueue or audit
16
+ // 4 no secrets the connection and config responses never carry a
17
+ // stored password
18
+ // 5 queue rule the app's cron scan covers the slice's cron
19
+ // 6 boot without store the module boots with no GreptimeDB and every
20
+ // dashboard route answers its documented response
21
+ //
22
+ // EVERYTHING IS DISCOVERED, nothing is a hand-kept list of routes, groups or
23
+ // checks: groups from `metricGroupRegistry`, routes from the Nest metadata of
24
+ // the controllers `TelemetryModule.forRoot` builds, Doctor checks from the
25
+ // providers that inject the `DoctorCheckRegistry`. The expectations below are
26
+ // rules (a permission per route SHAPE) so a new route that matches no rule is
27
+ // itself a finding.
28
+ //
29
+ // Check 7 (web/API permission parity) runs in the web test suite
30
+ // (`apps/web/src/__tests__/config/telemetryParity.test.ts`) and check 8 (infra
31
+ // drift) is `platform-infra sync --check` in CI.
32
+ //
33
+ // Each check is also an exported function over its input, so the package proves
34
+ // it FAILS on a deliberately broken fixture (`test/telemetry/conformance.spec.ts`).
35
+ // =============================================================================
36
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
37
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
38
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
39
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
40
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
41
+ };
42
+ Object.defineProperty(exports, "__esModule", { value: true });
43
+ exports.telemetryConformanceSuite = exports.CONFORMANCE_SECRETS = exports.bootStubApp = exports.TELEMETRY_CRON_FILE = void 0;
44
+ exports.checkMetricGroups = checkMetricGroups;
45
+ exports.checkMetricGroupsOnEmptySchema = checkMetricGroupsOnEmptySchema;
46
+ exports.discoverRoutes = discoverRoutes;
47
+ exports.checkRoutePermissions = checkRoutePermissions;
48
+ exports.discoverDoctorChecks = discoverDoctorChecks;
49
+ exports.checkDoctorReadOnly = checkDoctorReadOnly;
50
+ exports.checkCronCoverage = checkCronCoverage;
51
+ exports.checkNoSecretsInResponses = checkNoSecretsInResponses;
52
+ exports.checkBootsWithoutTelemetry = checkBootsWithoutTelemetry;
53
+ const common_1 = require("@nestjs/common");
54
+ const constants_1 = require("@nestjs/common/constants");
55
+ const config_1 = require("@nestjs/config");
56
+ const core_1 = require("@nestjs/core");
57
+ const telemetry_1 = require("@marinoscar/platform-contract/telemetry");
58
+ const index_1 = require("../../doctor/index");
59
+ const index_2 = require("../../testing/index");
60
+ const telemetry_ai_enabled_guard_1 = require("../assistant/telemetry-ai-enabled.guard");
61
+ const telemetry_connection_test_service_1 = require("../connection/telemetry-connection-test.service");
62
+ const telemetry_dashboard_service_1 = require("../dashboard/telemetry-dashboard.service");
63
+ const ports_1 = require("../ports");
64
+ const telemetry_query_errors_1 = require("../query/telemetry-query.errors");
65
+ const telemetry_permissions_1 = require("../telemetry.permissions");
66
+ const telemetry_module_1 = require("../telemetry.module");
67
+ const metric_group_1 = require("../metrics/metric-group");
68
+ const metric_catalog_helpers_1 = require("../metrics/metric-catalog.helpers");
69
+ const metric_catalog_helpers_2 = require("../metrics/metric-catalog.helpers");
70
+ const metric_catalog_1 = require("../metrics/metric-catalog");
71
+ const metric_group_registry_1 = require("../metrics/metric-group.registry");
72
+ const stub_ports_1 = require("./stub-ports");
73
+ const FILE_GROUPS = 'metric-groups';
74
+ const FILE_ROUTES = 'routes';
75
+ const FILE_DOCTOR = 'doctor';
76
+ const FILE_CRON = 'cron';
77
+ const FILE_SECRETS = 'no-secrets';
78
+ const FILE_BOOT = 'boot';
79
+ const finding = (file, message) => ({ file, message });
80
+ const lines = (findings) => findings.map((f) => `${f.file}: ${f.message}`);
81
+ // ---- check 1: metric groups ---------------------------------------------------------
82
+ /**
83
+ * Check 1, static half: every group has a unique id matching
84
+ * {@link METRIC_GROUP_ID_PATTERN} and a non-empty label; family, ratio and table
85
+ * keys are unique across groups; every unit is in `METRIC_UNITS`; every filter
86
+ * key is a `METRIC_FILTER_COLUMNS` key; every entry names the group that holds it.
87
+ *
88
+ * @param groups - the groups to check.
89
+ * @returns the violations; empty means conformant.
90
+ *
91
+ * @stability experimental
92
+ */
93
+ function checkMetricGroups(groups) {
94
+ const out = [];
95
+ const units = new Set(metric_catalog_helpers_1.METRIC_UNITS);
96
+ const filters = new Set(Object.keys(metric_catalog_helpers_2.METRIC_FILTER_COLUMNS));
97
+ const ids = new Map();
98
+ const keys = new Map();
99
+ for (const group of groups) {
100
+ const where = `group "${group.id}"`;
101
+ ids.set(group.id, (ids.get(group.id) ?? 0) + 1);
102
+ if (typeof group.id !== 'string' || !metric_group_registry_1.METRIC_GROUP_ID_PATTERN.test(group.id)) {
103
+ out.push(finding(FILE_GROUPS, `${where}: id must match ${metric_group_registry_1.METRIC_GROUP_ID_PATTERN}`));
104
+ }
105
+ if (typeof group.label !== 'string' || group.label.trim() === '')
106
+ out.push(finding(FILE_GROUPS, `${where}: label is empty`));
107
+ const entries = [
108
+ ...group.families.map((f) => ({ kind: 'family', key: f.key, group: f.group, units: [f.unit], filters: f.filters })),
109
+ ...(group.ratios ?? []).map((r) => ({ kind: 'ratio', key: r.key, group: r.group, units: [r.unit], filters: [] })),
110
+ ...(group.tables ?? []).map((t) => ({
111
+ kind: 'table',
112
+ key: t.key,
113
+ group: t.group,
114
+ units: [...t.parts.map((p) => p.unit), ...(t.derived ?? []).map((d) => d.unit)],
115
+ filters: t.filters,
116
+ })),
117
+ ];
118
+ for (const entry of entries) {
119
+ const name = `${where}: ${entry.kind} "${entry.key}"`;
120
+ const owner = keys.get(entry.key);
121
+ if (owner !== undefined)
122
+ out.push(finding(FILE_GROUPS, `${name} key is already used by group "${owner}"; keys are unique across groups`));
123
+ keys.set(entry.key, group.id);
124
+ if (entry.group !== group.id)
125
+ out.push(finding(FILE_GROUPS, `${name} declares group "${entry.group}"`));
126
+ for (const unit of entry.units) {
127
+ if (!units.has(unit))
128
+ out.push(finding(FILE_GROUPS, `${name} has unit "${unit}"; expected one of METRIC_UNITS`));
129
+ }
130
+ for (const filter of entry.filters) {
131
+ if (!filters.has(filter))
132
+ out.push(finding(FILE_GROUPS, `${name} has filter "${filter}"; expected one of ${[...filters].join(', ')}`));
133
+ }
134
+ }
135
+ }
136
+ for (const [id, count] of ids) {
137
+ if (count > 1)
138
+ out.push(finding(FILE_GROUPS, `group id "${id}" is declared ${count} times`));
139
+ }
140
+ return out;
141
+ }
142
+ /**
143
+ * Check 1, dynamic half: every group computes against an EMPTY schema (the
144
+ * store has no metric table) without throwing, reporting everything in
145
+ * `skipped` and nothing as a tile, series or table. A group that errors, or one
146
+ * that renders a number out of nothing, would break the dashboard of a fresh stack.
147
+ *
148
+ * @param groups - the groups; each must be registered in `metricGroupRegistry` (the computation reads it).
149
+ * @param compute - what runs one group; default `computeMetricGroup` with an empty schema. A test passes a broken one.
150
+ * @returns the violations; empty means conformant.
151
+ *
152
+ * @stability experimental
153
+ */
154
+ async function checkMetricGroupsOnEmptySchema(groups, compute = (id) => (0, metric_group_1.computeMetricGroup)({
155
+ group: id,
156
+ window: { from: new Date(0), to: new Date(3_600_000), previousFrom: new Date(-3_600_000), bucketSeconds: 60 },
157
+ filters: {},
158
+ tables: (0, metric_catalog_1.metricTablesOf)({ tables: [] }),
159
+ runner: { maybe: async () => null },
160
+ now: new Date(3_600_000),
161
+ })) {
162
+ const out = [];
163
+ for (const group of groups) {
164
+ const where = `group "${group.id}"`;
165
+ let result;
166
+ try {
167
+ result = await compute(group.id);
168
+ }
169
+ catch (error) {
170
+ out.push(finding(FILE_GROUPS, `${where}: computing against an empty schema threw: ${error.message}`));
171
+ continue;
172
+ }
173
+ if (result.available)
174
+ out.push(finding(FILE_GROUPS, `${where}: reports available with no metric table in the store`));
175
+ if (result.tiles.length + result.series.length + result.tables.length > 0) {
176
+ out.push(finding(FILE_GROUPS, `${where}: renders tiles, series or tables with no metric table in the store`));
177
+ }
178
+ const skipped = new Set(result.skipped);
179
+ const keys = [...group.families.map((f) => f.key), ...(group.ratios ?? []).map((r) => r.key), ...(group.tables ?? []).map((t) => t.key)];
180
+ for (const key of keys) {
181
+ if (!skipped.has(key))
182
+ out.push(finding(FILE_GROUPS, `${where}: "${key}" is not reported in skipped with no metric table in the store`));
183
+ }
184
+ }
185
+ return out;
186
+ }
187
+ const trimSlashes = (value) => value.replace(/^\/+|\/+$/g, '');
188
+ /**
189
+ * Every route of `controllers`, from `@Controller`/`@Get`/... metadata and the
190
+ * permissions recorded by the package's test host (`createTestPlatformHost`).
191
+ *
192
+ * @param controllers - controller classes, e.g. `TelemetryModule.forRoot(...).controllers`.
193
+ * @returns the routes, in declaration order.
194
+ *
195
+ * @stability experimental
196
+ */
197
+ function discoverRoutes(controllers) {
198
+ const routes = [];
199
+ for (const controller of controllers) {
200
+ const prefix = trimSlashes(String(Reflect.getMetadata(constants_1.PATH_METADATA, controller) ?? ''));
201
+ const controllerGuards = Reflect.getMetadata(constants_1.GUARDS_METADATA, controller) ?? [];
202
+ for (const name of Object.getOwnPropertyNames(controller.prototype)) {
203
+ const handler = controller.prototype[name];
204
+ if (typeof handler !== 'function' || !Reflect.hasMetadata(constants_1.METHOD_METADATA, handler))
205
+ continue;
206
+ const own = trimSlashes(String(Reflect.getMetadata(constants_1.PATH_METADATA, handler) ?? ''));
207
+ routes.push({
208
+ method: common_1.RequestMethod[Reflect.getMetadata(constants_1.METHOD_METADATA, handler)] ?? 'UNKNOWN',
209
+ path: [prefix, own].filter(Boolean).join('/'),
210
+ permissions: Reflect.getMetadata(index_2.TEST_REQUIRED_PERMISSIONS_KEY, handler),
211
+ guards: [...controllerGuards, ...(Reflect.getMetadata(constants_1.GUARDS_METADATA, handler) ?? [])],
212
+ handler,
213
+ });
214
+ }
215
+ }
216
+ return routes;
217
+ }
218
+ const { READ, WRITE, QUERY } = telemetry_permissions_1.TELEMETRY_PERMISSIONS;
219
+ const { AI_USE, SYSTEM_SETTINGS_READ, SYSTEM_SETTINGS_WRITE } = telemetry_permissions_1.TELEMETRY_HOST_PERMISSIONS;
220
+ /**
221
+ * The permissions each route SHAPE must declare. A rule per shape, not per
222
+ * path: the routes are discovered, and one that matches no rule is a finding.
223
+ */
224
+ const ROUTE_RULES = [
225
+ { shape: /^(GET) admin\/telemetry\/(config|status)$/, permissions: [READ] },
226
+ { shape: /^PUT admin\/telemetry\/config$/, permissions: [WRITE] },
227
+ { shape: /^(POST) admin\/telemetry\/(query|export)$/, permissions: [QUERY] },
228
+ { shape: /^GET admin\/telemetry\/schema$/, permissions: [QUERY] },
229
+ { shape: /^GET admin\/telemetry\/dashboard\/[a-z-]+$/, permissions: [QUERY] },
230
+ { shape: /^GET admin\/telemetry\/connection$/, permissions: [READ] },
231
+ { shape: /^(PUT|DELETE) admin\/telemetry\/connection$/, permissions: [WRITE] },
232
+ { shape: /^POST admin\/telemetry\/connection\/test$/, permissions: [WRITE] },
233
+ { shape: /^GET admin\/telemetry\/stack$/, permissions: [SYSTEM_SETTINGS_READ] },
234
+ { shape: /^POST admin\/telemetry\/stack\/deploy$/, permissions: [SYSTEM_SETTINGS_WRITE] },
235
+ { shape: /^POST admin\/telemetry\/assistant\/stream$/, permissions: [QUERY, AI_USE], guard: telemetry_ai_enabled_guard_1.TelemetryAiEnabledGuard },
236
+ // `@Auth()` only: any signed-in user may ask whether telemetry is on.
237
+ { shape: /^GET telemetry\/config$/, permissions: [] },
238
+ ];
239
+ /** Every permission string the slice may enforce: exactly these, never a variant. */
240
+ const KNOWN_PERMISSIONS = new Set([...Object.values(telemetry_permissions_1.TELEMETRY_PERMISSIONS), ...Object.values(telemetry_permissions_1.TELEMETRY_HOST_PERMISSIONS)]);
241
+ /**
242
+ * Check 2: every route under `admin/telemetry` and `telemetry` declares exactly
243
+ * the permissions its shape requires (the table in the slice README, heading
244
+ * "Permissions and settings"), every permission is one of the slice's exact
245
+ * strings, no route is public, the assistant route sits behind the AI-enabled
246
+ * guard, and every rule matches at least one route (a renamed route fails here
247
+ * rather than silently dropping out of the check).
248
+ *
249
+ * @param routes - the routes, from {@link discoverRoutes}.
250
+ * @returns the violations; empty means conformant.
251
+ *
252
+ * @stability experimental
253
+ */
254
+ function checkRoutePermissions(routes) {
255
+ const out = [];
256
+ const matched = new Set();
257
+ for (const route of routes) {
258
+ const name = `${route.method} /${route.path}`;
259
+ if (!/^(admin\/)?telemetry(\/|$)/.test(route.path)) {
260
+ out.push(finding(FILE_ROUTES, `${name}: a route outside admin/telemetry and telemetry in the telemetry module`));
261
+ continue;
262
+ }
263
+ if (route.permissions === undefined) {
264
+ out.push(finding(FILE_ROUTES, `${name}: declares no access decorator, so it is public`));
265
+ continue;
266
+ }
267
+ for (const permission of route.permissions) {
268
+ if (!KNOWN_PERMISSIONS.has(permission))
269
+ out.push(finding(FILE_ROUTES, `${name}: enforces "${permission}", which is not a telemetry permission string`));
270
+ }
271
+ const rule = ROUTE_RULES.find((candidate) => candidate.shape.test(`${route.method} ${route.path}`));
272
+ if (!rule) {
273
+ out.push(finding(FILE_ROUTES, `${name}: matches no permission rule; add the route's shape to the conformance suite`));
274
+ continue;
275
+ }
276
+ matched.add(rule.shape);
277
+ const actual = [...route.permissions].sort().join(', ');
278
+ const expected = [...rule.permissions].sort().join(', ');
279
+ if (actual !== expected) {
280
+ out.push(finding(FILE_ROUTES, `${name}: declares [${actual}] but must declare [${expected}]`));
281
+ }
282
+ if (rule.guard && !route.guards.includes(rule.guard)) {
283
+ out.push(finding(FILE_ROUTES, `${name}: is not behind ${rule.guard.name}`));
284
+ }
285
+ }
286
+ for (const rule of ROUTE_RULES) {
287
+ if (!matched.has(rule.shape))
288
+ out.push(finding(FILE_ROUTES, `no route matches ${rule.shape}: it was renamed or removed`));
289
+ }
290
+ return out;
291
+ }
292
+ // ---- check 3: the Doctor stays read-only --------------------------------------------
293
+ /** Constructor dependencies a Doctor check must never have (classes, and tokens injected with `@Inject`). */
294
+ const FORBIDDEN_DOCTOR_DEPENDENCIES = [
295
+ { dependency: telemetry_connection_test_service_1.TelemetryConnectionTestService, why: 'the connection test audits every attempt, and a Doctor run must not write' },
296
+ { dependency: telemetry_dashboard_service_1.TelemetryDashboardService, why: 'its reads are audited' },
297
+ { dependency: ports_1.TELEMETRY_AUDIT_SINK, why: 'a check records no audit row' },
298
+ { dependency: ports_1.TELEMETRY_JOBS, why: 'a check enqueues no job' },
299
+ ];
300
+ const nameOf = (dependency) => typeof dependency === 'function' ? dependency.name : String(dependency?.description ?? dependency);
301
+ /**
302
+ * The providers that register themselves as Doctor checks: classes with a
303
+ * `run` method whose constructor injects the `DoctorCheckRegistry`.
304
+ *
305
+ * @param providers - a module's provider list, e.g. `TelemetryModule.forRoot(...).providers`.
306
+ * @returns the check classes.
307
+ *
308
+ * @stability experimental
309
+ */
310
+ function discoverDoctorChecks(providers) {
311
+ return providers.filter((provider) => {
312
+ if (typeof provider !== 'function')
313
+ return false;
314
+ const params = Reflect.getMetadata('design:paramtypes', provider) ?? [];
315
+ return typeof provider.prototype?.run === 'function' && params.includes(index_1.DoctorCheckRegistry);
316
+ });
317
+ }
318
+ /**
319
+ * Check 3: no Doctor check of the slice injects the audited connection test,
320
+ * the audited dashboard service, the audit sink or the jobs port. The check
321
+ * reads the constructor's `design:paramtypes` and `@Inject` tokens
322
+ * (`self:paramtypes`).
323
+ *
324
+ * @param checks - the check classes, from {@link discoverDoctorChecks}.
325
+ * @returns the violations; empty means conformant.
326
+ *
327
+ * @stability experimental
328
+ */
329
+ function checkDoctorReadOnly(checks) {
330
+ const out = [];
331
+ for (const check of checks) {
332
+ const types = Reflect.getMetadata('design:paramtypes', check) ?? [];
333
+ const tokens = (Reflect.getMetadata('self:paramtypes', check) ?? []).map((entry) => entry.param);
334
+ for (const { dependency, why } of FORBIDDEN_DOCTOR_DEPENDENCIES) {
335
+ if (types.includes(dependency) || tokens.includes(dependency)) {
336
+ out.push(finding(FILE_DOCTOR, `${check.name} injects ${nameOf(dependency)}: ${why}`));
337
+ }
338
+ }
339
+ }
340
+ return out;
341
+ }
342
+ // ---- check 5: the queue rule ---------------------------------------------------------
343
+ /**
344
+ * The slice's cron, relative to its source root.
345
+ *
346
+ * @stability experimental
347
+ */
348
+ exports.TELEMETRY_CRON_FILE = 'tasks/telemetry-retention.task.ts';
349
+ /**
350
+ * Check 5: the app's `cron-enqueue-only` scan roots hold the slice's retention
351
+ * cron, so the queue rule ("a `@Cron` only enqueues") is enforced on it. Runs
352
+ * the cron suite's own scan over `roots` and looks for the file.
353
+ *
354
+ * @param roots - the roots the app's cron suite scans.
355
+ * @returns the violations; empty means conformant.
356
+ *
357
+ * @stability experimental
358
+ */
359
+ function checkCronCoverage(roots) {
360
+ const report = index_2.cronEnqueueOnlySuite.check({ sourceRoots: roots }, { exempt: [], minCronFiles: 1 });
361
+ const covered = report.scannedFiles.cronFiles?.some((file) => file === exports.TELEMETRY_CRON_FILE || file.endsWith(`/${exports.TELEMETRY_CRON_FILE}`));
362
+ return covered
363
+ ? []
364
+ : [
365
+ finding(FILE_CRON, `the cron scan roots do not contain ${exports.TELEMETRY_CRON_FILE}: add the slice's source root (packages/platform-api/src/telemetry) to the cron-enqueue-only sourceRoots`),
366
+ ];
367
+ }
368
+ /**
369
+ * Boots `TelemetryModule.forRoot` with the stub ports, the package's test host,
370
+ * the Doctor module and an `OTEL_ENABLED=false` configuration. Nothing listens
371
+ * on a port; requests go through Fastify's `inject`.
372
+ *
373
+ * @param input - what the stubs and the configuration hold.
374
+ * @returns the initialised application; the caller closes it.
375
+ *
376
+ * @stability experimental
377
+ */
378
+ const bootStubApp = async (input) => {
379
+ const host = (0, index_2.createTestPlatformHost)();
380
+ const { module } = (0, stub_ports_1.createStubTelemetryPorts)(input.ports);
381
+ // Loaded here, not at the top, so importing this entry needs no Fastify adapter until a check boots the module.
382
+ const { FastifyAdapter } = require('@nestjs/platform-fastify');
383
+ let ConformanceAppModule = class ConformanceAppModule {
384
+ };
385
+ ConformanceAppModule = __decorate([
386
+ (0, common_1.Module)({
387
+ imports: [
388
+ config_1.ConfigModule.forRoot({
389
+ isGlobal: true,
390
+ ignoreEnvFile: true,
391
+ load: [() => ({ otel: { enabled: false }, ...(input.greptime ? { greptime: input.greptime } : {}) })],
392
+ }),
393
+ index_1.DoctorModule.forRoot({ host, supportBundle: false }),
394
+ telemetry_module_1.TelemetryModule.forRoot({ host, imports: [module] }),
395
+ ],
396
+ })
397
+ ], ConformanceAppModule);
398
+ const app = await core_1.NestFactory.create(ConformanceAppModule, new FastifyAdapter(), { logger: false });
399
+ await app.init();
400
+ await app.getHttpAdapter().getInstance().ready();
401
+ return app;
402
+ };
403
+ exports.bootStubApp = bootStubApp;
404
+ /**
405
+ * The passwords check 4 seeds. Distinctive on purpose: a substring match can
406
+ * only be the secret.
407
+ *
408
+ * @stability experimental
409
+ */
410
+ exports.CONFORMANCE_SECRETS = {
411
+ storedReader: 'conformance-stored-reader-secret-7f3a',
412
+ storedAdmin: 'conformance-stored-admin-secret-91c2',
413
+ environmentReader: 'conformance-env-reader-secret-5d08',
414
+ environmentAdmin: 'conformance-env-admin-secret-b64e',
415
+ };
416
+ /**
417
+ * Check 4: `GET /admin/telemetry/connection` and `GET /admin/telemetry/config`
418
+ * never carry a stored password. Boots the module with known passwords in the
419
+ * credential store (and in the `greptime` deployment default), a stored custom
420
+ * connection row, and asserts none of the four appears in the serialised
421
+ * responses. `TELEMETRY_CONNECTION_CARRIES_NO_SECRET` (the contract's
422
+ * compile-time proof that the connection type has no field able to hold one)
423
+ * must still be `true`.
424
+ *
425
+ * @param createApp - builds the app; default {@link bootStubApp}. A test passes a leaky one.
426
+ * @returns the violations; empty means conformant.
427
+ *
428
+ * @stability experimental
429
+ */
430
+ async function checkNoSecretsInResponses(createApp = exports.bootStubApp) {
431
+ const out = [];
432
+ if (telemetry_1.TELEMETRY_CONNECTION_CARRIES_NO_SECRET !== true) {
433
+ out.push(finding(FILE_SECRETS, 'TELEMETRY_CONNECTION_CARRIES_NO_SECRET is not true: the connection type can hold a secret'));
434
+ }
435
+ const app = await createApp({
436
+ ports: {
437
+ credentials: { reader: exports.CONFORMANCE_SECRETS.storedReader, admin: exports.CONFORMANCE_SECRETS.storedAdmin },
438
+ rows: {
439
+ telemetry_connection: { host: 'db.conformance.test', pgPort: 4003, database: 'public', readerUser: 'reader', adminUser: 'admin' },
440
+ },
441
+ },
442
+ greptime: {
443
+ host: 'greptimedb',
444
+ pgPort: 4003,
445
+ database: 'public',
446
+ readerUser: 'reader',
447
+ readerPassword: exports.CONFORMANCE_SECRETS.environmentReader,
448
+ adminUser: 'admin',
449
+ adminPassword: exports.CONFORMANCE_SECRETS.environmentAdmin,
450
+ available: true,
451
+ },
452
+ });
453
+ try {
454
+ for (const url of ['/admin/telemetry/connection', '/admin/telemetry/config']) {
455
+ const response = await app.inject({ method: 'GET', url, headers: { [index_2.TEST_PERMISSIONS_HEADER]: telemetry_permissions_1.TELEMETRY_PERMISSIONS.READ } });
456
+ if (response.statusCode !== 200) {
457
+ out.push(finding(FILE_SECRETS, `GET ${url} answered ${response.statusCode}, not 200, so it proves nothing`));
458
+ continue;
459
+ }
460
+ for (const [name, secret] of Object.entries(exports.CONFORMANCE_SECRETS)) {
461
+ if (response.body.includes(secret))
462
+ out.push(finding(FILE_SECRETS, `GET ${url} carries the ${name} password`));
463
+ }
464
+ }
465
+ }
466
+ finally {
467
+ await app.close();
468
+ }
469
+ return out;
470
+ }
471
+ /** The query parameters a route requires, with a valid value each, from its `@ApiQuery` metadata. */
472
+ function requiredQuery(handler) {
473
+ const parameters = (Reflect.getMetadata('swagger/apiParameters', handler) ?? []);
474
+ const query = {};
475
+ for (const parameter of parameters) {
476
+ if (parameter.in !== 'query' || !parameter.required)
477
+ continue;
478
+ query[parameter.name] = String((parameter.enum ?? parameter.schema?.enum ?? ['x'])[0]);
479
+ }
480
+ return query;
481
+ }
482
+ /**
483
+ * Check 6: `TelemetryModule.forRoot` boots with `OTEL_ENABLED=false`, no
484
+ * GreptimeDB and an empty configuration, and every dashboard route answers
485
+ * with its documented response: `200` (a route that reads only memory) or `503`
486
+ * with `details.reason` `TELEMETRY_NOT_CONFIGURED`. Never a `500`.
487
+ *
488
+ * @param createApp - builds the app; default {@link bootStubApp}.
489
+ * @returns the violations; empty means conformant.
490
+ *
491
+ * @stability experimental
492
+ */
493
+ async function checkBootsWithoutTelemetry(createApp = exports.bootStubApp) {
494
+ const out = [];
495
+ let app;
496
+ try {
497
+ app = await createApp({});
498
+ }
499
+ catch (error) {
500
+ return [finding(FILE_BOOT, `TelemetryModule.forRoot did not boot without a telemetry store: ${error.message}`)];
501
+ }
502
+ try {
503
+ const controllers = (stubModule().controllers ?? []);
504
+ const dashboard = controllers.find((controller) => Reflect.getMetadata(constants_1.PATH_METADATA, controller) === 'admin/telemetry/dashboard');
505
+ const routes = dashboard ? discoverRoutes([dashboard]).filter((route) => route.method === 'GET') : [];
506
+ if (routes.length === 0)
507
+ out.push(finding(FILE_BOOT, 'no dashboard route found to exercise'));
508
+ for (const route of routes) {
509
+ const response = await app.inject({
510
+ method: 'GET',
511
+ url: `/${route.path}`,
512
+ query: requiredQuery(route.handler),
513
+ headers: { [index_2.TEST_PERMISSIONS_HEADER]: telemetry_permissions_1.TELEMETRY_PERMISSIONS.QUERY },
514
+ });
515
+ const body = (response.body ? safeJson(response.body) : undefined);
516
+ const documented = response.statusCode === 200 ||
517
+ (response.statusCode === 503 && body?.details?.reason === telemetry_query_errors_1.TELEMETRY_ERROR_REASONS.NOT_CONFIGURED);
518
+ if (!documented) {
519
+ out.push(finding(FILE_BOOT, `GET /${route.path} answered ${response.statusCode}${body?.details?.reason ? ` (${body.details.reason})` : ''} with no telemetry store; expected 200 or 503 TELEMETRY_NOT_CONFIGURED`));
520
+ }
521
+ }
522
+ }
523
+ finally {
524
+ await app.close();
525
+ }
526
+ return out;
527
+ }
528
+ function safeJson(text) {
529
+ try {
530
+ return JSON.parse(text);
531
+ }
532
+ catch {
533
+ return undefined;
534
+ }
535
+ }
536
+ // ---- the suite ------------------------------------------------------------------------
537
+ /** The module the sync checks inspect: the real routes and providers, the package's test host, no ports bound. */
538
+ function stubModule() {
539
+ return telemetry_module_1.TelemetryModule.forRoot({ host: (0, index_2.createTestPlatformHost)(), imports: [] });
540
+ }
541
+ function check(_context, options) {
542
+ const module = stubModule();
543
+ const routes = discoverRoutes((module.controllers ?? []));
544
+ const doctorChecks = discoverDoctorChecks(module.providers ?? []);
545
+ const groups = options.metricGroups ?? metric_group_registry_1.metricGroupRegistry.list();
546
+ return {
547
+ scanned: { metricGroups: groups.length, routes: routes.length, doctorChecks: doctorChecks.length },
548
+ scannedFiles: {},
549
+ findings: [
550
+ ...checkMetricGroups(groups),
551
+ ...checkRoutePermissions(routes),
552
+ ...checkDoctorReadOnly(doctorChecks),
553
+ ...(options.cronSourceRoots ? checkCronCoverage(options.cronSourceRoots) : []),
554
+ ],
555
+ };
556
+ }
557
+ const findingsIn = (report, file) => lines(report.findings.filter((f) => f.file === file));
558
+ function cases(options) {
559
+ return [
560
+ {
561
+ // The failure this guards: the discovery breaks and every case below passes over nothing.
562
+ name: 'discovers the groups, routes and Doctor checks, so a broken scan cannot pass vacuously',
563
+ run: (report, expect) => {
564
+ expect(report.scanned.metricGroups).toBeGreaterThanOrEqual(6);
565
+ expect(report.scanned.routes).toBeGreaterThanOrEqual(21);
566
+ expect(report.scanned.doctorChecks).toBeGreaterThanOrEqual(5);
567
+ },
568
+ },
569
+ {
570
+ name: '1. every metric group has a unique id, a label, known units and filters, and unique keys',
571
+ run: (report, expect) => expect(findingsIn(report, FILE_GROUPS)).toEqual([]),
572
+ },
573
+ {
574
+ name: '1. every metric group computes against an empty schema with everything skipped',
575
+ run: async (_report, expect) => expect(lines(await checkMetricGroupsOnEmptySchema(options.metricGroups ?? metric_group_registry_1.metricGroupRegistry.list()))).toEqual([]),
576
+ },
577
+ {
578
+ name: '2. every route declares exactly its permissions, and none is public',
579
+ run: (report, expect) => expect(findingsIn(report, FILE_ROUTES)).toEqual([]),
580
+ },
581
+ {
582
+ name: '3. no Doctor check can write, enqueue or audit',
583
+ run: (report, expect) => expect(findingsIn(report, FILE_DOCTOR)).toEqual([]),
584
+ },
585
+ {
586
+ name: '4. the connection and config responses never carry a stored password',
587
+ run: async (_report, expect) => expect(lines(await checkNoSecretsInResponses())).toEqual([]),
588
+ },
589
+ ...(options.cronSourceRoots
590
+ ? [
591
+ {
592
+ name: "5. the app's cron scan covers the telemetry retention cron",
593
+ run: (report, expect) => expect(findingsIn(report, FILE_CRON)).toEqual([]),
594
+ },
595
+ ]
596
+ : [
597
+ {
598
+ name: '5. cron coverage: skipped, no cronSourceRoots given',
599
+ run: () => undefined,
600
+ },
601
+ ]),
602
+ {
603
+ name: '6. boots without a telemetry store and every dashboard route answers its documented response',
604
+ run: async (_report, expect) => expect(lines(await checkBootsWithoutTelemetry())).toEqual([]),
605
+ },
606
+ ];
607
+ }
608
+ /**
609
+ * The suite behind `runPlatformConformance({ suites: { telemetry } })`: the
610
+ * telemetry slice's invariants 1 to 6 (see this file's header). Registered in
611
+ * {@link conformanceSuites} when `@marinoscar/platform-api/telemetry/testing`
612
+ * is imported.
613
+ *
614
+ * @extensionPoint registry
615
+ * @stability experimental
616
+ */
617
+ exports.telemetryConformanceSuite = {
618
+ id: 'telemetry',
619
+ title: 'the telemetry slice keeps its invariants',
620
+ description: 'Metric groups are well formed and degrade to skipped, every route declares exactly its permissions, Doctor checks are read-only, responses carry no secret, the cron is enqueue-only, and the module boots without a store.',
621
+ check,
622
+ cases,
623
+ };
624
+ if (!index_2.conformanceSuites.has(exports.telemetryConformanceSuite.id))
625
+ index_2.conformanceSuites.register(exports.telemetryConformanceSuite);
626
+ //# sourceMappingURL=conformance.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"conformance.js","sourceRoot":"","sources":["../../../src/telemetry/testing/conformance.ts"],"names":[],"mappings":";AAAA,gFAAgF;AAChF,mDAAmD;AACnD,gFAAgF;AAChF,EAAE;AACF,+EAA+E;AAC/E,uEAAuE;AACvE,yEAAyE;AACzE,0DAA0D;AAC1D,2EAA2E;AAC3E,EAAE;AACF,+EAA+E;AAC/E,6EAA6E;AAC7E,wEAAwE;AACxE,iFAAiF;AACjF,6EAA6E;AAC7E,2CAA2C;AAC3C,uEAAuE;AACvE,yEAAyE;AACzE,2EAA2E;AAC3E,EAAE;AACF,6EAA6E;AAC7E,8EAA8E;AAC9E,2EAA2E;AAC3E,8EAA8E;AAC9E,8EAA8E;AAC9E,oBAAoB;AACpB,EAAE;AACF,iEAAiE;AACjE,+EAA+E;AAC/E,iDAAiD;AACjD,EAAE;AACF,gFAAgF;AAChF,oFAAoF;AACpF,gFAAgF;;;;;;;;;AA6FhF,8CA4CC;AAuCD,wEAiCC;AAiCD,wCAmBC;AAyCD,sDAoCC;AAwBD,oDAMC;AAaD,kDAYC;AAqBD,8CAWC;AAqGD,8DAuCC;AA8BD,gEAiCC;AAlnBD,2CAAsF;AACtF,wDAA2F;AAC3F,2CAA8C;AAC9C,uCAA2C;AAE3C,uEAAiG;AAEjG,8CAAuE;AACvE,+CAM6B;AAE7B,wFAAkF;AAClF,uGAAiG;AACjG,0FAAqF;AACrF,oCAAgE;AAChE,4EAA0E;AAC1E,oEAA6F;AAC7F,0DAAsD;AACtD,0DAA6D;AAC7D,8EAAiE;AACjE,8EAA0E;AAC1E,8DAA6E;AAC7E,4EAAqH;AACrH,6CAAwF;AAwCxF,MAAM,WAAW,GAAG,eAAe,CAAC;AACpC,MAAM,WAAW,GAAG,QAAQ,CAAC;AAC7B,MAAM,WAAW,GAAG,QAAQ,CAAC;AAC7B,MAAM,SAAS,GAAG,MAAM,CAAC;AACzB,MAAM,YAAY,GAAG,YAAY,CAAC;AAClC,MAAM,SAAS,GAAG,MAAM,CAAC;AAEzB,MAAM,OAAO,GAAG,CAAC,IAAY,EAAE,OAAe,EAAsB,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;AAC3F,MAAM,KAAK,GAAG,CAAC,QAAuC,EAAY,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;AAEpH,wFAAwF;AAExF;;;;;;;;;;GAUG;AACH,SAAgB,iBAAiB,CAAC,MAAiC;IACjE,MAAM,GAAG,GAAyB,EAAE,CAAC;IACrC,MAAM,KAAK,GAAG,IAAI,GAAG,CAAS,qCAAY,CAAC,CAAC;IAC5C,MAAM,OAAO,GAAG,IAAI,GAAG,CAAS,MAAM,CAAC,IAAI,CAAC,8CAAqB,CAAC,CAAC,CAAC;IACpE,MAAM,GAAG,GAAG,IAAI,GAAG,EAAkB,CAAC;IACtC,MAAM,IAAI,GAAG,IAAI,GAAG,EAAkB,CAAC;IAEvC,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,MAAM,KAAK,GAAG,UAAU,KAAK,CAAC,EAAE,GAAG,CAAC;QACpC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QAChD,IAAI,OAAO,KAAK,CAAC,EAAE,KAAK,QAAQ,IAAI,CAAC,+CAAuB,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC;YAC5E,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,GAAG,KAAK,mBAAmB,+CAAuB,EAAE,CAAC,CAAC,CAAC;QACvF,CAAC;QACD,IAAI,OAAO,KAAK,CAAC,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE;YAAE,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,GAAG,KAAK,kBAAkB,CAAC,CAAC,CAAC;QAE7H,MAAM,OAAO,GAA8G;YACzH,GAAG,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;YACnH,GAAG,CAAC,KAAK,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,EAAc,EAAE,CAAC,CAAC;YAC7H,GAAG,CAAC,KAAK,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;gBAClC,IAAI,EAAE,OAAO;gBACb,GAAG,EAAE,CAAC,CAAC,GAAG;gBACV,KAAK,EAAE,CAAC,CAAC,KAAK;gBACd,KAAK,EAAE,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;gBAC/E,OAAO,EAAE,CAAC,CAAC,OAAO;aACnB,CAAC,CAAC;SACJ,CAAC;QACF,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;YAC5B,MAAM,IAAI,GAAG,GAAG,KAAK,KAAK,KAAK,CAAC,IAAI,KAAK,KAAK,CAAC,GAAG,GAAG,CAAC;YACtD,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YAClC,IAAI,KAAK,KAAK,SAAS;gBAAE,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,GAAG,IAAI,kCAAkC,KAAK,kCAAkC,CAAC,CAAC,CAAC;YAC1I,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC;YAC9B,IAAI,KAAK,CAAC,KAAK,KAAK,KAAK,CAAC,EAAE;gBAAE,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,GAAG,IAAI,oBAAoB,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;YACxG,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;gBAC/B,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC;oBAAE,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,GAAG,IAAI,cAAc,IAAI,iCAAiC,CAAC,CAAC,CAAC;YACnH,CAAC;YACD,KAAK,MAAM,MAAM,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;gBACnC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC;oBAAE,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,GAAG,IAAI,gBAAgB,MAAM,sBAAsB,CAAC,GAAG,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;YACzI,CAAC;QACH,CAAC;IACH,CAAC;IACD,KAAK,MAAM,CAAC,EAAE,EAAE,KAAK,CAAC,IAAI,GAAG,EAAE,CAAC;QAC9B,IAAI,KAAK,GAAG,CAAC;YAAE,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,aAAa,EAAE,iBAAiB,KAAK,QAAQ,CAAC,CAAC,CAAC;IAC/F,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AA2BD;;;;;;;;;;;GAWG;AACI,KAAK,UAAU,8BAA8B,CAClD,MAAiC,EACjC,UAA8B,CAAC,EAAE,EAAE,EAAE,CACnC,IAAA,iCAAkB,EAAC;IACjB,KAAK,EAAE,EAAiB;IACxB,MAAM,EAAE,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,IAAI,CAAC,SAAS,CAAC,EAAE,YAAY,EAAE,IAAI,IAAI,CAAC,CAAC,SAAS,CAAC,EAAE,aAAa,EAAE,EAAE,EAAE;IAC7G,OAAO,EAAE,EAAE;IACX,MAAM,EAAE,IAAA,+BAAc,EAAC,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;IACtC,MAAM,EAAE,EAAE,KAAK,EAAE,KAAK,IAAI,EAAE,CAAC,IAAI,EAAE;IACnC,GAAG,EAAE,IAAI,IAAI,CAAC,SAAS,CAAC;CACzB,CAAC;IAEJ,MAAM,GAAG,GAAyB,EAAE,CAAC;IACrC,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,MAAM,KAAK,GAAG,UAAU,KAAK,CAAC,EAAE,GAAG,CAAC;QACpC,IAAI,MAA2B,CAAC;QAChC,IAAI,CAAC;YACH,MAAM,GAAG,MAAM,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QACnC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,GAAG,KAAK,8CAA+C,KAAe,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;YACjH,SAAS;QACX,CAAC;QACD,IAAI,MAAM,CAAC,SAAS;YAAE,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,GAAG,KAAK,uDAAuD,CAAC,CAAC,CAAC;QACtH,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC1E,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,GAAG,KAAK,qEAAqE,CAAC,CAAC,CAAC;QAChH,CAAC;QACD,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QACxC,MAAM,IAAI,GAAG,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,KAAK,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,KAAK,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QACzI,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;YACvB,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC;gBAAE,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,GAAG,KAAK,MAAM,GAAG,gEAAgE,CAAC,CAAC,CAAC;QAC3I,CAAC;IACH,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAsBD,MAAM,WAAW,GAAG,CAAC,KAAa,EAAU,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC;AAE/E;;;;;;;;GAQG;AACH,SAAgB,cAAc,CAAC,WAAqC;IAClE,MAAM,MAAM,GAAqB,EAAE,CAAC;IACpC,KAAK,MAAM,UAAU,IAAI,WAAW,EAAE,CAAC;QACrC,MAAM,MAAM,GAAG,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,yBAAa,EAAE,UAAU,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;QACzF,MAAM,gBAAgB,GAAc,OAAO,CAAC,WAAW,CAAC,2BAAe,EAAE,UAAU,CAAC,IAAI,EAAE,CAAC;QAC3F,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,mBAAmB,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;YACpE,MAAM,OAAO,GAAI,UAAU,CAAC,SAAqC,CAAC,IAAI,CAAC,CAAC;YACxE,IAAI,OAAO,OAAO,KAAK,UAAU,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,2BAAe,EAAE,OAAO,CAAC;gBAAE,SAAS;YAC9F,MAAM,GAAG,GAAG,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,yBAAa,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;YACnF,MAAM,CAAC,IAAI,CAAC;gBACV,MAAM,EAAE,sBAAa,CAAC,OAAO,CAAC,WAAW,CAAC,2BAAe,EAAE,OAAO,CAAW,CAAC,IAAI,SAAS;gBAC3F,IAAI,EAAE,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;gBAC7C,WAAW,EAAE,OAAO,CAAC,WAAW,CAAC,qCAA6B,EAAE,OAAO,CAAyB;gBAChG,MAAM,EAAE,CAAC,GAAG,gBAAgB,EAAE,GAAG,CAAE,OAAO,CAAC,WAAW,CAAC,2BAAe,EAAE,OAAO,CAA2B,IAAI,EAAE,CAAC,CAAC;gBAClH,OAAO;aACR,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,6CAAqB,CAAC;AACrD,MAAM,EAAE,MAAM,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,GAAG,kDAA0B,CAAC;AAE3F;;;GAGG;AACH,MAAM,WAAW,GAAsF;IACrG,EAAE,KAAK,EAAE,2CAA2C,EAAE,WAAW,EAAE,CAAC,IAAI,CAAC,EAAE;IAC3E,EAAE,KAAK,EAAE,gCAAgC,EAAE,WAAW,EAAE,CAAC,KAAK,CAAC,EAAE;IACjE,EAAE,KAAK,EAAE,2CAA2C,EAAE,WAAW,EAAE,CAAC,KAAK,CAAC,EAAE;IAC5E,EAAE,KAAK,EAAE,gCAAgC,EAAE,WAAW,EAAE,CAAC,KAAK,CAAC,EAAE;IACjE,EAAE,KAAK,EAAE,4CAA4C,EAAE,WAAW,EAAE,CAAC,KAAK,CAAC,EAAE;IAC7E,EAAE,KAAK,EAAE,oCAAoC,EAAE,WAAW,EAAE,CAAC,IAAI,CAAC,EAAE;IACpE,EAAE,KAAK,EAAE,6CAA6C,EAAE,WAAW,EAAE,CAAC,KAAK,CAAC,EAAE;IAC9E,EAAE,KAAK,EAAE,2CAA2C,EAAE,WAAW,EAAE,CAAC,KAAK,CAAC,EAAE;IAC5E,EAAE,KAAK,EAAE,+BAA+B,EAAE,WAAW,EAAE,CAAC,oBAAoB,CAAC,EAAE;IAC/E,EAAE,KAAK,EAAE,wCAAwC,EAAE,WAAW,EAAE,CAAC,qBAAqB,CAAC,EAAE;IACzF,EAAE,KAAK,EAAE,4CAA4C,EAAE,WAAW,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,EAAE,KAAK,EAAE,oDAAuB,EAAE;IACrH,sEAAsE;IACtE,EAAE,KAAK,EAAE,yBAAyB,EAAE,WAAW,EAAE,EAAE,EAAE;CACtD,CAAC;AAEF,qFAAqF;AACrF,MAAM,iBAAiB,GAAG,IAAI,GAAG,CAAS,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,6CAAqB,CAAC,EAAE,GAAG,MAAM,CAAC,MAAM,CAAC,kDAA0B,CAAC,CAAC,CAAC,CAAC;AAEnI;;;;;;;;;;;;GAYG;AACH,SAAgB,qBAAqB,CAAC,MAAiC;IACrE,MAAM,GAAG,GAAyB,EAAE,CAAC;IACrC,MAAM,OAAO,GAAG,IAAI,GAAG,EAAU,CAAC;IAElC,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,MAAM,IAAI,GAAG,GAAG,KAAK,CAAC,MAAM,KAAK,KAAK,CAAC,IAAI,EAAE,CAAC;QAC9C,IAAI,CAAC,4BAA4B,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;YACnD,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,GAAG,IAAI,yEAAyE,CAAC,CAAC,CAAC;YACjH,SAAS;QACX,CAAC;QACD,IAAI,KAAK,CAAC,WAAW,KAAK,SAAS,EAAE,CAAC;YACpC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,GAAG,IAAI,iDAAiD,CAAC,CAAC,CAAC;YACzF,SAAS;QACX,CAAC;QACD,KAAK,MAAM,UAAU,IAAI,KAAK,CAAC,WAAW,EAAE,CAAC;YAC3C,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,UAAU,CAAC;gBAAE,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,GAAG,IAAI,eAAe,UAAU,+CAA+C,CAAC,CAAC,CAAC;QAC1J,CAAC;QACD,MAAM,IAAI,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;QACpG,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,GAAG,IAAI,8EAA8E,CAAC,CAAC,CAAC;YACtH,SAAS;QACX,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACxB,MAAM,MAAM,GAAG,CAAC,GAAG,KAAK,CAAC,WAAW,CAAC,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACxD,MAAM,QAAQ,GAAG,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACzD,IAAI,MAAM,KAAK,QAAQ,EAAE,CAAC;YACxB,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,GAAG,IAAI,eAAe,MAAM,uBAAuB,QAAQ,GAAG,CAAC,CAAC,CAAC;QACjG,CAAC;QACD,IAAI,IAAI,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;YACrD,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,GAAG,IAAI,mBAAoB,IAAI,CAAC,KAA0B,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;QACpG,CAAC;IACH,CAAC;IACD,KAAK,MAAM,IAAI,IAAI,WAAW,EAAE,CAAC;QAC/B,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC;YAAE,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,oBAAoB,IAAI,CAAC,KAAK,6BAA6B,CAAC,CAAC,CAAC;IAC5H,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,wFAAwF;AAExF,6GAA6G;AAC7G,MAAM,6BAA6B,GAAwD;IACzF,EAAE,UAAU,EAAE,kEAA8B,EAAE,GAAG,EAAE,2EAA2E,EAAE;IAChI,EAAE,UAAU,EAAE,uDAAyB,EAAE,GAAG,EAAE,uBAAuB,EAAE;IACvE,EAAE,UAAU,EAAE,4BAAoB,EAAE,GAAG,EAAE,8BAA8B,EAAE;IACzE,EAAE,UAAU,EAAE,sBAAc,EAAE,GAAG,EAAE,yBAAyB,EAAE;CAC/D,CAAC;AAEF,MAAM,MAAM,GAAG,CAAC,UAAmB,EAAU,EAAE,CAC7C,OAAO,UAAU,KAAK,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAE,UAAqB,EAAE,WAAW,IAAI,UAAU,CAAC,CAAC;AAEjH;;;;;;;;GAQG;AACH,SAAgB,oBAAoB,CAAC,SAA6B;IAChE,OAAO,SAAS,CAAC,MAAM,CAAC,CAAC,QAAQ,EAA6B,EAAE;QAC9D,IAAI,OAAO,QAAQ,KAAK,UAAU;YAAE,OAAO,KAAK,CAAC;QACjD,MAAM,MAAM,GAAc,OAAO,CAAC,WAAW,CAAC,mBAAmB,EAAE,QAAQ,CAAC,IAAI,EAAE,CAAC;QACnF,OAAO,OAAO,QAAQ,CAAC,SAAS,EAAE,GAAG,KAAK,UAAU,IAAI,MAAM,CAAC,QAAQ,CAAC,2BAAmB,CAAC,CAAC;IAC/F,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;;;;;;;;;GAUG;AACH,SAAgB,mBAAmB,CAAC,MAAgC;IAClE,MAAM,GAAG,GAAyB,EAAE,CAAC;IACrC,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,MAAM,KAAK,GAAc,OAAO,CAAC,WAAW,CAAC,mBAAmB,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC;QAC/E,MAAM,MAAM,GAAI,CAAC,OAAO,CAAC,WAAW,CAAC,iBAAiB,EAAE,KAAK,CAAC,IAAI,EAAE,CAA+B,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAChI,KAAK,MAAM,EAAE,UAAU,EAAE,GAAG,EAAE,IAAI,6BAA6B,EAAE,CAAC;YAChE,IAAI,KAAK,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;gBAC9D,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,GAAG,KAAK,CAAC,IAAI,YAAY,MAAM,CAAC,UAAU,CAAC,KAAK,GAAG,EAAE,CAAC,CAAC,CAAC;YACxF,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,yFAAyF;AAEzF;;;;GAIG;AACU,QAAA,mBAAmB,GAAG,mCAAmC,CAAC;AAEvE;;;;;;;;;GASG;AACH,SAAgB,iBAAiB,CAAC,KAAwB;IACxD,MAAM,MAAM,GAAG,4BAAoB,CAAC,KAAK,CAAC,EAAE,WAAW,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,YAAY,EAAE,CAAC,EAAE,CAAC,CAAC;IACnG,MAAM,OAAO,GAAG,MAAM,CAAC,YAAY,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,KAAK,2BAAmB,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,2BAAmB,EAAE,CAAC,CAAC,CAAC;IACxI,OAAO,OAAO;QACZ,CAAC,CAAC,EAAE;QACJ,CAAC,CAAC;YACE,OAAO,CACL,SAAS,EACT,sCAAsC,2BAAmB,0GAA0G,CACpK;SACF,CAAC;AACR,CAAC;AAuBD;;;;;;;;;GASG;AACI,MAAM,WAAW,GAAyB,KAAK,EAAE,KAAK,EAAE,EAAE;IAC/D,MAAM,IAAI,GAAG,IAAA,8BAAsB,GAAE,CAAC;IACtC,MAAM,EAAE,MAAM,EAAE,GAAG,IAAA,qCAAwB,EAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IACzD,gHAAgH;IAChH,MAAM,EAAE,cAAc,EAAE,GAAG,OAAO,CAAC,0BAA0B,CAA8C,CAAC;IAa5G,IAAM,oBAAoB,GAA1B,MAAM,oBAAoB;KAAG,CAAA;IAAvB,oBAAoB;QAXzB,IAAA,eAAM,EAAC;YACN,OAAO,EAAE;gBACP,qBAAY,CAAC,OAAO,CAAC;oBACnB,QAAQ,EAAE,IAAI;oBACd,aAAa,EAAE,IAAI;oBACnB,IAAI,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;iBACtG,CAAC;gBACF,oBAAY,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,KAAK,EAAE,CAAC;gBACpD,kCAAe,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC;aACrD;SACF,CAAC;OACI,oBAAoB,CAAG;IAE7B,MAAM,GAAG,GAAG,MAAM,kBAAW,CAAC,MAAM,CAAyB,oBAAoB,EAAE,IAAI,cAAc,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;IAC5H,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;IACjB,MAAM,GAAG,CAAC,cAAc,EAAE,CAAC,WAAW,EAAE,CAAC,KAAK,EAAE,CAAC;IACjD,OAAO,GAAG,CAAC;AACb,CAAC,CAAC;AAvBW,QAAA,WAAW,eAuBtB;AAkBF;;;;;GAKG;AACU,QAAA,mBAAmB,GAAuB;IACrD,YAAY,EAAE,uCAAuC;IACrD,WAAW,EAAE,sCAAsC;IACnD,iBAAiB,EAAE,oCAAoC;IACvD,gBAAgB,EAAE,mCAAmC;CACtD,CAAC;AAEF;;;;;;;;;;;;;GAaG;AACI,KAAK,UAAU,yBAAyB,CAAC,YAAkC,mBAAW;IAC3F,MAAM,GAAG,GAAyB,EAAE,CAAC;IACrC,IAAI,kDAAsC,KAAK,IAAI,EAAE,CAAC;QACpD,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,2FAA2F,CAAC,CAAC,CAAC;IAC/H,CAAC;IAED,MAAM,GAAG,GAAG,MAAM,SAAS,CAAC;QAC1B,KAAK,EAAE;YACL,WAAW,EAAE,EAAE,MAAM,EAAE,2BAAmB,CAAC,YAAY,EAAE,KAAK,EAAE,2BAAmB,CAAC,WAAW,EAAE;YACjG,IAAI,EAAE;gBACJ,oBAAoB,EAAE,EAAE,IAAI,EAAE,qBAAqB,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,UAAU,EAAE,QAAQ,EAAE,SAAS,EAAE,OAAO,EAAE;aAClI;SACF;QACD,QAAQ,EAAE;YACR,IAAI,EAAE,YAAY;YAClB,MAAM,EAAE,IAAI;YACZ,QAAQ,EAAE,QAAQ;YAClB,UAAU,EAAE,QAAQ;YACpB,cAAc,EAAE,2BAAmB,CAAC,iBAAiB;YACrD,SAAS,EAAE,OAAO;YAClB,aAAa,EAAE,2BAAmB,CAAC,gBAAgB;YACnD,SAAS,EAAE,IAAI;SAChB;KACF,CAAC,CAAC;IACH,IAAI,CAAC;QACH,KAAK,MAAM,GAAG,IAAI,CAAC,6BAA6B,EAAE,yBAAyB,CAAC,EAAE,CAAC;YAC7E,MAAM,QAAQ,GAAG,MAAM,GAAG,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,EAAE,CAAC,+BAAuB,CAAC,EAAE,6CAAqB,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;YAC9H,IAAI,QAAQ,CAAC,UAAU,KAAK,GAAG,EAAE,CAAC;gBAChC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,OAAO,GAAG,aAAa,QAAQ,CAAC,UAAU,iCAAiC,CAAC,CAAC,CAAC;gBAC7G,SAAS;YACX,CAAC;YACD,KAAK,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,2BAAmB,CAAC,EAAE,CAAC;gBACjE,IAAI,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;oBAAE,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,OAAO,GAAG,gBAAgB,IAAI,WAAW,CAAC,CAAC,CAAC;YACjH,CAAC;QACH,CAAC;IACH,CAAC;YAAS,CAAC;QACT,MAAM,GAAG,CAAC,KAAK,EAAE,CAAC;IACpB,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,qGAAqG;AACrG,SAAS,aAAa,CAAC,OAAgB;IACrC,MAAM,UAAU,GAAG,CAAC,OAAO,CAAC,WAAW,CAAC,uBAAuB,EAAE,OAAiB,CAAC,IAAI,EAAE,CAMvF,CAAC;IACH,MAAM,KAAK,GAA2B,EAAE,CAAC;IACzC,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;QACnC,IAAI,SAAS,CAAC,EAAE,KAAK,OAAO,IAAI,CAAC,SAAS,CAAC,QAAQ;YAAE,SAAS;QAC9D,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,CAAC,SAAS,CAAC,IAAI,IAAI,SAAS,CAAC,MAAM,EAAE,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACzF,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;;;;;;;GAUG;AACI,KAAK,UAAU,0BAA0B,CAAC,YAAkC,mBAAW;IAC5F,MAAM,GAAG,GAAyB,EAAE,CAAC;IACrC,IAAI,GAA2B,CAAC;IAChC,IAAI,CAAC;QACH,GAAG,GAAG,MAAM,SAAS,CAAC,EAAE,CAAC,CAAC;IAC5B,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,OAAO,CAAC,SAAS,EAAE,mEAAoE,KAAe,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;IAC7H,CAAC;IACD,IAAI,CAAC;QACH,MAAM,WAAW,GAAG,CAAC,UAAU,EAAE,CAAC,WAAW,IAAI,EAAE,CAAyB,CAAC;QAC7E,MAAM,SAAS,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,OAAO,CAAC,WAAW,CAAC,yBAAa,EAAE,UAAU,CAAC,KAAK,2BAA2B,CAAC,CAAC;QACnI,MAAM,MAAM,GAAG,SAAS,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACtG,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;YAAE,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,sCAAsC,CAAC,CAAC,CAAC;QAE9F,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;YAC3B,MAAM,QAAQ,GAAG,MAAM,GAAG,CAAC,MAAM,CAAC;gBAChC,MAAM,EAAE,KAAK;gBACb,GAAG,EAAE,IAAI,KAAK,CAAC,IAAI,EAAE;gBACrB,KAAK,EAAE,aAAa,CAAC,KAAK,CAAC,OAAO,CAAC;gBACnC,OAAO,EAAE,EAAE,CAAC,+BAAuB,CAAC,EAAE,6CAAqB,CAAC,KAAK,EAAE;aACpE,CAAC,CAAC;YACH,MAAM,IAAI,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAkD,CAAC;YACpH,MAAM,UAAU,GACd,QAAQ,CAAC,UAAU,KAAK,GAAG;gBAC3B,CAAC,QAAQ,CAAC,UAAU,KAAK,GAAG,IAAI,IAAI,EAAE,OAAO,EAAE,MAAM,KAAK,gDAAuB,CAAC,cAAc,CAAC,CAAC;YACpG,IAAI,CAAC,UAAU,EAAE,CAAC;gBAChB,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,QAAQ,KAAK,CAAC,IAAI,aAAa,QAAQ,CAAC,UAAU,GAAG,IAAI,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,EAAE,wEAAwE,CAAC,CAAC,CAAC;YACtN,CAAC;QACH,CAAC;IACH,CAAC;YAAS,CAAC;QACT,MAAM,GAAG,CAAC,KAAK,EAAE,CAAC;IACpB,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAS,QAAQ,CAAC,IAAY;IAC5B,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC;AAED,0FAA0F;AAE1F,kHAAkH;AAClH,SAAS,UAAU;IACjB,OAAO,kCAAe,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,IAAA,8BAAsB,GAAE,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC;AAClF,CAAC;AAED,SAAS,KAAK,CAAC,QAA4C,EAAE,OAAoC;IAC/F,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC;IAC5B,MAAM,MAAM,GAAG,cAAc,CAAC,CAAC,MAAM,CAAC,WAAW,IAAI,EAAE,CAAyB,CAAC,CAAC;IAClF,MAAM,YAAY,GAAG,oBAAoB,CAAC,MAAM,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC;IAClE,MAAM,MAAM,GAAG,OAAO,CAAC,YAAY,IAAI,2CAAmB,CAAC,IAAI,EAAE,CAAC;IAElE,OAAO;QACL,OAAO,EAAE,EAAE,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,EAAE,YAAY,CAAC,MAAM,EAAE;QAClG,YAAY,EAAE,EAAE;QAChB,QAAQ,EAAE;YACR,GAAG,iBAAiB,CAAC,MAAM,CAAC;YAC5B,GAAG,qBAAqB,CAAC,MAAM,CAAC;YAChC,GAAG,mBAAmB,CAAC,YAAY,CAAC;YACpC,GAAG,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC,iBAAiB,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;SAC/E;KACF,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,GAAG,CAAC,MAAyB,EAAE,IAAY,EAAY,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC;AAEhI,SAAS,KAAK,CAAC,OAAoC;IACjD,OAAO;QACL;YACE,0FAA0F;YAC1F,IAAI,EAAE,wFAAwF;YAC9F,GAAG,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE;gBACtB,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC;gBAC9D,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,sBAAsB,CAAC,EAAE,CAAC,CAAC;gBACzD,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC;YAChE,CAAC;SACF;QACD;YACE,IAAI,EAAE,0FAA0F;YAChG,GAAG,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;SAC7E;QACD;YACE,IAAI,EAAE,gFAAgF;YACtF,GAAG,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,CAC7B,MAAM,CAAC,KAAK,CAAC,MAAM,8BAA8B,CAAC,OAAO,CAAC,YAAY,IAAI,2CAAmB,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;SACtH;QACD;YACE,IAAI,EAAE,qEAAqE;YAC3E,GAAG,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;SAC7E;QACD;YACE,IAAI,EAAE,gDAAgD;YACtD,GAAG,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;SAC7E;QACD;YACE,IAAI,EAAE,sEAAsE;YAC5E,GAAG,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,yBAAyB,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;SAC7F;QACD,GAAG,CAAC,OAAO,CAAC,eAAe;YACzB,CAAC,CAAC;gBACE;oBACE,IAAI,EAAE,4DAA4D;oBAClE,GAAG,EAAE,CAAC,MAAyB,EAAE,MAA6C,EAAE,EAAE,CAChF,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;iBAC1B;aAC5B;YACH,CAAC,CAAC;gBACE;oBACE,IAAI,EAAE,qDAAqD;oBAC3D,GAAG,EAAE,GAAG,EAAE,CAAC,SAAS;iBACK;aAC5B,CAAC;QACN;YACE,IAAI,EAAE,8FAA8F;YACpG,GAAG,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,0BAA0B,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;SAC9F;KACF,CAAC;AACJ,CAAC;AAED;;;;;;;;GAQG;AACU,QAAA,yBAAyB,GAAkD;IACtF,EAAE,EAAE,WAAW;IACf,KAAK,EAAE,0CAA0C;IACjD,WAAW,EACT,6NAA6N;IAC/N,KAAK;IACL,KAAK;CACN,CAAC;AAEF,IAAI,CAAC,yBAAiB,CAAC,GAAG,CAAC,iCAAyB,CAAC,EAAE,CAAC;IAAE,yBAAiB,CAAC,QAAQ,CAAC,iCAAyB,CAAC,CAAC"}