@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,177 @@
1
+ "use strict";
2
+ // =============================================================================
3
+ // Suite: every `@Cron` enqueues rather than working (issues #353, #694)
4
+ // =============================================================================
5
+ //
6
+ // Epic #345 decision 1: every long-running activity is a queue job. A `@Cron`
7
+ // only decides WHETHER work is due and enqueues it. This suite reads the BODY of
8
+ // every `@Cron`-decorated method under the app's source roots and requires two
9
+ // things of it: that it queues something, and that it contains none of the
10
+ // markers of doing the work itself.
11
+ //
12
+ // It does not follow calls into helper methods: a cron calling
13
+ // `this.fireDueBackup(...)` is trusted, and that helper's own spec is what pins
14
+ // that it only enqueues. This is a tripwire on the shape of a cron body, not a
15
+ // proof about the whole call graph.
16
+ //
17
+ // Known limit, kept on purpose: the body opens at the first `{` after `@Cron(`,
18
+ // so a decorator OPTIONS object is read as the body and reported as queueing
19
+ // nothing. That fails loudly, never silently; no cron in the base uses options.
20
+ //
21
+ // The scan was moved here UNCHANGED from apps/api/test/jobs/cron-enqueue-only.spec.ts:
22
+ // same markers, same enqueue pattern, same brace matching. What the app keeps
23
+ // is DATA: its exemption list (each one argued) and its vacuity minimum.
24
+ // =============================================================================
25
+ Object.defineProperty(exports, "__esModule", { value: true });
26
+ exports.cronEnqueueOnlySuite = void 0;
27
+ const node_fs_1 = require("node:fs");
28
+ const node_path_1 = require("node:path");
29
+ /**
30
+ * Markers of a cron doing the work itself.
31
+ *
32
+ * Deliberately concrete rather than clever: these are the exact shapes the
33
+ * seven converted crons used to contain, so a revert reintroduces one of them
34
+ * almost by definition.
35
+ */
36
+ const WORK_MARKERS = [
37
+ { pattern: /\.deleteMany\(/, what: 'a bulk delete' },
38
+ { pattern: /\.updateMany(AndReturn)?\(/, what: 'a bulk update' },
39
+ { pattern: /\.\$executeRaw/, what: 'raw SQL' },
40
+ { pattern: /withAdminConnection\(/, what: 'a cluster admin connection' },
41
+ { pattern: /\bcleanupExpired\w*\(/, what: 'an inline cleanup call' },
42
+ { pattern: /\.prune\(\)/, what: 'an inline retention prune' },
43
+ { pattern: /\bdropExpired\w*\(/, what: 'an inline DROP DATABASE sweep' },
44
+ { pattern: /\bthis\.sweep\(/, what: 'an inline sweep' },
45
+ { pattern: /\bthis\.releaseStaleRuns\(/, what: 'an inline stale release' },
46
+ { pattern: /\bthis\.storage(Provider)?\./, what: 'a direct storage-provider call' },
47
+ ];
48
+ /** What a cron body must contain to count as queueing its work. */
49
+ const ENQUEUES = /enqueueHousekeepingJob\(|\.enqueue\(/;
50
+ /** Every `.ts` file under `dir`, excluding tests. */
51
+ function sourceFiles(dir) {
52
+ return (0, node_fs_1.readdirSync)(dir).flatMap((entry) => {
53
+ const full = (0, node_path_1.join)(dir, entry);
54
+ if ((0, node_fs_1.statSync)(full).isDirectory())
55
+ return sourceFiles(full);
56
+ if (!entry.endsWith('.ts') || entry.endsWith('.spec.ts'))
57
+ return [];
58
+ return [full];
59
+ });
60
+ }
61
+ /**
62
+ * The body of every `@Cron`-decorated method in `source`, brace-matched.
63
+ *
64
+ * Brace matching rather than a regex over the whole method: a cron body
65
+ * contains braces (template literals, object arguments, nested blocks), and a
66
+ * lazy match would stop at the first `}` and declare every task compliant.
67
+ */
68
+ function cronBodies(source) {
69
+ const bodies = [];
70
+ let index = source.indexOf('@Cron(');
71
+ while (index !== -1) {
72
+ const open = source.indexOf('{', index);
73
+ if (open === -1)
74
+ break;
75
+ let depth = 0;
76
+ let end = open;
77
+ for (; end < source.length; end += 1) {
78
+ if (source[end] === '{')
79
+ depth += 1;
80
+ else if (source[end] === '}') {
81
+ depth -= 1;
82
+ if (depth === 0)
83
+ break;
84
+ }
85
+ }
86
+ bodies.push(source.slice(open, end + 1));
87
+ index = source.indexOf('@Cron(', end);
88
+ }
89
+ return bodies;
90
+ }
91
+ /** Runs the scan; see {@link cronEnqueueOnlySuite}. */
92
+ function check(context, options) {
93
+ if (context.sourceRoots.length === 0) {
94
+ throw new Error('cron-enqueue-only: sourceRoots is empty, so there is nothing to scan.');
95
+ }
96
+ if (!Number.isInteger(options.minCronFiles) || options.minCronFiles < 1) {
97
+ throw new Error('cron-enqueue-only: minCronFiles must be a positive integer, or the scan could pass vacuously.');
98
+ }
99
+ const markers = [...WORK_MARKERS, ...(options.extraWorkMarkers ?? [])];
100
+ const exemptFiles = new Set(options.exempt.map((entry) => entry.file));
101
+ const files = context.sourceRoots
102
+ .flatMap((root) => {
103
+ let found;
104
+ try {
105
+ found = sourceFiles(root);
106
+ }
107
+ catch (cause) {
108
+ throw new Error(`cron-enqueue-only: cannot read source root ${root}: ${cause.message}`);
109
+ }
110
+ return found.map((file) => ({ path: file, rel: (0, node_path_1.relative)(root, file).split('\\').join('/') }));
111
+ })
112
+ .map((file) => ({ ...file, source: (0, node_fs_1.readFileSync)(file.path, 'utf8') }))
113
+ .filter((file) => file.source.includes('@Cron('));
114
+ const findings = [];
115
+ for (const file of files) {
116
+ if (exemptFiles.has(file.rel))
117
+ continue;
118
+ for (const body of cronBodies(file.source)) {
119
+ if (!ENQUEUES.test(body)) {
120
+ findings.push({ file: file.rel, message: 'a @Cron body that queues nothing' });
121
+ }
122
+ for (const marker of markers) {
123
+ if (marker.pattern.test(body)) {
124
+ findings.push({ file: file.rel, message: `a @Cron body containing ${marker.what}` });
125
+ }
126
+ }
127
+ }
128
+ }
129
+ return {
130
+ scanned: { cronFiles: files.length },
131
+ scannedFiles: { cronFiles: files.map((file) => file.rel) },
132
+ findings,
133
+ };
134
+ }
135
+ /** The tests the harness registers for this suite. */
136
+ function cases(options) {
137
+ return [
138
+ {
139
+ // The failure this guards: a refactor moves the tasks, the scan finds
140
+ // nothing, and every case below passes over an empty list.
141
+ name: 'finds the crons at all, so a broken scan cannot pass vacuously',
142
+ run: (report, expect) => {
143
+ expect(report.scanned.cronFiles).toBeGreaterThanOrEqual(options.minCronFiles);
144
+ },
145
+ },
146
+ ...options.exempt.map((entry) => ({
147
+ name: `exempts ${entry.file}, on the record`,
148
+ run: (report, expect) => {
149
+ // The exemption is only real if the file is: a stale entry would
150
+ // silently exempt nothing while looking like it exempted something.
151
+ expect(report.scannedFiles.cronFiles).toContain(entry.file);
152
+ expect(entry.why.length).toBeGreaterThanOrEqual(41);
153
+ },
154
+ })),
155
+ {
156
+ name: 'queues its work instead of doing it, in every non-exempt cron',
157
+ run: (report, expect) => {
158
+ expect(report.findings.map((finding) => `${finding.file}: ${finding.message}`)).toEqual([]);
159
+ },
160
+ },
161
+ ];
162
+ }
163
+ /**
164
+ * The suite behind `runPlatformConformance({ suites: { cronEnqueueOnly } })`:
165
+ * every `@Cron` body enqueues a job and contains no marker of inline work.
166
+ *
167
+ * @extensionPoint registry
168
+ * @stability experimental
169
+ */
170
+ exports.cronEnqueueOnlySuite = {
171
+ id: 'cron-enqueue-only',
172
+ title: 'every @Cron enqueues rather than working',
173
+ description: 'A @Cron body only decides whether work is due and enqueues a job; it never does the work inline.',
174
+ check,
175
+ cases,
176
+ };
177
+ //# sourceMappingURL=cron-enqueue-only.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cron-enqueue-only.js","sourceRoot":"","sources":["../../../src/testing/suites/cron-enqueue-only.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,86 @@
1
+ import type { UserOwnedModelDef } from '../../core/index';
2
+ import type { ConformanceFinding, ConformanceSuite } from '../conformance-suite';
3
+ import { type DatamodelModel } from '../prisma-schema';
4
+ /**
5
+ * How an app configures the user-owned data suite.
6
+ *
7
+ * @example
8
+ * ```ts
9
+ * const options: UserOwnedDataOptions = {
10
+ * schemaPath: join(__dirname, '..', '..', 'prisma', 'schema'),
11
+ * policies: userOwnedModelRegistry.list(),
12
+ * rawSqlAllowlist: [{ file: 'health/indicators/database.indicator.ts', why: 'Health probe: SELECT 1.' }],
13
+ * registerIn: 'src/app-registrations/user-owned-models.ts',
14
+ * };
15
+ * ```
16
+ *
17
+ * @extensionPoint option
18
+ * @stability experimental
19
+ */
20
+ export interface UserOwnedDataOptions {
21
+ /** Absolute path to the app's `schema.prisma`, or to a folder of `*.prisma` files (a composed schema). */
22
+ schemaPath: string;
23
+ /** The app's registry contents: import the module that fills it, then pass `userOwnedModelRegistry.list()`. */
24
+ policies: readonly UserOwnedModelDef[];
25
+ /**
26
+ * Files allowed to issue raw SQL, as paths relative to the source root that
27
+ * contains them (`/` separators), each with a non-empty reason. The suite
28
+ * fails for an allowlisted file that no longer uses raw SQL (or is gone).
29
+ */
30
+ rawSqlAllowlist: ReadonlyArray<{
31
+ /** The file, relative to its source root, with `/` separators. */
32
+ file: string;
33
+ /** Why it needs raw SQL, and why no request-derived id reaches it unscoped. */
34
+ why: string;
35
+ }>;
36
+ /** The model whose foreign keys mark ownership. Default `'User'`. */
37
+ userModel?: string;
38
+ /**
39
+ * Where the fix goes, completing "Register `Model.field` in ...", for
40
+ * example `'src/app-registrations/user-owned-models.ts'`. Default: "the
41
+ * user-owned data registry".
42
+ */
43
+ registerIn?: string;
44
+ }
45
+ /**
46
+ * Every disagreement between the registered definitions and the datamodel.
47
+ * An empty array means the registry is complete and consistent. Pure.
48
+ *
49
+ * @internal
50
+ */
51
+ export declare function checkUserOwnedModels(datamodel: readonly DatamodelModel[], defs: readonly UserOwnedModelDef[], options?: {
52
+ userModel?: string;
53
+ registerIn?: string;
54
+ }): string[];
55
+ /**
56
+ * Replaces the contents of comments and of `'...'`/`"..."` strings with
57
+ * spaces, keeping line breaks. Template literals are kept: a raw call is a tag
58
+ * written before one, never inside it.
59
+ *
60
+ * @internal
61
+ */
62
+ export declare function blankCommentsAndStrings(source: string): string;
63
+ /**
64
+ * The raw SQL methods a source file uses, outside comments and strings.
65
+ *
66
+ * @internal
67
+ */
68
+ export declare function rawSqlUses(source: string): string[];
69
+ /**
70
+ * One finding per unlisted file, per stale allowlist entry and per entry
71
+ * without a reason. Pure.
72
+ *
73
+ * @param found - every file using raw SQL, relative path → methods.
74
+ * @internal
75
+ */
76
+ export declare function checkRawSqlAllowlist(found: ReadonlyMap<string, readonly string[]>, allowlist: UserOwnedDataOptions['rawSqlAllowlist']): ConformanceFinding[];
77
+ /**
78
+ * The suite behind `runPlatformConformance({ suites: { userOwnedData } })`:
79
+ * every foreign key to `User` is registered with policies that match the
80
+ * schema, and raw SQL appears only in allowlisted files.
81
+ *
82
+ * @extensionPoint registry
83
+ * @stability experimental
84
+ */
85
+ export declare const userOwnedDataSuite: ConformanceSuite<UserOwnedDataOptions>;
86
+ //# sourceMappingURL=user-owned-data.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"user-owned-data.d.ts","sourceRoot":"","sources":["../../../src/testing/suites/user-owned-data.ts"],"names":[],"mappings":"AA8BA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAC1D,OAAO,KAAK,EAGV,kBAAkB,EAElB,gBAAgB,EACjB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAA+D,KAAK,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAEpH;;;;;;;;;;;;;;;GAeG;AACH,MAAM,WAAW,oBAAoB;IACnC,0GAA0G;IAC1G,UAAU,EAAE,MAAM,CAAC;IACnB,+GAA+G;IAC/G,QAAQ,EAAE,SAAS,iBAAiB,EAAE,CAAC;IACvC;;;;OAIG;IACH,eAAe,EAAE,aAAa,CAAC;QAC7B,kEAAkE;QAClE,IAAI,EAAE,MAAM,CAAC;QACb,+EAA+E;QAC/E,GAAG,EAAE,MAAM,CAAC;KACb,CAAC,CAAC;IACH,qEAAqE;IACrE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;;OAIG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAuBD;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAClC,SAAS,EAAE,SAAS,cAAc,EAAE,EACpC,IAAI,EAAE,SAAS,iBAAiB,EAAE,EAClC,OAAO,GAAE;IAAE,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAA;CAAO,GACxD,MAAM,EAAE,CAuFV;AAQD;;;;;;GAMG;AACH,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAmC9D;AAED;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAEnD;AAWD;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,WAAW,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC,EAC7C,SAAS,EAAE,oBAAoB,CAAC,iBAAiB,CAAC,GACjD,kBAAkB,EAAE,CAkBtB;AA0FD;;;;;;;GAOG;AACH,eAAO,MAAM,kBAAkB,EAAE,gBAAgB,CAAC,oBAAoB,CAOrE,CAAC"}
@@ -0,0 +1,329 @@
1
+ "use strict";
2
+ // =============================================================================
3
+ // Suite: user-owned data is registered, and raw SQL is allowlisted
4
+ // (issue #688, moved to the harness by #699)
5
+ // =============================================================================
6
+ //
7
+ // Two tripwires around scoped data access (`@marinoscar/platform-api/core`,
8
+ // "Scoped data access"), moved here UNCHANGED from the reference app's
9
+ // apps/api/test/prisma/{user-owned-models,raw-sql-allowlist}.spec.ts:
10
+ //
11
+ // 1. Registry vs schema. Fails when a model gains a relation to `User`
12
+ // without a user-owned registry entry; when an entry names a model, field
13
+ // or exportOmit column that does not exist, or a field that is not a
14
+ // foreign key to `User`; when a purge policy contradicts the relation's
15
+ // `onDelete` ('delete' ⇔ Cascade, 'detach' ⇔ SetNull, 'retain' ⇔
16
+ // Restrict/NoAction); when an owner relation is not where `ownerRelation`
17
+ // points; or when an actor field on an owned model cascades.
18
+ // 2. Raw SQL. Raw SQL bypasses the scoped client, so every non-spec source
19
+ // file using `$queryRaw`, `$queryRawUnsafe`, `$executeRaw` or
20
+ // `$executeRawUnsafe` (outside comments and string literals) must be on
21
+ // the app's allowlist with a reason, and every allowlisted file must
22
+ // still use raw SQL.
23
+ //
24
+ // The app keeps the DATA: its registrations (passed as `policies`), its schema
25
+ // path and its allowlist.
26
+ // =============================================================================
27
+ Object.defineProperty(exports, "__esModule", { value: true });
28
+ exports.userOwnedDataSuite = void 0;
29
+ exports.checkUserOwnedModels = checkUserOwnedModels;
30
+ exports.blankCommentsAndStrings = blankCommentsAndStrings;
31
+ exports.rawSqlUses = rawSqlUses;
32
+ exports.checkRawSqlAllowlist = checkRawSqlAllowlist;
33
+ const node_fs_1 = require("node:fs");
34
+ const node_path_1 = require("node:path");
35
+ const index_1 = require("../../core/index");
36
+ const prisma_schema_1 = require("../prisma-schema");
37
+ /** The `onDelete` values each purge policy accepts. */
38
+ const PURGE_ON_DELETE = {
39
+ delete: ['Cascade'],
40
+ detach: ['SetNull'],
41
+ retain: ['Restrict', 'NoAction'],
42
+ };
43
+ // -----------------------------------------------------------------------------
44
+ // Check 1: registry vs schema
45
+ // -----------------------------------------------------------------------------
46
+ /** Every relation to `userModel` that holds the foreign key on this side, keyed by FK field name. */
47
+ function userForeignKeys(model, userModel) {
48
+ const keys = new Map();
49
+ for (const field of model.fields) {
50
+ if (field.type !== userModel || !field.relation)
51
+ continue;
52
+ for (const fk of field.relation.fields)
53
+ keys.set(fk, field);
54
+ }
55
+ return keys;
56
+ }
57
+ /**
58
+ * Every disagreement between the registered definitions and the datamodel.
59
+ * An empty array means the registry is complete and consistent. Pure.
60
+ *
61
+ * @internal
62
+ */
63
+ function checkUserOwnedModels(datamodel, defs, options = {}) {
64
+ const userModel = options.userModel ?? 'User';
65
+ const registerIn = options.registerIn ?? 'the user-owned data registry';
66
+ const registerHint = (model, field) => `Register ${model}.${field} in ${registerIn}, with a purge and export policy.`;
67
+ const problems = [];
68
+ const models = new Map(datamodel.map((model) => [model.name, model]));
69
+ const registered = new Map(defs.map((def) => [def.model, def]));
70
+ // 1. Every User foreign key is registered.
71
+ for (const model of datamodel) {
72
+ for (const fk of userForeignKeys(model, userModel).keys()) {
73
+ const def = registered.get(model.name);
74
+ const fields = def ? [def.ownerField, ...(def.actorFields ?? [])] : [];
75
+ if (!fields.includes(fk)) {
76
+ problems.push(`${model.name}.${fk} is a foreign key to ${userModel} with no registry entry. ${registerHint(model.name, fk)}`);
77
+ }
78
+ }
79
+ }
80
+ // 2. Every registered model and field exists, and its policy matches onDelete.
81
+ for (const def of defs) {
82
+ const model = models.get(def.model);
83
+ if (!model) {
84
+ problems.push(`${def.model} is registered but schema.prisma has no such model. Remove or rename the entry.`);
85
+ continue;
86
+ }
87
+ const scalars = new Set(model.fields.filter((field) => !field.relation).map((field) => field.name));
88
+ const foreignKeys = userForeignKeys(model, userModel);
89
+ const checkField = (field, role) => {
90
+ if (!scalars.has(field)) {
91
+ problems.push(`${def.model}.${field} is registered as the ${role} field but schema.prisma has no such column.`);
92
+ return undefined;
93
+ }
94
+ const relation = foreignKeys.get(field);
95
+ if (!relation) {
96
+ problems.push(`${def.model}.${field} is registered as the ${role} field but is not a foreign key to ${userModel}.`);
97
+ }
98
+ return relation;
99
+ };
100
+ const checkPurge = (field, relation) => {
101
+ const onDelete = (0, prisma_schema_1.effectiveOnDelete)(relation);
102
+ const accepted = PURGE_ON_DELETE[def.purge];
103
+ if (!accepted.includes(onDelete)) {
104
+ problems.push(`${def.model}.${field}: purge '${def.purge}' requires onDelete ${accepted.join(' or ')}, but schema.prisma has ${onDelete} (relation ${relation.name}).`);
105
+ }
106
+ };
107
+ if (def.ownerField !== undefined) {
108
+ const relation = checkField(def.ownerField, 'owner');
109
+ if (relation) {
110
+ checkPurge(def.ownerField, relation);
111
+ const expected = (0, index_1.ownerRelationOf)(def);
112
+ if (relation.name !== expected) {
113
+ problems.push(`${def.model}.${def.ownerField}: the owner relation field is "${relation.name}", not "${expected}". Set ownerRelation: '${relation.name}'.`);
114
+ }
115
+ }
116
+ }
117
+ for (const field of def.actorFields ?? []) {
118
+ const relation = checkField(field, 'actor');
119
+ if (!relation)
120
+ continue;
121
+ if (def.ownerField === undefined) {
122
+ checkPurge(field, relation);
123
+ }
124
+ else if ((0, prisma_schema_1.effectiveOnDelete)(relation) === 'Cascade') {
125
+ problems.push(`${def.model}.${field}: an actor field on an owned model cannot be onDelete Cascade: deleting the actor would delete a row another user owns.`);
126
+ }
127
+ }
128
+ for (const column of def.exportOmit ?? []) {
129
+ if (!scalars.has(column)) {
130
+ problems.push(`${def.model}.exportOmit names "${column}", which schema.prisma does not have.`);
131
+ }
132
+ }
133
+ }
134
+ return problems;
135
+ }
136
+ // -----------------------------------------------------------------------------
137
+ // Check 2: raw SQL only in allowlisted files
138
+ // -----------------------------------------------------------------------------
139
+ const RAW_SQL = /\$(?:queryRaw|executeRaw)(?:Unsafe)?\b/g;
140
+ /**
141
+ * Replaces the contents of comments and of `'...'`/`"..."` strings with
142
+ * spaces, keeping line breaks. Template literals are kept: a raw call is a tag
143
+ * written before one, never inside it.
144
+ *
145
+ * @internal
146
+ */
147
+ function blankCommentsAndStrings(source) {
148
+ let out = '';
149
+ let i = 0;
150
+ while (i < source.length) {
151
+ const ch = source[i];
152
+ const next = source[i + 1];
153
+ if (ch === '/' && next === '/') {
154
+ const end = source.indexOf('\n', i);
155
+ const stop = end === -1 ? source.length : end;
156
+ out += ' '.repeat(stop - i);
157
+ i = stop;
158
+ }
159
+ else if (ch === '/' && next === '*') {
160
+ const end = source.indexOf('*/', i + 2);
161
+ const stop = end === -1 ? source.length : end + 2;
162
+ out += source.slice(i, stop).replace(/[^\n]/g, ' ');
163
+ i = stop;
164
+ }
165
+ else if (ch === '`') {
166
+ // Copied through, so a quote inside a template never starts a string.
167
+ let j = i + 1;
168
+ while (j < source.length && source[j] !== '`')
169
+ j += source[j] === '\\' ? 2 : 1;
170
+ out += source.slice(i, j + 1);
171
+ i = j + 1;
172
+ }
173
+ else if (ch === "'" || ch === '"') {
174
+ let j = i + 1;
175
+ while (j < source.length && source[j] !== ch && source[j] !== '\n') {
176
+ j += source[j] === '\\' ? 2 : 1;
177
+ }
178
+ out += ' '.repeat(Math.min(j + 1, source.length) - i);
179
+ i = j + 1;
180
+ }
181
+ else {
182
+ out += ch;
183
+ i += 1;
184
+ }
185
+ }
186
+ return out;
187
+ }
188
+ /**
189
+ * The raw SQL methods a source file uses, outside comments and strings.
190
+ *
191
+ * @internal
192
+ */
193
+ function rawSqlUses(source) {
194
+ return [...new Set(blankCommentsAndStrings(source).match(RAW_SQL) ?? [])].sort();
195
+ }
196
+ /** Every `.ts` file under `dir`, excluding tests. */
197
+ function sourceFiles(dir) {
198
+ return (0, node_fs_1.readdirSync)(dir).flatMap((entry) => {
199
+ const full = (0, node_path_1.join)(dir, entry);
200
+ if ((0, node_fs_1.statSync)(full).isDirectory())
201
+ return sourceFiles(full);
202
+ return entry.endsWith('.ts') && !entry.endsWith('.spec.ts') ? [full] : [];
203
+ });
204
+ }
205
+ /**
206
+ * One finding per unlisted file, per stale allowlist entry and per entry
207
+ * without a reason. Pure.
208
+ *
209
+ * @param found - every file using raw SQL, relative path → methods.
210
+ * @internal
211
+ */
212
+ function checkRawSqlAllowlist(found, allowlist) {
213
+ const findings = [];
214
+ const listed = new Set(allowlist.map((entry) => entry.file));
215
+ for (const [file, uses] of found) {
216
+ if (!listed.has(file)) {
217
+ findings.push({
218
+ file,
219
+ message: `uses ${uses.join(', ')}: add it to the raw-SQL allowlist with a reason, and make sure it never runs with request-derived ids unscoped.`,
220
+ });
221
+ }
222
+ }
223
+ for (const entry of allowlist) {
224
+ if (!found.has(entry.file)) {
225
+ findings.push({ file: entry.file, message: 'is in the raw-SQL allowlist but no longer uses raw SQL (or no longer exists): remove the entry.' });
226
+ }
227
+ if (entry.why.trim() === '')
228
+ findings.push({ file: entry.file, message: 'the raw-SQL allowlist entry needs a reason.' });
229
+ }
230
+ return findings;
231
+ }
232
+ // -----------------------------------------------------------------------------
233
+ // The suite
234
+ // -----------------------------------------------------------------------------
235
+ /** The `file` of every registry finding: the schema's own name (never a `.ts` path). */
236
+ function schemaLabel(options) {
237
+ return (0, node_path_1.basename)(options.schemaPath);
238
+ }
239
+ /** Runs both scans; see {@link userOwnedDataSuite}. */
240
+ function check(context, options) {
241
+ if (context.sourceRoots.length === 0) {
242
+ throw new Error('user-owned-data: sourceRoots is empty, so there is nothing to scan.');
243
+ }
244
+ let datamodel;
245
+ try {
246
+ datamodel = (0, prisma_schema_1.readSchemaDatamodel)(options.schemaPath);
247
+ }
248
+ catch (cause) {
249
+ throw new Error(`user-owned-data: cannot read the schema at ${options.schemaPath}: ${cause.message}`);
250
+ }
251
+ const userModel = options.userModel ?? 'User';
252
+ const label = schemaLabel(options);
253
+ const registryFindings = checkUserOwnedModels(datamodel, options.policies, {
254
+ userModel,
255
+ ...(options.registerIn !== undefined ? { registerIn: options.registerIn } : {}),
256
+ }).map((message) => ({ file: label, message }));
257
+ const found = new Map();
258
+ let scannedSources = 0;
259
+ for (const root of context.sourceRoots) {
260
+ let files;
261
+ try {
262
+ files = sourceFiles(root);
263
+ }
264
+ catch (cause) {
265
+ throw new Error(`user-owned-data: cannot read source root ${root}: ${cause.message}`);
266
+ }
267
+ for (const file of files) {
268
+ scannedSources += 1;
269
+ const uses = rawSqlUses((0, node_fs_1.readFileSync)(file, 'utf8'));
270
+ if (uses.length > 0)
271
+ found.set((0, node_path_1.relative)(root, file).split('\\').join('/'), uses);
272
+ }
273
+ }
274
+ const ownedModels = datamodel.filter((model) => userForeignKeys(model, userModel).size > 0);
275
+ return {
276
+ scanned: {
277
+ models: datamodel.length,
278
+ userForeignKeyModels: ownedModels.length,
279
+ sourceFiles: scannedSources,
280
+ rawSqlFiles: found.size,
281
+ },
282
+ scannedFiles: { rawSqlFiles: [...found.keys()] },
283
+ findings: [...registryFindings, ...checkRawSqlAllowlist(found, options.rawSqlAllowlist)],
284
+ };
285
+ }
286
+ /** The tests the harness registers for this suite. */
287
+ function cases(options) {
288
+ const label = schemaLabel(options);
289
+ const describe = (finding) => `${finding.file}: ${finding.message}`;
290
+ return [
291
+ {
292
+ // The failure this guards: the schema moves, the parse finds nothing,
293
+ // and every case below passes over an empty datamodel.
294
+ name: 'reads the schema and the sources at all, so a broken scan cannot pass vacuously',
295
+ run: (report, expect) => {
296
+ expect(report.scanned.userForeignKeyModels).toBeGreaterThanOrEqual(1);
297
+ expect(report.scanned.sourceFiles).toBeGreaterThanOrEqual(1);
298
+ },
299
+ },
300
+ {
301
+ name: 'registers every User foreign key, with purge policies that match onDelete',
302
+ run: (report, expect) => {
303
+ expect(report.findings.filter((finding) => finding.file === label).map(describe)).toEqual([]);
304
+ },
305
+ },
306
+ {
307
+ name: 'issues raw SQL only from allowlisted files, each with a reason',
308
+ run: (report, expect) => {
309
+ expect(report.findings.filter((finding) => finding.file !== label).map(describe)).toEqual([]);
310
+ },
311
+ },
312
+ ];
313
+ }
314
+ /**
315
+ * The suite behind `runPlatformConformance({ suites: { userOwnedData } })`:
316
+ * every foreign key to `User` is registered with policies that match the
317
+ * schema, and raw SQL appears only in allowlisted files.
318
+ *
319
+ * @extensionPoint registry
320
+ * @stability experimental
321
+ */
322
+ exports.userOwnedDataSuite = {
323
+ id: 'user-owned-data',
324
+ title: 'user-owned data is registered and raw SQL is allowlisted',
325
+ description: 'Every foreign key to User has a user-owned registry entry whose purge policy matches onDelete, and only allowlisted files issue raw SQL.',
326
+ check,
327
+ cases,
328
+ };
329
+ //# sourceMappingURL=user-owned-data.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"user-owned-data.js","sourceRoot":"","sources":["../../../src/testing/suites/user-owned-data.ts"],"names":[],"mappings":"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"}