diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml
index ae399fa..d509eae 100644
--- a/.github/workflows/publish.yml
+++ b/.github/workflows/publish.yml
@@ -7,14 +7,12 @@ on:
pull_request:
branches: ["main"] # Run tests on PRs
-permissions:
- contents: read
- id-token: write
-
jobs:
test:
name: "Test (Python ${{ matrix.python-version }})"
runs-on: ubuntu-latest
+ permissions:
+ contents: write
strategy:
matrix:
python-version: ["3.12", "3.13", "3.14"]
diff --git a/src/trendify/viewer/templates/static/js/main.js b/src/trendify/viewer/templates/static/js/main.js
index 308db61..2fbe734 100644
--- a/src/trendify/viewer/templates/static/js/main.js
+++ b/src/trendify/viewer/templates/static/js/main.js
@@ -1,2 +1,2 @@
-"use strict";(()=>{var x="trendify:theme";function me(){return window.matchMedia("(prefers-color-scheme: dark)").matches}function be(){let e=localStorage.getItem(x);return e==="light"||e==="dark"?e:"system"}function ye(e){let t=e==="dark"||e==="system"&&me();document.documentElement.classList.toggle("dark",t),window.dispatchEvent(new Event("trendify:theme-changed"))}function Te(e){e==="system"?localStorage.removeItem(x):localStorage.setItem(x,e),ye(e)}function N(){return{theme:be(),setTheme(e){this.theme=e,Te(e)}}}function M(){return{isFullscreen:!1,init(){document.addEventListener("fullscreenchange",()=>{this.isFullscreen=document.fullscreenElement!==null,window.dispatchEvent(new Event("trendify:layout-changed"))})},toggle(){document.fullscreenElement?document.exitFullscreen():document.documentElement.requestFullscreen()}}}function O({storageKey:e,elementId:t,defaultWidth:o,minWidth:n,maxWidth:i}){let r=Number(localStorage.getItem(e));return{width:Number.isFinite(r)&&r>0?r:o,dragging:!1,startDrag(s){s.preventDefault(),this.dragging=!0;let a=s.clientX,c=this.width,g=f=>{let p=c+(f.clientX-a);this.width=Math.min(i,Math.max(n,p))},u=()=>{this.dragging=!1,localStorage.setItem(e,String(this.width)),window.removeEventListener("mousemove",g),window.removeEventListener("mouseup",u),window.dispatchEvent(new Event("trendify:layout-changed"))};window.addEventListener("mousemove",g),window.addEventListener("mouseup",u)},fitToContent(){let s=document.getElementById(t);if(!s)return;let a=s.style.width;s.style.width="max-content";let c=s.scrollWidth;s.style.width=a,this.width=Math.min(i,Math.max(n,c)),localStorage.setItem(e,String(this.width))}}}function d(e){let t=localStorage.getItem(e);if(t===null)return null;try{return JSON.parse(t)}catch{return null}}function h(e,t){localStorage.setItem(e,JSON.stringify(t))}var F="trendify:toasts",we=50;function ve(){return(d(F)??[]).map(t=>({...t,visible:!1}))}var C=ve(),xe=C.length>0?Math.max(...C.map(e=>e.id))+1:1,Ce={success:"M10 18a8 8 0 100-16 8 8 0 000 16zm3.857-9.809a.75.75 0 00-1.214-.882l-3.483 4.79-1.88-1.88a.75.75 0 10-1.06 1.061l2.5 2.5a.75.75 0 001.137-.089l4-5.5z",error:"M10 18a8 8 0 100-16 8 8 0 000 16zM8.28 7.22a.75.75 0 00-1.06 1.06L8.94 10l-1.72 1.72a.75.75 0 101.06 1.06L10 11.06l1.72 1.72a.75.75 0 101.06-1.06L11.06 10l1.72-1.72a.75.75 0 00-1.06-1.06L10 8.94 8.28 7.22z",warning:"M8.485 2.495c.673-1.167 2.357-1.167 3.03 0l6.28 10.875c.673 1.167-.17 2.625-1.516 2.625H3.72c-1.347 0-2.189-1.458-1.515-2.625L8.485 2.495zM10 5a.75.75 0 01.75.75v3.5a.75.75 0 01-1.5 0v-3.5A.75.75 0 0110 5zm0 9a1 1 0 100-2 1 1 0 000 2z",info:"M18 10a8 8 0 11-16 0 8 8 0 0116 0zm-7-4a1 1 0 11-2 0 1 1 0 012 0zM9 9a.75.75 0 000 1.5h.253a.25.25 0 01.244.304l-.459 2.066A1.75 1.75 0 0010.747 15H11a.75.75 0 000-1.5h-.253a.25.25 0 01-.244-.304l.459-2.066A1.75 1.75 0 009.253 9H9z"};function _(){return{toasts:C,now:Date.now(),persist(){h(F,this.toasts.slice(-we))},push(e,t="info",o=4e3){let n=xe++;this.toasts.push({id:n,message:e,kind:t,timestamp:Date.now(),read:!1,visible:!0}),this.persist(),o>0&&setTimeout(()=>{let i=this.toasts.find(r=>r.id===n);i&&(i.visible=!1)},o)},dismiss(e){let t=this.toasts.find(o=>o.id===e);t&&(t.visible=!1)},iconPath(e){return Ce[e]},clearAll(){this.toasts=[],this.persist()},markAllRead(){this.toasts.forEach(e=>{e.read=!0}),this.persist()},unreadCount(){return this.toasts.filter(e=>!e.read).length},timeAgo(e,t){let o=Math.floor((t-e)/1e3);if(o<5)return"just now";if(o<60)return`${o}s ago`;let n=Math.floor(o/60);return n<60?`${n}m ago`:`${Math.floor(n/60)}h ago`},startClock(){setInterval(()=>{this.now=Date.now()},15e3)}}}function I({pingUrl:e,intervalMs:t,timeoutMs:o,onConnectionChange:n,onDbChanged:i}){let r=!0,l=null;async function s(){let c=new AbortController,g=setTimeout(()=>c.abort(),o);try{let u=await fetch(e,{signal:c.signal,cache:"no-store"});if(!u.ok)throw new Error(`ping failed: ${u.status}`);let f=await u.json();r||(r=!0,n(!0)),f.db_updated_at!==null&&(l!==null&&f.db_updated_at!==l&&i(),l=f.db_updated_at)}catch{r&&(r=!1,n(!1))}finally{clearTimeout(g)}}let a=setInterval(s,t);return s(),()=>clearInterval(a)}async function K(e){if(navigator.clipboard?.writeText)try{return await navigator.clipboard.writeText(e),!0}catch{}try{let t=document.createElement("textarea");t.value=e,t.style.position="fixed",t.style.opacity="0",document.body.appendChild(t),t.focus(),t.select();let o=document.execCommand("copy");return document.body.removeChild(t),o}catch{return!1}}var E=new Map,S=new Map;async function b(e,t){let o=E.get(e);if(o!==void 0)return o;let n=S.get(e);if(n!==void 0)try{return await n}catch(r){if(m(r)&&t?.signal?.aborted!==!0)return b(e,t);throw r}let i=(async()=>{let r=await fetch(e,{signal:t?.signal,priority:t?.priority,headers:t?.headers});if(!r.ok)throw new Error(`Request failed: ${e} (${r.status})`);let l=await r.json();return E.set(e,l),l})();S.set(e,i);try{return await i}finally{S.delete(e)}}function y(e,t,o){let n=`/api/table?tag=${encodeURIComponent(JSON.stringify(e))}&view=${t}`;return b(n,o)}function T(e,t,o){let n=new URLSearchParams({tag:JSON.stringify(e),line_mode:t.lineMode??"lines+markers",interp:t.interp??"linear",hover:t.hover??"closest",show_spike:String(t.showSpike??!1)});return t.maxPoints!=null&&n.set("max_points",String(t.maxPoints)),b(`/api/plot?${n.toString()}`,o)}function z(e){return b("/api/tags",e)}function m(e){return e instanceof Error&&e.name==="AbortError"}window.addEventListener("trendify:db-changed",()=>E.clear());var V="tag",U="kinds",D="view",Se=["melted","pivot","stats"];function H(){let e=new URLSearchParams(window.location.search),t=e.get(V);if(!t)return null;try{let o=JSON.parse(t),n=e.get(U),i=n?n.split(","):[];return{tag:o,recordKinds:i}}catch{return null}}function J(e,t){let o=new URLSearchParams(window.location.search);o.set(V,JSON.stringify(e)),o.set(U,t.join(","));let n=`${window.location.pathname}?${o.toString()}`;window.history.replaceState(null,"",n)}function q(){let e=new URLSearchParams(window.location.search).get(D);return Se.includes(e??"")?e:null}function G(e){let t=new URLSearchParams(window.location.search);t.set(D,e);let o=`${window.location.pathname}?${t.toString()}`;window.history.replaceState(null,"",o)}var Ee=60,W="trendify:table-page-length",ke=10;function Pe(e,t){return`trendify:table-filters:${JSON.stringify(e)}:${t}`}function X(e){return`trendify:table-view:${JSON.stringify(e)}`}function k(e){return d(X(e))??"stats"}function Re(){let e=this,t=this.table().node();this.columns().every(function(){let o=this.header(),n=this.index(),i=o.closest("table"),r=new Set([t,i]);o.style.position="relative";let l=document.createElement("span");l.className="dt-col-resize-handle",l.addEventListener("mousedown",s=>{s.preventDefault(),s.stopPropagation();let a=s.clientX,c=o.offsetWidth,g=f=>{let p=Math.max(Ee,c+(f.clientX-a));o.style.width=`${p}px`;for(let pe of r){let v=pe?.querySelectorAll("colgroup col")[n];v&&(v.style.width=`${p}px`,v.style.minWidth=`${p}px`)}},u=()=>{window.removeEventListener("mousemove",g),window.removeEventListener("mouseup",u),e.draw(!1),document.addEventListener("click",f=>{f.stopPropagation(),f.preventDefault()},{capture:!0,once:!0})};window.addEventListener("mousemove",g),window.addEventListener("mouseup",u)}),o.appendChild(l)})}function Ae(e){let t=d(e)??{},o=this;o.columns().every(function(){let n=this,i=n.title(),r=t[i]??"",l=$(n.header());$("").attr("type","text").attr("placeholder","Filter").addClass("dt-column-filter").val(r).on("click",s=>s.stopPropagation()).on("keyup change clear",function(){let s=this.value;n.search()!==s&&n.search(s).draw();let a=d(e)??{};s?a[i]=s:delete a[i],h(e,a)}).appendTo(l),r&&n.search(r)}),o.draw()}function j(){return{view:"stats",unavailable:!1,loading:!1,requestId:0,currentAbortController:null,setView(e){this.view=e,G(e),this.selectedTag!==null&&h(X(this.selectedTag),e)},init(){let e=q();e&&(this.view=e),this.$watch("view",()=>this.render()),this.$watch("selectedTag",t=>{this.setView(t!==null?k(t):"stats")}),this.render()},async render(){let e=this.selectedTag;if(e===null)return;let t=++this.requestId;this.currentAbortController?.abort();let o=new AbortController;this.currentAbortController=o,this.loading=!0;let n;try{n=await y(e,this.view,{signal:o.signal,priority:"high"})}catch(c){if(m(c))return;throw c}finally{t===this.requestId&&(this.loading=!1)}if(t!==this.requestId)return;let i=this.$refs.tableContainer,r=i.querySelector("table");r&&$.fn.DataTable.isDataTable(r)&&$(r).DataTable().destroy(),i.innerHTML="";let l=document.createElement("table");if(l.className="display w-full",l.style.width="100%",i.appendChild(l),this.unavailable=!n.available,!n.available)return;let s=Pe(e,this.view);$(l).DataTable({data:n.rows,columns:n.columns.map(c=>({data:g=>g[c],title:c})),scrollX:!0,pageLength:d(W)??ke,initComplete:function(){Ae.call(this.api(),s),Re.call(this.api())}}).on("length",(c,g,u)=>{h(W,u)})}}}var Le=["!=",">=","<=","=",">","<","~"];function Y(e){let t=[];for(let o of e.split(",")){let n=o.trim();if(!n)continue;let i=null;for(let s of Le){let a=n.indexOf(s);a>0&&(i===null||a":case"<":case">=":case"<=":{let n=parseFloat(o),i=parseFloat(t.value);return Number.isNaN(n)||Number.isNaN(i)?!1:t.op===">"?n>i:t.op==="<"?n="?n>=i:n<=i}}}function Z(e,t){return t.length===0?!0:typeof e!="object"||e===null?!1:t.every(o=>Ne(e,o))}var Me=50,te={lineMode:"lines+markers",interp:"linear",hover:"closest",showSpike:!1,maxPoints:null};function ne(e){return`trendify:plot-config:${JSON.stringify(e)}`}function w(e){let t=e!==null?d(ne(e)):null;return{...te,...t??{}}}function oe(e){return`trendify:plot-zoom:${JSON.stringify(e)}`}function B(e){return e!==null?d(oe(e)):null}var Q="trendify:metadata-filter",Oe={paper_bgcolor:"rgba(0,0,0,0)",plot_bgcolor:"rgba(0,0,0,0)","font.color":"#475569","xaxis.gridcolor":"#cbd5e1","xaxis.linecolor":"#94a3b8","xaxis.zerolinecolor":"#cbd5e1","yaxis.gridcolor":"#cbd5e1","yaxis.linecolor":"#94a3b8","yaxis.zerolinecolor":"#cbd5e1","hoverlabel.bgcolor":"#e2e8f0","hoverlabel.bordercolor":"#94a3b8","hoverlabel.font.color":"#1e293b"},Fe={paper_bgcolor:"rgba(0,0,0,0)",plot_bgcolor:"rgba(0,0,0,0)","font.color":"#94a3b8","xaxis.gridcolor":"#334155","xaxis.linecolor":"#475569","xaxis.zerolinecolor":"#334155","yaxis.gridcolor":"#334155","yaxis.linecolor":"#475569","yaxis.zerolinecolor":"#334155","hoverlabel.bgcolor":"#1e293b","hoverlabel.bordercolor":"#475569","hoverlabel.font.color":"#e2e8f0"};function ee(){return document.documentElement.classList.contains("dark")?Fe:Oe}function ie(){return{config:{...te},unavailable:!1,filteredOut:!1,metadataFilter:"",lastResponse:null,loading:!1,requestId:0,currentAbortController:null,historyStack:[],historyIndex:-1,isUndoing:!1,zoomRange:null,_teardown:null,_zoomListenerAttached:!1,init(){this.config=w(this.selectedTag),this.zoomRange=B(this.selectedTag),this.metadataFilter=d(Q)??"",this.historyStack=[JSON.stringify(this.config)],this.historyIndex=0,this.$watch("selectedTag",()=>{let n=w(this.selectedTag);this.historyStack=[JSON.stringify(n)],this.historyIndex=0,this.config=n,this.zoomRange=B(this.selectedTag)}),this.$watch("metadataFilter",()=>{h(Q,this.metadataFilter),this.applyMetadataFilter()}),this.$watch("config",()=>{let n=JSON.stringify(this.config);!this.isUndoing&&this.historyStack[this.historyIndex]!==n&&(this.historyStack=this.historyStack.slice(0,this.historyIndex+1),this.historyStack.push(n),this.historyStack.length>Me&&this.historyStack.shift(),this.historyIndex=this.historyStack.length-1),this.selectedTag!==null&&h(ne(this.selectedTag),this.config),this.render()});let e=n=>{let i=n.target;if(i!==null&&(["INPUT","TEXTAREA","SELECT"].includes(i.tagName)||i.isContentEditable)||!(n.metaKey||n.ctrlKey))return;let s=n.key.toLowerCase();s==="z"&&n.shiftKey?(n.preventDefault(),this.redo()):s==="z"?(n.preventDefault(),this.undo()):s==="y"&&(n.preventDefault(),this.redo())},t=()=>{let n=this.$refs.plot;n&&n.offsetParent!==null&&Plotly.Plots.resize(n)},o=()=>{let n=this.$refs.plot;n&&n.offsetParent!==null&&Plotly.relayout(n,ee())};document.addEventListener("keydown",e),window.addEventListener("resize",t),window.addEventListener("trendify:layout-changed",t),window.addEventListener("trendify:theme-changed",o),this._teardown=()=>{document.removeEventListener("keydown",e),window.removeEventListener("resize",t),window.removeEventListener("trendify:layout-changed",t),window.removeEventListener("trendify:theme-changed",o)},this.render()},destroy(){this._teardown?.()},async render(){let e=this.selectedTag;if(e===null)return;let t=++this.requestId;this.currentAbortController?.abort();let o=new AbortController;this.currentAbortController=o,this.loading=!0;try{let n=await T(e,this.config,{signal:o.signal,priority:"high"});if(t!==this.requestId)return;if(this.lastResponse=n,this.unavailable=!n.available,!n.available){this.filteredOut=!1,Plotly.purge(this.$refs.plot);return}this.applyMetadataFilter()}catch(n){if(!m(n))throw n}finally{t===this.requestId&&(this.loading=!1)}},applyMetadataFilter(){let e=this.lastResponse;if(e===null||!e.available)return;let t=Y(this.metadataFilter),o=e.data,n=o.filter(s=>Z(s.meta,t)).map(s=>({...s}));this.filteredOut=n.length===0&&o.length>0;let i=new Set;for(let s of n){let a=s.legendgroup;a!=null&&(s.showlegend=!i.has(a),i.add(a))}let r=this.$refs.plot,l={...e.layout};this.zoomRange?.xaxis&&(l.xaxis={...l.xaxis,autorange:!1,range:this.zoomRange.xaxis}),this.zoomRange?.yaxis&&(l.yaxis={...l.yaxis,autorange:!1,range:this.zoomRange.yaxis}),Plotly.react(r,n,l,{responsive:!0,displaylogo:!1}),Plotly.relayout(r,ee()),this._zoomListenerAttached||(this._zoomListenerAttached=!0,r.on("plotly_relayout",s=>{let a=s;if(a["xaxis.autorange"]||a["yaxis.autorange"])this.zoomRange=null;else{let c={...this.zoomRange},g=a["xaxis.range[0]"],u=a["xaxis.range[1]"],f=a["yaxis.range[0]"],p=a["yaxis.range[1]"];typeof g=="number"&&typeof u=="number"&&(c.xaxis=[g,u]),typeof f=="number"&&typeof p=="number"&&(c.yaxis=[f,p]),this.zoomRange=c}this.selectedTag!==null&&h(oe(this.selectedTag),this.zoomRange)}))},undo(){this.historyIndex<=0||(this.isUndoing=!0,this.historyIndex--,this.config=JSON.parse(this.historyStack[this.historyIndex]),this.$nextTick(()=>{this.isUndoing=!1}))},redo(){this.historyIndex>=this.historyStack.length-1||(this.isUndoing=!0,this.historyIndex++,this.config=JSON.parse(this.historyStack[this.historyIndex]),this.$nextTick(()=>{this.isUndoing=!1}))}}}function re(){return{contentTab:"plot",init(){this.$watch("selectedTag",()=>{this.contentTab=this.selectedRecordKinds.includes("plot")?"plot":"table"})}}}function _e(e){return`trendify:folder-open:${JSON.stringify(e)}`}function P(e){return e===null?[]:Array.isArray(e)?e.map(String):[String(e)]}function se(e){let t=_e(e);return{open:!1,autoExpanded:!1,init(){let o=d(t);if(o!==null){this.open=o;return}let n=P(this.selectedTag);this.open=n.length>e.length&&e.every((i,r)=>i===n[r])},toggle(){this.open=!this.open,h(t,this.open)}}}var ae="trendify:sidebar-kind-filter",le={plot:!0,table:!0};function ce(){return{search:"",kindFilter:{...le},init(){let e=d(ae);e&&(this.kindFilter={...le,...e})},toggleKind(e){this.kindFilter[e]=!this.kindFilter[e],h(ae,this.kindFilter)}}}var R="[trendify:prefetch]",de=null;function ue(e){return{signal:e,priority:"low",headers:{"X-Trendify-Hydrate":"1"}}}function Ie(e,t){let o=e;for(let n of t){let i=o.find(r=>r.label===n);if(!i)return[];o=i.children}return o}function A(e){return e.children.reduce((t,o)=>t+A(o),e.size_bytes)}function he(e){let t=[...e].sort((n,i)=>A(i)-A(n)),o=[];for(let n of t)n.has_records&&o.push(n),n.children.length>0&&o.push(...he(n.children));return o}function $e(e,t){let o=P(t),n=o.slice(0,-1),i=o.length>0?o[o.length-1]:null,r=[];for(;;){let s=Ie(e,n).filter(a=>a.label!==i);if(r.push(...he(s)),n.length===0)break;i=n[n.length-1],n=n.slice(0,-1)}return r}function Ke(e){return Array.isArray(e)?e.join("/"):String(e)}async function ze(e,t){let o=ue(t),n=[];e.record_kinds.includes("plot")&&n.push(T(e.key,w(e.key),o)),e.record_kinds.includes("table")&&n.push(y(e.key,k(e.key),o)),await Promise.allSettled(n)}function L(e){de?.abort();let t=new AbortController;de=t;let{signal:o}=t;(async()=>{let n;try{n=await z(ue(o))}catch{return}if(o.aborted)return;let i=$e(n,e);if(i.length!==0){console.info(`${R} hydrating ${i.length} tag(s), radiating out from current selection`);for(let r of i){if(o.aborted)return;console.info(`${R} hydrating "${Ke(r.key)}" (${r.size_bytes} bytes, ${r.record_kinds.join("+")})`),await ze(r,o)}o.aborted||console.info(`${R} finished hydrating entire tree`)}})()}function ge(){new MutationObserver(t=>{for(let o of t)o.addedNodes.forEach(n=>{if(!(n instanceof HTMLElement)||!n.classList.contains("notifier-note"))return;let i=n.querySelector("p")?.textContent?.trim();n.remove(),i&&window.dispatchEvent(new CustomEvent("trendify:toast",{detail:{message:i,kind:"info"}}))})}).observe(document.body,{childList:!0,subtree:!0})}function fe(e){return Array.isArray(e)?e.join(" / "):String(e)}ge();document.addEventListener("alpine:init",()=>{Alpine.data("themeSelector",N),Alpine.data("fullscreenToggle",M),Alpine.data("tableView",j),Alpine.data("plotView",ie),Alpine.data("contentTabs",re),Alpine.data("sidebarNode",se),Alpine.data("sidebarFilter",ce),Alpine.data("appShell",()=>({sidebarOpen:!0,selectedTag:null,selectedRecordKinds:[],toggleSidebar(){this.sidebarOpen=!this.sidebarOpen,Alpine.nextTick(()=>window.dispatchEvent(new Event("trendify:layout-changed")))},...O({storageKey:"trendify:sidebar-width",elementId:"sidebar-panel",defaultWidth:288,minWidth:200,maxWidth:600}),..._(),connected:!0,get tagPath(){return this.selectedTag!==null?fe(this.selectedTag):""},init(){this.startClock();let e=H();e&&(this.selectedTag=e.tag,this.selectedRecordKinds=e.recordKinds),L(this.selectedTag),I({pingUrl:"/api/ping",intervalMs:5e3,timeoutMs:3e3,onConnectionChange:t=>{this.connected=t,this.push(t?"Reconnected to server":"Lost connection to server",t?"success":"error")},onDbChanged:()=>{this.push("Database updated with new data","info"),window.dispatchEvent(new CustomEvent("trendify:db-changed"))}}),window.addEventListener("trendify:toast",t=>{let o=t.detail;this.push(o.message,o.kind??"info")})},onTagSelected(e){this.selectedTag=e.tag,this.selectedRecordKinds=e.recordKinds,J(e.tag,e.recordKinds),L(e.tag),this.push(`Viewing ${fe(e.tag)}`,"info",2e3)},async copyDbPath(e){let t=await K(e);this.push(t?"Copied database path to clipboard":"Could not copy to clipboard",t?"success":"error",2e3)}}))});})();
+"use strict";(()=>{var x="trendify:theme";function pe(){return window.matchMedia("(prefers-color-scheme: dark)").matches}function me(){let e=localStorage.getItem(x);return e==="light"||e==="dark"?e:"system"}function be(e){let t=e==="dark"||e==="system"&&pe();document.documentElement.classList.toggle("dark",t),window.dispatchEvent(new Event("trendify:theme-changed"))}function ye(e){e==="system"?localStorage.removeItem(x):localStorage.setItem(x,e),be(e)}function N(){return{theme:me(),setTheme(e){this.theme=e,ye(e)}}}function M(){return{isFullscreen:!1,init(){document.addEventListener("fullscreenchange",()=>{this.isFullscreen=document.fullscreenElement!==null,window.dispatchEvent(new Event("trendify:layout-changed"))})},toggle(){document.fullscreenElement?document.exitFullscreen():document.documentElement.requestFullscreen()}}}function O({storageKey:e,elementId:t,defaultWidth:o,minWidth:n,maxWidth:i}){let r=Number(localStorage.getItem(e));return{width:Number.isFinite(r)&&r>0?r:o,dragging:!1,startDrag(s){s.preventDefault(),this.dragging=!0;let a=s.clientX,c=this.width,g=f=>{let p=c+(f.clientX-a);this.width=Math.min(i,Math.max(n,p))},u=()=>{this.dragging=!1,localStorage.setItem(e,String(this.width)),window.removeEventListener("mousemove",g),window.removeEventListener("mouseup",u),window.dispatchEvent(new Event("trendify:layout-changed"))};window.addEventListener("mousemove",g),window.addEventListener("mouseup",u)},fitToContent(){let s=document.getElementById(t);if(!s)return;let a=s.style.width;s.style.width="max-content";let c=s.scrollWidth;s.style.width=a,this.width=Math.min(i,Math.max(n,c)),localStorage.setItem(e,String(this.width))}}}function d(e){let t=localStorage.getItem(e);if(t===null)return null;try{return JSON.parse(t)}catch{return null}}function h(e,t){localStorage.setItem(e,JSON.stringify(t))}var _="trendify:toasts",Te=50;function we(){return(d(_)??[]).map(t=>({...t,visible:!1}))}var C=we(),ve=C.length>0?Math.max(...C.map(e=>e.id))+1:1,xe={success:"M10 18a8 8 0 100-16 8 8 0 000 16zm3.857-9.809a.75.75 0 00-1.214-.882l-3.483 4.79-1.88-1.88a.75.75 0 10-1.06 1.061l2.5 2.5a.75.75 0 001.137-.089l4-5.5z",error:"M10 18a8 8 0 100-16 8 8 0 000 16zM8.28 7.22a.75.75 0 00-1.06 1.06L8.94 10l-1.72 1.72a.75.75 0 101.06 1.06L10 11.06l1.72 1.72a.75.75 0 101.06-1.06L11.06 10l1.72-1.72a.75.75 0 00-1.06-1.06L10 8.94 8.28 7.22z",warning:"M8.485 2.495c.673-1.167 2.357-1.167 3.03 0l6.28 10.875c.673 1.167-.17 2.625-1.516 2.625H3.72c-1.347 0-2.189-1.458-1.515-2.625L8.485 2.495zM10 5a.75.75 0 01.75.75v3.5a.75.75 0 01-1.5 0v-3.5A.75.75 0 0110 5zm0 9a1 1 0 100-2 1 1 0 000 2z",info:"M18 10a8 8 0 11-16 0 8 8 0 0116 0zm-7-4a1 1 0 11-2 0 1 1 0 012 0zM9 9a.75.75 0 000 1.5h.253a.25.25 0 01.244.304l-.459 2.066A1.75 1.75 0 0010.747 15H11a.75.75 0 000-1.5h-.253a.25.25 0 01-.244-.304l.459-2.066A1.75 1.75 0 009.253 9H9z"};function F(){return{toasts:C,now:Date.now(),persist(){h(_,this.toasts.slice(-Te))},push(e,t="info",o=4e3){let n=ve++;this.toasts.push({id:n,message:e,kind:t,timestamp:Date.now(),read:!1,visible:!0}),this.persist(),o>0&&setTimeout(()=>{let i=this.toasts.find(r=>r.id===n);i&&(i.visible=!1)},o)},dismiss(e){let t=this.toasts.find(o=>o.id===e);t&&(t.visible=!1)},iconPath(e){return xe[e]},clearAll(){this.toasts=[],this.persist()},markAllRead(){this.toasts.forEach(e=>{e.read=!0}),this.persist()},unreadCount(){return this.toasts.filter(e=>!e.read).length},timeAgo(e,t){let o=Math.floor((t-e)/1e3);if(o<5)return"just now";if(o<60)return`${o}s ago`;let n=Math.floor(o/60);return n<60?`${n}m ago`:`${Math.floor(n/60)}h ago`},startClock(){setInterval(()=>{this.now=Date.now()},15e3)}}}function I({pingUrl:e,intervalMs:t,timeoutMs:o,onConnectionChange:n,onDbChanged:i}){let r=!0,l=null;async function s(){let c=new AbortController,g=setTimeout(()=>c.abort(),o);try{let u=await fetch(e,{signal:c.signal,cache:"no-store"});if(!u.ok)throw new Error(`ping failed: ${u.status}`);let f=await u.json();r||(r=!0,n(!0)),f.db_updated_at!==null&&(l!==null&&f.db_updated_at!==l&&i(),l=f.db_updated_at)}catch{r&&(r=!1,n(!1))}finally{clearTimeout(g)}}let a=setInterval(s,t);return s(),()=>clearInterval(a)}async function K(e){if(navigator.clipboard?.writeText)try{return await navigator.clipboard.writeText(e),!0}catch{}try{let t=document.createElement("textarea");t.value=e,t.style.position="fixed",t.style.opacity="0",document.body.appendChild(t),t.focus(),t.select();let o=document.execCommand("copy");return document.body.removeChild(t),o}catch{return!1}}var E=new Map,S=new Map;async function b(e,t){let o=E.get(e);if(o!==void 0)return o;let n=S.get(e);if(n!==void 0)try{return await n}catch(r){if(m(r)&&t?.signal?.aborted!==!0)return b(e,t);throw r}let i=(async()=>{let r=await fetch(e,{signal:t?.signal,priority:t?.priority,headers:t?.headers});if(!r.ok)throw new Error(`Request failed: ${e} (${r.status})`);let l=await r.json();return E.set(e,l),l})();S.set(e,i);try{return await i}finally{S.delete(e)}}function y(e,t,o){let n=`/api/table?tag=${encodeURIComponent(JSON.stringify(e))}&view=${t}`;return b(n,o)}function T(e,t,o){let n=new URLSearchParams({tag:JSON.stringify(e),line_mode:t.lineMode??"lines+markers",interp:t.interp??"linear",hover:t.hover??"closest",show_spike:String(t.showSpike??!1)});return t.maxPoints!=null&&n.set("max_points",String(t.maxPoints)),b(`/api/plot?${n.toString()}`,o)}function z(e){return b("/api/tags",e)}function m(e){return e instanceof Error&&e.name==="AbortError"}window.addEventListener("trendify:db-changed",()=>E.clear());var V="kinds",U="view",Ce=["melted","pivot","stats"];function D(){let e=new URLSearchParams(window.location.search),t=e.get("tag");if(!t)return null;try{let o=JSON.parse(t),n=e.get(V),i=n?n.split(","):[];return{tag:o,recordKinds:i}}catch{return null}}function H(e,t){let o=new URLSearchParams(window.location.search);o.set("tag",JSON.stringify(e)),o.set(V,t.join(","));let n=`${window.location.pathname}?${o.toString()}`;window.history.replaceState(null,"",n)}function J(){let e=new URLSearchParams(window.location.search).get(U);return Ce.includes(e??"")?e:null}function q(e){let t=new URLSearchParams(window.location.search);t.set(U,e);let o=`${window.location.pathname}?${t.toString()}`;window.history.replaceState(null,"",o)}var Se=60,G="trendify:table-page-length",Ee=10;function ke(e,t){return`trendify:table-filters:${JSON.stringify(e)}:${t}`}function W(e){return`trendify:table-view:${JSON.stringify(e)}`}function k(e){return d(W(e))??"stats"}function Ae(){let e=this,t=this.table().node();this.columns().every(function(){let o=this.header(),n=this.index(),i=o.closest("table"),r=new Set([t,i]);o.style.position="relative";let l=document.createElement("span");l.className="dt-col-resize-handle",l.addEventListener("mousedown",s=>{s.preventDefault(),s.stopPropagation();let a=s.clientX,c=o.offsetWidth,g=f=>{let p=Math.max(Se,c+(f.clientX-a));o.style.width=`${p}px`;for(let fe of r){let v=fe?.querySelectorAll("colgroup col")[n];v&&(v.style.width=`${p}px`,v.style.minWidth=`${p}px`)}},u=()=>{window.removeEventListener("mousemove",g),window.removeEventListener("mouseup",u),e.draw(!1),document.addEventListener("click",f=>{f.stopPropagation(),f.preventDefault()},{capture:!0,once:!0})};window.addEventListener("mousemove",g),window.addEventListener("mouseup",u)}),o.appendChild(l)})}function Pe(e){let t=d(e)??{},o=this;o.columns().every(function(){let n=this,i=n.title(),r=t[i]??"",l=$(n.header());$("").attr("type","text").attr("placeholder","Filter").addClass("dt-column-filter").val(r).on("click",s=>s.stopPropagation()).on("keyup change clear",function(){let s=this.value;n.search()!==s&&n.search(s).draw();let a=d(e)??{};s?a[i]=s:delete a[i],h(e,a)}).appendTo(l),r&&n.search(r)}),o.draw()}function X(){return{view:"stats",unavailable:!1,loading:!1,requestId:0,currentAbortController:null,setView(e){this.view=e,q(e),this.selectedTag!==null&&h(W(this.selectedTag),e)},init(){let e=J();e&&(this.view=e),this.$watch("view",()=>this.render()),this.$watch("selectedTag",t=>{this.setView(t!==null?k(t):"stats")}),this.render()},async render(){let e=this.selectedTag;if(e===null)return;let t=++this.requestId;this.currentAbortController?.abort();let o=new AbortController;this.currentAbortController=o,this.loading=!0;let n;try{n=await y(e,this.view,{signal:o.signal,priority:"high"})}catch(c){if(m(c))return;throw c}finally{t===this.requestId&&(this.loading=!1)}if(t!==this.requestId)return;let i=this.$refs.tableContainer,r=i.querySelector("table");r&&$.fn.DataTable.isDataTable(r)&&$(r).DataTable().destroy(),i.innerHTML="";let l=document.createElement("table");if(l.className="display w-full",l.style.width="100%",i.appendChild(l),this.unavailable=!n.available,!n.available)return;let s=ke(e,this.view);$(l).DataTable({data:n.rows,columns:n.columns.map(c=>({data:g=>g[c],title:c})),scrollX:!0,pageLength:d(G)??Ee,initComplete:function(){Pe.call(this.api(),s),Ae.call(this.api())}}).on("length",(c,g,u)=>{h(G,u)})}}}var Re=["!=",">=","<=","=",">","<","~"];function j(e){let t=[];for(let o of e.split(",")){let n=o.trim();if(!n)continue;let i=null;for(let s of Re){let a=n.indexOf(s);a>0&&(i===null||a":case"<":case">=":case"<=":{let n=parseFloat(o),i=parseFloat(t.value);return Number.isNaN(n)||Number.isNaN(i)?!1:t.op===">"?n>i:t.op==="<"?n="?n>=i:n<=i}}}function Y(e,t){return t.length===0?!0:typeof e!="object"||e===null?!1:t.every(o=>Le(e,o))}var Ne=50,ee={lineMode:"lines+markers",interp:"linear",hover:"closest",showSpike:!1,maxPoints:null};function te(e){return`trendify:plot-config:${JSON.stringify(e)}`}function w(e){let t=e!==null?d(te(e)):null;return{...ee,...t??{}}}function ne(e){return`trendify:plot-zoom:${JSON.stringify(e)}`}function Z(e){return e!==null?d(ne(e)):null}var B="trendify:metadata-filter",Me={paper_bgcolor:"rgba(0,0,0,0)",plot_bgcolor:"rgba(0,0,0,0)","font.color":"#475569","xaxis.gridcolor":"#cbd5e1","xaxis.linecolor":"#94a3b8","xaxis.zerolinecolor":"#cbd5e1","yaxis.gridcolor":"#cbd5e1","yaxis.linecolor":"#94a3b8","yaxis.zerolinecolor":"#cbd5e1","hoverlabel.bgcolor":"#e2e8f0","hoverlabel.bordercolor":"#94a3b8","hoverlabel.font.color":"#1e293b"},Oe={paper_bgcolor:"rgba(0,0,0,0)",plot_bgcolor:"rgba(0,0,0,0)","font.color":"#94a3b8","xaxis.gridcolor":"#334155","xaxis.linecolor":"#475569","xaxis.zerolinecolor":"#334155","yaxis.gridcolor":"#334155","yaxis.linecolor":"#475569","yaxis.zerolinecolor":"#334155","hoverlabel.bgcolor":"#1e293b","hoverlabel.bordercolor":"#475569","hoverlabel.font.color":"#e2e8f0"};function Q(){return document.documentElement.classList.contains("dark")?Oe:Me}function oe(){return{config:{...ee},unavailable:!1,filteredOut:!1,metadataFilter:"",lastResponse:null,loading:!1,requestId:0,currentAbortController:null,historyStack:[],historyIndex:-1,isUndoing:!1,zoomRange:null,_teardown:null,_zoomListenerAttached:!1,init(){this.config=w(this.selectedTag),this.zoomRange=Z(this.selectedTag),this.metadataFilter=d(B)??"",this.historyStack=[JSON.stringify(this.config)],this.historyIndex=0,this.$watch("selectedTag",()=>{let n=w(this.selectedTag);this.historyStack=[JSON.stringify(n)],this.historyIndex=0,this.config=n,this.zoomRange=Z(this.selectedTag)}),this.$watch("metadataFilter",()=>{h(B,this.metadataFilter),this.applyMetadataFilter()}),this.$watch("config",()=>{let n=JSON.stringify(this.config);!this.isUndoing&&this.historyStack[this.historyIndex]!==n&&(this.historyStack=this.historyStack.slice(0,this.historyIndex+1),this.historyStack.push(n),this.historyStack.length>Ne&&this.historyStack.shift(),this.historyIndex=this.historyStack.length-1),this.selectedTag!==null&&h(te(this.selectedTag),this.config),this.render()});let e=n=>{let i=n.target;if(i!==null&&(["INPUT","TEXTAREA","SELECT"].includes(i.tagName)||i.isContentEditable)||!(n.metaKey||n.ctrlKey))return;let s=n.key.toLowerCase();s==="z"&&n.shiftKey?(n.preventDefault(),this.redo()):s==="z"?(n.preventDefault(),this.undo()):s==="y"&&(n.preventDefault(),this.redo())},t=()=>{let n=this.$refs.plot;n&&n.offsetParent!==null&&Plotly.Plots.resize(n)},o=()=>{let n=this.$refs.plot;n&&n.offsetParent!==null&&Plotly.relayout(n,Q())};document.addEventListener("keydown",e),window.addEventListener("resize",t),window.addEventListener("trendify:layout-changed",t),window.addEventListener("trendify:theme-changed",o),this._teardown=()=>{document.removeEventListener("keydown",e),window.removeEventListener("resize",t),window.removeEventListener("trendify:layout-changed",t),window.removeEventListener("trendify:theme-changed",o)},this.render()},destroy(){this._teardown?.()},async render(){let e=this.selectedTag;if(e===null)return;let t=++this.requestId;this.currentAbortController?.abort();let o=new AbortController;this.currentAbortController=o,this.loading=!0;try{let n=await T(e,this.config,{signal:o.signal,priority:"high"});if(t!==this.requestId)return;if(this.lastResponse=n,this.unavailable=!n.available,!n.available){this.filteredOut=!1,Plotly.purge(this.$refs.plot);return}this.applyMetadataFilter()}catch(n){if(!m(n))throw n}finally{t===this.requestId&&(this.loading=!1)}},applyMetadataFilter(){let e=this.lastResponse;if(e===null||!e.available)return;let t=j(this.metadataFilter),o=e.data,n=o.filter(s=>Y(s.meta,t)).map(s=>({...s}));this.filteredOut=n.length===0&&o.length>0;let i=new Set;for(let s of n){let a=s.legendgroup;a!=null&&(s.showlegend=!i.has(a),i.add(a))}let r=this.$refs.plot,l={...e.layout};this.zoomRange?.xaxis&&(l.xaxis={...l.xaxis,autorange:!1,range:this.zoomRange.xaxis}),this.zoomRange?.yaxis&&(l.yaxis={...l.yaxis,autorange:!1,range:this.zoomRange.yaxis}),Plotly.react(r,n,l,{responsive:!0,displaylogo:!1}),Plotly.relayout(r,Q()),this._zoomListenerAttached||(this._zoomListenerAttached=!0,r.on("plotly_relayout",s=>{let a=s;if(a["xaxis.autorange"]||a["yaxis.autorange"])this.zoomRange=null;else{let c={...this.zoomRange},g=a["xaxis.range[0]"],u=a["xaxis.range[1]"],f=a["yaxis.range[0]"],p=a["yaxis.range[1]"];typeof g=="number"&&typeof u=="number"&&(c.xaxis=[g,u]),typeof f=="number"&&typeof p=="number"&&(c.yaxis=[f,p]),this.zoomRange=c}this.selectedTag!==null&&h(ne(this.selectedTag),this.zoomRange)}))},undo(){this.historyIndex<=0||(this.isUndoing=!0,this.historyIndex--,this.config=JSON.parse(this.historyStack[this.historyIndex]),this.$nextTick(()=>{this.isUndoing=!1}))},redo(){this.historyIndex>=this.historyStack.length-1||(this.isUndoing=!0,this.historyIndex++,this.config=JSON.parse(this.historyStack[this.historyIndex]),this.$nextTick(()=>{this.isUndoing=!1}))}}}function ie(){return{contentTab:"plot",init(){this.$watch("selectedTag",()=>{this.contentTab=this.selectedRecordKinds.includes("plot")?"plot":"table"})}}}function _e(e){return`trendify:folder-open:${JSON.stringify(e)}`}function A(e){return e===null?[]:Array.isArray(e)?e.map(String):[String(e)]}function re(e){let t=_e(e);return{open:!1,autoExpanded:!1,init(){let o=d(t);if(o!==null){this.open=o;return}let n=A(this.selectedTag);this.open=n.length>e.length&&e.every((i,r)=>i===n[r])},toggle(){this.open=!this.open,h(t,this.open)}}}var se="trendify:sidebar-kind-filter",ae={plot:!0,table:!0};function le(){return{search:"",kindFilter:{...ae},init(){let e=d(se);e&&(this.kindFilter={...ae,...e})},toggleKind(e){this.kindFilter[e]=!this.kindFilter[e],h(se,this.kindFilter)}}}var P="[trendify:prefetch]",ce=null;function de(e){return{signal:e,priority:"low",headers:{"X-Trendify-Hydrate":"1"}}}function Fe(e,t){let o=e;for(let n of t){let i=o.find(r=>r.label===n);if(!i)return[];o=i.children}return o}function R(e){return e.children.reduce((t,o)=>t+R(o),e.size_bytes)}function ue(e){let t=[...e].sort((n,i)=>R(i)-R(n)),o=[];for(let n of t)n.has_records&&o.push(n),n.children.length>0&&o.push(...ue(n.children));return o}function Ie(e,t){let o=A(t),n=o.slice(0,-1),i=o.length>0?o[o.length-1]:null,r=[];for(;;){let s=Fe(e,n).filter(a=>a.label!==i);if(r.push(...ue(s)),n.length===0)break;i=n[n.length-1],n=n.slice(0,-1)}return r}function $e(e){return Array.isArray(e)?e.join("/"):String(e)}async function Ke(e,t){let o=de(t),n=[];e.record_kinds.includes("plot")&&n.push(T(e.key,w(e.key),o)),e.record_kinds.includes("table")&&n.push(y(e.key,k(e.key),o)),await Promise.allSettled(n)}function L(e){ce?.abort();let t=new AbortController;ce=t;let{signal:o}=t;(async()=>{let n;try{n=await z(de(o))}catch{return}if(o.aborted)return;let i=Ie(n,e);if(i.length!==0){console.info(`${P} hydrating ${i.length} tag(s), radiating out from current selection`);for(let r of i){if(o.aborted)return;console.info(`${P} hydrating "${$e(r.key)}" (${r.size_bytes} bytes, ${r.record_kinds.join("+")})`),await Ke(r,o)}o.aborted||console.info(`${P} finished hydrating entire tree`)}})()}function he(){new MutationObserver(t=>{for(let o of t)o.addedNodes.forEach(n=>{if(!(n instanceof HTMLElement)||!n.classList.contains("notifier-note"))return;let i=n.querySelector("p")?.textContent?.trim();n.remove(),i&&window.dispatchEvent(new CustomEvent("trendify:toast",{detail:{message:i,kind:"info"}}))})}).observe(document.body,{childList:!0,subtree:!0})}function ge(e){return Array.isArray(e)?e.join(" / "):String(e)}he();document.addEventListener("alpine:init",()=>{Alpine.data("themeSelector",N),Alpine.data("fullscreenToggle",M),Alpine.data("tableView",X),Alpine.data("plotView",oe),Alpine.data("contentTabs",ie),Alpine.data("sidebarNode",re),Alpine.data("sidebarFilter",le),Alpine.data("appShell",()=>({sidebarOpen:!0,selectedTag:null,selectedRecordKinds:[],toggleSidebar(){this.sidebarOpen=!this.sidebarOpen,Alpine.nextTick(()=>window.dispatchEvent(new Event("trendify:layout-changed")))},...O({storageKey:"trendify:sidebar-width",elementId:"sidebar-panel",defaultWidth:288,minWidth:200,maxWidth:600}),...F(),connected:!0,get tagPath(){return this.selectedTag!==null?ge(this.selectedTag):""},init(){this.startClock();let e=D();e&&(this.selectedTag=e.tag,this.selectedRecordKinds=e.recordKinds),L(this.selectedTag),I({pingUrl:"/api/ping",intervalMs:5e3,timeoutMs:3e3,onConnectionChange:t=>{this.connected=t,this.push(t?"Reconnected to server":"Lost connection to server",t?"success":"error")},onDbChanged:()=>{this.push("Database updated with new data","info"),window.dispatchEvent(new CustomEvent("trendify:db-changed"))}}),window.addEventListener("trendify:toast",t=>{let o=t.detail;this.push(o.message,o.kind??"info")})},onTagSelected(e){this.selectedTag=e.tag,this.selectedRecordKinds=e.recordKinds,H(e.tag,e.recordKinds),L(e.tag),this.push(`Viewing ${ge(e.tag)}`,"info",2e3)},async copyDbPath(e){let t=await K(e);this.push(t?"Copied database path to clipboard":"Could not copy to clipboard",t?"success":"error",2e3)}}))});})();
//# sourceMappingURL=main.js.map
diff --git a/src/trendify/viewer/templates/static/ts/package-lock.json b/src/trendify/viewer/templates/static/ts/package-lock.json
index 6313d16..ad52d52 100644
--- a/src/trendify/viewer/templates/static/ts/package-lock.json
+++ b/src/trendify/viewer/templates/static/ts/package-lock.json
@@ -9,14 +9,14 @@
"@types/jquery": "^3.5.30",
"@types/plotly.js": "^3.0.10",
"datatables.net": "^2.3.8",
- "esbuild": "^0.24.0",
+ "esbuild": "^0.25.0",
"typescript": "^5.6.0"
}
},
"node_modules/@esbuild/aix-ppc64": {
- "version": "0.24.2",
- "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.24.2.tgz",
- "integrity": "sha512-thpVCb/rhxE/BnMLQ7GReQLLN8q9qbHmI55F4489/ByVg2aQaQ6kbcLb6FHkocZzQhxc4gx0sCk0tJkKBFzDhA==",
+ "version": "0.25.12",
+ "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.12.tgz",
+ "integrity": "sha512-Hhmwd6CInZ3dwpuGTF8fJG6yoWmsToE+vYgD4nytZVxcu1ulHpUQRAB1UJ8+N1Am3Mz4+xOByoQoSZf4D+CpkA==",
"cpu": [
"ppc64"
],
@@ -31,9 +31,9 @@
}
},
"node_modules/@esbuild/android-arm": {
- "version": "0.24.2",
- "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.24.2.tgz",
- "integrity": "sha512-tmwl4hJkCfNHwFB3nBa8z1Uy3ypZpxqxfTQOcHX+xRByyYgunVbZ9MzUUfb0RxaHIMnbHagwAxuTL+tnNM+1/Q==",
+ "version": "0.25.12",
+ "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.12.tgz",
+ "integrity": "sha512-VJ+sKvNA/GE7Ccacc9Cha7bpS8nyzVv0jdVgwNDaR4gDMC/2TTRc33Ip8qrNYUcpkOHUT5OZ0bUcNNVZQ9RLlg==",
"cpu": [
"arm"
],
@@ -48,9 +48,9 @@
}
},
"node_modules/@esbuild/android-arm64": {
- "version": "0.24.2",
- "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.24.2.tgz",
- "integrity": "sha512-cNLgeqCqV8WxfcTIOeL4OAtSmL8JjcN6m09XIgro1Wi7cF4t/THaWEa7eL5CMoMBdjoHOTh/vwTO/o2TRXIyzg==",
+ "version": "0.25.12",
+ "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.12.tgz",
+ "integrity": "sha512-6AAmLG7zwD1Z159jCKPvAxZd4y/VTO0VkprYy+3N2FtJ8+BQWFXU+OxARIwA46c5tdD9SsKGZ/1ocqBS/gAKHg==",
"cpu": [
"arm64"
],
@@ -65,9 +65,9 @@
}
},
"node_modules/@esbuild/android-x64": {
- "version": "0.24.2",
- "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.24.2.tgz",
- "integrity": "sha512-B6Q0YQDqMx9D7rvIcsXfmJfvUYLoP722bgfBlO5cGvNVb5V/+Y7nhBE3mHV9OpxBf4eAS2S68KZztiPaWq4XYw==",
+ "version": "0.25.12",
+ "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.12.tgz",
+ "integrity": "sha512-5jbb+2hhDHx5phYR2By8GTWEzn6I9UqR11Kwf22iKbNpYrsmRB18aX/9ivc5cabcUiAT/wM+YIZ6SG9QO6a8kg==",
"cpu": [
"x64"
],
@@ -82,9 +82,9 @@
}
},
"node_modules/@esbuild/darwin-arm64": {
- "version": "0.24.2",
- "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.24.2.tgz",
- "integrity": "sha512-kj3AnYWc+CekmZnS5IPu9D+HWtUI49hbnyqk0FLEJDbzCIQt7hg7ucF1SQAilhtYpIujfaHr6O0UHlzzSPdOeA==",
+ "version": "0.25.12",
+ "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.12.tgz",
+ "integrity": "sha512-N3zl+lxHCifgIlcMUP5016ESkeQjLj/959RxxNYIthIg+CQHInujFuXeWbWMgnTo4cp5XVHqFPmpyu9J65C1Yg==",
"cpu": [
"arm64"
],
@@ -99,9 +99,9 @@
}
},
"node_modules/@esbuild/darwin-x64": {
- "version": "0.24.2",
- "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.24.2.tgz",
- "integrity": "sha512-WeSrmwwHaPkNR5H3yYfowhZcbriGqooyu3zI/3GGpF8AyUdsrrP0X6KumITGA9WOyiJavnGZUwPGvxvwfWPHIA==",
+ "version": "0.25.12",
+ "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.12.tgz",
+ "integrity": "sha512-HQ9ka4Kx21qHXwtlTUVbKJOAnmG1ipXhdWTmNXiPzPfWKpXqASVcWdnf2bnL73wgjNrFXAa3yYvBSd9pzfEIpA==",
"cpu": [
"x64"
],
@@ -116,9 +116,9 @@
}
},
"node_modules/@esbuild/freebsd-arm64": {
- "version": "0.24.2",
- "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.24.2.tgz",
- "integrity": "sha512-UN8HXjtJ0k/Mj6a9+5u6+2eZ2ERD7Edt1Q9IZiB5UZAIdPnVKDoG7mdTVGhHJIeEml60JteamR3qhsr1r8gXvg==",
+ "version": "0.25.12",
+ "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.12.tgz",
+ "integrity": "sha512-gA0Bx759+7Jve03K1S0vkOu5Lg/85dou3EseOGUes8flVOGxbhDDh/iZaoek11Y8mtyKPGF3vP8XhnkDEAmzeg==",
"cpu": [
"arm64"
],
@@ -133,9 +133,9 @@
}
},
"node_modules/@esbuild/freebsd-x64": {
- "version": "0.24.2",
- "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.24.2.tgz",
- "integrity": "sha512-TvW7wE/89PYW+IevEJXZ5sF6gJRDY/14hyIGFXdIucxCsbRmLUcjseQu1SyTko+2idmCw94TgyaEZi9HUSOe3Q==",
+ "version": "0.25.12",
+ "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.12.tgz",
+ "integrity": "sha512-TGbO26Yw2xsHzxtbVFGEXBFH0FRAP7gtcPE7P5yP7wGy7cXK2oO7RyOhL5NLiqTlBh47XhmIUXuGciXEqYFfBQ==",
"cpu": [
"x64"
],
@@ -150,9 +150,9 @@
}
},
"node_modules/@esbuild/linux-arm": {
- "version": "0.24.2",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.24.2.tgz",
- "integrity": "sha512-n0WRM/gWIdU29J57hJyUdIsk0WarGd6To0s+Y+LwvlC55wt+GT/OgkwoXCXvIue1i1sSNWblHEig00GBWiJgfA==",
+ "version": "0.25.12",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.12.tgz",
+ "integrity": "sha512-lPDGyC1JPDou8kGcywY0YILzWlhhnRjdof3UlcoqYmS9El818LLfJJc3PXXgZHrHCAKs/Z2SeZtDJr5MrkxtOw==",
"cpu": [
"arm"
],
@@ -167,9 +167,9 @@
}
},
"node_modules/@esbuild/linux-arm64": {
- "version": "0.24.2",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.24.2.tgz",
- "integrity": "sha512-7HnAD6074BW43YvvUmE/35Id9/NB7BeX5EoNkK9obndmZBUk8xmJJeU7DwmUeN7tkysslb2eSl6CTrYz6oEMQg==",
+ "version": "0.25.12",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.12.tgz",
+ "integrity": "sha512-8bwX7a8FghIgrupcxb4aUmYDLp8pX06rGh5HqDT7bB+8Rdells6mHvrFHHW2JAOPZUbnjUpKTLg6ECyzvas2AQ==",
"cpu": [
"arm64"
],
@@ -184,9 +184,9 @@
}
},
"node_modules/@esbuild/linux-ia32": {
- "version": "0.24.2",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.24.2.tgz",
- "integrity": "sha512-sfv0tGPQhcZOgTKO3oBE9xpHuUqguHvSo4jl+wjnKwFpapx+vUDcawbwPNuBIAYdRAvIDBfZVvXprIj3HA+Ugw==",
+ "version": "0.25.12",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.12.tgz",
+ "integrity": "sha512-0y9KrdVnbMM2/vG8KfU0byhUN+EFCny9+8g202gYqSSVMonbsCfLjUO+rCci7pM0WBEtz+oK/PIwHkzxkyharA==",
"cpu": [
"ia32"
],
@@ -201,9 +201,9 @@
}
},
"node_modules/@esbuild/linux-loong64": {
- "version": "0.24.2",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.24.2.tgz",
- "integrity": "sha512-CN9AZr8kEndGooS35ntToZLTQLHEjtVB5n7dl8ZcTZMonJ7CCfStrYhrzF97eAecqVbVJ7APOEe18RPI4KLhwQ==",
+ "version": "0.25.12",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.12.tgz",
+ "integrity": "sha512-h///Lr5a9rib/v1GGqXVGzjL4TMvVTv+s1DPoxQdz7l/AYv6LDSxdIwzxkrPW438oUXiDtwM10o9PmwS/6Z0Ng==",
"cpu": [
"loong64"
],
@@ -218,9 +218,9 @@
}
},
"node_modules/@esbuild/linux-mips64el": {
- "version": "0.24.2",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.24.2.tgz",
- "integrity": "sha512-iMkk7qr/wl3exJATwkISxI7kTcmHKE+BlymIAbHO8xanq/TjHaaVThFF6ipWzPHryoFsesNQJPE/3wFJw4+huw==",
+ "version": "0.25.12",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.12.tgz",
+ "integrity": "sha512-iyRrM1Pzy9GFMDLsXn1iHUm18nhKnNMWscjmp4+hpafcZjrr2WbT//d20xaGljXDBYHqRcl8HnxbX6uaA/eGVw==",
"cpu": [
"mips64el"
],
@@ -235,9 +235,9 @@
}
},
"node_modules/@esbuild/linux-ppc64": {
- "version": "0.24.2",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.24.2.tgz",
- "integrity": "sha512-shsVrgCZ57Vr2L8mm39kO5PPIb+843FStGt7sGGoqiiWYconSxwTiuswC1VJZLCjNiMLAMh34jg4VSEQb+iEbw==",
+ "version": "0.25.12",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.12.tgz",
+ "integrity": "sha512-9meM/lRXxMi5PSUqEXRCtVjEZBGwB7P/D4yT8UG/mwIdze2aV4Vo6U5gD3+RsoHXKkHCfSxZKzmDssVlRj1QQA==",
"cpu": [
"ppc64"
],
@@ -252,9 +252,9 @@
}
},
"node_modules/@esbuild/linux-riscv64": {
- "version": "0.24.2",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.24.2.tgz",
- "integrity": "sha512-4eSFWnU9Hhd68fW16GD0TINewo1L6dRrB+oLNNbYyMUAeOD2yCK5KXGK1GH4qD/kT+bTEXjsyTCiJGHPZ3eM9Q==",
+ "version": "0.25.12",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.12.tgz",
+ "integrity": "sha512-Zr7KR4hgKUpWAwb1f3o5ygT04MzqVrGEGXGLnj15YQDJErYu/BGg+wmFlIDOdJp0PmB0lLvxFIOXZgFRrdjR0w==",
"cpu": [
"riscv64"
],
@@ -269,9 +269,9 @@
}
},
"node_modules/@esbuild/linux-s390x": {
- "version": "0.24.2",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.24.2.tgz",
- "integrity": "sha512-S0Bh0A53b0YHL2XEXC20bHLuGMOhFDO6GN4b3YjRLK//Ep3ql3erpNcPlEFed93hsQAjAQDNsvcK+hV90FubSw==",
+ "version": "0.25.12",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.12.tgz",
+ "integrity": "sha512-MsKncOcgTNvdtiISc/jZs/Zf8d0cl/t3gYWX8J9ubBnVOwlk65UIEEvgBORTiljloIWnBzLs4qhzPkJcitIzIg==",
"cpu": [
"s390x"
],
@@ -286,9 +286,9 @@
}
},
"node_modules/@esbuild/linux-x64": {
- "version": "0.24.2",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.24.2.tgz",
- "integrity": "sha512-8Qi4nQcCTbLnK9WoMjdC9NiTG6/E38RNICU6sUNqK0QFxCYgoARqVqxdFmWkdonVsvGqWhmm7MO0jyTqLqwj0Q==",
+ "version": "0.25.12",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.12.tgz",
+ "integrity": "sha512-uqZMTLr/zR/ed4jIGnwSLkaHmPjOjJvnm6TVVitAa08SLS9Z0VM8wIRx7gWbJB5/J54YuIMInDquWyYvQLZkgw==",
"cpu": [
"x64"
],
@@ -303,9 +303,9 @@
}
},
"node_modules/@esbuild/netbsd-arm64": {
- "version": "0.24.2",
- "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.24.2.tgz",
- "integrity": "sha512-wuLK/VztRRpMt9zyHSazyCVdCXlpHkKm34WUyinD2lzK07FAHTq0KQvZZlXikNWkDGoT6x3TD51jKQ7gMVpopw==",
+ "version": "0.25.12",
+ "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.12.tgz",
+ "integrity": "sha512-xXwcTq4GhRM7J9A8Gv5boanHhRa/Q9KLVmcyXHCTaM4wKfIpWkdXiMog/KsnxzJ0A1+nD+zoecuzqPmCRyBGjg==",
"cpu": [
"arm64"
],
@@ -320,9 +320,9 @@
}
},
"node_modules/@esbuild/netbsd-x64": {
- "version": "0.24.2",
- "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.24.2.tgz",
- "integrity": "sha512-VefFaQUc4FMmJuAxmIHgUmfNiLXY438XrL4GDNV1Y1H/RW3qow68xTwjZKfj/+Plp9NANmzbH5R40Meudu8mmw==",
+ "version": "0.25.12",
+ "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.12.tgz",
+ "integrity": "sha512-Ld5pTlzPy3YwGec4OuHh1aCVCRvOXdH8DgRjfDy/oumVovmuSzWfnSJg+VtakB9Cm0gxNO9BzWkj6mtO1FMXkQ==",
"cpu": [
"x64"
],
@@ -337,9 +337,9 @@
}
},
"node_modules/@esbuild/openbsd-arm64": {
- "version": "0.24.2",
- "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.24.2.tgz",
- "integrity": "sha512-YQbi46SBct6iKnszhSvdluqDmxCJA+Pu280Av9WICNwQmMxV7nLRHZfjQzwbPs3jeWnuAhE9Jy0NrnJ12Oz+0A==",
+ "version": "0.25.12",
+ "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.12.tgz",
+ "integrity": "sha512-fF96T6KsBo/pkQI950FARU9apGNTSlZGsv1jZBAlcLL1MLjLNIWPBkj5NlSz8aAzYKg+eNqknrUJ24QBybeR5A==",
"cpu": [
"arm64"
],
@@ -354,9 +354,9 @@
}
},
"node_modules/@esbuild/openbsd-x64": {
- "version": "0.24.2",
- "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.24.2.tgz",
- "integrity": "sha512-+iDS6zpNM6EnJyWv0bMGLWSWeXGN/HTaF/LXHXHwejGsVi+ooqDfMCCTerNFxEkM3wYVcExkeGXNqshc9iMaOA==",
+ "version": "0.25.12",
+ "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.12.tgz",
+ "integrity": "sha512-MZyXUkZHjQxUvzK7rN8DJ3SRmrVrke8ZyRusHlP+kuwqTcfWLyqMOE3sScPPyeIXN/mDJIfGXvcMqCgYKekoQw==",
"cpu": [
"x64"
],
@@ -370,10 +370,27 @@
"node": ">=18"
}
},
+ "node_modules/@esbuild/openharmony-arm64": {
+ "version": "0.25.12",
+ "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.25.12.tgz",
+ "integrity": "sha512-rm0YWsqUSRrjncSXGA7Zv78Nbnw4XL6/dzr20cyrQf7ZmRcsovpcRBdhD43Nuk3y7XIoW2OxMVvwuRvk9XdASg==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "openharmony"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
"node_modules/@esbuild/sunos-x64": {
- "version": "0.24.2",
- "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.24.2.tgz",
- "integrity": "sha512-hTdsW27jcktEvpwNHJU4ZwWFGkz2zRJUz8pvddmXPtXDzVKTTINmlmga3ZzwcuMpUvLw7JkLy9QLKyGpD2Yxig==",
+ "version": "0.25.12",
+ "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.12.tgz",
+ "integrity": "sha512-3wGSCDyuTHQUzt0nV7bocDy72r2lI33QL3gkDNGkod22EsYl04sMf0qLb8luNKTOmgF/eDEDP5BFNwoBKH441w==",
"cpu": [
"x64"
],
@@ -388,9 +405,9 @@
}
},
"node_modules/@esbuild/win32-arm64": {
- "version": "0.24.2",
- "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.24.2.tgz",
- "integrity": "sha512-LihEQ2BBKVFLOC9ZItT9iFprsE9tqjDjnbulhHoFxYQtQfai7qfluVODIYxt1PgdoyQkz23+01rzwNwYfutxUQ==",
+ "version": "0.25.12",
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.12.tgz",
+ "integrity": "sha512-rMmLrur64A7+DKlnSuwqUdRKyd3UE7oPJZmnljqEptesKM8wx9J8gx5u0+9Pq0fQQW8vqeKebwNXdfOyP+8Bsg==",
"cpu": [
"arm64"
],
@@ -405,9 +422,9 @@
}
},
"node_modules/@esbuild/win32-ia32": {
- "version": "0.24.2",
- "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.24.2.tgz",
- "integrity": "sha512-q+iGUwfs8tncmFC9pcnD5IvRHAzmbwQ3GPS5/ceCyHdjXubwQWI12MKWSNSMYLJMq23/IUCvJMS76PDqXe1fxA==",
+ "version": "0.25.12",
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.12.tgz",
+ "integrity": "sha512-HkqnmmBoCbCwxUKKNPBixiWDGCpQGVsrQfJoVGYLPT41XWF8lHuE5N6WhVia2n4o5QK5M4tYr21827fNhi4byQ==",
"cpu": [
"ia32"
],
@@ -422,9 +439,9 @@
}
},
"node_modules/@esbuild/win32-x64": {
- "version": "0.24.2",
- "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.24.2.tgz",
- "integrity": "sha512-7VTgWzgMGvup6aSqDPLiW5zHaxYJGTO4OokMjIlrCtf+VpEL+cXKtCvg723iguPYI5oaUNdS+/V7OU2gvXVWEg==",
+ "version": "0.25.12",
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.12.tgz",
+ "integrity": "sha512-alJC0uCZpTFrSL0CCDjcgleBXPnCrEAhTBILpeAp7M/OFgoqtAetfBzX0xM00MUsVVPpVjlPuMbREqnZCXaTnA==",
"cpu": [
"x64"
],
@@ -480,9 +497,9 @@
}
},
"node_modules/esbuild": {
- "version": "0.24.2",
- "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.24.2.tgz",
- "integrity": "sha512-+9egpBW8I3CD5XPe0n6BfT5fxLzxrlDzqydF3aviG+9ni1lDC/OvMHcxqEFV0+LANZG5R1bFMWfUrjVsdwxJvA==",
+ "version": "0.25.12",
+ "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.12.tgz",
+ "integrity": "sha512-bbPBYYrtZbkt6Os6FiTLCTFxvq4tt3JKall1vRwshA3fdVztsLAatFaZobhkBC8/BrPetoa0oksYoKXoG4ryJg==",
"dev": true,
"hasInstallScript": true,
"license": "MIT",
@@ -493,31 +510,32 @@
"node": ">=18"
},
"optionalDependencies": {
- "@esbuild/aix-ppc64": "0.24.2",
- "@esbuild/android-arm": "0.24.2",
- "@esbuild/android-arm64": "0.24.2",
- "@esbuild/android-x64": "0.24.2",
- "@esbuild/darwin-arm64": "0.24.2",
- "@esbuild/darwin-x64": "0.24.2",
- "@esbuild/freebsd-arm64": "0.24.2",
- "@esbuild/freebsd-x64": "0.24.2",
- "@esbuild/linux-arm": "0.24.2",
- "@esbuild/linux-arm64": "0.24.2",
- "@esbuild/linux-ia32": "0.24.2",
- "@esbuild/linux-loong64": "0.24.2",
- "@esbuild/linux-mips64el": "0.24.2",
- "@esbuild/linux-ppc64": "0.24.2",
- "@esbuild/linux-riscv64": "0.24.2",
- "@esbuild/linux-s390x": "0.24.2",
- "@esbuild/linux-x64": "0.24.2",
- "@esbuild/netbsd-arm64": "0.24.2",
- "@esbuild/netbsd-x64": "0.24.2",
- "@esbuild/openbsd-arm64": "0.24.2",
- "@esbuild/openbsd-x64": "0.24.2",
- "@esbuild/sunos-x64": "0.24.2",
- "@esbuild/win32-arm64": "0.24.2",
- "@esbuild/win32-ia32": "0.24.2",
- "@esbuild/win32-x64": "0.24.2"
+ "@esbuild/aix-ppc64": "0.25.12",
+ "@esbuild/android-arm": "0.25.12",
+ "@esbuild/android-arm64": "0.25.12",
+ "@esbuild/android-x64": "0.25.12",
+ "@esbuild/darwin-arm64": "0.25.12",
+ "@esbuild/darwin-x64": "0.25.12",
+ "@esbuild/freebsd-arm64": "0.25.12",
+ "@esbuild/freebsd-x64": "0.25.12",
+ "@esbuild/linux-arm": "0.25.12",
+ "@esbuild/linux-arm64": "0.25.12",
+ "@esbuild/linux-ia32": "0.25.12",
+ "@esbuild/linux-loong64": "0.25.12",
+ "@esbuild/linux-mips64el": "0.25.12",
+ "@esbuild/linux-ppc64": "0.25.12",
+ "@esbuild/linux-riscv64": "0.25.12",
+ "@esbuild/linux-s390x": "0.25.12",
+ "@esbuild/linux-x64": "0.25.12",
+ "@esbuild/netbsd-arm64": "0.25.12",
+ "@esbuild/netbsd-x64": "0.25.12",
+ "@esbuild/openbsd-arm64": "0.25.12",
+ "@esbuild/openbsd-x64": "0.25.12",
+ "@esbuild/openharmony-arm64": "0.25.12",
+ "@esbuild/sunos-x64": "0.25.12",
+ "@esbuild/win32-arm64": "0.25.12",
+ "@esbuild/win32-ia32": "0.25.12",
+ "@esbuild/win32-x64": "0.25.12"
}
},
"node_modules/jquery": {
diff --git a/src/trendify/viewer/templates/static/ts/package.json b/src/trendify/viewer/templates/static/ts/package.json
index 2253a1d..4eea1c9 100644
--- a/src/trendify/viewer/templates/static/ts/package.json
+++ b/src/trendify/viewer/templates/static/ts/package.json
@@ -10,7 +10,7 @@
"@types/jquery": "^3.5.30",
"@types/plotly.js": "^3.0.10",
"datatables.net": "^2.3.8",
- "esbuild": "^0.24.0",
+ "esbuild": "^0.25.0",
"typescript": "^5.6.0"
}
}