From e5efec2a311223cf57e38334fd4b66b82bb781a6 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Fri, 28 Aug 2026 22:35:44 +0000 Subject: [PATCH] chore: sync HyperDX 2.37.0 Built from hyperdxio/hyperdx@2.37.0 --- HYPERDX_VERSION | 2 +- out/404.html | 6 +- out/__ENV.js | 2 +- .../ObvpgRAs9tqZrfawFwWKU/_buildManifest.js | 1 + .../_ssgManifest.js | 0 .../static/chunks/1021-40ca2f669b13138d.js | 712 ++++++++++++++++++ .../static/chunks/1021-4f9e66c4dfc3c92d.js | 349 --------- .../static/chunks/1138-038013a7d3aef841.js | 1 + .../static/chunks/1339-d9a72fc6a9a62a22.js | 5 - .../static/chunks/1423-61c688c14e477298.js | 1 - .../static/chunks/1440-3964c1d4dd0fbfce.js | 1 + .../static/chunks/1575-7d7febb4ca110fea.js | 1 + .../static/chunks/1642-084c8e3fb1a95fc8.js | 4 - .../static/chunks/1855-9f15bb57e9902472.js | 5 + ...de3f61.js => 187e7e72-608d7bc430f038be.js} | 2 +- .../static/chunks/2248-e31dfae67539d787.js | 1 - .../static/chunks/2411-612b6a1d16cde50a.js | 1 + .../static/chunks/2570-0b9a8b50a2ea7275.js | 1 - .../static/chunks/3172-b48e36ea0a40560e.js | 1 + .../static/chunks/3172-b7929bec541832ab.js | 1 - .../static/chunks/3365-ec574ffb0379a6e9.js | 1 - ...598ec264ad.js => 3415-1930219b56ca7252.js} | 2 +- .../static/chunks/3439-d27447ab2aef2a1f.js | 1 + .../static/chunks/3649-5bc0bb6177501220.js | 1 - .../static/chunks/3669-731d7130e46e5dbd.js | 1 - .../chunks/367e882f-7fb3ac49d51ad63a.js | 1 - .../chunks/367e882f-8aae0545aecfcce3.js | 1 + .../static/chunks/3722-d4513617c42e1cfd.js | 1 + .../static/chunks/3756-82cc455a6e2f133e.js | 1 - .../static/chunks/3777-3220844684d194e9.js | 4 + .../static/chunks/3998-2f226206c28313f9.js | 68 -- .../chunks/3ca413d9-080727b28fc1ef26.js | 1 + .../static/chunks/4003-37f9edcb2900014f.js | 1 - .../static/chunks/4310-eb811fb26be4ea3b.js | 93 +++ .../static/chunks/4570-c5074349ea163977.js | 1 + ...d97526abae.js => 4644-5e9cade485ed6891.js} | 2 +- .../static/chunks/4719-70b065addcfc053d.js | 1 + .../static/chunks/4751-53b929fca5a575a9.js | 67 ++ .../static/chunks/480-9ed87d1aec69fb2e.js | 1 - .../static/chunks/4802-be4140fb9e37c48b.js | 1 - .../static/chunks/4802-dad74a064e1a9949.js | 1 + .../static/chunks/4956-806fa224e9f037d2.js | 1 - .../static/chunks/5096-1e1211610ea37729.js | 1 + .../static/chunks/5278-5ce721dd561f17ba.js | 8 + .../static/chunks/5280-b9133e2f771611cd.js | 5 - .../static/chunks/5437-729912ac30cf0589.js | 1 + .../static/chunks/5525-16078a8902cc8ed2.js | 1 + .../static/chunks/5642-d5ca7da98e2ecf67.js | 86 +++ .../static/chunks/6053-3bd9ef3516ecc939.js | 1 + .../static/chunks/6384-c2247ca9df3561dc.js | 2 - .../static/chunks/6421-a2afdcea0cb4d1e1.js | 168 ----- .../static/chunks/6601-6e79b78f5d0a8362.js | 1 + .../static/chunks/6976-bb0931713ec7220e.js | 13 - .../static/chunks/7023-996113278ae5e2c4.js | 13 + .../static/chunks/7082-733d301bbd73758b.js | 1 - .../static/chunks/7179-2197784b6a850e87.js | 18 + .../static/chunks/7239-2cccae3c3502941c.js | 26 - .../static/chunks/7290-4455a025d4704290.js | 1 + .../static/chunks/7516-e9f53532c1b9ef17.js | 1 + .../static/chunks/7539-8accf5305cb2230e.js | 1 + .../static/chunks/7803-2a1bbf06ab36a153.js | 1 - .../static/chunks/7808-56a21c2a73425212.js | 1 + .../static/chunks/7855-42a64499c9089b25.js | 1 + .../static/chunks/7921-1d27e24d28e0f3d0.js | 1 - .../static/chunks/7921-fd717a6bfdf6d005.js | 1 + .../static/chunks/8306-69a72fb231fd0a43.js | 1 + .../static/chunks/851-4c1ea2c737d07452.js | 1 + .../static/chunks/8744-683c92e80e486776.js | 1 + .../static/chunks/8909-6f73f2a4eb443eb5.js | 1 + .../static/chunks/9073-025503b8ed88d059.js | 1 + .../static/chunks/9073-24ddfd667b003ed6.js | 1 - .../static/chunks/9249-4436287d562ae93f.js | 1 + .../static/chunks/9307-64aad77bc4c24525.js | 1 + .../static/chunks/9409-6b017a0973880e05.js | 110 --- .../static/chunks/9470-ad575a57bbab727c.js | 2 + .../static/chunks/9486-1807bc22144e98f0.js | 1 - .../static/chunks/9620-09c59dba98d80ac1.js | 1 - .../static/chunks/9927-b6400692d78ec3d8.js | 86 +++ .../static/chunks/9952-1cae1d2a547bbfec.js | 1 - .../chunks/f92fad27-d0cff4750eeb2536.js | 2 - .../chunks/f92fad27-e6d630cda0464314.js | 2 + .../chunks/framework-3338fd78997a402b.js | 1 - .../chunks/framework-a090a51e07eba377.js | 1 + .../static/chunks/main-029e2aa9890a5cd4.js | 5 + .../static/chunks/main-2546fa054892fd35.js | 5 - .../chunks/pages/404-87418c6575573d12.js | 1 - .../chunks/pages/404-93ab3ab93d81f374.js | 1 + .../chunks/pages/_app-154ad04215b55205.js | 20 - .../chunks/pages/_app-645f5611d4f1165e.js | 20 + .../chunks/pages/_error-39388d370ed64907.js | 1 - .../chunks/pages/_error-bf5fc48b24f6dfbf.js | 1 + .../chunks/pages/alerts-0645be35a7a63cb7.js | 1 - .../chunks/pages/alerts-8ab1499a763dc4e2.js | 1 + .../alerts/[alertId]-b81073143dad8d1e.js | 1 + .../pages/benchmark-51e8760207565fe7.js | 1 - .../pages/benchmark-fd50fe5a08fad118.js | 1 + .../chunks/pages/chart-3bb7bc7d65cb0bb9.js | 168 ----- .../chunks/pages/chart-b424751635ce0ef2.js | 1 + .../pages/clickhouse-2dcb14ff1523cb71.js | 93 --- .../pages/clickhouse-46029ebbad38b40a.js | 1 + .../pages/dashboards-0f46a5c4818e3123.js | 1 - .../pages/dashboards-30c0ac3a6efac87b.js | 1 + .../[dashboardId]-3bdd096b77cecd2d.js | 1 - .../[dashboardId]-3f2ed17b7ab7ae85.js | 1 + .../dashboards/import-2954982890b61094.js | 1 + .../dashboards/import-665816c46d7522ba.js | 1 - .../pages/dashboards/list-7ea4bafc0539f8c8.js | 1 - .../pages/dashboards/list-d0276e56b0b8f8fd.js | 1 + ...6a1b2.js => templates-aaf6a30f9fb2fa26.js} | 2 +- .../chunks/pages/index-4648302f008b6550.js | 1 - .../chunks/pages/index-b9f6bd98ea8cef17.js | 1 + .../pages/join-team-095387baf14d2c78.js | 1 + .../pages/join-team-b996f6dd9d017651.js | 1 - .../pages/kubernetes-4da49283a609a630.js | 1 - .../pages/kubernetes-f99720b596b3dc31.js | 1 + ...387690ba1.js => login-91035132ee872fea.js} | 2 +- ...12c5a9.js => register-57c633ce36963a80.js} | 2 +- .../chunks/pages/search-7be4124dd9337dba.js | 1 - .../chunks/pages/search-bd3c81c4372ef819.js | 1 + .../[savedSearchId]-0eddbeaa4d432b83.js | 1 + .../[savedSearchId]-db96a1b7d3768c8c.js | 1 - ...c09d68a11d.js => list-933dae978b510dca.js} | 2 +- .../pages/service-map-cbf5989287b3b7eb.js | 1 - .../pages/service-map-fb5c855edee5441b.js | 26 + .../chunks/pages/services-3ac9a5f8a642a5b4.js | 35 + .../chunks/pages/services-3eea87748649c28e.js | 127 ---- .../chunks/pages/sessions-867fc7c0954908f4.js | 1 - .../chunks/pages/sessions-97a6e80460208180.js | 1 + .../chunks/pages/team-01839d19aef24c51.js | 18 - .../chunks/pages/team-7e1e9fcc3e6ed1ad.js | 19 + ...831cb.js => [traceId]-e6973d245febdfdd.js} | 2 +- out/_next/static/css/009fd613ef55e79d.css | 1 + out/_next/static/css/03d190b3585d4ee8.css | 1 + out/_next/static/css/2013a03974c2de2c.css | 1 + out/_next/static/css/29d559389ff43888.css | 1 - out/_next/static/css/3579b36eeb887403.css | 1 + out/_next/static/css/47d779dd3d3f686a.css | 1 - out/_next/static/css/504e3ecc81136c97.css | 1 - out/_next/static/css/588fdd2138ee5439.css | 1 - out/_next/static/css/5b9d831140fa295b.css | 1 + out/_next/static/css/5da4ad2bdf65e510.css | 1 - out/_next/static/css/689c1e0928960c9c.css | 1 + out/_next/static/css/75207861d89f2a2c.css | 1 + out/_next/static/css/778e3582c9ef6c15.css | 1 - out/_next/static/css/828c122b06ce0c6b.css | 1 + out/_next/static/css/83391068f6a5e550.css | 1 - out/_next/static/css/8c9e1c5dca1f48ae.css | 1 - out/_next/static/css/904b0ced6cfbcdd8.css | 1 - out/_next/static/css/90cf678b3c0b5285.css | 1 + out/_next/static/css/9d108ab455f35d01.css | 1 + out/_next/static/css/9fb1d5ab558f138e.css | 1 + out/_next/static/css/b4062a0298b78e72.css | 1 - ...8a6be044e50e5.css => b79bd1f5d54f1be2.css} | 2 +- out/_next/static/css/e6d8af979878f17f.css | 1 + out/_next/static/css/eb6f562a40adb77f.css | 1 + ...0f535c4b431bd.css => ed072ddd78b467b0.css} | 4 +- out/_next/static/css/efd2bd7e14ea40bf.css | 1 - out/_next/static/css/fa9420c5efe0a66c.css | 1 - .../qk_FcqQo6U0yiOJ0aM8Nf/_buildManifest.js | 1 - out/alerts.html | 6 +- out/alerts/[alertId].html | 16 + out/benchmark.html | 6 +- out/careers.html | 6 +- out/chart.html | 6 +- out/clickhouse.html | 6 +- out/dashboards.html | 6 +- out/dashboards/[dashboardId].html | 6 +- out/dashboards/import.html | 6 +- out/dashboards/list.html | 6 +- out/dashboards/templates.html | 6 +- out/index.html | 6 +- out/join-team.html | 6 +- out/kubernetes.html | 6 +- out/login.html | 6 +- out/register.html | 6 +- out/search.html | 6 +- out/search/[savedSearchId].html | 6 +- out/search/list.html | 6 +- out/service-map.html | 6 +- out/services.html | 6 +- out/sessions.html | 6 +- out/team.html | 6 +- out/trace/[traceId].html | 6 +- out/whats-new.json | 1 + 184 files changed, 1365 insertions(+), 1317 deletions(-) create mode 100644 out/_next/static/ObvpgRAs9tqZrfawFwWKU/_buildManifest.js rename out/_next/static/{qk_FcqQo6U0yiOJ0aM8Nf => ObvpgRAs9tqZrfawFwWKU}/_ssgManifest.js (100%) create mode 100644 out/_next/static/chunks/1021-40ca2f669b13138d.js delete mode 100644 out/_next/static/chunks/1021-4f9e66c4dfc3c92d.js create mode 100644 out/_next/static/chunks/1138-038013a7d3aef841.js delete mode 100644 out/_next/static/chunks/1339-d9a72fc6a9a62a22.js delete mode 100644 out/_next/static/chunks/1423-61c688c14e477298.js create mode 100644 out/_next/static/chunks/1440-3964c1d4dd0fbfce.js create mode 100644 out/_next/static/chunks/1575-7d7febb4ca110fea.js delete mode 100644 out/_next/static/chunks/1642-084c8e3fb1a95fc8.js create mode 100644 out/_next/static/chunks/1855-9f15bb57e9902472.js rename out/_next/static/chunks/{187e7e72-adec6481ecde3f61.js => 187e7e72-608d7bc430f038be.js} (93%) delete mode 100644 out/_next/static/chunks/2248-e31dfae67539d787.js create mode 100644 out/_next/static/chunks/2411-612b6a1d16cde50a.js delete mode 100644 out/_next/static/chunks/2570-0b9a8b50a2ea7275.js create mode 100644 out/_next/static/chunks/3172-b48e36ea0a40560e.js delete mode 100644 out/_next/static/chunks/3172-b7929bec541832ab.js delete mode 100644 out/_next/static/chunks/3365-ec574ffb0379a6e9.js rename out/_next/static/chunks/{7383-e2e611598ec264ad.js => 3415-1930219b56ca7252.js} (64%) create mode 100644 out/_next/static/chunks/3439-d27447ab2aef2a1f.js delete mode 100644 out/_next/static/chunks/3649-5bc0bb6177501220.js delete mode 100644 out/_next/static/chunks/3669-731d7130e46e5dbd.js delete mode 100644 out/_next/static/chunks/367e882f-7fb3ac49d51ad63a.js create mode 100644 out/_next/static/chunks/367e882f-8aae0545aecfcce3.js create mode 100644 out/_next/static/chunks/3722-d4513617c42e1cfd.js delete mode 100644 out/_next/static/chunks/3756-82cc455a6e2f133e.js create mode 100644 out/_next/static/chunks/3777-3220844684d194e9.js delete mode 100644 out/_next/static/chunks/3998-2f226206c28313f9.js create mode 100644 out/_next/static/chunks/3ca413d9-080727b28fc1ef26.js delete mode 100644 out/_next/static/chunks/4003-37f9edcb2900014f.js create mode 100644 out/_next/static/chunks/4310-eb811fb26be4ea3b.js create mode 100644 out/_next/static/chunks/4570-c5074349ea163977.js rename out/_next/static/chunks/{4644-ab981ed97526abae.js => 4644-5e9cade485ed6891.js} (83%) create mode 100644 out/_next/static/chunks/4719-70b065addcfc053d.js create mode 100644 out/_next/static/chunks/4751-53b929fca5a575a9.js delete mode 100644 out/_next/static/chunks/480-9ed87d1aec69fb2e.js delete mode 100644 out/_next/static/chunks/4802-be4140fb9e37c48b.js create mode 100644 out/_next/static/chunks/4802-dad74a064e1a9949.js delete mode 100644 out/_next/static/chunks/4956-806fa224e9f037d2.js create mode 100644 out/_next/static/chunks/5096-1e1211610ea37729.js create mode 100644 out/_next/static/chunks/5278-5ce721dd561f17ba.js delete mode 100644 out/_next/static/chunks/5280-b9133e2f771611cd.js create mode 100644 out/_next/static/chunks/5437-729912ac30cf0589.js create mode 100644 out/_next/static/chunks/5525-16078a8902cc8ed2.js create mode 100644 out/_next/static/chunks/5642-d5ca7da98e2ecf67.js create mode 100644 out/_next/static/chunks/6053-3bd9ef3516ecc939.js delete mode 100644 out/_next/static/chunks/6384-c2247ca9df3561dc.js delete mode 100644 out/_next/static/chunks/6421-a2afdcea0cb4d1e1.js create mode 100644 out/_next/static/chunks/6601-6e79b78f5d0a8362.js delete mode 100644 out/_next/static/chunks/6976-bb0931713ec7220e.js create mode 100644 out/_next/static/chunks/7023-996113278ae5e2c4.js delete mode 100644 out/_next/static/chunks/7082-733d301bbd73758b.js create mode 100644 out/_next/static/chunks/7179-2197784b6a850e87.js delete mode 100644 out/_next/static/chunks/7239-2cccae3c3502941c.js create mode 100644 out/_next/static/chunks/7290-4455a025d4704290.js create mode 100644 out/_next/static/chunks/7516-e9f53532c1b9ef17.js create mode 100644 out/_next/static/chunks/7539-8accf5305cb2230e.js delete mode 100644 out/_next/static/chunks/7803-2a1bbf06ab36a153.js create mode 100644 out/_next/static/chunks/7808-56a21c2a73425212.js create mode 100644 out/_next/static/chunks/7855-42a64499c9089b25.js delete mode 100644 out/_next/static/chunks/7921-1d27e24d28e0f3d0.js create mode 100644 out/_next/static/chunks/7921-fd717a6bfdf6d005.js create mode 100644 out/_next/static/chunks/8306-69a72fb231fd0a43.js create mode 100644 out/_next/static/chunks/851-4c1ea2c737d07452.js create mode 100644 out/_next/static/chunks/8744-683c92e80e486776.js create mode 100644 out/_next/static/chunks/8909-6f73f2a4eb443eb5.js create mode 100644 out/_next/static/chunks/9073-025503b8ed88d059.js delete mode 100644 out/_next/static/chunks/9073-24ddfd667b003ed6.js create mode 100644 out/_next/static/chunks/9249-4436287d562ae93f.js create mode 100644 out/_next/static/chunks/9307-64aad77bc4c24525.js delete mode 100644 out/_next/static/chunks/9409-6b017a0973880e05.js create mode 100644 out/_next/static/chunks/9470-ad575a57bbab727c.js delete mode 100644 out/_next/static/chunks/9486-1807bc22144e98f0.js delete mode 100644 out/_next/static/chunks/9620-09c59dba98d80ac1.js create mode 100644 out/_next/static/chunks/9927-b6400692d78ec3d8.js delete mode 100644 out/_next/static/chunks/9952-1cae1d2a547bbfec.js delete mode 100644 out/_next/static/chunks/f92fad27-d0cff4750eeb2536.js create mode 100644 out/_next/static/chunks/f92fad27-e6d630cda0464314.js delete mode 100644 out/_next/static/chunks/framework-3338fd78997a402b.js create mode 100644 out/_next/static/chunks/framework-a090a51e07eba377.js create mode 100644 out/_next/static/chunks/main-029e2aa9890a5cd4.js delete mode 100644 out/_next/static/chunks/main-2546fa054892fd35.js delete mode 100644 out/_next/static/chunks/pages/404-87418c6575573d12.js create mode 100644 out/_next/static/chunks/pages/404-93ab3ab93d81f374.js delete mode 100644 out/_next/static/chunks/pages/_app-154ad04215b55205.js create mode 100644 out/_next/static/chunks/pages/_app-645f5611d4f1165e.js delete mode 100644 out/_next/static/chunks/pages/_error-39388d370ed64907.js create mode 100644 out/_next/static/chunks/pages/_error-bf5fc48b24f6dfbf.js delete mode 100644 out/_next/static/chunks/pages/alerts-0645be35a7a63cb7.js create mode 100644 out/_next/static/chunks/pages/alerts-8ab1499a763dc4e2.js create mode 100644 out/_next/static/chunks/pages/alerts/[alertId]-b81073143dad8d1e.js delete mode 100644 out/_next/static/chunks/pages/benchmark-51e8760207565fe7.js create mode 100644 out/_next/static/chunks/pages/benchmark-fd50fe5a08fad118.js delete mode 100644 out/_next/static/chunks/pages/chart-3bb7bc7d65cb0bb9.js create mode 100644 out/_next/static/chunks/pages/chart-b424751635ce0ef2.js delete mode 100644 out/_next/static/chunks/pages/clickhouse-2dcb14ff1523cb71.js create mode 100644 out/_next/static/chunks/pages/clickhouse-46029ebbad38b40a.js delete mode 100644 out/_next/static/chunks/pages/dashboards-0f46a5c4818e3123.js create mode 100644 out/_next/static/chunks/pages/dashboards-30c0ac3a6efac87b.js delete mode 100644 out/_next/static/chunks/pages/dashboards/[dashboardId]-3bdd096b77cecd2d.js create mode 100644 out/_next/static/chunks/pages/dashboards/[dashboardId]-3f2ed17b7ab7ae85.js create mode 100644 out/_next/static/chunks/pages/dashboards/import-2954982890b61094.js delete mode 100644 out/_next/static/chunks/pages/dashboards/import-665816c46d7522ba.js delete mode 100644 out/_next/static/chunks/pages/dashboards/list-7ea4bafc0539f8c8.js create mode 100644 out/_next/static/chunks/pages/dashboards/list-d0276e56b0b8f8fd.js rename out/_next/static/chunks/pages/dashboards/{templates-72c446b465d6a1b2.js => templates-aaf6a30f9fb2fa26.js} (94%) delete mode 100644 out/_next/static/chunks/pages/index-4648302f008b6550.js create mode 100644 out/_next/static/chunks/pages/index-b9f6bd98ea8cef17.js create mode 100644 out/_next/static/chunks/pages/join-team-095387baf14d2c78.js delete mode 100644 out/_next/static/chunks/pages/join-team-b996f6dd9d017651.js delete mode 100644 out/_next/static/chunks/pages/kubernetes-4da49283a609a630.js create mode 100644 out/_next/static/chunks/pages/kubernetes-f99720b596b3dc31.js rename out/_next/static/chunks/pages/{login-8576e59387690ba1.js => login-91035132ee872fea.js} (63%) rename out/_next/static/chunks/pages/{register-320220b35e12c5a9.js => register-57c633ce36963a80.js} (63%) delete mode 100644 out/_next/static/chunks/pages/search-7be4124dd9337dba.js create mode 100644 out/_next/static/chunks/pages/search-bd3c81c4372ef819.js create mode 100644 out/_next/static/chunks/pages/search/[savedSearchId]-0eddbeaa4d432b83.js delete mode 100644 out/_next/static/chunks/pages/search/[savedSearchId]-db96a1b7d3768c8c.js rename out/_next/static/chunks/pages/search/{list-0a2bcbc09d68a11d.js => list-933dae978b510dca.js} (98%) delete mode 100644 out/_next/static/chunks/pages/service-map-cbf5989287b3b7eb.js create mode 100644 out/_next/static/chunks/pages/service-map-fb5c855edee5441b.js create mode 100644 out/_next/static/chunks/pages/services-3ac9a5f8a642a5b4.js delete mode 100644 out/_next/static/chunks/pages/services-3eea87748649c28e.js delete mode 100644 out/_next/static/chunks/pages/sessions-867fc7c0954908f4.js create mode 100644 out/_next/static/chunks/pages/sessions-97a6e80460208180.js delete mode 100644 out/_next/static/chunks/pages/team-01839d19aef24c51.js create mode 100644 out/_next/static/chunks/pages/team-7e1e9fcc3e6ed1ad.js rename out/_next/static/chunks/pages/trace/{[traceId]-f8491d14002831cb.js => [traceId]-e6973d245febdfdd.js} (90%) create mode 100644 out/_next/static/css/009fd613ef55e79d.css create mode 100644 out/_next/static/css/03d190b3585d4ee8.css create mode 100644 out/_next/static/css/2013a03974c2de2c.css delete mode 100644 out/_next/static/css/29d559389ff43888.css create mode 100644 out/_next/static/css/3579b36eeb887403.css delete mode 100644 out/_next/static/css/47d779dd3d3f686a.css delete mode 100644 out/_next/static/css/504e3ecc81136c97.css delete mode 100644 out/_next/static/css/588fdd2138ee5439.css create mode 100644 out/_next/static/css/5b9d831140fa295b.css delete mode 100644 out/_next/static/css/5da4ad2bdf65e510.css create mode 100644 out/_next/static/css/689c1e0928960c9c.css create mode 100644 out/_next/static/css/75207861d89f2a2c.css delete mode 100644 out/_next/static/css/778e3582c9ef6c15.css create mode 100644 out/_next/static/css/828c122b06ce0c6b.css delete mode 100644 out/_next/static/css/83391068f6a5e550.css delete mode 100644 out/_next/static/css/8c9e1c5dca1f48ae.css delete mode 100644 out/_next/static/css/904b0ced6cfbcdd8.css create mode 100644 out/_next/static/css/90cf678b3c0b5285.css create mode 100644 out/_next/static/css/9d108ab455f35d01.css create mode 100644 out/_next/static/css/9fb1d5ab558f138e.css delete mode 100644 out/_next/static/css/b4062a0298b78e72.css rename out/_next/static/css/{9cb8a6be044e50e5.css => b79bd1f5d54f1be2.css} (63%) create mode 100644 out/_next/static/css/e6d8af979878f17f.css create mode 100644 out/_next/static/css/eb6f562a40adb77f.css rename out/_next/static/css/{2d10f535c4b431bd.css => ed072ddd78b467b0.css} (70%) delete mode 100644 out/_next/static/css/efd2bd7e14ea40bf.css delete mode 100644 out/_next/static/css/fa9420c5efe0a66c.css delete mode 100644 out/_next/static/qk_FcqQo6U0yiOJ0aM8Nf/_buildManifest.js create mode 100644 out/alerts/[alertId].html create mode 100644 out/whats-new.json diff --git a/HYPERDX_VERSION b/HYPERDX_VERSION index f013568..c94fd31 100644 --- a/HYPERDX_VERSION +++ b/HYPERDX_VERSION @@ -1 +1 @@ -2.29.0 +2.37.0 diff --git a/out/404.html b/out/404.html index 2ffd6fb..38ac35d 100644 --- a/out/404.html +++ b/out/404.html @@ -1,4 +1,4 @@ -404: This page could not be found

404

This page could not be found.

\ No newline at end of file +:root[data-mantine-color-scheme="light"], :host([data-mantine-color-scheme="light"]){--mantine-color-anchor: var(--mantine-color-yellow-6);--mantine-color-yellow-outline-hover: rgba(149, 153, 0, 0.05);}

404

This page could not be found.

