@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,234 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ 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;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var HttpExceptionFilter_1;
9
+ Object.defineProperty(exports, "__esModule", { value: true });
10
+ exports.HttpExceptionFilter = void 0;
11
+ const common_1 = require("@nestjs/common");
12
+ const nestjs_zod_1 = require("nestjs-zod");
13
+ const verbatim_error_body_exception_1 = require("./verbatim-error-body.exception");
14
+ /**
15
+ * The application-wide exception filter: turns every thrown value into the one
16
+ * error envelope (`{ statusCode, code, message, details?, timestamp, path }`,
17
+ * documented by {@link ErrorDto}) on a Fastify reply, and logs one line per
18
+ * failure (`warn` below 500, `error` with the stack from 500 up).
19
+ *
20
+ * `code` is always derived from the HTTP status; a `code` on the thrown
21
+ * payload is ignored. `details` is the only place endpoint-specific data
22
+ * survives. An exception branded with {@link withVerbatimErrorBody} skips the
23
+ * envelope and is sent exactly as thrown. A 429 whose `details.retryAfterMs`
24
+ * is a positive number also gets a `Retry-After` header (whole seconds,
25
+ * rounded up). A `ZodValidationException` without explicit details answers
26
+ * `details.issues` (`[{ path, message }]`), never the submitted value. A
27
+ * non-`HttpException` error is a 500 whose `details` carries the stack unless
28
+ * `NODE_ENV` is `production`.
29
+ *
30
+ * Register it once, as an `APP_FILTER` provider of the root module. There is
31
+ * no module to import and nothing to configure.
32
+ *
33
+ * @stability stable
34
+ * @extensionPoint component
35
+ * @example
36
+ * ```ts
37
+ * import { APP_FILTER } from '@nestjs/core';
38
+ * import { HttpExceptionFilter } from '@marinoscar/platform-api/core';
39
+ *
40
+ * @Module({ providers: [{ provide: APP_FILTER, useClass: HttpExceptionFilter }] })
41
+ * export class AppModule {}
42
+ * ```
43
+ */
44
+ let HttpExceptionFilter = HttpExceptionFilter_1 = class HttpExceptionFilter {
45
+ logger = new common_1.Logger(HttpExceptionFilter_1.name);
46
+ /**
47
+ * Nest's `ExceptionFilter` hook: write the error response for `exception`
48
+ * on the HTTP reply of `host`. Called by Nest, not by application code.
49
+ *
50
+ * @param exception - Whatever was thrown.
51
+ * @param host - The Nest arguments host of the failed request (HTTP only).
52
+ */
53
+ catch(exception, host) {
54
+ const ctx = host.switchToHttp();
55
+ const response = ctx.getResponse();
56
+ const request = ctx.getRequest();
57
+ let status = common_1.HttpStatus.INTERNAL_SERVER_ERROR;
58
+ let code = 'INTERNAL_ERROR';
59
+ let message = 'An unexpected error occurred';
60
+ let details;
61
+ if (exception instanceof common_1.HttpException) {
62
+ status = exception.getStatus();
63
+ const exceptionResponse = exception.getResponse();
64
+ // ---------------------------------------------------------------------
65
+ // Verbatim bodies (#153) — checked FIRST, and returns immediately.
66
+ // ---------------------------------------------------------------------
67
+ // A branded exception carries a body dictated by an external spec, not by
68
+ // us: today that is `POST /auth/device/token`, whose RFC 8628 §3.5 body is
69
+ // `{ error, error_description }`. Sending it through the envelope below
70
+ // destroys it — the envelope reads only `message`, `code` and `details`,
71
+ // so all four RFC outcomes used to arrive as the same generic 400 and a
72
+ // polling client could not tell them apart. See
73
+ // `./verbatim-error-body.exception.ts` for why the opt-out
74
+ // is an explicit brand rather than the filter sniffing for an `error` key.
75
+ //
76
+ // Nothing is merged in — not `statusCode`, not `timestamp`, not `path`.
77
+ // Extra keys would not upset a tolerant parser, but they would put fields
78
+ // the RFC never defines into a protocol response, and a body that is
79
+ // "mostly the spec" is exactly the kind of thing a strict client rejects
80
+ // and a reader stops trusting. The status line still carries the code.
81
+ //
82
+ // The object guard matters: a string payload has nothing to send
83
+ // verbatim, so such an exception falls through to the envelope rather than
84
+ // putting a bare JSON string on the wire.
85
+ if ((0, verbatim_error_body_exception_1.hasVerbatimErrorBody)(exception) &&
86
+ typeof exceptionResponse === 'object' &&
87
+ exceptionResponse !== null) {
88
+ this.logOutcome(request, status, this.summarize(exceptionResponse), exception);
89
+ response.code(status).send(exceptionResponse);
90
+ return;
91
+ }
92
+ if (typeof exceptionResponse === 'string') {
93
+ message = exceptionResponse;
94
+ }
95
+ else if (typeof exceptionResponse === 'object') {
96
+ const resp = exceptionResponse;
97
+ message = resp.message || message;
98
+ details = resp.details;
99
+ }
100
+ // A body/query that failed the global `ZodValidationPipe` names the
101
+ // failing fields under `details.issues` (`{ path, message }` each). Only
102
+ // the path and Zod's (or the schema's own) message are published — never
103
+ // the submitted value, which may be personal data or free text.
104
+ if (exception instanceof nestjs_zod_1.ZodValidationException && details === undefined) {
105
+ details = zodIssueDetails(exception.getZodError());
106
+ }
107
+ // `code` is ALWAYS derived from the status, and a `code` on the thrown
108
+ // payload is deliberately ignored.
109
+ //
110
+ // This line used to be preceded by `code = (resp.code as string) ||
111
+ // this.getCodeFromStatus(status)`, which this one immediately overwrote —
112
+ // dead since it was written, so no exception in the app could ever set its
113
+ // own code (#153). The dead line was removed rather than made to work,
114
+ // because honouring a payload `code` is a real behaviour change on the
115
+ // wire and the current behaviour is the one the API actually promises:
116
+ //
117
+ // * `./error.dto.ts` publishes `code` as a CLOSED ENUM of the
118
+ // nine status-derived values, and says in so many words that the
119
+ // filter overwrites any `code` an exception supplied. That DTO is the
120
+ // `default` error response on every operation in the OpenAPI document,
121
+ // so it is a published contract, not a comment.
122
+ // * `test/core/http-exception.filter.spec.ts` asserts it ("The filter overrides
123
+ // custom code with standard code mapping"). The behaviour is tested,
124
+ // not accidental.
125
+ // * One exception does pass a `code`: `DatabaseSeedException` sends
126
+ // `DATABASE_SEED_REQUIRED`. Reviving the dead line would have changed
127
+ // that response's `code` from `INTERNAL_ERROR` to a value outside the
128
+ // published enum — a silent contract break in the one place nobody
129
+ // would think to check. Its identifying data is already in `details`,
130
+ // which the envelope carries through.
131
+ //
132
+ // Endpoint-specific machine-readable data belongs under `details`; an
133
+ // externally-specified body belongs behind the verbatim brand above.
134
+ code = this.getCodeFromStatus(status);
135
+ }
136
+ else if (exception instanceof Error) {
137
+ message = exception.message;
138
+ // Don't expose stack traces in production
139
+ if (process.env.NODE_ENV !== 'production') {
140
+ details = exception.stack;
141
+ }
142
+ }
143
+ const errorResponse = {
144
+ statusCode: status,
145
+ code,
146
+ message,
147
+ timestamp: new Date().toISOString(),
148
+ path: request.url,
149
+ };
150
+ if (details) {
151
+ errorResponse.details = details;
152
+ }
153
+ this.logOutcome(request, status, message, exception);
154
+ // A 429 that says when to come back (`details.retryAfterMs` — every
155
+ // `AiError('AI_RATE_LIMITED')` that knows, including the AI rate limits of
156
+ // #450) also says so in the standard header, in whole seconds rounded UP
157
+ // so a client that honours it never retries early.
158
+ const retryAfterSeconds = status === 429 ? retryAfterSecondsOf(details) : undefined;
159
+ if (retryAfterSeconds !== undefined) {
160
+ response.header('Retry-After', String(retryAfterSeconds));
161
+ }
162
+ // Fastify response - use code() and send()
163
+ response.code(status).send(errorResponse);
164
+ }
165
+ /**
166
+ * One log line per handled failure, identical for enveloped and verbatim
167
+ * responses. Extracted so the verbatim early-return above cannot silently
168
+ * skip logging — a device-flow `slow_down` storm has to be visible in the
169
+ * logs like any other 4xx.
170
+ */
171
+ logOutcome(request, status, summary, exception) {
172
+ if (status >= 500) {
173
+ this.logger.error(`${request.method} ${request.url} - ${status}`, exception instanceof Error ? exception.stack : exception);
174
+ }
175
+ else {
176
+ this.logger.warn(`${request.method} ${request.url} - ${status}: ${summary}`);
177
+ }
178
+ }
179
+ /**
180
+ * A short log-only description of a verbatim body.
181
+ *
182
+ * Reading `error` here is for the LOG LINE ONLY and shapes nothing — an RFC
183
+ * body's `error` is the single most useful thing to see in operations
184
+ * (`slow_down` and `access_denied` mean very different things at 3am), and
185
+ * without it every device-flow failure logs as an indistinguishable 400. The
186
+ * body itself is never stringified into the log: a verbatim payload is
187
+ * whatever the spec says it is, and this filter should not assume the rest of
188
+ * it is safe to print.
189
+ */
190
+ summarize(body) {
191
+ const label = body.error ?? body.message;
192
+ return typeof label === 'string' ? label : 'verbatim error body';
193
+ }
194
+ getCodeFromStatus(status) {
195
+ const codeMap = {
196
+ 400: 'BAD_REQUEST',
197
+ 401: 'UNAUTHORIZED',
198
+ 403: 'FORBIDDEN',
199
+ 404: 'NOT_FOUND',
200
+ 409: 'CONFLICT',
201
+ 412: 'PRECONDITION_FAILED',
202
+ 413: 'PAYLOAD_TOO_LARGE',
203
+ 422: 'UNPROCESSABLE_ENTITY',
204
+ 429: 'TOO_MANY_REQUESTS',
205
+ 500: 'INTERNAL_ERROR',
206
+ };
207
+ return codeMap[status] || 'ERROR';
208
+ }
209
+ };
210
+ exports.HttpExceptionFilter = HttpExceptionFilter;
211
+ exports.HttpExceptionFilter = HttpExceptionFilter = HttpExceptionFilter_1 = __decorate([
212
+ (0, common_1.Catch)()
213
+ ], HttpExceptionFilter);
214
+ /** `details.retryAfterMs` as a `Retry-After` delta-seconds value (at least 1), or `undefined`. */
215
+ function retryAfterSecondsOf(details) {
216
+ if (details === null || typeof details !== 'object')
217
+ return undefined;
218
+ const ms = details.retryAfterMs;
219
+ return typeof ms === 'number' && Number.isFinite(ms) && ms > 0 ? Math.max(1, Math.ceil(ms / 1000)) : undefined;
220
+ }
221
+ /** `{ issues: [{ path: 'readings.0.unit', message }] }`, or undefined. */
222
+ function zodIssueDetails(error) {
223
+ const issues = error?.issues;
224
+ if (!Array.isArray(issues) || issues.length === 0) {
225
+ return undefined;
226
+ }
227
+ return {
228
+ issues: issues.map((issue) => ({
229
+ path: Array.isArray(issue.path) ? issue.path.map(String).join('.') : '',
230
+ message: typeof issue.message === 'string' ? issue.message : 'Invalid value',
231
+ })),
232
+ };
233
+ }
234
+ //# sourceMappingURL=http-exception.filter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"http-exception.filter.js","sourceRoot":"","sources":["../../../src/core/errors/http-exception.filter.ts"],"names":[],"mappings":";;;;;;;;;;AAAA,2CAOwB;AACxB,2CAAoD;AACpD,mFAAuE;AAWvE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AAEI,IAAM,mBAAmB,2BAAzB,MAAM,mBAAmB;IACb,MAAM,GAAG,IAAI,eAAM,CAAC,qBAAmB,CAAC,IAAI,CAAC,CAAC;IAE/D;;;;;;OAMG;IACH,KAAK,CAAC,SAAkB,EAAE,IAAmB;QAC3C,MAAM,GAAG,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;QAChC,MAAM,QAAQ,GAAG,GAAG,CAAC,WAAW,EAAE,CAAC;QACnC,MAAM,OAAO,GAAG,GAAG,CAAC,UAAU,EAAE,CAAC;QAEjC,IAAI,MAAM,GAAG,mBAAU,CAAC,qBAAqB,CAAC;QAC9C,IAAI,IAAI,GAAG,gBAAgB,CAAC;QAC5B,IAAI,OAAO,GAAG,8BAA8B,CAAC;QAC7C,IAAI,OAAgB,CAAC;QAErB,IAAI,SAAS,YAAY,sBAAa,EAAE,CAAC;YACvC,MAAM,GAAG,SAAS,CAAC,SAAS,EAAE,CAAC;YAC/B,MAAM,iBAAiB,GAAG,SAAS,CAAC,WAAW,EAAE,CAAC;YAElD,wEAAwE;YACxE,mEAAmE;YACnE,wEAAwE;YACxE,0EAA0E;YAC1E,2EAA2E;YAC3E,wEAAwE;YACxE,yEAAyE;YACzE,wEAAwE;YACxE,gDAAgD;YAChD,2DAA2D;YAC3D,2EAA2E;YAC3E,EAAE;YACF,wEAAwE;YACxE,0EAA0E;YAC1E,qEAAqE;YACrE,yEAAyE;YACzE,uEAAuE;YACvE,EAAE;YACF,iEAAiE;YACjE,2EAA2E;YAC3E,0CAA0C;YAC1C,IACE,IAAA,oDAAoB,EAAC,SAAS,CAAC;gBAC/B,OAAO,iBAAiB,KAAK,QAAQ;gBACrC,iBAAiB,KAAK,IAAI,EAC1B,CAAC;gBACD,IAAI,CAAC,UAAU,CACb,OAAO,EACP,MAAM,EACN,IAAI,CAAC,SAAS,CAAC,iBAA4C,CAAC,EAC5D,SAAS,CACV,CAAC;gBAEF,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;gBAC9C,OAAO;YACT,CAAC;YAED,IAAI,OAAO,iBAAiB,KAAK,QAAQ,EAAE,CAAC;gBAC1C,OAAO,GAAG,iBAAiB,CAAC;YAC9B,CAAC;iBAAM,IAAI,OAAO,iBAAiB,KAAK,QAAQ,EAAE,CAAC;gBACjD,MAAM,IAAI,GAAG,iBAA4C,CAAC;gBAC1D,OAAO,GAAI,IAAI,CAAC,OAAkB,IAAI,OAAO,CAAC;gBAC9C,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;YACzB,CAAC;YAED,oEAAoE;YACpE,yEAAyE;YACzE,yEAAyE;YACzE,gEAAgE;YAChE,IAAI,SAAS,YAAY,mCAAsB,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;gBACzE,OAAO,GAAG,eAAe,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC,CAAC;YACrD,CAAC;YAED,uEAAuE;YACvE,mCAAmC;YACnC,EAAE;YACF,oEAAoE;YACpE,0EAA0E;YAC1E,2EAA2E;YAC3E,uEAAuE;YACvE,uEAAuE;YACvE,uEAAuE;YACvE,EAAE;YACF,gEAAgE;YAChE,qEAAqE;YACrE,0EAA0E;YAC1E,2EAA2E;YAC3E,oDAAoD;YACpD,kFAAkF;YAClF,yEAAyE;YACzE,sBAAsB;YACtB,sEAAsE;YACtE,0EAA0E;YAC1E,0EAA0E;YAC1E,uEAAuE;YACvE,0EAA0E;YAC1E,0CAA0C;YAC1C,EAAE;YACF,sEAAsE;YACtE,qEAAqE;YACrE,IAAI,GAAG,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC;QACxC,CAAC;aAAM,IAAI,SAAS,YAAY,KAAK,EAAE,CAAC;YACtC,OAAO,GAAG,SAAS,CAAC,OAAO,CAAC;YAC5B,0CAA0C;YAC1C,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,YAAY,EAAE,CAAC;gBAC1C,OAAO,GAAG,SAAS,CAAC,KAAK,CAAC;YAC5B,CAAC;QACH,CAAC;QAED,MAAM,aAAa,GAAkB;YACnC,UAAU,EAAE,MAAM;YAClB,IAAI;YACJ,OAAO;YACP,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YACnC,IAAI,EAAE,OAAO,CAAC,GAAG;SAClB,CAAC;QAEF,IAAI,OAAO,EAAE,CAAC;YACZ,aAAa,CAAC,OAAO,GAAG,OAAO,CAAC;QAClC,CAAC;QAED,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC;QAErD,oEAAoE;QACpE,2EAA2E;QAC3E,yEAAyE;QACzE,mDAAmD;QACnD,MAAM,iBAAiB,GAAG,MAAM,KAAK,GAAG,CAAC,CAAC,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAEpF,IAAI,iBAAiB,KAAK,SAAS,EAAE,CAAC;YACpC,QAAQ,CAAC,MAAM,CAAC,aAAa,EAAE,MAAM,CAAC,iBAAiB,CAAC,CAAC,CAAC;QAC5D,CAAC;QAED,2CAA2C;QAC3C,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;IAC5C,CAAC;IAED;;;;;OAKG;IACK,UAAU,CAChB,OAAwC,EACxC,MAAc,EACd,OAAe,EACf,SAAkB;QAElB,IAAI,MAAM,IAAI,GAAG,EAAE,CAAC;YAClB,IAAI,CAAC,MAAM,CAAC,KAAK,CACf,GAAG,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,GAAG,MAAM,MAAM,EAAE,EAC9C,SAAS,YAAY,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CACzD,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,MAAM,CAAC,IAAI,CACd,GAAG,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,GAAG,MAAM,MAAM,KAAK,OAAO,EAAE,CAC3D,CAAC;QACJ,CAAC;IACH,CAAC;IAED;;;;;;;;;;OAUG;IACK,SAAS,CAAC,IAA6B;QAC7C,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,OAAO,CAAC;QACzC,OAAO,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,qBAAqB,CAAC;IACnE,CAAC;IAEO,iBAAiB,CAAC,MAAc;QACtC,MAAM,OAAO,GAA2B;YACtC,GAAG,EAAE,aAAa;YAClB,GAAG,EAAE,cAAc;YACnB,GAAG,EAAE,WAAW;YAChB,GAAG,EAAE,WAAW;YAChB,GAAG,EAAE,UAAU;YACf,GAAG,EAAE,qBAAqB;YAC1B,GAAG,EAAE,mBAAmB;YACxB,GAAG,EAAE,sBAAsB;YAC3B,GAAG,EAAE,mBAAmB;YACxB,GAAG,EAAE,gBAAgB;SACtB,CAAC;QACF,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,OAAO,CAAC;IACpC,CAAC;CACF,CAAA;AApMY,kDAAmB;8BAAnB,mBAAmB;IAD/B,IAAA,cAAK,GAAE;GACK,mBAAmB,CAoM/B;AAED,kGAAkG;AAClG,SAAS,mBAAmB,CAAC,OAAgB;IAC3C,IAAI,OAAO,KAAK,IAAI,IAAI,OAAO,OAAO,KAAK,QAAQ;QAAE,OAAO,SAAS,CAAC;IAEtE,MAAM,EAAE,GAAI,OAAsC,CAAC,YAAY,CAAC;IAEhE,OAAO,OAAO,EAAE,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AACjH,CAAC;AAED,0EAA0E;AAC1E,SAAS,eAAe,CAAC,KAAc;IACrC,MAAM,MAAM,GAAI,KAAqC,EAAE,MAAM,CAAC;IAE9D,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAClD,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,OAAO;QACL,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,KAA4C,EAAE,EAAE,CAAC,CAAC;YACpE,IAAI,EAAE,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE;YACvE,OAAO,EAAE,OAAO,KAAK,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe;SAC7E,CAAC,CAAC;KACJ,CAAC;AACJ,CAAC"}
@@ -0,0 +1,46 @@
1
+ import { HttpException } from '@nestjs/common';
2
+ /**
3
+ * Mark an exception so `HttpExceptionFilter` sends its payload to the client
4
+ * exactly as given, instead of rebuilding it as
5
+ * `{ statusCode, code, message, … }`.
6
+ *
7
+ * Returns the same exception instance, so the class identity is untouched:
8
+ * `withVerbatimErrorBody(new BadRequestException(…))` is still a
9
+ * `BadRequestException` and still carries status 400. That matters — guards,
10
+ * interceptors and existing tests that branch on the exception type keep
11
+ * working, and the opt-out stays a single orthogonal fact about the response
12
+ * body rather than a parallel exception hierarchy.
13
+ *
14
+ * The payload MUST be an object; a string payload has nothing to send verbatim
15
+ * and the filter falls back to the envelope for it.
16
+ *
17
+ * Only for a body an external standard dictates (RFC 8628's
18
+ * `{ error, error_description }` is the one use in the reference app); see
19
+ * the header of this file.
20
+ *
21
+ * @param exception - The exception to brand; returned as is.
22
+ * @returns The same exception instance.
23
+ * @stability stable
24
+ * @example
25
+ * ```ts
26
+ * throw withVerbatimErrorBody(
27
+ * new BadRequestException({ error: 'slow_down', error_description: 'Polling too fast' }),
28
+ * );
29
+ * ```
30
+ */
31
+ export declare function withVerbatimErrorBody<T extends HttpException>(exception: T): T;
32
+ /**
33
+ * Whether an exception opted out of the envelope. Read only by
34
+ * `HttpExceptionFilter`.
35
+ *
36
+ * @param exception - Anything thrown.
37
+ * @returns `true` only for an `HttpException` branded by
38
+ * {@link withVerbatimErrorBody}.
39
+ * @stability stable
40
+ * @example
41
+ * ```ts
42
+ * hasVerbatimErrorBody(withVerbatimErrorBody(new BadRequestException({ error: 'x' }))); // true
43
+ * ```
44
+ */
45
+ export declare function hasVerbatimErrorBody(exception: unknown): boolean;
46
+ //# sourceMappingURL=verbatim-error-body.exception.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"verbatim-error-body.exception.d.ts","sourceRoot":"","sources":["../../../src/core/errors/verbatim-error-body.exception.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AA2E/C;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,wBAAgB,qBAAqB,CAAC,CAAC,SAAS,aAAa,EAC3D,SAAS,EAAE,CAAC,GACX,CAAC,CAYH;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,oBAAoB,CAAC,SAAS,EAAE,OAAO,GAAG,OAAO,CAOhE"}
@@ -0,0 +1,135 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.withVerbatimErrorBody = withVerbatimErrorBody;
4
+ exports.hasVerbatimErrorBody = hasVerbatimErrorBody;
5
+ const common_1 = require("@nestjs/common");
6
+ /**
7
+ * Opt-out from the shared error envelope (issue #153).
8
+ *
9
+ * ---------------------------------------------------------------------------
10
+ * WHY THIS EXISTS
11
+ * ---------------------------------------------------------------------------
12
+ * `HttpExceptionFilter` rebuilds EVERY error response from a fixed key
13
+ * allowlist — it reads `message`, `code` and `details` off the thrown payload
14
+ * and discards everything else. That is the right default and must stay the
15
+ * default: one envelope, parsed by exactly one code path in the web app and one
16
+ * in the CLI (`ApiError`, #140), with no endpoint quietly inventing its own
17
+ * error shape for its own callers to special-case.
18
+ *
19
+ * It is wrong for the small set of endpoints whose error body is dictated by an
20
+ * external specification rather than by us. `POST /auth/device/token` is the
21
+ * live example and the reason this file exists: RFC 8628 §3.5 (deferring to
22
+ * RFC 6749 §5.2) specifies `{ error, error_description }` at the TOP LEVEL of
23
+ * the token response, and the codes it defines — `authorization_pending`,
24
+ * `slow_down`, `expired_token`, `access_denied` — ARE the protocol. Each one
25
+ * demands a different action from the polling client: keep waiting, back off,
26
+ * restart the flow, stop and tell the user they declined. Flattened into the
27
+ * envelope all four arrived byte-identical, the RFC code destroyed server-side
28
+ * where no amount of client parsing could recover it, and the endpoint was
29
+ * simply not RFC 8628 compliant.
30
+ *
31
+ * ---------------------------------------------------------------------------
32
+ * WHY A BRAND, AND NOT "A PAYLOAD THAT HAPPENS TO CARRY `error`"
33
+ * ---------------------------------------------------------------------------
34
+ * The smaller fix considered in #153 was for the filter to sniff the payload:
35
+ * if it has an `error` key, pass it through untouched. Fewer lines, no new
36
+ * concepts — and implicit in exactly the way that hurts later. It would make an
37
+ * endpoint's WIRE SHAPE a consequence of the KEY NAMES somebody happened to
38
+ * pick inside a thrown object, decided silently and at a distance from both the
39
+ * throw site and the filter.
40
+ *
41
+ * `throw new BadRequestException({ error: 'could not reach the mailer' })` is a
42
+ * completely natural line for someone to write. Under a sniffing filter that
43
+ * line drops its endpoint out of the envelope, the web app's error rendering
44
+ * stops finding `message`, and nothing at the throw site hints at why. Nobody
45
+ * would connect the failure to a decision made in an exception filter over a
46
+ * key name.
47
+ *
48
+ * The brand inverts that. An error leaves the envelope only because someone
49
+ * said so, in the throw, in one word that is greppable and links back here. An
50
+ * ordinary exception cannot fall out of the envelope by accident no matter what
51
+ * keys it carries, and the next person to add an RFC-shaped endpoint finds the
52
+ * mechanism by following the brand from the filter or from the throw site.
53
+ * The cost is one file of machinery; the thing it buys is that the default
54
+ * cannot be broken by inattention.
55
+ *
56
+ * ---------------------------------------------------------------------------
57
+ * WHEN TO USE IT
58
+ * ---------------------------------------------------------------------------
59
+ * Only when an external standard dictates the body. NOT to give an endpoint a
60
+ * nicer error shape, and NOT to smuggle an extra field to a client: that field
61
+ * belongs under `details`, which the envelope already carries through. Every
62
+ * new use is a new shape some client has to learn, so it should be rare enough
63
+ * that each one is argued for.
64
+ */
65
+ /**
66
+ * Registered via `Symbol.for` rather than a module-local `Symbol()` on purpose.
67
+ * The brand is set in one module and read in another, and both this module and
68
+ * the filter can be instantiated twice in a single process — ts-jest gives each
69
+ * test file its own module registry, and a `src`/`dist` double-load does the
70
+ * same in a mis-built container. Two module instances mean two distinct local
71
+ * symbols, and the brand check would then silently return false: the response
72
+ * would quietly revert to the flattened envelope and #153 would be back with no
73
+ * error anywhere. The global symbol registry is keyed by string, so every copy
74
+ * of this module resolves to the same symbol.
75
+ */
76
+ const VERBATIM_ERROR_BODY = Symbol.for('EnterpriseAppBase.verbatimErrorBody');
77
+ /**
78
+ * Mark an exception so `HttpExceptionFilter` sends its payload to the client
79
+ * exactly as given, instead of rebuilding it as
80
+ * `{ statusCode, code, message, … }`.
81
+ *
82
+ * Returns the same exception instance, so the class identity is untouched:
83
+ * `withVerbatimErrorBody(new BadRequestException(…))` is still a
84
+ * `BadRequestException` and still carries status 400. That matters — guards,
85
+ * interceptors and existing tests that branch on the exception type keep
86
+ * working, and the opt-out stays a single orthogonal fact about the response
87
+ * body rather than a parallel exception hierarchy.
88
+ *
89
+ * The payload MUST be an object; a string payload has nothing to send verbatim
90
+ * and the filter falls back to the envelope for it.
91
+ *
92
+ * Only for a body an external standard dictates (RFC 8628's
93
+ * `{ error, error_description }` is the one use in the reference app); see
94
+ * the header of this file.
95
+ *
96
+ * @param exception - The exception to brand; returned as is.
97
+ * @returns The same exception instance.
98
+ * @stability stable
99
+ * @example
100
+ * ```ts
101
+ * throw withVerbatimErrorBody(
102
+ * new BadRequestException({ error: 'slow_down', error_description: 'Polling too fast' }),
103
+ * );
104
+ * ```
105
+ */
106
+ function withVerbatimErrorBody(exception) {
107
+ Object.defineProperty(exception, VERBATIM_ERROR_BODY, {
108
+ value: true,
109
+ // Non-enumerable so the brand cannot leak into anything that walks the
110
+ // exception's own properties — a log serializer, a test snapshot, an
111
+ // error-reporting SDK. It is an instruction to the filter, not data.
112
+ enumerable: false,
113
+ writable: false,
114
+ configurable: false,
115
+ });
116
+ return exception;
117
+ }
118
+ /**
119
+ * Whether an exception opted out of the envelope. Read only by
120
+ * `HttpExceptionFilter`.
121
+ *
122
+ * @param exception - Anything thrown.
123
+ * @returns `true` only for an `HttpException` branded by
124
+ * {@link withVerbatimErrorBody}.
125
+ * @stability stable
126
+ * @example
127
+ * ```ts
128
+ * hasVerbatimErrorBody(withVerbatimErrorBody(new BadRequestException({ error: 'x' }))); // true
129
+ * ```
130
+ */
131
+ function hasVerbatimErrorBody(exception) {
132
+ return (exception instanceof common_1.HttpException &&
133
+ exception[VERBATIM_ERROR_BODY] === true);
134
+ }
135
+ //# sourceMappingURL=verbatim-error-body.exception.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"verbatim-error-body.exception.js","sourceRoot":"","sources":["../../../src/core/errors/verbatim-error-body.exception.ts"],"names":[],"mappings":";;AAwGA,sDAcC;AAeD,oDAOC;AA5ID,2CAA+C;AAE/C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0DG;AAEH;;;;;;;;;;GAUG;AACH,MAAM,mBAAmB,GAAG,MAAM,CAAC,GAAG,CAAC,qCAAqC,CAAC,CAAC;AAE9E;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,SAAgB,qBAAqB,CACnC,SAAY;IAEZ,MAAM,CAAC,cAAc,CAAC,SAAS,EAAE,mBAAmB,EAAE;QACpD,KAAK,EAAE,IAAI;QACX,uEAAuE;QACvE,qEAAqE;QACrE,qEAAqE;QACrE,UAAU,EAAE,KAAK;QACjB,QAAQ,EAAE,KAAK;QACf,YAAY,EAAE,KAAK;KACpB,CAAC,CAAC;IAEH,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,SAAgB,oBAAoB,CAAC,SAAkB;IACrD,OAAO,CACL,SAAS,YAAY,sBAAa;QACjC,SAAgD,CAC/C,mBAAmB,CACpB,KAAK,IAAI,CACX,CAAC;AACJ,CAAC"}
@@ -0,0 +1,7 @@
1
+ export { definePlatformHost } from './platform-host';
2
+ export type { PlatformAccessPort, PlatformHost } from './platform-host';
3
+ export { AUDIT_SINK, PLATFORM_PRISMA, SYSTEM_SETTINGS_STORE } from './ports';
4
+ export type { AuditEventInput, AuditSink, PortBinding, PrismaClientLike, SystemSettingsSnapshot, SystemSettingsStore, } from './ports';
5
+ export { PlatformHostModule } from './platform-host.module';
6
+ export type { PlatformHostPorts } from './platform-host.module';
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/core/host/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AACrD,YAAY,EAAE,kBAAkB,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AACxE,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAC;AAC7E,YAAY,EACV,eAAe,EACf,SAAS,EACT,WAAW,EACX,gBAAgB,EAChB,sBAAsB,EACtB,mBAAmB,GACpB,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAC5D,YAAY,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC"}
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+ // The host ports (issue #696, PP-2.7): how a packaged slice reaches app-owned
3
+ // capabilities without importing app code. Recipe: ../README.md, "Host ports".
4
+ Object.defineProperty(exports, "__esModule", { value: true });
5
+ exports.PlatformHostModule = exports.SYSTEM_SETTINGS_STORE = exports.PLATFORM_PRISMA = exports.AUDIT_SINK = exports.definePlatformHost = void 0;
6
+ var platform_host_1 = require("./platform-host");
7
+ Object.defineProperty(exports, "definePlatformHost", { enumerable: true, get: function () { return platform_host_1.definePlatformHost; } });
8
+ var ports_1 = require("./ports");
9
+ Object.defineProperty(exports, "AUDIT_SINK", { enumerable: true, get: function () { return ports_1.AUDIT_SINK; } });
10
+ Object.defineProperty(exports, "PLATFORM_PRISMA", { enumerable: true, get: function () { return ports_1.PLATFORM_PRISMA; } });
11
+ Object.defineProperty(exports, "SYSTEM_SETTINGS_STORE", { enumerable: true, get: function () { return ports_1.SYSTEM_SETTINGS_STORE; } });
12
+ var platform_host_module_1 = require("./platform-host.module");
13
+ Object.defineProperty(exports, "PlatformHostModule", { enumerable: true, get: function () { return platform_host_module_1.PlatformHostModule; } });
14
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/core/host/index.ts"],"names":[],"mappings":";AAAA,8EAA8E;AAC9E,+EAA+E;;;AAE/E,iDAAqD;AAA5C,mHAAA,kBAAkB,OAAA;AAE3B,iCAA6E;AAApE,mGAAA,UAAU,OAAA;AAAE,wGAAA,eAAe,OAAA;AAAE,8GAAA,qBAAqB,OAAA;AAS3D,+DAA4D;AAAnD,0HAAA,kBAAkB,OAAA"}
@@ -0,0 +1,58 @@
1
+ /**
2
+ * How a packaged controller authenticates and authorizes its caller, supplied
3
+ * by the app. Each function returns ONE decorator (usually the app's own
4
+ * `applyDecorators(...)` composite) that a packaged controller applies to a
5
+ * handler or a class.
6
+ *
7
+ * @stability experimental
8
+ */
9
+ export interface PlatformAccessPort {
10
+ /**
11
+ * Decorators that authenticate the caller AND require every listed
12
+ * permission. Must never be a no-op.
13
+ *
14
+ * @param permissions - the permission strings, all required; never empty.
15
+ */
16
+ requirePermissions(permissions: readonly string[]): MethodDecorator & ClassDecorator;
17
+ /** Decorators that authenticate the caller with no specific permission. */
18
+ requireAuthenticated(): MethodDecorator & ClassDecorator;
19
+ }
20
+ /**
21
+ * Everything a packaged slice needs from the app at decorator time. Built once
22
+ * with {@link definePlatformHost} and passed to every slice's `forRoot({ host })`.
23
+ *
24
+ * @stability experimental
25
+ */
26
+ export interface PlatformHost {
27
+ /** The app's authentication and authorization decorators. */
28
+ readonly access: PlatformAccessPort;
29
+ }
30
+ /**
31
+ * Validates and freezes the app's platform host.
32
+ *
33
+ * Checks that `access.requirePermissions` and `access.requireAuthenticated`
34
+ * are functions and that each returns a decorator (both are called once, with
35
+ * a probe permission, to find out). The returned host wraps them so a later
36
+ * call that returns something else, or `requirePermissions([])`, throws too.
37
+ * Passing an already-defined host returns it unchanged.
38
+ *
39
+ * @param host - the app's access decorators.
40
+ * @returns the frozen, validated host.
41
+ * @throws Error when either access function is missing or returns a non-function.
42
+ *
43
+ * @example
44
+ * ```ts
45
+ * // apps/api/src/platform/platform-host.ts
46
+ * export const platformHost = definePlatformHost({
47
+ * access: {
48
+ * requirePermissions: (permissions) => Auth({ permissions: [...permissions] as PermissionName[] }),
49
+ * requireAuthenticated: () => Auth(),
50
+ * },
51
+ * });
52
+ * ```
53
+ *
54
+ * @extensionPoint option
55
+ * @stability experimental
56
+ */
57
+ export declare function definePlatformHost(host: PlatformHost): PlatformHost;
58
+ //# sourceMappingURL=platform-host.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"platform-host.d.ts","sourceRoot":"","sources":["../../../src/core/host/platform-host.ts"],"names":[],"mappings":"AAkBA;;;;;;;GAOG;AACH,MAAM,WAAW,kBAAkB;IACjC;;;;;OAKG;IACH,kBAAkB,CAAC,WAAW,EAAE,SAAS,MAAM,EAAE,GAAG,eAAe,GAAG,cAAc,CAAC;IACrF,2EAA2E;IAC3E,oBAAoB,IAAI,eAAe,GAAG,cAAc,CAAC;CAC1D;AAED;;;;;GAKG;AACH,MAAM,WAAW,YAAY;IAC3B,6DAA6D;IAC7D,QAAQ,CAAC,MAAM,EAAE,kBAAkB,CAAC;CACrC;AA+BD;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,YAAY,GAAG,YAAY,CA+BnE"}
@@ -0,0 +1,104 @@
1
+ "use strict";
2
+ // =============================================================================
3
+ // The decorator-time host port (issue #696, PP-2.7)
4
+ // =============================================================================
5
+ //
6
+ // A packaged controller must authenticate and authorize its caller exactly as
7
+ // the app's own controllers do, without importing the app's auth code. Nest
8
+ // applies decorators when a class is DEFINED, long before any container
9
+ // exists, so access cannot be an injection token: it is a static port, built
10
+ // once by the app (`apps/api/src/platform/platform-host.ts`) and handed to each
11
+ // slice's `forRoot({ host })`. The slice then creates its controller class
12
+ // inside `forRoot` with the host's decorators (the controller-factory recipe,
13
+ // README.md next to this folder).
14
+ //
15
+ // FAIL CLOSED. `definePlatformHost` refuses a host whose access functions are
16
+ // missing or do not return decorators, and a gate with no permission at all,
17
+ // so a packaged route can never be public by accident.
18
+ // =============================================================================
19
+ Object.defineProperty(exports, "__esModule", { value: true });
20
+ exports.definePlatformHost = definePlatformHost;
21
+ /** Hosts already validated and frozen, so passing one twice is free. */
22
+ const definedHosts = new WeakSet();
23
+ /** A permission string the define-time probe passes; never enforced anywhere. */
24
+ const PROBE_PERMISSION = 'platform:probe';
25
+ function fail(why) {
26
+ throw new Error(`definePlatformHost: ${why}. A platform host must supply working access decorators; ` +
27
+ 'without them a packaged route would have no access check, and a platform route is never public.');
28
+ }
29
+ function assertDecorator(value, name) {
30
+ if (typeof value !== 'function')
31
+ fail(`access.${name}() returned ${value === null ? 'null' : typeof value}, not a decorator`);
32
+ }
33
+ function assertPermissions(permissions) {
34
+ if (!Array.isArray(permissions) || permissions.length === 0) {
35
+ fail('access.requirePermissions() was called with no permission; use requireAuthenticated() for "any signed-in caller"');
36
+ }
37
+ for (const permission of permissions) {
38
+ if (typeof permission !== 'string' || permission.trim() === '') {
39
+ fail(`access.requirePermissions() was called with an invalid permission ${JSON.stringify(permission)}`);
40
+ }
41
+ }
42
+ return permissions;
43
+ }
44
+ /**
45
+ * Validates and freezes the app's platform host.
46
+ *
47
+ * Checks that `access.requirePermissions` and `access.requireAuthenticated`
48
+ * are functions and that each returns a decorator (both are called once, with
49
+ * a probe permission, to find out). The returned host wraps them so a later
50
+ * call that returns something else, or `requirePermissions([])`, throws too.
51
+ * Passing an already-defined host returns it unchanged.
52
+ *
53
+ * @param host - the app's access decorators.
54
+ * @returns the frozen, validated host.
55
+ * @throws Error when either access function is missing or returns a non-function.
56
+ *
57
+ * @example
58
+ * ```ts
59
+ * // apps/api/src/platform/platform-host.ts
60
+ * export const platformHost = definePlatformHost({
61
+ * access: {
62
+ * requirePermissions: (permissions) => Auth({ permissions: [...permissions] as PermissionName[] }),
63
+ * requireAuthenticated: () => Auth(),
64
+ * },
65
+ * });
66
+ * ```
67
+ *
68
+ * @extensionPoint option
69
+ * @stability experimental
70
+ */
71
+ function definePlatformHost(host) {
72
+ if (host !== null && typeof host === 'object' && definedHosts.has(host))
73
+ return host;
74
+ if (host === null || typeof host !== 'object')
75
+ fail('no host was given');
76
+ const access = host.access;
77
+ if (access === null || typeof access !== 'object')
78
+ fail('`access` is missing');
79
+ if (typeof access.requirePermissions !== 'function')
80
+ fail('`access.requirePermissions` is missing or not a function');
81
+ if (typeof access.requireAuthenticated !== 'function')
82
+ fail('`access.requireAuthenticated` is missing or not a function');
83
+ const requirePermissions = access.requirePermissions.bind(access);
84
+ const requireAuthenticated = access.requireAuthenticated.bind(access);
85
+ assertDecorator(requirePermissions([PROBE_PERMISSION]), 'requirePermissions');
86
+ assertDecorator(requireAuthenticated(), 'requireAuthenticated');
87
+ const defined = Object.freeze({
88
+ access: Object.freeze({
89
+ requirePermissions(permissions) {
90
+ const decorator = requirePermissions([...assertPermissions(permissions)]);
91
+ assertDecorator(decorator, 'requirePermissions');
92
+ return decorator;
93
+ },
94
+ requireAuthenticated() {
95
+ const decorator = requireAuthenticated();
96
+ assertDecorator(decorator, 'requireAuthenticated');
97
+ return decorator;
98
+ },
99
+ }),
100
+ });
101
+ definedHosts.add(defined);
102
+ return defined;
103
+ }
104
+ //# sourceMappingURL=platform-host.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"platform-host.js","sourceRoot":"","sources":["../../../src/core/host/platform-host.ts"],"names":[],"mappings":"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"}