@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.
- package/README.md +4 -0
- package/dist/alerts/evaluate.d.ts +6 -5
- package/dist/alerts/evaluate.d.ts.map +1 -1
- package/dist/alerts/evaluate.js +60 -28
- package/dist/alerts/evaluate.js.map +1 -1
- package/dist/alerts/problem-link.d.ts +12 -0
- package/dist/alerts/problem-link.d.ts.map +1 -0
- package/dist/alerts/problem-link.js +31 -0
- package/dist/alerts/problem-link.js.map +1 -0
- package/dist/app.d.ts +15 -0
- package/dist/app.d.ts.map +1 -1
- package/dist/auth/auth.d.ts +8 -2
- package/dist/auth/auth.d.ts.map +1 -1
- package/dist/auth/auth.js +25 -2
- package/dist/auth/auth.js.map +1 -1
- package/dist/auth/billing-hooks.d.ts +9 -0
- package/dist/auth/billing-hooks.d.ts.map +1 -0
- package/dist/auth/billing-hooks.js +49 -0
- package/dist/auth/billing-hooks.js.map +1 -0
- package/dist/auth/bridge.js +2 -2
- package/dist/auth/bridge.js.map +1 -1
- package/dist/auth/crypto.d.ts +2 -0
- package/dist/auth/crypto.d.ts.map +1 -1
- package/dist/auth/crypto.js +2 -2
- package/dist/auth/crypto.js.map +1 -1
- package/dist/auth/deps.d.ts +7 -0
- package/dist/auth/deps.d.ts.map +1 -1
- package/dist/auth/deps.js.map +1 -1
- package/dist/auth/hooks.d.ts.map +1 -1
- package/dist/auth/hooks.js +8 -1
- package/dist/auth/hooks.js.map +1 -1
- package/dist/auth/join-scope.d.ts +7 -0
- package/dist/auth/join-scope.d.ts.map +1 -0
- package/dist/auth/join-scope.js +21 -0
- package/dist/auth/join-scope.js.map +1 -0
- package/dist/auth/oauth-access.d.ts +8 -0
- package/dist/auth/oauth-access.d.ts.map +1 -0
- package/dist/auth/oauth-access.js +31 -0
- package/dist/auth/oauth-access.js.map +1 -0
- package/dist/auth/oauth-grant.d.ts +5 -0
- package/dist/auth/oauth-grant.d.ts.map +1 -0
- package/dist/auth/oauth-grant.js +79 -0
- package/dist/auth/oauth-grant.js.map +1 -0
- package/dist/auth/oauth-names.d.ts +104 -0
- package/dist/auth/oauth-names.d.ts.map +1 -0
- package/dist/auth/oauth-names.js +72 -0
- package/dist/auth/oauth-names.js.map +1 -0
- package/dist/auth/oauth.d.ts +17 -0
- package/dist/auth/oauth.d.ts.map +1 -0
- package/dist/auth/oauth.js +47 -0
- package/dist/auth/oauth.js.map +1 -0
- package/dist/auth/options.d.ts.map +1 -1
- package/dist/auth/options.js +2 -0
- package/dist/auth/options.js.map +1 -1
- package/dist/auth/plugins.d.ts.map +1 -1
- package/dist/auth/plugins.js +15 -1
- package/dist/auth/plugins.js.map +1 -1
- package/dist/auth/principal.d.ts +10 -1
- package/dist/auth/principal.d.ts.map +1 -1
- package/dist/auth/principal.js +8 -7
- package/dist/auth/principal.js.map +1 -1
- package/dist/auth/roles.d.ts +5 -2
- package/dist/auth/roles.d.ts.map +1 -1
- package/dist/auth/roles.js +1 -0
- package/dist/auth/roles.js.map +1 -1
- package/dist/auth/schema-names.d.ts +33 -0
- package/dist/auth/schema-names.d.ts.map +1 -1
- package/dist/auth/schema-names.js +23 -0
- package/dist/auth/schema-names.js.map +1 -1
- package/dist/auth/scim.d.ts +6 -0
- package/dist/auth/scim.d.ts.map +1 -0
- package/dist/auth/scim.js +56 -0
- package/dist/auth/scim.js.map +1 -0
- package/dist/auth/signup.d.ts.map +1 -1
- package/dist/auth/signup.js +5 -2
- package/dist/auth/signup.js.map +1 -1
- package/dist/auth/wire.d.ts +2 -1
- package/dist/auth/wire.d.ts.map +1 -1
- package/dist/auth/wire.js +4 -1
- package/dist/auth/wire.js.map +1 -1
- package/dist/billing/cli.d.ts +6 -0
- package/dist/billing/cli.d.ts.map +1 -0
- package/dist/billing/cli.js +54 -0
- package/dist/billing/cli.js.map +1 -0
- package/dist/billing/gate.d.ts +13 -0
- package/dist/billing/gate.d.ts.map +1 -0
- package/dist/billing/gate.js +27 -0
- package/dist/billing/gate.js.map +1 -0
- package/dist/billing/limits.d.ts +29 -0
- package/dist/billing/limits.d.ts.map +1 -0
- package/dist/billing/limits.js +69 -0
- package/dist/billing/limits.js.map +1 -0
- package/dist/billing/notices.d.ts +4 -0
- package/dist/billing/notices.d.ts.map +1 -0
- package/dist/billing/notices.js +40 -0
- package/dist/billing/notices.js.map +1 -0
- package/dist/billing/options.d.ts +37 -0
- package/dist/billing/options.d.ts.map +1 -0
- package/dist/billing/options.js +33 -0
- package/dist/billing/options.js.map +1 -0
- package/dist/billing/plans.d.ts +50 -0
- package/dist/billing/plans.d.ts.map +1 -0
- package/dist/billing/plans.js +47 -0
- package/dist/billing/plans.js.map +1 -0
- package/dist/billing/report.d.ts +26 -0
- package/dist/billing/report.d.ts.map +1 -0
- package/dist/billing/report.js +53 -0
- package/dist/billing/report.js.map +1 -0
- package/dist/billing/service.d.ts +20 -0
- package/dist/billing/service.d.ts.map +1 -0
- package/dist/billing/service.js +29 -0
- package/dist/billing/service.js.map +1 -0
- package/dist/billing/stripe-plugin.d.ts +14 -0
- package/dist/billing/stripe-plugin.d.ts.map +1 -0
- package/dist/billing/stripe-plugin.js +39 -0
- package/dist/billing/stripe-plugin.js.map +1 -0
- package/dist/billing/stripe-setup.d.ts +15 -0
- package/dist/billing/stripe-setup.d.ts.map +1 -0
- package/dist/billing/stripe-setup.js +73 -0
- package/dist/billing/stripe-setup.js.map +1 -0
- package/dist/billing/summary.d.ts +59 -0
- package/dist/billing/summary.d.ts.map +1 -0
- package/dist/billing/summary.js +50 -0
- package/dist/billing/summary.js.map +1 -0
- package/dist/billing/sync.d.ts +5 -0
- package/dist/billing/sync.d.ts.map +1 -0
- package/dist/billing/sync.js +35 -0
- package/dist/billing/sync.js.map +1 -0
- package/dist/billing/usage-sub.d.ts +17 -0
- package/dist/billing/usage-sub.d.ts.map +1 -0
- package/dist/billing/usage-sub.js +47 -0
- package/dist/billing/usage-sub.js.map +1 -0
- package/dist/billing/usage.d.ts +28 -0
- package/dist/billing/usage.d.ts.map +1 -0
- package/dist/billing/usage.js +80 -0
- package/dist/billing/usage.js.map +1 -0
- package/dist/billing/webhook.d.ts +6 -0
- package/dist/billing/webhook.d.ts.map +1 -0
- package/dist/billing/webhook.js +41 -0
- package/dist/billing/webhook.js.map +1 -0
- package/dist/changes.d.ts +15 -0
- package/dist/changes.d.ts.map +1 -0
- package/dist/changes.js +45 -0
- package/dist/changes.js.map +1 -0
- package/dist/cli-args.d.ts +1 -1
- package/dist/cli-args.d.ts.map +1 -1
- package/dist/cli-args.js +44 -2
- package/dist/cli-args.js.map +1 -1
- package/dist/cli.js +10 -0
- package/dist/cli.js.map +1 -1
- package/dist/config.d.ts +19 -3
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +21 -1
- package/dist/config.js.map +1 -1
- package/dist/copy-cli.d.ts +3 -0
- package/dist/copy-cli.d.ts.map +1 -0
- package/dist/copy-cli.js +24 -0
- package/dist/copy-cli.js.map +1 -0
- package/dist/db/db.d.ts +2 -0
- package/dist/db/db.d.ts.map +1 -1
- package/dist/db/db.js +15 -4
- package/dist/db/db.js.map +1 -1
- package/dist/db/schema-alerts.d.ts +2 -0
- package/dist/db/schema-alerts.d.ts.map +1 -0
- package/dist/db/schema-alerts.js +15 -0
- package/dist/db/schema-alerts.js.map +1 -0
- package/dist/db/schema-billing.d.ts +2 -0
- package/dist/db/schema-billing.d.ts.map +1 -0
- package/dist/db/schema-billing.js +38 -0
- package/dist/db/schema-billing.js.map +1 -0
- package/dist/db/schema-issues.d.ts +2 -0
- package/dist/db/schema-issues.d.ts.map +1 -0
- package/dist/db/schema-issues.js +9 -0
- package/dist/db/schema-issues.js.map +1 -0
- package/dist/db/schema-logs.d.ts +2 -0
- package/dist/db/schema-logs.d.ts.map +1 -0
- package/dist/db/schema-logs.js +13 -0
- package/dist/db/schema-logs.js.map +1 -0
- package/dist/db/schema-oauth.d.ts +2 -0
- package/dist/db/schema-oauth.d.ts.map +1 -0
- package/dist/db/schema-oauth.js +69 -0
- package/dist/db/schema-oauth.js.map +1 -0
- package/dist/db/schema-saved-move.d.ts +2 -0
- package/dist/db/schema-saved-move.d.ts.map +1 -0
- package/dist/db/schema-saved-move.js +13 -0
- package/dist/db/schema-saved-move.js.map +1 -0
- package/dist/db/schema-saved.d.ts +2 -0
- package/dist/db/schema-saved.d.ts.map +1 -0
- package/dist/db/schema-saved.js +13 -0
- package/dist/db/schema-saved.js.map +1 -0
- package/dist/db/schema-scim.d.ts +2 -0
- package/dist/db/schema-scim.d.ts.map +1 -0
- package/dist/db/schema-scim.js +28 -0
- package/dist/db/schema-scim.js.map +1 -0
- package/dist/db/schema-search.d.ts +2 -0
- package/dist/db/schema-search.d.ts.map +1 -0
- package/dist/db/schema-search.js +16 -0
- package/dist/db/schema-search.js.map +1 -0
- package/dist/db/schema-slos.d.ts +2 -0
- package/dist/db/schema-slos.d.ts.map +1 -0
- package/dist/db/schema-slos.js +12 -0
- package/dist/db/schema-slos.js.map +1 -0
- package/dist/db/schema-sourcemaps.d.ts +2 -0
- package/dist/db/schema-sourcemaps.d.ts.map +1 -0
- package/dist/db/schema-sourcemaps.js +9 -0
- package/dist/db/schema-sourcemaps.js.map +1 -0
- package/dist/db/schema-tags.d.ts +2 -0
- package/dist/db/schema-tags.d.ts.map +1 -0
- package/dist/db/schema-tags.js +12 -0
- package/dist/db/schema-tags.js.map +1 -0
- package/dist/db/schema-team.d.ts +2 -0
- package/dist/db/schema-team.d.ts.map +1 -0
- package/dist/db/schema-team.js +15 -0
- package/dist/db/schema-team.js.map +1 -0
- package/dist/db/schema-uptime.d.ts +2 -0
- package/dist/db/schema-uptime.d.ts.map +1 -0
- package/dist/db/schema-uptime.js +22 -0
- package/dist/db/schema-uptime.js.map +1 -0
- package/dist/db/schema.d.ts.map +1 -1
- package/dist/db/schema.js +32 -0
- package/dist/db/schema.js.map +1 -1
- package/dist/db/trigram.d.ts +4 -0
- package/dist/db/trigram.d.ts.map +1 -0
- package/dist/db/trigram.js +34 -0
- package/dist/db/trigram.js.map +1 -0
- package/dist/http/http.d.ts +5 -1
- package/dist/http/http.d.ts.map +1 -1
- package/dist/http/http.js +5 -1
- package/dist/http/http.js.map +1 -1
- package/dist/jobs.d.ts +1 -1
- package/dist/jobs.d.ts.map +1 -1
- package/dist/jobs.js +23 -9
- package/dist/jobs.js.map +1 -1
- package/dist/mail/blocks.d.ts +1 -1
- package/dist/mail/blocks.js +2 -2
- package/dist/mail/blocks.js.map +1 -1
- package/dist/mail/emails-billing.d.ts +17 -0
- package/dist/mail/emails-billing.d.ts.map +1 -0
- package/dist/mail/emails-billing.js +36 -0
- package/dist/mail/emails-billing.js.map +1 -0
- package/dist/mail/emails.d.ts +1 -1
- package/dist/mail/emails.d.ts.map +1 -1
- package/dist/mail/emails.js +7 -4
- package/dist/mail/emails.js.map +1 -1
- package/dist/mail/layout.d.ts +1 -1
- package/dist/mail/layout.d.ts.map +1 -1
- package/dist/mail/layout.js +2 -2
- package/dist/mail/layout.js.map +1 -1
- package/dist/mail/mailer.d.ts +1 -1
- package/dist/mail/mailer.d.ts.map +1 -1
- package/dist/mail/mailer.js +4 -3
- package/dist/mail/mailer.js.map +1 -1
- package/dist/mail/resend.d.ts +2 -0
- package/dist/mail/resend.d.ts.map +1 -1
- package/dist/mail/resend.js +1 -1
- package/dist/mail/resend.js.map +1 -1
- package/dist/mail/samples.d.ts.map +1 -1
- package/dist/mail/samples.js +17 -0
- package/dist/mail/samples.js.map +1 -1
- package/dist/mail/templates.d.ts +1 -1
- package/dist/mail/templates.d.ts.map +1 -1
- package/dist/mail/theme.d.ts +7 -1
- package/dist/mail/theme.d.ts.map +1 -1
- package/dist/mail/theme.js +7 -1
- package/dist/mail/theme.js.map +1 -1
- package/dist/notify/digest-data.d.ts +2 -1
- package/dist/notify/digest-data.d.ts.map +1 -1
- package/dist/notify/digest-data.js +5 -11
- package/dist/notify/digest-data.js.map +1 -1
- package/dist/notify/digest.d.ts.map +1 -1
- package/dist/notify/digest.js +5 -2
- package/dist/notify/digest.js.map +1 -1
- package/dist/notify/health.d.ts.map +1 -1
- package/dist/notify/health.js +4 -5
- package/dist/notify/health.js.map +1 -1
- package/dist/notify/team-describe.d.ts.map +1 -1
- package/dist/notify/team-describe.js +14 -0
- package/dist/notify/team-describe.js.map +1 -1
- package/dist/repo/alert-events.d.ts +38 -0
- package/dist/repo/alert-events.d.ts.map +1 -0
- package/dist/repo/alert-events.js +29 -0
- package/dist/repo/alert-events.js.map +1 -0
- package/dist/repo/alerts.d.ts +14 -44
- package/dist/repo/alerts.d.ts.map +1 -1
- package/dist/repo/alerts.js +35 -13
- package/dist/repo/alerts.js.map +1 -1
- package/dist/repo/audit.d.ts +19 -1
- package/dist/repo/audit.d.ts.map +1 -1
- package/dist/repo/audit.js +24 -2
- package/dist/repo/audit.js.map +1 -1
- package/dist/repo/auth-prune.d.ts +1 -1
- package/dist/repo/auth-prune.d.ts.map +1 -1
- package/dist/repo/auth-prune.js +13 -1
- package/dist/repo/auth-prune.js.map +1 -1
- package/dist/repo/billing.d.ts +30 -0
- package/dist/repo/billing.d.ts.map +1 -0
- package/dist/repo/billing.js +47 -0
- package/dist/repo/billing.js.map +1 -0
- package/dist/repo/grants.d.ts +30 -0
- package/dist/repo/grants.d.ts.map +1 -0
- package/dist/repo/grants.js +57 -0
- package/dist/repo/grants.js.map +1 -0
- package/dist/repo/issues.d.ts +15 -0
- package/dist/repo/issues.d.ts.map +1 -0
- package/dist/repo/issues.js +31 -0
- package/dist/repo/issues.js.map +1 -0
- package/dist/repo/keys.d.ts +51 -0
- package/dist/repo/keys.d.ts.map +1 -0
- package/dist/repo/keys.js +58 -0
- package/dist/repo/keys.js.map +1 -0
- package/dist/repo/log-retention.d.ts +8 -0
- package/dist/repo/log-retention.d.ts.map +1 -0
- package/dist/repo/log-retention.js +20 -0
- package/dist/repo/log-retention.js.map +1 -0
- package/dist/repo/metric-read.d.ts +2 -0
- package/dist/repo/metric-read.d.ts.map +1 -1
- package/dist/repo/metric-read.js +5 -1
- package/dist/repo/metric-read.js.map +1 -1
- package/dist/repo/metric-write.d.ts.map +1 -1
- package/dist/repo/metric-write.js +3 -2
- package/dist/repo/metric-write.js.map +1 -1
- package/dist/repo/orgs.d.ts +2 -0
- package/dist/repo/orgs.d.ts.map +1 -1
- package/dist/repo/orgs.js +5 -1
- package/dist/repo/orgs.js.map +1 -1
- package/dist/repo/project-roles.d.ts +28 -0
- package/dist/repo/project-roles.d.ts.map +1 -0
- package/dist/repo/project-roles.js +39 -0
- package/dist/repo/project-roles.js.map +1 -0
- package/dist/repo/projects.d.ts +3 -22
- package/dist/repo/projects.d.ts.map +1 -1
- package/dist/repo/projects.js +4 -29
- package/dist/repo/projects.js.map +1 -1
- package/dist/repo/saved.d.ts +9 -0
- package/dist/repo/saved.d.ts.map +1 -0
- package/dist/repo/saved.js +29 -0
- package/dist/repo/saved.js.map +1 -0
- package/dist/repo/scim-tokens.d.ts +20 -0
- package/dist/repo/scim-tokens.d.ts.map +1 -0
- package/dist/repo/scim-tokens.js +32 -0
- package/dist/repo/scim-tokens.js.map +1 -0
- package/dist/repo/services.d.ts +6 -0
- package/dist/repo/services.d.ts.map +1 -0
- package/dist/repo/services.js +17 -0
- package/dist/repo/services.js.map +1 -0
- package/dist/repo/settings.d.ts +30 -0
- package/dist/repo/settings.d.ts.map +1 -0
- package/dist/repo/settings.js +55 -0
- package/dist/repo/settings.js.map +1 -0
- package/dist/repo/slos.d.ts +10 -0
- package/dist/repo/slos.d.ts.map +1 -0
- package/dist/repo/slos.js +27 -0
- package/dist/repo/slos.js.map +1 -0
- package/dist/repo/sourcemaps.d.ts +9 -0
- package/dist/repo/sourcemaps.d.ts.map +1 -0
- package/dist/repo/sourcemaps.js +34 -0
- package/dist/repo/sourcemaps.js.map +1 -0
- package/dist/repo/tags.d.ts +11 -0
- package/dist/repo/tags.d.ts.map +1 -0
- package/dist/repo/tags.js +33 -0
- package/dist/repo/tags.js.map +1 -0
- package/dist/repo/trace-join.d.ts +9 -0
- package/dist/repo/trace-join.d.ts.map +1 -0
- package/dist/repo/trace-join.js +35 -0
- package/dist/repo/trace-join.js.map +1 -0
- package/dist/repo/trace-read.d.ts +6 -13
- package/dist/repo/trace-read.d.ts.map +1 -1
- package/dist/repo/trace-read.js +11 -4
- package/dist/repo/trace-read.js.map +1 -1
- package/dist/repo/trace-write.d.ts +6 -2
- package/dist/repo/trace-write.d.ts.map +1 -1
- package/dist/repo/trace-write.js +22 -7
- package/dist/repo/trace-write.js.map +1 -1
- package/dist/repo/uptime.d.ts +21 -0
- package/dist/repo/uptime.d.ts.map +1 -0
- package/dist/repo/uptime.js +53 -0
- package/dist/repo/uptime.js.map +1 -0
- package/dist/routes/alerts.d.ts.map +1 -1
- package/dist/routes/alerts.js +65 -66
- package/dist/routes/alerts.js.map +1 -1
- package/dist/routes/apps.d.ts +20 -0
- package/dist/routes/apps.d.ts.map +1 -0
- package/dist/routes/apps.js +53 -0
- package/dist/routes/apps.js.map +1 -0
- package/dist/routes/billing.d.ts +4 -0
- package/dist/routes/billing.d.ts.map +1 -0
- package/dist/routes/billing.js +51 -0
- package/dist/routes/billing.js.map +1 -0
- package/dist/routes/changes.d.ts +4 -0
- package/dist/routes/changes.d.ts.map +1 -0
- package/dist/routes/changes.js +19 -0
- package/dist/routes/changes.js.map +1 -0
- package/dist/routes/data.d.ts.map +1 -1
- package/dist/routes/data.js +38 -14
- package/dist/routes/data.js.map +1 -1
- package/dist/routes/index.d.ts.map +1 -1
- package/dist/routes/index.js +28 -0
- package/dist/routes/index.js.map +1 -1
- package/dist/routes/ingest.d.ts +3 -1
- package/dist/routes/ingest.d.ts.map +1 -1
- package/dist/routes/ingest.js +60 -14
- package/dist/routes/ingest.js.map +1 -1
- package/dist/routes/issues.d.ts +4 -0
- package/dist/routes/issues.d.ts.map +1 -0
- package/dist/routes/issues.js +34 -0
- package/dist/routes/issues.js.map +1 -0
- package/dist/routes/keys.d.ts +4 -0
- package/dist/routes/keys.d.ts.map +1 -0
- package/dist/routes/keys.js +70 -0
- package/dist/routes/keys.js.map +1 -0
- package/dist/routes/mcp.d.ts.map +1 -1
- package/dist/routes/mcp.js +85 -31
- package/dist/routes/mcp.js.map +1 -1
- package/dist/routes/me.d.ts.map +1 -1
- package/dist/routes/me.js +15 -5
- package/dist/routes/me.js.map +1 -1
- package/dist/routes/metrics.d.ts +2 -2
- package/dist/routes/metrics.d.ts.map +1 -1
- package/dist/routes/metrics.js +3 -4
- package/dist/routes/metrics.js.map +1 -1
- package/dist/routes/models.d.ts +9 -1
- package/dist/routes/models.d.ts.map +1 -1
- package/dist/routes/models.js +62 -21
- package/dist/routes/models.js.map +1 -1
- package/dist/routes/notify.d.ts.map +1 -1
- package/dist/routes/notify.js +3 -1
- package/dist/routes/notify.js.map +1 -1
- package/dist/routes/oauth-meta.d.ts +7 -0
- package/dist/routes/oauth-meta.d.ts.map +1 -0
- package/dist/routes/oauth-meta.js +52 -0
- package/dist/routes/oauth-meta.js.map +1 -0
- package/dist/routes/orgs.d.ts.map +1 -1
- package/dist/routes/orgs.js +27 -7
- package/dist/routes/orgs.js.map +1 -1
- package/dist/routes/projects.d.ts.map +1 -1
- package/dist/routes/projects.js +32 -22
- package/dist/routes/projects.js.map +1 -1
- package/dist/routes/saved.d.ts +4 -0
- package/dist/routes/saved.d.ts.map +1 -0
- package/dist/routes/saved.js +56 -0
- package/dist/routes/saved.js.map +1 -0
- package/dist/routes/scim.d.ts +4 -0
- package/dist/routes/scim.d.ts.map +1 -0
- package/dist/routes/scim.js +37 -0
- package/dist/routes/scim.js.map +1 -0
- package/dist/routes/search.d.ts +4 -0
- package/dist/routes/search.d.ts.map +1 -0
- package/dist/routes/search.js +36 -0
- package/dist/routes/search.js.map +1 -0
- package/dist/routes/settings.d.ts +4 -0
- package/dist/routes/settings.d.ts.map +1 -0
- package/dist/routes/settings.js +39 -0
- package/dist/routes/settings.js.map +1 -0
- package/dist/routes/shares.d.ts +3 -0
- package/dist/routes/shares.d.ts.map +1 -1
- package/dist/routes/shares.js +34 -18
- package/dist/routes/shares.js.map +1 -1
- package/dist/routes/slos.d.ts +4 -0
- package/dist/routes/slos.d.ts.map +1 -0
- package/dist/routes/slos.js +76 -0
- package/dist/routes/slos.js.map +1 -0
- package/dist/routes/sourcemaps.d.ts +9 -0
- package/dist/routes/sourcemaps.d.ts.map +1 -0
- package/dist/routes/sourcemaps.js +54 -0
- package/dist/routes/sourcemaps.js.map +1 -0
- package/dist/routes/status.d.ts +4 -0
- package/dist/routes/status.d.ts.map +1 -0
- package/dist/routes/status.js +60 -0
- package/dist/routes/status.js.map +1 -0
- package/dist/routes/tags.d.ts +4 -0
- package/dist/routes/tags.d.ts.map +1 -0
- package/dist/routes/tags.js +81 -0
- package/dist/routes/tags.js.map +1 -0
- package/dist/routes/uptime.d.ts +4 -0
- package/dist/routes/uptime.d.ts.map +1 -0
- package/dist/routes/uptime.js +71 -0
- package/dist/routes/uptime.js.map +1 -0
- package/dist/scale-exec.d.ts +3 -2
- package/dist/scale-exec.d.ts.map +1 -1
- package/dist/scale-exec.js +5 -4
- package/dist/scale-exec.js.map +1 -1
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +45 -10
- package/dist/server.js.map +1 -1
- package/dist/settle.d.ts +13 -9
- package/dist/settle.d.ts.map +1 -1
- package/dist/settle.js +40 -20
- package/dist/settle.js.map +1 -1
- package/dist/telemetry/cached.d.ts +11 -0
- package/dist/telemetry/cached.d.ts.map +1 -0
- package/dist/telemetry/cached.js +30 -0
- package/dist/telemetry/cached.js.map +1 -0
- package/dist/telemetry/ch/admin.d.ts +14 -0
- package/dist/telemetry/ch/admin.d.ts.map +1 -0
- package/dist/telemetry/ch/admin.js +82 -0
- package/dist/telemetry/ch/admin.js.map +1 -0
- package/dist/telemetry/ch/http.d.ts +19 -0
- package/dist/telemetry/ch/http.d.ts.map +1 -0
- package/dist/telemetry/ch/http.js +91 -0
- package/dist/telemetry/ch/http.js.map +1 -0
- package/dist/telemetry/ch/metrics.d.ts +10 -0
- package/dist/telemetry/ch/metrics.d.ts.map +1 -0
- package/dist/telemetry/ch/metrics.js +61 -0
- package/dist/telemetry/ch/metrics.js.map +1 -0
- package/dist/telemetry/ch/queries.d.ts +19 -0
- package/dist/telemetry/ch/queries.d.ts.map +1 -0
- package/dist/telemetry/ch/queries.js +30 -0
- package/dist/telemetry/ch/queries.js.map +1 -0
- package/dist/telemetry/ch/queue.d.ts +36 -0
- package/dist/telemetry/ch/queue.d.ts.map +1 -0
- package/dist/telemetry/ch/queue.js +83 -0
- package/dist/telemetry/ch/queue.js.map +1 -0
- package/dist/telemetry/ch/read.d.ts +12 -0
- package/dist/telemetry/ch/read.d.ts.map +1 -0
- package/dist/telemetry/ch/read.js +74 -0
- package/dist/telemetry/ch/read.js.map +1 -0
- package/dist/telemetry/ch/rebuild.d.ts +23 -0
- package/dist/telemetry/ch/rebuild.d.ts.map +1 -0
- package/dist/telemetry/ch/rebuild.js +65 -0
- package/dist/telemetry/ch/rebuild.js.map +1 -0
- package/dist/telemetry/ch/schema-facts.d.ts +6 -0
- package/dist/telemetry/ch/schema-facts.d.ts.map +1 -0
- package/dist/telemetry/ch/schema-facts.js +55 -0
- package/dist/telemetry/ch/schema-facts.js.map +1 -0
- package/dist/telemetry/ch/schema-raw.d.ts +10 -0
- package/dist/telemetry/ch/schema-raw.d.ts.map +1 -0
- package/dist/telemetry/ch/schema-raw.js +37 -0
- package/dist/telemetry/ch/schema-raw.js.map +1 -0
- package/dist/telemetry/ch/schema-rollups.d.ts +2 -0
- package/dist/telemetry/ch/schema-rollups.d.ts.map +1 -0
- package/dist/telemetry/ch/schema-rollups.js +61 -0
- package/dist/telemetry/ch/schema-rollups.js.map +1 -0
- package/dist/telemetry/ch/schema.d.ts +12 -0
- package/dist/telemetry/ch/schema.d.ts.map +1 -0
- package/dist/telemetry/ch/schema.js +25 -0
- package/dist/telemetry/ch/schema.js.map +1 -0
- package/dist/telemetry/ch/settle-pool.d.ts +24 -0
- package/dist/telemetry/ch/settle-pool.d.ts.map +1 -0
- package/dist/telemetry/ch/settle-pool.js +58 -0
- package/dist/telemetry/ch/settle-pool.js.map +1 -0
- package/dist/telemetry/ch/settle-rows.d.ts +16 -0
- package/dist/telemetry/ch/settle-rows.d.ts.map +1 -0
- package/dist/telemetry/ch/settle-rows.js +74 -0
- package/dist/telemetry/ch/settle-rows.js.map +1 -0
- package/dist/telemetry/ch/settle-work.d.ts +21 -0
- package/dist/telemetry/ch/settle-work.d.ts.map +1 -0
- package/dist/telemetry/ch/settle-work.js +52 -0
- package/dist/telemetry/ch/settle-work.js.map +1 -0
- package/dist/telemetry/ch/settle-worker.d.ts +2 -0
- package/dist/telemetry/ch/settle-worker.d.ts.map +1 -0
- package/dist/telemetry/ch/settle-worker.js +10 -0
- package/dist/telemetry/ch/settle-worker.js.map +1 -0
- package/dist/telemetry/ch/settle.d.ts +21 -0
- package/dist/telemetry/ch/settle.d.ts.map +1 -0
- package/dist/telemetry/ch/settle.js +55 -0
- package/dist/telemetry/ch/settle.js.map +1 -0
- package/dist/telemetry/ch/store.d.ts +27 -0
- package/dist/telemetry/ch/store.d.ts.map +1 -0
- package/dist/telemetry/ch/store.js +94 -0
- package/dist/telemetry/ch/store.js.map +1 -0
- package/dist/telemetry/ch/util.d.ts +27 -0
- package/dist/telemetry/ch/util.d.ts.map +1 -0
- package/dist/telemetry/ch/util.js +49 -0
- package/dist/telemetry/ch/util.js.map +1 -0
- package/dist/telemetry/ch/write.d.ts +12 -0
- package/dist/telemetry/ch/write.d.ts.map +1 -0
- package/dist/telemetry/ch/write.js +59 -0
- package/dist/telemetry/ch/write.js.map +1 -0
- package/dist/telemetry/copy.d.ts +9 -0
- package/dist/telemetry/copy.d.ts.map +1 -0
- package/dist/telemetry/copy.js +60 -0
- package/dist/telemetry/copy.js.map +1 -0
- package/dist/telemetry/index.d.ts +14 -0
- package/dist/telemetry/index.d.ts.map +1 -0
- package/dist/telemetry/index.js +26 -0
- package/dist/telemetry/index.js.map +1 -0
- package/dist/telemetry/pg-store.d.ts +5 -0
- package/dist/telemetry/pg-store.d.ts.map +1 -0
- package/dist/telemetry/pg-store.js +83 -0
- package/dist/telemetry/pg-store.js.map +1 -0
- package/dist/telemetry/store.d.ts +85 -0
- package/dist/telemetry/store.d.ts.map +1 -0
- package/dist/telemetry/store.js +2 -0
- package/dist/telemetry/store.js.map +1 -0
- package/dist/uptime/headers.d.ts +6 -0
- package/dist/uptime/headers.d.ts.map +1 -0
- package/dist/uptime/headers.js +25 -0
- package/dist/uptime/headers.js.map +1 -0
- package/dist/uptime/run.d.ts +9 -0
- package/dist/uptime/run.d.ts.map +1 -0
- package/dist/uptime/run.js +40 -0
- package/dist/uptime/run.js.map +1 -0
- package/package.json +10 -5
- package/dist/alerts/notify.d.ts +0 -28
- package/dist/alerts/notify.d.ts.map +0 -1
- package/dist/alerts/notify.js +0 -52
- package/dist/alerts/notify.js.map +0 -1
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
import { parseCheckInput, shownHeaders, UPTIME_LIMITS, uptimeList } from "@wizeworks/lens-core";
|
|
2
|
+
import { requireProject } from "../auth/principal.js";
|
|
3
|
+
import { fail, readJsonBody, sendJson } from "../http/http.js";
|
|
4
|
+
import { audit } from "../repo/audit.js";
|
|
5
|
+
import { checkById, countChecks, createCheck, deleteCheck, listChecks, listIncidents, updateCheck } from "../repo/uptime.js";
|
|
6
|
+
import { checkUrlProblem, runCloudCheck } from "../uptime/run.js";
|
|
7
|
+
const shown = (c) => c && { ...c, headers: shownHeaders(c.headers) };
|
|
8
|
+
/** The URL as the audit log keeps it: no query string. */
|
|
9
|
+
const urlOf = (url) => url.split("?")[0];
|
|
10
|
+
/** A check from the body, with the same rules as the hub, and an address the cloud may call. */
|
|
11
|
+
async function inputOf(ctx, current) {
|
|
12
|
+
const parsed = parseCheckInput(await readJsonBody(ctx.req), current);
|
|
13
|
+
if (!parsed.ok)
|
|
14
|
+
return fail(400, parsed.error);
|
|
15
|
+
const problem = await checkUrlProblem(parsed.input.url, ctx.app.config.allowPrivateWebhooks);
|
|
16
|
+
if (problem)
|
|
17
|
+
fail(400, `${parsed.input.url}: ${problem}`);
|
|
18
|
+
return parsed.input;
|
|
19
|
+
}
|
|
20
|
+
async function list(ctx) {
|
|
21
|
+
const { project } = await requireProject(ctx, ctx.params.project);
|
|
22
|
+
const now = ctx.app.config.now();
|
|
23
|
+
const checks = await listChecks(ctx.app.db, ctx.app.secrets, project.id);
|
|
24
|
+
sendJson(ctx.res, 200, uptimeList(checks, await listIncidents(ctx.app.db, project.id, now), now));
|
|
25
|
+
}
|
|
26
|
+
async function create(ctx) {
|
|
27
|
+
const { project, actor } = await requireProject(ctx, ctx.params.project, "write");
|
|
28
|
+
if ((await countChecks(ctx.app.db, project.id)) >= UPTIME_LIMITS.maxChecks)
|
|
29
|
+
fail(400, `A project runs at most ${UPTIME_LIMITS.maxChecks} checks.`);
|
|
30
|
+
const input = await inputOf(ctx);
|
|
31
|
+
const now = ctx.app.config.now();
|
|
32
|
+
const id = await createCheck(ctx.app.db, ctx.app.secrets, project.id, input, actor, now);
|
|
33
|
+
await audit(ctx.app.db, project.orgId, actor, "uptime.create", { projectId: project.id, checkId: id, name: input.name, url: urlOf(input.url) }, now);
|
|
34
|
+
sendJson(ctx.res, 201, shown(await checkById(ctx.app.db, ctx.app.secrets, project.id, id)));
|
|
35
|
+
}
|
|
36
|
+
/** The check named in the path, with write access checked. */
|
|
37
|
+
async function writable(ctx) {
|
|
38
|
+
const access = await requireProject(ctx, ctx.params.project, "write");
|
|
39
|
+
const check = await checkById(ctx.app.db, ctx.app.secrets, access.project.id, ctx.params.id);
|
|
40
|
+
if (!check)
|
|
41
|
+
return fail(404, "Check not found.");
|
|
42
|
+
return { ...access, check };
|
|
43
|
+
}
|
|
44
|
+
async function change(ctx) {
|
|
45
|
+
const { project, actor, check } = await writable(ctx);
|
|
46
|
+
const input = await inputOf(ctx, check);
|
|
47
|
+
const now = ctx.app.config.now();
|
|
48
|
+
await updateCheck(ctx.app.db, ctx.app.secrets, check, input, now);
|
|
49
|
+
await audit(ctx.app.db, project.orgId, actor, "uptime.update", { projectId: project.id, checkId: check.id, name: input.name, url: urlOf(input.url), enabled: input.enabled }, now);
|
|
50
|
+
sendJson(ctx.res, 200, shown(await checkById(ctx.app.db, ctx.app.secrets, project.id, check.id)));
|
|
51
|
+
}
|
|
52
|
+
async function remove(ctx) {
|
|
53
|
+
const { project, actor, check } = await writable(ctx);
|
|
54
|
+
await deleteCheck(ctx.app.db, project.id, check.id);
|
|
55
|
+
await audit(ctx.app.db, project.orgId, actor, "uptime.delete", { projectId: project.id, checkId: check.id, name: check.name }, ctx.app.config.now());
|
|
56
|
+
sendJson(ctx.res, 200, { ok: true });
|
|
57
|
+
}
|
|
58
|
+
/** Run a check now, for "does it work?" after a change. */
|
|
59
|
+
async function runNow(ctx) {
|
|
60
|
+
const { project, check } = await writable(ctx);
|
|
61
|
+
await runCloudCheck(ctx.app, check);
|
|
62
|
+
sendJson(ctx.res, 200, shown(await checkById(ctx.app.db, ctx.app.secrets, project.id, check.id)));
|
|
63
|
+
}
|
|
64
|
+
export function uptimeRoutes(r) {
|
|
65
|
+
r.on("GET", "api/projects/:project/uptime", list)
|
|
66
|
+
.on("POST", "api/projects/:project/uptime", create)
|
|
67
|
+
.on("PATCH", "api/projects/:project/uptime/:id", change)
|
|
68
|
+
.on("DELETE", "api/projects/:project/uptime/:id", remove)
|
|
69
|
+
.on("POST", "api/projects/:project/uptime/:id/run", runNow);
|
|
70
|
+
}
|
|
71
|
+
//# sourceMappingURL=uptime.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"uptime.js","sourceRoot":"","sources":["../../src/routes/uptime.ts"],"names":[],"mappings":"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"}
|
package/dist/scale-exec.d.ts
CHANGED
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
import { type Executor, type SqlRunner } from "@wizeworks/lens-core";
|
|
2
2
|
import type { Queryable } from "./db/db.js";
|
|
3
|
+
import type { SettlingScope } from "./telemetry/store.js";
|
|
3
4
|
/** Reads for the SQL executor, on the cloud database. */
|
|
4
5
|
export declare const pgRunner: (q: Queryable) => SqlRunner;
|
|
5
6
|
/** How long a project's organization keeps data, in ms; `fallbackDays` when the project has no organization. */
|
|
6
7
|
export declare function projectRetentionMs(q: Queryable, projectId: string, fallbackDays: number): Promise<number>;
|
|
7
8
|
/** Page needs from a project's stats tables, optionally one environment. The 1 h tier keeps the organization's retention. */
|
|
8
9
|
export declare function cloudExecutor(q: Queryable, projectId: string, retentionMs: number, env?: string): Executor;
|
|
9
|
-
/** Traces of a project still waiting for their stats,
|
|
10
|
-
export declare function cloudSettling(q: Queryable, projectId: string,
|
|
10
|
+
/** Traces of a project still waiting for their stats, optionally only those last written at or before `before`. Null when none. */
|
|
11
|
+
export declare function cloudSettling(q: Queryable, projectId: string, o?: SettlingScope): Promise<number | null>;
|
|
11
12
|
//# sourceMappingURL=scale-exec.d.ts.map
|
package/dist/scale-exec.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scale-exec.d.ts","sourceRoot":"","sources":["../src/scale-exec.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,QAAQ,EAAc,KAAK,SAAS,EAAe,MAAM,sBAAsB,CAAC;AAC9F,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"scale-exec.d.ts","sourceRoot":"","sources":["../src/scale-exec.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,QAAQ,EAAc,KAAK,SAAS,EAAe,MAAM,sBAAsB,CAAC;AAC9F,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAE5C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAK1D,yDAAyD;AACzD,eAAO,MAAM,QAAQ,MAAO,SAAS,KAAG,SAA2F,CAAC;AAEpI,gHAAgH;AAChH,wBAAsB,kBAAkB,CAAC,CAAC,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAG/G;AAED,6HAA6H;AAC7H,wBAAgB,aAAa,CAAC,CAAC,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,QAAQ,CAQ1G;AAED,mIAAmI;AACnI,wBAAsB,aAAa,CAAC,CAAC,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC,GAAE,aAAkB,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAMlH"}
|
package/dist/scale-exec.js
CHANGED
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
import { PG_DIALECT, sqlExecutor } from "@wizeworks/lens-core";
|
|
2
2
|
import { getTrace } from "./repo/trace-read.js";
|
|
3
|
+
import { KEEP_DAYS } from "./repo/settings.js";
|
|
3
4
|
const DAY_MS = 86_400_000;
|
|
4
5
|
/** Reads for the SQL executor, on the cloud database. */
|
|
5
6
|
export const pgRunner = (q) => ({ all: (sql, params) => q.query(sql, [...params]) });
|
|
6
7
|
/** How long a project's organization keeps data, in ms; `fallbackDays` when the project has no organization. */
|
|
7
8
|
export async function projectRetentionMs(q, projectId, fallbackDays) {
|
|
8
|
-
const [row] = await q.query(
|
|
9
|
+
const [row] = await q.query(`SELECT ${KEEP_DAYS} AS d FROM projects p JOIN orgs o ON o.id = p.org_id WHERE p.id = $1`, [projectId]);
|
|
9
10
|
return (row?.d ?? fallbackDays) * DAY_MS;
|
|
10
11
|
}
|
|
11
12
|
/** Page needs from a project's stats tables, optionally one environment. The 1 h tier keeps the organization's retention. */
|
|
@@ -18,9 +19,9 @@ export function cloudExecutor(q, projectId, retentionMs, env) {
|
|
|
18
19
|
loadTrace: async (id) => (await getTrace(q, projectId, id)) ?? null,
|
|
19
20
|
});
|
|
20
21
|
}
|
|
21
|
-
/** Traces of a project still waiting for their stats,
|
|
22
|
-
export async function cloudSettling(q, projectId,
|
|
23
|
-
const [row] = await q.query("SELECT count(*)::int AS n FROM traces WHERE project_id = $1 AND settled_ms < updated_ms AND ($2::text = '' OR env = $2::text)", [projectId, env ?? ""]);
|
|
22
|
+
/** Traces of a project still waiting for their stats, optionally only those last written at or before `before`. Null when none. */
|
|
23
|
+
export async function cloudSettling(q, projectId, o = {}) {
|
|
24
|
+
const [row] = await q.query("SELECT count(*)::int AS n FROM traces WHERE project_id = $1 AND settled_ms < updated_ms AND ($2::text = '' OR env = $2::text) AND ($3::float8 IS NULL OR updated_ms <= $3::float8)", [projectId, o.env ?? "", o.before ?? null]);
|
|
24
25
|
return row?.n || null;
|
|
25
26
|
}
|
|
26
27
|
//# sourceMappingURL=scale-exec.js.map
|
package/dist/scale-exec.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scale-exec.js","sourceRoot":"","sources":["../src/scale-exec.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,UAAU,EAAkB,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAE9F,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAEhD,MAAM,MAAM,GAAG,UAAU,CAAC;AAE1B,yDAAyD;AACzD,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,CAAY,EAAa,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAA0B,GAAG,EAAE,CAAC,GAAG,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC;AAEpI,gHAAgH;AAChH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,CAAY,EAAE,SAAiB,EAAE,YAAoB;IAC5F,MAAM,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC,KAAK,CAAgB,
|
|
1
|
+
{"version":3,"file":"scale-exec.js","sourceRoot":"","sources":["../src/scale-exec.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,UAAU,EAAkB,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAE9F,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAEhD,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAE/C,MAAM,MAAM,GAAG,UAAU,CAAC;AAE1B,yDAAyD;AACzD,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,CAAY,EAAa,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAA0B,GAAG,EAAE,CAAC,GAAG,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC;AAEpI,gHAAgH;AAChH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,CAAY,EAAE,SAAiB,EAAE,YAAoB;IAC5F,MAAM,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC,KAAK,CAAgB,UAAU,SAAS,sEAAsE,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC;IACnJ,OAAO,CAAC,GAAG,EAAE,CAAC,IAAI,YAAY,CAAC,GAAG,MAAM,CAAC;AAC3C,CAAC;AAED,6HAA6H;AAC7H,MAAM,UAAU,aAAa,CAAC,CAAY,EAAE,SAAiB,EAAE,WAAmB,EAAE,GAAY;IAC9F,OAAO,WAAW,CAAC;QACjB,CAAC,EAAE,UAAU;QACb,GAAG,EAAE,QAAQ,CAAC,CAAC,CAAC;QAChB,KAAK,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,EAAE;QAClC,WAAW;QACX,SAAS,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,MAAM,QAAQ,CAAC,CAAC,EAAE,SAAS,EAAE,EAAE,CAAC,CAAC,IAAI,IAAI;KACpE,CAAC,CAAC;AACL,CAAC;AAED,mIAAmI;AACnI,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,CAAY,EAAE,SAAiB,EAAE,CAAC,GAAkB,EAAE;IACxF,MAAM,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC,KAAK,CACzB,oLAAoL,EACpL,CAAC,SAAS,EAAE,CAAC,CAAC,GAAG,IAAI,EAAE,EAAE,CAAC,CAAC,MAAM,IAAI,IAAI,CAAC,CAC3C,CAAC;IACF,OAAO,GAAG,EAAE,CAAC,IAAI,IAAI,CAAC;AACxB,CAAC"}
|
package/dist/server.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AACA,OAAO,EAAsC,KAAK,MAAM,EAAuB,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AACA,OAAO,EAAsC,KAAK,MAAM,EAAuB,MAAM,WAAW,CAAC;AAKjG,OAAO,KAAK,EAAE,QAAQ,EAAO,MAAM,UAAU,CAAC;AAS9C,OAAO,EAAoB,KAAK,YAAY,EAAiB,MAAM,aAAa,CAAC;AAoBjF,eAAO,MAAM,aAAa,EAAE,MAAoE,CAAC;AAGjG,MAAM,WAAW,KAAK;IACpB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,GAAG,EAAE,QAAQ,CAAC;IACvB,MAAM,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;IAC1B,sEAAsE;IACtE,SAAS,IAAI,MAAM,GAAG,IAAI,CAAC;IAC3B,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACxB;AAyED,sGAAsG;AACtG,wBAAsB,WAAW,CAAC,OAAO,GAAE,YAAiB,GAAG,OAAO,CAAC,KAAK,CAAC,CAiD5E"}
|
package/dist/server.js
CHANGED
|
@@ -1,10 +1,15 @@
|
|
|
1
1
|
import { createRequire } from "node:module";
|
|
2
2
|
import { createServer } from "node:http";
|
|
3
|
+
import { SOURCEMAPS_PATH } from "@wizeworks/lens-core";
|
|
3
4
|
import { otlpSignalOf } from "@wizeworks/lens-hub/kit";
|
|
4
5
|
import { resolveUiDir, serveUi } from "@wizeworks/lens-node/kit";
|
|
5
6
|
import { authHandler } from "./auth/bridge.js";
|
|
6
7
|
import { AUTH_BASE_PATH } from "./auth/options.js";
|
|
7
8
|
import { wireAuth } from "./auth/wire.js";
|
|
9
|
+
import { createBilling } from "./billing/service.js";
|
|
10
|
+
import { STRIPE_WEBHOOK_PATH, stripeWebhook } from "./billing/webhook.js";
|
|
11
|
+
import { Changes } from "./changes.js";
|
|
12
|
+
import { SettingsCache } from "./repo/settings.js";
|
|
8
13
|
import { resolveConfig } from "./config.js";
|
|
9
14
|
import { openDb } from "./db/db.js";
|
|
10
15
|
import { migrate } from "./db/migrate.js";
|
|
@@ -16,9 +21,13 @@ import { createMailer } from "./mail/mailer.js";
|
|
|
16
21
|
import { stopRoute } from "./mail/stop-route.js";
|
|
17
22
|
import { UNSUBSCRIBE_PATH } from "./mail/unsubscribe.js";
|
|
18
23
|
import { RESEND_WEBHOOK_PATH, resendWebhook } from "./mail/webhook.js";
|
|
19
|
-
import {
|
|
24
|
+
import { openTelemetry } from "./telemetry/index.js";
|
|
20
25
|
import { allRoutes } from "./routes/index.js";
|
|
21
26
|
import { ingestBatch, ingestOtlp } from "./routes/ingest.js";
|
|
27
|
+
import { listProjectMaps, uploadSourceMap } from "./routes/sourcemaps.js";
|
|
28
|
+
import { cloudMapLoaders } from "./repo/sourcemaps.js";
|
|
29
|
+
import { serveOAuthMetadata } from "./routes/oauth-meta.js";
|
|
30
|
+
import { forgetModels } from "./routes/models.js";
|
|
22
31
|
const require = createRequire(import.meta.url);
|
|
23
32
|
export const CLOUD_VERSION = require("../package.json").version;
|
|
24
33
|
const BASE = "/_wizelens";
|
|
@@ -28,6 +37,11 @@ async function routeBase(p, ctx, sub) {
|
|
|
28
37
|
const { req, res } = ctx;
|
|
29
38
|
if (sub === "api/ingest" && req.method === "POST")
|
|
30
39
|
return ingestBatch(ctx, p.ingest);
|
|
40
|
+
// Build tools upload source maps with the project's ingest key.
|
|
41
|
+
if (sub === SOURCEMAPS_PATH && req.method === "POST")
|
|
42
|
+
return uploadSourceMap(ctx, p.ingest);
|
|
43
|
+
if (sub === SOURCEMAPS_PATH && req.method === "GET")
|
|
44
|
+
return listProjectMaps(ctx, p.ingest);
|
|
31
45
|
// Resend signs its webhook, so it needs no dashboard header.
|
|
32
46
|
if (sub === RESEND_WEBHOOK_PATH && req.method === "POST")
|
|
33
47
|
return resendWebhook(ctx);
|
|
@@ -53,8 +67,12 @@ async function route(p, req, res) {
|
|
|
53
67
|
return void res.writeHead(200, { "Content-Type": "text/plain" }).end("ok");
|
|
54
68
|
if (path === "/" || path === BASE)
|
|
55
69
|
return void res.writeHead(302, { Location: `${BASE}/${url.search}` }).end();
|
|
70
|
+
if (path === STRIPE_WEBHOOK_PATH && req.method === "POST")
|
|
71
|
+
return stripeWebhook(p.app, req, res);
|
|
56
72
|
if (path.startsWith(`${AUTH_BASE_PATH}/`))
|
|
57
73
|
return p.auth()(req, res);
|
|
74
|
+
if (path.startsWith("/.well-known/") && (await serveOAuthMetadata(p.app, req, res, path)))
|
|
75
|
+
return;
|
|
58
76
|
const signal = otlpSignalOf(path);
|
|
59
77
|
if (signal && req.method === "POST")
|
|
60
78
|
return ingestOtlp(ctx, signal, p.ingest);
|
|
@@ -66,27 +84,42 @@ function onError(err, res) {
|
|
|
66
84
|
if (res.headersSent)
|
|
67
85
|
return void res.end();
|
|
68
86
|
if (err instanceof HttpError)
|
|
69
|
-
return sendJson(res, err.status, { error: err.message });
|
|
87
|
+
return sendJson(res, err.status, { ...err.extra, error: err.message });
|
|
70
88
|
console.error("[wizelens-cloud]", err);
|
|
71
89
|
sendJson(res, 500, { error: "Something went wrong on the server." });
|
|
72
90
|
}
|
|
73
|
-
/**
|
|
74
|
-
|
|
75
|
-
const config = resolveConfig(options);
|
|
91
|
+
/** The database (migrated), the telemetry store (its stats rebuilt when the facts version changed), and the new-data signal. */
|
|
92
|
+
async function openStores(config) {
|
|
76
93
|
const db = await openDb(config.database);
|
|
77
94
|
await migrate(db);
|
|
78
|
-
|
|
95
|
+
const settings = new SettingsCache(db);
|
|
96
|
+
const telemetry = await openTelemetry(config, db, settings);
|
|
97
|
+
await telemetry.checkFactsVersion();
|
|
98
|
+
const changes = new Changes();
|
|
99
|
+
changes.onAny(forgetModels);
|
|
100
|
+
return { db, telemetry, changes, maps: cloudMapLoaders(db), settings };
|
|
101
|
+
}
|
|
102
|
+
/** Mail, plans and usage (Stripe with billing on), and the auth wiring. */
|
|
103
|
+
async function openServices(config, db) {
|
|
79
104
|
const mailer = await createMailer(config, db);
|
|
80
|
-
const
|
|
81
|
-
|
|
82
|
-
|
|
105
|
+
const billing = await createBilling(config, db);
|
|
106
|
+
return { mailer, billing, wiring: await wireAuth(db, config, mailer, billing.stripe) };
|
|
107
|
+
}
|
|
108
|
+
/** Open the database, bring its schema up to date, and build the server. Call `listen()` to start. */
|
|
109
|
+
export async function createCloud(options = {}) {
|
|
110
|
+
const config = resolveConfig(options);
|
|
111
|
+
const stores = await openStores(config);
|
|
112
|
+
const { db, telemetry } = stores;
|
|
113
|
+
const { mailer, billing, wiring } = await openServices(config, db);
|
|
114
|
+
let [auth, handler] = [undefined, undefined];
|
|
83
115
|
let listenUrl = config.publicUrl ?? `http://localhost:${config.port}`;
|
|
84
116
|
const app = {
|
|
85
|
-
|
|
117
|
+
...stores,
|
|
86
118
|
config,
|
|
87
119
|
version: CLOUD_VERSION,
|
|
88
120
|
startedMs: config.now(),
|
|
89
121
|
mailer,
|
|
122
|
+
billing,
|
|
90
123
|
secrets: wiring.secrets,
|
|
91
124
|
get auth() {
|
|
92
125
|
if (!auth)
|
|
@@ -118,7 +151,9 @@ export async function createCloud(options = {}) {
|
|
|
118
151
|
stopJobs();
|
|
119
152
|
server.closeAllConnections?.();
|
|
120
153
|
await new Promise((resolve) => server.close(() => resolve()));
|
|
154
|
+
await billing.usage.flush().catch((err) => console.error("[wizelens-cloud] usage flush failed:", err));
|
|
121
155
|
await mailer.close();
|
|
156
|
+
await telemetry.close();
|
|
122
157
|
await db.close();
|
|
123
158
|
},
|
|
124
159
|
};
|
package/dist/server.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,YAAY,EAA0D,MAAM,WAAW,CAAC;AAEjG,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AAGjE,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
|
package/dist/settle.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
import { type Statement, type TraceState } from "@wizeworks/lens-core";
|
|
1
|
+
import { type FactOptions, type Statement, type TraceState } from "@wizeworks/lens-core";
|
|
2
2
|
import type { Db, Queryable } from "./db/db.js";
|
|
3
|
+
import type { SettleOptions } from "./telemetry/store.js";
|
|
3
4
|
/** Fact, rollup, and hist tables: everything settling builds. */
|
|
4
5
|
export declare const STATS_TABLES: string[];
|
|
5
6
|
export interface TraceStateRow {
|
|
@@ -9,18 +10,21 @@ export interface TraceStateRow {
|
|
|
9
10
|
updated_ms?: number;
|
|
10
11
|
contrib: string | null;
|
|
11
12
|
retention_days: number | null;
|
|
13
|
+
log_retention_days?: number | null;
|
|
14
|
+
/** The project's settings JSON, when the settle reads it. */
|
|
15
|
+
settings?: string | null;
|
|
12
16
|
}
|
|
13
17
|
/** Run statements one by one, in the caller's transaction. */
|
|
14
18
|
export declare function runStatements(q: Queryable, statements: readonly Statement[]): Promise<void>;
|
|
15
|
-
export declare const stateOf: (r: TraceStateRow, defaultDays: number) => TraceState;
|
|
19
|
+
export declare const stateOf: (r: TraceStateRow, defaultDays: number, defaultFacts?: Partial<FactOptions>) => TraceState;
|
|
16
20
|
/** Settle dirty traces in batches until none are left or the budget is spent. Returns how many settled. */
|
|
17
|
-
export declare function settleCloud(db: Db, now: number, o?:
|
|
18
|
-
|
|
19
|
-
batch?: number;
|
|
20
|
-
budgetMs?: number;
|
|
21
|
-
}): Promise<number>;
|
|
22
|
-
/** Age out rollup buckets: 10 s and 5 min by their keep time, 1 h by each organization's retention. */
|
|
21
|
+
export declare function settleCloud(db: Db, now: number, o?: SettleOptions): Promise<number>;
|
|
22
|
+
/** Age out rollup buckets: 10 s and 5 min by their keep time, 1 h by each organization's retention (log kinds by the log retention, in pruneLogsByRetention). */
|
|
23
23
|
export declare function pruneRollups(q: Queryable, now: number, empties?: boolean): Promise<void>;
|
|
24
|
-
/**
|
|
24
|
+
/** True when the stats were built by another facts version (or never). */
|
|
25
|
+
export declare function factsStale(db: Db): Promise<boolean>;
|
|
26
|
+
/** Clear the stats and mark every trace unsettled, in batches that commit; a restart starts it again and the version is written last. */
|
|
27
|
+
export declare function resetFacts(db: Db): Promise<void>;
|
|
28
|
+
/** When the facts version changed, clear the stats so settling rebuilds them. Returns true when it did. */
|
|
25
29
|
export declare function checkFactsVersion(db: Db): Promise<boolean>;
|
|
26
30
|
//# sourceMappingURL=settle.d.ts.map
|
package/dist/settle.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"settle.d.ts","sourceRoot":"","sources":["../src/settle.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"settle.d.ts","sourceRoot":"","sources":["../src/settle.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,WAAW,EAAsG,KAAK,SAAS,EAAuB,KAAK,UAAU,EAAc,MAAM,sBAAsB,CAAC;AAC9N,OAAO,KAAK,EAAE,EAAE,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAEhD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAW1D,iEAAiE;AACjE,eAAO,MAAM,YAAY,UAAwF,CAAC;AAElH,MAAM,WAAW,aAAa;IAC5B,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,GAAG,EAAE,MAAM,CAAC;IACZ,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,kBAAkB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACnC,6DAA6D;IAC7D,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1B;AAED,8DAA8D;AAC9D,wBAAsB,aAAa,CAAC,CAAC,EAAE,SAAS,EAAE,UAAU,EAAE,SAAS,SAAS,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAEjG;AAED,eAAO,MAAM,OAAO,MAAO,aAAa,eAAe,MAAM,iBAAgB,OAAO,CAAC,WAAW,CAAC,KAAQ,UASvG,CAAC;AA6BH,2GAA2G;AAC3G,wBAAsB,WAAW,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC,GAAE,aAAkB,GAAG,OAAO,CAAC,MAAM,CAAC,CAU7F;AAED,iKAAiK;AACjK,wBAAsB,YAAY,CAAC,CAAC,EAAE,SAAS,EAAE,GAAG,EAAE,MAAM,EAAE,OAAO,UAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CAQ5F;AAED,0EAA0E;AAC1E,wBAAsB,UAAU,CAAC,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC,CAGzD;AAED,yIAAyI;AACzI,wBAAsB,UAAU,CAAC,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAetD;AAED,2GAA2G;AAC3G,wBAAsB,iBAAiB,CAAC,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC,CAIhE"}
|
package/dist/settle.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
import { FACT_TABLES, FACTS_VERSION, PG_DIALECT, settleStatements, tierPruneStatements } from "@wizeworks/lens-core";
|
|
1
|
+
import { FACT_TABLES, FACTS_VERSION, factOptionsOf, LOG_KINDS_SQL, PG_DIALECT, settingsOf, settleStatements, tierPruneStatements } from "@wizeworks/lens-core";
|
|
2
2
|
import { loadTraces } from "./repo/trace-read.js";
|
|
3
|
+
import { KEEP_DAYS } from "./repo/settings.js";
|
|
3
4
|
// Settling: traces quiet for a while get their facts and rollups rebuilt from the stored spans and logs (docs/CONTRACT.md).
|
|
4
5
|
const BATCH = 500;
|
|
5
6
|
const BUDGET_MS = 2_000;
|
|
@@ -7,6 +8,7 @@ const QUIET_MS = 5_000;
|
|
|
7
8
|
const BUSY_MS = 30_000;
|
|
8
9
|
const LOCK = 4711;
|
|
9
10
|
const DAY_MS = 86_400_000;
|
|
11
|
+
const RESET_BATCH = 5_000;
|
|
10
12
|
/** Fact, rollup, and hist tables: everything settling builds. */
|
|
11
13
|
export const STATS_TABLES = [...FACT_TABLES, ...["10s", "5m", "1h"].flatMap((t) => [`rollup_${t}`, `hist_${t}`])];
|
|
12
14
|
/** Run statements one by one, in the caller's transaction. */
|
|
@@ -14,13 +16,15 @@ export async function runStatements(q, statements) {
|
|
|
14
16
|
for (const s of statements)
|
|
15
17
|
await q.query(s.sql, s.params);
|
|
16
18
|
}
|
|
17
|
-
export const stateOf = (r, defaultDays) => ({
|
|
19
|
+
export const stateOf = (r, defaultDays, defaultFacts = {}) => ({
|
|
18
20
|
traceId: r.trace_id,
|
|
19
21
|
project: r.project_id,
|
|
20
22
|
env: r.env,
|
|
21
23
|
updatedMs: r.updated_ms ?? 0,
|
|
22
24
|
contrib: r.contrib,
|
|
23
25
|
retentionMs: (r.retention_days ?? defaultDays) * DAY_MS,
|
|
26
|
+
logRetentionMs: (r.log_retention_days ?? r.retention_days ?? defaultDays) * DAY_MS,
|
|
27
|
+
facts: { ...defaultFacts, ...factOptionsOf(settingsOf(r.settings)) },
|
|
24
28
|
});
|
|
25
29
|
async function loadAll(q, rows) {
|
|
26
30
|
const byProject = new Map();
|
|
@@ -33,20 +37,20 @@ async function loadAll(q, rows) {
|
|
|
33
37
|
return out;
|
|
34
38
|
}
|
|
35
39
|
/** Settle one batch in one transaction. -1 when another instance holds the lock. */
|
|
36
|
-
async function settleBatch(db, now, batch, defaultDays) {
|
|
40
|
+
async function settleBatch(db, now, batch, defaultDays, defaultFacts) {
|
|
37
41
|
return db.tx(async (q) => {
|
|
38
42
|
const [lock] = await q.query("SELECT pg_try_advisory_xact_lock($1) AS ok", [LOCK]);
|
|
39
43
|
if (!lock?.ok)
|
|
40
|
-
return -1;
|
|
41
|
-
const rows = await q.query(`SELECT t.project_id, t.trace_id, t.env, t.updated_ms, t.contrib,
|
|
44
|
+
return { n: -1, projects: [] };
|
|
45
|
+
const rows = await q.query(`SELECT t.project_id, t.trace_id, t.env, t.updated_ms, t.contrib, ${KEEP_DAYS} AS retention_days, p.log_retention_days, p.settings FROM traces t
|
|
42
46
|
LEFT JOIN projects p ON p.id = t.project_id LEFT JOIN orgs o ON o.id = p.org_id
|
|
43
47
|
WHERE t.settled_ms < t.updated_ms AND (t.updated_ms <= $1 OR t.settled_ms <= $2) ORDER BY t.start_ms DESC LIMIT $3`, [now - QUIET_MS, now - BUSY_MS, batch]);
|
|
44
48
|
if (!rows.length)
|
|
45
|
-
return 0;
|
|
49
|
+
return { n: 0, projects: [] };
|
|
46
50
|
const traces = await loadAll(q, rows);
|
|
47
|
-
const work = rows.map((r) => ({ state: stateOf(r, defaultDays), trace: traces.get(`${r.project_id} ${r.trace_id}`) }));
|
|
51
|
+
const work = rows.map((r) => ({ state: stateOf(r, defaultDays, defaultFacts), trace: traces.get(`${r.project_id} ${r.trace_id}`) }));
|
|
48
52
|
await runStatements(q, settleStatements(PG_DIALECT, work, now, true));
|
|
49
|
-
return rows.length;
|
|
53
|
+
return { n: rows.length, projects: [...new Set(rows.map((r) => r.project_id))] };
|
|
50
54
|
});
|
|
51
55
|
}
|
|
52
56
|
/** Settle dirty traces in batches until none are left or the budget is spent. Returns how many settled. */
|
|
@@ -55,31 +59,47 @@ export async function settleCloud(db, now, o = {}) {
|
|
|
55
59
|
const batch = o.batch ?? BATCH;
|
|
56
60
|
let total = 0;
|
|
57
61
|
for (;;) {
|
|
58
|
-
const n = await settleBatch(db, now, batch, o.defaultRetentionDays ?? 30);
|
|
62
|
+
const { n, projects } = await settleBatch(db, now, batch, o.defaultRetentionDays ?? 30, o.defaultFacts);
|
|
59
63
|
if (n > 0)
|
|
60
64
|
total += n;
|
|
65
|
+
for (const p of projects)
|
|
66
|
+
o.onSettled?.(p);
|
|
61
67
|
if (n < batch || Date.now() - start >= (o.budgetMs ?? BUDGET_MS))
|
|
62
68
|
return total;
|
|
63
69
|
}
|
|
64
70
|
}
|
|
65
|
-
/** Age out rollup buckets: 10 s and 5 min by their keep time, 1 h by each organization's retention. */
|
|
71
|
+
/** Age out rollup buckets: 10 s and 5 min by their keep time, 1 h by each organization's retention (log kinds by the log retention, in pruneLogsByRetention). */
|
|
66
72
|
export async function pruneRollups(q, now, empties = false) {
|
|
67
73
|
await runStatements(q, tierPruneStatements(now, empties));
|
|
68
74
|
for (const t of ["rollup_1h", "hist_1h"]) {
|
|
69
|
-
await q.query(`DELETE FROM ${t} r USING projects p, orgs o WHERE p.id = r.project_id AND o.id = p.org_id AND r.bucket_ms <= $1 -
|
|
75
|
+
await q.query(`DELETE FROM ${t} r USING projects p, orgs o WHERE p.id = r.project_id AND o.id = p.org_id AND r.bucket_ms <= $1 - ${KEEP_DAYS} * 86400000.0 AND r.kind NOT IN (${LOG_KINDS_SQL})`, [now - 3_600_000]);
|
|
70
76
|
}
|
|
71
77
|
}
|
|
72
|
-
/**
|
|
73
|
-
export async function
|
|
78
|
+
/** True when the stats were built by another facts version (or never). */
|
|
79
|
+
export async function factsStale(db) {
|
|
74
80
|
const [row] = await db.query("SELECT value FROM scale_meta WHERE key = 'facts'");
|
|
75
|
-
|
|
81
|
+
return row?.value !== String(FACTS_VERSION);
|
|
82
|
+
}
|
|
83
|
+
/** Clear the stats and mark every trace unsettled, in batches that commit; a restart starts it again and the version is written last. */
|
|
84
|
+
export async function resetFacts(db) {
|
|
85
|
+
await db.query(`TRUNCATE ${STATS_TABLES.join(", ")}`);
|
|
86
|
+
const mark = "UPDATE traces SET settled_ms = 0, contrib = NULL WHERE (project_id, trace_id) > ($1, $2)";
|
|
87
|
+
let after = ["", ""];
|
|
88
|
+
for (;;) {
|
|
89
|
+
const [end] = await db.query(`SELECT project_id, trace_id FROM traces WHERE (project_id, trace_id) > ($1, $2) ORDER BY project_id, trace_id OFFSET ${RESET_BATCH - 1} LIMIT 1`, after);
|
|
90
|
+
if (!end)
|
|
91
|
+
break;
|
|
92
|
+
await db.query(`${mark} AND (project_id, trace_id) <= ($3, $4)`, [...after, end.project_id, end.trace_id]);
|
|
93
|
+
after = [end.project_id, end.trace_id];
|
|
94
|
+
}
|
|
95
|
+
await db.query(mark, after);
|
|
96
|
+
await db.query("INSERT INTO scale_meta (key, value) VALUES ('facts', $1) ON CONFLICT (key) DO UPDATE SET value = EXCLUDED.value", [String(FACTS_VERSION)]);
|
|
97
|
+
}
|
|
98
|
+
/** When the facts version changed, clear the stats so settling rebuilds them. Returns true when it did. */
|
|
99
|
+
export async function checkFactsVersion(db) {
|
|
100
|
+
if (!(await factsStale(db)))
|
|
76
101
|
return false;
|
|
77
|
-
await db
|
|
78
|
-
for (const t of STATS_TABLES)
|
|
79
|
-
await q.query(`DELETE FROM ${t}`);
|
|
80
|
-
await q.query("UPDATE traces SET settled_ms = 0, contrib = NULL");
|
|
81
|
-
await q.query("INSERT INTO scale_meta (key, value) VALUES ('facts', $1) ON CONFLICT (key) DO UPDATE SET value = EXCLUDED.value", [String(FACTS_VERSION)]);
|
|
82
|
-
});
|
|
102
|
+
await resetFacts(db);
|
|
83
103
|
return true;
|
|
84
104
|
}
|
|
85
105
|
//# sourceMappingURL=settle.js.map
|
package/dist/settle.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"settle.js","sourceRoot":"","sources":["../src/settle.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"settle.js","sourceRoot":"","sources":["../src/settle.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoB,WAAW,EAAE,aAAa,EAAE,aAAa,EAAE,aAAa,EAAE,UAAU,EAAE,UAAU,EAAE,gBAAgB,EAAkB,mBAAmB,EAA+B,MAAM,sBAAsB,CAAC;AAE9N,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAElD,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAE/C,4HAA4H;AAC5H,MAAM,KAAK,GAAG,GAAG,CAAC;AAClB,MAAM,SAAS,GAAG,KAAK,CAAC;AACxB,MAAM,QAAQ,GAAG,KAAK,CAAC;AACvB,MAAM,OAAO,GAAG,MAAM,CAAC;AACvB,MAAM,IAAI,GAAG,IAAI,CAAC;AAClB,MAAM,MAAM,GAAG,UAAU,CAAC;AAC1B,MAAM,WAAW,GAAG,KAAK,CAAC;AAC1B,iEAAiE;AACjE,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,GAAG,WAAW,EAAE,GAAG,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,UAAU,CAAC,EAAE,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAclH,8DAA8D;AAC9D,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,CAAY,EAAE,UAAgC;IAChF,KAAK,MAAM,CAAC,IAAI,UAAU;QAAE,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC;AAC7D,CAAC;AAED,MAAM,CAAC,MAAM,OAAO,GAAG,CAAC,CAAgB,EAAE,WAAmB,EAAE,YAAY,GAAyB,EAAE,EAAc,EAAE,CAAC,CAAC;IACtH,OAAO,EAAE,CAAC,CAAC,QAAQ;IACnB,OAAO,EAAE,CAAC,CAAC,UAAU;IACrB,GAAG,EAAE,CAAC,CAAC,GAAG;IACV,SAAS,EAAE,CAAC,CAAC,UAAU,IAAI,CAAC;IAC5B,OAAO,EAAE,CAAC,CAAC,OAAO;IAClB,WAAW,EAAE,CAAC,CAAC,CAAC,cAAc,IAAI,WAAW,CAAC,GAAG,MAAM;IACvD,cAAc,EAAE,CAAC,CAAC,CAAC,kBAAkB,IAAI,CAAC,CAAC,cAAc,IAAI,WAAW,CAAC,GAAG,MAAM;IAClF,KAAK,EAAE,EAAE,GAAG,YAAY,EAAE,GAAG,aAAa,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE;CACrE,CAAC,CAAC;AAEH,KAAK,UAAU,OAAO,CAAC,CAAY,EAAE,IAA8B;IACjE,MAAM,SAAS,GAAG,IAAI,GAAG,EAAoB,CAAC;IAC9C,KAAK,MAAM,CAAC,IAAI,IAAI;QAAE,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;IACxG,MAAM,GAAG,GAAG,IAAI,GAAG,EAAiB,CAAC;IACrC,KAAK,MAAM,CAAC,OAAO,EAAE,GAAG,CAAC,IAAI,SAAS;QAAE,KAAK,MAAM,CAAC,IAAI,MAAM,UAAU,CAAC,CAAC,EAAE,OAAO,EAAE,GAAG,CAAC;YAAE,GAAG,CAAC,GAAG,CAAC,GAAG,OAAO,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;IACjI,OAAO,GAAG,CAAC;AACb,CAAC;AAED,oFAAoF;AACpF,KAAK,UAAU,WAAW,CAAC,EAAM,EAAE,GAAW,EAAE,KAAa,EAAE,WAAmB,EAAE,YAAmC;IACrH,OAAO,EAAE,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE;QACvB,MAAM,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,CAAC,KAAK,CAAkB,4CAA4C,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;QACpG,IAAI,CAAC,IAAI,EAAE,EAAE;YAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC;QAC9C,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,KAAK,CACxB,oEAAoE,SAAS;;0HAEuC,EACpH,CAAC,GAAG,GAAG,QAAQ,EAAE,GAAG,GAAG,OAAO,EAAE,KAAK,CAAC,CACvC,CAAC;QACF,IAAI,CAAC,IAAI,CAAC,MAAM;YAAE,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC;QAChD,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;QACtC,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC,EAAE,WAAW,EAAE,YAAY,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,UAAU,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QACrI,MAAM,aAAa,CAAC,CAAC,EAAE,gBAAgB,CAAC,UAAU,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC;QACtE,OAAO,EAAE,CAAC,EAAE,IAAI,CAAC,MAAM,EAAE,QAAQ,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC;IACnF,CAAC,CAAC,CAAC;AACL,CAAC;AAED,2GAA2G;AAC3G,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,EAAM,EAAE,GAAW,EAAE,CAAC,GAAkB,EAAE;IAC1E,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IACzB,MAAM,KAAK,GAAG,CAAC,CAAC,KAAK,IAAI,KAAK,CAAC;IAC/B,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,SAAS,CAAC;QACR,MAAM,EAAE,CAAC,EAAE,QAAQ,EAAE,GAAG,MAAM,WAAW,CAAC,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC,oBAAoB,IAAI,EAAE,EAAE,CAAC,CAAC,YAAY,CAAC,CAAC;QACxG,IAAI,CAAC,GAAG,CAAC;YAAE,KAAK,IAAI,CAAC,CAAC;QACtB,KAAK,MAAM,CAAC,IAAI,QAAQ;YAAE,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC;QAC3C,IAAI,CAAC,GAAG,KAAK,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,IAAI,CAAC,CAAC,CAAC,QAAQ,IAAI,SAAS,CAAC;YAAE,OAAO,KAAK,CAAC;IACjF,CAAC;AACH,CAAC;AAED,iKAAiK;AACjK,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,CAAY,EAAE,GAAW,EAAE,OAAO,GAAG,KAAK;IAC3E,MAAM,aAAa,CAAC,CAAC,EAAE,mBAAmB,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC;IAC1D,KAAK,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,SAAS,CAAC,EAAE,CAAC;QACzC,MAAM,CAAC,CAAC,KAAK,CACX,eAAe,CAAC,qGAAqG,SAAS,oCAAoC,aAAa,GAAG,EAClL,CAAC,GAAG,GAAG,SAAS,CAAC,CAClB,CAAC;IACJ,CAAC;AACH,CAAC;AAED,0EAA0E;AAC1E,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,EAAM;IACrC,MAAM,CAAC,GAAG,CAAC,GAAG,MAAM,EAAE,CAAC,KAAK,CAAoB,kDAAkD,CAAC,CAAC;IACpG,OAAO,GAAG,EAAE,KAAK,KAAK,MAAM,CAAC,aAAa,CAAC,CAAC;AAC9C,CAAC;AAED,yIAAyI;AACzI,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,EAAM;IACrC,MAAM,EAAE,CAAC,KAAK,CAAC,YAAY,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACtD,MAAM,IAAI,GAAG,0FAA0F,CAAC;IACxG,IAAI,KAAK,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;IACrB,SAAS,CAAC;QACR,MAAM,CAAC,GAAG,CAAC,GAAG,MAAM,EAAE,CAAC,KAAK,CAC1B,wHAAwH,WAAW,GAAG,CAAC,UAAU,EACjJ,KAAK,CACN,CAAC;QACF,IAAI,CAAC,GAAG;YAAE,MAAM;QAChB,MAAM,EAAE,CAAC,KAAK,CAAC,GAAG,IAAI,yCAAyC,EAAE,CAAC,GAAG,KAAK,EAAE,GAAG,CAAC,UAAU,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC;QAC3G,KAAK,GAAG,CAAC,GAAG,CAAC,UAAU,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAC;IACzC,CAAC;IACD,MAAM,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAC5B,MAAM,EAAE,CAAC,KAAK,CAAC,iHAAiH,EAAE,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;AAC7J,CAAC;AAED,2GAA2G;AAC3G,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,EAAM;IAC5C,IAAI,CAAC,CAAC,MAAM,UAAU,CAAC,EAAE,CAAC,CAAC;QAAE,OAAO,KAAK,CAAC;IAC1C,MAAM,UAAU,CAAC,EAAE,CAAC,CAAC;IACrB,OAAO,IAAI,CAAC;AACd,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { TelemetryStore } from "./store.js";
|
|
2
|
+
interface Memo<T> {
|
|
3
|
+
get(key: string): Promise<T>;
|
|
4
|
+
drop(key: string): void;
|
|
5
|
+
}
|
|
6
|
+
/** One call per key at a time, and its answer kept for `ttlMs`; a failed call is not kept. */
|
|
7
|
+
export declare function memo<T>(fn: (key: string) => Promise<T>, now: () => number, ttlMs?: number): Memo<T>;
|
|
8
|
+
/** The store with project counts and environments shared between callers for a minute (new data shows within it); clearing a project drops them. */
|
|
9
|
+
export declare function withCachedCounts(store: TelemetryStore, now: () => number): TelemetryStore;
|
|
10
|
+
export {};
|
|
11
|
+
//# sourceMappingURL=cached.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cached.d.ts","sourceRoot":"","sources":["../../src/telemetry/cached.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAKjD,UAAU,IAAI,CAAC,CAAC;IACd,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;IAC7B,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;CACzB;AAED,8FAA8F;AAC9F,wBAAgB,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,MAAM,EAAE,KAAK,SAAS,GAAG,IAAI,CAAC,CAAC,CAAC,CAanG;AAED,oJAAoJ;AACpJ,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,cAAc,EAAE,GAAG,EAAE,MAAM,MAAM,GAAG,cAAc,CASzF"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
// Every page asks for a project's counts and environments; each answer scans the project's rows, so it is shared for a minute.
|
|
2
|
+
const TTL_MS = 60_000;
|
|
3
|
+
/** One call per key at a time, and its answer kept for `ttlMs`; a failed call is not kept. */
|
|
4
|
+
export function memo(fn, now, ttlMs = TTL_MS) {
|
|
5
|
+
const entries = new Map();
|
|
6
|
+
return {
|
|
7
|
+
get(key) {
|
|
8
|
+
const hit = entries.get(key);
|
|
9
|
+
if (hit && now() - hit.at < ttlMs)
|
|
10
|
+
return hit.value;
|
|
11
|
+
const value = fn(key);
|
|
12
|
+
entries.set(key, { at: now(), value });
|
|
13
|
+
value.catch(() => entries.get(key)?.value === value && entries.delete(key));
|
|
14
|
+
return value;
|
|
15
|
+
},
|
|
16
|
+
drop: (key) => void entries.delete(key),
|
|
17
|
+
};
|
|
18
|
+
}
|
|
19
|
+
/** The store with project counts and environments shared between callers for a minute (new data shows within it); clearing a project drops them. */
|
|
20
|
+
export function withCachedCounts(store, now) {
|
|
21
|
+
const counts = memo((id) => store.counts(id), now);
|
|
22
|
+
const envs = memo((id) => store.traceEnvs(id), now);
|
|
23
|
+
return {
|
|
24
|
+
...store,
|
|
25
|
+
counts: (id) => counts.get(id),
|
|
26
|
+
traceEnvs: (id) => envs.get(id),
|
|
27
|
+
clearProject: (id) => (counts.drop(id), envs.drop(id), store.clearProject(id)),
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=cached.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cached.js","sourceRoot":"","sources":["../../src/telemetry/cached.ts"],"names":[],"mappings":"AAEA,+HAA+H;AAC/H,MAAM,MAAM,GAAG,MAAM,CAAC;AAOtB,8FAA8F;AAC9F,MAAM,UAAU,IAAI,CAAI,EAA+B,EAAE,GAAiB,EAAE,KAAK,GAAG,MAAM;IACxF,MAAM,OAAO,GAAG,IAAI,GAAG,EAA6C,CAAC;IACrE,OAAO;QACL,GAAG,CAAC,GAAG;YACL,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YAC7B,IAAI,GAAG,IAAI,GAAG,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,KAAK;gBAAE,OAAO,GAAG,CAAC,KAAK,CAAC;YACpD,MAAM,KAAK,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC;YACtB,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;YACvC,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,KAAK,KAAK,KAAK,IAAI,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;YAC5E,OAAO,KAAK,CAAC;QACf,CAAC;QACD,IAAI,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,KAAK,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC;KACxC,CAAC;AACJ,CAAC;AAED,oJAAoJ;AACpJ,MAAM,UAAU,gBAAgB,CAAC,KAAqB,EAAE,GAAiB;IACvE,MAAM,MAAM,GAAG,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC;IACnD,MAAM,IAAI,GAAG,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC;IACpD,OAAO;QACL,GAAG,KAAK;QACR,MAAM,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;QAC9B,SAAS,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;QAC/B,YAAY,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;KAC/E,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { RetentionOf } from "../store.js";
|
|
2
|
+
import type { ChClient } from "./http.js";
|
|
3
|
+
import type { SettleQueue } from "./queue.js";
|
|
4
|
+
import { type Rebuild } from "./rebuild.js";
|
|
5
|
+
/** When the facts version changed: empty the stats and settle every trace again, a page at a time. True when it did. */
|
|
6
|
+
export declare function checkFactsVersionCh(ch: ChClient, rebuild: Rebuild): Promise<boolean>;
|
|
7
|
+
/** Delete every row of a project, in every table. */
|
|
8
|
+
export declare function clearProjectCh(ch: ChClient, queue: SettleQueue, projectId: string): Promise<void>;
|
|
9
|
+
/** Retention runs out by TTL. Here: drop projects deleted in Postgres, and follow retention changes (traces and logs). */
|
|
10
|
+
export declare function syncProjects(ch: ChClient, queue: SettleQueue, retentionOf: {
|
|
11
|
+
days: RetentionOf;
|
|
12
|
+
logDays: RetentionOf;
|
|
13
|
+
}, now: number): Promise<void>;
|
|
14
|
+
//# sourceMappingURL=admin.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"admin.d.ts","sourceRoot":"","sources":["../../../src/telemetry/ch/admin.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAC9C,OAAO,EAAc,KAAK,OAAO,EAAE,MAAM,cAAc,CAAC;AAkBxD,wHAAwH;AACxH,wBAAsB,mBAAmB,CAAC,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAQ1F;AAED,qDAAqD;AACrD,wBAAsB,cAAc,CAAC,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAGvG;AA8BD,0HAA0H;AAC1H,wBAAsB,YAAY,CAAC,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE;IAAE,IAAI,EAAE,WAAW,CAAC;IAAC,OAAO,EAAE,WAAW,CAAA;CAAE,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAezJ"}
|