@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,351 @@
1
+ "use strict";
2
+ // =============================================================================
3
+ // Generic typed registry primitive (issue #675, PP-1.3)
4
+ // =============================================================================
5
+ //
6
+ // One implementation of "an additive, typed, string-keyed list", so every closed
7
+ // list the platform turns into a registry shares ONE duplicate rule, ONE
8
+ // ordering rule and ONE set of error codes. Those three things are the
9
+ // "registry behaviour: ordering, duplicate-id handling, error cases" that
10
+ // docs/specs/platform-packages.md promises apps can rely on; registry.spec.ts
11
+ // pins them.
12
+ //
13
+ // ⚠ FRAMEWORK-FREE ON PURPOSE. This file imports nothing: no `@nestjs/*`, no
14
+ // Prisma, no application code. Static registries are read where no Nest
15
+ // container exists: `prisma/seed.ts` under `ts-node --transpile-only`, the
16
+ // standalone `storage-purge.main.ts`, and DTO classes that `createZodDto()`
17
+ // builds while their module is evaluated (and that `npm run openapi:dump` reads
18
+ // in preview mode, where no provider is instantiated and no hook runs).
19
+ // registry.spec.ts reads this file and fails on any import.
20
+ //
21
+ // Two kinds of registry share it (README.md next to this file has the recipe):
22
+ //
23
+ // - STATIC: `defineRegistry(...)` at module scope, filled at import time by
24
+ // the registry's manifest, frozen by `RegistryFreezeService` once the Nest
25
+ // application has bootstrapped. Never filled from `onModuleInit`: several
26
+ // Nest applications share one module graph in a Jest worker, and the second
27
+ // one would hit a frozen registry.
28
+ // - INSTANCE: `new Registry(...)` held by an `@Injectable()`, filled from each
29
+ // contributor's `onModuleInit` (`register(this)`), optionally frozen by its
30
+ // owner in `onApplicationBootstrap` (see doctor/doctor-check.registry.ts).
31
+ // =============================================================================
32
+ Object.defineProperty(exports, "__esModule", { value: true });
33
+ exports.Registry = exports.RegistryError = exports.REGISTRY_ID_MAX_LENGTH = exports.DEFAULT_REGISTRY_ID_PATTERN = void 0;
34
+ exports.defineRegistry = defineRegistry;
35
+ exports.listDefinedRegistries = listDefinedRegistries;
36
+ exports.freezeDefinedRegistries = freezeDefinedRegistries;
37
+ /**
38
+ * The default pattern every registry id must match: a letter or digit first,
39
+ * then letters, digits and `. _ : / @ -`.
40
+ *
41
+ * It admits every id shape the codebase already uses (`db.connection`,
42
+ * `jobs:read`, `auth.initial-admin`, `coach/weekly-review`) and rejects whitespace and a
43
+ * leading separator. Override it per registry with {@link RegistryOptions.idPattern}.
44
+ *
45
+ * @stability stable
46
+ */
47
+ exports.DEFAULT_REGISTRY_ID_PATTERN = /^[A-Za-z0-9][A-Za-z0-9._:/@-]*$/;
48
+ /**
49
+ * The longest id any registry accepts, in UTF-16 code units.
50
+ *
51
+ * @stability stable
52
+ */
53
+ exports.REGISTRY_ID_MAX_LENGTH = 128;
54
+ /**
55
+ * The single error type every registry operation throws.
56
+ *
57
+ * @example
58
+ * ```ts
59
+ * try {
60
+ * permissions.register(entry);
61
+ * } catch (err) {
62
+ * if (err instanceof RegistryError && err.code === 'DUPLICATE_ID') { ... }
63
+ * }
64
+ * ```
65
+ *
66
+ * @stability stable
67
+ */
68
+ class RegistryError extends Error {
69
+ /** Machine-readable reason; see {@link RegistryErrorCode}. */
70
+ code;
71
+ /** The `name` of the registry that refused the operation. */
72
+ registry;
73
+ /** The entry id involved, when there is one. */
74
+ id;
75
+ /**
76
+ * @param code - why the operation was refused.
77
+ * @param registry - the refusing registry's name.
78
+ * @param message - human-readable explanation.
79
+ * @param details - the id involved and, for `INVALID_ENTRY`, the original error as `cause`.
80
+ */
81
+ constructor(code, registry, message, details = {}) {
82
+ super(message, details.cause === undefined ? undefined : { cause: details.cause });
83
+ this.name = 'RegistryError';
84
+ this.code = code;
85
+ this.registry = registry;
86
+ if (details.id !== undefined)
87
+ this.id = details.id;
88
+ }
89
+ }
90
+ exports.RegistryError = RegistryError;
91
+ function compareCodeUnits(a, b) {
92
+ return a < b ? -1 : a > b ? 1 : 0;
93
+ }
94
+ function messageOf(err) {
95
+ return err instanceof Error ? err.message : String(err);
96
+ }
97
+ /**
98
+ * An additive, typed, string-keyed list with a duplicate policy, deterministic
99
+ * order and an optional freeze.
100
+ *
101
+ * Entries are stored as given (never cloned); {@link list} and {@link ids}
102
+ * return fresh arrays, so mutating them never changes the registry. Because the
103
+ * registry holds references, entries should be `as const` or `Object.freeze`d
104
+ * data.
105
+ *
106
+ * @typeParam T - the entry type.
107
+ *
108
+ * @example
109
+ * ```ts
110
+ * const colours = new Registry<{ id: string; hex: string }>({
111
+ * name: 'colours',
112
+ * idOf: (c) => c.id,
113
+ * validate: (c) => {
114
+ * if (!/^#[0-9a-f]{6}$/i.test(c.hex)) throw new Error(`bad hex ${c.hex}`);
115
+ * },
116
+ * });
117
+ * colours.register({ id: 'brand', hex: '#3366ff' });
118
+ * colours.require('brand').hex; // '#3366ff'
119
+ * ```
120
+ *
121
+ * @extensionPoint registry
122
+ * @stability stable
123
+ */
124
+ class Registry {
125
+ options;
126
+ /** The registry's name, as given in {@link RegistryOptions.name}. */
127
+ name;
128
+ entries = new Map();
129
+ isFrozen = false;
130
+ idPattern;
131
+ /**
132
+ * @param options - see {@link RegistryOptions}.
133
+ * @throws RegistryError `INVALID_ID` when `options.name` is empty.
134
+ */
135
+ constructor(options) {
136
+ this.options = options;
137
+ if (typeof options.name !== 'string' || options.name.trim() === '') {
138
+ throw new RegistryError('INVALID_ID', String(options.name), 'A registry name must be a non-empty string.');
139
+ }
140
+ this.name = options.name;
141
+ const pattern = options.idPattern ?? exports.DEFAULT_REGISTRY_ID_PATTERN;
142
+ this.idPattern = new RegExp(pattern.source, pattern.flags.replace(/[gy]/g, ''));
143
+ }
144
+ /**
145
+ * Adds one entry.
146
+ *
147
+ * @throws RegistryError `FROZEN`, `INVALID_ID`, `INVALID_ENTRY` or
148
+ * `DUPLICATE_ID` (see {@link RegistryErrorCode}); the registry is unchanged
149
+ * when it throws.
150
+ */
151
+ register(entry) {
152
+ this.registerAll([entry]);
153
+ }
154
+ /**
155
+ * Adds every entry, all or nothing: each entry is checked (id, `validate`,
156
+ * duplicates against the registry AND earlier entries of the same batch)
157
+ * before any is added, so one bad entry rejects the whole batch and leaves the
158
+ * registry unchanged.
159
+ *
160
+ * @throws RegistryError as {@link register}; the first failing entry wins.
161
+ */
162
+ registerAll(entries) {
163
+ this.assertWritable();
164
+ const staged = new Map(this.entries);
165
+ const replacements = [];
166
+ for (const entry of entries) {
167
+ const id = this.checkedId(entry);
168
+ if (this.options.validate) {
169
+ try {
170
+ this.options.validate(entry, this);
171
+ }
172
+ catch (err) {
173
+ throw new RegistryError('INVALID_ENTRY', this.name, `Invalid entry "${id}" in registry "${this.name}": ${messageOf(err)}`, { id, cause: err });
174
+ }
175
+ }
176
+ if (staged.has(id)) {
177
+ const existing = staged.get(id);
178
+ if ((this.options.onDuplicate ?? 'throw') === 'throw') {
179
+ const message = this.options.describeDuplicate
180
+ ? this.options.describeDuplicate(existing, entry)
181
+ : `Duplicate id "${id}" in registry "${this.name}".`;
182
+ throw new RegistryError('DUPLICATE_ID', this.name, message, { id });
183
+ }
184
+ replacements.push([existing, entry]);
185
+ }
186
+ // Map#set on an existing key keeps its insertion position: exactly the
187
+ // "replace keeps the new entry at the OLD position" rule.
188
+ staged.set(id, entry);
189
+ }
190
+ this.entries = staged;
191
+ for (const [previous, next] of replacements) {
192
+ this.options.onReplace?.(previous, next);
193
+ }
194
+ }
195
+ /** The entry registered under `id`, or `undefined`. */
196
+ get(id) {
197
+ return this.entries.get(id);
198
+ }
199
+ /**
200
+ * The entry registered under `id`.
201
+ *
202
+ * @throws RegistryError `UNKNOWN_ID` when there is none.
203
+ */
204
+ require(id) {
205
+ const entry = this.entries.get(id);
206
+ if (entry === undefined && !this.entries.has(id)) {
207
+ const known = this.ids();
208
+ const shown = known.length > 20 ? `${known.slice(0, 20).join(', ')}, ...` : known.join(', ');
209
+ throw new RegistryError('UNKNOWN_ID', this.name, `Unknown id "${id}" in registry "${this.name}". Known ids: ${shown || '(none)'}.`, { id });
210
+ }
211
+ return entry;
212
+ }
213
+ /** Whether an entry is registered under `id`. */
214
+ has(id) {
215
+ return this.entries.has(id);
216
+ }
217
+ /** Every id, as a fresh array, in {@link list} order. */
218
+ ids() {
219
+ return this.sortedEntries().map(([id]) => id);
220
+ }
221
+ /** Every entry, as a fresh array, in the order {@link RegistryOptions.order} names. */
222
+ list() {
223
+ return this.sortedEntries().map(([, entry]) => entry);
224
+ }
225
+ /** How many entries are registered. */
226
+ get size() {
227
+ return this.entries.size;
228
+ }
229
+ /** Refuses every later write with `FROZEN`. Reads keep working. Idempotent. */
230
+ freeze() {
231
+ this.isFrozen = true;
232
+ }
233
+ /** Whether {@link freeze} has been called. */
234
+ get frozen() {
235
+ return this.isFrozen;
236
+ }
237
+ /** Name, frozen state and ids, for logs, diagnostics and snapshot tests. */
238
+ snapshot() {
239
+ return { name: this.name, frozen: this.isFrozen, ids: this.ids() };
240
+ }
241
+ /**
242
+ * Saves the entries and frozen state. For `testing.ts` only.
243
+ * @internal
244
+ */
245
+ _captureState() {
246
+ return { entries: new Map(this.entries), frozen: this.isFrozen };
247
+ }
248
+ /**
249
+ * Restores a state saved by {@link _captureState}. For `testing.ts` only.
250
+ * @internal
251
+ */
252
+ _restoreState(state) {
253
+ this.entries = new Map(state.entries);
254
+ this.isFrozen = state.frozen;
255
+ }
256
+ /**
257
+ * Allows writes again. For `testing.ts` only.
258
+ * @internal
259
+ */
260
+ _unfreeze() {
261
+ this.isFrozen = false;
262
+ }
263
+ assertWritable() {
264
+ if (this.isFrozen) {
265
+ throw new RegistryError('FROZEN', this.name, `Registry "${this.name}" is frozen: entries are registered before the application bootstraps.`);
266
+ }
267
+ }
268
+ checkedId(entry) {
269
+ const id = this.options.idOf(entry);
270
+ const fail = (why) => {
271
+ throw new RegistryError('INVALID_ID', this.name, `Invalid id ${JSON.stringify(id)} in registry "${this.name}": ${why}.`, {
272
+ id: typeof id === 'string' ? id : undefined,
273
+ });
274
+ };
275
+ if (typeof id !== 'string')
276
+ return fail('an id must be a string');
277
+ if (id.length === 0)
278
+ return fail('an id must not be empty');
279
+ if (id.length > exports.REGISTRY_ID_MAX_LENGTH)
280
+ return fail(`an id must be at most ${exports.REGISTRY_ID_MAX_LENGTH} characters`);
281
+ if (!this.idPattern.test(id))
282
+ return fail(`an id must match ${this.idPattern}`);
283
+ return id;
284
+ }
285
+ sortedEntries() {
286
+ const pairs = [...this.entries];
287
+ const order = this.options.order ?? 'registration';
288
+ if (order === 'id') {
289
+ pairs.sort(([a], [b]) => compareCodeUnits(a, b));
290
+ }
291
+ else if (typeof order === 'function') {
292
+ pairs.sort(([, a], [, b]) => order(a, b));
293
+ }
294
+ return pairs;
295
+ }
296
+ }
297
+ exports.Registry = Registry;
298
+ // -----------------------------------------------------------------------------
299
+ // The catalogue of static (module-level) registries
300
+ // -----------------------------------------------------------------------------
301
+ const definedRegistries = new Map();
302
+ /**
303
+ * Creates a module-level ("static") registry and records it in the catalogue,
304
+ * so {@link freezeDefinedRegistries} (called by `RegistryFreezeService` after
305
+ * bootstrap) freezes it and {@link listDefinedRegistries} reports it.
306
+ *
307
+ * Call it once, at module scope, in the registry's own file; fill it from the
308
+ * registry's manifest (see README.md next to this file).
309
+ *
310
+ * @param options - see {@link RegistryOptions}.
311
+ * @returns the new registry.
312
+ * @throws RegistryError `DUPLICATE_REGISTRY` when a defined registry already has that name.
313
+ *
314
+ * @example
315
+ * ```ts
316
+ * // apps/api/src/common/permissions/permission.registry.ts
317
+ * export const permissionRegistry = defineRegistry<PermissionDefinition>({
318
+ * name: 'permissions',
319
+ * idOf: (p) => p.id,
320
+ * });
321
+ * ```
322
+ *
323
+ * @extensionPoint registry
324
+ * @stability stable
325
+ */
326
+ function defineRegistry(options) {
327
+ if (definedRegistries.has(options.name)) {
328
+ throw new RegistryError('DUPLICATE_REGISTRY', options.name, `A registry named "${options.name}" is already defined. Registry names must be unique.`);
329
+ }
330
+ const registry = new Registry(options);
331
+ definedRegistries.set(registry.name, registry);
332
+ return registry;
333
+ }
334
+ /**
335
+ * Every registry created with {@link defineRegistry}, in definition order.
336
+ *
337
+ * @stability stable
338
+ */
339
+ function listDefinedRegistries() {
340
+ return [...definedRegistries.values()];
341
+ }
342
+ /**
343
+ * Freezes every registry created with {@link defineRegistry}. Idempotent.
344
+ *
345
+ * @stability stable
346
+ */
347
+ function freezeDefinedRegistries() {
348
+ for (const registry of definedRegistries.values())
349
+ registry.freeze();
350
+ }
351
+ //# sourceMappingURL=registry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../../src/core/registry/registry.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,29 @@
1
+ import { Registry } from './registry';
2
+ /**
3
+ * Adds `entries` to `registry` for the duration of `fn`, then restores the
4
+ * registry's previous entries and frozen state, even if `fn` throws.
5
+ *
6
+ * A frozen registry is unfrozen for the duration and frozen again afterwards.
7
+ * Restoring is a full rollback: an entry `fn` itself registers is removed too,
8
+ * and an entry a temporary one replaced (under `onDuplicate: 'replace'`) comes
9
+ * back at its old position. Nested calls restore in LIFO order, so they compose.
10
+ *
11
+ * @param registry - the registry to extend.
12
+ * @param entries - the temporary entries; registered with `registerAll`, so the
13
+ * registry's usual id, validation and duplicate rules apply.
14
+ * @param fn - the code that needs the entries. May be async.
15
+ * @returns whatever `fn` returns.
16
+ * @throws Error when called outside Jest or Vitest (`JEST_WORKER_ID` / `VITEST` unset).
17
+ * @throws RegistryError when an entry is refused; the registry is unchanged.
18
+ *
19
+ * @example
20
+ * ```ts
21
+ * await withTemporaryEntries(permissionRegistry, [{ id: 'test:read' }], async () => {
22
+ * expect(permissionRegistry.has('test:read')).toBe(true);
23
+ * });
24
+ * ```
25
+ *
26
+ * @stability stable
27
+ */
28
+ export declare function withTemporaryEntries<T, R>(registry: Registry<T>, entries: readonly T[], fn: () => R | Promise<R>): Promise<R>;
29
+ //# sourceMappingURL=testing.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"testing.d.ts","sourceRoot":"","sources":["../../../src/core/registry/testing.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAOtC;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wBAAsB,oBAAoB,CAAC,CAAC,EAAE,CAAC,EAC7C,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,EACrB,OAAO,EAAE,SAAS,CAAC,EAAE,EACrB,EAAE,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,GACvB,OAAO,CAAC,CAAC,CAAC,CAiBZ"}
@@ -0,0 +1,63 @@
1
+ "use strict";
2
+ // =============================================================================
3
+ // Registry test helper (issue #675, PP-1.3)
4
+ // =============================================================================
5
+ //
6
+ // Static registries are frozen once a Nest application has bootstrapped, and
7
+ // a Jest worker shares one module graph across every `it`. A test that needs an
8
+ // extra entry (a fake permission, a throwaway settings namespace) therefore
9
+ // cannot just call `register()`: it would hit `FROZEN`, or leak the entry into
10
+ // the next test. `withTemporaryEntries` adds the entries, runs the callback and
11
+ // puts the registry back exactly as it found it.
12
+ //
13
+ // Framework-free like registry.ts, and refused outside a test runner so no
14
+ // production path can unfreeze a registry.
15
+ // =============================================================================
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ exports.withTemporaryEntries = withTemporaryEntries;
18
+ /** Whether this process is a Jest worker or a Vitest run. */
19
+ function insideTestRunner() {
20
+ return Boolean(process.env.JEST_WORKER_ID || process.env.VITEST);
21
+ }
22
+ /**
23
+ * Adds `entries` to `registry` for the duration of `fn`, then restores the
24
+ * registry's previous entries and frozen state, even if `fn` throws.
25
+ *
26
+ * A frozen registry is unfrozen for the duration and frozen again afterwards.
27
+ * Restoring is a full rollback: an entry `fn` itself registers is removed too,
28
+ * and an entry a temporary one replaced (under `onDuplicate: 'replace'`) comes
29
+ * back at its old position. Nested calls restore in LIFO order, so they compose.
30
+ *
31
+ * @param registry - the registry to extend.
32
+ * @param entries - the temporary entries; registered with `registerAll`, so the
33
+ * registry's usual id, validation and duplicate rules apply.
34
+ * @param fn - the code that needs the entries. May be async.
35
+ * @returns whatever `fn` returns.
36
+ * @throws Error when called outside Jest or Vitest (`JEST_WORKER_ID` / `VITEST` unset).
37
+ * @throws RegistryError when an entry is refused; the registry is unchanged.
38
+ *
39
+ * @example
40
+ * ```ts
41
+ * await withTemporaryEntries(permissionRegistry, [{ id: 'test:read' }], async () => {
42
+ * expect(permissionRegistry.has('test:read')).toBe(true);
43
+ * });
44
+ * ```
45
+ *
46
+ * @stability stable
47
+ */
48
+ async function withTemporaryEntries(registry, entries, fn) {
49
+ if (!insideTestRunner()) {
50
+ throw new Error(`withTemporaryEntries(${registry.name}) is a test helper: it runs only under Jest or Vitest ` +
51
+ '(JEST_WORKER_ID or VITEST must be set).');
52
+ }
53
+ const saved = registry._captureState();
54
+ registry._unfreeze();
55
+ try {
56
+ registry.registerAll(entries);
57
+ return await fn();
58
+ }
59
+ finally {
60
+ registry._restoreState(saved);
61
+ }
62
+ }
63
+ //# sourceMappingURL=testing.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"testing.js","sourceRoot":"","sources":["../../../src/core/registry/testing.ts"],"names":[],"mappings":";AAAA,gFAAgF;AAChF,4CAA4C;AAC5C,gFAAgF;AAChF,EAAE;AACF,6EAA6E;AAC7E,gFAAgF;AAChF,4EAA4E;AAC5E,+EAA+E;AAC/E,gFAAgF;AAChF,iDAAiD;AACjD,EAAE;AACF,2EAA2E;AAC3E,2CAA2C;AAC3C,gFAAgF;;AAmChF,oDAqBC;AApDD,6DAA6D;AAC7D,SAAS,gBAAgB;IACvB,OAAO,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,IAAI,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;AACnE,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACI,KAAK,UAAU,oBAAoB,CACxC,QAAqB,EACrB,OAAqB,EACrB,EAAwB;IAExB,IAAI,CAAC,gBAAgB,EAAE,EAAE,CAAC;QACxB,MAAM,IAAI,KAAK,CACb,wBAAwB,QAAQ,CAAC,IAAI,wDAAwD;YAC3F,yCAAyC,CAC5C,CAAC;IACJ,CAAC;IAED,MAAM,KAAK,GAAG,QAAQ,CAAC,aAAa,EAAE,CAAC;IACvC,QAAQ,CAAC,SAAS,EAAE,CAAC;IAErB,IAAI,CAAC;QACH,QAAQ,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;QAC9B,OAAO,MAAM,EAAE,EAAE,CAAC;IACpB,CAAC;YAAS,CAAC;QACT,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;IAChC,CAAC;AACH,CAAC"}
@@ -0,0 +1,100 @@
1
+ import type { DoctorStatus } from '@marinoscar/platform-contract/doctor';
2
+ export { DOCTOR_STATUSES, DOCTOR_STATUS_RANK } from '@marinoscar/platform-contract/doctor';
3
+ export type { DoctorStatus } from '@marinoscar/platform-contract/doctor';
4
+ /**
5
+ * The categories the platform ships, in display order. The default of
6
+ * `DoctorModuleOptions.categoryOrder`; an app adds its own simply by using a
7
+ * new string (or reorders them with that option), never by editing this list.
8
+ *
9
+ * @stability stable
10
+ */
11
+ export declare const PLATFORM_DOCTOR_CATEGORIES: readonly ["core", "auth", "maintenance", "storage", "email", "push", "ai", "jobs", "nodes", "backup", "telemetry", "network"];
12
+ /**
13
+ * The shipped categories under their pre-package name.
14
+ *
15
+ * @deprecated Use {@link PLATFORM_DOCTOR_CATEGORIES}; same values, same order.
16
+ * @stability stable
17
+ */
18
+ export declare const DOCTOR_CATEGORIES: readonly ["core", "auth", "maintenance", "storage", "email", "push", "ai", "jobs", "nodes", "backup", "telemetry", "network"];
19
+ /**
20
+ * One of the shipped categories.
21
+ *
22
+ * @stability stable
23
+ */
24
+ export type CoreDoctorCategory = (typeof PLATFORM_DOCTOR_CATEGORIES)[number];
25
+ /**
26
+ * A check's category. The shipped ones autocomplete; an app adds its own simply
27
+ * by using a new string (it sorts after the configured ones, in registration
28
+ * order) — no edit to this package needed.
29
+ *
30
+ * @stability stable
31
+ */
32
+ export type DoctorCategory = CoreDoctorCategory | (string & {});
33
+ /**
34
+ * A scalar fact a check wants to show beside its detail. Never secret material.
35
+ *
36
+ * @stability stable
37
+ */
38
+ export type DoctorDataValue = string | number | boolean | null;
39
+ /**
40
+ * What one run of a check found.
41
+ *
42
+ * @stability stable
43
+ */
44
+ export interface DoctorCheckOutcome {
45
+ /** The verdict. */
46
+ status: DoctorStatus;
47
+ /** One line: what was found. "Connected in 12 ms", "No provider is enabled". */
48
+ detail: string;
49
+ /** Expected on warn/fail: a settings page, a command or a variable to set. */
50
+ remedy?: string;
51
+ /** The underlying error message, when a probe failed. Never secret material. */
52
+ error?: string;
53
+ /** Small scalar facts (counts, versions, latencies). Never secret material. */
54
+ data?: Record<string, DoctorDataValue>;
55
+ }
56
+ /**
57
+ * One read-only check of the running deployment, contributed by the app's
58
+ * feature module that owns the capability: an `@Injectable()` that injects
59
+ * `DoctorCheckRegistry` and calls `register(this)` in its `onModuleInit`.
60
+ *
61
+ * The five rules: it never throws; it gives a `remedy` on `warn`/`fail`; it is
62
+ * READ-ONLY (no write, no audit event, no job, no model call, no "test" service);
63
+ * its results never carry secret material; `skip` means "not evaluated".
64
+ *
65
+ * @example
66
+ * ```ts
67
+ * @Injectable()
68
+ * export class DbConnectionDoctorCheck implements DoctorCheck, OnModuleInit {
69
+ * readonly id = 'core.database';
70
+ * readonly category = 'core';
71
+ * readonly label = 'Database connection';
72
+ * constructor(private readonly registry: DoctorCheckRegistry, private readonly prisma: PrismaService) {}
73
+ * onModuleInit() { this.registry.register(this); }
74
+ * async run(): Promise<DoctorCheckOutcome> { ... }
75
+ * }
76
+ * ```
77
+ *
78
+ * @extensionPoint registry
79
+ * @stability stable
80
+ */
81
+ export interface DoctorCheck {
82
+ /** Stable, dotted, unique across the application: `storage.bucket`. */
83
+ readonly id: string;
84
+ /** Where the report groups it. */
85
+ readonly category: DoctorCategory;
86
+ /** Short human label: "Object storage bucket". */
87
+ readonly label: string;
88
+ /** The web route that fixes this, e.g. `/admin/settings/storage`. */
89
+ readonly settingsPath?: string;
90
+ /** Per-check ceiling; the module's `defaultTimeoutMs` (5000 ms) otherwise. */
91
+ readonly timeoutMs?: number;
92
+ /**
93
+ * Ids of checks that must not `fail` or `skip` for this one to run. When one
94
+ * does, this check is reported as `skip` and `run()` is never called.
95
+ */
96
+ readonly dependsOn?: readonly string[];
97
+ /** Read-only. See rules 1, 3 and 4 in this file's header. */
98
+ run(): Promise<DoctorCheckOutcome>;
99
+ }
100
+ //# sourceMappingURL=doctor-check.interface.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"doctor-check.interface.d.ts","sourceRoot":"","sources":["../../src/doctor/doctor-check.interface.ts"],"names":[],"mappings":"AAgEA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sCAAsC,CAAC;AAEzE,OAAO,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,sCAAsC,CAAC;AAC3F,YAAY,EAAE,YAAY,EAAE,MAAM,sCAAsC,CAAC;AAEzE;;;;;;GAMG;AACH,eAAO,MAAM,0BAA0B,+HAa7B,CAAC;AAEX;;;;;GAKG;AACH,eAAO,MAAM,iBAAiB,+HAA6B,CAAC;AAE5D;;;;GAIG;AACH,MAAM,MAAM,kBAAkB,GAAG,CAAC,OAAO,0BAA0B,CAAC,CAAC,MAAM,CAAC,CAAC;AAE7E;;;;;;GAMG;AACH,MAAM,MAAM,cAAc,GAAG,kBAAkB,GAAG,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC;AAEhE;;;;GAIG;AACH,MAAM,MAAM,eAAe,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,CAAC;AAE/D;;;;GAIG;AACH,MAAM,WAAW,kBAAkB;IACjC,mBAAmB;IACnB,MAAM,EAAE,YAAY,CAAC;IACrB,gFAAgF;IAChF,MAAM,EAAE,MAAM,CAAC;IACf,8EAA8E;IAC9E,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,gFAAgF;IAChF,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,+EAA+E;IAC/E,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;CACxC;AAED;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,MAAM,WAAW,WAAW;IAC1B,uEAAuE;IACvE,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,kCAAkC;IAClC,QAAQ,CAAC,QAAQ,EAAE,cAAc,CAAC;IAClC,kDAAkD;IAClD,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,qEAAqE;IACrE,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAC/B,8EAA8E;IAC9E,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B;;;OAGG;IACH,QAAQ,CAAC,SAAS,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACvC,6DAA6D;IAC7D,GAAG,IAAI,OAAO,CAAC,kBAAkB,CAAC,CAAC;CACpC"}
@@ -0,0 +1,95 @@
1
+ "use strict";
2
+ // =============================================================================
3
+ // The admin doctor check contract (issue #634; packaged by #696)
4
+ // =============================================================================
5
+ //
6
+ // `GET /api/admin/doctor` answers one question for an administrator: "is every
7
+ // capability of this deployment configured, reachable and healthy?" It does so
8
+ // by running a set of small, independent checks — one per fact worth knowing —
9
+ // that each capability's own module contributes.
10
+ //
11
+ // The contract deliberately mirrors the CLI's pre-install doctor
12
+ // (`apps/cli/src/deploy/checks/types.ts`): the same four statuses, the same
13
+ // one-line `detail`, the same `remedy`. An operator who has read one report
14
+ // can read the other. The API doctor answers "is the RUNNING deployment
15
+ // healthy?", where the CLI doctor answers "is this SERVER ready to install?".
16
+ //
17
+ // FIVE RULES THAT MAKE THIS WORTH HAVING:
18
+ //
19
+ // 1. A CHECK NEVER THROWS. A crashed probe is a `fail` carrying the error's
20
+ // message. `DoctorService` guards every call as well (a throw becomes a
21
+ // `fail`, a hang becomes a `fail` after `timeoutMs`), but a check that
22
+ // relies on that guard reports a worse `detail` than one that catches
23
+ // its own failure and says what it was doing.
24
+ //
25
+ // 2. `remedy` IS EXPECTED ON `warn` AND `fail`, and should name a settings
26
+ // page, a command or an environment variable — "fix storage" is not a
27
+ // remedy. The service fills a generic one ("Open <settingsPath> to
28
+ // review.") when a check omits it, so the report never shows a problem
29
+ // with no next step; each check's own spec asserts it supplies a real one.
30
+ //
31
+ // 3. ⚠ CHECKS ARE READ-ONLY. A doctor run must be safe against a production
32
+ // deployment at any time, by anyone holding `system_settings:read`, as
33
+ // often as they like. Concretely, a check:
34
+ // - NEVER calls the side-effecting "test" services:
35
+ // `StorageConnectionTestService`, `AiProviderTestService`,
36
+ // `EmailTestSendService`, `PushTestService`,
37
+ // `TelemetryConnectionTestService`. Those write probe objects, spend
38
+ // model tokens, send mail and pushes, or audit the attempt;
39
+ // - never writes an object, a row or an audit event;
40
+ // - never enqueues a job or calls a model.
41
+ // Reading (a `SELECT`, a `HEAD`, a settings read) is the whole budget.
42
+ //
43
+ // 4. RESULTS NEVER CONTAIN SECRET MATERIAL. Not in `detail`, not in
44
+ // `error`, not in `data`. A check that reads a secret to validate it
45
+ // (the VAPID private key, say) reports only the verdict. Lengths and
46
+ // counts are fine; values, hints and fingerprints are not.
47
+ //
48
+ // 5. `skip` MEANS "NOT EVALUATED", for one of two reasons:
49
+ // - a check it `dependsOn` did not pass (the service decides this; the
50
+ // check does not run at all), or
51
+ // - the capability is INTENTIONALLY OFF — AI switched off, telemetry
52
+ // collection off. That is an operator's choice, not a problem, so it
53
+ // is neither `warn` (nothing to fix) nor `pass` (nothing was proven).
54
+ // A `skip` needs no remedy.
55
+ //
56
+ // Registration: see `doctor-check.registry.ts`. Each check is an
57
+ // `@Injectable()` in its OWNING feature module of the app, under
58
+ // `<module>/doctor/`, that calls `registry.register(this)` from its own
59
+ // `onModuleInit`. Checks never live in this package: they are registry
60
+ // entries the app contributes (the Extension Contract, rung 2).
61
+ // =============================================================================
62
+ Object.defineProperty(exports, "__esModule", { value: true });
63
+ exports.DOCTOR_CATEGORIES = exports.PLATFORM_DOCTOR_CATEGORIES = exports.DOCTOR_STATUS_RANK = exports.DOCTOR_STATUSES = void 0;
64
+ var doctor_1 = require("@marinoscar/platform-contract/doctor");
65
+ Object.defineProperty(exports, "DOCTOR_STATUSES", { enumerable: true, get: function () { return doctor_1.DOCTOR_STATUSES; } });
66
+ Object.defineProperty(exports, "DOCTOR_STATUS_RANK", { enumerable: true, get: function () { return doctor_1.DOCTOR_STATUS_RANK; } });
67
+ /**
68
+ * The categories the platform ships, in display order. The default of
69
+ * `DoctorModuleOptions.categoryOrder`; an app adds its own simply by using a
70
+ * new string (or reorders them with that option), never by editing this list.
71
+ *
72
+ * @stability stable
73
+ */
74
+ exports.PLATFORM_DOCTOR_CATEGORIES = [
75
+ 'core',
76
+ 'auth',
77
+ 'maintenance',
78
+ 'storage',
79
+ 'email',
80
+ 'push',
81
+ 'ai',
82
+ 'jobs',
83
+ 'nodes',
84
+ 'backup',
85
+ 'telemetry',
86
+ 'network',
87
+ ];
88
+ /**
89
+ * The shipped categories under their pre-package name.
90
+ *
91
+ * @deprecated Use {@link PLATFORM_DOCTOR_CATEGORIES}; same values, same order.
92
+ * @stability stable
93
+ */
94
+ exports.DOCTOR_CATEGORIES = exports.PLATFORM_DOCTOR_CATEGORIES;
95
+ //# sourceMappingURL=doctor-check.interface.js.map