@wizeworks/lens-cloud 0.3.0-alpha.2 → 0.3.0-alpha.4

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 (597) hide show
  1. package/README.md +4 -0
  2. package/dist/alerts/evaluate.d.ts +6 -5
  3. package/dist/alerts/evaluate.d.ts.map +1 -1
  4. package/dist/alerts/evaluate.js +60 -28
  5. package/dist/alerts/evaluate.js.map +1 -1
  6. package/dist/alerts/problem-link.d.ts +12 -0
  7. package/dist/alerts/problem-link.d.ts.map +1 -0
  8. package/dist/alerts/problem-link.js +31 -0
  9. package/dist/alerts/problem-link.js.map +1 -0
  10. package/dist/app.d.ts +15 -0
  11. package/dist/app.d.ts.map +1 -1
  12. package/dist/auth/auth.d.ts +8 -2
  13. package/dist/auth/auth.d.ts.map +1 -1
  14. package/dist/auth/auth.js +25 -2
  15. package/dist/auth/auth.js.map +1 -1
  16. package/dist/auth/billing-hooks.d.ts +9 -0
  17. package/dist/auth/billing-hooks.d.ts.map +1 -0
  18. package/dist/auth/billing-hooks.js +49 -0
  19. package/dist/auth/billing-hooks.js.map +1 -0
  20. package/dist/auth/bridge.js +2 -2
  21. package/dist/auth/bridge.js.map +1 -1
  22. package/dist/auth/crypto.d.ts +2 -0
  23. package/dist/auth/crypto.d.ts.map +1 -1
  24. package/dist/auth/crypto.js +2 -2
  25. package/dist/auth/crypto.js.map +1 -1
  26. package/dist/auth/deps.d.ts +7 -0
  27. package/dist/auth/deps.d.ts.map +1 -1
  28. package/dist/auth/deps.js.map +1 -1
  29. package/dist/auth/hooks.d.ts.map +1 -1
  30. package/dist/auth/hooks.js +8 -1
  31. package/dist/auth/hooks.js.map +1 -1
  32. package/dist/auth/join-scope.d.ts +7 -0
  33. package/dist/auth/join-scope.d.ts.map +1 -0
  34. package/dist/auth/join-scope.js +21 -0
  35. package/dist/auth/join-scope.js.map +1 -0
  36. package/dist/auth/oauth-access.d.ts +8 -0
  37. package/dist/auth/oauth-access.d.ts.map +1 -0
  38. package/dist/auth/oauth-access.js +31 -0
  39. package/dist/auth/oauth-access.js.map +1 -0
  40. package/dist/auth/oauth-grant.d.ts +5 -0
  41. package/dist/auth/oauth-grant.d.ts.map +1 -0
  42. package/dist/auth/oauth-grant.js +79 -0
  43. package/dist/auth/oauth-grant.js.map +1 -0
  44. package/dist/auth/oauth-names.d.ts +104 -0
  45. package/dist/auth/oauth-names.d.ts.map +1 -0
  46. package/dist/auth/oauth-names.js +72 -0
  47. package/dist/auth/oauth-names.js.map +1 -0
  48. package/dist/auth/oauth.d.ts +17 -0
  49. package/dist/auth/oauth.d.ts.map +1 -0
  50. package/dist/auth/oauth.js +47 -0
  51. package/dist/auth/oauth.js.map +1 -0
  52. package/dist/auth/options.d.ts.map +1 -1
  53. package/dist/auth/options.js +2 -0
  54. package/dist/auth/options.js.map +1 -1
  55. package/dist/auth/plugins.d.ts.map +1 -1
  56. package/dist/auth/plugins.js +15 -1
  57. package/dist/auth/plugins.js.map +1 -1
  58. package/dist/auth/principal.d.ts +10 -1
  59. package/dist/auth/principal.d.ts.map +1 -1
  60. package/dist/auth/principal.js +8 -7
  61. package/dist/auth/principal.js.map +1 -1
  62. package/dist/auth/roles.d.ts +5 -2
  63. package/dist/auth/roles.d.ts.map +1 -1
  64. package/dist/auth/roles.js +1 -0
  65. package/dist/auth/roles.js.map +1 -1
  66. package/dist/auth/schema-names.d.ts +33 -0
  67. package/dist/auth/schema-names.d.ts.map +1 -1
  68. package/dist/auth/schema-names.js +23 -0
  69. package/dist/auth/schema-names.js.map +1 -1
  70. package/dist/auth/scim.d.ts +6 -0
  71. package/dist/auth/scim.d.ts.map +1 -0
  72. package/dist/auth/scim.js +56 -0
  73. package/dist/auth/scim.js.map +1 -0
  74. package/dist/auth/signup.d.ts.map +1 -1
  75. package/dist/auth/signup.js +5 -2
  76. package/dist/auth/signup.js.map +1 -1
  77. package/dist/auth/wire.d.ts +2 -1
  78. package/dist/auth/wire.d.ts.map +1 -1
  79. package/dist/auth/wire.js +4 -1
  80. package/dist/auth/wire.js.map +1 -1
  81. package/dist/billing/cli.d.ts +6 -0
  82. package/dist/billing/cli.d.ts.map +1 -0
  83. package/dist/billing/cli.js +54 -0
  84. package/dist/billing/cli.js.map +1 -0
  85. package/dist/billing/gate.d.ts +13 -0
  86. package/dist/billing/gate.d.ts.map +1 -0
  87. package/dist/billing/gate.js +27 -0
  88. package/dist/billing/gate.js.map +1 -0
  89. package/dist/billing/limits.d.ts +29 -0
  90. package/dist/billing/limits.d.ts.map +1 -0
  91. package/dist/billing/limits.js +69 -0
  92. package/dist/billing/limits.js.map +1 -0
  93. package/dist/billing/notices.d.ts +4 -0
  94. package/dist/billing/notices.d.ts.map +1 -0
  95. package/dist/billing/notices.js +40 -0
  96. package/dist/billing/notices.js.map +1 -0
  97. package/dist/billing/options.d.ts +37 -0
  98. package/dist/billing/options.d.ts.map +1 -0
  99. package/dist/billing/options.js +33 -0
  100. package/dist/billing/options.js.map +1 -0
  101. package/dist/billing/plans.d.ts +50 -0
  102. package/dist/billing/plans.d.ts.map +1 -0
  103. package/dist/billing/plans.js +47 -0
  104. package/dist/billing/plans.js.map +1 -0
  105. package/dist/billing/report.d.ts +26 -0
  106. package/dist/billing/report.d.ts.map +1 -0
  107. package/dist/billing/report.js +53 -0
  108. package/dist/billing/report.js.map +1 -0
  109. package/dist/billing/service.d.ts +20 -0
  110. package/dist/billing/service.d.ts.map +1 -0
  111. package/dist/billing/service.js +29 -0
  112. package/dist/billing/service.js.map +1 -0
  113. package/dist/billing/stripe-plugin.d.ts +14 -0
  114. package/dist/billing/stripe-plugin.d.ts.map +1 -0
  115. package/dist/billing/stripe-plugin.js +39 -0
  116. package/dist/billing/stripe-plugin.js.map +1 -0
  117. package/dist/billing/stripe-setup.d.ts +15 -0
  118. package/dist/billing/stripe-setup.d.ts.map +1 -0
  119. package/dist/billing/stripe-setup.js +73 -0
  120. package/dist/billing/stripe-setup.js.map +1 -0
  121. package/dist/billing/summary.d.ts +59 -0
  122. package/dist/billing/summary.d.ts.map +1 -0
  123. package/dist/billing/summary.js +50 -0
  124. package/dist/billing/summary.js.map +1 -0
  125. package/dist/billing/sync.d.ts +5 -0
  126. package/dist/billing/sync.d.ts.map +1 -0
  127. package/dist/billing/sync.js +35 -0
  128. package/dist/billing/sync.js.map +1 -0
  129. package/dist/billing/usage-sub.d.ts +17 -0
  130. package/dist/billing/usage-sub.d.ts.map +1 -0
  131. package/dist/billing/usage-sub.js +47 -0
  132. package/dist/billing/usage-sub.js.map +1 -0
  133. package/dist/billing/usage.d.ts +28 -0
  134. package/dist/billing/usage.d.ts.map +1 -0
  135. package/dist/billing/usage.js +80 -0
  136. package/dist/billing/usage.js.map +1 -0
  137. package/dist/billing/webhook.d.ts +6 -0
  138. package/dist/billing/webhook.d.ts.map +1 -0
  139. package/dist/billing/webhook.js +41 -0
  140. package/dist/billing/webhook.js.map +1 -0
  141. package/dist/changes.d.ts +15 -0
  142. package/dist/changes.d.ts.map +1 -0
  143. package/dist/changes.js +45 -0
  144. package/dist/changes.js.map +1 -0
  145. package/dist/cli-args.d.ts +1 -1
  146. package/dist/cli-args.d.ts.map +1 -1
  147. package/dist/cli-args.js +44 -2
  148. package/dist/cli-args.js.map +1 -1
  149. package/dist/cli.js +10 -0
  150. package/dist/cli.js.map +1 -1
  151. package/dist/config.d.ts +19 -3
  152. package/dist/config.d.ts.map +1 -1
  153. package/dist/config.js +21 -1
  154. package/dist/config.js.map +1 -1
  155. package/dist/copy-cli.d.ts +3 -0
  156. package/dist/copy-cli.d.ts.map +1 -0
  157. package/dist/copy-cli.js +24 -0
  158. package/dist/copy-cli.js.map +1 -0
  159. package/dist/db/db.d.ts +2 -0
  160. package/dist/db/db.d.ts.map +1 -1
  161. package/dist/db/db.js +15 -4
  162. package/dist/db/db.js.map +1 -1
  163. package/dist/db/schema-alerts.d.ts +2 -0
  164. package/dist/db/schema-alerts.d.ts.map +1 -0
  165. package/dist/db/schema-alerts.js +15 -0
  166. package/dist/db/schema-alerts.js.map +1 -0
  167. package/dist/db/schema-billing.d.ts +2 -0
  168. package/dist/db/schema-billing.d.ts.map +1 -0
  169. package/dist/db/schema-billing.js +38 -0
  170. package/dist/db/schema-billing.js.map +1 -0
  171. package/dist/db/schema-issues.d.ts +2 -0
  172. package/dist/db/schema-issues.d.ts.map +1 -0
  173. package/dist/db/schema-issues.js +9 -0
  174. package/dist/db/schema-issues.js.map +1 -0
  175. package/dist/db/schema-logs.d.ts +2 -0
  176. package/dist/db/schema-logs.d.ts.map +1 -0
  177. package/dist/db/schema-logs.js +13 -0
  178. package/dist/db/schema-logs.js.map +1 -0
  179. package/dist/db/schema-oauth.d.ts +2 -0
  180. package/dist/db/schema-oauth.d.ts.map +1 -0
  181. package/dist/db/schema-oauth.js +69 -0
  182. package/dist/db/schema-oauth.js.map +1 -0
  183. package/dist/db/schema-saved-move.d.ts +2 -0
  184. package/dist/db/schema-saved-move.d.ts.map +1 -0
  185. package/dist/db/schema-saved-move.js +13 -0
  186. package/dist/db/schema-saved-move.js.map +1 -0
  187. package/dist/db/schema-saved.d.ts +2 -0
  188. package/dist/db/schema-saved.d.ts.map +1 -0
  189. package/dist/db/schema-saved.js +13 -0
  190. package/dist/db/schema-saved.js.map +1 -0
  191. package/dist/db/schema-scim.d.ts +2 -0
  192. package/dist/db/schema-scim.d.ts.map +1 -0
  193. package/dist/db/schema-scim.js +28 -0
  194. package/dist/db/schema-scim.js.map +1 -0
  195. package/dist/db/schema-search.d.ts +2 -0
  196. package/dist/db/schema-search.d.ts.map +1 -0
  197. package/dist/db/schema-search.js +16 -0
  198. package/dist/db/schema-search.js.map +1 -0
  199. package/dist/db/schema-slos.d.ts +2 -0
  200. package/dist/db/schema-slos.d.ts.map +1 -0
  201. package/dist/db/schema-slos.js +12 -0
  202. package/dist/db/schema-slos.js.map +1 -0
  203. package/dist/db/schema-sourcemaps.d.ts +2 -0
  204. package/dist/db/schema-sourcemaps.d.ts.map +1 -0
  205. package/dist/db/schema-sourcemaps.js +9 -0
  206. package/dist/db/schema-sourcemaps.js.map +1 -0
  207. package/dist/db/schema-tags.d.ts +2 -0
  208. package/dist/db/schema-tags.d.ts.map +1 -0
  209. package/dist/db/schema-tags.js +12 -0
  210. package/dist/db/schema-tags.js.map +1 -0
  211. package/dist/db/schema-team.d.ts +2 -0
  212. package/dist/db/schema-team.d.ts.map +1 -0
  213. package/dist/db/schema-team.js +15 -0
  214. package/dist/db/schema-team.js.map +1 -0
  215. package/dist/db/schema-uptime.d.ts +2 -0
  216. package/dist/db/schema-uptime.d.ts.map +1 -0
  217. package/dist/db/schema-uptime.js +22 -0
  218. package/dist/db/schema-uptime.js.map +1 -0
  219. package/dist/db/schema.d.ts.map +1 -1
  220. package/dist/db/schema.js +32 -0
  221. package/dist/db/schema.js.map +1 -1
  222. package/dist/db/trigram.d.ts +4 -0
  223. package/dist/db/trigram.d.ts.map +1 -0
  224. package/dist/db/trigram.js +34 -0
  225. package/dist/db/trigram.js.map +1 -0
  226. package/dist/http/http.d.ts +5 -1
  227. package/dist/http/http.d.ts.map +1 -1
  228. package/dist/http/http.js +5 -1
  229. package/dist/http/http.js.map +1 -1
  230. package/dist/jobs.d.ts +1 -1
  231. package/dist/jobs.d.ts.map +1 -1
  232. package/dist/jobs.js +23 -9
  233. package/dist/jobs.js.map +1 -1
  234. package/dist/mail/blocks.d.ts +1 -1
  235. package/dist/mail/blocks.js +2 -2
  236. package/dist/mail/blocks.js.map +1 -1
  237. package/dist/mail/emails-billing.d.ts +17 -0
  238. package/dist/mail/emails-billing.d.ts.map +1 -0
  239. package/dist/mail/emails-billing.js +36 -0
  240. package/dist/mail/emails-billing.js.map +1 -0
  241. package/dist/mail/emails.d.ts +1 -1
  242. package/dist/mail/emails.d.ts.map +1 -1
  243. package/dist/mail/emails.js +7 -4
  244. package/dist/mail/emails.js.map +1 -1
  245. package/dist/mail/layout.d.ts +1 -1
  246. package/dist/mail/layout.d.ts.map +1 -1
  247. package/dist/mail/layout.js +2 -2
  248. package/dist/mail/layout.js.map +1 -1
  249. package/dist/mail/mailer.d.ts +1 -1
  250. package/dist/mail/mailer.d.ts.map +1 -1
  251. package/dist/mail/mailer.js +4 -3
  252. package/dist/mail/mailer.js.map +1 -1
  253. package/dist/mail/resend.d.ts +2 -0
  254. package/dist/mail/resend.d.ts.map +1 -1
  255. package/dist/mail/resend.js +1 -1
  256. package/dist/mail/resend.js.map +1 -1
  257. package/dist/mail/samples.d.ts.map +1 -1
  258. package/dist/mail/samples.js +17 -0
  259. package/dist/mail/samples.js.map +1 -1
  260. package/dist/mail/templates.d.ts +1 -1
  261. package/dist/mail/templates.d.ts.map +1 -1
  262. package/dist/mail/theme.d.ts +7 -1
  263. package/dist/mail/theme.d.ts.map +1 -1
  264. package/dist/mail/theme.js +7 -1
  265. package/dist/mail/theme.js.map +1 -1
  266. package/dist/notify/digest-data.d.ts +2 -1
  267. package/dist/notify/digest-data.d.ts.map +1 -1
  268. package/dist/notify/digest-data.js +5 -11
  269. package/dist/notify/digest-data.js.map +1 -1
  270. package/dist/notify/digest.d.ts.map +1 -1
  271. package/dist/notify/digest.js +5 -2
  272. package/dist/notify/digest.js.map +1 -1
  273. package/dist/notify/health.d.ts.map +1 -1
  274. package/dist/notify/health.js +4 -5
  275. package/dist/notify/health.js.map +1 -1
  276. package/dist/notify/team-describe.d.ts.map +1 -1
  277. package/dist/notify/team-describe.js +14 -0
  278. package/dist/notify/team-describe.js.map +1 -1
  279. package/dist/repo/alert-events.d.ts +38 -0
  280. package/dist/repo/alert-events.d.ts.map +1 -0
  281. package/dist/repo/alert-events.js +29 -0
  282. package/dist/repo/alert-events.js.map +1 -0
  283. package/dist/repo/alerts.d.ts +14 -44
  284. package/dist/repo/alerts.d.ts.map +1 -1
  285. package/dist/repo/alerts.js +35 -13
  286. package/dist/repo/alerts.js.map +1 -1
  287. package/dist/repo/audit.d.ts +19 -1
  288. package/dist/repo/audit.d.ts.map +1 -1
  289. package/dist/repo/audit.js +24 -2
  290. package/dist/repo/audit.js.map +1 -1
  291. package/dist/repo/auth-prune.d.ts +1 -1
  292. package/dist/repo/auth-prune.d.ts.map +1 -1
  293. package/dist/repo/auth-prune.js +13 -1
  294. package/dist/repo/auth-prune.js.map +1 -1
  295. package/dist/repo/billing.d.ts +30 -0
  296. package/dist/repo/billing.d.ts.map +1 -0
  297. package/dist/repo/billing.js +47 -0
  298. package/dist/repo/billing.js.map +1 -0
  299. package/dist/repo/grants.d.ts +30 -0
  300. package/dist/repo/grants.d.ts.map +1 -0
  301. package/dist/repo/grants.js +57 -0
  302. package/dist/repo/grants.js.map +1 -0
  303. package/dist/repo/issues.d.ts +15 -0
  304. package/dist/repo/issues.d.ts.map +1 -0
  305. package/dist/repo/issues.js +31 -0
  306. package/dist/repo/issues.js.map +1 -0
  307. package/dist/repo/keys.d.ts +51 -0
  308. package/dist/repo/keys.d.ts.map +1 -0
  309. package/dist/repo/keys.js +58 -0
  310. package/dist/repo/keys.js.map +1 -0
  311. package/dist/repo/log-retention.d.ts +8 -0
  312. package/dist/repo/log-retention.d.ts.map +1 -0
  313. package/dist/repo/log-retention.js +20 -0
  314. package/dist/repo/log-retention.js.map +1 -0
  315. package/dist/repo/metric-read.d.ts +2 -0
  316. package/dist/repo/metric-read.d.ts.map +1 -1
  317. package/dist/repo/metric-read.js +5 -1
  318. package/dist/repo/metric-read.js.map +1 -1
  319. package/dist/repo/metric-write.d.ts.map +1 -1
  320. package/dist/repo/metric-write.js +3 -2
  321. package/dist/repo/metric-write.js.map +1 -1
  322. package/dist/repo/orgs.d.ts +2 -0
  323. package/dist/repo/orgs.d.ts.map +1 -1
  324. package/dist/repo/orgs.js +5 -1
  325. package/dist/repo/orgs.js.map +1 -1
  326. package/dist/repo/project-roles.d.ts +28 -0
  327. package/dist/repo/project-roles.d.ts.map +1 -0
  328. package/dist/repo/project-roles.js +39 -0
  329. package/dist/repo/project-roles.js.map +1 -0
  330. package/dist/repo/projects.d.ts +3 -22
  331. package/dist/repo/projects.d.ts.map +1 -1
  332. package/dist/repo/projects.js +4 -29
  333. package/dist/repo/projects.js.map +1 -1
  334. package/dist/repo/saved.d.ts +9 -0
  335. package/dist/repo/saved.d.ts.map +1 -0
  336. package/dist/repo/saved.js +29 -0
  337. package/dist/repo/saved.js.map +1 -0
  338. package/dist/repo/scim-tokens.d.ts +20 -0
  339. package/dist/repo/scim-tokens.d.ts.map +1 -0
  340. package/dist/repo/scim-tokens.js +32 -0
  341. package/dist/repo/scim-tokens.js.map +1 -0
  342. package/dist/repo/services.d.ts +6 -0
  343. package/dist/repo/services.d.ts.map +1 -0
  344. package/dist/repo/services.js +17 -0
  345. package/dist/repo/services.js.map +1 -0
  346. package/dist/repo/settings.d.ts +30 -0
  347. package/dist/repo/settings.d.ts.map +1 -0
  348. package/dist/repo/settings.js +55 -0
  349. package/dist/repo/settings.js.map +1 -0
  350. package/dist/repo/slos.d.ts +10 -0
  351. package/dist/repo/slos.d.ts.map +1 -0
  352. package/dist/repo/slos.js +27 -0
  353. package/dist/repo/slos.js.map +1 -0
  354. package/dist/repo/sourcemaps.d.ts +9 -0
  355. package/dist/repo/sourcemaps.d.ts.map +1 -0
  356. package/dist/repo/sourcemaps.js +34 -0
  357. package/dist/repo/sourcemaps.js.map +1 -0
  358. package/dist/repo/tags.d.ts +11 -0
  359. package/dist/repo/tags.d.ts.map +1 -0
  360. package/dist/repo/tags.js +33 -0
  361. package/dist/repo/tags.js.map +1 -0
  362. package/dist/repo/trace-join.d.ts +9 -0
  363. package/dist/repo/trace-join.d.ts.map +1 -0
  364. package/dist/repo/trace-join.js +35 -0
  365. package/dist/repo/trace-join.js.map +1 -0
  366. package/dist/repo/trace-read.d.ts +6 -13
  367. package/dist/repo/trace-read.d.ts.map +1 -1
  368. package/dist/repo/trace-read.js +11 -4
  369. package/dist/repo/trace-read.js.map +1 -1
  370. package/dist/repo/trace-write.d.ts +6 -2
  371. package/dist/repo/trace-write.d.ts.map +1 -1
  372. package/dist/repo/trace-write.js +22 -7
  373. package/dist/repo/trace-write.js.map +1 -1
  374. package/dist/repo/uptime.d.ts +21 -0
  375. package/dist/repo/uptime.d.ts.map +1 -0
  376. package/dist/repo/uptime.js +53 -0
  377. package/dist/repo/uptime.js.map +1 -0
  378. package/dist/routes/alerts.d.ts.map +1 -1
  379. package/dist/routes/alerts.js +65 -66
  380. package/dist/routes/alerts.js.map +1 -1
  381. package/dist/routes/apps.d.ts +20 -0
  382. package/dist/routes/apps.d.ts.map +1 -0
  383. package/dist/routes/apps.js +53 -0
  384. package/dist/routes/apps.js.map +1 -0
  385. package/dist/routes/billing.d.ts +4 -0
  386. package/dist/routes/billing.d.ts.map +1 -0
  387. package/dist/routes/billing.js +51 -0
  388. package/dist/routes/billing.js.map +1 -0
  389. package/dist/routes/changes.d.ts +4 -0
  390. package/dist/routes/changes.d.ts.map +1 -0
  391. package/dist/routes/changes.js +19 -0
  392. package/dist/routes/changes.js.map +1 -0
  393. package/dist/routes/data.d.ts.map +1 -1
  394. package/dist/routes/data.js +38 -14
  395. package/dist/routes/data.js.map +1 -1
  396. package/dist/routes/index.d.ts.map +1 -1
  397. package/dist/routes/index.js +28 -0
  398. package/dist/routes/index.js.map +1 -1
  399. package/dist/routes/ingest.d.ts +3 -1
  400. package/dist/routes/ingest.d.ts.map +1 -1
  401. package/dist/routes/ingest.js +60 -14
  402. package/dist/routes/ingest.js.map +1 -1
  403. package/dist/routes/issues.d.ts +4 -0
  404. package/dist/routes/issues.d.ts.map +1 -0
  405. package/dist/routes/issues.js +34 -0
  406. package/dist/routes/issues.js.map +1 -0
  407. package/dist/routes/keys.d.ts +4 -0
  408. package/dist/routes/keys.d.ts.map +1 -0
  409. package/dist/routes/keys.js +70 -0
  410. package/dist/routes/keys.js.map +1 -0
  411. package/dist/routes/mcp.d.ts.map +1 -1
  412. package/dist/routes/mcp.js +85 -31
  413. package/dist/routes/mcp.js.map +1 -1
  414. package/dist/routes/me.d.ts.map +1 -1
  415. package/dist/routes/me.js +15 -5
  416. package/dist/routes/me.js.map +1 -1
  417. package/dist/routes/metrics.d.ts +2 -2
  418. package/dist/routes/metrics.d.ts.map +1 -1
  419. package/dist/routes/metrics.js +3 -4
  420. package/dist/routes/metrics.js.map +1 -1
  421. package/dist/routes/models.d.ts +9 -1
  422. package/dist/routes/models.d.ts.map +1 -1
  423. package/dist/routes/models.js +62 -21
  424. package/dist/routes/models.js.map +1 -1
  425. package/dist/routes/notify.d.ts.map +1 -1
  426. package/dist/routes/notify.js +3 -1
  427. package/dist/routes/notify.js.map +1 -1
  428. package/dist/routes/oauth-meta.d.ts +7 -0
  429. package/dist/routes/oauth-meta.d.ts.map +1 -0
  430. package/dist/routes/oauth-meta.js +52 -0
  431. package/dist/routes/oauth-meta.js.map +1 -0
  432. package/dist/routes/orgs.d.ts.map +1 -1
  433. package/dist/routes/orgs.js +27 -7
  434. package/dist/routes/orgs.js.map +1 -1
  435. package/dist/routes/projects.d.ts.map +1 -1
  436. package/dist/routes/projects.js +32 -22
  437. package/dist/routes/projects.js.map +1 -1
  438. package/dist/routes/saved.d.ts +4 -0
  439. package/dist/routes/saved.d.ts.map +1 -0
  440. package/dist/routes/saved.js +56 -0
  441. package/dist/routes/saved.js.map +1 -0
  442. package/dist/routes/scim.d.ts +4 -0
  443. package/dist/routes/scim.d.ts.map +1 -0
  444. package/dist/routes/scim.js +37 -0
  445. package/dist/routes/scim.js.map +1 -0
  446. package/dist/routes/search.d.ts +4 -0
  447. package/dist/routes/search.d.ts.map +1 -0
  448. package/dist/routes/search.js +36 -0
  449. package/dist/routes/search.js.map +1 -0
  450. package/dist/routes/settings.d.ts +4 -0
  451. package/dist/routes/settings.d.ts.map +1 -0
  452. package/dist/routes/settings.js +39 -0
  453. package/dist/routes/settings.js.map +1 -0
  454. package/dist/routes/shares.d.ts +3 -0
  455. package/dist/routes/shares.d.ts.map +1 -1
  456. package/dist/routes/shares.js +34 -18
  457. package/dist/routes/shares.js.map +1 -1
  458. package/dist/routes/slos.d.ts +4 -0
  459. package/dist/routes/slos.d.ts.map +1 -0
  460. package/dist/routes/slos.js +76 -0
  461. package/dist/routes/slos.js.map +1 -0
  462. package/dist/routes/sourcemaps.d.ts +9 -0
  463. package/dist/routes/sourcemaps.d.ts.map +1 -0
  464. package/dist/routes/sourcemaps.js +54 -0
  465. package/dist/routes/sourcemaps.js.map +1 -0
  466. package/dist/routes/status.d.ts +4 -0
  467. package/dist/routes/status.d.ts.map +1 -0
  468. package/dist/routes/status.js +60 -0
  469. package/dist/routes/status.js.map +1 -0
  470. package/dist/routes/tags.d.ts +4 -0
  471. package/dist/routes/tags.d.ts.map +1 -0
  472. package/dist/routes/tags.js +81 -0
  473. package/dist/routes/tags.js.map +1 -0
  474. package/dist/routes/uptime.d.ts +4 -0
  475. package/dist/routes/uptime.d.ts.map +1 -0
  476. package/dist/routes/uptime.js +71 -0
  477. package/dist/routes/uptime.js.map +1 -0
  478. package/dist/scale-exec.d.ts +3 -2
  479. package/dist/scale-exec.d.ts.map +1 -1
  480. package/dist/scale-exec.js +5 -4
  481. package/dist/scale-exec.js.map +1 -1
  482. package/dist/server.d.ts.map +1 -1
  483. package/dist/server.js +45 -10
  484. package/dist/server.js.map +1 -1
  485. package/dist/settle.d.ts +13 -9
  486. package/dist/settle.d.ts.map +1 -1
  487. package/dist/settle.js +40 -20
  488. package/dist/settle.js.map +1 -1
  489. package/dist/telemetry/cached.d.ts +11 -0
  490. package/dist/telemetry/cached.d.ts.map +1 -0
  491. package/dist/telemetry/cached.js +30 -0
  492. package/dist/telemetry/cached.js.map +1 -0
  493. package/dist/telemetry/ch/admin.d.ts +14 -0
  494. package/dist/telemetry/ch/admin.d.ts.map +1 -0
  495. package/dist/telemetry/ch/admin.js +82 -0
  496. package/dist/telemetry/ch/admin.js.map +1 -0
  497. package/dist/telemetry/ch/http.d.ts +19 -0
  498. package/dist/telemetry/ch/http.d.ts.map +1 -0
  499. package/dist/telemetry/ch/http.js +91 -0
  500. package/dist/telemetry/ch/http.js.map +1 -0
  501. package/dist/telemetry/ch/metrics.d.ts +10 -0
  502. package/dist/telemetry/ch/metrics.d.ts.map +1 -0
  503. package/dist/telemetry/ch/metrics.js +61 -0
  504. package/dist/telemetry/ch/metrics.js.map +1 -0
  505. package/dist/telemetry/ch/queries.d.ts +19 -0
  506. package/dist/telemetry/ch/queries.d.ts.map +1 -0
  507. package/dist/telemetry/ch/queries.js +30 -0
  508. package/dist/telemetry/ch/queries.js.map +1 -0
  509. package/dist/telemetry/ch/queue.d.ts +36 -0
  510. package/dist/telemetry/ch/queue.d.ts.map +1 -0
  511. package/dist/telemetry/ch/queue.js +83 -0
  512. package/dist/telemetry/ch/queue.js.map +1 -0
  513. package/dist/telemetry/ch/read.d.ts +12 -0
  514. package/dist/telemetry/ch/read.d.ts.map +1 -0
  515. package/dist/telemetry/ch/read.js +74 -0
  516. package/dist/telemetry/ch/read.js.map +1 -0
  517. package/dist/telemetry/ch/rebuild.d.ts +23 -0
  518. package/dist/telemetry/ch/rebuild.d.ts.map +1 -0
  519. package/dist/telemetry/ch/rebuild.js +65 -0
  520. package/dist/telemetry/ch/rebuild.js.map +1 -0
  521. package/dist/telemetry/ch/schema-facts.d.ts +6 -0
  522. package/dist/telemetry/ch/schema-facts.d.ts.map +1 -0
  523. package/dist/telemetry/ch/schema-facts.js +55 -0
  524. package/dist/telemetry/ch/schema-facts.js.map +1 -0
  525. package/dist/telemetry/ch/schema-raw.d.ts +10 -0
  526. package/dist/telemetry/ch/schema-raw.d.ts.map +1 -0
  527. package/dist/telemetry/ch/schema-raw.js +37 -0
  528. package/dist/telemetry/ch/schema-raw.js.map +1 -0
  529. package/dist/telemetry/ch/schema-rollups.d.ts +2 -0
  530. package/dist/telemetry/ch/schema-rollups.d.ts.map +1 -0
  531. package/dist/telemetry/ch/schema-rollups.js +61 -0
  532. package/dist/telemetry/ch/schema-rollups.js.map +1 -0
  533. package/dist/telemetry/ch/schema.d.ts +12 -0
  534. package/dist/telemetry/ch/schema.d.ts.map +1 -0
  535. package/dist/telemetry/ch/schema.js +25 -0
  536. package/dist/telemetry/ch/schema.js.map +1 -0
  537. package/dist/telemetry/ch/settle-pool.d.ts +24 -0
  538. package/dist/telemetry/ch/settle-pool.d.ts.map +1 -0
  539. package/dist/telemetry/ch/settle-pool.js +58 -0
  540. package/dist/telemetry/ch/settle-pool.js.map +1 -0
  541. package/dist/telemetry/ch/settle-rows.d.ts +16 -0
  542. package/dist/telemetry/ch/settle-rows.d.ts.map +1 -0
  543. package/dist/telemetry/ch/settle-rows.js +74 -0
  544. package/dist/telemetry/ch/settle-rows.js.map +1 -0
  545. package/dist/telemetry/ch/settle-work.d.ts +21 -0
  546. package/dist/telemetry/ch/settle-work.d.ts.map +1 -0
  547. package/dist/telemetry/ch/settle-work.js +52 -0
  548. package/dist/telemetry/ch/settle-work.js.map +1 -0
  549. package/dist/telemetry/ch/settle-worker.d.ts +2 -0
  550. package/dist/telemetry/ch/settle-worker.d.ts.map +1 -0
  551. package/dist/telemetry/ch/settle-worker.js +10 -0
  552. package/dist/telemetry/ch/settle-worker.js.map +1 -0
  553. package/dist/telemetry/ch/settle.d.ts +21 -0
  554. package/dist/telemetry/ch/settle.d.ts.map +1 -0
  555. package/dist/telemetry/ch/settle.js +55 -0
  556. package/dist/telemetry/ch/settle.js.map +1 -0
  557. package/dist/telemetry/ch/store.d.ts +27 -0
  558. package/dist/telemetry/ch/store.d.ts.map +1 -0
  559. package/dist/telemetry/ch/store.js +94 -0
  560. package/dist/telemetry/ch/store.js.map +1 -0
  561. package/dist/telemetry/ch/util.d.ts +27 -0
  562. package/dist/telemetry/ch/util.d.ts.map +1 -0
  563. package/dist/telemetry/ch/util.js +49 -0
  564. package/dist/telemetry/ch/util.js.map +1 -0
  565. package/dist/telemetry/ch/write.d.ts +12 -0
  566. package/dist/telemetry/ch/write.d.ts.map +1 -0
  567. package/dist/telemetry/ch/write.js +59 -0
  568. package/dist/telemetry/ch/write.js.map +1 -0
  569. package/dist/telemetry/copy.d.ts +9 -0
  570. package/dist/telemetry/copy.d.ts.map +1 -0
  571. package/dist/telemetry/copy.js +60 -0
  572. package/dist/telemetry/copy.js.map +1 -0
  573. package/dist/telemetry/index.d.ts +14 -0
  574. package/dist/telemetry/index.d.ts.map +1 -0
  575. package/dist/telemetry/index.js +26 -0
  576. package/dist/telemetry/index.js.map +1 -0
  577. package/dist/telemetry/pg-store.d.ts +5 -0
  578. package/dist/telemetry/pg-store.d.ts.map +1 -0
  579. package/dist/telemetry/pg-store.js +83 -0
  580. package/dist/telemetry/pg-store.js.map +1 -0
  581. package/dist/telemetry/store.d.ts +85 -0
  582. package/dist/telemetry/store.d.ts.map +1 -0
  583. package/dist/telemetry/store.js +2 -0
  584. package/dist/telemetry/store.js.map +1 -0
  585. package/dist/uptime/headers.d.ts +6 -0
  586. package/dist/uptime/headers.d.ts.map +1 -0
  587. package/dist/uptime/headers.js +25 -0
  588. package/dist/uptime/headers.js.map +1 -0
  589. package/dist/uptime/run.d.ts +9 -0
  590. package/dist/uptime/run.d.ts.map +1 -0
  591. package/dist/uptime/run.js +40 -0
  592. package/dist/uptime/run.js.map +1 -0
  593. package/package.json +10 -5
  594. package/dist/alerts/notify.d.ts +0 -28
  595. package/dist/alerts/notify.d.ts.map +0 -1
  596. package/dist/alerts/notify.js +0 -52
  597. package/dist/alerts/notify.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"alerts.js","sourceRoot":"","sources":["../../src/routes/alerts.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"alerts.js","sourceRoot":"","sources":["../../src/routes/alerts.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ import type { Ctx } from "../app.js";
2
+ import type { Router } from "../http/router.js";
3
+ /** One connected app as the dashboard lists it. A grant for all projects names none: it reads every project, also new ones. */
4
+ export interface AppView {
5
+ id: string;
6
+ app: string;
7
+ clientId: string;
8
+ orgId: string;
9
+ orgName: string;
10
+ userEmail: string;
11
+ allProjects: boolean;
12
+ projects: {
13
+ id: string;
14
+ name: string;
15
+ }[];
16
+ createdMs: number;
17
+ usedMs: number | null;
18
+ }
19
+ export declare function appRoutes(r: Router<Ctx>): void;
20
+ //# sourceMappingURL=apps.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"apps.d.ts","sourceRoot":"","sources":["../../src/routes/apps.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,WAAW,CAAC;AAIrC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAKhD,+HAA+H;AAC/H,MAAM,WAAW,OAAO;IACtB,EAAE,EAAE,MAAM,CAAC;IACX,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,OAAO,CAAC;IACrB,QAAQ,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IACzC,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;CACvB;AAkDD,wBAAgB,SAAS,CAAC,CAAC,EAAE,MAAM,CAAC,GAAG,CAAC,GAAG,IAAI,CAE9C"}
@@ -0,0 +1,53 @@
1
+ import { requireOrg, requireUser } from "../auth/principal.js";
2
+ import { fail, sendJson } from "../http/http.js";
3
+ import { audit } from "../repo/audit.js";
4
+ import { endGrant, grantsOfOrg, grantsOfUser } from "../repo/grants.js";
5
+ import { listProjects } from "../repo/projects.js";
6
+ async function viewsOf(q, grants) {
7
+ const names = new Map();
8
+ for (const orgId of new Set(grants.map((g) => g.orgId)))
9
+ names.set(orgId, new Map((await listProjects(q, orgId)).map((p) => [p.id, p.name])));
10
+ return grants.map((g) => {
11
+ const inOrg = names.get(g.orgId);
12
+ const projects = g.projectIds.filter((id) => inOrg.has(id)).map((id) => ({ id, name: inOrg.get(id) }));
13
+ const { id, clientId, orgId, orgName, userEmail, allProjects, createdMs, usedMs } = g;
14
+ return { id, app: g.clientName ?? clientId, clientId, orgId, orgName, userEmail, allProjects, projects, createdMs, usedMs };
15
+ });
16
+ }
17
+ /** `GET api/me/apps`: the apps this person connected, in every organization. */
18
+ async function myApps(ctx) {
19
+ const user = await requireUser(ctx);
20
+ sendJson(ctx.res, 200, { apps: await viewsOf(ctx.app.db, await grantsOfUser(ctx.app.db, user.id)) });
21
+ }
22
+ /** `GET api/orgs/{org}/apps`: every app the organization's people connected. Admins. */
23
+ async function orgApps(ctx) {
24
+ await requireOrg(ctx, ctx.params.org, "manage");
25
+ sendJson(ctx.res, 200, { apps: await viewsOf(ctx.app.db, await grantsOfOrg(ctx.app.db, ctx.params.org)) });
26
+ }
27
+ /** End one grant and write it to the audit log. The app's tokens stop at once. */
28
+ async function disconnect(ctx, grant, by) {
29
+ if (!grant)
30
+ return fail(404, "App not found.");
31
+ const now = ctx.app.config.now();
32
+ await ctx.app.db.tx(async (q) => {
33
+ await endGrant(q, grant.id, now);
34
+ await audit(q, grant.orgId, by, "app.disconnect", { app: grant.clientName ?? grant.clientId, clientId: grant.clientId, grantId: grant.id, userEmail: grant.userEmail }, now);
35
+ });
36
+ sendJson(ctx.res, 200, { ok: true });
37
+ }
38
+ /** `DELETE api/me/apps/{id}`: the person ends one of their own. */
39
+ async function dropMine(ctx) {
40
+ const user = await requireUser(ctx);
41
+ const grant = (await grantsOfUser(ctx.app.db, user.id)).find((g) => g.id === ctx.params.id);
42
+ await disconnect(ctx, grant, `user:${user.id}`);
43
+ }
44
+ /** `DELETE api/orgs/{org}/apps/{id}`: an admin ends anyone's grant in the organization. */
45
+ async function dropInOrg(ctx) {
46
+ const { user } = await requireOrg(ctx, ctx.params.org, "manage");
47
+ const grant = (await grantsOfOrg(ctx.app.db, ctx.params.org)).find((g) => g.id === ctx.params.id);
48
+ await disconnect(ctx, grant, `user:${user.id}`);
49
+ }
50
+ export function appRoutes(r) {
51
+ r.on("GET", "api/me/apps", myApps).on("DELETE", "api/me/apps/:id", dropMine).on("GET", "api/orgs/:org/apps", orgApps).on("DELETE", "api/orgs/:org/apps/:id", dropInOrg);
52
+ }
53
+ //# sourceMappingURL=apps.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"apps.js","sourceRoot":"","sources":["../../src/routes/apps.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import type { Ctx } from "../app.js";
2
+ import type { Router } from "../http/router.js";
3
+ export declare function billingRoutes(r: Router<Ctx>): void;
4
+ //# sourceMappingURL=billing.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"billing.d.ts","sourceRoot":"","sources":["../../src/routes/billing.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,WAAW,CAAC;AAMrC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AA6ChD,wBAAgB,aAAa,CAAC,CAAC,EAAE,MAAM,CAAC,GAAG,CAAC,GAAG,IAAI,CAElD"}
@@ -0,0 +1,51 @@
1
+ import { requireOrg } from "../auth/principal.js";
2
+ import { requireFeature } from "../billing/gate.js";
3
+ import { isPaidPlan } from "../billing/plans.js";
4
+ import { usageSummary } from "../billing/summary.js";
5
+ import { fail, readJsonBody, sendJson } from "../http/http.js";
6
+ import { audit, auditFilterOf, listAudit } from "../repo/audit.js";
7
+ import { orgBilling, setSpendCap } from "../repo/billing.js";
8
+ /** Everyone in the organization sees its usage (the banner); owners and admins also see the Billing page. */
9
+ async function usage(ctx) {
10
+ await requireOrg(ctx, ctx.params.org, "read");
11
+ const summary = await usageSummary(ctx.app, ctx.params.org);
12
+ if (!summary)
13
+ return fail(404, "Organization not found.");
14
+ sendJson(ctx.res, 200, summary);
15
+ }
16
+ /** Owners set or clear the monthly overage limit, in whole dollars (Team and Business). */
17
+ async function changeBilling(ctx) {
18
+ const { user } = await requireOrg(ctx, ctx.params.org, "own");
19
+ if (!ctx.app.billing.on)
20
+ fail(404, "Billing is off on this cloud.");
21
+ const body = await readJsonBody(ctx.req);
22
+ const cap = body.spendCapUsd;
23
+ if (cap !== null && (!Number.isInteger(cap) || cap < 0 || cap > 1_000_000))
24
+ fail(400, "The spend cap is a whole number of dollars, 0 to 1000000, or null for none.");
25
+ const b = await orgBilling(ctx.app.db, ctx.params.org);
26
+ if (!isPaidPlan(b?.plan))
27
+ fail(400, "A spend cap is for the Team and Business plans.");
28
+ await setSpendCap(ctx.app.db, ctx.params.org, cap === null ? null : cap * 100, `user:${user.id}`, ctx.app.config.now());
29
+ ctx.app.billing.forget(ctx.params.org);
30
+ sendJson(ctx.res, 200, { ok: true });
31
+ }
32
+ const csvCell = (v) => (/[",\n\r]/.test(v) ? `"${v.replace(/"/g, '""')}"` : v);
33
+ /** The audit log as CSV or JSON (Business and Enterprise), with the log's filter (`action`, `actor`, `before`, `from`). The export itself goes in the log too. */
34
+ async function auditExport(ctx) {
35
+ const { user } = await requireOrg(ctx, ctx.params.org, "manage");
36
+ await requireFeature(ctx.app, ctx.params.org, "auditExport");
37
+ const format = ctx.url.searchParams.get("format") === "json" ? "json" : "csv";
38
+ const filter = auditFilterOf(ctx.url.searchParams);
39
+ await audit(ctx.app.db, ctx.params.org, `user:${user.id}`, "audit.export", { format, ...filter }, ctx.app.config.now());
40
+ const rows = await listAudit(ctx.app.db, ctx.params.org, 100_000, filter);
41
+ const name = `wizelens-audit-${new Date(ctx.app.config.now()).toISOString().slice(0, 10)}.${format}`;
42
+ const body = format === "json"
43
+ ? JSON.stringify(rows.map((r) => ({ time: new Date(r.timeMs).toISOString(), ...r })))
44
+ : ["time,actor,action,detail", ...rows.map((r) => [new Date(r.timeMs).toISOString(), r.actor, r.action, JSON.stringify(r.detail)].map(csvCell).join(","))].join("\n");
45
+ ctx.res.writeHead(200, { "Content-Type": format === "json" ? "application/json" : "text/csv; charset=utf-8", "Content-Disposition": `attachment; filename="${name}"`, "Cache-Control": "no-store" });
46
+ ctx.res.end(body);
47
+ }
48
+ export function billingRoutes(r) {
49
+ r.on("GET", "api/orgs/:org/usage", usage).on("PATCH", "api/orgs/:org/billing", changeBilling).on("GET", "api/orgs/:org/audit/export", auditExport);
50
+ }
51
+ //# sourceMappingURL=billing.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"billing.js","sourceRoot":"","sources":["../../src/routes/billing.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import type { Ctx } from "../app.js";
2
+ import type { Router } from "../http/router.js";
3
+ export declare function changeRoutes(r: Router<Ctx>): void;
4
+ //# sourceMappingURL=changes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"changes.d.ts","sourceRoot":"","sources":["../../src/routes/changes.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,WAAW,CAAC;AACrC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAmBhD,wBAAgB,YAAY,CAAC,CAAC,EAAE,MAAM,CAAC,GAAG,CAAC,GAAG,IAAI,CAEjD"}
@@ -0,0 +1,19 @@
1
+ import { projectOf } from "./data.js";
2
+ /** A comment line now and then, so proxies keep the stream open. */
3
+ const HEARTBEAT_MS = 25_000;
4
+ /** `GET api/changes?project=`: a server-sent event `data` each time the project gets new stats, for the dashboard to reload. */
5
+ async function changes(ctx) {
6
+ const { project } = await projectOf(ctx);
7
+ const res = ctx.res;
8
+ res.writeHead(200, { "Content-Type": "text/event-stream", "Cache-Control": "no-cache, no-transform", Connection: "keep-alive", "X-Accel-Buffering": "no" });
9
+ res.write("retry: 5000\n\n");
10
+ const stop = ctx.app.changes.subscribe(project.id, () => res.write(`event: data\ndata: ${Date.now()}\n\n`));
11
+ const beat = setInterval(() => res.write(": beat\n\n"), HEARTBEAT_MS);
12
+ await new Promise((resolve) => ctx.req.once("close", resolve));
13
+ clearInterval(beat);
14
+ stop();
15
+ }
16
+ export function changeRoutes(r) {
17
+ r.on("GET", "api/changes", changes);
18
+ }
19
+ //# sourceMappingURL=changes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"changes.js","sourceRoot":"","sources":["../../src/routes/changes.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAEtC,oEAAoE;AACpE,MAAM,YAAY,GAAG,MAAM,CAAC;AAE5B,gIAAgI;AAChI,KAAK,UAAU,OAAO,CAAC,GAAQ;IAC7B,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,SAAS,CAAC,GAAG,CAAC,CAAC;IACzC,MAAM,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC;IACpB,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,cAAc,EAAE,mBAAmB,EAAE,eAAe,EAAE,wBAAwB,EAAE,UAAU,EAAE,YAAY,EAAE,mBAAmB,EAAE,IAAI,EAAE,CAAC,CAAC;IAC5J,GAAG,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;IAC7B,MAAM,IAAI,GAAG,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,sBAAsB,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC;IAC5G,MAAM,IAAI,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,YAAY,CAAC,EAAE,YAAY,CAAC,CAAC;IACtE,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;IACrE,aAAa,CAAC,IAAI,CAAC,CAAC;IACpB,IAAI,EAAE,CAAC;AACT,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,CAAc;IACzC,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,aAAa,EAAE,OAAO,CAAC,CAAC;AACtC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"data.d.ts","sourceRoot":"","sources":["../../src/routes/data.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,WAAW,CAAC;AACrC,OAAO,EAAe,KAAK,aAAa,EAAkB,MAAM,sBAAsB,CAAC;AAEvF,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAOhD,6DAA6D;AAC7D,wBAAsB,SAAS,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,aAAa,CAAC,CAIhE;AA0DD,wBAAgB,UAAU,CAAC,CAAC,EAAE,MAAM,CAAC,GAAG,CAAC,GAAG,IAAI,CAK/C"}
1
+ {"version":3,"file":"data.d.ts","sourceRoot":"","sources":["../../src/routes/data.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,WAAW,CAAC;AAErC,OAAO,EAAe,KAAK,aAAa,EAAkB,MAAM,sBAAsB,CAAC;AAEvF,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAWhD,6DAA6D;AAC7D,wBAAsB,SAAS,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,aAAa,CAAC,CAIhE;AA6ED,wBAAgB,UAAU,CAAC,CAAC,EAAE,MAAM,CAAC,GAAG,CAAC,GAAG,IAAI,CAM/C"}
@@ -1,6 +1,11 @@
1
+ import { joinScope } from "../auth/join-scope.js";
1
2
  import { principalOf, requireProject } from "../auth/principal.js";
2
3
  import { fail, sendJson } from "../http/http.js";
3
- import { countRows, environmentsOf, getTrace, listServices, queryTraces } from "../repo/trace-read.js";
4
+ import { audit } from "../repo/audit.js";
5
+ import { forgetOfflineServices } from "../repo/services.js";
6
+ import { environmentsOf, listServices } from "../repo/trace-read.js";
7
+ import { factsWith } from "../repo/settings.js";
8
+ import { projectRetentionMs } from "../scale-exec.js";
4
9
  const DAY_MS = 86_400_000;
5
10
  const clamp = (v, min, max) => Math.min(max, Math.max(min, v));
6
11
  const num = (p, k) => (p.has(k) && Number.isFinite(Number(p.get(k))) ? Number(p.get(k)) : undefined);
@@ -11,27 +16,34 @@ export async function projectOf(ctx) {
11
16
  return fail(400, "Add ?project=<project id>.");
12
17
  return requireProject(ctx, id);
13
18
  }
14
- async function retentionMs(ctx) {
19
+ /** How long the asked project keeps data, and the thresholds it uses; the cloud's own when no project is asked or allowed. */
20
+ async function projectInfo(ctx) {
21
+ const c = ctx.app.config;
22
+ const fallback = { maxAgeMs: c.retentionDays * DAY_MS, analysis: { slowQueryMs: c.slowQueryMs, nPlusOneThreshold: c.nPlusOneThreshold } };
15
23
  const id = ctx.url.searchParams.get("project");
16
24
  const p = id ? await principalOf(ctx) : undefined;
17
25
  if (!id || !p)
18
- return ctx.app.config.retentionDays * DAY_MS;
26
+ return fallback;
19
27
  const access = await requireProject(ctx, id).catch(() => undefined);
20
28
  if (!access)
21
- return ctx.app.config.retentionDays * DAY_MS;
22
- const [row] = await ctx.app.db.query("SELECT retention_days AS d FROM orgs WHERE id = $1", [access.project.orgId]);
23
- return (row?.d ?? ctx.app.config.retentionDays) * DAY_MS;
29
+ return fallback;
30
+ const facts = factsWith(c, await ctx.app.settings.get(id));
31
+ const maxAgeMs = await projectRetentionMs(ctx.app.db, id, c.retentionDays);
32
+ return { maxAgeMs, analysis: { slowQueryMs: facts.slowQueryMs, nPlusOneThreshold: facts.nPlusOneThreshold } };
24
33
  }
25
34
  async function info(ctx) {
35
+ const project = await projectInfo(ctx);
26
36
  const value = {
27
37
  mode: "cloud",
28
- capabilities: ["environments", "registry", "accounts", "alerts", "sharing", "serverStats", "metrics", "serverMetrics"],
38
+ capabilities: ["environments", "registry", "accounts", "alerts", "sharing", "serverStats", "metrics", "serverMetrics", "search", "changes", "issues", "infra", "uptime", "statusPages", "sourcemaps", "slos", "saved", "tags", "settings"],
29
39
  service: "WizeLens Cloud",
30
40
  version: ctx.app.version,
31
41
  runtime: `node ${process.version}`,
32
42
  mcp: true,
33
43
  startedMs: ctx.app.startedMs,
34
- storage: { kind: ctx.app.db.kind === "postgres" ? "postgres" : "sqlite", maxAgeMs: await retentionMs(ctx) },
44
+ // PGlite is Postgres in-process: both keep data across restarts.
45
+ storage: { kind: "postgres", maxAgeMs: project.maxAgeMs },
46
+ analysis: project.analysis,
35
47
  redactKeys: [...ctx.app.config.redactKeys],
36
48
  };
37
49
  sendJson(ctx.res, 200, value);
@@ -45,12 +57,15 @@ async function traces(ctx) {
45
57
  q.before = num(p, "before");
46
58
  q.env = p.get("env") || undefined;
47
59
  q.session = p.get("session") || undefined;
48
- const list = await queryTraces(ctx.app.db, q);
60
+ q.noLoose = !full;
61
+ const list = await ctx.app.telemetry.traces(q);
49
62
  sendJson(ctx.res, 200, full ? list : list.map(({ spans: _s, logs: _l, remotes: _r, ...summary }) => summary));
50
63
  }
64
+ // One trace, with its parts from the other projects the caller may read in the same organization (`join=false`: this project only).
51
65
  async function trace(ctx) {
52
- const { project } = await projectOf(ctx);
53
- const t = await getTrace(ctx.app.db, project.id, ctx.params.id);
66
+ const access = await projectOf(ctx);
67
+ const scope = ctx.url.searchParams.get("join") === "false" ? [access.project.id] : await joinScope(ctx.app.db, access);
68
+ const t = await ctx.app.telemetry.joinedTrace(access.project.id, scope, ctx.params.id);
54
69
  if (!t)
55
70
  fail(404, "Trace not found.");
56
71
  sendJson(ctx.res, 200, t);
@@ -60,15 +75,24 @@ async function services(ctx) {
60
75
  const db = ctx.app.db;
61
76
  sendJson(ctx.res, 200, {
62
77
  services: await listServices(db, project.id, ctx.app.config.now()),
63
- environments: await environmentsOf(db, project.id),
78
+ environments: await environmentsOf(db, project.id, await ctx.app.telemetry.traceEnvs(project.id)),
64
79
  projects: [],
65
- ...(await countRows(db, project.id)),
80
+ ...(await ctx.app.telemetry.counts(project.id)),
66
81
  });
67
82
  }
83
+ /** Forget the project's offline hosts (old pods), for admins. Their traces stay. */
84
+ async function forgetOffline(ctx) {
85
+ const { project, actor } = await requireProject(ctx, ctx.params.project, "manage");
86
+ const now = ctx.app.config.now();
87
+ const removed = await forgetOfflineServices(ctx.app.db, project.id, now);
88
+ await audit(ctx.app.db, project.orgId, actor, "service.forget", { projectId: project.id, name: project.name, removed }, now);
89
+ sendJson(ctx.res, 200, { removed });
90
+ }
68
91
  export function dataRoutes(r) {
69
92
  r.on("GET", "api/info", info)
70
93
  .on("GET", "api/traces", traces)
71
94
  .on("GET", "api/traces/:id", trace)
72
- .on("GET", "api/services", services);
95
+ .on("GET", "api/services", services)
96
+ .on("POST", "api/projects/:project/services/forget", forgetOffline);
73
97
  }
74
98
  //# sourceMappingURL=data.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"data.js","sourceRoot":"","sources":["../../src/routes/data.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"data.js","sourceRoot":"","sources":["../../src/routes/data.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAClD,OAAO,EAAE,WAAW,EAAsB,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACvF,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAEjD,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACzC,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAAE,cAAc,EAAE,YAAY,EAAmB,MAAM,uBAAuB,CAAC;AACtF,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAChD,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAEtD,MAAM,MAAM,GAAG,UAAU,CAAC;AAC1B,MAAM,KAAK,GAAG,CAAC,CAAS,EAAE,GAAW,EAAE,GAAW,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;AACvF,MAAM,GAAG,GAAG,CAAC,CAAkB,EAAE,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;AAE9H,6DAA6D;AAC7D,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,GAAQ;IACtC,MAAM,EAAE,GAAG,GAAG,CAAC,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IAC/C,IAAI,CAAC,EAAE;QAAE,OAAO,IAAI,CAAC,GAAG,EAAE,4BAA4B,CAAC,CAAC;IACxD,OAAO,cAAc,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;AACjC,CAAC;AAED,8HAA8H;AAC9H,KAAK,UAAU,WAAW,CAAC,GAAQ;IACjC,MAAM,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC;IACzB,MAAM,QAAQ,GAAG,EAAE,QAAQ,EAAE,CAAC,CAAC,aAAa,GAAG,MAAM,EAAE,QAAQ,EAAE,EAAE,WAAW,EAAE,CAAC,CAAC,WAAW,EAAE,iBAAiB,EAAE,CAAC,CAAC,iBAAiB,EAAE,EAAE,CAAC;IAC1I,MAAM,EAAE,GAAG,GAAG,CAAC,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IAC/C,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,MAAM,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAClD,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC;QAAE,OAAO,QAAQ,CAAC;IAC/B,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;IACpE,IAAI,CAAC,MAAM;QAAE,OAAO,QAAQ,CAAC;IAC7B,MAAM,KAAK,GAAG,SAAS,CAAC,CAAC,EAAE,MAAM,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;IAC3D,MAAM,QAAQ,GAAG,MAAM,kBAAkB,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,aAAa,CAAC,CAAC;IAC3E,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,WAAW,EAAE,KAAK,CAAC,WAAY,EAAE,iBAAiB,EAAE,KAAK,CAAC,iBAAkB,EAAE,EAAE,CAAC;AAClH,CAAC;AAED,KAAK,UAAU,IAAI,CAAC,GAAQ;IAC1B,MAAM,OAAO,GAAG,MAAM,WAAW,CAAC,GAAG,CAAC,CAAC;IACvC,MAAM,KAAK,GAAgB;QACzB,IAAI,EAAE,OAAO;QACb,YAAY,EAAE,CAAC,cAAc,EAAE,UAAU,EAAE,UAAU,EAAE,QAAQ,EAAE,SAAS,EAAE,aAAa,EAAE,SAAS,EAAE,eAAe,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,CAAC;QAC1O,OAAO,EAAE,gBAAgB;QACzB,OAAO,EAAE,GAAG,CAAC,GAAG,CAAC,OAAO;QACxB,OAAO,EAAE,QAAQ,OAAO,CAAC,OAAO,EAAE;QAClC,GAAG,EAAE,IAAI;QACT,SAAS,EAAE,GAAG,CAAC,GAAG,CAAC,SAAS;QAC5B,iEAAiE;QACjE,OAAO,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE;QACzD,QAAQ,EAAE,OAAO,CAAC,QAAQ;QAC1B,UAAU,EAAE,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC;KAC3C,CAAC;IACF,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;AAChC,CAAC;AAED,KAAK,UAAU,MAAM,CAAC,GAAQ;IAC5B,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,SAAS,CAAC,GAAG,CAAC,CAAC;IACzC,MAAM,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,YAAY,CAAC;IAC/B,MAAM,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,MAAM,CAAC;IACtC,MAAM,CAAC,GAAe,EAAE,SAAS,EAAE,OAAO,CAAC,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;IAC5H,CAAC,CAAC,KAAK,GAAG,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;IAC1B,CAAC,CAAC,MAAM,GAAG,GAAG,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;IAC5B,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,SAAS,CAAC;IAClC,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,SAAS,CAAC;IAC1C,CAAC,CAAC,OAAO,GAAG,CAAC,IAAI,CAAC;IAClB,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,GAAG,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IAC/C,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,GAAG,OAAO,EAAE,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;AAChH,CAAC;AAED,oIAAoI;AACpI,KAAK,UAAU,KAAK,CAAC,GAAQ;IAC3B,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,GAAG,CAAC,CAAC;IACpC,MAAM,KAAK,GAAG,GAAG,CAAC,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;IACvH,MAAM,CAAC,GAAG,MAAM,GAAG,CAAC,GAAG,CAAC,SAAS,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,EAAE,KAAK,EAAE,GAAG,CAAC,MAAM,CAAC,EAAG,CAAC,CAAC;IACxF,IAAI,CAAC,CAAC;QAAE,IAAI,CAAC,GAAG,EAAE,kBAAkB,CAAC,CAAC;IACtC,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;AAC5B,CAAC;AAED,KAAK,UAAU,QAAQ,CAAC,GAAQ;IAC9B,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,SAAS,CAAC,GAAG,CAAC,CAAC;IACzC,MAAM,EAAE,GAAG,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;IACtB,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE;QACrB,QAAQ,EAAE,MAAM,YAAY,CAAC,EAAE,EAAE,OAAO,CAAC,EAAE,EAAE,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC;QAClE,YAAY,EAAE,MAAM,cAAc,CAAC,EAAE,EAAE,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,CAAC,GAAG,CAAC,SAAS,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QACjG,QAAQ,EAAE,EAAE;QACZ,GAAG,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;KAChD,CAAC,CAAC;AACL,CAAC;AAED,oFAAoF;AACpF,KAAK,UAAU,aAAa,CAAC,GAAQ;IACnC,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,MAAM,cAAc,CAAC,GAAG,EAAE,GAAG,CAAC,MAAM,CAAC,OAAQ,EAAE,QAAQ,CAAC,CAAC;IACpF,MAAM,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC;IACjC,MAAM,OAAO,GAAG,MAAM,qBAAqB,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,EAAE,OAAO,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;IACzE,MAAM,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,EAAE,OAAO,CAAC,KAAK,EAAE,KAAK,EAAE,gBAAgB,EAAE,EAAE,SAAS,EAAE,OAAO,CAAC,EAAE,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE,GAAG,CAAC,CAAC;IAC7H,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;AACtC,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,CAAc;IACvC,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,UAAU,EAAE,IAAI,CAAC;SAC1B,EAAE,CAAC,KAAK,EAAE,YAAY,EAAE,MAAM,CAAC;SAC/B,EAAE,CAAC,KAAK,EAAE,gBAAgB,EAAE,KAAK,CAAC;SAClC,EAAE,CAAC,KAAK,EAAE,cAAc,EAAE,QAAQ,CAAC;SACnC,EAAE,CAAC,MAAM,EAAE,uCAAuC,EAAE,aAAa,CAAC,CAAC;AACxE,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/routes/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,WAAW,CAAC;AACrC,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAW3C,4GAA4G;AAC5G,wBAAgB,SAAS,IAAI,MAAM,CAAC,GAAG,CAAC,CAYvC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/routes/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,WAAW,CAAC;AACrC,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAyB3C,4GAA4G;AAC5G,wBAAgB,SAAS,IAAI,MAAM,CAAC,GAAG,CAAC,CA0BvC"}
@@ -1,5 +1,13 @@
1
1
  import { Router } from "../http/router.js";
2
2
  import { alertRoutes } from "./alerts.js";
3
+ import { appRoutes } from "./apps.js";
4
+ import { billingRoutes } from "./billing.js";
5
+ import { changeRoutes } from "./changes.js";
6
+ import { issueRoutes } from "./issues.js";
7
+ import { savedRoutes } from "./saved.js";
8
+ import { sloRoutes } from "./slos.js";
9
+ import { keyRoutes } from "./keys.js";
10
+ import { settingsRoutes } from "./settings.js";
3
11
  import { meRoutes } from "./me.js";
4
12
  import { mcpRoutes } from "./mcp.js";
5
13
  import { shareRoutes } from "./shares.js";
@@ -8,6 +16,12 @@ import { modelRoutes } from "./models.js";
8
16
  import { notifyRoutes } from "./notify.js";
9
17
  import { orgRoutes } from "./orgs.js";
10
18
  import { projectRoutes } from "./projects.js";
19
+ import { scimRoutes } from "./scim.js";
20
+ import { searchRoutes } from "./search.js";
21
+ import { statusRoutes } from "./status.js";
22
+ import { uptimeRoutes } from "./uptime.js";
23
+ import { sourceMapRoutes } from "./sourcemaps.js";
24
+ import { tagRoutes } from "./tags.js";
11
25
  /** Every route below `/_wizelens/`, except ingest and OTLP (they use ingest keys and are matched first). */
12
26
  export function allRoutes() {
13
27
  const r = new Router();
@@ -15,11 +29,25 @@ export function allRoutes() {
15
29
  notifyRoutes(r);
16
30
  orgRoutes(r);
17
31
  projectRoutes(r);
32
+ keyRoutes(r);
33
+ settingsRoutes(r);
18
34
  dataRoutes(r);
19
35
  modelRoutes(r);
36
+ changeRoutes(r);
37
+ searchRoutes(r);
38
+ tagRoutes(r);
20
39
  alertRoutes(r);
40
+ issueRoutes(r);
41
+ sloRoutes(r);
42
+ savedRoutes(r);
21
43
  shareRoutes(r);
44
+ uptimeRoutes(r);
45
+ statusRoutes(r);
22
46
  mcpRoutes(r);
47
+ appRoutes(r);
48
+ sourceMapRoutes(r);
49
+ billingRoutes(r);
50
+ scimRoutes(r);
23
51
  return r;
24
52
  }
25
53
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/routes/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAC3C,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACnC,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AACrC,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AACvC,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAE9C,4GAA4G;AAC5G,MAAM,UAAU,SAAS;IACvB,MAAM,CAAC,GAAG,IAAI,MAAM,EAAO,CAAC;IAC5B,QAAQ,CAAC,CAAC,CAAC,CAAC;IACZ,YAAY,CAAC,CAAC,CAAC,CAAC;IAChB,SAAS,CAAC,CAAC,CAAC,CAAC;IACb,aAAa,CAAC,CAAC,CAAC,CAAC;IACjB,UAAU,CAAC,CAAC,CAAC,CAAC;IACd,WAAW,CAAC,CAAC,CAAC,CAAC;IACf,WAAW,CAAC,CAAC,CAAC,CAAC;IACf,WAAW,CAAC,CAAC,CAAC,CAAC;IACf,SAAS,CAAC,CAAC,CAAC,CAAC;IACb,OAAO,CAAC,CAAC;AACX,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/routes/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAC3C,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACzC,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACnC,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AACrC,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AACvC,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AACvC,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAEtC,4GAA4G;AAC5G,MAAM,UAAU,SAAS;IACvB,MAAM,CAAC,GAAG,IAAI,MAAM,EAAO,CAAC;IAC5B,QAAQ,CAAC,CAAC,CAAC,CAAC;IACZ,YAAY,CAAC,CAAC,CAAC,CAAC;IAChB,SAAS,CAAC,CAAC,CAAC,CAAC;IACb,aAAa,CAAC,CAAC,CAAC,CAAC;IACjB,SAAS,CAAC,CAAC,CAAC,CAAC;IACb,cAAc,CAAC,CAAC,CAAC,CAAC;IAClB,UAAU,CAAC,CAAC,CAAC,CAAC;IACd,WAAW,CAAC,CAAC,CAAC,CAAC;IACf,YAAY,CAAC,CAAC,CAAC,CAAC;IAChB,YAAY,CAAC,CAAC,CAAC,CAAC;IAChB,SAAS,CAAC,CAAC,CAAC,CAAC;IACb,WAAW,CAAC,CAAC,CAAC,CAAC;IACf,WAAW,CAAC,CAAC,CAAC,CAAC;IACf,SAAS,CAAC,CAAC,CAAC,CAAC;IACb,WAAW,CAAC,CAAC,CAAC,CAAC;IACf,WAAW,CAAC,CAAC,CAAC,CAAC;IACf,YAAY,CAAC,CAAC,CAAC,CAAC;IAChB,YAAY,CAAC,CAAC,CAAC,CAAC;IAChB,SAAS,CAAC,CAAC,CAAC,CAAC;IACb,SAAS,CAAC,CAAC,CAAC,CAAC;IACb,eAAe,CAAC,CAAC,CAAC,CAAC;IACnB,aAAa,CAAC,CAAC,CAAC,CAAC;IACjB,UAAU,CAAC,CAAC,CAAC,CAAC;IACd,OAAO,CAAC,CAAC;AACX,CAAC"}
@@ -1,8 +1,10 @@
1
1
  import type { Ctx } from "../app.js";
2
2
  import type { RateLimiter } from "../http/limiter.js";
3
3
  import { type OtlpSignal } from "@wizeworks/lens-hub/kit";
4
+ /** The project of an ingest key, for calls that are not telemetry (source map uploads). */
5
+ export declare const ingestProject: (ctx: Ctx, limiter: RateLimiter) => Promise<string>;
4
6
  /** `POST api/ingest`: a WizeLens add-on batch. */
5
7
  export declare function ingestBatch(ctx: Ctx, limiter: RateLimiter): Promise<void>;
6
- /** `POST /v1/traces` and `/v1/logs`: OpenTelemetry apps. */
8
+ /** `POST /v1/traces`, `/v1/logs`, and `/v1/metrics`: OpenTelemetry apps and collectors. A key may be limited to some of them. */
7
9
  export declare function ingestOtlp(ctx: Ctx, signal: OtlpSignal, limiter: RateLimiter): Promise<void>;
8
10
  //# sourceMappingURL=ingest.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ingest.d.ts","sourceRoot":"","sources":["../../src/routes/ingest.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,WAAW,CAAC;AAErC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAGtD,OAAO,EAA6B,KAAK,UAAU,EAAoC,MAAM,yBAAyB,CAAC;AAevH,kDAAkD;AAClD,wBAAsB,WAAW,CAAC,GAAG,EAAE,GAAG,EAAE,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAW/E;AAED,4DAA4D;AAC5D,wBAAsB,UAAU,CAAC,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAGlG"}
1
+ {"version":3,"file":"ingest.d.ts","sourceRoot":"","sources":["../../src/routes/ingest.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,WAAW,CAAC;AAErC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAGtD,OAAO,EAA6B,KAAK,UAAU,EAAoC,MAAM,yBAAyB,CAAC;AAcvH,2FAA2F;AAC3F,eAAO,MAAM,aAAa,QAAe,GAAG,WAAW,WAAW,KAAG,OAAO,CAAC,MAAM,CAAmD,CAAC;AAmCvI,kDAAkD;AAClD,wBAAsB,WAAW,CAAC,GAAG,EAAE,GAAG,EAAE,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAgB/E;AAED,iIAAiI;AACjI,wBAAsB,UAAU,CAAC,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAOlG"}
@@ -1,38 +1,84 @@
1
- import { bearerOf, fail } from "../http/http.js";
2
- import { keyByToken } from "../repo/projects.js";
3
- import { writeBatch } from "../repo/trace-write.js";
1
+ import { Transform } from "node:stream";
2
+ import { annotateErrorFrames, redactSignals } from "@wizeworks/lens-core";
3
+ import { bearerOf, fail, sendJson } from "../http/http.js";
4
+ import { keyAllows, keyByToken } from "../repo/projects.js";
5
+ import { writeService } from "../repo/trace-write.js";
4
6
  import { handleOtlp, parseIngest, parseJson, readBody } from "@wizeworks/lens-hub/kit";
5
- /** The project an ingest key writes to. Add-ons send it as WIZELENS_HUB_TOKEN; OTLP apps as a bearer header. */
6
- async function ingestProject(ctx, limiter) {
7
+ /** The ingest key of the call. Add-ons send it as WIZELENS_HUB_TOKEN; OTLP apps as a bearer header. */
8
+ async function ingestKey(ctx, limiter) {
7
9
  const token = bearerOf(ctx.req);
8
10
  if (!token?.startsWith("wl_ik_"))
9
11
  return fail(401, "Send an ingest key: Authorization: Bearer wl_ik_...");
10
12
  const key = await keyByToken(ctx.app.db, token, ctx.app.config.now());
11
13
  if (!key || key.kind !== "ingest")
12
- return fail(401, "This ingest key is not valid.");
14
+ return fail(401, "This ingest key is not valid, or it expired.");
13
15
  if (!limiter.take(key.id))
14
16
  fail(429, "Too many calls for this key. Slow down and retry.");
15
- return key.projectIds[0];
17
+ return key;
16
18
  }
17
- const save = (ctx, projectId) => (w) => ctx.app.db.tx((q) => writeBatch(q, projectId, w, ctx.app.config.now()));
19
+ /** The project of an ingest key, for calls that are not telemetry (source map uploads). */
20
+ export const ingestProject = async (ctx, limiter) => (await ingestKey(ctx, limiter)).projectIds[0];
21
+ /** 429 when the organization reached its Free GB or its spend cap. Add-ons and OTLP exporters back off and retry. */
22
+ async function overLimit(ctx, orgId) {
23
+ const message = await ctx.app.billing.limits.blocked(orgId);
24
+ if (message)
25
+ sendJson(ctx.res, 429, { error: message }, { "Retry-After": "3600" });
26
+ return !!message;
27
+ }
28
+ /** The request body as sent (before gzip is undone), counted as it is read: what a GB means on the bill. */
29
+ function counted(req) {
30
+ let n = 0;
31
+ const pass = new Transform({ transform: (chunk, _enc, done) => ((n += chunk.length), done(null, chunk)) });
32
+ req.on("error", (err) => pass.destroy(err));
33
+ req.pipe(pass);
34
+ return { req: Object.assign(pass, { headers: req.headers, method: req.method, url: req.url }), bytes: () => n };
35
+ }
36
+ /** Only the signals the key may send, with the project's extra keys hidden too. */
37
+ async function allowed(ctx, key, w) {
38
+ const may = (s) => keyAllows(key, s);
39
+ const own = (await ctx.app.settings.get(key.projectIds[0])).redactKeys;
40
+ return redactSignals({ ...w, spans: may("traces") ? w.spans : [], logs: may("logs") ? w.logs : [], metrics: may("metrics") ? w.metrics : [] }, own);
41
+ }
42
+ /** The service registry stays in Postgres; spans, logs, and metrics go to the telemetry store. Each write is counted for usage. */
43
+ const save = (ctx, key) => async (raw) => {
44
+ const now = ctx.app.config.now();
45
+ const projectId = key.projectIds[0];
46
+ const w = await allowed(ctx, key, raw);
47
+ await writeService(ctx.app.db, projectId, w, now);
48
+ await ctx.app.telemetry.write(projectId, w, now);
49
+ ctx.app.billing.usage.add(key.orgId, { spans: w.spans.length, logs: w.logs.length, points: w.metrics?.length ?? 0 });
50
+ };
18
51
  /** `POST api/ingest`: a WizeLens add-on batch. */
19
52
  export async function ingestBatch(ctx, limiter) {
20
- const projectId = await ingestProject(ctx, limiter);
53
+ const key = await ingestKey(ctx, limiter);
54
+ if (await overLimit(ctx, key.orgId))
55
+ return;
56
+ const body = counted(ctx.req);
21
57
  let w;
22
58
  try {
23
- w = parseIngest(parseJson(await readBody(ctx.req)), ctx.app.config.redactKeys);
59
+ w = parseIngest(parseJson(await readBody(body.req)), ctx.app.config.redactKeys);
24
60
  }
25
61
  catch {
26
62
  return fail(400, "The body is not valid JSON.");
27
63
  }
28
64
  if (!w)
29
65
  fail(400, "sender.service is required.");
30
- await save(ctx, projectId)(w);
66
+ // Browser errors group by their original frame: add it with the project's uploaded maps before they are stored.
67
+ await annotateErrorFrames(w.spans, ctx.app.maps(key.projectIds[0]));
68
+ await save(ctx, key)(w);
69
+ ctx.app.billing.usage.add(key.orgId, { bytes: body.bytes() });
31
70
  ctx.res.writeHead(204).end();
32
71
  }
33
- /** `POST /v1/traces` and `/v1/logs`: OpenTelemetry apps. */
72
+ /** `POST /v1/traces`, `/v1/logs`, and `/v1/metrics`: OpenTelemetry apps and collectors. A key may be limited to some of them. */
34
73
  export async function ingestOtlp(ctx, signal, limiter) {
35
- const projectId = await ingestProject(ctx, limiter);
36
- await handleOtlp(signal, ctx.req, ctx.res, save(ctx, projectId), ctx.app.config.redactKeys);
74
+ const key = await ingestKey(ctx, limiter);
75
+ if (!keyAllows(key, signal))
76
+ fail(403, `This ingest key may not send ${signal}.`);
77
+ if (await overLimit(ctx, key.orgId))
78
+ return;
79
+ const body = counted(ctx.req);
80
+ await handleOtlp(signal, body.req, ctx.res, save(ctx, key), ctx.app.config.redactKeys);
81
+ if (ctx.res.statusCode === 200)
82
+ ctx.app.billing.usage.add(key.orgId, { bytes: body.bytes() });
37
83
  }
38
84
  //# sourceMappingURL=ingest.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ingest.js","sourceRoot":"","sources":["../../src/routes/ingest.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AAEjD,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjD,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACpD,OAAO,EAAE,UAAU,EAAkC,WAAW,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AAEvH,gHAAgH;AAChH,KAAK,UAAU,aAAa,CAAC,GAAQ,EAAE,OAAoB;IACzD,MAAM,KAAK,GAAG,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAChC,IAAI,CAAC,KAAK,EAAE,UAAU,CAAC,QAAQ,CAAC;QAAE,OAAO,IAAI,CAAC,GAAG,EAAE,qDAAqD,CAAC,CAAC;IAC1G,MAAM,GAAG,GAAG,MAAM,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,EAAE,KAAK,EAAE,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC;IACtE,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,IAAI,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC,GAAG,EAAE,+BAA+B,CAAC,CAAC;IACrF,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;QAAE,IAAI,CAAC,GAAG,EAAE,mDAAmD,CAAC,CAAC;IAC1F,OAAO,GAAG,CAAC,UAAU,CAAC,CAAC,CAAE,CAAC;AAC5B,CAAC;AAED,MAAM,IAAI,GAAG,CAAC,GAAQ,EAAE,SAAiB,EAAE,EAAE,CAAC,CAAC,CAAW,EAAE,EAAE,CAC5D,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;AAE1E,kDAAkD;AAClD,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,GAAQ,EAAE,OAAoB;IAC9D,MAAM,SAAS,GAAG,MAAM,aAAa,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;IACpD,IAAI,CAAkB,CAAC;IACvB,IAAI,CAAC;QACH,CAAC,GAAG,WAAW,CAAC,SAAS,CAAC,MAAM,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;IACjF,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC,GAAG,EAAE,6BAA6B,CAAC,CAAC;IAClD,CAAC;IACD,IAAI,CAAC,CAAC;QAAE,IAAI,CAAC,GAAG,EAAE,6BAA6B,CAAC,CAAC;IACjD,MAAM,IAAI,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC,CAAE,CAAC,CAAC;IAC/B,GAAG,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;AAC/B,CAAC;AAED,4DAA4D;AAC5D,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,GAAQ,EAAE,MAAkB,EAAE,OAAoB;IACjF,MAAM,SAAS,GAAG,MAAM,aAAa,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;IACpD,MAAM,UAAU,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,SAAS,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;AAC9F,CAAC"}
1
+ {"version":3,"file":"ingest.js","sourceRoot":"","sources":["../../src/routes/ingest.ts"],"names":[],"mappings":"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"}