\ No newline at end of file diff --git a/out/__ENV.js b/out/__ENV.js index baeed1d..899178a 100644 --- a/out/__ENV.js +++ b/out/__ENV.js @@ -1 +1 @@ -window.__ENV = {"NEXT_PUBLIC_THEME":"clickstack","NEXT_PUBLIC_IS_LOCAL_MODE":"true","NEXT_PUBLIC_CLICKHOUSE_BUILD":"true","NEXT_PUBLIC_APP_VERSION":"2.29.0"}; \ No newline at end of file +window.__ENV = {"NEXT_PUBLIC_THEME":"clickstack","NEXT_PUBLIC_IS_LOCAL_MODE":"true","NEXT_PUBLIC_CLICKHOUSE_BUILD":"true","NEXT_PUBLIC_APP_VERSION":"2.37.0"}; \ No newline at end of file diff --git a/out/_next/static/ObvpgRAs9tqZrfawFwWKU/_buildManifest.js b/out/_next/static/ObvpgRAs9tqZrfawFwWKU/_buildManifest.js new file mode 100644 index 0000000..75e63c8 --- /dev/null +++ b/out/_next/static/ObvpgRAs9tqZrfawFwWKU/_buildManifest.js @@ -0,0 +1 @@ +self.__BUILD_MANIFEST=function(s,c,a,t,e,b,i,d,h,r,n,f,u,k,j,o,p,g,l,m,_,I,v,B,F,S,A,N,D,y,E,L,M,T,U,C,H,R,w,x,P,q,z,G,J,K,O,Q,V,W,X,Y,Z,$,ss,sc,sa,st){return{__rewrites:{afterFiles:[],beforeFiles:[],fallback:[]},__routerFilterStatic:{numItems:0,errorRate:1e-4,numBits:0,numHashes:K,bitArray:[]},__routerFilterDynamic:{numItems:0,errorRate:1e-4,numBits:0,numHashes:K,bitArray:[]},"/":[s,c,a,"static/chunks/pages/index-b9f6bd98ea8cef17.js"],"/404":["static/chunks/pages/404-93ab3ab93d81f374.js"],"/_error":["static/chunks/pages/_error-bf5fc48b24f6dfbf.js"],"/alerts":[e,b,f,s,c,t,i,h,n,u,k,j,p,m,M,a,d,r,o,g,T,x,O,"static/css/2013a03974c2de2c.css","static/chunks/pages/alerts-8ab1499a763dc4e2.js"],"/alerts/[alertId]":[e,b,f,s,c,t,i,h,n,u,k,j,p,_,M,a,d,r,o,g,I,T,x,O,"static/css/5b9d831140fa295b.css","static/chunks/pages/alerts/[alertId]-b81073143dad8d1e.js"],"/benchmark":[e,b,f,U,s,c,t,i,n,u,j,p,l,m,F,C,a,d,g,S,"static/css/b79bd1f5d54f1be2.css","static/chunks/pages/benchmark-fd50fe5a08fad118.js"],"/careers":[s,"static/chunks/pages/careers-e568b41f5f5e6b68.js"],"/chart":[e,b,f,A,D,U,s,c,t,i,h,n,u,k,j,p,l,_,m,v,N,F,y,M,C,H,P,a,d,r,o,g,B,I,S,E,L,T,R,q,"static/css/9fb1d5ab558f138e.css","static/chunks/pages/chart-b424751635ce0ef2.js"],"/clickhouse":[e,b,f,A,D,U,s,c,t,i,h,n,u,k,j,p,l,_,m,v,N,F,y,C,H,a,d,r,o,g,B,I,S,E,L,Q,"static/chunks/pages/clickhouse-46029ebbad38b40a.js"],"/dashboards":[e,b,f,A,D,U,s,c,t,i,h,n,u,k,j,p,l,_,m,v,N,F,y,M,C,H,P,V,a,d,r,o,g,B,I,S,E,L,T,R,w,q,z,W,X,"static/chunks/pages/dashboards-30c0ac3a6efac87b.js"],"/dashboards/import":[e,b,s,c,t,i,h,n,"static/chunks/4644-5e9cade485ed6891.js",a,d,r,Y,G,"static/chunks/pages/dashboards/import-2954982890b61094.js"],"/dashboards/list":[e,b,s,c,t,i,h,Z,a,d,r,$,ss,"static/chunks/pages/dashboards/list-d0276e56b0b8f8fd.js"],"/dashboards/templates":[e,b,s,c,t,i,h,a,d,r,Y,G,"static/chunks/pages/dashboards/templates-aaf6a30f9fb2fa26.js"],"/dashboards/[dashboardId]":[e,b,f,A,D,U,s,c,t,i,h,n,u,k,j,p,l,_,m,v,N,F,y,M,C,H,P,V,a,d,r,o,g,B,I,S,E,L,T,R,w,q,z,W,X,"static/chunks/pages/dashboards/[dashboardId]-3f2ed17b7ab7ae85.js"],"/join-team":[J,"static/chunks/pages/join-team-095387baf14d2c78.js"],"/kubernetes":[e,b,f,A,D,s,c,t,i,h,n,u,k,j,p,l,_,m,v,N,F,y,a,d,r,o,g,B,I,S,E,L,Q,"static/chunks/pages/kubernetes-f99720b596b3dc31.js"],"/login":[s,c,t,n,J,a,sc,"static/chunks/pages/login-91035132ee872fea.js"],"/register":[s,c,t,n,J,a,sc,"static/chunks/pages/register-57c633ce36963a80.js"],"/search":[e,b,f,A,D,s,c,t,i,h,n,u,k,j,p,l,_,m,v,N,F,y,M,H,a,d,r,o,g,B,I,S,E,L,T,R,w,sa,st,"static/chunks/pages/search-bd3c81c4372ef819.js"],"/search/list":[e,b,s,c,t,i,h,Z,a,d,r,$,ss,"static/chunks/pages/search/list-933dae978b510dca.js"],"/search/[savedSearchId]":[e,b,f,A,D,s,c,t,i,h,n,u,k,j,p,l,_,m,v,N,F,y,M,H,a,d,r,o,g,B,I,S,E,L,T,R,w,sa,st,"static/chunks/pages/search/[savedSearchId]-0eddbeaa4d432b83.js"],"/service-map":[e,b,f,A,s,c,t,i,h,n,u,k,j,l,_,v,N,a,d,r,o,B,I,"static/css/828c122b06ce0c6b.css","static/chunks/pages/service-map-fb5c855edee5441b.js"],"/services":[e,b,f,A,D,U,s,c,t,i,h,n,u,k,j,p,l,_,m,v,N,F,y,C,a,d,r,o,g,B,I,S,E,L,z,"static/css/009fd613ef55e79d.css","static/chunks/pages/services-3ac9a5f8a642a5b4.js"],"/sessions":[e,b,f,A,D,s,c,t,i,h,n,u,k,j,p,l,_,m,v,N,F,y,a,d,r,o,g,B,I,S,E,L,"static/css/03d190b3585d4ee8.css","static/chunks/pages/sessions-97a6e80460208180.js"],"/team":[e,b,f,s,c,t,i,h,n,u,k,l,v,a,d,r,o,B,x,"static/css/e6d8af979878f17f.css","static/chunks/pages/team-7e1e9fcc3e6ed1ad.js"],"/trace/[traceId]":[e,b,s,c,t,i,h,a,d,r,G,"static/chunks/pages/trace/[traceId]-e6973d245febdfdd.js"],sortedPages:["/","/404","/_app","/_error","/alerts","/alerts/[alertId]","/benchmark","/careers","/chart","/clickhouse","/dashboards","/dashboards/import","/dashboards/list","/dashboards/templates","/dashboards/[dashboardId]","/join-team","/kubernetes","/login","/register","/search","/search/list","/search/[savedSearchId]","/service-map","/services","/sessions","/team","/trace/[traceId]"]}}("static/chunks/2482-a039eaed9ab9a313.js","static/chunks/9470-ad575a57bbab727c.js","static/chunks/9073-025503b8ed88d059.js","static/chunks/4802-dad74a064e1a9949.js","static/chunks/367e882f-8aae0545aecfcce3.js","static/chunks/4e973673-bf8d6095de7b38f9.js","static/chunks/7023-996113278ae5e2c4.js","static/chunks/1021-40ca2f669b13138d.js","static/chunks/5096-1e1211610ea37729.js","static/chunks/1575-7d7febb4ca110fea.js","static/chunks/1909-f4f65d5367297444.js","static/chunks/187e7e72-608d7bc430f038be.js","static/chunks/8909-6f73f2a4eb443eb5.js","static/chunks/5437-729912ac30cf0589.js","static/chunks/9249-4436287d562ae93f.js","static/chunks/3439-d27447ab2aef2a1f.js","static/chunks/7855-42a64499c9089b25.js","static/chunks/5278-5ce721dd561f17ba.js","static/chunks/5525-16078a8902cc8ed2.js","static/chunks/1440-3964c1d4dd0fbfce.js","static/chunks/1855-9f15bb57e9902472.js","static/chunks/2411-612b6a1d16cde50a.js","static/chunks/7539-8accf5305cb2230e.js","static/chunks/3172-b48e36ea0a40560e.js","static/chunks/3777-3220844684d194e9.js","static/chunks/8744-683c92e80e486776.js","static/chunks/f92fad27-e6d630cda0464314.js","static/chunks/1138-038013a7d3aef841.js","static/chunks/3ca413d9-080727b28fc1ef26.js","static/chunks/6053-3bd9ef3516ecc939.js","static/css/90cf678b3c0b5285.css","static/chunks/4310-eb811fb26be4ea3b.js","static/chunks/3415-1930219b56ca7252.js","static/chunks/7179-2197784b6a850e87.js","static/chunks/8e6dcae5-b2cb689f848b6e52.js","static/chunks/3722-d4513617c42e1cfd.js","static/chunks/6006-03f92ad1d4f59160.js","static/chunks/4719-70b065addcfc053d.js","static/chunks/5642-d5ca7da98e2ecf67.js","static/chunks/9927-b6400692d78ec3d8.js","static/chunks/4570-c5074349ea163977.js","static/chunks/4751-53b929fca5a575a9.js","static/chunks/7516-e9f53532c1b9ef17.js","static/css/3579b36eeb887403.css","static/chunks/7074-42d7c69b8788935d.js",NaN,"static/chunks/9307-64aad77bc4c24525.js","static/css/eb6f562a40adb77f.css","static/chunks/851-4c1ea2c737d07452.js","static/chunks/6601-6e79b78f5d0a8362.js","static/css/689c1e0928960c9c.css","static/chunks/7921-fd717a6bfdf6d005.js","static/chunks/8306-69a72fb231fd0a43.js","static/chunks/5673-9c665a7ca8b8eff6.js","static/css/75207861d89f2a2c.css","static/chunks/7290-4455a025d4704290.js","static/chunks/7808-56a21c2a73425212.js","static/css/9d108ab455f35d01.css"),self.__BUILD_MANIFEST_CB&&self.__BUILD_MANIFEST_CB(); \ No newline at end of file diff --git a/out/_next/static/qk_FcqQo6U0yiOJ0aM8Nf/_ssgManifest.js b/out/_next/static/ObvpgRAs9tqZrfawFwWKU/_ssgManifest.js similarity index 100% rename from out/_next/static/qk_FcqQo6U0yiOJ0aM8Nf/_ssgManifest.js rename to out/_next/static/ObvpgRAs9tqZrfawFwWKU/_ssgManifest.js diff --git a/out/_next/static/chunks/1021-40ca2f669b13138d.js b/out/_next/static/chunks/1021-40ca2f669b13138d.js new file mode 100644 index 0000000..5d3c56d --- /dev/null +++ b/out/_next/static/chunks/1021-40ca2f669b13138d.js @@ -0,0 +1,712 @@ +"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[1021],{787:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0});var a=t.b=class extends Error{constructor(e,t){super(t),this.macro=e,this.name="MacroExpansionError"}},n=t.c=class extends a{constructor(e,t,a,n){super(e,n),this.variableName=t,this.availableVariables=a,this.name="UnknownVariableError"}};t.a=class extends Error{constructor(){super("Failed to parse macro arguments"),this.name="MalformedMacroArgsError"}},t.b=a,t.c=n},2615:(e,t,a)=>{var n=a(95384);a(69498),a(62637),a(68798),a(7837),a(40313),a(787),n.x,t.qT=n.w,n.z,t.dd=n.E,t.YR=n.D,n.y,n.A,n.C,t.bn=n.B},3145:(e,t,a)=>{var n=a(95384);a(69498),a(62637),a(68798),a(7837),a(40313),a(787),t.qs=n.F,n.G,n.I,n.H,t.yb=n.M,t._q=n.J,n.K,t.VO=n.L},7565:(e,t,a)=>{a.d(t,{H:()=>l,a:()=>o});var n=a(6029),r=a(75155);a(55729);var i=a(76089),s=a(57820);let o=()=>{let e,t=(0,r.c)(3),{userPreferences:a}=(0,s.HW)(),{isUTC:n,timeFormat:o}=a;return t[0]!==n||t[1]!==o?(e=(e,t)=>{let{format:a}=void 0===t?{}:t;try{let t=e instanceof Date?e:new Date(e);return(0,i.Yq)(t,{clock:o,isUTC:n,format:a})}catch(t){return console.error(t,e),"Unknown date"}},t[0]=n,t[1]=o,t[2]=e):e=t[2],e},l=e=>{let t,a,i=(0,r.c)(6),{value:s,format:l}=e,u=o();return s?(i[0]!==l||i[1]!==u||i[2]!==s?(t=u(s,{format:l}),i[0]=l,i[1]=u,i[2]=s,i[3]=t):t=i[3],i[4]!==t?(a=(0,n.jsx)(n.Fragment,{children:t}),i[4]=t,i[5]=a):a=i[5],a):null}},7837:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0});var a=["trace"];function n(e){return"configType"in e&&"sql"===e.configType}function r(e){return"configType"in e&&"promql"===e.configType}function i(e){return"configType"in e&&"sql"===e.configType}function s(e){return"configType"in e&&"promql"===e.configType}t.a=a,t.b=function(e){return a.includes(e.kind)},t.c=n,t.d=r,t.e=function(e){return!n(e)&&!r(e)},t.f=i,t.g=s,t.h=function(e){return!i(e)&&!s(e)},t.i=function(e){return"markdown"!==e}},20123:(e,t,a)=>{var n=a(95384);a(69498),a(62637),a(68798),a(7837),a(40313),a(787),t.$P=n._b,n.Sb,t.hd=n.Rb,t.aI=n.ec,t.Cc=n.dc,t.O9=n.cc,t.Hm=n.gc,t.sl=n.bc,t.t5=n.$b,t.Iv=n.ac,n.Vb,n.Wb,t.mA=n.Ub,t.U4=n.fc,t.o1=n.Tb,t.BC=n.Zb,t.eT=n.Xb,t.uh=n.Yb,t.c$=n.hc},35467:(e,t,a)=>{var n=a(95384);a(69498),a(62637),a(68798),a(7837),a(40313),a(787),n.Z,t.p1=n.W,t.A2=n.N,t.kg=n.T,t.D7=n.aa,t.ou=n.U,t.rj=n.P,n.S,t.bZ=n.Y,n.R,t.P1=n.ba,n.O,n.da,t.zo=n.ca,t.Zo=n.Q,t.Xt=n.X,t.l6=n.$,t.k$=n._,n.V},35871:(e,t,a)=>{a.d(t,{A:()=>u});var n=a(6029),r=a(75155),i=a(76089),s=a(17183),o=a(45749),l=a(7565);function u(e){let t,a,u,c,m,d=(0,r.c)(12),{originalDateRange:p,effectiveDateRange:f,mvGranularity:g}=e,h=(0,l.a)();if(!f||(0,i._p)(f,p))return null;d[0]!==f[0]||d[1]!==h?(t=h(f[0]),d[0]=f[0],d[1]=h,d[2]=t):t=d[2],d[3]!==f[1]||d[4]!==h?(a=h(f[1]),d[3]=f[1],d[4]=h,d[5]=a):a=d[5],d[6]!==t||d[7]!==a?(u=[t,a],d[6]=t,d[7]=a,d[8]=u):u=d[8];let[y,b]=u,_=g?`Querying ${y} - ${b} due to ${g} rollups in query acceleration.`:`Querying ${y} - ${b} to show complete intervals.`;return d[9]===Symbol.for("react.memo_cache_sentinel")?(c=(0,n.jsx)(o.A,{size:16,color:"var(--color-text)"}),d[9]=c):c=d[9],d[10]!==_?(m=(0,n.jsx)(s.m,{multiline:!0,maw:500,label:_,children:c}),d[10]=_,d[11]=m):m=d[11],m}},39741:(e,t,a)=>{var n=a(95384);a(69498),a(62637),a(68798),a(7837),a(40313),a(787),t.EO=n.ra,n.ta,n.xa,n.ya,t.No=n.Ha,n.va,n.ua,n.sa,t.HB=n.Ia,n.Fa,n.Da,n.Ga,n.Aa,n.wa,t.ut=n.Ba,t.$t=n.Ca,t.OJ=n.za,t.Sw=n.Ea},43152:(e,t,a)=>{a.d(t,{gT:()=>S,Hx:()=>T,WG:()=>A,zE:()=>F,x5:()=>M,p2:()=>L,nH:()=>D,JD:()=>U,S:()=>x,xh:()=>O,VB:()=>Z,VH:()=>Y,m9:()=>ee,A7:()=>X,DY:()=>d.DY,_t:()=>d._t,Z7:()=>d.qt,O7:()=>w,ik:()=>Q,gx:()=>j,U5:()=>B,zg:()=>K,r4:()=>P,VP:()=>k,eY:()=>q,xu:()=>et,Ht:()=>R,W6:()=>C,rP:()=>G,GJ:()=>N});var n=a(6029),r=a(75155),i=a(86508),s=a(11370),o=a(80519),l=a.n(o),u=a(6663),c=a(35467),m=a(67270),d=a(76089),p=a(62798),f=a(82641),g=a(39741),h=a(60665),y=a(35871),b=a(61410);let _={"k8s.pod.cpu.utilization":{newName:"k8s.pod.cpu.usage",versionThreshold:"0.125.0"},"k8s.node.cpu.utilization":{newName:"k8s.node.cpu.usage",versionThreshold:"0.125.0"},"container.cpu.utilization":{newName:"container.cpu.usage",versionThreshold:"0.125.0"}};var $=a(92917);let S=[{value:"count",label:"Count of Events",isAttributable:!1},{value:"sum",label:"Sum",isAttributable:!1},{value:"p99",label:"99th Percentile"},{value:"p95",label:"95th Percentile"},{value:"p90",label:"90th Percentile"},{value:"p50",label:"Median"},{value:"avg",label:"Average"},{value:"max",label:"Maximum"},{value:"min",label:"Minimum"},{value:"count_distinct",label:"Count Distinct",isAttributable:!1},{value:"any",label:"Any"},{value:"increase",label:"Increase",isAttributable:!1},{value:"none",label:"Custom"}],A={name:"",select:[{aggFn:"count",aggCondition:"",aggConditionLanguage:"lucene",valueExpression:""}],where:"",whereLanguage:"lucene",displayType:f.t2.Line,granularity:"auto",alignDateRangeToGranularity:!0};function v(e,t){return"auto"===e||null==e?(0,d.tA)(t,80):e}function E(e,t,a){return!1===t?e:(0,d.Ol)(e,a)}let x=b._N;function w(e){let t=(0,p.O3)(e)&&(0,d.WG)(e.seriesLimit)?e.seriesLimit:void 0,a=v(e.granularity,e.dateRange),n=E(e.dateRange,e.alignDateRangeToGranularity,a),r=!1===e.alignDateRangeToGranularity&&(e.dateRangeEndInclusive??!1);return(0,p.O3)(e)?{...e,dateRange:n,dateRangeEndInclusive:r,granularity:a,limit:{limit:1e5},seriesLimit:t}:{...e,dateRangeEndInclusive:r,dateRange:n,granularity:a}}function N(e){let t,a,n,i=(0,r.c)(10);i[0]!==e.alignDateRangeToGranularity||i[1]!==e.dateRange||i[2]!==e.granularity?(t=v(e.granularity,e.dateRange),a=E(e.dateRange,e.alignDateRangeToGranularity,t),i[0]=e.alignDateRangeToGranularity,i[1]=e.dateRange,i[2]=e.granularity,i[3]=t,i[4]=a):(t=i[3],a=i[4]);let s=a;return i[5]!==e.displayType||i[6]!==e.fillNulls||i[7]!==s||i[8]!==t?(n={displayType:e.displayType,fillNulls:e.fillNulls,dateRange:s,granularity:t},i[5]=e.displayType,i[6]=e.fillNulls,i[7]=s,i[8]=t,i[9]=n):n=i[9],n}let T=" \xb7 ",I=" (previous)";function k(e,t){for(let a of e)if(!a.isDashed&&a.currentPeriodKey.split(T).includes(t))return a.color}function C(e,t){let[a,n]=t.split(" "),r=Number.parseInt(a),i=Math.floor;switch(n){case"second":return new Date(Date.UTC(e.getUTCFullYear(),e.getUTCMonth(),e.getUTCDate(),e.getUTCHours(),e.getUTCMinutes(),i(e.getUTCSeconds()/r)*r));case"minute":return new Date(Date.UTC(e.getUTCFullYear(),e.getUTCMonth(),e.getUTCDate(),e.getUTCHours(),i(e.getUTCMinutes()/r)*r));case"hour":return new Date(Date.UTC(e.getUTCFullYear(),e.getUTCMonth(),e.getUTCDate(),i(e.getUTCHours()/r)*r));case"day":return new Date(1e3*(i(e.getTime()/1e3/60/60/24/r)*r)*86400);default:return e}}function R(e,t,a){let n=[],r=C(e,a),s=(0,d.qL)(a);for(;r{let t=e.toLowerCase();return["count","countIf","countDistinct","sum","sumIf","avg","avgIf","min","max","any","anyLast","groupArray","groupArrayInsertAt","groupArrayMovingAvg","groupArraySample","groupUniqArray","groupUniqArrayIf","groupArrayIntersect","groupArrayIntersectIf","groupArrayReduce","groupBitmap","groupBitmapIf","groupBitmapOr","groupBitmapXor","quantile","quantileIf","quantileExact","quantileExactWeighted","quantileTiming","quantileTimingWeighted","quantileTDigest","quantileTDigestWeighted","quantileBFloat16","quantileBFloat16Weighted","quantiles","median","medianExact","medianTDigest","medianBFloat16","stddevPop","stddevPopIf","stddevSamp","stddevSampIf","varPop","varPopIf","varSamp","varSampIf","covarPop","covarSamp","corr","uniq","uniqExact","uniqCombined","uniqCombined64","uniqHLL12","uniqTheta","groupBitAnd","groupBitOr","groupBitXor","groupArrayMap","groupArrayTuple","groupArraySorted","topK","topKIf","topKWeighted","argMin","argMax","minMap","maxMap","runningDifference","retention","sequenceCount","sequenceMatch","histogram","simpleLinearRegression","stochasticLinearRegression","categoricalInformationValue","sumMap","sumMapFiltered","sumWithOverflow","entropy","skewPop","skewSamp","kurtPop","kurtSamp"].some(e=>t.includes(e.toLowerCase()+"("))},M={factor:1,output:"number",mantissa:0,thousandSeparated:!0},O={factor:1,output:"number",mantissa:2,thousandSeparated:!0,unit:"ms"},F={output:"percent",mantissa:0},L={output:"number",mantissa:2},D={output:"byte"},U={output:"byte"};function V(e,t){return(0,c.P1)(e,[c.A2.Number])?.filter(e=>!t.has(e.name))}function W(e){return(0,c.P1)(e,[c.A2.String,c.A2.Map,c.A2.Array])}function B(e,t,a=!0){if(null==e.meta)throw Error("No meta data found in response");if(0===e.data.length)return[];let n=V(e.meta,new Set)??[];if(0===n.length)throw Error(`No value columns found in result column metadata. Make sure a numeric column exists in the result set. + +Result column metadata: ${JSON.stringify(e.meta)}`);let r=n[0].name,i=W(e.meta),s=e.data.map(e=>{let t=i?.length?i.map(({name:t})=>e[t]).join(" - "):r,a=e[r];return{label:t,value:"number"==typeof a?a:Number.parseFloat(`${a}`)}}).filter(e=>!isNaN(e.value)&&isFinite(e.value));return a&&s.sort((e,t)=>t.value-e.value),s.slice(0,500).map((e,a)=>({...e,color:t(a,e.label)}))}function P(e){let[t,a]=e,n=(0,s.A)(a,t);return[new Date(t.getTime()-1e3*n),new Date(a.getTime()-1e3*n)]}function j(e,t,a,n){let r;if(null==e||null==a)return;let i=1/0;for(let n of t){let t=e.get(n);if(null==t)continue;let s=Math.abs(t-a);sn))return r}function H({response:e,lineDataMap:t,tsBucketMap:a,source:n,previousPeriodOffsetSeconds:r,isPreviousPeriod:i,hiddenSeries:s=[]}){let{meta:o,data:l}=e;if(null==o)throw Error("No metadata found in response");let u=(0,c.zo)(o);if(null==u)throw Error(`No timestamp column found in result column metadata: ${JSON.stringify(o)}`);let m=V(o,new Set(s))??[],d=W(o)??[],p=1===m.length,g=d.length>0,h=d.map(e=>e.name),y=m.map(e=>e.name),b=p&&g,_=!!n&&1===d.length&&(n.kind===f.GL.Log?d[0].name===n.severityTextExpression:n.kind===f.GL.Trace&&d[0].name===n.statusCodeExpression),S=u.name,A=i?r:0,v=new Map;for(let e of l){let n=e[S],r=v.get(n);void 0===r&&(r=Math.round(new Date(n).getTime()/1e3+A),v.set(n,r));let s=a.get(r);null==s&&(s={[S]:r},a.set(r,s));let o=h.map(t=>{let a=e[t];return"object"==typeof a&&null!==a?JSON.stringify(a):a}),l=o.join(T);for(let a of y){let n=b?l:g?[a,...o].join(T):a,r=i?`${n}${I}`:n,u=e[a],c="number"==typeof u?u:Number.parseFloat(u);s[r]=c;let m=t[r];null==m?t[r]={dataKey:r,currentPeriodKey:n,previousPeriodKey:`${n}${I}`,displayName:r,valueColumnName:a,color:_?(0,$.aw)(e[h[0]]):void 0,isDashed:i}:_&&(m.color=(0,$.aw)(e[h[0]]))}}}function K({currentPeriodResponse:e,previousPeriodResponse:t,dateRange:a,granularity:n,generateEmptyBuckets:r=!0,source:i,hiddenSeries:s=[],previousPeriodOffsetSeconds:o=0,maxSeries:l=b.yr}){var u;let m,d,p=e.meta;if(null==p)throw Error("No meta data found in response");let f=(0,c.zo)(p),g=V(p,new Set(s))??[],h=W(p)??[],y=1===g.length;if(null==f)throw Error(`No timestamp column found in result column metadata. Make sure a Date/DateTime column exists in the result set. + +Result column metadata: ${JSON.stringify(p)}`);if(0===g.length)throw Error(`No value columns found in result column metadata. Make sure a numeric column exists in the result set. + +Result column metadata: ${JSON.stringify(p)}`);let _=new Map,S={};H({response:e,lineDataMap:S,tsBucketMap:_,source:i,isPreviousPeriod:!1,previousPeriodOffsetSeconds:o,hiddenSeries:s}),null!=t&&H({response:t,lineDataMap:S,tsBucketMap:_,source:i,isPreviousPeriod:!0,previousPeriodOffsetSeconds:o,hiddenSeries:s});let A=(0,$.EA)(),v=Object.values(S).sort((e,t)=>A.findIndex(t=>t===e.color)-A.findIndex(e=>e===t.color)),E=0,x=new Map,w=[],N=new Set,I=new Set,k=g.length>1&&h.length>0,C=e=>{if(!k)return e.currentPeriodKey;let t=`${e.valueColumnName}${T}`;return e.currentPeriodKey.startsWith(t)?e.currentPeriodKey.slice(t.length):e.currentPeriodKey};for(let e of v){let t=C(e);x.set(e.dataKey,t),N.has(t)||(N.add(t),w.push(t)),e.isDashed||I.add(t)}if(w.length>l){E=w.length-l;let e=new Map;for(let t of _.values())for(let[a,n]of Object.entries(t)){if("number"!=typeof n||!Number.isFinite(n))continue;let t=x.get(a);if(null==t)continue;let r=Math.abs(n),i=e.get(t);(null==i||r>i)&&e.set(t,r)}let t=(t,a)=>{let n=(e.get(a.groupKey)??0)-(e.get(t.groupKey)??0);return 0!==n?n:t.index-a.index},a=new Set([...w.map((e,t)=>({groupKey:e,index:t})).filter(({groupKey:e})=>I.has(e)).sort(t),...w.map((e,t)=>({groupKey:e,index:t})).filter(({groupKey:e})=>!I.has(e)).sort(t)].slice(0,l).map(({groupKey:e})=>e)),n=new Set(v.filter(e=>a.has(C(e))).map(e=>e.dataKey));for(let e of(v=v.filter(e=>a.has(C(e))),_.values()))for(let t of Object.keys(e))t===f.name||n.has(t)||delete e[t]}r&&null!=n&&R(a[0],a[1],n).forEach(e=>{let t=e.getTime()/1e3,a=_.get(t);if(null==a){let e={[f.name]:t};for(let t of v)e[t.dataKey]=0;_.set(t,e)}else{for(let e of v)null==a[e.dataKey]&&(a[e.dataKey]=0);_.set(t,a)}});let q=Array.from(_.values()).sort((e,t)=>e[f.name]-t[f.name]),M=(u=v,m=new Map,d=0,u.map(e=>{let t=e.currentPeriodKey;return m.has(t)?e.color=m.get(t):(e.color||(e.color=(0,$.ob)(d++,e.displayName??e.dataKey)),m.set(t,e.color)),e})),O=new Set(M.map(e=>C(e))).size;return{graphResults:q,timestampColumn:f,lineData:M,groupColumns:h.map(e=>e.name),valueColumns:g.map(e=>e.name),isSingleValueColumn:y,hiddenSeriesCount:E,renderedSeriesCount:O}}let z=e=>{if(null==e)return e;if(e.endsWith("_rate"))return z(e.replace("_rate",""));if("p50"===e||"p90"===e||"p95"===e||"p99"===e)return"quantile";if("count_per_sec"===e||"count_per_min"===e||"count_per_hour"===e)return"count";if(["avg","count","count_distinct","last_value","max","min","sum"].includes(e))return e;throw Error(`Unsupported aggregation function in v2: ${e}`)},Q=(e,t)=>{let{series:a,granularity:n,dateRange:r,displayType:i="line",fillNulls:s}=e;if(a.length<1)throw Error("series is required");let o=a[0],c="stacked_bar"===i?f.t2.StackedBar:f.t2.Line;if("logs"===o.table)throw Error("IMPLEMENT ME (logs)");if("metrics"===o.table){let e;if(null==t.metric)throw Error("source.metric is required for metrics");return{select:a.map(e=>{let t=e.field??"",[a,n]=t.split(" - ").map(e=>e.trim()),r=function(e){let t=_[e];if(t)return l().format("MetricName IN (?)",[[e,t.newName]])}(a),i=u.fc(f.SX).parse(n?.toLowerCase());return{aggFn:z(e.aggFn),metricType:i,valueExpression:t,metricName:a,metricNameSql:r,aggConditionLanguage:"lucene",aggCondition:e.where}}),from:t.metric?.from,numberFormat:o.numberFormat,groupBy:(e=t.metric,o.groupBy.map(t=>t.startsWith("k8s")?`${e.resourceAttributesExpression}['${t}']`:t).join(",")),dateRange:r,connection:t.metric?.connection,metricTables:t.metric?.metricTables,timestampValueExpression:t.metric?.timestampValueExpression,granularity:n,where:"",fillNulls:s,displayType:c}}throw Error(`unsupported table in v2: ${o.table}`)};function G(e){try{return(0,g.ut)(e)}catch{return e}}function Y({source:e,config:t,dateRange:a,groupFilters:n,valueRangeFilter:r}){if(!e?.id)return null;let i=G({...t,whereLanguage:t.whereLanguage||"lucene"}),s=(0,m.bv)(i);if(s&&null==(e.kind===f.GL.Metric||e.kind===f.GL.Trace?e.logSourceId:void 0))return h.$e.show({color:"yellow",message:"No log source is associated with the selected metric source."}),null;let o=i.where,u=i.whereLanguage||"lucene";0===o.length&&Array.isArray(i.select)&&1===i.select.length&&(o=i.select[0].aggCondition??"",u=i.select[0].aggConditionLanguage??"lucene");let c=[];if(n&&n.length>0&&n.forEach(({column:e,value:t})=>{if(e&&null!=t){let a=`${e} IN (${l().escape(t)})`;c.push({type:"sql",condition:a})}}),r){let{expression:e,value:t,threshold:a=.05}=r;if(!q(e)){let n=`${e} BETWEEN ${l().escape(t*(1-a))} AND ${l().escape(t*(1+a))}`;c.push({type:"sql",condition:n})}}let d=a[0].getTime(),p=a[1].getTime(),g={source:e?.id??"",where:o,whereLanguage:u,filters:JSON.stringify([...i.filters??[],...c]),isLive:"false",from:d.toString(),to:p.toString()};return s&&(g.where="",g.whereLanguage="lucene",g.filters=JSON.stringify([]),g.source=(e.kind===f.GL.Metric||e.kind===f.GL.Trace?e.logSourceId:void 0)??""),i.eventTableSelect&&(g.select=i.eventTableSelect),`/search?${new URLSearchParams(g).toString()}`}function Z({source:e,config:t,dateRange:a}){if(!t||!e||!(0,p.O3)(t)||null!=t.metricTables||!(0,f.sx)(e))return null;if(Array.isArray(t.select)){let e=t.select.some(e=>null!=e.aggCondition&&e.aggCondition.trim().length>0),a=1===t.select.length&&0===t.where.length;if(e&&!a)return null}return Y({source:e,config:t,dateRange:a})}function J(e){return e?"string"==typeof e?e.split(",").map(e=>e.trim()):e.map(e=>"string"==typeof e?e:e.valueExpression):[]}function X({row:e,source:t,config:a,dateRange:n}){let r;if(!t?.id)return null;let i=G(a),s=[];J(i.groupBy).forEach(t=>{null!=e[t]&&s.push({column:t,value:e[t]})});let o=i.select?.[0];if(o){let t="string"==typeof o?void 0:o.aggFn;if(S.find(e=>e.value===t)?.isAttributable!==!1){let t="string"==typeof o?o:o.valueExpression,a=new Set(J(i.groupBy)),n=Object.keys(e).find(e=>!a.has(e)),s=n?e[n]:void 0;null!=s&&"number"==typeof s&&(r={expression:t,value:s})}}return Y({source:t,config:i,dateRange:n,groupFilters:s,valueRangeFilter:r})}function ee({mvOptimizationData:e,originalDateRange:t}){let a=e?.optimizedConfig?.dateRange;if(!a)return null;let r=e?.explanations.find(e=>e.success)?.mvConfig.minGranularity;return(0,n.jsx)(y.A,{originalDateRange:t,effectiveDateRange:a,mvGranularity:r},"date-range-indicator")}function et(e){return!1!==e}},49672:(e,t,a)=>{a.d(t,{VH:()=>p,W:()=>m,fu:()=>d,uI:()=>g});var n=a(75155),r=a(35467),i=a(88459),s=a(12482),o=a(98142),l=a(93108),u=a(6876),c=a(61410);let m=(e={})=>{if(o.VO){let t=(0,l.xZ)();return 0===t.length?(console.warn("No local connection found"),new i.aP({host:"",...e})):new i.aP({host:t[0].host,username:t[0].username,password:t[0].password,...e})}return new i.aP({host:"/api/clickhouse-proxy",...e})},d=(e={})=>{let{data:t}=u.Ay.useMe(),a=t?.team?.queryTimeout;return void 0!==a?e.queryTimeout=a:e.queryTimeout=c.rb,m(e)};function p(e,t){let a,r,i,o,l=(0,n.c)(8),{connectionId:u}=e;l[0]===Symbol.for("react.memo_cache_sentinel")?(a=m(),l[0]=a):a=l[0];let c=a;return l[1]!==u?(r=["direct_datasources/databases",u],i=async()=>await c.query({query:"SHOW DATABASES",connectionId:u}).then(f),l[1]=u,l[2]=r,l[3]=i):(r=l[2],i=l[3]),l[4]!==t||l[5]!==r||l[6]!==i?(o={queryKey:r,queryFn:i,staleTime:3e5,...t},l[4]=t,l[5]=r,l[6]=i,l[7]=o):o=l[7],(0,s.I)(o)}function f(e){return e.json()}function g({database:e,connectionId:t},a){let n=m();return(0,s.I)({queryKey:[`direct_datasources/databases/${e}/tables`,t],queryFn:async()=>{let a=(0,r.kg)`SHOW TABLES FROM ${{Identifier:e}}`;return await n.query({query:a.sql,query_params:a.params,connectionId:t}).then(e=>e.json())},staleTime:3e5,...a})}},57389:(e,t,a)=>{a.d(t,{d:()=>m});var n=a(75155),r=a(2615),i=a(82641),s=a(4308),o=a(12482),l=a(49672),u=a(81973),c=a(78550);function m(e,t){let a,m,d,p,f,g=(0,n.c)(16);g[0]!==t?(a=t||{},g[0]=t,g[1]=a):a=g[1];let{enabled:h}=a,y=(0,c.Ge)(),b=(0,l.fu)(),_=e?.source;g[2]!==_?(m={id:_},g[2]=_,g[3]=m):m=g[3];let{data:$,isLoading:S}=(0,u.Fo)(m);g[4]!==e?(d=["optimizationExplanation",e],g[4]=e,g[5]=d):d=g[5],g[6]!==b||g[7]!==e||g[8]!==y||g[9]!==$?(p=async t=>{let{signal:a}=t;return e&&$&&($.kind===i.GL.Log||$.kind===i.GL.Trace)?await (0,r.bn)(e,y,b,a,$):{explanations:[]}},g[6]=b,g[7]=e,g[8]=y,g[9]=$,g[10]=p):p=g[10];let A=(void 0===h||h)&&!S&&!!e&&!!$;return g[11]!==t||g[12]!==d||g[13]!==p||g[14]!==A?(f={queryKey:d,queryFn:p,placeholderData:s.rX,staleTime:5e3,...t,enabled:A},g[11]=t,g[12]=d,g[13]=p,g[14]=A,g[15]=f):f=g[15],(0,o.I)(f)}},61410:(e,t,a)=>{a.d(t,{Km:()=>n,LD:()=>i,NG:()=>c,Nz:()=>m,_N:()=>s,fz:()=>l,nw:()=>u,rb:()=>r,yr:()=>o});let n=200,r=60,i=100,s=100,o=250,l=500,u=5e3;function c(e){return 0===e?1/0:null==e||!Number.isInteger(e)||e<0?o:e}function m(e){return{limit:{limit:e?.searchRowLimit??n}}}},62637:(e,t)=>{function a(e,t){return null!=e?e:t()}function n(e){let t,a=e[0],n=1;for(;na.call(t,...e)),t=void 0)}return a}function r(e){let t={};return function e(a,n){if(Object(a)!==a)t[n]=a;else if(Array.isArray(a)){for(let t=0;t{Object.entries(e).forEach(([e])=>{let t=n.get(e)||0;n.set(e,t+1),t+1>=5&&i.add(e)})});let s=new Map;t.forEach(e=>{Object.entries(e).forEach(([e,t])=>{if(i.has(e)){let a=s.get(e);a||(a=new Map,s.set(e,a));let n=null==t?"":String(t),r=a.get(n)||0;a.set(n,r+1)}})});let o=new Map;return s.forEach((e,t)=>{let r=new Map;e.forEach((e,i)=>{r.set(i,e/a(n.get(t),()=>1)*100)}),o.set(t,r)}),{percentageOccurences:o,propertyOccurences:n,valueOccurences:s}}function s(e){let t=e.trim(),a=!0;for(;a;)a=!1,t.startsWith("LowCardinality(")&&t.endsWith(")")?(t=t.slice(15,-1).trim(),a=!0):t.startsWith("Nullable(")&&t.endsWith(")")&&(t=t.slice(9,-1).trim(),a=!0);return t}function o(e){let t=e.match(/^([^[]+)\[(\d+)\]$/);return t?t[1]:e.includes("[")?null:e}function l(e,t){let a=o(e);if(!a||!/(Id|ID)$/.test(a))return!1;let n=t.find(e=>e.name===a);if(!n)return!1;let r=s(n.type);return"String"===r||!!r.startsWith("Array(")&&"String"===s(r.slice(6,-1))}function u(e,t){let a=o(e);if(!a)return!1;let n=t.find(e=>e.name===a);if(!n)return!1;let r=s(n.type);return!!r.startsWith("Array(")&&s(r.slice(6,-1)).startsWith("DateTime64(")}function c(e,t){return l(e,t)||u(e,t)}function m(e,t,r,i,s){let o=a(i.get(e),()=>0),l=a(s.get(e),()=>0);if(o+l<=20)return!1;let u=a(n([t,"access",e=>e.get,"call",t=>t(e),"optionalAccess",e=>e.size]),()=>0),c=a(n([r,"access",e=>e.get,"call",t=>t(e),"optionalAccess",e=>e.size]),()=>0),m=o>0?u/o:null,d=l>0?c/l:null,p;if(null!==m&&null!==d)p=Math.min(m,d);else if(null!==m)p=m;else{if(null===d)return!1;p=d}return p>.9}function d(e,t){let n=new Set([...e.keys(),...t.keys()]);if(0===n.size)return 0;let r=0,i=0;if(e.forEach(e=>r+=e),t.forEach(e=>i+=e),0===r&&0===i)return 0;if(0===r||0===i){let a=r>0?e:t;if(a.size<=1)return 0;let n=r>0?r:i,s=0;return a.forEach(e=>{let t=e/n*100;t>s&&(s=t)}),s}let s=0;return n.forEach(n=>{let o=Math.abs(a(e.get(n),()=>0)/r*100-a(t.get(n),()=>0)/i*100);o>s&&(s=o)}),s}Object.defineProperty(t,"__esModule",{value:!0});var p=["service.name","http.method","http.request.method","http.status_code","http.response.status_code","error","error.type","deployment.environment","deployment.environment.name","rpc.method","rpc.service","db.system","db.operation","messaging.system","messaging.operation"];function f(e){let t=e.toLowerCase();for(let e of p)if(t.endsWith("."+e)||t===e)return 1;return 0}var g=t.m=500,h=t.n=5e3,y=t.o=.01;t.a=r,t.b=5,t.c=i,t.d=s,t.e=o,t.f=l,t.g=u,t.h=c,t.i=m,t.j=d,t.k=f,t.l=1e3,t.m=g,t.n=h,t.o=y,t.p=function(e){return e?`cityHash64(${e})`:"rand()"},t.q=function(e){return e<=0?1e3:Math.min(h,Math.max(g,Math.ceil(e*y)))},t.r=function(e){let t=i(e.targetRows),n=i(e.baselineRows),r=new Set([...t.valueOccurences.keys(),...n.valueOccurences.keys()]),s=[];for(let i of r){let r=d(a(t.valueOccurences.get(i),()=>new Map),a(n.valueOccurences.get(i),()=>new Map)),o=r>0?f(i):0,l=r+.1*o,u=!1,p;c(i,e.columnMeta)?(u=!0,p="denylist"):m(i,t.valueOccurences,n.valueOccurences,t.propertyOccurences,n.propertyOccurences)&&(u=!0,p="high_cardinality"),s.push({key:i,score:l,baseScore:r,semanticBoost:o,hidden:u,hiddenReason:p})}return s.sort((e,t)=>t.score-e.score),{ranked:s,targetStats:t,baselineStats:n}}},62798:(e,t,a)=>{var n=a(7837);a(40313),t.i_=n.a,t.uA=n.i,t.O3=n.e,t.Rh=n.h,n.b,t.qi=n.d,t.V4=n.g,t.Xo=n.c,t.wH=n.f},67270:(e,t,a)=>{var n=a(95384);a(69498),a(62637),a(68798),a(7837),a(40313),a(787),t.n_=n.j,n.n,n.p,t.bv=n.m,t.v4=n.q,t.sA=n.s,t.lE=n.l,t.x1=n.k,t.PV=n.v,n.u,n.r,n.o,n.t},68798:(e,t)=>{function a(e){let t,a=e[0],n=1;for(;na.call(t,...e)),t=void 0)}return a}Object.defineProperty(t,"__esModule",{value:!0});var n,r=t.b=64,i=e=>"+"===e||"-"===e||"*"===e||"/"===e,s=e=>e>="0"&&e<="9",o=e=>e>="A"&&e<="Z",l=e=>e>="a"&&e<="z",u=e=>o(e)||l(e),c=e=>/\s/.test(e),m=t.c=e=>e.charCodeAt(0)-65,d=t.d=e=>e>=0&&e<26?String.fromCharCode(65+e):void 0,p=class extends Error{constructor(e,t){super(e),this.position=t}},f=n=class{constructor(e,t){n.prototype.__init.call(this),n.prototype.__init2.call(this),this.tokens=e,this.expressionLength=t}__init(){this.pos=0}__init2(){this.depth=0}enterNested(e){if(this.depth++,this.depth>64)throw new p("Expression is nested too deeply (max 64 levels)",e)}exitNested(){this.depth--}parse(){let e=this.parseExpression(),t=this.peek();if(void 0!==t)throw new p("rparen"===t.type?"Unmatched closing parenthesis":`Unexpected ${g(t)}`,t.position);return e}peek(){return this.tokens[this.pos]}next(){return this.tokens[this.pos++]}parseExpression(){let e=this.parseTerm();for(;;){let t=this.peek();if("operator"!==a([t,"optionalAccess",e=>e.type])||"+"!==t.op&&"-"!==t.op)break;this.pos++,e={type:"binary",op:t.op,left:e,right:this.parseTerm()}}return e}parseTerm(){let e=this.parseFactor();for(;;){let t=this.peek();if("operator"!==a([t,"optionalAccess",e=>e.type])||"*"!==t.op&&"/"!==t.op)break;this.pos++,e={type:"binary",op:t.op,left:e,right:this.parseFactor()}}return e}parseFactor(){let e=this.peek();if("operator"===a([e,"optionalAccess",e=>e.type])&&"-"===e.op){this.pos++,this.enterNested(e.position);let t=this.parseFactor();return this.exitNested(),{type:"unary",op:"-",operand:t}}return this.parsePrimary()}parsePrimary(){let e=this.next();if(void 0===e)throw new p("Unexpected end of expression",this.expressionLength);switch(e.type){case"number":return{type:"number",value:e.value};case"seriesRef":return{type:"seriesRef",ref:e.ref,index:m(e.ref)};case"lparen":{this.enterNested(e.position);let r=this.parseExpression();this.exitNested();let i=this.next();if("rparen"!==a([i,"optionalAccess",e=>e.type])){var t,n;throw new p("Missing closing parenthesis",(t=a([i,"optionalAccess",e=>e.position]),n=()=>this.expressionLength,null!=t?t:n()))}return r}default:throw new p(`Unexpected ${g(e)}`,e.position)}}},g=e=>{switch(e.type){case"number":return`number "${e.text}"`;case"seriesRef":return`series reference "${e.ref}"`;case"operator":return`operator "${e.op}"`;case"lparen":return"opening parenthesis";case"rparen":return"closing parenthesis"}},h=(e,t)=>{switch(e.type){case"binary":h(e.left,t),h(e.right,t);break;case"unary":h(e.operand,t);break;case"seriesRef":t.add(e.index)}},y=t.e=e=>{if(""===e.trim())return{ok:!1,errors:[{code:"empty-expression",message:"Expression is empty"}]};if(e.length>1024)return{ok:!1,errors:[{code:"expression-too-long",message:`Expression is too long (${e.length} characters, max 1024)`,maxLength:1024}]};let t=(e=>{let t=[],a=0;for(;a1)return{error:{code:"invalid-token",message:`Unexpected "${r}" \u2014 series references are single letters (A, B, C, ...) and functions are not supported`,position:n,token:r}};t.push({type:"seriesRef",ref:r,position:n})}else{if(!l(n))return{error:{code:"invalid-token",message:`Unexpected character "${n}"`,position:a,token:n}};let t=a;for(;ae-t)}}catch(e){if(e instanceof p)return{ok:!1,errors:[{code:"syntax-error",message:e.message,position:e.position}]};throw e}},b=t.f=(e,{seriesCount:t})=>{let a=y(e);if(!a.ok)return a;let n=[],r=a=>{switch(a.type){case"binary":r(a.left),r(a.right);break;case"unary":r(a.operand);break;case"seriesRef":a.index>=t&&n.push({code:"unknown-series-ref",message:t>0?`Unknown series "${a.ref}" \u2014 this chart only has series A through ${d(t-1)}`:`Unknown series "${a.ref}" \u2014 this chart has no series`,position:_(e,a.ref),ref:a.ref})}};r(a.ast);let i=new Set,s=n.filter(e=>"unknown-series-ref"!==e.code||!i.has(e.ref)&&(i.add(e.ref),!0));return 0===a.referencedIndices.length&&s.push({code:"constant-only-expression",message:"Expression must reference at least one series (A, B, C, ...)"}),s.length>0?{ok:!1,errors:s}:a},_=(e,t)=>{let a=e.indexOf(t);return a>=0?a:0},$=t.g=(e,t)=>{switch(e.type){case"number":return String(e.value);case"seriesRef":return`coalesce(${t(e.index)}, 0)`;case"unary":return`(-${$(e.operand,t)})`;case"binary":{let a=$(e.left,t),n=$(e.right,t);return"/"===e.op?`(${a} / nullif(${n}, 0))`:`(${a} ${e.op} ${n})`}}};t.a=1024,t.b=r,t.c=m,t.d=d,t.e=y,t.f=b,t.g=$},69498:(e,t)=>{function a(e,t){for(let a=0;a<4;a++)if(e[a]!==t[a])return e[a]-t[a];return 0}function n(e,t){return!!e&&a(e,t)>=0}Object.defineProperty(t,"__esModule",{value:!0});var r=[[26,2,19,43],[26,3,12,3],[26,4,3,37]],i=[[26,2,1,307],[26,3,0,0],[26,4,1,1740]],s=[26,5,0,0],o=[26,3,0,0];t.a=function(e){let t=e.trim();if(!t)return;let a=t.split(".",5);if(a.length<2)return;let n=[];for(let e=0;e<4;e++){var r,i;let t=(r=a[e],i=()=>"0",null!=r?r:i()).match(/^\d+/);if(!t){if(e<2)return;n.push(0);continue}let s=Number.parseInt(t[0],10);if(!Number.isFinite(s)){if(e<2)return;n.push(0);continue}n.push(s)}return[n[0],n[1],n[2],n[3]]},t.b=a,t.c=n,t.d=function(e,t=!1){if(!e)return!1;if(a(e,s)>=0)return!0;let[n,o]=e,l=(t?i:r).find(([e,t])=>e===n&&t===o);return!!l&&a(e,l)>=0},t.e=function(e){return n(e,o)}},69519:(e,t,a)=>{a.d(t,{Me:()=>s,Pd:()=>n,ok:()=>r,so:()=>i});let n=60,r=[900,21600,21600,43200,86400];function i(e,t,a=r){if(e.getTime()===t.getTime())return[{startTime:e,endTime:t,windowIndex:0,direction:"DESC"}];let n=[],s=new Date(t),o=0;for(;s>e;){let t=1e3*(a[o]||a[a.length-1]),r=new Date(Math.max(s.getTime()-t,e.getTime()));n.push({endTime:new Date(s),startTime:r,windowIndex:o,direction:"DESC"}),s=r,o++}return n}function s(e,t,a=r){if(e.getTime()===t.getTime())return[{startTime:e,endTime:t,windowIndex:0,direction:"ASC"}];let n=[],i=new Date(e),o=0;for(;i{t.G=a(91820).a},76089:(e,t,a)=>{var n=a(95384);a(69498),a(62637),a(68798),a(7837),a(40313),a(787),n.Ta,t.Z7=n.fb,n.lb,t.C2=n.Gb,t.zj=n.ab,t.tA=n.hb,t.qL=n.ib,t.DY=n.rb,t.sE=n.pb,t.Ro=n.ob,t._t=n.sb,t.qt=n.tb,t.nw=n.Jb,t.F8=n.Mb,t.A5=n.Ib,n.Ya,n.Cb,n.db,t.Yq=n.nb,t.Ol=n.Ab,n.Hb,n.ub,n.$a,t.ms=n.qb,t.WG=n.Ua,n.gb,t.Bd=n.Va,t._p=n.Bb,t.es=n.xb,t.l_=n.Kb,t.G5=n.Lb,n.cb,n.Wa,n.Za,t.Tr=n.Pb,t.jN=n.wb,n.Eb,n.Qb,n.zb,n.mb,n.Db,n.yb,n.Fb,n.bb,n.vb,n.eb,n.Xa,t.AB=n._a,n.kb,n.jb,t.PZ=n.Ob,t.m1=n.Nb},78550:(e,t,a)=>{a.d(t,{Ii:()=>B,ws:()=>O,Zh:()=>v,GO:()=>E,lo:()=>W,kN:()=>V,n$:()=>N,bZ:()=>I,Ge:()=>A,Sh:()=>C,gt:()=>w,Z2:()=>F});var n=a(75155),r=a(55729),i=a(79339),s=a.n(i),o=a(35467),l=a(20123),u=a(82641),c=a(93251),m=a(12482),d=a(4308),p=a(6876),f=a(98142),g=a(93108),h=a(61410),y=a(3145),b=a(49672);let _=()=>(0,y.yb)((0,b.W)({queryTimeout:h.rb}));var $=a(81973),S=a(92917);function A(){let e,t,a,i,s,o=(0,n.c)(10);o[0]===Symbol.for("react.memo_cache_sentinel")?(e=_(),o[0]=e):e=o[0];let[l,u]=(0,r.useState)(e),{data:m}=p.Ay.useMe(),d=(0,r.useRef)(!1),h=(0,c.jE)();o[1]!==h?(t=()=>{if(void 0===window.document||!f.VO)return;let e=e=>{e.key===g.Gs&&e.newValue&&(u(_()),d.current=!1,h.resetQueries())};return window.addEventListener("storage",e),()=>{window.removeEventListener("storage",e)}},a=[h],o[1]=h,o[2]=t,o[3]=a):(t=o[2],a=o[3]),(0,r.useEffect)(t,a),o[4]!==m||o[5]!==l?(i=()=>{m?.team?.metadataMaxRowsToRead&&!d.current&&(l.setClickHouseSettings({max_rows_to_read:String(m.team.metadataMaxRowsToRead)}),d.current=!0)},o[4]=m,o[5]=l,o[6]=i):i=o[6];let y=m?.team?.metadataMaxRowsToRead;return o[7]!==l||o[8]!==y?(s=[y,l],o[7]=l,o[8]=y,o[9]=s):s=o[9],(0,r.useEffect)(i,s),l}function v(e,t){let a,r,i,s=(0,n.c)(14),{databaseName:o,tableName:l,connectionId:u}=e,c=A();s[0]!==u||s[1]!==o||s[2]!==l?(a=["useMetadata.useColumns",{connectionId:u,databaseName:o,tableName:l}],s[0]=u,s[1]=o,s[2]=l,s[3]=a):a=s[3],s[4]!==u||s[5]!==o||s[6]!==c||s[7]!==l?(r=async()=>c.getColumns({databaseName:o,tableName:l,connectionId:u}),s[4]=u,s[5]=o,s[6]=c,s[7]=l,s[8]=r):r=s[8];let d=!!o&&!!l&&!!u;return s[9]!==t||s[10]!==a||s[11]!==r||s[12]!==d?(i={queryKey:a,queryFn:r,enabled:d,...t},s[9]=t,s[10]=a,s[11]=r,s[12]=d,s[13]=i):i=s[13],(0,m.I)(i)}function E(e){let t,a=(0,n.c)(2);return a[0]!==e?(t=new Map((0,o.P1)(e??[],[o.A2.Date])?.map(x)),a[0]=e,a[1]=t):t=a[1],t}function x(e){return[e.name,e.type]}function w(e){let t,a,i,s=(0,n.c)(7),o=E(e);s[0]===Symbol.for("react.memo_cache_sentinel")?(t=[],s[0]=t):t=s[0];let[l,u]=(0,r.useState)(t),c=E(l);if(s[1]!==l||s[2]!==c||s[3]!==o){for(let{name:e}of(a=new Map(o),l))c.has(e)||a.delete(e);for(let[e,t]of c)a.set(e,t);s[1]=l,s[2]=c,s[3]=o,s[4]=a}else a=s[4];let m=a;return s[5]!==m?(i={dateTimeColumns:m,onResolvedColumnsChange:u},s[5]=m,s[6]=i):i=s[6],i}function N(e,t){let a,r,i,s=(0,n.c)(10),l=A();s[0]!==e?(a=["useMetadata.useJsonColumns",e],s[0]=e,s[1]=a):a=s[1],s[2]!==l||s[3]!==e?(r=async()=>{if(!e)return[];let t=await l.getColumns(e);return(0,o.P1)(t,[o.A2.JSON])?.map(T)??[]},s[2]=l,s[3]=e,s[4]=r):r=s[4];let u=e&&!!e.databaseName&&!!e.tableName&&!!e.connectionId;return s[5]!==t||s[6]!==a||s[7]!==r||s[8]!==u?(i={queryKey:a,queryFn:r,enabled:u,...t},s[5]=t,s[6]=a,s[7]=r,s[8]=u,s[9]=i):i=s[9],(0,m.I)(i)}function T(e){return e.name}function I(e,t){let a,r,i,s=(0,n.c)(10),l=A();s[0]!==e?(a=["useMetadata.useMapColumns",e],s[0]=e,s[1]=a):a=s[1],s[2]!==l||s[3]!==e?(r=async()=>{if(!e)return[];let t=await l.getColumns(e);return(0,o.P1)(t,[o.A2.Map])?.map(k)??[]},s[2]=l,s[3]=e,s[4]=r):r=s[4];let u=e&&!!e.databaseName&&!!e.tableName&&!!e.connectionId;return s[5]!==t||s[6]!==a||s[7]!==r||s[8]!==u?(i={queryKey:a,queryFn:r,enabled:u,...t},s[5]=t,s[6]=a,s[7]=r,s[8]=u,s[9]=i):i=s[9],(0,m.I)(i)}function k(e){return e.name}function C(e,t){let a,r,i,o,l,u,c,d,f,g,h=(0,n.c)(31),y=A(),{data:b,isFetched:_}=p.Ay.useMe();h[0]!==t?(a=t??{},h[0]=t,h[1]=a):a=h[1],h[2]!==a?({dateRange:r,timestampValueExpression:u,intersect:i,enabled:l,...o}=a,h[2]=a,h[3]=r,h[4]=i,h[5]=o,h[6]=l,h[7]=u):(r=h[3],i=h[4],o=h[5],l=h[6],u=h[7]);let $=void 0===l||l;if(h[8]!==r||h[9]!==i||h[10]!==e||h[11]!==u){let t;h[13]!==r?(t=r?[r[0].getTime(),r[1].getTime()]:void 0,h[13]=r,h[14]=t):t=h[14],c=["useMetadata.useMultipleAllFields",...e.map(M),t,u,i??!1],h[8]=r,h[9]=i,h[10]=e,h[11]=u,h[12]=c}else c=h[12];return h[15]!==r||h[16]!==i||h[17]!==b?.team||h[18]!==y||h[19]!==e||h[20]!==u?(d=async()=>{let t=b?.team;if(t?.fieldMetadataDisabled)return[];let a=(await Promise.allSettled(e.map(e=>y.getAllFields({...e,dateRange:r,timestampValueExpression:u})))).map(q);return 1===a.length?a[0]:i?function(e){if(0===e.length)return[];let t=new Map;for(let a of e){let e=new Set;for(let n of a){let a=s().sha1(n);if(e.has(a))continue;e.add(a);let r=t.get(a);r?r.n+=1:t.set(a,{elem:n,n:1})}}return Array.from(t.values()).filter(({n:t})=>t===e.length).map(({elem:e})=>e)}(a):B(a)},h[15]=r,h[16]=i,h[17]=b?.team,h[18]=y,h[19]=e,h[20]=u,h[21]=d):d=h[21],h[22]!==$||h[23]!==_||h[24]!==e?(f=$&&e.length>0&&e.every(R)&&_,h[22]=$,h[23]=_,h[24]=e,h[25]=f):f=h[25],h[26]!==o||h[27]!==c||h[28]!==d||h[29]!==f?(g={queryKey:c,queryFn:d,...o,enabled:f},h[26]=o,h[27]=c,h[28]=d,h[29]=f,h[30]=g):g=h[30],(0,m.I)(g)}function R(e){return!!e.databaseName&&!!e.tableName&&!!e.connectionId}function q(e){return"rejected"===e.status?(console.warn("Failed to fetch fields for table connection",e.reason),[]):e.value}function M(e){return{...e}}function O(e,t){let a,r=(0,n.c)(2);return r[0]!==e?(a=e?[e]:[],r[0]=e,r[1]=a):a=r[1],C(a,t)}function F(e,t){let a,r,i,s=(0,n.c)(14),{databaseName:o,tableName:l,connectionId:u}=e,c=A();s[0]!==u||s[1]!==o||s[2]!==l?(a=["useMetadata.useTableMetadata",{connectionId:u,databaseName:o,tableName:l}],s[0]=u,s[1]=o,s[2]=l,s[3]=a):a=s[3],s[4]!==u||s[5]!==o||s[6]!==c||s[7]!==l?(r=async()=>await c.getTableMetadata({databaseName:o,tableName:l,connectionId:u}),s[4]=u,s[5]=o,s[6]=c,s[7]=l,s[8]=r):r=s[8];let d=!!o&&!!l&&!!u;return s[9]!==t||s[10]!==a||s[11]!==r||s[12]!==d?(i={queryKey:a,queryFn:r,staleTime:3e5,enabled:d,...t},s[9]=t,s[10]=a,s[11]=r,s[12]=d,s[13]=i):i=s[13],(0,m.I)(i)}function L(e){return e}function D(e){return e&&(0,l.o1)(e)}function U(e){return{...e}}function V(e,t){let a,r,i,s,o=(0,n.c)(16),{chartConfig:l,key:u,limit:c}=e,p=A();o[0]!==l.source?(a={id:l.source},o[0]=l.source,o[1]=a):a=o[1];let{data:f,isLoading:g}=(0,$.Fo)(a);o[2]!==l||o[3]!==u?(r=["useMetadata.useGetValuesDistribution",l,u],o[2]=l,o[3]=u,o[4]=r):r=o[4],o[5]!==l||o[6]!==u||o[7]!==c||o[8]!==p||o[9]!==f?(i=async()=>await p.getValuesDistribution({chartConfig:l,key:u,limit:c,source:f}),o[5]=l,o[6]=u,o[7]=c,o[8]=p,o[9]=f,o[10]=i):i=o[10];let h=!!u&&!g;return o[11]!==t||o[12]!==r||o[13]!==i||o[14]!==h?(s={queryKey:r,queryFn:i,staleTime:1/0,enabled:h,placeholderData:d.rX,retry:!1,...t},o[11]=t,o[12]=r,o[13]=i,o[14]=h,o[15]=s):s=o[15],(0,m.I)(s)}function W(e,t){let a,r,i=(0,n.c)(10),{chartConfig:s,keys:o,keyConditions:l,limit:c,disableRowLimit:f,mode:g,metadataMVs:y}=e;return i[0]!==s?(a=s?[s]:[],i[0]=s,i[1]=a):a=i[1],i[2]!==f||i[3]!==l||i[4]!==o||i[5]!==c||i[6]!==y||i[7]!==g||i[8]!==a?(r={chartConfigs:a,keys:o,keyConditions:l,limit:c,disableRowLimit:f,mode:g,metadataMVs:y},i[2]=f,i[3]=l,i[4]=o,i[5]=c,i[6]=y,i[7]=g,i[8]=a,i[9]=r):r=i[9],function(e,t){let a,r,i,s,o=(0,n.c)(18),{chartConfigs:l,keys:c,keyConditions:f,limit:g,disableRowLimit:y,mode:b,metadataMVs:_}=e,v=void 0===b?"exact":b,E=A(),x=(0,S.$r)(l);o[0]!==t?(a=t||{},o[0]=t,o[1]=a):a=o[1];let{enabled:w}=a,{data:N,isLoading:T}=p.Ay.useMe(),{data:I,isLoading:k}=(0,$.oE)(),C=N?.team?.filterKeysFetchLimit??h.LD;o[2]!==f?(r=f?.map(D),o[2]=f,o[3]=r):r=o[3],o[4]!==x||o[5]!==y||o[6]!==f||o[7]!==c||o[8]!==g||o[9]!==C||o[10]!==E||o[11]!==_||o[12]!==v||o[13]!==I?(i=async e=>{let{signal:t}=e;if("all"===v){let e=x[0];if(!e||0===c.length)return[];let a=e.source?I?.find(t=>t.id===e.source):void 0,n=_??(a&&((0,u.sl)(a)||(0,u.h7)(a))?a.metadataMaterializedViews:void 0),{databaseName:r,tableName:i}=e.from,s=e.connection,o=e.dateRange;return E.getAllKeyValues({databaseName:r,tableName:i,keyExpressions:c.slice(0,C),maxValuesPerKey:20,connectionId:s,metadataMVs:n,dateRange:o,timestampValueExpression:e.timestampValueExpression,signal:t})}return(await Promise.all(x.map(e=>{let a=e.source?I?.find(t=>t.id===e.source):void 0;return E.getKeyValuesWithMVs({chartConfig:e,keys:c.slice(0,C),keyConditions:f?.slice(0,C),limit:g,disableRowLimit:y,source:a,signal:t})}))).flatMap(L)},o[4]=x,o[5]=y,o[6]=f,o[7]=c,o[8]=g,o[9]=C,o[10]=E,o[11]=_,o[12]=v,o[13]=I,o[14]=i):i=o[14];let R=(0,m.I)({queryKey:["useMetadata.useGetKeyValues",v,_,...x.map(U),...c,r,y,C],queryFn:i,staleTime:3e5,placeholderData:d.rX,...t,enabled:!!(void 0===w||w)&&!!c.length&&!k&&!T}),q=R.isLoading||k;return o[15]!==R||o[16]!==q?(s={...R,isLoading:q},o[15]=R,o[16]=q,o[17]=s):s=o[17],s}(r,t)}function B(e){let t=[],a=new Set;for(let n of e)for(let e of n){let n=s().sha1(e);a.has(n)||(a.add(n),t.push(e))}return t}},81973:(e,t,a)=>{a.d(t,{AF:()=>E,Al:()=>er,Dp:()=>H,Fo:()=>M,N8:()=>N,Rt:()=>T,YI:()=>V,Ys:()=>j,fQ:()=>Y,fS:()=>en,kH:()=>G,kJ:()=>A,kg:()=>K,nd:()=>D,oE:()=>k,pM:()=>x,q6:()=>P,ry:()=>X,sr:()=>F,u4:()=>J,xg:()=>w});var n=a(75155),r=a(55729),i=a(29594),s=a.n(i),o=a(79339),l=a.n(o),u=a(35467),c=a(2615),m=a(67270),d=a(76089),p=a(62798),f=a(82641),g=a(60665),h=a(12482),y=a(93251),b=a(16932),_=a(6876),$=a(98142),S=a(22e3);let A={resourceAttributesExpression:"ResourceAttributes",eventAttributesExpression:"LogAttributes",timestampValueExpression:"TimestampTime",implicitColumnExpression:"Body"},v={...A,timestampValueExpression:"Timestamp"};function E(e){return(0,d.AB)(e)[0]}function x(e){return e.spanNameExpression}function w(e){return(e.kind===f.GL.Log||e.kind===f.GL.Trace?e.displayedTimestampValueExpression:void 0)??E(e.timestampValueExpression)}function N(e){let t;e.kind===f.GL.Trace?t=e.spanNameExpression||void 0:e.kind===f.GL.Log&&(t=e.bodyExpression||e.implicitColumnExpression);let a=(0,d.AB)(t??"");return 1===a.length?t:a[0]}function T(e){return(0,d.AB)(e).length<=1}function I(e){return e.kind===f.GL.Session?{...e,timestampValueExpression:e.timestampValueExpression||A.timestampValueExpression}:e}function k(){let e,t=(0,n.c)(1);return t[0]===Symbol.for("react.memo_cache_sentinel")?(e={queryKey:["sources"],queryFn:C},t[0]=e):e=t[0],(0,h.I)(e)}async function C(){if($.VO)return S.Yk.getAll();let e=(await (0,_.Q5)("sources").json()).map(I);return e.forEach(R),e}function R(e){let t=f.fo.safeParse(e);if(!t.success){var a;let n=t.error.issues.map(q).join(", ");g.$e.show({id:(a=e.id,`source-validation-${a}`),color:"yellow",title:`Source "${e.name}" has validation issues`,message:r.createElement(r.Fragment,null,n?`Fields: ${n}. `:"",r.createElement("a",{href:"/team#sources"},"Edit sources")," to ensure compatibility."),autoClose:!1})}}function q(e){return e.path.join(".")}function M(e){let t,a,r,i=(0,n.c)(7),{id:s,kinds:o}=e;i[0]===Symbol.for("react.memo_cache_sentinel")?(t=["sources"],i[0]=t):t=i[0],i[1]!==s||i[2]!==o?(a=e=>{let t=e.find(e=>e.id===s);if(!(t&&o?.length)||o.includes(t.kind))return t},i[1]=s,i[2]=o,i[3]=a):a=i[3];let l=null!=s;return i[4]!==a||i[5]!==l?(r={queryKey:t,queryFn:O,select:a,enabled:l},i[4]=a,i[5]=l,i[6]=r):r=i[6],(0,h.I)(r)}async function O(){return $.VO?S.Yk.getAll():(await (0,_.Q5)("sources").json()).map(I)}function F(){let e,t=(0,n.c)(2),a=(0,y.jE)();return t[0]!==a?(e={mutationFn:L,onSuccess:()=>{a.invalidateQueries({queryKey:["sources"]})}},t[0]=a,t[1]=e):e=t[1],(0,b.n)(e)}async function L(e){let{source:t}=e;return $.VO?void S.Yk.update(t.id,t):(0,_.Q5)(`sources/${t.id}`,{method:"PUT",json:t})}function D(){let e,t=(0,n.c)(2),a=(0,y.jE)();return t[0]!==a?(e={mutationFn:U,onSuccess:()=>{a.invalidateQueries({queryKey:["sources"]})}},t[0]=a,t[1]=e):e=t[1],(0,b.n)(e)}async function U(e){let{source:t}=e;if($.VO){let e=S.Yk.getAll().find(e=>l()(s()(e,["kind","name","connection"]))===l()(s()(t,["kind","name","connection"])));return e?(S.Yk.update(e.id,t),{...t,id:e.id}):S.Yk.create(t)}return(0,_.Q5)("sources",{method:"POST",json:t}).json()}function V(){let e,t=(0,n.c)(2),a=(0,y.jE)();return t[0]!==a?(e={mutationFn:W,onSuccess:()=>{a.invalidateQueries({queryKey:["sources"]})}},t[0]=a,t[1]=e):e=t[1],(0,b.n)(e)}async function W(e){let{id:t}=e;return $.VO?void S.Yk.delete(t):(0,_.Q5)(`sources/${t}`,{method:"DELETE"})}function B(e,t){let a=new Map(e.map(e=>[e.name,e]));return 0===Array.from(t).filter(e=>!a.has(e)).length}function P(e){return e.some(e=>"SeriesHash"===e.name&&"UInt64"===e.type)}async function j({databaseName:e,tableName:t,connectionId:a,kind:n,metadata:r}){let i=await r.getColumns({databaseName:e,tableName:t,connectionId:a}),s=(await r.getTableMetadata({databaseName:e,tableName:t,connectionId:a}))?.primary_key,o=s?new Set((0,u.bZ)(s)):new Set,l=(0,u.P1)(i,[u.A2.Date]),m=l?.find(e=>o.has(e.name)),d={...null!=m?{timestampValueExpression:m.name}:{},kind:n};if(n===f.GL.Promql)return d;if(n===f.GL.Session)return B(i,Object.values(A))||B(i,Object.values(v))?{...d,resourceAttributesExpression:A.resourceAttributesExpression}:d;let p=B(i,["Timestamp","Body","SeverityText","TraceId","SpanId","ServiceName","LogAttributes","ResourceAttributes"]),g=B(i,["Timestamp","SpanName","Duration","SpanKind","TraceId","SpanId","ParentSpanId","ServiceName","SpanAttributes","ResourceAttributes","StatusCode","StatusMessage"]),h=i.some(e=>"Events.Timestamp"===e.name),y=i.some(e=>"Links.TraceId"===e.name),b=p||g?await (async()=>{let[n,i]=await Promise.all([r.getTableMetadata({databaseName:e,tableName:`${t}_key_rollup_15m`,connectionId:a}),r.getTableMetadata({databaseName:e,tableName:`${t}_kv_rollup_15m`,connectionId:a})]);return null!=i?{keyMeta:n,kvMeta:i}:void 0})():void 0,_=b?{metadataMaterializedViews:{kvRollupTable:`${t}_kv_rollup_15m`,granularity:(0,c.qT)(b.kvMeta.as_select)??"15 minute"}}:{};return{...d,...p?{defaultTableSelectExpression:"Timestamp, ServiceName as service, SeverityText as level, Body",serviceNameExpression:"ServiceName",bodyExpression:"Body",displayedTimestampValueExpression:"Timestamp",eventAttributesExpression:"LogAttributes",implicitColumnExpression:"Body",resourceAttributesExpression:"ResourceAttributes",spanIdExpression:"SpanId",traceIdExpression:"TraceId",severityTextExpression:"SeverityText",..._}:{},...g?{displayedTimestampValueExpression:"Timestamp",implicitColumnExpression:"SpanName",defaultTableSelectExpression:"Timestamp, ServiceName as service, StatusCode as level, round(Duration / 1e6) as duration, SpanName",eventAttributesExpression:"SpanAttributes",serviceNameExpression:"ServiceName",resourceAttributesExpression:"ResourceAttributes",durationExpression:"Duration",durationPrecision:9,parentSpanIdExpression:"ParentSpanId",spanIdExpression:"SpanId",spanKindExpression:"SpanKind",spanNameExpression:"SpanName",traceIdExpression:"TraceId",statusCodeExpression:"StatusCode",statusMessageExpression:"StatusMessage",...h?{spanEventsValueExpression:"Events"}:{},...y?{spanLinksValueExpression:"Links"}:{},..._}:{}}}function H(e){return`(${e.durationExpression})/1e${(e.durationPrecision??9)-3}`}function K(e){return`(${e.durationExpression})/1e${e.durationPrecision??9}`}let z=new Set(["avg","min","max","sum","any","last_value","quantile","quantileMerge","p50","p90","p95","p99","heatmap","histogram","histogramMerge"]);function Q(e,t){if(!e||e.kind!==f.GL.Trace||!e.durationExpression)return;let a=e.durationExpression,n=e.durationPrecision??9;if(t.valueExpression&&function(e){if(!e)return!0;let t=e.replace(/If(State|Merge)?$/,"");return z.has(t)}(t.aggFn)&&t.valueExpression===a)return{output:"duration",factor:Math.pow(10,-n)}}function G(e,t){for(let t of e)if(t.numberFormat)return t.numberFormat;for(let a of e){let e=Q(t,a);if(e)return e}}function Y(e){let t,a,r=(0,n.c)(7);r[0]!==e.source?(t={id:e.source},r[0]=e.source,r[1]=t):t=r[1];let{data:i}=M(t);e:{let t;r[2]!==e?(t=Z(e),r[2]=e,r[3]=t):t=r[3];let n=t;if(n){a=n.formulas[0]?.numberFormat??e.numberFormat;break e}if((0,p.O3)(e)&&Array.isArray(e.select)&&e.select.length>0){let t;if(e.select[0].numberFormat){a=e.select[0].numberFormat;break e}if(e.numberFormat){a=e.numberFormat;break e}r[4]!==e.select[0]||r[5]!==i?(t=Q(i,e.select[0]),r[4]=e.select[0],r[5]=i,r[6]=t):t=r[6],a=t;break e}a=e.numberFormat}return a}function Z(e){if((0,p.O3)(e)&&e.formulas?.length)return{formulas:e.formulas,operandsHidden:!1===e.showOperandSeries}}function J(e){if(!(0,p.O3)(e)||!Array.isArray(e.select))return 0;let t=Z(e);return t?(t.operandsHidden?0:e.select.length)+t.formulas.length:(0,m.sA)(e.select,e)?1:e.select.length}function X(e,t){let a,r,i=(0,n.c)(28);i[0]!==e.source?(a={id:e.source},i[0]=e.source,i[1]=a):a=i[1];let{data:s}=M(a);if(i[2]!==e||i[3]!==t||i[4]!==s){e:{let a,n,o,l,u=Z(e),c=u?.formulas.find(et)?.numberFormat;i[6]!==e||i[7]!==s?(a=(0,p.O3)(e)&&Array.isArray(e.select)?G(e.select,s):void 0,i[6]=e,i[7]=s,i[8]=a):a=i[8];let d=a,f=e.numberFormat??(u?.operandsHidden?c??d:d??c);if(!t||!(0,p.O3)(e)||!Array.isArray(e.select)){r={formatByColumn:new Map,chartFormat:f};break e}if(u){let a,n=[...u.operandsHidden?[]:e.select.map(t=>t.numberFormat??e.numberFormat??Q(s,t)),...u.formulas.map(t=>t.numberFormat??e.numberFormat)],o=new Map;n.forEach((e,a)=>{let n=t[a]?.name;null!=n&&e&&o.set(n,e)}),i[9]!==f||i[10]!==o?(a={formatByColumn:o,chartFormat:f},i[9]=f,i[10]=o,i[11]=a):a=i[11],r=a;break e}if((0,m.sA)(e.select,e)){let a,n,s=e.select[0]?.numberFormat??e.select[1]?.numberFormat??e.numberFormat;i[12]!==s||i[13]!==t[0]?(a=t[0]&&s?new Map([[t[0].name,s]]):new Map,i[12]=s,i[13]=t[0],i[14]=a):a=i[14];let o=a;i[15]!==f||i[16]!==o?(n={formatByColumn:o,chartFormat:f},i[15]=f,i[16]=o,i[17]=n):n=i[17],r=n;break e}i[18]!==t?(n=t.map(ee),i[18]=t,i[19]=n):n=i[19];let g=n;if(i[20]!==g||i[21]!==e.numberFormat||i[22]!==e.select||i[23]!==s){o=new Map;for(let t=0;t{function n(e,t){return null!=e?e:t()}function r(e){let t,a=e[0],n=1;for(;na.call(t,...e)),t=void 0)}return a}function i(e){let t=r(e);return null==t||t}var s=a(91820),o=a(95384);a(69498),a(62637),a(68798),a(7837),a(40313),a(787);var l=a(5216),u=(e,{module:t,message:a,args:r,err:i})=>{let{sql:o,...l}=n(r,()=>({}));"string"==typeof o?e(`${a}: +${(e=>{try{return s.a.call(void 0,e)}catch(t){return e}})(o)}`):e(`[${t}] ${a}`,...Object.values(l),...i?[i]:[])},c={trace:e=>u(console.debug,e),debug:e=>u(console.debug,e),info:e=>u(console.info,e),warn:e=>u(console.warn,e),error:e=>u(console.error,e)},m=(e,t)=>{t||(t={});let a=new URL(e instanceof URL?e:e instanceof Request?e.url:e),n=r([t,"access",e=>e.headers,"optionalAccess",e=>e.Authorization]),[s,o]=window.atob(n.substring(6)).split(":");return i([t,"access",e=>e.headers,"optionalAccess",e=>delete e.Authorization]),i([t,"access",e=>e.headers,"optionalAccess",e=>delete e.authorization]),s&&a.searchParams.set("user",s),o&&a.searchParams.set("password",o),t.credentials="omit",fetch(`${a.toString()}`,t)},d=(e,t)=>(t||(t={}),i([t,"access",e=>e.headers,"optionalAccess",e=>delete e.Authorization]),i([t,"access",e=>e.headers,"optionalAccess",e=>delete e.authorization]),fetch(e,t)),p=t.Kc=async({host:e,username:t,password:a})=>{try{return(await new f({host:e,username:t,password:a}).query({query:"SELECT 1",format:"TabSeparatedRaw"})).text().then(e=>"1"===e.trim())}catch(e){return console.warn("Failed to test local connection",e),!1}},f=t.aP=class extends o.Z{constructor(e){super({...e,customLogger:n(e.customLogger,()=>c)})}getClient(){return super.getClient()}buildClient(){let e=this.host,t,a=null!=this.username&&null!=this.password,r={};a?(t=m,r.add_http_cors_header=1):(e=`${window.origin}${this.host}`,t=d);let i=new URL(e);return l.createClient.call(void 0,{url:i.origin,pathname:i.pathname,clickhouse_settings:r,username:n(this.username,()=>""),password:n(this.password,()=>""),use_multipart_params_auto:!0,keep_alive:{enabled:!1},fetch:t,request_timeout:this.requestTimeout,application:this.application})}async __query({query:e,format:t="JSON",query_params:a={},abort_signal:n,clickhouse_settings:r,connectionId:i,queryId:s,shouldSkipApplySettings:o}){let l;null==this.client&&(this.client=this.buildClient()),this.logQuery(e,a),o||(l=await this.processClickhouseSettings({connectionId:i,externalClickhouseSettings:r}));let u={...i&&"local"!==i?{"x-hyperdx-connection-id":i}:{}};return this.getClient().query({query:e,query_params:a,format:t,abort_signal:n,http_headers:u,clickhouse_settings:l,query_id:s})}};t.aP=f,t.Kc=p},91021:(e,t,a)=>{a.d(t,{Kc:()=>T,HD:()=>w,zu:()=>N});var n=a(75155),r=a(35467),i=a(67270),s=a(76089),o=a(62798),l=a(73854),u=a(39741),c=a(93251),m=a(12482),d=a(6876),p=a(43152),f=a(49672),g=a(98142),h=a(79339),y=a.n(h);let b="hyperdx",_=e=>{let t=y().sha1(e),a=(0,i.v4)(e.aggCondition);switch(e.aggFn){case"min":case"max":case"sum":case"avg":return{fieldName:t,fn:`${e.aggFn}${a?"If":""}`,args:["Nullable(Float64)",...a?["UInt8"]:[]]};case"count":return{fieldName:t,fn:`${e.aggFn}${a?"If":""}`,args:a?["UInt8"]:[]};default:throw Error(`Unsupported aggregation function: ${e.aggFn}`)}},$=async(e,t,a,n)=>{let s,o={...e,...Array.isArray(e.select)&&{select:e.select.map(e=>{let{fieldName:t,fn:a}=_(e);return{...e,aggFn:`${a}State`,alias:t}})},granularity:n??e.granularity,dateRange:void 0,orderBy:void 0,limit:void 0},l=await (0,i.PV)(o,t,a),u=y().sha1(l),c=`${e.from.tableName}_mv_${u}`,m={...e,...Array.isArray(e.select)&&{select:e.select.map(e=>{let{fieldName:t,fn:a}=_(e);return{aggFn:`${a}Merge`,valueExpression:t,alias:`${e.aggFn}(${e.valueExpression})`}})},timestampValueExpression:i.n_,from:{databaseName:b,tableName:c}};return{mtViewName:c,dataTableDDL:(0,r.l6)(((e,t)=>{if(!Array.isArray(t.select))throw Error("Only array select is supported");if((0,i.x1)(t))throw Error("Group by is not supported");return(0,r.kg)`CREATE TABLE IF NOT EXISTS ${b}.${{Identifier:e}} + ( + ${{Identifier:i.n_}} DateTime, + ${t.select.map(e=>{let{args:t,fieldName:a,fn:n}=_(e),r=[n,...t].join(",");return`${a} AggregateFunction(${r})`}).join(",\n")} + ) + ENGINE = AggregatingMergeTree + ORDER BY ${{Identifier:i.n_}} + SETTINGS index_granularity = 8192 + `})(`${c}_data`,e)),mtViewDDL:(0,r.l6)((s=`${c}_data`,(0,r.kg)`CREATE MATERIALIZED VIEW IF NOT EXISTS ${b}.${{Identifier:c}} TO ${b}.${{Identifier:s}} AS + ${l} + `)),renderMTViewConfig:async()=>{try{return await (0,i.PV)(m,t,a)}catch(e){return console.error("Failed to render MTView config",e),null}}}};var S=a(78550),A=a(81973),v=a(69519),E=a(57389);async function*x({config:e,clickhouseClient:t,signal:a,enableQueryChunking:n=!1,enableParallelQueries:r=!1,metadata:l,querySettings:u}){let c=n&&!((0,o.Xo)(e)||(0,o.qi)(e)||!(0,i.lE)(e)||!e.dateRange||(0,i.bv)(e))&&1?(e=>{let[t,a]=e.dateRange,n=(0,v.so)(t,a,void 0),r="auto"===e.granularity?(0,s.tA)(e.dateRange):e.granularity,i=[];for(let[t,s]of n.entries()){let o=t===n.length-1?s.startTime:(0,p.W6)(s.startTime,r),l=0===t?a:(0,p.W6)(s.endTime,r);(!i.length||o({...e,...t??{},...null!=t&&null!=d&&null!=m?{seriesLimitDateRange:m}:{}});if(g.HT&&(0,o.O3)(e)){let{dataTableDDL:t,mtViewDDL:a,renderMTViewConfig:n}=await $(e,l,u);console.log("dataTableDDL:",t),console.log("mtViewDDL:",a),await n()}let h=(0,o.Xo)(e)?{readonly:"2"}:{};if(r){let e=c.map(async(e,n)=>{let r=f(e);return{index:n,queryResult:await t.queryChartConfig({config:r,metadata:l,opts:{abort_signal:a,clickhouse_settings:h},querySettings:u})}}),n=[...e],r=Array(c.length),i=0;for(let t=0;t0&&void 0!==r[0];){let e=r.shift();yield{chunk:e,isComplete:0===r.length},i+=1}}return}for(let e=0;e{if((0,o.qi)(e)&&e.dateRange){let{promqlExpression:t}=(0,u.$t)(e),[a,n]=e.dateRange,r=a.getTime()/1e3,i=n.getTime()/1e3,s="60s";e.granularity&&"auto"!==e.granularity&&(s=`${({"15 second":15,"30 second":30,"1 minute":60,"5 minute":300,"10 minute":600,"15 minute":900,"30 minute":1800,"1 hour":3600,"2 hour":7200,"6 hour":21600,"12 hour":43200,"1 day":86400})[e.granularity]??60}s`);let o=await d.Vp.queryRange({query:t,start:r,end:i,step:s,connectionId:e.connection,database:e.from?.databaseName,table:e.from?.tableName});if("success"!==o.status||!o.data)throw Error(o.error??"PromQL query failed");let l=o.data.result,c=new Map;for(let e of l)for(let[t,a]of Object.entries(e.metric))"__name__"!==t&&(c.has(t)||c.set(t,new Set),c.get(t).add(a));let m=new Set;for(let[e,t]of c)t.size>1&&m.add(e);let p=[];for(let e of l){let t=e.metric.__name__??"",a=Object.entries(e.metric).filter(([e])=>"__name__"!==e&&m.has(e)).map(([e,t])=>`${e}="${t}"`).join(", "),n=a?`${t}{${a}}`:t;for(let[t,a]of e.values)p.push({__hdx_time_bucket:new Date(1e3*t).toISOString(),value:parseFloat(a),series_name:n})}return{data:p,meta:[{name:"__hdx_time_bucket",type:"DateTime64(3)"},{name:"value",type:"Float64"},{name:"series_name",type:"String"}],rows:p.length,isComplete:!0}}let s=l?.optimizedConfig??e,c=r.getQueryCache().find({queryKey:a.queryKey,exact:!0}),m=!!c&&void 0!==c.state.data,p=x({config:s,clickhouseClient:n,signal:a.signal,enableQueryChunking:t?.enableQueryChunking,enableParallelQueries:t?.enableParallelQueries,metadata:i,querySettings:g?.querySettings}),f={data:[],meta:[],rows:0,isComplete:!1};for await(let e of p){if(a.signal.aborted)break;f=function(e,{chunk:t,isComplete:a}){let n=t.data||[],r=e?.data||[];return{data:0===r.length?n:[...n,...r],meta:t.meta,rows:(e?.rows||0)+(t.rows||0),isComplete:a}}(f,e),m||r.setQueryData(a.queryKey,f)}return m&&!a.signal.aborted&&r.setQueryData(a.queryKey,f),r.getQueryData(a.queryKey)},retry:1,refetchOnWindowFocus:!1,...t,enabled:a&&!p&&!h});return y.isError&&t?.onError&&t.onError(y.error),{...y,isLoading:y.isLoading||p}}function N(e,t){let a,s,u,c,d,p,f,g,h=(0,n.c)(26);h[0]!==t?(a=t??{},h[0]=t,h[1]=a):a=h[1];let{enabled:y}=a,b=void 0===y||y,_=(0,S.Ge)(),$=(0,o.O3)(e)?e:void 0,v=!!b&&!!$;h[2]!==v?(s={enabled:v,placeholderData:void 0},h[2]=v,h[3]=s):s=h[3];let{data:x,isLoading:w}=(0,E.d)($,s);h[4]!==e.source?(u={id:e.source},h[4]=e.source,h[5]=u):u=h[5];let{data:N,isLoading:T}=(0,A.Fo)(u);h[6]!==e?(c=["renderedSql",e],h[6]=e,h[7]=c):c=h[7],h[8]!==e||h[9]!==_||h[10]!==x?.optimizedConfig||h[11]!==N?.querySettings?(d=async()=>{let t=x?.optimizedConfig??e,a=await (0,i.PV)(t,_,N?.querySettings),n=(0,r.l6)(a);return(0,o.qi)(e)?n:(0,l.G)(n)},h[8]=e,h[9]=_,h[10]=x?.optimizedConfig,h[11]=N?.querySettings,h[12]=d):d=h[12],h[13]!==e||h[14]!==b||h[15]!==w||h[16]!==T?(p=b&&!w&&!T&&!(0,o.qi)(e),h[13]=e,h[14]=b,h[15]=w,h[16]=T,h[17]=p):p=h[17],h[18]!==t||h[19]!==c||h[20]!==d||h[21]!==p?(f={queryKey:c,queryFn:d,...t,enabled:p},h[18]=t,h[19]=c,h[20]=d,h[21]=p,h[22]=f):f=h[22];let I=(0,m.I)(f),k=I.isLoading||w;return h[23]!==I||h[24]!==k?(g={...I,isLoading:k},h[23]=I,h[24]=k,h[25]=g):g=h[25],g}function T(e,t){let a,s,o,l,u=(0,n.c)(20);u[0]!==e?(a=e?.dateRange&&(0,i.lE)(e)?e.dateRange[1].getTime()-e.dateRange[0].getTime():void 0,u[0]=e,u[1]=a):a=u[1];let c=a,d=(0,S.Ge)(),p=e?.select,f=e?.from,g=e?.connection,h=e?.with,y=e?.groupBy,b=e?.selectGroupBy,_=e?.granularity,$=e?.seriesReturnType;u[2]!==c||u[3]!==p||u[4]!==f||u[5]!==g||u[6]!==h||u[7]!==y||u[8]!==b||u[9]!==_||u[10]!==$?(s=["aliasMap",p,f,g,h,y,b,_,$,c],u[2]=c,u[3]=p,u[4]=f,u[5]=g,u[6]=h,u[7]=y,u[8]=b,u[9]=_,u[10]=$,u[11]=s):s=u[11],u[12]!==e||u[13]!==d?(o=async()=>{if(null==e)return{};if("configType"in e&&"promql"===e.configType)return{__hdx_time_bucket:"__hdx_time_bucket",value:"value",series_name:"series_name"};let t=await (0,i.PV)(e,d,void 0);return(0,r.D7)(t)},u[12]=e,u[13]=d,u[14]=o):o=u[14];let A=null!=e;return u[15]!==t||u[16]!==o||u[17]!==A||u[18]!==s?(l={queryKey:s,queryFn:o,enabled:A,...t},u[15]=t,u[16]=o,u[17]=A,u[18]=s,u[19]=l):l=u[19],(0,m.I)(l)}},91820:(e,t,a)=>{Object.defineProperty(t,"__esModule",{value:!0});var n=a(15861),r=/\b([A-Za-z_]\w*(?:If|Array|Map|State|Merge|ForEach|Distinct|OrDefault|OrNull|Resample))\s+\(/g,i=/\b([A-Za-z_]\w*(?:If|Array|Map|State|Merge|ForEach|Distinct|OrDefault|OrNull|Resample))\(([^()]*)\)\s+\(/g;t.a=function(e){return n.formatDialect.call(void 0,e,{dialect:n.clickhouse,paramTypes:{custom:[{regex:String.raw`\$__\w+`}]}}).replace(/\$__(\w+)\s+\(/g,(e,t)=>`$__${t}(`).replace(r,(e,t)=>`${t}(`).replace(i,(e,t,a)=>`${t}(${a})(`)}},93108:(e,t,a)=>{a.d(t,{Gs:()=>p,Ir:()=>b,PQ:()=>A,ZY:()=>h,Zm:()=>$,xZ:()=>g});var n=a(75155),r=a(91985),i=a.n(r),s=a(88459),o=a(12482),l=a(93251),u=a(16932),c=a(6876),m=a(98142),d=a(92917);let p="connections";function f(e){let t=new StorageEvent("storage",{key:p,oldValue:i().session.get(p),newValue:JSON.stringify(e),storageArea:window.sessionStorage,url:window.location.href});i().session.set(p,e),window.dispatchEvent(t)}function g(){if(i().session.has(p))return i().session.get(p)??[];try{let e=(0,d.Ol)(m.$E??"");if(null!=e)return e}catch(e){console.error("Error fetching default connections",e)}return[]}function h(){let e,t=(0,n.c)(1);return t[0]===Symbol.for("react.memo_cache_sentinel")?(e={queryKey:["connections"],queryFn:y},t[0]=e):e=t[0],(0,o.I)(e)}function y(){return m.VO?g():(0,c.Q5)("connections").json()}function b(){let e,t=(0,n.c)(2),a=(0,l.jE)();return t[0]!==a?(e={mutationFn:_,onSuccess:()=>{a.invalidateQueries({queryKey:["connections"]}),a.invalidateQueries({queryKey:["sources"]})}},t[0]=a,t[1]=e):e=t[1],(0,u.n)(e)}async function _(e){let{connection:t}=e;if(m.VO){if(!await (0,s.Kc)({host:t.host,username:t.username,password:t.password??""}))throw Error("Could not connect to Clickhouse with connection details");let e={id:"local"};return f([{...t,...e}]),e}return await (0,c.Q5)("connections",{method:"POST",json:t}).json()}function $(){let e,t=(0,n.c)(2),a=(0,l.jE)();return t[0]!==a?(e={mutationFn:S,onSuccess:()=>{a.invalidateQueries({queryKey:["connections"]})}},t[0]=a,t[1]=e):e=t[1],(0,u.n)(e)}async function S(e){let{connection:t,id:a}=e;m.VO?f([{...t,id:"local"}]):await (0,c.Q5)(`connections/${a}`,{method:"PUT",json:t})}function A(){let e,t=(0,n.c)(2),a=(0,l.jE)();return t[0]!==a?(e={mutationFn:v,onSuccess:()=>{a.invalidateQueries({queryKey:["connections"]})}},t[0]=a,t[1]=e):e=t[1],(0,u.n)(e)}async function v(e){let{id:t}=e;m.VO?f(g().filter(e=>e.id!==t)):await (0,c.Q5)(`connections/${t}`,{method:"DELETE"})}},95384:(e,t,a)=>{let n,r,i;var s,o,l,u=a(29143);function c(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var a in e)Object.prototype.hasOwnProperty.call(e,a)&&(t[a]=e[a]);return t.default=e,t}function m(e){return e&&e.__esModule?e:{default:e}}function d(e,t){return null!=e?e:t()}async function p(e,t){return null!=e?e:await t()}function f(e){let t,a=e[0],n=1;for(;na.call(t,...e)),t=void 0)}return a}async function g(e){let t,a=e[0],n=1;for(;na.call(t,...e)),t=void 0)}return a}Object.defineProperty(t,"__esModule",{value:!0});var h=a(69498),y=a(62637),b=a(68798),_=a(7837),$=a(40313),S=a(787),A=a(81925),v=a(71963),E=a(71434),x=m(a(79339)),w=m(a(55235)),N=m(a(80519)),T=a(64497),I=c(T),k=c(T),C=c(T),R=m(a(64022)),q="group",M=e=>e?tx`${e},`:tx``,O=(e,t=", ")=>tw(t,e.filter(e=>void 0!==e).map(e=>tx`${e}`)),F=({timeBucketSelect:e,groupBy:t})=>{let a=O([e?`\`${K}\``:void 0,t?q:void 0],`, +`);return a.sql.length>0?tx`${a},`:tx``},L=({timeBucketSelect:e,groupBy:t})=>{let a=O([e?`\`${K}\``:void 0,t?q:void 0]);return a.sql.length>0?tx`GROUP BY ${a}`:tx``},D="cityHash64(ScopeAttributes, ResourceAttributes, Attributes)",U=t.h=({select:e,...t})=>{if("quantile"===e.aggFn){if(!("level"in e)||null===e.level)throw Error("quantile must have a level");return W({...t,level:e.level})}if("count"===e.aggFn)return V(t);throw Error(`${e.aggFn} is not supported for histograms currently`)},V=({timeBucketSelect:e,groupBy:t,from:a,where:n,valueAlias:r})=>[{name:"source",sql:tx` + SELECT + TimeUnix, + AggregationTemporality, + ${M(e)} + ${t?tx`[${t}] AS ${q},`:""} + ${D} AS attr_hash, + cityHash64(ExplicitBounds) AS bounds_hash, + toInt64(Count) AS current_count, + lagInFrame(toNullable(current_count), 1, NULL) OVER ( + PARTITION BY ${t?`${q}, `:""}attr_hash, bounds_hash, AggregationTemporality + ORDER BY TimeUnix + ) AS prev_count, + CASE + WHEN AggregationTemporality = 1 THEN current_count + WHEN AggregationTemporality = 2 AND prev_count IS NOT NULL + THEN if( ${""} + current_count < prev_count, + current_count, + current_count - prev_count + ) + ELSE 0 + END AS delta + FROM ${a} + WHERE ${n} + `},{name:"metrics",sql:tx` + SELECT + ${F({timeBucketSelect:e,groupBy:t})} + sum(delta) AS "${r}" + FROM source + ${L({timeBucketSelect:e,groupBy:t})} + `}],W=({timeBucketSelect:e,groupBy:t,from:a,where:n,valueAlias:r,level:i})=>[{name:"source",sql:tx` + SELECT + MetricName, + ExplicitBounds, + ${M(e)} + ${t?`${q},`:""} + sumForEach(deltas) as rates + FROM ( + SELECT + TimeUnix, + MetricName, + ExplicitBounds, + ${t?tx` ${q},`:""} + attr_hash, + any(attr_hash) OVER prev_row AS prev_attr_hash, + count() OVER prev_row = 0 OR prev_attr_hash != attr_hash AS is_first_series_point, + any(bounds_hash) OVER prev_row AS prev_bounds_hash, + any(counts) OVER prev_row AS prev_counts, + counts, + multiIf( + AggregationTemporality = 2 AND is_first_series_point, ${""} + arrayWithConstant(length(counts), toInt64(0)), + + AggregationTemporality = 1 ${""} + OR bounds_hash != prev_bounds_hash ${""} + OR arrayExists((x) -> x.2 < x.1, arrayZip(prev_counts, counts)), ${""} + counts, + + counts - prev_counts + ) AS deltas + FROM ( + SELECT + TimeUnix, + MetricName, + AggregationTemporality, + ExplicitBounds, + ResourceAttributes, + Attributes,${t?tx`[${t}] as ${q},`:""} + ${D} AS attr_hash, + cityHash64(ExplicitBounds) AS bounds_hash, + CAST(BucketCounts AS Array(Int64)) counts + FROM ${a} + WHERE ${n} + ORDER BY ${t?`${q}, `:""}attr_hash, TimeUnix ASC + ) + WINDOW prev_row AS ( + ${t?tx` PARTITION BY ${q}`:""} + ORDER BY attr_hash, TimeUnix + ROWS BETWEEN 1 PRECEDING AND 1 PRECEDING + ) + ) + GROUP BY ${e?tx`${K},`:""} MetricName, ${t?`${q}, `:""}ExplicitBounds + ${e?tx`ORDER BY ${K}`:""} + `},{name:"points",sql:tx` + SELECT + ${F({timeBucketSelect:e,groupBy:t})} + MetricName, + arrayZipUnaligned(arrayCumSum(rates), ExplicitBounds) as point, + length(point) as n + FROM source + `},{name:"metrics",sql:tx` + SELECT + ${F({timeBucketSelect:e,groupBy:t})} + MetricName, + point[n].1 AS total, + ${{Float64:i}} * total AS rank, + arrayFirstIndex(x -> if(x.1 > rank, 1, 0), point) AS upper_idx, + point[upper_idx].1 AS upper_count, + ifNull(point[upper_idx].2, inf) AS upper_bound, + CASE + WHEN upper_idx > 1 THEN point[upper_idx - 1].2 + WHEN point[upper_idx].2 > 0 THEN 0 + ELSE inf + END AS lower_bound, + if ( + lower_bound = 0, + 0, + point[upper_idx - 1].1 + ) AS lower_count, + CASE + WHEN upper_bound = inf THEN point[upper_idx - 1].2 + WHEN lower_bound = inf THEN point[1].2 + ELSE lower_bound + (upper_bound - lower_bound) * ((rank - lower_count) / (upper_count - lower_count)) + END AS "${r}" + FROM points + WHERE length(point) > 1 AND total > 0 + `}],B=t.i=({select:e,...t})=>{if("quantile"===e.aggFn){if(!("level"in e)||null===e.level)throw Error("quantile must have a level");return j({...t,level:e.level})}if("count"===e.aggFn)return P(t);throw Error(`${e.aggFn} is not currently supported for exponential histogram metrics`)},P=({timeBucketSelect:e,groupBy:t,from:a,where:n,valueAlias:r})=>[{name:"source",sql:tx` + SELECT + MetricName, + TimeUnix, + StartTimeUnix, + AggregationTemporality, + ${M(e)} + ${t?tx`[${t}] AS ${q},`:""} + ${D} AS attr_hash, + toInt64(Count) AS current_count, + count() OVER prev_row = 0 AS is_first_series_point, + toInt64(any(Count) OVER prev_row) AS previous_count, + any(StartTimeUnix) OVER prev_row AS previous_start_time, + CASE + WHEN AggregationTemporality = 1 THEN current_count + WHEN AggregationTemporality = 2 THEN + multiIf( + is_first_series_point OR StartTimeUnix = TimeUnix, 0, + StartTimeUnix != previous_start_time OR current_count < previous_count, current_count, + current_count - previous_count + ) + ELSE 0 + END AS delta + FROM ${a} + WHERE ${n} + WINDOW prev_row AS ( + PARTITION BY ${t?`${q}, `:""}MetricName, attr_hash, AggregationTemporality + ORDER BY TimeUnix + ROWS BETWEEN 1 PRECEDING AND 1 PRECEDING + ) + `},{name:"metrics",sql:tx` + SELECT + ${F({timeBucketSelect:e,groupBy:t})} + sum(delta) AS "${r}" + FROM source + ${L({timeBucketSelect:e,groupBy:t})} + `}],j=({timeBucketSelect:e,groupBy:t,from:a,where:n,valueAlias:r,level:i})=>[{name:"filtered_series",sql:tx` + SELECT + MetricName, + TimeUnix, + StartTimeUnix, + AggregationTemporality, + Scale, + ${D} AS attr_hash, + ${t?tx`[${t}] as ${q},`:""} + ZeroCount, + PositiveOffset, + PositiveBucketCounts, + NegativeOffset, + NegativeBucketCounts + FROM ${a} + WHERE ${n} + `},{name:"series_with_normalized_scale",sql:tx` + SELECT + MetricName, + TimeUnix, + StartTimeUnix, + AggregationTemporality, + normalized_scale AS Scale, + attr_hash, + ${t?`${q},`:""} + ZeroCount, + + assumeNotNull((SELECT min(Scale) FROM filtered_series)) AS normalized_scale, + series.Scale - normalized_scale AS scale_shift, + bitShiftLeft(toInt64(1), scale_shift) AS scale_divisor, ${""} + + ${""} + series.PositiveOffset + length(series.PositiveBucketCounts) - 1 AS positive_last_index, + bitShiftRight(series.PositiveOffset, scale_shift) AS normalized_positive_offset, + normalized_negative_offset AS NegativeOffset, + + series.NegativeOffset + length(series.NegativeBucketCounts) - 1 AS negative_last_index, + bitShiftRight(series.NegativeOffset, scale_shift) AS normalized_negative_offset, + normalized_positive_offset AS PositiveOffset, + + ${""} + if( + scale_shift = 0, + series.PositiveBucketCounts, + arrayMap( + bucket_group -> arraySum(bucket_group), + arraySplit( + (count, index) -> positiveModulo(index, scale_divisor) = 0, + series.PositiveBucketCounts, + range(series.PositiveOffset, positive_last_index + 1) + ) + ) + ) AS PositiveBucketCounts, + + if( + scale_shift = 0, + series.NegativeBucketCounts, + arrayMap( + bucket_group -> arraySum(bucket_group), + arraySplit( + (count, index) -> positiveModulo(index, scale_divisor) = 0, + series.NegativeBucketCounts, + range(series.NegativeOffset, negative_last_index + 1) + ) + ) + ) AS NegativeBucketCounts + FROM filtered_series AS series + `},{name:"normalized_deltas",sql:tx` + SELECT + MetricName, + TimeUnix, + Scale, + ${t?`${q},`:""} + + ${""} + is_first_series_point OR StartTimeUnix = TimeUnix AS use_zero_counts, + + ${""} + NOT use_zero_counts + AND ( + StartTimeUnix != previous_start_time + OR current_zero_count < previous_zero_count + OR positive_counts_decreased + OR negative_counts_decreased + ) AS use_current_counts, + + ${""} + multiIf( + use_zero_counts, 0, + use_current_counts, current_zero_count, + current_zero_count - previous_zero_count + ) AS ZeroCount, + if( + use_zero_counts, + emptyArrayInt64(), + range( + PositiveOffset, + PositiveOffset + length(current_positive_bucket_counts) + ) + ) AS positive_bucket_indexes, + multiIf( + use_zero_counts, + emptyArrayInt64(), + use_current_counts, + current_positive_bucket_counts, + positive_deltas + ) AS positive_bucket_counts, + if( + use_zero_counts, + emptyArrayInt64(), + range( + NegativeOffset, + NegativeOffset + length(current_negative_bucket_counts) + ) + ) AS negative_bucket_indexes, + multiIf( + use_zero_counts, + emptyArrayInt64(), + use_current_counts, + current_negative_bucket_counts, + negative_deltas + ) AS negative_bucket_counts + FROM ( + SELECT + MetricName, + TimeUnix, + StartTimeUnix, + Scale, + attr_hash, + ${t?`${q},`:""} + PositiveOffset, + NegativeOffset, + + ${""} + toInt64(series.ZeroCount) AS current_zero_count, + series.PositiveBucketCounts::Array(Int64) AS current_positive_bucket_counts, + series.NegativeBucketCounts::Array(Int64) AS current_negative_bucket_counts, + + count() OVER prev_row = 0 AS is_first_series_point, + toInt64(any(series.ZeroCount) OVER prev_row) AS previous_zero_count, + any(series.StartTimeUnix) OVER prev_row AS previous_start_time, + any(series.PositiveOffset) OVER prev_row AS previous_positive_offset, + any(series.NegativeOffset) OVER prev_row AS previous_negative_offset, + (any(series.PositiveBucketCounts) OVER prev_row)::Array(Int64) + AS previous_positive_bucket_counts, + (any(series.NegativeBucketCounts) OVER prev_row)::Array(Int64) + AS previous_negative_bucket_counts, + + ${""} + arrayResize( + arrayConcat( + arrayWithConstant(greatest(0, previous_positive_offset - series.PositiveOffset), 0), + arraySlice( + previous_positive_bucket_counts, + 1 + greatest(0, series.PositiveOffset - previous_positive_offset) + ) + ), + length(current_positive_bucket_counts) + ) AS aligned_previous_positive_counts, + arrayResize( + arrayConcat( + arrayWithConstant(greatest(0, previous_negative_offset - series.NegativeOffset), 0), + arraySlice( + previous_negative_bucket_counts, + 1 + greatest(0, series.NegativeOffset - previous_negative_offset) + ) + ), + length(current_negative_bucket_counts) + ) AS aligned_previous_negative_counts, + + ${""} + current_positive_bucket_counts - aligned_previous_positive_counts + AS positive_deltas, + current_negative_bucket_counts - aligned_previous_negative_counts + AS negative_deltas, + + ${""} + arrayMin(positive_deltas) < 0 + OR arraySum(previous_positive_bucket_counts) > arraySum(aligned_previous_positive_counts) + AS positive_counts_decreased, + arrayMin(negative_deltas) < 0 + OR arraySum(previous_negative_bucket_counts) > arraySum(aligned_previous_negative_counts) + AS negative_counts_decreased + FROM ( + SELECT * + FROM series_with_normalized_scale + WHERE AggregationTemporality = 2 + ${""} + ORDER BY ${t?`${q}, `:""}MetricName, attr_hash, TimeUnix + ) AS series + WINDOW prev_row AS ( + PARTITION BY ${t?`${q}, `:""}MetricName, attr_hash + ORDER BY TimeUnix + ROWS BETWEEN 1 PRECEDING AND 1 PRECEDING + ) + ) + + UNION ALL + + ${""} + SELECT + MetricName, + TimeUnix, + Scale, + ${t?`${q},`:""} + toUInt8(0) AS use_zero_counts, + toUInt8(1) AS use_current_counts, + toInt64(ZeroCount) AS ZeroCount, + range( + PositiveOffset, + PositiveOffset + length(PositiveBucketCounts) + ) AS positive_bucket_indexes, + PositiveBucketCounts::Array(Int64) AS positive_bucket_counts, + range( + NegativeOffset, + NegativeOffset + length(NegativeBucketCounts) + ) AS negative_bucket_indexes, + NegativeBucketCounts::Array(Int64) AS negative_bucket_counts + FROM series_with_normalized_scale + WHERE AggregationTemporality = 1 + `},{name:"summed_buckets",sql:tx` + SELECT + ${M(e)} + ${t?`${q},`:""} + any(Scale) AS Scale, + sum(ZeroCount) AS ZeroCount, + sumMap(positive_bucket_indexes, positive_bucket_counts) AS positive_buckets, + sumMap(negative_bucket_indexes, negative_bucket_counts) AS negative_buckets + FROM normalized_deltas + ${L({timeBucketSelect:e,groupBy:t})} + `},{name:"selected_quantile_buckets",sql:tx` + SELECT + ${F({timeBucketSelect:e,groupBy:t})} + Scale, + + ${""} + length(negative_buckets.1) AS negative_bucket_count, + arrayConcat( + arrayReverse(negative_buckets.1), + [0], + positive_buckets.1 + ) AS bucket_indexes, + arrayConcat( + arrayReverse(negative_buckets.2), + [ZeroCount], + positive_buckets.2 + ) AS bucket_counts, + + ${""} + arrayCumSum(bucket_counts) AS cumulative_counts, + cumulative_counts[-1] AS total, + ${{Float64:i}} * total AS rank, + + ${""} + arrayFirstIndex( + (cumulative_count, bucket_count) -> bucket_count > 0 AND cumulative_count >= rank, + cumulative_counts, + bucket_counts + ) AS selected_bucket_position, + + ${""} + sign(selected_bucket_position - negative_bucket_count - 1) AS selected_bucket_side, + bucket_indexes[selected_bucket_position] AS selected_bucket_index, + + ${""} + (rank - cumulative_counts[selected_bucket_position - 1]) + / bucket_counts[selected_bucket_position] AS fraction_within_bucket + FROM summed_buckets + WHERE total > 0 AND selected_bucket_position > 0 + `},{name:"metrics",sql:tx` + SELECT + ${F({timeBucketSelect:e,groupBy:t})} + multiIf( + selected_bucket_side < 0, + -exp2((selected_bucket_index + 1 - fraction_within_bucket) * exp2(-Scale)), + selected_bucket_side > 0, + exp2((selected_bucket_index + fraction_within_bucket) * exp2(-Scale)), + 0 ${""} + ) AS "${r}" + FROM selected_quantile_buckets + `}];function H(e,t){return t||N.default.format("MetricName = ?",[e])}var K=t.j="__hdx_time_bucket";function z(e){return null!=e.groupBy&&e.groupBy.length>0}function Q(e){return null!=e.timestampValueExpression&&null!=e.granularity}var G=e=>null!=e.metricTables,Y=t.n=e=>d(f([e,"access",e=>e.formulas,"optionalAccess",e=>e.length]),()=>0)>0,Z=t.o=e=>Array.isArray(e.select)&&G(e)?{...e,select:e.select.map(e=>({...e,alias:e.alias||("increase"===e.aggFn?`increase(${e.metricName})`:e.isDelta?`${e.aggFn}(delta(${e.metricName}))`:`${e.aggFn}(${e.metricName})`)}))}:e,J="__hdx_value",X="__hdx_series_idx",ee=e=>`"${e.replace(/"/g,'""')}"`,et=e=>"histogram"===e.metricType||"exponential histogram"===e.metricType,ea={"=":"!=",">":"<=","<":">=","!=":"=","<=":">",">=":"<"};function en(e){return null!=e&&""!=e.trim()}function er(e){return d(f([e,"optionalAccess",e=>e.some,"call",e=>e(e=>!1!==e.isSubquery)]),()=>!1)}var ei=({materializedFields:e,rawSQL:t})=>{try{let[a]=nb(t),n=new k.Parser,r=n.astify(a,{database:"Postgresql"}),i=t=>{let a;if(null!=t){switch(t.type){case"column_ref":"string"!=typeof t.column&&(a=`${f([t,"access",e=>e.column,"optionalAccess",e=>e.expr,"access",e=>e.value])}['${f([t,"access",e=>e.array_index,"optionalAccess",e=>e[0],"optionalAccess",e=>e.index,"access",e=>e.value])}']`);break;case"binary_expr":if(Array.isArray(t.left))for(let e of t.left)i(e);else i(t.left);if(Array.isArray(t.right))for(let e of t.right)i(e);else i(t.right);break;case"function":if("expr_list"===f([t,"access",e=>e.args,"optionalAccess",e=>e.type]))if(Array.isArray(f([t,"access",e=>e.args,"optionalAccess",e=>e.value]))){for(let e of t.args.value)i(e);"column_ref"===f([t,"access",e=>e.args,"optionalAccess",e=>e.value,"optionalAccess",e=>e[0],"optionalAccess",e=>e.type])&&"single_quote_string"===f([t,"access",e=>e.args,"optionalAccess",e=>e.value,"optionalAccess",e=>e[1],"optionalAccess",e=>e.type])&&(a=`${f([t,"access",e=>e.name,"optionalAccess",e=>e.name,"optionalAccess",e=>e[0],"optionalAccess",e=>e.value])}(${f([t,"access",e=>e.args,"optionalAccess",e=>e.value,"optionalAccess",e=>e[0],"optionalAccess",e=>e.column,"access",e=>e.expr,"access",e=>e.value])}, '${f([t,"access",e=>e.args,"optionalAccess",e=>e.value,"optionalAccess",e=>e[1],"optionalAccess",e=>e.value])}')`)}else R.default.call(void 0,f([t,"access",e=>e.args,"optionalAccess",e=>e.value]))&&i(t.args.value)}if(a){let n=e.get(a);if(n){for(let e in t)t.hasOwnProperty(e)&&delete t[e];t.type="column_ref",t.table=null,t.column={expr:{type:"default",value:n}}}}}};if(Array.isArray(r.columns))for(let e of r.columns)i(e.expr);return i(r.where),n.sqlify(r)}catch(e){return t}};function es(e,t,a,n){return N.default.format("has(??, concat(?, ?, ?))",[e,t,a,n])}var eo=(e,t)=>{if(0===t.size)return e;try{let a=new k.Parser,n="SELECT 1 FROM `t` WHERE ",r=a.astify(`${n}${e}`,{database:"Postgresql"}),i=e=>{null!=e&&("binary_expr"===e.type?("left"in e&&i(e.left),"right"in e&&i(e.right),(e=>{let r,i;if(!("operator"in e))return;let s=String(d(e.operator,()=>"")).toUpperCase();if("="!==s&&"IN"!==s)return;let o=e.left;if("column_ref"!==f([o,"optionalAccess",e=>e.type])||"column"in o&&"string"==typeof o.column)return;let l=f([o,"access",e=>e.column,"optionalAccess",e=>e.expr,"optionalAccess",e=>e.value]),u=o.array_index;if("string"!=typeof l||!Array.isArray(u)||1!==u.length)return;let c=f([u,"access",e=>e[0],"optionalAccess",e=>e.index]);if("single_quote_string"!==f([c,"optionalAccess",e=>e.type])||"string"!=typeof c.value)return;let m=c.value,p=f([t,"access",e=>e.get,"call",e=>e(l),"optionalAccess",e=>e.kv]);if(!p)return;if("="===s){let t=e.right;if("single_quote_string"!==f([t,"optionalAccess",e=>e.type])||"string"!=typeof t.value)return;r=[t.value]}else{let t=e.right;if("expr_list"!==f([t,"optionalAccess",e=>e.type])||!Array.isArray(t.value))return;let a=[];for(let e of t.value){if("single_quote_string"!==f([e,"optionalAccess",e=>e.type])||"string"!=typeof e.value)return;a.push(e.value)}r=a}if(0===r.length||r.some(e=>""===e))return;i=1===r.length?es(p.columnName,m,p.separator,r[0]):p.useHasAny?`hasAny(${N.default.format("??",[p.columnName])}, array(${r.map(e=>N.default.format("concat(?, ?, ?)",[m,p.separator,e])).join(", ")}))`:`(${r.map(e=>es(p.columnName,m,p.separator,e)).join(" OR ")})`;let g=a.astify(`${n}${i}`,{database:"Postgresql"}).where;if(null!=g){for(let t of Object.keys(e))delete e[t];Object.assign(e,g)}})(e)):"expr_list"===e.type&&Array.isArray(e.value)&&e.value.forEach(i))};return i(r.where),a.sqlify(r).slice(n.length)}catch(t){return e}},el=({fn:e,expr:t,level:a,where:n,sampleWeightExpression:r})=>{let i="any"===e,s="none"===e,o=e.startsWith("count"),l=en(n),u={UNSAFE_RAW_SQL:i||s?`${t}`:`toFloat64OrDefault(toString(${t}))`},c=`${n} AND ${u.UNSAFE_RAW_SQL} IS NOT NULL`;if(e.endsWith("Merge")){let n=tx`${{UNSAFE_RAW_SQL:d(t,()=>"")}}`,r=a&&(e.startsWith("quantile")||e.startsWith("histogram"))?tx`(${{UNSAFE_RAW_SQL:Number.isFinite(a)?`${a}`:"0"}})`:[];return l?tx`${e}If${r}(${n}, ${{UNSAFE_RAW_SQL:c}})`:tx`${e}${r}(${n})`}if(e.endsWith("State"))return null==t||o?l?tx`${e}(${{UNSAFE_RAW_SQL:n}})`:tx`${e}()`:tx`${e}(${u}${l?tx`, ${{UNSAFE_RAW_SQL:c}}`:""})`;if(r&&!e.endsWith("Merge")&&!e.endsWith("State")){let i=`greatest(toUInt64OrZero(toString(${r})), 1)`,s={UNSAFE_RAW_SQL:i};if("count"===e)return l?tx`sumIf(${s}, ${{UNSAFE_RAW_SQL:n}})`:tx`sum(${s})`;if("none"===e)return tx`${{UNSAFE_RAW_SQL:d(t,()=>"")}}`;if(null!=t){if("count_distinct"===e||"min"===e||"max"===e)return"count_distinct"===e?tx`count${l?"If":""}(DISTINCT ${{UNSAFE_RAW_SQL:t}}${l?tx`, ${{UNSAFE_RAW_SQL:n}}`:""})`:tx`${{UNSAFE_RAW_SQL:e}}${l?"If":""}( + ${u}${l?tx`, ${{UNSAFE_RAW_SQL:c}}`:""} + )`;if("avg"===e){let e={UNSAFE_RAW_SQL:`${u.UNSAFE_RAW_SQL} * ${i}`},t=`${u.UNSAFE_RAW_SQL} IS NOT NULL`;if(l){let a={UNSAFE_RAW_SQL:`${n} AND ${t}`};return tx`sumIf(${e}, ${a}) / nullIf(sumIf(${s}, ${a}), 0)`}return tx`sumIf(${e}, ${{UNSAFE_RAW_SQL:t}}) / nullIf(sumIf(${s}, ${{UNSAFE_RAW_SQL:t}}), 0)`}if("sum"===e){let e={UNSAFE_RAW_SQL:`${u.UNSAFE_RAW_SQL} * ${i}`};return l?tx`sumIf(${e}, ${{UNSAFE_RAW_SQL:c}})`:tx`sum(${e})`}if(null!=a&&e.startsWith("quantile")){let e=Number.isFinite(a)?`${a}`:"0",t={UNSAFE_RAW_SQL:`toUInt32(${i})`};return l?tx`quantileTDigestWeightedIf(${{UNSAFE_RAW_SQL:e}})(${u}, ${t}, ${{UNSAFE_RAW_SQL:c}})`:tx`quantileTDigestWeighted(${{UNSAFE_RAW_SQL:e}})(${u}, ${t})`}}}if("count"===e)return l?tx`${e}If(${{UNSAFE_RAW_SQL:n}})`:{sql:`${e}()`,params:{}};if("none"===e)return tx`${{UNSAFE_RAW_SQL:d(t,()=>"")}}`;if(null!=t)return"count_distinct"===e?tx`count${l?"If":""}(DISTINCT ${{UNSAFE_RAW_SQL:t}}${l?tx`, ${{UNSAFE_RAW_SQL:n}}`:""})`:null!=a?tx`${e}${l?"If":""}(${{UNSAFE_RAW_SQL:Number.isFinite(a)?`${a}`:"0"}})(${u}${l?tx`, ${{UNSAFE_RAW_SQL:c}}`:""})`:tx`${{UNSAFE_RAW_SQL:e}}${l?"If":""}( + ${u}${l?tx`, ${{UNSAFE_RAW_SQL:c}}`:""} + )`;throw Error("Column is required for all non-count aggregation functions")};function eu(e,t){return"ratio"===t.seriesReturnType&&2===e.length}async function ec(e,t,a,{mergeRatio:n}){let r;if("string"==typeof e)return tx`${{UNSAFE_RAW_SQL:e}}`;try{r=er(t.with)||!t.from.databaseName?void 0:await a.getMaterializedColumnsLookupTable({connectionId:t.connection,databaseName:t.from.databaseName,tableName:t.from.tableName})}catch(e){}let i=n&&eu(e,t),s=await Promise.all(e.map(async e=>{let n=en(e.aggCondition)?await eb({condition:d(e.aggCondition,()=>""),from:t.from,language:d(e.aggConditionLanguage,()=>"lucene"),implicitColumnExpression:t.implicitColumnExpression,bodyExpression:t.bodyExpression,useTextIndexForImplicitColumn:t.useTextIndexForImplicitColumn,metadata:a,connectionId:t.connection,with:t.with}):tx``,i;i=null==e.aggFn?"lucene"===e.valueExpressionLanguage?await eb({condition:e.valueExpression,from:t.from,language:"lucene",implicitColumnExpression:t.implicitColumnExpression,bodyExpression:t.bodyExpression,useTextIndexForImplicitColumn:t.useTextIndexForImplicitColumn,metadata:a,connectionId:t.connection,with:t.with}):tx`${{UNSAFE_RAW_SQL:e.valueExpression}}`:e.aggFn.startsWith("quantile")||e.aggFn.startsWith("histogram")?el({fn:e.aggFn,expr:e.valueExpression,level:e.level,where:n.sql,sampleWeightExpression:t.sampleWeightExpression}):el({fn:e.aggFn,expr:e.valueExpression,where:n.sql,sampleWeightExpression:t.sampleWeightExpression});let s=`SELECT ${i.sql} FROM \`t\``;return r&&(i.sql=ei({materializedFields:r,rawSQL:s}).replace(/^SELECT\s+/i,"").replace(/\s+FROM `t`$/i,"")),tx`${i}${null!=e.alias&&""!==e.alias.trim()?tx` AS "${{UNSAFE_RAW_SQL:e.alias}}"`:[]}`}));return i?[tx`divide(${s[0]}, ${s[1]})`]:s}function em(e){return"string"==typeof e?tx`${{UNSAFE_RAW_SQL:e}}`:e.map(e=>tx`${{UNSAFE_RAW_SQL:e.valueExpression}} ${"DESC"===e.ordering?"DESC":"ASC"}`)}function ed({interval:e,timestampValueExpression:t,bucketTimestampValueExpression:a,dateRange:n,alias:r=K,isRenderingRawSqlTemplate:i}){let s={UNSAFE_RAW_SQL:d(a,()=>a3(t))};if(i)return tx`$__timeInterval(${s}) AS \`${{UNSAFE_RAW_SQL:r}}\``;let o={UNSAFE_RAW_SQL:"auto"===e&&Array.isArray(n)?nn(n):e};return tx`toStartOfInterval(toDateTime(${s}), INTERVAL ${o}) AS \`${{UNSAFE_RAW_SQL:r}}\``}async function ep({connectionId:e,databaseName:t,dateRange:a,dateRangeEndInclusive:n,dateRangeStartInclusive:r,isRenderingRawSqlTemplate:i,includedDataInterval:s,metadata:o,tableName:l,timestampValueExpression:u,with:c}){let m=a[0].getTime(),p=a[1].getTime(),g=u;try{if(t&&l&&e){let a=await o.getTableMetadata({databaseName:t,tableName:l,connectionId:e});g=nh(u,f([a,"optionalAccess",e=>e.primary_key]))}}catch(e){console.warn("Failed to optimize timestampValueExpression",e)}let h=a4(g);return tw("AND",...await Promise.all(h.map(async a=>{let u=a.trim(),g=ng(u),h=/^toDate\s*\(/.test(u),b=er(c)&&!t||!!g||h,_=b?null:await o.getColumn({databaseName:t,tableName:l,column:u,connectionId:e}),$={UNSAFE_RAW_SQL:u};null!=_||b||console.warn(`Column ${u} not found in ${t}.${l} while inferring type for time filter`);let S=i?s?tx`toStartOfInterval($__fromTime_ms, INTERVAL $__interval_s second) - INTERVAL $__interval_s second`:tx`$__fromTime_ms`:s?tx`toStartOfInterval(fromUnixTimestamp64Milli(${{Int64:m}}), INTERVAL ${s}) - INTERVAL ${s}`:tx`fromUnixTimestamp64Milli(${{Int64:m}})`,A=i?s?tx`toStartOfInterval($__toTime_ms, INTERVAL $__interval_s second) + INTERVAL $__interval_s second`:tx`$__toTime_ms`:s?tx`toStartOfInterval(fromUnixTimestamp64Milli(${{Int64:p}}), INTERVAL ${s}) + INTERVAL ${s}`:tx`fromUnixTimestamp64Milli(${{Int64:p}})`,v=g?tx`${g.function}(${S}${g.formattedRemainingArgs})`:S,E=g?tx`${g.function}(${A}${g.formattedRemainingArgs})`:A,x=/^Date(?:32)?$/i.test(y.d.call(void 0,d(f([_,"optionalAccess",e=>e.type]),()=>"")))||h,w=r||g||x?">=":">",N=n||g||x?"<=":"<";return x?tx`(${$} ${w} toDate(${v}) AND ${$} ${N} toDate(${E}))`:tx`(${$} ${w} ${v} AND ${$} ${N} ${E})`})))}async function ef(e,t,a){let n=d(t.formulas,()=>[]),r=await ec(e.map(e=>({...e,alias:void 0})),t,a,{mergeRatio:!1}),i=Array.isArray(r)?r:[r],s=e=>{let t=i.at(e);if(null==t)throw Error(`Formula references unknown series index ${e}`);return t},o=[];if(!1!==t.showOperandSeries){let n=await ec(e,t,a,{mergeRatio:!1});o.push(...Array.isArray(n)?n:[n])}let l=new Set(e.flatMap(e=>null!=e.alias&&""!==e.alias.trim()?[e.alias]:[]));return n.forEach((t,a)=>{var n,r;let i,u=b.f.call(void 0,t.expression,{seriesCount:e.length});if(!u.ok)throw Error(`Invalid formula "${t.expression}": ${u.errors.map(e=>e.message).join("; ")}`);let c=(n=t.alias||t.expression,r=e.length+a,i=l.has(n)?`${n}__${r}`:n,l.add(i),i),m=`${b.g.call(void 0,u.ast,e=>s(e).sql)} AS ${ee(c)}`,d=Object.assign({},...u.referencedIndices.map(e=>s(e).params));o.push({sql:m,params:d})}),o}async function eg(e,t){let a=Q(e),n=z(e);return tw(",",Array.isArray(e.select)&&d(f([e,"access",e=>e.formulas,"optionalAccess",e=>e.length]),()=>0)>0&&Array.isArray(e.select)?await ef(e.select,e,t):await ec(e.select,e,t,{mergeRatio:!0}),n&&!1!==e.selectGroupBy?await ec(e.groupBy,e,t,{mergeRatio:!1}):[],a?ed({interval:e.granularity,timestampValueExpression:e.timestampValueExpression,bucketTimestampValueExpression:e.bucketTimestampValueExpression,dateRange:e.dateRange,isRenderingRawSqlTemplate:e.isRenderingRawSqlTemplate}):[])}function eh({from:e,isRenderingRawSqlTemplate:t,metricType:a}){if(t){if(null!=a)return tx`$__sourceTable(${{UNSAFE_RAW_SQL:a}})`;if(""!==e.databaseName)return tx`$__sourceTable`}return tw(".",tx`${""===e.databaseName?"":{Identifier:e.databaseName}}`,tx`${{Identifier:e.tableName}}`)}async function ey({condition:e,language:t,metadata:a,from:n,implicitColumnExpression:r,bodyExpression:i,useTextIndexForImplicitColumn:s,connectionId:o,with:l}){let u,c=e;if("lucene"===t){let t=new t4({metadata:a,databaseName:n.databaseName,tableName:n.tableName,implicitColumnExpression:r,bodyExpression:i,useTextIndexForImplicitColumn:s,connectionId:o});c=await new ae(e,t).build()}try{u=er(l)||!n.databaseName?void 0:await a.getMaterializedColumnsLookupTable({connectionId:o,databaseName:n.databaseName,tableName:n.tableName})}catch(e){}let m="SELECT * FROM `t` WHERE ",d=`${m}${c}`;return u&&(c=ei({materializedFields:u,rawSQL:d}).replace(m,"")),c}async function eb(e){let t=await ey(e);return tx`${{UNSAFE_RAW_SQL:t}}`}async function e_(e,t){let a="string"!=typeof e.select&&e.select.every(e=>en(e.aggCondition)),n=(en(e.where)&&"sql"===d(e.whereLanguage,()=>"sql")||d(f([e,"access",e=>e.filters,"optionalAccess",e=>e.some,"call",e=>e(e=>"sql"===e.type)]),()=>!1)||a&&"string"!=typeof e.select&&e.select.some(e=>"sql"===d(e.aggConditionLanguage,()=>"sql")))&&e.from.databaseName&&e.from.tableName&&!er(e.with)?await t6({metadata:t,databaseName:e.from.databaseName,tableName:e.from.tableName,connectionId:e.connection}):new Map,r=[];en(e.where)&&(r=tN(await eb({condition:"sql"===d(e.whereLanguage,()=>"sql")?eo(e.where,n):e.where,from:e.from,language:d(e.whereLanguage,()=>"sql"),implicitColumnExpression:e.implicitColumnExpression,bodyExpression:e.bodyExpression,useTextIndexForImplicitColumn:e.useTextIndexForImplicitColumn,metadata:t,connectionId:e.connection,with:e.with}),"(",")"));let i=[];a&&"string"!=typeof e.select&&(i=(await Promise.all(e.select.map(async a=>en(a.aggCondition)?await eb({condition:"sql"===d(a.aggConditionLanguage,()=>"sql")?eo(a.aggCondition,n):a.aggCondition,from:e.from,language:d(a.aggConditionLanguage,()=>"sql"),implicitColumnExpression:e.implicitColumnExpression,bodyExpression:e.bodyExpression,useTextIndexForImplicitColumn:e.useTextIndexForImplicitColumn,metadata:t,connectionId:e.connection,with:e.with}):null))).filter(e=>null!==e));let s=await Promise.all(d(e.filters,()=>[]).map(async a=>{if("sql_ast"===a.type)return tN(tx`${{UNSAFE_RAW_SQL:a.left}} ${a.operator} ${{UNSAFE_RAW_SQL:a.right}}`,"(",")");if("lucene"===a.type||"sql"===a.type){let r="sql"===a.type?eo(a.condition,n):a.condition;return tN(await eb({condition:r,from:e.from,language:a.type,implicitColumnExpression:e.implicitColumnExpression,bodyExpression:e.bodyExpression,useTextIndexForImplicitColumn:e.useTextIndexForImplicitColumn,metadata:t,connectionId:e.connection,with:e.with}),"(",")")}throw Error(`Unknown filter type: ${a.type}`)}));return tw(" AND ",null!=e.dateRange&&null!=e.timestampValueExpression?await ep({timestampValueExpression:e.timestampValueExpression,dateRange:e.dateRange,dateRangeStartInclusive:d(e.dateRangeStartInclusive,()=>!0),dateRangeEndInclusive:d(e.dateRangeEndInclusive,()=>!0),isRenderingRawSqlTemplate:e.isRenderingRawSqlTemplate,metadata:t,connectionId:e.connection,databaseName:e.from.databaseName,tableName:e.from.tableName,with:e.with,includedDataInterval:e.includedDataInterval}):[],r,tN(tw(" OR ",i),"(",")"),tN(tw("OR"===e.filtersLogicalOperator?" OR ":" AND ",...s),"(",")"),e.isRenderingRawSqlTemplate&&""!==e.from.databaseName?tx`$__filters`:[])}async function e$(e,t){return tw(",",z(e)?await ec(e.groupBy,e,t,{mergeRatio:!1}):[],Q(e)?ed({interval:e.granularity,timestampValueExpression:e.timestampValueExpression,bucketTimestampValueExpression:e.bucketTimestampValueExpression,dateRange:e.dateRange,isRenderingRawSqlTemplate:e.isRenderingRawSqlTemplate}):[])}async function eS(e,t,{from:a,where:n,groupBy:r}){let{seriesLimit:i}=e;if(!aX(i)||!z(e)||!Q(e)||!1===e.selectGroupBy||!f([e,"access",e=>e.from,"optionalAccess",e=>e.databaseName])||!f([e,"access",e=>e.from,"optionalAccess",e=>e.tableName])||!Array.isArray(e.select)||0===e.select.length||null==r)return;let s=e.seriesLimitDateRange?{...e,dateRange:e.seriesLimitDateRange,dateRangeStartInclusive:!0,dateRangeEndInclusive:!0}:void 0,[o=n,l=r]=s?await Promise.all([e_(s,t),e$(s,t)]):[],u;if("string"==typeof e.groupBy)u=a4(e.groupBy).map(e=>tx`${{UNSAFE_RAW_SQL:e}}`);else{let a=await ec(e.groupBy.map(e=>({...e,alias:void 0})),e,t,{mergeRatio:!1});u=Array.isArray(a)?a:[a]}let c=tw(",",u),m=await ec(e.select.map(e=>({...e,alias:void 0})),e,t,{mergeRatio:!0}),d=Array.isArray(m)?m[0]:m,p=eu(e.select,e)?tx`max(if(isFinite(\`__hdx_series_rank\`), \`__hdx_series_rank\`, -inf))`:tx`max(\`__hdx_series_rank\`)`,g=tw(" AND ",u.map(e=>tx`${e} IS NOT NULL`)),h=o.sql?tw(" AND ",o,g):g;return{cte:tx`\`__hdx_series_limit\` AS ( + SELECT \`group\` + FROM ( + SELECT tuple(${c}) AS \`group\`, ${d} AS \`__hdx_series_rank\` + FROM ${a} + WHERE ${h} + GROUP BY ${l} + ) + GROUP BY \`group\` + ORDER BY ${p} DESC, \`group\` + LIMIT ${{Int32:i}} + )`,predicate:tx`tuple(${c}) IN (SELECT \`group\` FROM \`__hdx_series_limit\`)`}}async function eA(e,t){if(en(e.having))return await eb({condition:e.having,from:e.from,language:d(e.havingLanguage,()=>"sql"),implicitColumnExpression:e.implicitColumnExpression,bodyExpression:e.bodyExpression,useTextIndexForImplicitColumn:e.useTextIndexForImplicitColumn,metadata:t,connectionId:e.connection,with:e.with})}function ev(e){if(null==e.limit||null==e.limit.limit)return;let t=null!=e.limit.offset?tx` OFFSET ${{Int32:e.limit.offset}}`:[];return tx`${{Int32:e.limit.limit}}${t}`}async function eE(e,t,a){let{with:n}=e;if(n)return tw(",",await Promise.all(n.map(async e=>{let{sql:n,chartConfig:r}=e;if(n&&r)throw Error("cannot specify both 'sql' and 'chartConfig' in with clause");if(!(n||r))throw Error("must specify either 'sql' or 'chartConfig' in with clause");if(n&&!$.B.safeParse(n).success)throw Error("non-conforming sql object in CTE");if(r&&!$.Ma.safeParse(r).success)throw Error(`non-conforming chartConfig object in CTE: ${$.Ma.safeParse(r).error}`);let i=n||await eI(r,t,a);return!1===e.isSubquery?tx`(${i}) AS ${{Identifier:e.name}}`:tx`${e.name} AS (${i})`})))}async function ex(e,t){let a=e.metricTables;if(!a)return e;let{select:n,from:r,filters:i,...s}=e;if(!n||!Array.isArray(n))throw Error("multi select or string select on metrics not supported");let{metricType:o,metricName:l,metricNameSql:u,...c}=n[0];if("increase"===c.aggFn&&"sum"!==o)throw Error(`aggFn 'increase' is only supported for Sum (counter) metrics (got metricType=${o})`);let m="exponential histogram"===o&&l&&"exponential histogram"in a&&a["exponential histogram"],p="histogram"===o&&l&&"histogram"in a&&a.histogram;if("gauge"===o&&l&&"gauge"in a&&a.gauge){var f;let n,o,m,p,g="__hdx_time_bucket2",h=ed({interval:e.granularity||"auto",timestampValueExpression:e.timestampValueExpression||"TimeUnix",bucketTimestampValueExpression:e.bucketTimestampValueExpression,dateRange:e.dateRange,alias:g,isRenderingRawSqlTemplate:e.isRenderingRawSqlTemplate}),y=await e_({...e,from:{...r,tableName:a.gauge},filters:[...d(i,()=>[]),{type:"sql",condition:H(l,u)}]},t),b=c.isDelta?(f="Value",n=nr(d("auto"===e.granularity&&Array.isArray(e.dateRange)?nn(e.dateRange):e.granularity,()=>"")),o=d(e.bucketTimestampValueExpression,()=>a3(d(e.timestampValueExpression,()=>""))),m=`(argMax(${f}, ${o}) - argMin(${f}, ${o}))`,p=`date_diff('second', min(toDateTime(${o})), max(toDateTime(${o})))`,`IF(${p} > 0, ${m} * ${n} / ${p}, 0)`):"last_value(Value)";return{...s,with:[{name:"Source",sql:tx` + SELECT + *, + cityHash64(ScopeAttributes, ResourceAttributes, Attributes) AS AttributesHash + FROM ${eh({from:{...r,tableName:a.gauge},isRenderingRawSqlTemplate:e.isRenderingRawSqlTemplate,metricType:"gauge"})} + WHERE ${y} + `},{name:"Bucketed",sql:tx` + SELECT + ${h}, + AttributesHash, + ${b} AS LastValue, + any(ScopeAttributes) AS ScopeAttributes, + any(ResourceAttributes) AS ResourceAttributes, + any(Attributes) AS Attributes, + any(ResourceSchemaUrl) AS ResourceSchemaUrl, + any(ScopeName) AS ScopeName, + any(ScopeVersion) AS ScopeVersion, + any(ScopeDroppedAttrCount) AS ScopeDroppedAttrCount, + any(ScopeSchemaUrl) AS ScopeSchemaUrl, + any(ServiceName) AS ServiceName, + any(MetricDescription) AS MetricDescription, + any(MetricUnit) AS MetricUnit, + any(StartTimeUnix) AS StartTimeUnix, + any(Flags) AS Flags + FROM Source + GROUP BY AttributesHash, ${g} + ORDER BY AttributesHash, ${g} + `}],select:[{...c,valueExpression:"LastValue",aggCondition:""}],from:{databaseName:"",tableName:"Bucketed"},where:"",timestampValueExpression:g,settings:tx`short_circuit_function_evaluation = 'force_enable'`}}if("sum"===o&&l&&"sum"in a&&a.sum){let n="__hdx_time_bucket2",o=ed({interval:e.granularity||"auto",timestampValueExpression:e.timestampValueExpression||"TimeUnix",bucketTimestampValueExpression:e.bucketTimestampValueExpression,dateRange:e.dateRange,alias:n,isRenderingRawSqlTemplate:e.isRenderingRawSqlTemplate}),m=await e_({...e,from:{...r,tableName:a.sum},filters:[...d(i,()=>[]),{type:"sql",condition:H(l,u)}],includedDataInterval:"auto"===e.granularity&&Array.isArray(e.dateRange)?nn(e.dateRange):e.granularity},t),p=[{name:"Source",sql:tx` + SELECT + *, + cityHash64(ScopeAttributes, ResourceAttributes, Attributes) AS AttributesHash, + IF( + AggregationTemporality = 1, + Value, -- DELTA: Value is already the per-interval increase + greatest(Value - lagInFrame(toNullable(Value), 1, NULL) OVER (PARTITION BY AttributesHash ORDER BY TimeUnix), 0) + ) AS Rate, + IF( + AggregationTemporality = 1, + SUM(Value) OVER (PARTITION BY AttributesHash ORDER BY TimeUnix ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW), + Value + ) AS Sum + FROM ${eh({from:{...r,tableName:a.sum},isRenderingRawSqlTemplate:e.isRenderingRawSqlTemplate,metricType:"sum"})} + WHERE ${m}`},{name:"Bucketed",sql:tx` + SELECT + \`${n}\`, + AttributesHash, + Rate, + Sum, + ResourceAttributes, + ResourceSchemaUrl, + ScopeName, + ScopeVersion, + ScopeAttributes, + ScopeDroppedAttrCount, + ScopeSchemaUrl, + ServiceName, + MetricName, + MetricDescription, + MetricUnit, + Attributes, + StartTimeUnix, + Flags, + AggregationTemporality, + IsMonotonic + FROM ( + SELECT + ${o}, + AttributesHash, + -- Per-bucket increase: sum of raw per-row deltas. NULL + -- Source.Rate (first row of each partition) is ignored by sum(). + sum(Source.Rate) AS Rate, + -- Last cumulative reading in the bucket (by time), used by + -- the no-aggFn last_value(Sum) outer projection. argMax is + -- deterministic w.r.t. TimeUnix ordering unlike last_value + -- which in a GROUP BY context is anyLast (order-dependent). + argMax(Source.Sum, TimeUnix) AS Sum, + any(ResourceAttributes) AS ResourceAttributes, + any(ResourceSchemaUrl) AS ResourceSchemaUrl, + any(ScopeName) AS ScopeName, + any(ScopeVersion) AS ScopeVersion, + any(ScopeAttributes) AS ScopeAttributes, + any(ScopeDroppedAttrCount) AS ScopeDroppedAttrCount, + any(ScopeSchemaUrl) AS ScopeSchemaUrl, + any(ServiceName) AS ServiceName, + any(MetricName) AS MetricName, + any(MetricDescription) AS MetricDescription, + any(MetricUnit) AS MetricUnit, + any(Attributes) AS Attributes, + any(StartTimeUnix) AS StartTimeUnix, + any(Flags) AS Flags, + any(AggregationTemporality) AS AggregationTemporality, + any(IsMonotonic) AS IsMonotonic + FROM Source + GROUP BY AttributesHash, \`${n}\` + ORDER BY AttributesHash, \`${n}\` + ) + `}],f="increase"===c.aggFn&&z(e),g="";if(f){let a=await ec("string"==typeof e.groupBy?e.groupBy:e.groupBy.map(e=>({...e,alias:void 0})),{...e,from:{databaseName:"",tableName:"Bucketed"},with:p},t,{mergeRatio:!1}),r=tw(",",a),i=tw(" AND ",(Array.isArray(a)?a:[a]).map(e=>tx`(${e} IS NOT NULL AND toString(${e}) != '')`));if(p.push({name:"TopGroups",sql:tx` + SELECT \`group\` + FROM ( + SELECT + tuple(${r}) AS \`group\`, + sum(Rate) AS \`bucket_value\` + FROM Bucketed + WHERE ${i} + GROUP BY \`group\`, \`${n}\` + ) + GROUP BY \`group\` + ORDER BY max(\`bucket_value\`) DESC, \`group\` + LIMIT ${{Int32:20}} + `}),Object.keys(r.params).length>0)throw Error("increase + groupBy: unexpected parameterized groupBy expressions");g=`tuple(${r.sql}) IN (SELECT \`group\` FROM TopGroups)`}return{...s,with:p,select:["increase"===c.aggFn?{alias:"Value",...c,aggFn:"sum",valueExpression:"Rate",aggCondition:""}:c.aggFn?{alias:"Value",...c,valueExpression:"Rate",aggCondition:""}:{alias:"Value",...c,valueExpression:"last_value(Sum)",aggCondition:""}],from:{databaseName:"",tableName:"Bucketed"},where:g,whereLanguage:f?"sql":s.whereLanguage,timestampValueExpression:`\`${n}\``}}if(p||m){let{alias:n}=c,p=n||"Value",f={...e,from:{...r,tableName:a[o]},filters:[...d(i,()=>[]),{type:"sql",condition:H(l,u)}],includedDataInterval:"auto"===e.granularity&&Array.isArray(e.dateRange)?nn(e.dateRange):e.granularity},g=Q(f),h=g?ed({interval:f.granularity,timestampValueExpression:f.timestampValueExpression,dateRange:f.dateRange,isRenderingRawSqlTemplate:e.isRenderingRawSqlTemplate}):void 0,y=await e_(f,t),b;z(e)&&(b=tw(",",await ec(e.groupBy,e,t,{mergeRatio:!1})));let _={select:c,timeBucketSelect:h,groupBy:b,from:eh({from:{...r,tableName:a[o]},isRenderingRawSqlTemplate:e.isRenderingRawSqlTemplate,metricType:o}),where:y,valueAlias:p};return{...s,with:m?B(_):U(_),select:[...g?[`\`${K}\``]:[],...b?[q]:[],`"${p}"`].join(", "),from:{databaseName:"",tableName:"metrics"},where:"",dateRange:g?s.dateRange:void 0,groupBy:void 0,granularity:void 0,timestampValueExpression:g?`\`${K}\``:s.timestampValueExpression,settings:tx`short_circuit_function_evaluation = 'force_enable'`}}throw Error(`no query support for metric type=${o}`)}async function ew(e,t){if(!f([e,"access",e=>e.filters,"optionalAccess",e=>e.length])||!e.source||!e.from)return;let a=(await Promise.all(e.filters.map(async a=>{let n=e.from&&e.from.tableName&&e.source;if("sql_ast"===a.type)return`(${a.left} ${a.operator} ${a.right})`;if("sql"===a.type&&!n)return a.condition.trim()?`(${a.condition})`:void 0;if(("lucene"===a.type||"sql"===a.type)&&a.condition.trim()&&n){let n=await ey({condition:a.condition,from:e.from,language:a.type,implicitColumnExpression:e.implicitColumnExpression,bodyExpression:e.bodyExpression,useTextIndexForImplicitColumn:e.useTextIndexForImplicitColumn,metadata:t,connectionId:e.connection});return n?`(${n})`:void 0}}))).filter(e=>void 0!==e);return a.length>0?`(${a.join(" AND ")})`:void 0}async function eN(e,t){let a=d(e.displayType,()=>"table"),n=await ew(e,t);return{sql:aJ(e,n),params:Object.fromEntries(nR[a].map(t=>[t.name,t.get(e)]))}}async function eT(e,t,a){let n=Z(e),r=n.select;if("string"==typeof r)throw Error("multi-series metric charts require an array select");let i=d(n.formulas,()=>[]),s=[],o=[];{let e=new Set,t=(t,a)=>{let n=e.has(t)?`${t}__${a}`:t;return e.add(n),n};r.forEach((e,a)=>{s.push(t(d(e.alias,()=>""),a))}),i.forEach((e,a)=>{let n=b.f.call(void 0,e.expression,{seriesCount:r.length});if(!n.ok)throw Error(`Invalid formula "${e.expression}": ${n.errors.map(e=>e.message).join("; ")}`);o.push({name:t(e.alias||e.expression,r.length+a),ast:n.ast})})}let l=Q(n),u=z(n)&&!1!==n.selectGroupBy,c=u?"string"==typeof n.groupBy?a4(n.groupBy).length:n.groupBy.length:0,m=r.map(et),p=u&&c>0&&m.some(e=>!e),g=u&&m.some(e=>e),h=await Promise.all(r.map(async(e,r)=>{let i={...n,select:[{...e,alias:J}],formulas:void 0,showOperandSeries:void 0,having:void 0,orderBy:void 0,limit:void 0},s=await eI(i,t,a),[o,l]=nb(s.sql);return{sql:o,params:s.params,settingsClause:l,isHistogram:et(e),splitIdx:r}})),y=[...h.filter(e=>!e.isHistogram),...h.filter(e=>e.isHistogram)],_=`toFloat64(\`${J}\`) AS \`${J}\``,$=tw(" UNION ALL ",y.map(e=>{let t=`${e.splitIdx} AS \`${X}\``,a=[];if(e.isHistogram){if(a.push(_),p)for(let e=0;e`anyOrNullIf(\`${J}\`, \`${X}\` = ${e})`,A=o.length>0,v=!A&&"ratio"===n.seriesReturnType&&2===r.length,E=[];if(A)!1!==n.showOperandSeries&&s.forEach((e,t)=>{E.push(`${S(t)} AS ${ee(e)}`)}),o.forEach(({name:e,ast:t})=>{E.push(`${b.g.call(void 0,t,S)} AS ${ee(e)}`)});else if(v){let e=`coalesce(${S(0)}, 0)`,t="share_of_total"===n.ratioMode?`sum(${S(1)}) OVER (${l?`PARTITION BY \`${K}\``:""})`:S(1),a=`${s[0]}/${s[1].replace(/__\d+$/,"")}`;E.push(`${e} / nullif(${t}, 0) AS ${ee(a)}`)}else s.forEach((e,t)=>{E.push(`${S(t)} AS ${ee(e)}`)});let x=p||g||l;x&&E.push(`* EXCEPT (\`${J}\`, \`${X}\`)`);let w=function(e){let t=[],a=new Set;for(let n of e)if(n)for(let e of n.replace(/^settings\s*/i,"").split(",")){let n=e.trim();""===n||a.has(n)||(a.add(n),t.push(n))}return t.join(", ")}(h.map(e=>e.settingsClause)),N=await eA(n,t),T=tw(",",l?tx`\`${K}\``:tx``,null!=n.orderBy?em(n.orderBy):[]),I=ev(n),k=tw(" ",[tx`SELECT ${{UNSAFE_RAW_SQL:E.join(", ")}}`,tx`FROM (${$})`,x?tx`GROUP BY ALL`:tx``]),C=v&&"share_of_total"===n.ratioMode,R=f([N,"optionalAccess",e=>e.sql])?C?tx`SELECT * FROM (${k}) WHERE ${N}`:tw(" ",[k,tx`HAVING ${N}`]):k;return tw(" ",[R,T.sql?tx`ORDER BY ${T}`:tx``,f([I,"optionalAccess",e=>e.sql])?tx`LIMIT ${I}`:tx``,""!==w?tx`SETTINGS ${{UNSAFE_RAW_SQL:w}}`:tx``])}async function eI(e,t,a){let n;if(_.d.call(void 0,e))return{sql:"",params:{}};if(_.c.call(void 0,e))return eN(e,t);let r=aT(e);if(G(r)&&Array.isArray(r.select)&&(r.select.length>1||1===r.select.length&&Y(r)))return eT(r,t,a);let i=G(r)?await ex(r,t):r,s={...i,bucketTimestampValueExpression:await p(i.bucketTimestampValueExpression,async()=>i.timestampValueExpression&&f([i,"access",e=>e.from,"optionalAccess",e=>e.databaseName])&&f([i,"access",e=>e.from,"optionalAccess",e=>e.tableName])?await a9({timestampValueExpression:i.timestampValueExpression,metadata:t,databaseName:i.from.databaseName,tableName:i.from.tableName,connectionId:i.connection}):void 0)},o=await eE(s,t,a),l=await eg(s,t),u=eh({from:s.from,isRenderingRawSqlTemplate:s.isRenderingRawSqlTemplate}),c=await e_(s,t),m=await e$(s,t),g=await eA(s,t),h=function(e){let t=Q(e);if(!(null==e.orderBy&&!t))return tw(",",t?ed({interval:e.granularity,timestampValueExpression:e.timestampValueExpression,bucketTimestampValueExpression:e.bucketTimestampValueExpression,dateRange:e.dateRange,isRenderingRawSqlTemplate:e.isRenderingRawSqlTemplate}):[],null!=e.orderBy?em(e.orderBy):[])}(s),y=ev(s),b=(n=n$(a),tw(", ",[tx`${d(s.settings,()=>"")}`,tx`${d(n,()=>"")}`])),$=await eS(s,t,{from:u,where:c,groupBy:m});return $&&(o=o?tw(",",o,$.cte):$.cte,c=c.sql?tw(" AND ",c,$.predicate):$.predicate),tw(" ",[tx`${f([o,"optionalAccess",e=>e.sql])?tx`WITH ${o}`:""}`,tx`SELECT ${l}`,tx`FROM ${u}`,tx`${c.sql?tx`WHERE ${c}`:""}`,tx`${f([m,"optionalAccess",e=>e.sql])?tx`GROUP BY ${m}`:""}`,tx`${f([g,"optionalAccess",e=>e.sql])?tx`HAVING ${g}`:""}`,tx`${f([h,"optionalAccess",e=>e.sql])?tx`ORDER BY ${h}`:""}`,tx`${f([y,"optionalAccess",e=>e.sql])?tx`LIMIT ${y}`:""}`,tx`${b.sql?tx`SETTINGS ${b}`:[]}`])}var ek=t.Rb=(e,{stringifyKeys:t=!1,dateTimeColumns:a}={})=>Object.entries(e).filter(([e,t])=>t.included.size>0||t.excluded.size>0||null!=t.range).flatMap(([e,n])=>{let r=[],i=t?`toString(${e})`:e,s=t?void 0:f([a,"optionalAccess",e=>e.get,"call",t=>t(e)]),o=e=>{var t;let a;return"string"!=typeof e?e:null!=s?(t=`'${a2(e)}'`,(a=s.match(/DateTime64\((\d+)/))?`parseDateTime64BestEffort(${t}, ${a[1]})`:/\bDateTime\b/.test(s)?`parseDateTimeBestEffort(${t})`:/\bDate32\b/.test(s)?`toDate32(${t})`:/\bDate\b/.test(s)?`toDate(${t})`:`parseDateTime64BestEffort(${t}, 9)`):`'${a2(e)}'`};return n.included.size>0&&r.push({type:"sql",condition:`${i} IN (${Array.from(n.included).map(o).join(", ")})`}),n.excluded.size>0&&r.push({type:"sql",condition:`${i} NOT IN (${Array.from(n.excluded).map(o).join(", ")})`}),null!=n.range&&r.push({type:"sql",condition:`${i} BETWEEN ${n.range.min} AND ${n.range.max}`}),r}),eC=t.Sb=(e,t)=>{let a={};for(let[n,r]of Object.entries(e))a[t(n)]=r;let n=ek(a).flatMap(e=>"condition"in e?[e.condition]:[]);return n.length?n.map(e=>`(${e})`).join(" AND "):void 0},eR=t.Tb=e=>{let t=e=>Array.from(e).map(String).sort();return JSON.stringify(Object.entries(e).sort(([e],[t])=>et)).map(([e,{included:a,excluded:n,range:r}])=>[e,t(a),t(n),d(r,()=>null)]))},eq=e=>{let t=e.trim();return["true","false"].includes(t.toLowerCase())?"true"===t.toLowerCase():t.startsWith("'")&&t.endsWith("'")?t.slice(1,-1).replace(/\\\\/g,"\\").replace(/''/g,"'"):t};function eM(e,t){if("'"!==e[t])return!1;let a=0;for(let n=t-1;n>=0&&"\\"===e[n];n--)a++;return a%2==0}function eO(e,t){return t+10&&n--;continue}if(!(n>0)){for(let a of t)if("object"==typeof a){if(i===a.char)return!0}else if(e.slice(r,r+a.length).toUpperCase()===a)return!0}}}return!1}var eL=e=>{let t=new Map;for(let a of e)if("sql"===a.type){if(eF(a.condition,[" BETWEEN "])){let e=a.condition.match(/^(.+?)\s+BETWEEN\s+(.+?)\s+AND\s+(.+?)$/i);if(e){let[,a,n,r]=e,i=a.trim(),s=Number(n.trim()),o=Number(r.trim());Number.isFinite(s)&&Number.isFinite(o)&&(t.has(i)?t.get(i).range={min:s,max:o}:t.set(i,{included:new Set,excluded:new Set,range:{min:s,max:o}}));continue}}for(let e of function(e){let t=[],a=[],n="",r=!1,i=0;for(let t=0;t0&&i--;else if(0===i&&" AND "===e.slice(t,t+5).toUpperCase()){n.trim()&&a.push(n.trim()),n="",t+=4;continue}}n+=s}for(let e of(n.trim()&&a.push(n.trim()),a)){if(eF(e,[{char:"="},{char:"<"},{char:">"}," OR "]))continue;let a=eF(e,[" NOT IN "]);if(a||eF(e,[" IN "])){let n=function(e,t){let a=!1,n=0,r=t.toUpperCase();for(let t=0;t0&&n--;continue}if(!(n>0)&&e.slice(t,t+r.length).toUpperCase()===r)return[e.slice(0,t),e.slice(t+r.length)]}}return null}(e,a?" NOT IN ":" IN ");if(!n)continue;let[r,i]=n,s=r.trim(),o=i.trim(),l=function(e){let t=[],a="",n=!1;for(let r=0;r{e.isExclude?a.excluded.add(t):a.included.add(t)})}}return{filters:Object.fromEntries(t)}},eD=/\b[a-zA-Z0-9_]+\[([0-9]+|'[^']*')\]/g;function eU(e,t){return!e.trim()||("lucene"===t?(e=>{try{return tD(e),!0}catch(e){return!1}})(e):"sql"!==t||(e=>{try{let{sqlWithReplacements:t}=ne(e),a=t.replace(eD,"''");return new C.Parser().astify(`SELECT 1 FROM t WHERE ${a}`,{database:"Postgresql"}),!0}catch(e){return!1}})(e))}function eV(e){let t=e.trim().replace(/\s+/g,"_").replace(/[^A-Za-z0-9_]+/g,"");return/^[0-9_]/.test(t)?`v${t}`:t}function eW(e){return!1!==e.isBroadcastEnabled}function eB(e){return!0===e.isVariableEnabled}function eP(e){return f([e,"access",e=>e.variableName,"optionalAccess",e=>e.trim,"call",e=>e()])||eV(e.name)||void 0}function ej(e){let t=[],a=new Set;for(let n of d(e,()=>[])){if(!eB(n))continue;let e=eP(n);!e||a.has(e)||(a.add(e),t.push({name:e,expression:n.expression}))}return t}function eH(e,t){let a=d(e.where,()=>""),n=d(e.whereLanguage,()=>"sql");if(null==t||!a.trim())return{where:a,whereLanguage:n};try{return{where:ax(a,{variables:t,inputLanguage:n}),whereLanguage:n}}catch(e){return{where:a,whereLanguage:n,error:e instanceof Error?e.message:String(e)}}}var eK={toStartOfSecond:"1 second",toStartOfMinute:"1 minute",toStartOfFiveMinutes:"5 minute",toStartOfTenMinutes:"10 minute",toStartOfFifteenMinutes:"15 minute",toStartOfHour:"1 hour",toStartOfDay:"1 day"},ez=new Set(["second","minute","hour","day"]),eQ=e=>e>="a"&&e<="z"||e>="A"&&e<="Z"||e>="0"&&e<="9"||"_"===e,eG=e=>" "===e||" "===e||e===` +`||"\r"===e;function eY(e){for(let[t,a]of Object.entries(eK))if(a===e)return t}function eZ(e,t){let a=eY(e);if(a)return tx`${{UNSAFE_RAW_SQL:a}}(${t})`;let n=nr(e);return tx`toStartOfInterval(${t}, INTERVAL ${{Int64:n}} SECOND)`}async function eJ(e,t,a){try{return!!await g([await a.getColumn({...e,column:t}),"optionalAccess",async e=>e.type,"access",async e=>e.startsWith,"call",async e=>e("SimpleAggregateFunction(")])}catch(e){return!1}}async function eX(e,t,a){try{let n=await g([await a.getColumn({...e,column:t}),"optionalAccess",async e=>e.type]);return n?f([n,"access",e=>e.match,"call",e=>e(/^AggregateFunction\(\s*([^(, ]+)\s*\(/),"optionalAccess",e=>e[1],"optionalAccess",e=>e.replace,"call",e=>e(/^quantiles/,"quantile")]):void 0}catch(e){return}}async function e0(e,t,a,n){return"count"===a?"sum":await eJ(e,t,n)?a:`${a}Merge`}function e1(e,t,a){return e.aggregatedColumns.find(e=>e.aggFn===a&&("count"===e.aggFn||e.sourceColumn===t))}function e2(e,t){let[a,n]=e,r=nr(t);return Math.floor(A.differenceInSeconds.call(void 0,n,a)/r)}function e6(e,t){if(e.minDate&&!t.dateRange)return!1;if(!e.minDate||!t.dateRange)return!0;let[a]=t.dateRange;return a>=new Date(e.minDate)}var e4=/\bcount(If)?\s*\(/i;function e3(e){return e4.test(e.valueExpression)}async function e5(e,t,a,n){var r;let{valueExpression:i,aggFn:s}=t,o=s;if(e3(t))throw Error("Custom count() expressions are not supported with materialized views.");if(!o)return t;if(!((r=o)&&$.n.safeParse(r).success))throw Error(`Aggregate function ${o} is not valid.`);let l=e1(e,"",o);if(l){let e=l.mvColumn,r=await e0(a,e,o,n);return{...t,valueExpression:e,aggFn:r}}let u=e1(e,i,o);if(!u)throw Error(`The aggregate function ${function(e,t){if("quantile"!==e)return e;switch(t){case .5:return"median";case .9:return"p90";case .95:return"p95";case .99:return"p99";default:return"quantile"}}(o,t.level)} is not available for column '${i}'.`);if("quantile"===t.aggFn&&"level"in t&&"number"==typeof t.level){let e=await eX(a,u.mvColumn,n);e&&(o=e)}let c=await e0(a,u.mvColumn,o,n);return{...t,valueExpression:u.mvColumn,aggFn:c}}async function e9(e,t,a){if(!Array.isArray(e.select))return{errors:["Only array-based select statements are supported."]};if(t.minDate&&!e6(t,e))return{errors:["The selected date range includes dates for which this view does not contain data."]};if(!function(e,t){if(!t.granularity&&!t.dateRange)return!0;let a=t.granularity||"auto";if("auto"===a&&!t.dateRange)return!1;let n=nr("auto"===a&&t.dateRange?nn(t.dateRange):a),r=nr(e.minGranularity);return n>=r&&n%r==0}(t,e))return{errors:[e.granularity?`Granularity must be a multiple of the view's granularity (${t.minGranularity}).`:"The selected date range is too short for the granularity of this materialized view."]};let n={databaseName:t.databaseName,tableName:t.tableName,connectionId:e.connection},r=await Promise.allSettled(e.select.map(e=>e5(t,e,n,a))),i=[],s=[];for(let e of r)"rejected"===e.status?s.push(e.reason.message):i.push(e.value);return s.length>0?{errors:s}:{optimizedConfig:{...structuredClone(e),select:i,timestampValueExpression:t.timestampColumn,from:{databaseName:t.databaseName,tableName:t.tableName},..."dateRange"in e&&e.dateRange?{dateRangeEndInclusive:!1,dateRange:ny(e.dateRange,t.minGranularity)}:{}}}}async function e7(e,t,a,n,r,i){let s=[],o;if(e.with){let a=await Promise.all(e.with.map(async e=>e.chartConfig&&e.chartConfig.from.databaseName===i.from.databaseName&&e.chartConfig.from.tableName===i.from.tableName?e9(e.chartConfig,r,t):{optimizedConfig:void 0,errors:[]}));a.some(e=>!!e.optimizedConfig)&&(o={...structuredClone(e),with:e.with.map((e,t)=>({...e,chartConfig:d(a[t].optimizedConfig,()=>e.chartConfig)}))}),s.push(...a.flatMap(e=>d(e.errors,()=>[])))}if(e.from.databaseName===i.from.databaseName&&e.from.tableName===i.from.tableName){let a=await e9(d(o,()=>e),r,t);a.optimizedConfig&&(o=a.optimizedConfig),s.push(...d(a.errors,()=>[]))}if(o){let{isValid:e,rowEstimate:r=1/0,error:l}=await a.testChartConfigValidity({config:o,metadata:t,opts:{abort_signal:n},querySettings:i.querySettings});if(l&&s.push(l),e)return{optimizedConfig:o,rowEstimate:r,errors:[]}}return{errors:s}}async function e8(e,t,a,n,r){let i=d(r.materializedViews,()=>[]),s=await Promise.all(i.map(i=>e7(e,t,a,n,i,r).then(e=>({...e,mvConfig:i})))),o,l=1/0;for(let e of s)e.optimizedConfig&&d(e.rowEstimate,()=>1/0)1/0));let u=s.map(({optimizedConfig:e,errors:t,rowEstimate:a,mvConfig:n})=>({success:!!e&&e===o,errors:t,rowEstimate:a,mvConfig:n}));return{optimizedConfig:o,explanations:u}}async function te(e,t,a,n,r){let{optimizedConfig:i}=await e8(e,t,a,n,r);return d(i,()=>e)}function tt(e){return`${e.databaseName}.${e.tableName}`}async function ta({chartConfig:e,keys:t,source:a,clickhouseClient:n,metadata:r,signal:i}){let s=new Map((($.vb.call(void 0,a)||$.ub.call(void 0,a))&&f([a,"optionalAccess",e=>e.materializedViews])||[]).map(e=>[tt(e),e])),o=new Map;for(let[a,n]of s.entries()){let r=e.dateRange?e2(e.dateRange,n.minGranularity):1/0;if(e6(n,e)&&r>=3){let e=a4(n.dimensionColumns),r=t.filter(t=>e.includes(t));r.length>0&&o.set(a,r)}}let l=[...o.entries()].map(([t,a])=>{let{databaseName:n,tableName:r,timestampColumn:i}=s.get(t);return{...structuredClone(e),timestampValueExpression:i,from:{databaseName:n,tableName:r},select:a.map((e,t)=>`groupUniqArray(1)(${e}) AS param${t}`).join(", ")}}),u=await Promise.all(l.map(async e=>{let{isValid:t,rowEstimate:s=1/0}=await n.testChartConfigValidity({config:e,metadata:r,opts:{abort_signal:i},querySettings:f([a,"optionalAccess",e=>e.querySettings])});return{id:tt({databaseName:e.from.databaseName,tableName:e.from.tableName}),isValid:t,rowEstimate:s}})),c=new Map,m=new Set(t);for(let e of u.filter(e=>e.isValid).sort((e,t)=>e.rowEstimate-t.rowEstimate)){let t=d(o.get(e.id),()=>[]).filter(e=>m.has(e));if(t.length)for(let a of(c.set(e.id,t),t))m.delete(a)}let p=[...c.entries()].map(([t,a])=>{let{databaseName:n,tableName:r,timestampColumn:i}=s.get(t);return{chartConfig:{...structuredClone(e),timestampValueExpression:i,from:{databaseName:n,tableName:r}},keys:a}});return m.size&&p.push({chartConfig:structuredClone(e),keys:[...m]}),p}async function tn({chartConfig:e,keys:t,keyConditions:a,source:n,clickhouseClient:r,metadata:i,signal:s}){let o=n&&($.vb.call(void 0,n)||$.ub.call(void 0,n))?d(n.materializedViews,()=>[]):[];if(0===o.length)return e;let l=o.filter(a=>{let n=e.dateRange?e2(e.dateRange,a.minGranularity):1/0;if(!e6(a,e)||n<3)return!1;let r=a4(a.dimensionColumns);return t.every(e=>r.includes(e))});if(0===l.length)return e;let u=(await Promise.all(l.map(async o=>{let l=await i.renderKeyExpressions({databaseName:o.databaseName,tableName:o.tableName,connectionId:e.connection,keys:t}),u=e=>d(l.get(e),()=>e),c={...structuredClone(e),timestampValueExpression:o.timestampColumn,from:{databaseName:o.databaseName,tableName:o.tableName},select:t.map((e,t)=>{let n=u(e),r=a.at(t),i=r&&eC(r,u);return i?`groupUniqArrayIf(1)(${n}, ${i}) AS param${t}`:`groupUniqArray(1)(${n}) AS param${t}`}).join(", ")},{isValid:m,rowEstimate:p=1/0}=await r.testChartConfigValidity({config:c,metadata:i,opts:{abort_signal:s},querySettings:f([n,"optionalAccess",e=>e.querySettings])});return{mv:o,isValid:m,rowEstimate:p}}))).filter(e=>e.isValid).sort((e,t)=>e.rowEstimate-t.rowEstimate)[0];return u?{...structuredClone(e),timestampValueExpression:u.mv.timestampColumn,from:{databaseName:u.mv.databaseName,tableName:u.mv.tableName}}:e}var tr=t.G=100,ti=(e,t)=>{if(!Number.isInteger(e)||e<0)throw Error(`${t} must be a non-negative integer, got: ${String(e)}`);return String(e)},ts=e=>e.startsWith("`")&&e.endsWith("`")||e.startsWith('"')&&e.endsWith('"')?e.slice(1,-1):e,to=e=>`\`${ts(e).replace(/`/g,"``")}\``,tl=e=>{let t=ts(e);return/^[A-Za-z_][A-Za-z0-9_]*$/.test(t)?t:to(t)},tu=(e,t)=>{let a=t.replace(/[.*+?^${}()|[\]\\]/g,"\\$&");return new RegExp(/^[A-Za-z_][A-Za-z0-9_]*$/.test(t)?`\`${a}\`|(?{let t=e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&");return`(?:\`${e.replace(/`/g,"``").replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}\`|${t})`},tm=".:String",td=(e,t,a={})=>{let n=tl(e),r=(a.preserveStringTypeSuffix&&t.endsWith(tm)?t.slice(0,-tm.length):t).split(".").filter(Boolean).map(to).join(".");return`${n}.${r}${tm}`},tp=t.H=s=class{constructor(){s.prototype.__init.call(this),s.prototype.__init2.call(this)}__init(){this.cache=new Map}__init2(){this.pendingQueries=new Map}get(e){return this.cache.get(e)}async getOrFetch(e,t){let a=this.cache.get(e);if(null!=a)return a;if(this.pendingQueries.has(e))return this.pendingQueries.get(e);let n=t();this.pendingQueries.set(e,n);try{let t=await n;return this.cache.set(e,t),t}finally{this.pendingQueries.delete(e)}}set(e,t){return this.cache.set(e,t)}},tf=t.I=class{constructor(e,t,a){this.clickhouseClient=e,this.cache=t,a&&this.cache.set("clickhouse-settings",a)}getClickHouseSettings(){return d(this.cache.get("clickhouse-settings"),()=>({}))}setClickHouseSettings(e){let t={...this.getClickHouseSettings(),...e};this.cache.set("clickhouse-settings",t)}async renderMetadataKeyExpression({databaseName:e,tableName:t,connectionId:a,keyExpression:n}){if(await this.getColumn({databaseName:e,tableName:t,column:ts(n),connectionId:a})!=null)return tl(n);let r=tg(n);if(r.length>=2){let i=ts(r[0]);return"json"===t$(d(f([await this.getColumn({databaseName:e,tableName:t,column:i,connectionId:a}),"optionalAccess",e=>e.type]),()=>""))?td(i,r[1]):n}let i=n.indexOf(".");if(-1===i||n.includes("("))return n;let s=ts(n.slice(0,i)),o=n.slice(i+1);return"json"===t$(d(f([await this.getColumn({databaseName:e,tableName:t,column:s,connectionId:a}),"optionalAccess",e=>e.type]),()=>""))?td(s,o,{preserveStringTypeSuffix:!0}):n}async renderKeyExpressions({databaseName:e,tableName:t,connectionId:a,keys:n}){let r=new Map;return await Promise.all(n.map(async n=>{r.set(n,await this.renderMetadataKeyExpression({databaseName:e,tableName:t,connectionId:a,keyExpression:n}))})),r}async queryTableMetadata({database:e,table:t,cache:a,connectionId:n,cluster:r}){let i=`${n}.${e}.${t}.${r}.metadata`;return a.getOrFetch(i,async()=>{let a=r?tx`SELECT * FROM cluster(${{String:r}}, system.tables) WHERE database = ${{String:e}} AND name = ${{String:t}} LIMIT 1`:tx`SELECT * FROM system.tables WHERE database = ${{String:e}} AND name = ${{String:t}} LIMIT 1`;return(await this.clickhouseClient.query({connectionId:n,query:a.sql,query_params:a.params,clickhouse_settings:this.getClickHouseSettings()}).then(e=>e.json())).data[0]})}async querySkipIndices({database:e,table:t,connectionId:a,cluster:n}){let r=n?tx` + SELECT + name, + type, + type_full as typeFull, + expr as expression, + granularity + FROM cluster(${{String:n}}, system.data_skipping_indices) + WHERE database = ${{String:e}} AND table = ${{String:t}}`:tx` + SELECT + name, + type, + type_full as typeFull, + expr as expression, + granularity + FROM system.data_skipping_indices + WHERE database = ${{String:e}} AND table = ${{String:t}}`;return await this.clickhouseClient.query({connectionId:a,query:r.sql,query_params:r.params,clickhouse_settings:this.getClickHouseSettings()}).then(e=>e.json()).then(e=>e.data.map(e=>({...e,granularity:Number(e.granularity)})))}async queryMaterializedViewsByTarget({databaseName:e,tableName:t,connectionId:a}){return this.cache.getOrFetch(`${a}.${e}.${t}.sourceMaterializedViews`,async()=>{let n=`%TO ${e}.${t}%`,r=tx` + SELECT database as databaseName, name as tableName + FROM system.tables + WHERE engine = 'MaterializedView' + AND create_table_query LIKE ${{String:n}}`;return(await this.clickhouseClient.query({connectionId:a,query:r.sql,query_params:r.params,clickhouse_settings:this.getClickHouseSettings()}).then(e=>e.json())).data})}async getColumns({databaseName:e,tableName:t,connectionId:a}){return this.cache.getOrFetch(`${a}.${e}.${t}.columns`,async()=>{let n=tx`DESCRIBE ${tk({database:e,table:t})}`;return await this.clickhouseClient.query({query:n.sql,query_params:n.params,connectionId:a,clickhouse_settings:this.getClickHouseSettings()}).then(e=>e.json()).then(e=>e.data)})}async getMaterializedColumnsLookupTable({databaseName:e,tableName:t,connectionId:a}){return new Map((await this.getColumns({databaseName:e,tableName:t,connectionId:a})).filter(e=>"MATERIALIZED"===e.default_type||"DEFAULT"===e.default_type).map(e=>[e.default_expression,e.name]))}async getColumn({databaseName:e,tableName:t,column:a,matchLowercase:n=!1,connectionId:r}){return(await this.getColumns({databaseName:e,tableName:t,connectionId:r})).filter(e=>n?e.name.toLowerCase()===a.toLowerCase():e.name===a)[0]}async getMapColumnTextIndexes({databaseName:e,tableName:t,connectionId:a}){return this.cache.getOrFetch(`${a}.${e}.${t}.mapColumnTextIndexes`,async()=>t6({metadata:this,databaseName:e,tableName:t,connectionId:a}))}async getNativeArrayColumnTextIndexes({databaseName:e,tableName:t,connectionId:a}){return this.cache.getOrFetch(`${a}.${e}.${t}.nativeColumnTextIndexes`,async()=>{let[n,r]=await Promise.all([this.getColumns({databaseName:e,tableName:t,connectionId:a}),this.getSkipIndices({databaseName:e,tableName:t,connectionId:a}).catch(()=>[])]),i=new Map;for(let e of r)t2(e,"text",{tokenizer:"array"})&&n.some(t=>t.name===e.expression)&&i.set(e.expression,e);return i})}async partsOverlapFilter({databaseName:e,tableName:t,dateRange:a,timestampValueExpression:n}){if(!a||!n)return tx`1`;let r=tx`fromUnixTimestamp64Milli(${{Int64:a[0].getTime()}})`,i=tx`fromUnixTimestamp64Milli(${{Int64:a[1].getTime()}})`;return tx`part_name IN ( + SELECT name + FROM system.parts + WHERE database = ${{String:e}} AND table = ${{String:t}} + AND active=1 + AND ((min_time >= ${r} AND min_time <= ${i}) OR (max_time <= ${i} AND max_time >= ${r}) OR (min_time <= ${r} AND max_time >= ${i})) + )`}async getMapKeys({databaseName:e,tableName:t,column:a,maxKeys:n=1e3,connectionId:r,metricName:i,metadataMVs:s,dateRange:o,timestampValueExpression:l,signal:u}){ti(n,"maxKeys");let c=s&&o?ny(o,s.granularity):void 0,m=o&&l?`${o[0].getTime()}-${o[1].getTime()}-${l}`:"",p=i?`${r}.${e}.${t}.${a}.${i}.${m}.keys`:s&&c?`${r}.${e}.${t}.${a}.${c[0].getTime()}.${c[1].getTime()}.keys`:`${r}.${e}.${t}.${a}.${m}.keys`,g=this.cache.get(p);if(null!=g)return g;let y=await this.getMapColumnTextIndexes({databaseName:e,tableName:t,connectionId:r}),b=await this.getServerVersion({connectionId:r}),_=h.e.call(void 0,b),$=y.get(a);if(f([$,"optionalAccess",e=>e.key,"optionalAccess",e=>e.indexName])&&_){let a=await this.partsOverlapFilter({databaseName:e,tableName:t,dateRange:o,timestampValueExpression:l}),i=$.key.indexName,s=tx` + SELECT token AS key + FROM mergeTreeTextIndex(${{String:e}}, ${{String:t}}, ${{String:i}}) + WHERE ${a} + GROUP BY key HAVING key != '' + LIMIT ${{Int32:n}}`;try{let e=await this.clickhouseClient.query({query:s.sql,query_params:s.params,connectionId:r,clickhouse_settings:this.getClickHouseSettings()}).then(e=>e.json()).then(e=>e.data.map(e=>e.key).filter(Boolean));if(e.length>0)return this.cache.set(p,e),e}catch(e){return console.warn("getMapKeys rollup query failed for key text index query",e),[]}}else if(f([$,"optionalAccess",e=>e.kv,"optionalAccess",e=>e.indexName])&&_){let a=await this.partsOverlapFilter({databaseName:e,tableName:t,dateRange:o,timestampValueExpression:l}),i=$.kv.indexName,s=$.kv.separator,u=tx` + SELECT splitByString(${{String:s}}, token)[1] AS key + FROM mergeTreeTextIndex(${{String:e}}, ${{String:t}}, ${{String:i}}) + WHERE ${a} + GROUP BY key HAVING key != '' + LIMIT ${{Int32:n}}`;try{let e=await this.clickhouseClient.query({query:u.sql,query_params:u.params,connectionId:r,clickhouse_settings:this.getClickHouseSettings()}).then(e=>e.json()).then(e=>e.data.map(e=>e.key).filter(Boolean));if(e.length>0)return this.cache.set(p,e),e}catch(e){return console.warn("getMapKeys rollup query failed for kv text index query",e),[]}}if(s&&c){let t=await this.cache.getOrFetch(p,async()=>{try{let t=eZ(s.granularity,tx`fromUnixTimestamp64Milli(${{Int64:c[0].getTime()}})`),i=eZ(s.granularity,tx`fromUnixTimestamp64Milli(${{Int64:c[1].getTime()}})`),o=tx`AND Timestamp >= ${t} AND Timestamp <= ${i}`,l;return l=s.keyRollupTable?tx` + SELECT Key + FROM ${tk({database:e,table:s.keyRollupTable})} + WHERE ColumnIdentifier = ${{String:a}} + ${o} + GROUP BY Key + ORDER BY sum(count) DESC + LIMIT ${{Int32:n}} + `:tx` + SELECT Key + FROM ${tk({database:e,table:s.kvRollupTable})} + WHERE ColumnIdentifier = ${{String:a}} + ${o} + GROUP BY Key + ORDER BY sum(count) DESC + LIMIT ${{Int32:n}} + `,await this.clickhouseClient.query({query:l.sql,query_params:l.params,connectionId:r,clickhouse_settings:{...this.getClickHouseSettings(),timeout_overflow_mode:"break",max_execution_time:15,max_rows_to_read:"0"},abort_signal:u}).then(e=>e.json()).then(e=>e.data.map(e=>e.Key).filter(e=>e))}catch(e){return console.warn("getMapKeys rollup query failed",e),[]}});if(t.length>0)return t}let S=await this.getColumn({databaseName:e,tableName:t,column:a,connectionId:r});if(null==S)throw Error(`Column ${a} not found in ${e}.${t}`);let A="groupUniqArrayArray";S.type.startsWith("Map(LowCardinality(String)")&&(A="lowCardinalityKeys");let v=o&&l?await ep({connectionId:r,databaseName:e,tableName:t,dateRange:o,dateRangeStartInclusive:!0,dateRangeEndInclusive:!0,timestampValueExpression:l,metadata:this}):null,E=[...i?[tx`MetricName=${{String:i}}`]:[],...v?[v]:[]],x=E.length?tx`WHERE ${tw(" AND ",...E)}`:"",w;return w="groupUniqArrayArray"===A?tx` + WITH sampledKeys as ( + SELECT getSubcolumn(${{Identifier:a}}, 'keys') AS keys + FROM ${tk({database:e,table:t})} ${x} + LIMIT ${{Int32:this.getClickHouseSettings().max_rows_to_read?Number(this.getClickHouseSettings().max_rows_to_read):3e6}} + ) + SELECT groupUniqArrayArray(${{UNSAFE_RAW_SQL:ti(n,"maxKeys")}})(keys) as keysArr + FROM sampledKeys`:tx` + WITH sampledKeys as ( + SELECT getSubcolumn(${{Identifier:a}}, 'keys') AS keysArr + FROM ${tk({database:e,table:t})} ${x} + LIMIT ${{Int32:this.getClickHouseSettings().max_rows_to_read?Number(this.getClickHouseSettings().max_rows_to_read):3e6}} + ) + SELECT DISTINCT lowCardinalityKeys(arrayJoin(keysArr)) as key + FROM sampledKeys + LIMIT ${{Int32:n}} + `,this.cache.getOrFetch(p,async()=>await this.clickhouseClient.query({query:w.sql,query_params:w.params,connectionId:r,clickhouse_settings:{...this.getClickHouseSettings(),timeout_overflow_mode:"break",max_execution_time:15,max_rows_to_read:"0"},abort_signal:u}).then(e=>e.json()).then(e=>("groupUniqArrayArray"===A?d(e.data[0].keysArr,()=>[]):e.data.map(e=>e.key).filter(e=>!!e)).filter(e=>e)))}async getJSONKeys({column:e,maxKeys:t=1e3,databaseName:a,tableName:n,connectionId:r,metricName:i,dateRange:s,timestampValueExpression:o}){return[]}async getMapValues({databaseName:e,tableName:t,column:a,key:n,maxValues:r=20,connectionId:i,dateRange:s,timestampValueExpression:o,signal:l}){let u=s&&o?`${s[0].getTime()}-${s[1].getTime()}-${o}`:"",c=`${i}.${e}.${t}.${a}.${n}.${u}.values`,m=this.cache.get(c);if(null!=m)return m;let p=s&&o?await ep({connectionId:i,databaseName:e,tableName:t,dateRange:s,dateRangeStartInclusive:!0,dateRangeEndInclusive:!0,timestampValueExpression:o,metadata:this}):null,g=[tx`value != ''`,...p?[p]:[]],h=tx`WHERE ${tw(" AND ",...g)}`,y=n?await this.getColumn({databaseName:e,tableName:t,column:a,connectionId:i}):void 0,b=n&&"json"===t$(d(f([y,"optionalAccess",e=>e.type]),()=>""))?td(a,n):void 0,_;return _=b?tx` + SELECT DISTINCT ${{UNSAFE_RAW_SQL:b}} as value + FROM ${tk({database:e,table:t})} + ${h} + LIMIT ${{Int32:r}} + `:n?tx` + SELECT DISTINCT ${{Identifier:a}}[${{String:n}}] as value + FROM ${tk({database:e,table:t})} + ${h} + LIMIT ${{Int32:r}} + `:tx` + SELECT DISTINCT ${{Identifier:a}} as value + FROM ${tk({database:e,table:t})} + ${h} + LIMIT ${{Int32:r}} + `,this.cache.getOrFetch(c,async()=>await this.clickhouseClient.query({query:_.sql,query_params:_.params,connectionId:i,clickhouse_settings:{max_rows_to_read:String(d(this.getClickHouseSettings().max_rows_to_read,()=>3e6)),read_overflow_mode:"break",...this.getClickHouseSettings()},abort_signal:l}).then(e=>e.json()).then(e=>e.data.map(e=>e.value)))}async getMapTextIndexKeyValues({databaseName:e,tableName:t,connectionId:a,queryOptions:n,dateRange:r,timestampValueExpression:i,signal:s}){let o=x.default.call(void 0,n),l=`${e}.${t}.${a}.${r[0].toString()}.${r[1].toString()}.${o}.${i}.getMapTextIndexKeyValues`;return this.cache.getOrFetch(l,async()=>{try{let o=[];for(let[a,s]of n.entries()){let n=tw(" OR ",s.keys.map(e=>tx`startsWith(token, ${{UNSAFE_RAW_SQL:N.default.escape(`${e}${s.separator}`)}})`)),l=await this.partsOverlapFilter({databaseName:e,tableName:t,dateRange:r,timestampValueExpression:i}),u=tx`substring(token, position(token, ${{String:s.separator}}) + ${{Int32:s.separator.length}})`,c=tx` + SELECT * FROM ( + SELECT ${{String:a}} as column, + substring(token, 1, position(token, ${{String:s.separator}}) - 1) AS key, + groupUniqArray(${{Int32:s.limit}})(${u}) AS value + FROM mergeTreeTextIndex(${{String:e}}, ${{String:t}}, ${{String:s.indexName}}) + WHERE ${l} + AND (${n}) + AND ${u} != '' + GROUP BY column, key + )`;o.push(c)}let l=tw(" UNION ALL ",o);return await this.clickhouseClient.query({query:l.sql,query_params:l.params,connectionId:a,clickhouse_settings:{max_rows_to_read:String(d(this.getClickHouseSettings().max_rows_to_read,()=>3e6)),read_overflow_mode:"break",...this.getClickHouseSettings()},abort_signal:s}).then(e=>e.json()).then(e=>e.data.map(e=>({key:`${e.column}['${e.key}']`,value:e.value})))}catch(e){console.warn("getMapTextIndexKeyValues failed; skipping this strategy for the current batch",e);return}})}async getTextIndexKeyValues({databaseName:e,tableName:t,connectionId:a,queryOptions:n,dateRange:r,timestampValueExpression:i,signal:s}){let o=x.default.call(void 0,n),l=`${e}.${t}.${a}.${r[0].toString()}.${r[1].toString()}.${o}.${i}.getTextIndexKeyValues`;return this.cache.getOrFetch(l,async()=>{try{let o=[];for(let[a,s]of n.entries()){let n=await this.partsOverlapFilter({databaseName:e,tableName:t,dateRange:r,timestampValueExpression:i}),l=tx` + SELECT * FROM ( + SELECT ${{String:a}} AS key, + groupUniqArray(${{Int32:s.limit}})(token) AS value + FROM mergeTreeTextIndex(${{String:e}}, ${{String:t}}, ${{String:s.indexName}}) + WHERE ${n} + AND token != '' + GROUP BY key + )`;o.push(l)}let l=tw(" UNION ALL ",o);return await this.clickhouseClient.query({query:l.sql,query_params:l.params,connectionId:a,clickhouse_settings:{max_rows_to_read:String(d(this.getClickHouseSettings().max_rows_to_read,()=>3e6)),read_overflow_mode:"break",...this.getClickHouseSettings()},abort_signal:s}).then(e=>e.json()).then(e=>e.data)}catch(e){console.warn("getTextIndexKeyValues failed; skipping this strategy for the current batch",e);return}})}async getMetadataMVKeyValues({databaseName:e,connectionId:t,dateRange:a,metadataMVs:n,queryOptions:r,maxValuesPerKey:i,signal:s}){let o=x.default.call(void 0,r),l=x.default.call(void 0,d(n,()=>({}))),u=`${e}.${t}.${a[0].toString()}.${a[1].toString()}.${i}.${l}.${o}.getMetadataMVKeyValues`;return this.cache.getOrFetch(u,async()=>{if(!n)return void console.warn("getMetadataMVKeyValues: metadataMVs is undefined");let o=ny(a,n.granularity),l=eZ(n.granularity,tx`fromUnixTimestamp64Milli(${{Int64:o[0].getTime()}})`),u=eZ(n.granularity,tx`fromUnixTimestamp64Milli(${{Int64:o[1].getTime()}})`),c=tx`Timestamp >= ${l} AND Timestamp <= ${u}`,m=[];for(let[t,a]of r.entries()){let n=[];for(let[e,t]of a){let a=tx`(ColumnIdentifier = ${{String:e}} AND Key IN (${{UNSAFE_RAW_SQL:t.map(e=>N.default.escape(e)).join(",")}}))`;n.push(a)}let r=tx` + SELECT * FROM ( + SELECT ColumnIdentifier, Key, groupUniqArray(${{Int32:i}})(Value) as Values + FROM ${tk({database:e,table:t})} + WHERE (${tw(" OR ",n)}) + AND ${c} + AND notEmpty(Value) + GROUP BY ColumnIdentifier, Key + ORDER BY ColumnIdentifier, Key + )`;m.push(r)}let d=tw(" UNION ALL ",m);try{return await this.clickhouseClient.query({query:d.sql,query_params:d.params,connectionId:t,clickhouse_settings:{...this.getClickHouseSettings(),timeout_overflow_mode:"break",max_execution_time:15,max_rows_to_read:"0"},abort_signal:s}).then(e=>e.json()).then(e=>e.data.map(e=>{let t=e.Values.filter(e=>e);return"NativeColumn"===e.ColumnIdentifier?{key:e.Key,value:t}:{key:`${e.ColumnIdentifier}['${e.Key}']`,value:t}}))}catch(e){console.warn("Batched rollup query failed, falling back to per-key",e)}})}async getAllFields({databaseName:e,tableName:t,connectionId:a,metricName:n,metadataMVs:r,dateRange:i,timestampValueExpression:s}){let o=[],l=await this.getColumns({databaseName:e,tableName:t,connectionId:a});for(let e of l)"JSON"!==e.type&&o.push({path:[e.name],type:e.type,jsType:t$(e.type)});let u=d(tq(l,["map","json"]),()=>[]);return await Promise.all(u.map(async l=>{if("json"===t$(l.type)){for(let r of(await this.getJSONKeys({databaseName:e,tableName:t,column:l.name,connectionId:a,metricName:n,dateRange:i,timestampValueExpression:s})))o.push({path:[l.name,r.key],type:r.chType,jsType:t$(r.chType)});return}let u=await this.getMapKeys({databaseName:e,tableName:t,column:l.name,connectionId:a,metricName:n,metadataMVs:r,dateRange:i,timestampValueExpression:s}),c=d(f([l,"access",e=>e.type,"access",e=>e.match,"call",e=>e(/Map\(.+,\s*(.+)\)/),"optionalAccess",e=>e[1]]),()=>"String");for(let e of u)o.push({path:[l.name,e],type:c,jsType:t$(c)})})),o}async getTableMetadata({databaseName:e,tableName:t,connectionId:a}){let n=await this.queryTableMetadata({cache:this.cache,database:e,table:t,connectionId:a});if("Distributed"===f([n,"optionalAccess",e=>e.engine])){n.isPointerTable=!0;try{let{cluster:e,database:t,table:r}=d(nv(n),()=>({}));if(!t||!r||!e)throw Error(`Could not parse underlying local table from Distributed table metadata: ${n.create_table_query}`);let i=await this.queryTableMetadata({cache:this.cache,database:t,table:r,cluster:e,connectionId:a});if(!i)throw Error(`Could not find underlying local table metadata for Distributed table: ${t}.${r}`);n={...n,...E.pick.call(void 0,i,["engine","engine_full","partition_key","sorting_key","primary_key","sampling_key"]),create_local_table_query:f([i,"optionalAccess",e=>e.create_table_query])}}catch(e){console.error("Failed to fetch underlying table metadata for Distributed table, using Distributed table metadata as fallback",e)}}return"Merge"===f([n,"optionalAccess",e=>e.engine])&&(n.isPointerTable=!0),f([n,"optionalAccess",e=>e.partition_key,"access",e=>e.startsWith,"call",e=>e("(")])&&n.partition_key.endsWith(")")&&(n.partition_key=n.partition_key.slice(1,-1)),n}async getAllTableMetadata({databaseName:e,connectionId:t}){let a=`${t}.${e}.tableMetadata`;return this.cache.getOrFetch(a,async()=>{let a=tx`SELECT * FROM system.tables WHERE database = ${{String:e}}`;return(await this.clickhouseClient.query({connectionId:t,query:a.sql,query_params:a.params,clickhouse_settings:this.getClickHouseSettings()}).then(e=>e.json())).data})}async getSetting({settingName:e,connectionId:t}){return this.cache.getOrFetch(`${t}.${e}`,async()=>{let a=tx` + SELECT name, value + FROM system.settings + WHERE name = ${{String:e}} + `;try{let e=await this.clickhouseClient.query({connectionId:t,query:a.sql,query_params:a.params,clickhouse_settings:this.getClickHouseSettings()}).then(e=>e.json());return e.data.length>0?e.data[0].value:void 0}catch(e){if(e instanceof Error&&e.message.includes("Not enough privileges"))return void console.warn("Not enough privileges to fetch settings:",e);throw e}})}async isClickHouseCloud({connectionId:e}){return await p(await this.cache.getOrFetch(`${e}.isClickHouseCloud`,async()=>{try{let t=await this.clickhouseClient.query({connectionId:e,query:"SELECT count() > 0 AS is_cloud FROM system.table_engines WHERE name = 'SharedMergeTree'",clickhouse_settings:this.getClickHouseSettings(),shouldSkipApplySettings:!0}).then(e=>e.json());return t.data.length>0&&t.data[0].is_cloud}catch(e){console.warn("Error detecting ClickHouse Cloud:",e);return}}),async()=>!1)}async getServerVersion({connectionId:e}){return this.cache.getOrFetch(`${e}.serverVersion`,async()=>{try{let t=await g([await this.clickhouseClient.query({connectionId:e,query:"SELECT version() AS version",query_params:void 0,clickhouse_settings:this.getClickHouseSettings(),shouldSkipApplySettings:!0}).then(e=>e.json()),"access",async e=>e.data,"access",async e=>e[0],"optionalAccess",async e=>e.version]);return t?h.a.call(void 0,t):void 0}catch(e){console.warn("Error fetching ClickHouse server version:",e);return}})}async getSettings({connectionId:e}){return this.cache.getOrFetch(`${e}.availableSettings`,async()=>{try{let t=await this.clickhouseClient.query({connectionId:e,query:"SELECT name, value FROM system.settings",query_params:void 0,clickhouse_settings:this.getClickHouseSettings(),shouldSkipApplySettings:!0}).then(e=>e.json());return new Map(t.data.map(e=>[e.name,e.value]))}catch(e){if(e instanceof Error&&e.message.includes("Not enough privileges"))return console.warn("Not enough privileges to fetch settings, may result in unoptimized queries:",e),new Map;throw e}})}async getSkipIndices({databaseName:e,tableName:t,connectionId:a}){return this.cache.getOrFetch(`${a}.${e}.${t}.skipIndices`,async()=>{let n=await this.queryTableMetadata({cache:this.cache,database:e,table:t,connectionId:a}),r=e,i=t,s;if("Distributed"===f([n,"optionalAccess",e=>e.engine])){let e=nv(n);e?(r=e.database,i=e.table,s=e.cluster):console.error(`Could not parse local table from Distributed table metadata: ${n.create_table_query}`)}try{return await this.querySkipIndices({database:r,table:i,connectionId:a,cluster:s})}catch(e){if(e instanceof Error&&e.message.includes("Not enough privileges"))return console.warn("Not enough privileges to fetch skip indices:",e),[];throw e}})}async getOtelTables({connectionId:e}){return this.cache.getOrFetch(`${e}.otelTables`,async()=>{let t=["otel_logs","otel_traces","hyperdx_sessions","otel_metrics_gauge","otel_metrics_sum","otel_metrics_summary","otel_metrics_histogram","otel_metrics_exp_histogram"].map(e=>tx`${{String:e}}`),a=tx` + SELECT + database, + name + FROM system.tables + WHERE (database != 'system') + AND (name IN (${tw(",",t)})) + ORDER BY database, name + `;try{let t=await this.clickhouseClient.query({connectionId:e,query:a.sql,query_params:a.params,clickhouse_settings:this.getClickHouseSettings()}).then(e=>e.json());if(0===t.data.length)return null;let n=new Map;for(let e of t.data)n.has(e.database)||n.set(e.database,new Set),n.get(e.database).add(e.name);let r="",i=0;for(let[e,t]of n.entries()){let a=0;t.has("otel_logs")&&(a+=10),t.has("otel_traces")&&(a+=10),t.has("hyperdx_sessions")&&(a+=5),t.has("otel_metrics_gauge")&&(a+=2),t.has("otel_metrics_sum")&&(a+=2),t.has("otel_metrics_histogram")&&(a+=2),t.has("otel_metrics_summary")&&(a+=1),t.has("otel_metrics_exp_histogram")&&(a+=1),a>i&&(i=a,r=e)}if(!r)return null;let s=n.get(r);return{database:r,tables:{logs:s.has("otel_logs")?"otel_logs":void 0,traces:s.has("otel_traces")?"otel_traces":void 0,sessions:s.has("hyperdx_sessions")?"hyperdx_sessions":void 0,metrics:{gauge:s.has("otel_metrics_gauge")?"otel_metrics_gauge":void 0,sum:s.has("otel_metrics_sum")?"otel_metrics_sum":void 0,summary:s.has("otel_metrics_summary")?"otel_metrics_summary":void 0,histogram:s.has("otel_metrics_histogram")?"otel_metrics_histogram":void 0,expHistogram:s.has("otel_metrics_exp_histogram")?"otel_metrics_exp_histogram":void 0}}}}catch(e){if(e instanceof Error&&e.message.includes("Not enough privileges"))return console.warn("Not enough privileges to fetch tables:",e),null;throw e}})}static parseTokensExpression(e){let t=e.trim().match(/^tokens\s*\((.*)\)$/i);return t?{hasTokens:!0,innerExpression:t[1].trim()}:{hasTokens:!1}}async getValuesDistribution({chartConfig:e,key:t,samples:a=1e5,limit:n=100,source:r}){let i=E.pick.call(void 0,e,["connection","from","dateRange","filters","where","with"]);return this.cache.getOrFetch(`${x.default.call(void 0,i)}.${t}.valuesDistribution`,async()=>{let i=await this.renderMetadataKeyExpression({databaseName:e.from.databaseName,tableName:e.from.tableName,connectionId:e.connection,keyExpression:t}),s={...e,with:[...e.with||[],{name:"tableStats",chartConfig:{...E.omit.call(void 0,e,["with","groupBy","orderBy","limit"]),select:`count() as total, greatest(CAST(total / ${a} AS UInt32), 1) as sample_factor`}}],filters:[...e.filters||[],{type:"sql",condition:`cityHash64(${e.timestampValueExpression}, rand()) % (SELECT sample_factor FROM tableStats) = 0`}],select:`${i} AS __hdx_value, count() as __hdx_count, __hdx_count / (sum(__hdx_count) OVER ()) * 100 AS __hdx_percentage`,orderBy:"__hdx_percentage DESC",groupBy:"__hdx_value",limit:{limit:n}},o=await eI(s,this,f([r,"optionalAccess",e=>e.querySettings]));return new Map((await this.clickhouseClient.query({query:o.sql,query_params:o.params,connectionId:e.connection,clickhouse_settings:{...this.getClickHouseSettings(),max_rows_to_group_by:`${10*n}`,group_by_overflow_mode:"any",max_rows_to_read:"0"}}).then(e=>e.json())).data.map(({__hdx_value:e,__hdx_percentage:t})=>[e,Number(t)]))})}async doMetadataMVsAggregateColumn({databaseName:e,tableName:t,connectionId:a},n){for(let r of(await this.getAllTableMetadata({databaseName:e,connectionId:a}))){let a=RegExp(`^CREATE MATERIALIZED VIEW ${tc(e)}\\.${tc(r.name)} TO ${tc(e)}\\.${tc(t)}`);if(!("MaterializedView"!==r.engine||!a.test(r.create_table_query)))return tu(r.as_select,n)}return!1}async determineKeyValueFetchingStrategy({databaseName:e,tableName:t,connectionId:a,metadataMVs:n}){return this.cache.getOrFetch(`${a}.${e}.${t}.${JSON.stringify(n)}.determineKeyValueFetchingStrategy`,async()=>{let r=await this.getServerVersion({connectionId:a}),i=h.e.call(void 0,r),s=await this.getColumns({databaseName:e,tableName:t,connectionId:a}),o=await this.getMapColumnTextIndexes({databaseName:e,tableName:t,connectionId:a}),l=await this.getNativeArrayColumnTextIndexes({databaseName:e,tableName:t,connectionId:a}),u={mapTextIndexLookup:[],nativeTextIndexLookup:[],metadataMVs:[],rawTable:[]};for(let t of s)if("Timestamp"!==t.name){if(i&&f([o,"access",e=>e.get,"call",e=>e(t.name),"optionalAccess",e=>e.kv])){u.mapTextIndexLookup.push(o.get(t.name));continue}if(i&&l.has(t.name)){u.nativeTextIndexLookup.push(l.get(t.name));continue}if(n&&n.kvRollupTable&&await this.doMetadataMVsAggregateColumn({databaseName:e,tableName:n.kvRollupTable,connectionId:a},t.name)){u.metadataMVs.push({columnName:t.name,mvName:n.kvRollupTable});continue}u.rawTable.push(t.name)}return u})}async getAllKeyValues({databaseName:e,tableName:t,keyExpressions:a,maxValuesPerKey:n=20,connectionId:r,metadataMVs:i,dateRange:s,timestampValueExpression:o,signal:l}){if(0===a.length)return[];if(a.length>tr)return(await Promise.allSettled(E.chunk.call(void 0,a,tr).map(a=>this.getAllKeyValues({databaseName:e,tableName:t,keyExpressions:a,maxValuesPerKey:n,connectionId:r,metadataMVs:i,dateRange:s,timestampValueExpression:o,signal:l})))).filter(e=>"fulfilled"===e.status).flatMap(e=>e.value);let u=a.map(e=>{let t=tg(e),a=t.length>=2;return{keyExpression:e,rollupColumn:a?ts(t[0]):"NativeColumn",rollupKey:a?t[1]:ts(t[0]),column:ts(t[0]),mapKey:a?t[1]:void 0}}),c=await this.determineKeyValueFetchingStrategy({databaseName:e,tableName:t,connectionId:r,metadataMVs:i}),m=new Map,d=new Map,p=new Map,g=[];for(let e of u){if(e.mapKey){let t=c.mapTextIndexLookup.find(t=>t.kv&&t.kv.mapColumn===e.column);if(f([t,"optionalAccess",e=>e.kv])){let a=m.get(e.column);a||(a={indexName:t.kv.indexName,limit:n,separator:t.kv.separator,keys:[]},m.set(e.column,a)),a.keys.push(e.mapKey);continue}}else{let t=c.nativeTextIndexLookup.find(t=>t.expression===e.column);if(t){d.set(e.column,{indexName:t.name,limit:n});continue}}let t=c.metadataMVs.find(t=>t.columnName===e.column);if(t){let a=p.get(t.mvName);a||(a=new Map,p.set(t.mvName,a));let n=a.get(e.rollupColumn);n||(n=[],a.set(e.rollupColumn,n)),n.push(e.rollupKey);continue}if(c.rawTable.includes(e.column)){let t=tl(e.column);e.mapKey?g.push(`${t}[${N.default.escape(e.mapKey)}]`):g.push(t)}}let h=[];return m.size>0&&h.push(this.getMapTextIndexKeyValues({databaseName:e,tableName:t,connectionId:r,queryOptions:m,dateRange:s,timestampValueExpression:o,signal:l})),d.size>0&&h.push(this.getTextIndexKeyValues({databaseName:e,tableName:t,connectionId:r,queryOptions:d,dateRange:s,timestampValueExpression:o,signal:l})),p.size>0&&h.push(this.getMetadataMVKeyValues({databaseName:e,tableName:t,connectionId:r,queryOptions:p,maxValuesPerKey:n,dateRange:s,metadataMVs:i,signal:l})),g.length>0&&h.push(this.getKeyValues({chartConfig:{from:{databaseName:e,tableName:t},connection:r,dateRange:s,timestampValueExpression:o,select:"",where:""},keys:g,limit:n,source:void 0,signal:l}).catch(e=>{console.warn("getKeyValues (raw table) failed; skipping this strategy for the current batch",e)})),(await Promise.allSettled(h)).filter(e=>"fulfilled"===e.status).map(e=>e.value).filter(e=>void 0!==e).flat()}async getKeyValues({chartConfig:e,keys:t,keyConditions:a,limit:n=20,disableRowLimit:r=!1,signal:i,source:s}){let o={...E.pick.call(void 0,e,["connection","from","dateRange","where","with","filters"]),keys:t,keyConditions:f([a,"optionalAccess",e=>e.map,"call",e=>e(e=>e&&eR(e))]),disableRowLimit:r};return this.cache.getOrFetch(`${x.default.call(void 0,o)}.getKeyValues`,async()=>{if(0===t.length)return[];let o=await this.renderKeyExpressions({databaseName:e.from.databaseName,tableName:e.from.tableName,connectionId:e.connection,keys:t}),l=e=>d(o.get(e),()=>e),u=t.map(l),c=r?{...e,select:t.map((e,t)=>{let r=l(e),i=f([a,"optionalAccess",e=>e.at,"call",e=>e(t)]),s=i&&eC(i,l);return s?`groupUniqArrayIf(${n})(${r}, ${s}) AS param${t}`:`groupUniqArray(${n})(${r}) AS param${t}`}).join(", ")}:await (async()=>{let a=u.map((e,t)=>`${e} as param${t}`).join(", ")||"*";return{with:[{name:"sampledData",chartConfig:{...e,select:a,limit:{limit:this.getClickHouseSettings().max_rows_to_read?Number(this.getClickHouseSettings().max_rows_to_read):3e6}},isSubquery:!0}],select:t.map((e,t)=>`groupUniqArray(${n})(param${t}) AS param${t}`).join(", "),connection:e.connection,from:{databaseName:"",tableName:"sampledData"},where:""}})(),m=await eI(c,this,f([s,"optionalAccess",e=>e.querySettings]));return Object.entries(f([await this.clickhouseClient.query({query:m.sql,query_params:m.params,connectionId:e.connection,clickhouse_settings:r?void 0:{...this.getClickHouseSettings(),timeout_overflow_mode:"break",max_execution_time:15,max_rows_to_read:"0"},abort_signal:i}).then(e=>e.json()),"optionalAccess",e=>e.data,"optionalAccess",e=>e[0]])).map(([e,a])=>({key:t[parseInt(e.replace("param",""))],value:f([a,"optionalAccess",e=>e.filter,"call",e=>e(e=>null!=e&&""!==e)])}))})}async getKeyValuesWithMVs({chartConfig:e,keys:t,keyConditions:a,source:n,limit:r=20,disableRowLimit:i,signal:s}){let o={...E.pick.call(void 0,e,["connection","from","dateRange","where","with","filters"]),keys:t,keyConditions:f([a,"optionalAccess",e=>e.map,"call",e=>e(e=>e&&eR(e))]),disableRowLimit:i};return this.cache.getOrFetch(`${x.default.call(void 0,o)}.getKeyValuesWithMVs`,async()=>{if(0===t.length)return[];if(a&&a.some(e=>null!=e)){let o=await tn({chartConfig:e,keys:t,keyConditions:a,source:n,clickhouseClient:this.clickhouseClient,metadata:this,signal:s});return this.getKeyValues({chartConfig:o,keys:t,keyConditions:a,limit:r,disableRowLimit:i,signal:s,source:n})}let o=n&&("log"===n.kind||"trace"===n.kind)?await ta({chartConfig:e,keys:t,source:n,clickhouseClient:this.clickhouseClient,metadata:this,signal:s}):[{chartConfig:e,keys:t}];return(await Promise.all(o.map(async({chartConfig:e,keys:t})=>this.getKeyValues({chartConfig:e,keys:t,limit:r,disableRowLimit:i,signal:s,source:n})))).flat()})}};function tg(e){let t=e.indexOf("['");if(-1!==t&&e.endsWith("']"))return[e.slice(0,t),e.slice(t+2,-2)];let a=e.indexOf('["');return -1!==a&&e.endsWith('"]')?[e.slice(0,a),e.slice(a+2,-2)]:[e]}var th=new tp,ty=t.M=e=>new tf(e,th),tb=((n=tb||{}).Array="array",n.Date="date",n.Map="map",n.Number="number",n.String="string",n.Tuple="tuple",n.Bool="bool",n.JSON="json",n.Dynamic="dynamic",n),t_=t.O=e=>{let t={};return e.headers.forEach((e,a)=>{t[a]=e}),t},t$=t.P=e=>{if(e.startsWith("Date"))return"date";if(e.startsWith("Tuple"))return"tuple";if(e.startsWith("Map"))return"map";if(e.startsWith("Array"))return"array";if(e.startsWith("Int")||e.startsWith("UInt")||e.startsWith("Float")||e.startsWith("Nullable(Int")||e.startsWith("Nullable(UInt")||e.startsWith("Nullable(Float"))return"number";if(e.startsWith("String")||e.startsWith("Nullable(String)")||e.startsWith("FixedString")||e.startsWith("Enum")||e.startsWith("UUID")||e.startsWith("IPv4")||e.startsWith("IPv6"))return"string";if("Bool"===e)return"bool";if(e.startsWith("JSON"))return"json";if(e.startsWith("Dynamic"))return"dynamic";if(e.startsWith("LowCardinality"))return t$(e.slice(15,-1));if(e.startsWith("Nullable("))return t$(e.slice(9,-1));if(e.startsWith("Variant(")&&e.endsWith(")")){let t=a4(e.slice(8,-1));if(t.length>0&&t.every(e=>"number"===t$(e)))return"number"}return null},tS=t.Q=e=>"map"===e||"array"===e||"json"===e||"tuple"===e||"dynamic"===e,tA=t.R=e=>e.trim().startsWith("Array(")&&e.trim().endsWith(")")?t$(e.trim().slice(6,-1)):null,tv=t.S=e=>{let t=t$(e),a="array"===t;if("map"===t||"tuple"===t)throw Error("Map or Tuple types cannot be searched with Lucene.");return"date"===t?t="number":"array"===t&&tA(e)&&(t=tA(e)),{type:t,isArray:a}},tE=e=>`HYPERDX_PARAM_${Math.abs(na(`${e}`))}`,tx=t.T=(e,...t)=>({sql:e.map((e,a)=>{let n=t[a];return e+(null==n?"":"string"==typeof n?n:"UNSAFE_RAW_SQL"in n?n.UNSAFE_RAW_SQL:Array.isArray(n)?n.map(e=>e.sql).join(""):"sql"in n?n.sql:"Identifier"in n?`{${tE(n.Identifier)}:Identifier}`:"String"in n?`{${tE(n.String)}:String}`:"Float32"in n?`{${tE(n.Float32)}:Float32}`:"Float64"in n?`{${tE(n.Float64)}:Float64}`:"Int32"in n?`{${tE(n.Int32)}:Int32}`:"Int64"in n?`{${tE(n.Int64)}:Int64}`:"")}).join(""),params:t.reduce((e,t)=>({...e,...null==t||"string"==typeof t||"UNSAFE_RAW_SQL"in t?{}:Array.isArray(t)?t.reduce((e,t)=>(Object.assign(e,t.params),e),{}):"params"in t?t.params:"Identifier"in t?{[tE(t.Identifier)]:t.Identifier}:"String"in t?{[tE(t.String)]:t.String}:"Float32"in t?{[tE(t.Float32)]:t.Float32}:"Float64"in t?{[tE(t.Float64)]:t.Float64}:"Int32"in t?{[tE(t.Int32)]:t.Int32}:"Int64"in t?{[tE(t.Int64)]:t.Int64}:{}}),{})}),tw=t.U=(e,...t)=>t.reduce((t,a)=>{if(Array.isArray(a)){if(0===a.length)return t;t.sql+=(t.sql.length>0?e:"")+a.map(e=>e.sql).filter(Boolean).join(e),t.params=a.reduce((e,t)=>(Object.assign(e,t.params),e),t.params)}else a.sql.length>0&&(t.sql+=`${t.sql.length>0?e:""}${a.sql}`,Object.assign(t.params,a.params));return t},{sql:"",params:{}}),tN=t.V=(e,t,a)=>(Array.isArray(e)?e.every(e=>0===e.sql.length):0===e.sql.length)?[]:tx`${t}${e}${a}`,tT=t.W=class extends Error{constructor(e,t){super(e),this.query=t,this.name="ClickHouseQueryError"}},tI=t.Z=o=class{__init3(){this.requestTimeout=36e5}constructor({host:e,username:t,password:a,queryTimeout:n,application:r,requestTimeout:i,customLogger:s}){o.prototype.__init3.call(this),this.host=e,this.username=t,this.password=a,this.queryTimeout=n,this.maxRowReadOnly=!1,this.application=r,this.customLogger=s,null!=i&&i>=0&&(this.requestTimeout=i)}get requestTimeoutMs(){return this.requestTimeout}getClient(){if(!this.client)throw Error("ClickHouse client not initialized. Child classes must initialize the client.");return this.client}async close(){await f([this,"access",e=>e.client,"optionalAccess",e=>e.close,"call",e=>e()])}logQuery(e,t={}){if(!this.customLogger)return;let a="";try{a=tC({sql:e,params:t})}catch(t){a=e}this.customLogger.debug({module:"clickhouse",message:"Sending query",args:{sql:a}})}async processClickhouseSettings({connectionId:e,externalClickhouseSettings:t}){let a=structuredClone(t||{});f([a,"optionalAccess",e=>e.max_rows_to_read])&&this.maxRowReadOnly&&delete a.max_rows_to_read,void 0===f([a,"optionalAccess",e=>e.max_execution_time])&&(this.queryTimeout||0)>0&&(a.max_execution_time=this.queryTimeout);let n={allow_experimental_analyzer:1,date_time_output_format:"iso",wait_end_of_query:0,cancel_http_readonly_queries_on_client_close:1,output_format_json_quote_64bit_integers:1},r=e?await ty(this).getSettings({connectionId:e}):void 0,i=(e,t)=>{r&&r.has(e)&&(n[e]=t)};return i("query_plan_optimize_lazy_materialization","1"),i("query_plan_max_limit_for_lazy_materialization","100000"),i("use_skip_indexes_for_top_k","1"),i("query_plan_max_limit_for_top_k_optimization","100000"),i("use_skip_indexes_on_data_read","1"),i("use_skip_indexes_for_disjunctions","1"),i("enable_full_text_index","1"),{...n,...a}}async query(e){let t=0;for(;t<2;){try{return await this.__query(e)}catch(t){if(!this.maxRowReadOnly&&"READONLY"===t.type&&t.message.includes("max_rows_to_read"))this.maxRowReadOnly=!0;else{let a=t;try{let n="";try{n=tC({sql:e.query,params:d(e.query_params,()=>({}))})}catch(t){n=e.query}(a=new tT(t.message,n)).cause=t}catch(e){}throw a}}t++}throw Error("ClickHouseClient query impossible codepath")}async queryChartConfig({config:e,metadata:t,opts:a,querySettings:n}){e=_.e.call(void 0,e)?Z(e):e;let r=await eI(e,t,n);return(await this.query({query:r.sql,query_params:r.params,format:"JSON",abort_signal:f([a,"optionalAccess",e=>e.abort_signal]),connectionId:e.connection,clickhouse_settings:f([a,"optionalAccess",e=>e.clickhouse_settings])})).json()}async testChartConfigValidity({config:e,metadata:t,opts:a,querySettings:n}){try{let r=await eI(e,t,n),i=tx`EXPLAIN ESTIMATE ${r}`,s=await (await this.query({query:i.sql,query_params:i.params,format:"JSON",abort_signal:f([a,"optionalAccess",e=>e.abort_signal]),connectionId:e.connection,clickhouse_settings:f([a,"optionalAccess",e=>e.clickhouse_settings])})).json(),o=Number(f([s,"access",e=>e.data,"access",e=>e[0],"optionalAccess",e=>e.rows]));return{isValid:!0,rowEstimate:Number.isNaN(o)?void 0:o}}catch(e){return{isValid:!1,error:e instanceof tT?e.message:"Error while constructing materialized view query"}}}},tk=t._=({database:e,table:t})=>tx`${{Identifier:e}}.${{Identifier:t}}`;function tC({sql:e,params:t}){return Object.entries(t).reduce((e,[t,a])=>e.replace(RegExp(`{${t}:(\\w+)}`,"g"),(e,t)=>"String"===t?`'${a}'`:String(a)),e)}function tR(e,t){let a={},n=new I.Parser().astify(e,{database:"Postgresql",parseOptions:{includeLocations:!0}});for(let[r,i]of(null!=n.columns&&n.columns.forEach(t=>{null!=t.as&&("expr"===t.type&&"column_ref"===t.expr.type?a[t.as]=t.expr.array_index&&f([t,"access",e=>e.expr,"access",e=>e.array_index,"access",e=>e[0],"optionalAccess",e=>e.brackets])?`${t.expr.column.expr.value}['${t.expr.array_index[0].index.value}']`:t.expr.column.expr.value:null!=t.expr.loc?a[t.as]=e.slice(t.expr.loc.start.offset,t.expr.loc.end.offset):console.error("Unknown alias column type",t))}),Object.entries(a)))for(let[e,n]of t)i.includes(e)&&(a[r]=i.replaceAll(e,n));return a}function tq(e,t){return e.filter(e=>{let a=t$(e.type);return null!=a&&t.includes(a)})}var tM=[{encodePattern:/\\\\/g,placeholder:"HDX_BACKSLASH_LITERAL",decodePattern:/HDX_BACKSLASH_LITERAL/g,source:"\\\\",value:"\\"},{encodePattern:/http:\/\//g,placeholder:"http_COLON_//",decodePattern:/http_COLON_\/\//g,source:"http://",value:"http://"},{encodePattern:/https:\/\//g,placeholder:"https_COLON_//",decodePattern:/https_COLON_\/\//g,source:"https://",value:"https://"},{encodePattern:/localhost:(\d{1,5})/g,placeholder:"localhost_COLON_$1",decodePattern:/localhost_COLON_(\d{1,5})/g,source:"localhost:$1",value:"localhost:$1"},{encodePattern:/\\:/g,placeholder:"HDX_COLON",decodePattern:/HDX_COLON/g,source:"\\:",value:":"}];function tO(e){return tM.reduce((e,{encodePattern:t,placeholder:a})=>e.replace(t,a),e)}function tF(e){return tM.reduce((e,{decodePattern:t,value:a})=>e.replace(t,a),e.replace(/\\"/g,'"'))}function tL(e){return tM.reduce((e,{decodePattern:t,source:a})=>e.replace(t,a),e)}function tD(e){return w.default.parse(tO(e))}function tU(e){return e.replace(/[\\%_]/g,"\\$&")}function tV(e){let t=tg(e);if(!(t.length<2))return N.default.format("mapContains(??, ?)",[t[0],t[1]])}function tW(e,t){return N.default.raw(null!=t?d(e,()=>""):N.default.escapeId(e))}function tB(e){return e.replace(/\s+/g,"").replace(/`/g,"")}var tP="";function tj(e){return"term"in e&&null!=e.term}function tH(e){return"inclusive"in e&&null!=e.inclusive}var tK=["Int8","Int16","Int32","Int64","Int128","Int256","UInt8","UInt16","UInt32","UInt64","UInt128","UInt256","Float32","Float64"];async function tz({field:e,metadata:t,databaseName:a,tableName:n,connectionId:r}){let i=e.split("."),s="";for(let e of i){s=s?`${s}.${e}`:e;let i=await t.getColumn({databaseName:a,tableName:n,column:s,connectionId:r});if(i)return i}}var tQ=class{constructor({metadata:e,databaseName:t,tableName:a,connectionId:n}){this.metadata=e,this.databaseName=t,this.tableName=a,this.connectionId=n}translateField(e,t){return e===tP?d(t.implicitColumnExpression,()=>"event"):`'${e}'`}async getFieldType(e){let t=await tz({field:e,metadata:this.metadata,databaseName:this.databaseName,tableName:this.tableName,connectionId:this.connectionId}),a=e.split(".").slice(t?t.name.split(".").length:0).join(".");if(!t)return{isArray:!1,type:null};let n=t$(t.type),r="array"===n;return r&&tA(t.type)&&(n=tA(t.type)),{isArray:r,type:n,fieldPostfix:a,column:t.name}}operator(e){switch(e){case"NOT":case"AND NOT":return"AND NOT";case"OR NOT":return"OR NOT";case"&&":case"":case"AND":return"AND";case"||":case"OR":return"OR";default:throw Error(`Unexpected operator. ${e}`)}}async eq(e,t,a,n){let{isArray:r}=await this.getFieldType(e);return`${this.translateField(e,n)} ${r?a?"does not contain":"contains":a?"is not":"is"} ${t}`}async isNotNull(e,t,a){let{isArray:n,type:r,fieldPostfix:i,column:s}=await this.getFieldType(e);return s&&n&&("map"===r||"json"===r)&&i?`${this.translateField(s,a)} ${t?`does not contain an element with non-null ${i}`:`contains an element with non-null ${i}`}`:`${this.translateField(e,a)} ${t?"is null":"is not null"}`}async gte(e,t,a){return`${this.translateField(e,a)} is greater than or equal to ${t}`}async lte(e,t,a){return`${this.translateField(e,a)} is less than or equal to ${t}`}async lt(e,t,a){return`${this.translateField(e,a)} is less than ${t}`}async gt(e,t,a){return`${this.translateField(e,a)} is greater than ${t}`}async fieldSearch(e,t,a,n,r,i){let s=t.trim().match(/\s/)?`"${t}"`:t;if(e===tP){let t=!i.implicitColumnExpression;return`${this.translateField(e,i)} ${n&&r?a?"does not contain":"contains":n?a?"does not end with":"ends with":r?a?"does not start with":"starts with":t?a?"does not have whole word":"has whole word":a?"does not contain":"contains"} ${s}`}{let{isArray:t,type:n,column:r,fieldPostfix:o}=await this.getFieldType(e),l=t&&("map"===n||"json"===n),u=l&&r?r:e;return`${this.translateField(u,i)} ${l?a?`does not contain an element with key ${o} and value`:`contains an element with key ${o} and value`:t&&"bool"!==n&&"number"!==n?a?"does not contain an element containing":"contains an element containing":a?"does not contain":"contains"} ${s}`}}async range(e,t,a,n,r,i="both"){let s="both"===i||"left"===i?t:`${t} (exclusive)`,o="both"===i||"right"===i?a:`${a} (exclusive)`;return`${e} ${n?"is not":"is"} between ${s} and ${o}`}},tG=t.ia=l=class{constructor(){l.prototype.__init4.call(this)}__init4(){this.NOT_FOUND_QUERY="(1 = 0)"}operator(e){switch(e){case"NOT":case"AND NOT":return"AND NOT";case"OR NOT":return"OR NOT";case"&&":case"":case"AND":return"AND";case"||":case"OR":return"OR";default:throw Error(`Unexpected operator. ${e}`)}}async eq(e,t,a,n){let{column:r,columnJSON:i,found:s,propertyType:o,isArray:l,mapKey:u,mapKeyIndexExpression:c,arrayMapKeyExpression:m,kvItemsExpression:d}=await this.getColumnForField(e,n);if(!s)return this.NOT_FOUND_QUERY;if(r&&l)return tY({column:r,mapKey:m,term:t,propertyType:o,isNegatedField:a,exactMatch:!0});if(d&&"string"===o){let e=N.default.format("has(??, concat(?, ?, ?))",[d.columnName,d.mapKey,d.separator,t]);if(""===t){let t=N.default.format("NOT mapContains(??, ?)",[d.mapColumn,d.mapKey]);return a?`(NOT ${e} AND ${N.default.format("mapContains(??, ?)",[d.mapColumn,d.mapKey])})`:`(${e} OR ${t})`}return`(${a?"NOT ":""}${e})`}let p=c&&!a?` AND ${c}`:"";if("bool"===o){let e=`${t}`.trim().toLowerCase();return N.default.format(`(? ${a?"!":""}= ?${p})`,[tW(r,u),"true"===e?1:"false"===e?0:parseInt(e)])}return"number"===o?N.default.format(`(${r} ${a?"!":""}= CAST(?, 'Float64')${p})`,[t]):"json"===o?N.default.format(`(${f([i,"optionalAccess",e=>e.string])} ${a?"!":""}= ?${p})`,[t]):N.default.format(`(${r} ${a?"!":""}= ?${p})`,[t])}async isNotNull(e,t,a){let{column:n,columnJSON:r,found:i,propertyType:s,mapKeyIndexExpression:o,isArray:l,arrayMapKeyExpression:u}=await this.getColumnForField(e,a);if(!i)return this.NOT_FOUND_QUERY;let c=o&&!t?` AND ${o}`:"";if(n&&l&&("map"===s||"json"===s)&&u){let e="map"===s?N.default.format("el[?]",[u]):N.default.format("el.??",[u]);return N.default.format(`${t?"NOT ":""}arrayExists(el -> notEmpty(toString(${e})) = 1, ?)`,[N.default.raw(n)])}return"json"!==s||l?`notEmpty(${n}) ${t?"!":""}= 1${c}`:`notEmpty(${f([r,"optionalAccess",e=>e.string])}) ${t?"!":""}= 1${c}`}async gte(e,t,a){let{column:n,columnJSON:r,found:i,propertyType:s,isArray:o,mapKeyIndexExpression:l}=await this.getColumnForField(e,a);if(!i)return this.NOT_FOUND_QUERY;if(o)throw Error(">= comparison is not supported for Array-type fields");let u=l?` AND ${l}`:"";return"json"===s?N.default.format(`(${f([r,"optionalAccess",e=>e.number])} >= ?${u})`,[t]):N.default.format(`(${n} >= ?${u})`,[t])}async lte(e,t,a){let{column:n,columnJSON:r,found:i,propertyType:s,isArray:o,mapKeyIndexExpression:l}=await this.getColumnForField(e,a);if(!i)return this.NOT_FOUND_QUERY;if(o)throw Error("<= comparison is not supported for Array-type fields");let u=l?` AND ${l}`:"";return"json"===s?N.default.format(`(${f([r,"optionalAccess",e=>e.number])} <= ?${u})`,[t]):N.default.format(`(${n} <= ?${u})`,[t])}async lt(e,t,a){let{column:n,columnJSON:r,found:i,propertyType:s,isArray:o,mapKeyIndexExpression:l}=await this.getColumnForField(e,a);if(!i)return this.NOT_FOUND_QUERY;if(o)throw Error("< comparison is not supported for Array-type fields");let u=l?` AND ${l}`:"";return"json"===s?N.default.format(`(${f([r,"optionalAccess",e=>e.number])} < ?${u})`,[t]):N.default.format(`(${n} < ?${u})`,[t])}async gt(e,t,a){let{column:n,columnJSON:r,found:i,propertyType:s,isArray:o,mapKeyIndexExpression:l}=await this.getColumnForField(e,a);if(!i)return this.NOT_FOUND_QUERY;if(o)throw Error("> comparison is not supported for Array-type fields");let u=l?` AND ${l}`:"";return"json"===s?N.default.format(`(${f([r,"optionalAccess",e=>e.number])} > ?${u})`,[t]):N.default.format(`(${n} > ?${u})`,[t])}attemptToParseNumber(e){let t=Number(e);return Number.isNaN(t)?e:t}tokenizeTerm(e){return e.split(/[ -/:-@[-`{-~\t\n\r]+/).filter(e=>e.length>0)}termHasSeparators(e){return null!=e.match(/[ -/:-@[-`{-~\t\n\r]+/)}async range(e,t,a,n,r,i="both"){let{column:s,found:o,mapKeyIndexExpression:l,isArray:u}=await this.getColumnForField(e,r);if(!o)return this.NOT_FOUND_QUERY;if(u)throw Error("range comparison is not supported for Array-type fields");let c=l&&!n?` AND ${l}`:"",m="*"===t,d="*"===a;if(m&&d)return this.isNotNull(e,n,r);if(!m&&!d&&"both"===i)return N.default.format(`(${s} ${n?"NOT ":""}BETWEEN ? AND ?${c})`,[this.attemptToParseNumber(t),this.attemptToParseNumber(a)]);let p=[];return m||p.push(N.default.format(`${s} ${"both"===i||"left"===i?">=":">"} ?`,[this.attemptToParseNumber(t)])),d||p.push(N.default.format(`${s} ${"both"===i||"right"===i?"<=":"<"} ?`,[this.attemptToParseNumber(a)])),n?`(NOT (${p.join(" AND ")})${c})`:`(${p.join(" AND ")}${c})`}};function tY({column:e,mapKey:t,term:a,isNegatedField:n,propertyType:r,exactMatch:i}){let s=n?"NOT ":"";if("number"===r)return N.default.format(`${s}has(?, CAST(?, 'Float64'))`,[N.default.raw(e),a]);if("bool"===r){let t=`${a}`.trim().toLowerCase(),n="true"===t?1:"false"===t?0:a;return N.default.format(`${s}has(?, ?)`,[N.default.raw(e),n])}if("map"===r){if(!t)throw Error(`Map key expression is required for searching column ${e}. Try '${e}.key:value'`);return i?N.default.format(`${s}arrayExists(el -> el[?] = ?, ?)`,[t,a,N.default.raw(e)]):N.default.format(`${s}arrayExists(el -> el[?] ILIKE ?, ?)`,[t,`%${tU(a)}%`,N.default.raw(e)])}if("json"===r){if(!t)throw Error(`Map key expression is required for searching column ${e}. Try '${e}.key:value'`);return i?N.default.format(`${s}arrayExists(el -> toString(el.??) = ?, ?)`,[t,a,N.default.raw(e)]):N.default.format(`${s}arrayExists(el -> toString(el.??) ILIKE ?, ?)`,[t,`%${tU(a)}%`,N.default.raw(e)])}let o="string"===r?"el":N.default.format("toString(el)",[N.default.raw(e)]);return i&&"string"===r?N.default.format(`${s}has(?, ?)`,[N.default.raw(e),a]):i?N.default.format(`${s}arrayExists(el -> ${o} = ?, ?)`,[a,N.default.raw(e)]):N.default.format(`${s}arrayExists(el -> ${o} ILIKE ?, ?)`,[`%${tU(a)}%`,N.default.raw(e)])}function tZ(e){let t=[],a=0;for(;a"===e[a+1]){t.push("->"),a+=2;continue}if(":"===e[a]&&":"===e[a+1]){t.push("::"),a+=2;continue}if("(),.".includes(e[a])){t.push(e[a]),a++;continue}if("'"===e[a]||'"'===e[a]){let n=e[a],r="";for(a++;a""),a+=2):(r+=e[a],a++);a++,t.push(`'${r}'`);continue}if(/\w/.test(e[a])){let n="";for(;a!(a>=e.length)&&e[a]===t&&(a++,!0),r=()=>e[a++];if(!n("arrayMap")||!n("("))return;if("("===e[a]){if(a++,!(t=r())||!n(")"))return}else if(!(t=r()))return;if(!n("->")||!n("concat")||!n("(")||!n(t)||!n(".")||!n("1")||!n(","))return;let i=r();if(!i||!i.startsWith("'")||!n(","))return;let s=i.slice(1,-1);if(!(!n(t)||!n(".")||!n("2")||!n(")")||!n(",")))return{lambdaVar:t,separator:s,pos:a}}function tX(e){let t=tZ(e);if(!t)return;let a=tJ(t);if(!a)return;let n=a.pos,r=e=>!(n>=t.length)&&t[n]===e&&(n++,!0),i=t[n++];if(i&&!(!r("::")||!r("Array")||!r("(")||!r("Tuple")||!r("(")||!r("String")||!r(",")||!r("String")||!r(")")||!r(")")||!r(")"))&&n===t.length)return{mapColumn:i,separator:a.separator}}function t0(e){let t=tZ(e);if(!t)return;let a=tJ(t);if(!a)return;let n=a.pos,r=e=>!(n>=t.length)&&t[n]===e&&(n++,!0),i=()=>t[n++];if(!r("CAST")||!r("("))return;let s=i();if(!s||!r(","))return;let o=i();if(!(!o||!o.startsWith("'")||"Array(Tuple(String,String))"!==o.slice(1,-1).replace(/\s+/g,""))&&!(!r(")")||!r(")"))&&n===t.length)return{mapColumn:s,separator:a.separator}}var t1=[tX,t0];function t2(e,t,a){return!(e.type!==t||"text"===t&&f([a,"optionalAccess",e=>e.tokenizer])&&f([nS,"call",t=>t(e),"optionalAccess",e=>e.type])!==a.tokenizer)}async function t6({metadata:e,databaseName:t,tableName:a,connectionId:n}){let r=new Map;try{let[i,s,o,l]=await Promise.all([e.getServerVersion({connectionId:n}),e.getColumns({databaseName:t,tableName:a,connectionId:n}),e.getSkipIndices({databaseName:t,tableName:a,connectionId:n}).catch(()=>[]),e.isClickHouseCloud({connectionId:n}).catch(()=>!1)]);return function(e,t,a,n,r){let i=h.d.call(void 0,e,n),s=h.c.call(void 0,e,[26,5,0,0]);for(let e of t.filter(e=>(i&&"ALIAS"===e.default_type||"MATERIALIZED"===e.default_type)&&e.default_expression)){let t;for(let a of t1)if(t=a(e.default_expression))break;if(!t)continue;let n=tB(e.name),i=tB(e.default_expression),o=a.find(e=>{if(!t2(e,"text",{tokenizer:"array"})||"array"!==f([nS,"call",t=>t(e),"optionalAccess",e=>e.type]))return!1;let t=tB(e.expression);return t===n||t===i});if(o){let a=r.get(t.mapColumn);a||(a={},r.set(t.mapColumn,a)),a.kv={columnName:e.name,indexName:o.name,separator:t.separator,useHasAny:s,mapColumn:t.mapColumn}}}}(i,s,o,l,r),function(e,t,a){let n="mapKeys(";for(let r of t.filter(e=>e.expression.startsWith(n)&&t2(e,"text",{tokenizer:"array"}))){let t=r.expression.slice(n.length,-1),i=e.find(e=>e.name===t&&"Map(LowCardinality(String), String)"===e.type);if(i){let e=a.get(t);e||(e={},a.set(t,e)),e.key={indexName:r.name,mapColumn:i.name}}}}(s,o,r),r}catch(e){console.warn("Error building KV items lookup:",e)}return r}var t4=class extends tG{constructor({metadata:e,databaseName:t,tableName:a,connectionId:n,implicitColumnExpression:r,bodyExpression:i,useTextIndexForImplicitColumn:s}){super(),this.metadata=e,this.databaseName=t,this.tableName=a,this.implicitColumnExpression=r,this.bodyExpression=i,this.connectionId=n,this.useTextIndexForImplicitColumn=d(s,()=>"auto"),this.skipIndicesPromise=this.metadata.getSkipIndices({databaseName:t,tableName:a,connectionId:n}).catch(e=>(console.error("Error fetching skip indices:",e),[])),this.enableTextIndexPromise=this.metadata.getSetting({settingName:"enable_full_text_index",connectionId:n}).then(e=>"1"===e).catch(e=>(console.warn("Error fetching enable_full_text_index setting:",e),!1)),this.textIndexInfoLookupPromise=this.buildTextIndexInfoLookup()}buildTextIndexInfoLookup(){return t6({metadata:this.metadata,databaseName:this.databaseName,tableName:this.tableName,connectionId:this.connectionId})}async fieldSearch(e,t,a,n,r,i){let s=e===tP,{column:o,columnJSON:l,found:u,propertyType:c,isArray:m,mapKey:d,mapKeyIndexExpression:p,arrayMapKeyExpression:g}=await this.getColumnForField(e,i);if(!u)return this.NOT_FOUND_QUERY;let h=!p||a||s&&i.isNegatedAndParenthesized?"":` AND ${p}`;if(m)return tY({column:o,mapKey:g,term:t,propertyType:c,isNegatedField:a,exactMatch:!1});if("bool"===c){let e=`${t}`.trim().toLowerCase();return N.default.format(`(? ${a?"!":""}= ?${h})`,[tW(o,d),"true"===e?1:"false"===e?0:parseInt(e)])}if("number"===c)return N.default.format(`(? ${a?"!":""}= CAST(?, 'Float64')${h})`,[tW(o,d),t]);if("json"===c)return N.default.format(`(${f([l,"optionalAccess",e=>e.string])} ${a?"NOT ":""}ILIKE ?${h})`,[`%${tU(t)}%`]);if(0===t.length)return"(1=1)";if(s){let e=!i.implicitColumnExpression&&!i.bodyExpression;if(n||r)return N.default.format(`(lower(?) ${a?"NOT ":""}LIKE lower(?))`,[N.default.raw(o),`${n?"%":""}${tU(t)}${r?"%":""}`]);if(e){let e=!1,n=!1;if("enabled"===this.useTextIndexForImplicitColumn){e=!0;let t=await this.findTextIndex(o);t&&(n=t.indexHasLower)}else if("auto"===this.useTextIndexForImplicitColumn){let t=await this.enableTextIndexPromise?await this.findTextIndex(o):void 0;t&&"splitByNonAlpha"===f([nS,"call",e=>e(t.index),"optionalAccess",e=>e.type])&&(e=!0,n=t.indexHasLower)}if(e){let e=this.tokenizeTerm(t),r=this.termHasSeparators(t),i=n?`lower(${o})`:o,s=E.chunk.call(void 0,e,50),l=s.map(e=>n?N.default.format("hasAllTokens(?, lower(?))",[N.default.raw(i),e.join(" ")]):N.default.format("hasAllTokens(?, ?)",[N.default.raw(i),e.join(" ")]));return r||s.length>1?`(${a?"NOT (":""}${[...l,N.default.format("(lower(?) LIKE lower(?))",[N.default.raw(o),`%${tU(t)}%`])].join(" AND ")}${a?")":""})`:`(${a?"NOT ":""}${l.join(" AND ")})`}let r=this.termHasSeparators(t),i=await this.findBloomFilterTokensIndex(o);if(i.found){let e=this.isLowerExpression(i.indexExpression)?N.default.format("tokens(lower(?))",[t]):N.default.format("tokens(?)",[t]);return r?`(${a?"NOT (":""}${[`hasAll(${i.indexExpression}, ${e})`,N.default.format("(lower(?) LIKE lower(?))",[N.default.raw(o),`%${tU(t)}%`])].join(" AND ")}${a?")":""})`:`(${a?"NOT ":""}hasAll(${i.indexExpression}, ${e}))`}if(!r)return N.default.format(`(${a?"NOT ":""}hasToken(lower(?), lower(?)))`,[N.default.raw(o),t]);{let e=this.tokenizeTerm(t);return`(${a?"NOT (":""}${[...e.map(e=>N.default.format("hasToken(lower(?), lower(?))",[N.default.raw(o),e])),N.default.format("(lower(?) LIKE lower(?))",[N.default.raw(o),`%${tU(t)}%`])].join(" AND ")}${a?")":""})`}}}return N.default.format(`(${o} ${a?"NOT ":""}? ?${h})`,[N.default.raw("ILIKE"),`%${tU(t)}%`])}async buildColumnExpressionFromField(e){let t=await this.metadata.getColumn({databaseName:this.databaseName,tableName:this.tableName,column:e,connectionId:this.connectionId});if(t){let a={found:!0,columnType:t.type,columnExpression:t.name},n;try{n=await this.metadata.getMaterializedColumnsLookupTable({databaseName:this.databaseName,tableName:this.tableName,connectionId:this.connectionId})}catch(e){console.debug("Error in getMaterializedColumnsLookupTable",e),n=new Map}let r=(()=>{for(let[t,a]of n.entries())if(a===e)return{materializedTarget:t,materializedName:a}})();if(r){let e=tV(r.materializedTarget);e&&(a.mapKeyIndexExpression=`indexHint(${e})`)}return a}let a=await tz({field:e,metadata:this.metadata,databaseName:this.databaseName,tableName:this.tableName,connectionId:this.connectionId});if(a){let t=a.name.split("."),n=e.split(".").slice(t.length).join(".");if(a.type.startsWith("Map")){let e=f([a,"access",e=>e.type,"access",e=>e.match,"call",e=>e(/,\s+(\w+)\)$/),"optionalAccess",e=>e[1]]),t=await g([await this.textIndexInfoLookupPromise,"optionalAccess",async e=>e.get,"call",async e=>e(a.name)]);return{found:!0,columnExpression:N.default.format("??[?]",[a.name,n]),mapKeyIndexExpression:`indexHint(${tV(`${a.name}['${n}']`)})`,columnType:d(e,()=>"Unknown"),mapKey:n,...t?{textIndexInfo:{kv:t.kv,key:t.key}}:{}}}if(a.type.startsWith("JSON"))return{found:!0,columnExpression:"",columnExpressionJSON:{string:N.default.format("toString(??)",[e]),number:N.default.format("dynamicType(??) in (?) and ??",[e,tK,e])},columnType:"JSON"};if("String"===a.type){let e=n.split(".");return{found:!0,columnExpression:N.default.format(`JSONExtractString(??, ${Array(e.length).fill("?").join(",")})`,[a.name,...e]),columnType:"String"}}if(a.type.startsWith("Array"))return{found:!0,columnType:a.type,columnExpression:a.name,arrayMapKeyExpression:n};throw Error("Unsupported column type for prefix match")}return{found:!0,columnExpression:e,columnType:"Unknown"}}isLowerExpression(e){return/\blower\s*\(/i.test(e)}async findTextIndex(e){let t=await this.skipIndicesPromise;if(!t||0===t.length)return;let a=t.find(t=>"text"===t.type&&this.indexCoversColumn(t.expression,e));if(!a)return;let n=tB(a.expression)!==tB(e)&&this.isLowerExpression(a.expression);return{index:a,indexHasLower:n}}async findBloomFilterTokensIndex(e){try{let t=await this.skipIndicesPromise;if(!t||0===t.length)return{found:!1};for(let a of t.filter(e=>"bloom_filter"===e.type)){let t=tf.parseTokensExpression(a.expression);if(t.hasTokens&&this.indexCoversColumn(t.innerExpression,e))return{found:!0,indexExpression:a.expression}}return{found:!1}}catch(e){return console.warn("Failed to fetch skip indices:",e),{found:!1}}}indexCoversColumn(e,t){let a=tB(e),n=tB(t);if(a===n)return!0;let r=a.match(/\w+/g),i=f([n,"access",e=>e.match,"call",e=>e(/\w+/),"optionalAccess",e=>e[0]]);return!!(i&&r&&r.includes(i))}async getColumnForField(e,t){let a=t.implicitColumnExpression||this.implicitColumnExpression||t.bodyExpression||this.bodyExpression;if(e===tP&&!a)throw Error("Can not search bare text without an implicit column set.");let n=e===tP?a:e,r=!t.implicitColumnExpression&&!t.bodyExpression;if(e===tP&&r){let e=a4(n);return{column:e.length>1?`concatWithSeparator(';',${e.join(",")})`:n,columnJSON:void 0,propertyType:"string",found:!0}}let i=await this.buildColumnExpressionFromField(n),{type:s,isArray:o}=tv(i.columnType);return{column:i.columnExpression,columnJSON:f([i,"optionalAccess",e=>e.columnExpressionJSON]),propertyType:d(s,()=>void 0),isArray:o,found:i.found,mapKey:i.mapKey,mapKeyIndexExpression:i.mapKeyIndexExpression,arrayMapKeyExpression:o?i.arrayMapKeyExpression:void 0,kvItemsExpression:f([i,"access",e=>e.textIndexInfo,"optionalAccess",e=>e.kv])&&i.mapKey?{...i.textIndexInfo.kv,mapKey:i.mapKey}:void 0}}};async function t3(e,t,a){let n="-"===e.field[0]?e.field.slice(1):e.field,r="-"===e.field[0],i=e.field===tP;if(tj(e)){let s=tF(e.term);if(i&&"-"===e.prefix&&(r=!0),i||"-"!==e.prefix||(s=e.prefix+tF(e.term)),e.quoted&&!i)return t.eq(n,s,r,a);if(!e.quoted&&"*"===s)return t.isNotNull(n,r,a);if(!e.quoted&&">="===s.substring(0,2))return r?t.lt(n,s.slice(2),a):t.gte(n,s.slice(2),a);if(!e.quoted&&"<="===s.substring(0,2))return r?t.gt(n,s.slice(2),a):t.lte(n,s.slice(2),a);if(!e.quoted&&">"===s[0])return r?t.lte(n,s.slice(1),a):t.gt(n,s.slice(1),a);if(!e.quoted&&"<"===s[0])return r?t.gte(n,s.slice(1),a):t.lt(n,s.slice(1),a);let o=!1,l=!1;return e.quoted||"*"!==s[0]||(o=!0,s=s.slice(1)),e.quoted||"*"!==s[s.length-1]||(l=!0,s=s.slice(0,-1)),t.fieldSearch(n,s,r,o,l,a)}if(tH(e))return t.range(n,e.term_min,e.term_max,r,a,e.inclusive);throw Error(`Unexpected Node type. ${e}`)}function t5(e,t){if(!t.field||!t.parenthesized||t.field===tP)return e;{let a=f([t,"access",e=>e.field,"optionalAccess",e=>e.startsWith,"call",e=>e("-")])?t.field.slice(1):t.field;return{...e,implicitColumnExpression:a,...t9(t)?{isNegatedAndParenthesized:!0}:{}}}}function t9(e){return e.parenthesized&&f([e,"access",e=>e.field,"optionalAccess",e=>e.startsWith,"call",e=>e("-")])}async function t7(e,t,a){if(tj(e)||tH(e))return await t3(e,t,a);if("right"in e&&null!=e.right){let n=t.operator(e.operator,a),r=e.parenthesized,i=t5(a,e);return`${t9(e)?"NOT ":""}${r?"(":""}${"start"in e&&e.start?`${e.start} `:""}${await t7(e.left,t,i)} ${n} ${await t7(e.right,t,i)}${r?")":""}`}if("left"in e&&null!=e.left&&!("right"in e&&null!=e.right)){let n=e.parenthesized,r=t5(a,e);return`${t9(e)?"NOT ":""}${n?"(":""}${null!=e.start?`${e.start} `:""}${await t7(e.left,t,r)}${n?")":""}`}return""}async function t8(e,t){return await t7(e,t,{})}var ae=class{constructor(e,t){this.conditions=[],this.searchQ=e,this.serializer=t}setSerializer(e){return this.serializer=e,this}getSerializer(){return this.serializer}async genSearchQuery(){if(!this.searchQ)return"";let e=tD(this.searchQ);return await t8(e,this.serializer)}and(e){return e&&e.trim()&&this.conditions.push(`(${e})`),this}async build(){let e=await this.genSearchQuery();return this.searchQ&&this.and(e),this.conditions.join(" AND ")}};async function at({query:e,metadata:t,tableConnection:a}){try{let{tableName:n,databaseName:r,connectionId:i}=a,s=tD(e);if(s&&n&&r&&i){let e=new tQ({metadata:t,tableName:n,databaseName:r,connectionId:i});return await t7(s,e,{})}}catch(t){console.warn("Parse failure",e,t)}return`Message containing ${e}`}var aa=["sqlstring","regex","csv","lucene"],an=e=>e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&"),ar=e=>e.replace(/\\/g,"\\\\").replace(/"/g,'\\"');function ai(e,t){switch(t){case"sqlstring":return 0===e.length?"NULL":e.map(e=>`'${a2(e)}'`).join(", ");case"regex":{if(0===e.length)return".*";let t=e.map(an);return 1===t.length?t[0]:`(${t.join("|")})`}case"csv":return e.join(",");case"lucene":return 0===e.length?'("")':`(${e.map(e=>`"${ar(e)}"`).join(" OR ")})`;default:throw Error(`Unknown variable format '${t}'`)}}var as=["filter","conditionalAll"],ao=e=>as.includes(e),al=RegExp(`^${$.Xa}`),au=RegExp(`^(${$.Xa})(?::([a-zA-Z][a-zA-Z0-9_]*))?$`),ac=["--","#"];function am(e,t){if(ac.some(a=>e.startsWith(a,t))){let a=e.indexOf(` +`,t);return a<0?e.length:a}if(e.startsWith("/*",t)){let a=e.indexOf("*/",t+2);return a<0?e.length:a+2}return t}var ad=e=>void 0!==e&&/[A-Za-z0-9_]/.test(e);function ap(e,t){let a=0,n=!1,r=!1;for(let i=t;it.length-e.length),r=[],i="",s=()=>{i.length>0&&(r.push({kind:"text",text:i}),i="")},o=!1,l=!1,u=0;for(;uu){i+=e.slice(u,t),u=t;continue}}if("$"!==e.charAt(u)){let t=e.charAt(u);'"'!==t||o||a6(e,u)?"'"!==t||l||a6(e,u)||(o=!o):l=!l,i+=t,u++;continue}let t=o||l;if(e.startsWith("$__",u)){let o=u+3,l=n.find(t=>e.startsWith(t,o)&&!ad(e.charAt(o+t.length)||void 0));if(null==l){i+="$__",u=o;continue}let c=o+l.length;if("("!==e.charAt(c)){s(),r.push({kind:"macro",name:l,args:[],raw:e.slice(u,c),inStringLiteral:t}),u=c;continue}let m=ap(e,c);if(m<0){if("throw"===a)throw new S.a;i+=e.slice(u,c),u=c;continue}s(),r.push({kind:"macro",name:l,args:a4(e.slice(c+1,m)),raw:e.slice(u,m+1),inStringLiteral:t}),u=m+1;continue}if("{"===e.charAt(u+1)){let a=e.indexOf("}",u+2),n=a>0?e.slice(u+2,a).match(au):null;if(n){s(),r.push({kind:"braced",name:n[1],format:n[2],raw:e.slice(u,a+1),inStringLiteral:t}),u=a+1;continue}i+="$",u++;continue}let c=e.slice(u+1).match(al);if(c){s(),r.push({kind:"bare",name:c[0],raw:`$${c[0]}`,inStringLiteral:t}),u+=1+c[0].length;continue}i+="$",u++}return s(),r}function ag(e,t){return af(e,t.macroNames).map(e=>{if("text"===e.kind)return e.text;if("macro"!==e.kind)return t.expandReference(e);let a=function(e,t){if(ao(e))switch(e){case"filter":return t-1;case"conditionalAll":return 1;default:throw Error("Unexpected macro name in variableNameArgIndex")}}(e.name,e.args.length),n=e.args.map((e,n)=>n===a?e:ag(e,t));return t.expandMacro({...e,args:n})}).join("")}var ah=new Map(Object.entries({sql:{defaultFormat:"sqlstring",escapeRegexForLiteral:e=>a2(e)},lucene:{defaultFormat:"lucene",disableMacros:!0},promql:{defaultFormat:"regex",disableMacros:!0,escapeRegexForLiteral:e=>e.replace(/\\/g,"\\\\").replace(/"/g,'\\"')}}));function ay(e){let t=ah.get(e);if(!t)throw Error(`Unknown template language '${e}'.`);return t}var ab=e=>`(1=1 /** no values selected for variable '${e}' */)`;function a_(e){let t=e.trim(),a=t.startsWith("$")?t.slice(1):t;return $.Ya.test(a)?a:void 0}function a$(e,t){let a=t[t.length-1].trim(),n=a.startsWith("$")?a_(a):void 0;if(null!=n)return n;let r=$.Ya.test(a)?a:"name",i="conditionalAll"===e?`$__conditionalAll(, $${r})`:1===t.length?`$__filter($${r})`:`$__filter(, $${r})`;throw new(0,S.b)(e,`Macro '$__${e}' requires its variable argument to be written as a reference, as in ${i} \u2014 got '${a}'.`)}function aS(e,t,a){let n=e.variables.find(e=>e.name===a);if(!n){let n=e.variables.map(e=>e.name);throw new(0,S.c)(t,a,n,`Macro '$__${t}' references unknown variable '${a}'. Available variables: ${n.length>0?n.join(", "):"(none)"}.`)}return n}function aA(e,t){if("macro"===e.kind)return"filter"===e.name?function(e,t){if(e.length<1||e.length>2)throw new(0,S.b)("filter",`Macro 'filter' expects 1-2 argument(s), but got ${e.length}`);let a=a$("filter",e),n=aS(t,"filter",a),r;if(2===e.length)r=e[0];else{if(!n.expression)throw new(0,S.b)("filter",`Macro '$__filter($${a})' requires the variable's filter expression, which is not available \u2014 pass it explicitly, e.g. $__filter(, $${a}).`);r=`toString(${n.expression})`}return 0===n.values.length?ab(a):`(${r} IN (${ai(n.values,"sqlstring")}))`}(e.args,t):function(e,t){if(2!==e.length)throw new(0,S.b)("conditionalAll",`Macro 'conditionalAll' expects 2 argument(s), but got ${e.length}`);let a=a$("conditionalAll",e);return 0===aS(t,"conditionalAll",a).values.length?ab(a):`(${e[0]})`}(e.args,t);let a=t.variables.find(t=>t.name===e.name);if(!a)return e.raw;let n="braced"===e.kind?e.format:void 0;if(null!=n&&!aa.includes(n))throw Error(`Unknown variable format '${n}' in '${e.raw}'. Expected one of: ${aa.join(", ")}.`);let r=ay(t.inputLanguage),i=d(n,()=>r.defaultFormat),s=ai(a.values,i);return"regex"===i&&r.escapeRegexForLiteral?r.escapeRegexForLiteral(s):s}function av(e,t){return"text"===e.kind?e.text:"macro"===e.kind?e.raw:aA(e,t)}function aE(e,t){if("text"===e.kind||"macro"===e.kind)return;let a="braced"===e.kind?e.format:void 0,n=ay(t.inputLanguage);if("lucene"===d(a,()=>n.defaultFormat))return f([t,"access",e=>e.variables,"access",e=>e.find,"call",t=>t(t=>t.name===e.name),"optionalAccess",e=>e.values])}function ax(e,t){return"lucene"===t.inputLanguage?function(e,t){let a;if(!e.some(e=>null!=aE(e,t)))return e.map(e=>av(e,t)).join("");let n="",r=[];for(let t of e){if("text"===t.kind){n+=tO(t.text);continue}let e=`__hdx_sentinel_${r.length}`;r.push({token:t,sentinel:e,offset:n.length}),n+=e}try{a=w.default.parse(n)}catch(a){return e.map(e=>av(e,t)).join("")}let i=new Map;!function e(t,a){if(null!=t){if("termLocation"in t)return void a.set(t.termLocation.start.offset+ +!!t.quoted,t);"left"in t&&(e(t.left,a),"right"in t&&e(t.right,a))}}(a,i);let s="",o=0;for(let e of r){let a=function(e,t,a,n,r){let i=aE(e.token,n);if(null==i)return;let s=a.get(e.offset);if(null==s||s.term!==e.sentinel||!s.quoted||s.field===tP||null==s.fieldLocation)return;let o=s.fieldLocation.start.offset;if(o`${c}:"${ar(e)}"`).join(" OR ")})`}}(e,n,i,t,o);a?(s+=tL(n.slice(o,a.start))+a.text,o=a.end):(s+=tL(n.slice(o,e.offset))+av(e.token,t),o=e.offset+e.sentinel.length)}return s+tL(n.slice(o))}(af(e,as,{onMalformed:"skip"}),t):ay(t.inputLanguage).disableMacros?af(e,as,{onMalformed:"skip"}).map(e=>av(e,t)).join(""):ag(e,{macroNames:as,expandMacro:e=>aA(e,t),expandReference:e=>aA(e,t)})}var aw=(e,t)=>"string"==typeof e?t(e,"sql"):e.map(e=>({...e,valueExpression:t(e.valueExpression,d(e.valueExpressionLanguage,()=>"sql")),...e.aggCondition?{aggCondition:t(e.aggCondition,d(e.aggConditionLanguage,()=>"lucene"))}:{}}));function aN(e,t){let a;return{...e,select:aw(e.select,t),...e.where?{where:t(e.where,d(e.whereLanguage,()=>"sql"))}:{},...e.having?{having:t(e.having,d(e.havingLanguage,()=>"sql"))}:{},...null!=e.groupBy?{groupBy:aw(e.groupBy,t)}:{},...null!=e.orderBy?{orderBy:(a=e.orderBy,"string"==typeof a?t(a,"sql"):a.map(e=>({...e,valueExpression:t(e.valueExpression,"sql")})))}:{}}}function aT(e){let{variables:t}=e;return null==t?e:{...aN(e,(e,a)=>ax(e,{variables:t,inputLanguage:a})),variables:void 0}}function aI(e){let t=[],a=(e,a,n,r)=>{let i=a_(a);if(null!=i)return t.push({name:i,kind:"macro",inStringLiteral:n,guardedBy:r,raw:`$__${e}`}),i},n=(e,r)=>{for(let i of af(e,as,{onMalformed:"skip"}))if("text"!==i.kind){if("macro"!==i.kind){t.push({name:i.name,kind:i.kind,format:"braced"===i.kind?i.format:void 0,inStringLiteral:i.inStringLiteral,guardedBy:r,raw:i.raw});continue}if(ao(i.name))switch(i.name){case"filter":{let[e,t]=i.args;null!=t?n(e,d(a("filter",t,i.inStringLiteral,r),()=>r)):null!=e&&a("filter",e,i.inStringLiteral,r);break}case"conditionalAll":{let[e,t]=i.args,s=null!=t?a("conditionalAll",t,i.inStringLiteral,r):void 0;null!=e&&n(e,d(s,()=>r));break}default:i.name}}};return n(e),t}function ak(e){return[...new Set(e.map(e=>e.raw))].join(", ")}function aC(e,t,{subject:a="SQL",language:n="sql"}={}){let r=[],i=[],s=aI(e);if(null!=t&&aq(e))try{ax(e,{variables:t,inputLanguage:n})}catch(e){e instanceof S.b&&r.push(e.message)}if(0===s.length)return{errors:r,warnings:i};let o=s.filter(e=>"macro"===e.kind),l=s.filter(e=>"macro"!==e.kind);if(null==t)return o.length>0&&r.push(`${a} uses ${ak(o)}, but no variables are available here.`),l.length>0&&i.push(`${a} references ${ak(l)}, but no variables are available here.`),{errors:r,warnings:i};let u=new Set(t.map(e=>e.name)),c=t.length>0?t.map(e=>e.name).join(", "):"(none)",m=l.filter(e=>!u.has(e.name));m.length>0&&i.push(`${a} references unknown variable ${ak(m)}. Available variables: ${c}.`);let p=ay(n);if(p.disableMacros&&o.length>0){let[{name:e}]=o;i.push("promql"===n?`${ak(o)} has no meaning in a PromQL expression \u2014 it is left as written and sent to Prometheus verbatim. Reference the variable directly, as in {