@lunora/studio 1.0.0-alpha.122 → 1.0.0-alpha.124

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (168) hide show
  1. package/dist/index.d.ts +46 -1
  2. package/dist/index.js +1 -1
  3. package/dist/mount.js +1 -1
  4. package/dist/packem_chunks/AdvisorHealthPanel.js +1 -1
  5. package/dist/packem_chunks/ApiTab.js +1 -1
  6. package/dist/packem_chunks/AuditPanel.js +1 -1
  7. package/dist/packem_chunks/DeploymentHealthPanel.js +1 -1
  8. package/dist/packem_chunks/ExportImportPanel.js +1 -1
  9. package/dist/packem_chunks/FileBrowser.js +1 -1
  10. package/dist/packem_chunks/FunctionRunner.js +1 -1
  11. package/dist/packem_chunks/FunctionStatsPanel.js +1 -1
  12. package/dist/packem_chunks/HealthPanel.js +1 -1
  13. package/dist/packem_chunks/InsightsPanel.js +1 -1
  14. package/dist/packem_chunks/LogsPanel.js +1 -1
  15. package/dist/packem_chunks/MailPanel.js +1 -1
  16. package/dist/packem_chunks/MetricsPanel.js +1 -1
  17. package/dist/packem_chunks/NotificationsPanel.js +1 -1
  18. package/dist/packem_chunks/PitrPanel.js +1 -1
  19. package/dist/packem_chunks/SchemaViewer.js +1 -1
  20. package/dist/packem_chunks/SecurityAdvisorPanel.js +1 -1
  21. package/dist/packem_chunks/SettingsPanel.js +1 -1
  22. package/dist/packem_chunks/SqlEditorPanel.js +1 -1
  23. package/dist/packem_chunks/TableEditor.js +1 -1
  24. package/dist/packem_chunks/agents-panel.js +1 -1
  25. package/dist/packem_chunks/analytics-panel.js +1 -1
  26. package/dist/packem_chunks/auth-audit-panel.js +1 -1
  27. package/dist/packem_chunks/auth-config-panel.js +1 -1
  28. package/dist/packem_chunks/auth-sessions-panel.js +1 -1
  29. package/dist/packem_chunks/containers-panel.js +1 -1
  30. package/dist/packem_chunks/dashboards-panel.js +1 -1
  31. package/dist/packem_chunks/evals-panel.js +1 -1
  32. package/dist/packem_chunks/fanout-panel.js +1 -1
  33. package/dist/packem_chunks/flags-panel.js +1 -1
  34. package/dist/packem_chunks/issues-panel.js +1 -1
  35. package/dist/packem_chunks/kv-browser.js +1 -1
  36. package/dist/packem_chunks/log-drains-panel.js +1 -1
  37. package/dist/packem_chunks/migrations-route.js +1 -1
  38. package/dist/packem_chunks/organizations-panel.js +1 -1
  39. package/dist/packem_chunks/payments-panel.js +1 -1
  40. package/dist/packem_chunks/permissions-panel.js +1 -1
  41. package/dist/packem_chunks/queues-panel.js +1 -1
  42. package/dist/packem_chunks/reactors-panel.js +1 -1
  43. package/dist/packem_chunks/rls-panel.js +1 -1
  44. package/dist/packem_chunks/schedule-panel.js +1 -1
  45. package/dist/packem_chunks/storage-rules-panel.js +1 -1
  46. package/dist/packem_chunks/subscriptions-panel.js +1 -1
  47. package/dist/packem_chunks/sync-client-panel.js +1 -1
  48. package/dist/packem_chunks/traces-panel.js +1 -1
  49. package/dist/packem_chunks/users-panel.js +1 -1
  50. package/dist/packem_chunks/vector-browser.js +1 -1
  51. package/dist/packem_chunks/workflows-panel.js +1 -1
  52. package/dist/packem_shared/{ApiDocsPanel-BMzLPgvv.js → ApiDocsPanel-Du1L7Ysj.js} +1 -1
  53. package/dist/packem_shared/{ApiReferencePanel-CZDVN7zg.js → ApiReferencePanel-uGgGOBYj.js} +1 -1
  54. package/dist/packem_shared/{CommandPalette-kQLn0xlS.js → CommandPalette-HqiXrWIm.js} +1 -1
  55. package/dist/packem_shared/DataBrowser-W5TxvLB8.js +4 -0
  56. package/dist/packem_shared/GlobalDataBrowser-LFznuyGe.js +1 -0
  57. package/dist/packem_shared/{HomePanel-B-tcMcTZ.js → HomePanel-DmB0EKjl.js} +1 -1
  58. package/dist/packem_shared/{MigrationsPanel-CLRWwPyL.js → MigrationsPanel-BDNt136v.js} +1 -1
  59. package/dist/packem_shared/{OpenRpcReferencePanel-XoYdKuMg.js → OpenRpcReferencePanel-DgrpASYD.js} +1 -1
  60. package/dist/packem_shared/{ScheduledJobs-DRmOKtDa.js → ScheduledJobs-CiO3eXgI.js} +1 -1
  61. package/dist/packem_shared/Studio-CkNE_tEy.js +1 -0
  62. package/dist/packem_shared/{StudioApp-Bxmtp-Fi.js → StudioApp-BZP_0E2n.js} +1 -1
  63. package/dist/packem_shared/{advisor-view-CqCG22DB.js → advisor-view-C1KFTXSH.js} +1 -1
  64. package/dist/packem_shared/control-button-BOZ5K-FC.js +1 -0
  65. package/dist/packem_shared/{data-grid-pjv4t5Yi.js → data-grid-BFTQnkXq.js} +1 -1
  66. package/dist/packem_shared/{error-alert-CKqB2CiN.js → error-alert-TYdKetJd.js} +1 -1
  67. package/dist/packem_shared/grid-features-jBzZGauv.js +6 -0
  68. package/dist/packem_shared/{home-panel-ecz6-nHV.js → home-panel-DHOa3sxt.js} +1 -1
  69. package/dist/packem_shared/{internal-7bgd8inO.js → internal-CwaF9YNk.js} +1 -1
  70. package/dist/packem_shared/{log-line-D0XBZaDn.js → log-line-UnE93Ovi.js} +1 -1
  71. package/dist/packem_shared/quote-identifier-CGiYFBvY.js +1 -0
  72. package/dist/packem_shared/{recording-client-BPY8sYUl.js → recording-client-CKn4-vUx.js} +1 -1
  73. package/dist/packem_shared/{reference-view-DY3CaRxH.js → reference-view-BU2dNK9Z.js} +1 -1
  74. package/dist/packem_shared/{schema-diagram-DLhppqVE.js → schema-diagram-DOaIh1y6.js} +1 -1
  75. package/dist/packem_shared/{sql-result-table-blxdNVJ0.js → sql-result-table-CqlZo2QN.js} +1 -1
  76. package/dist/packem_shared/{studio-Cvdwfzxm.js → studio-CXai1O2K.js} +1 -1
  77. package/dist/packem_shared/table-list-sidebar-BWq_-gtu.js +1 -0
  78. package/dist/packem_shared/{use-admin-query-DV9xmFl8.js → use-admin-query-P0RJrjsD.js} +1 -1
  79. package/dist/packem_shared/{use-async-submit-C9xXjXWX.js → use-async-submit-DdLd0MdK.js} +1 -1
  80. package/dist/packem_shared/{use-auth-config-DIAyVsa3.js → use-auth-config-z3KRWAqD.js} +1 -1
  81. package/dist/packem_shared/{use-open-trace-ClAdPkGD.js → use-open-trace-4mqqFWrn.js} +1 -1
  82. package/dist/packem_shared/{use-sql-assistant-CXgVX_PP.js → use-sql-assistant-D1K2LqpO.js} +1 -1
  83. package/dist/standalone/{chunk-5XMZP64Z.js → chunk-26VREVWU.js} +1 -1
  84. package/dist/standalone/{chunk-K3SXMDKL.js → chunk-2XWSDIDE.js} +1 -1
  85. package/dist/standalone/{chunk-R7EV3YND.js → chunk-3XH6Y5XR.js} +1 -1
  86. package/dist/standalone/chunk-443UDYWL.js +6 -0
  87. package/dist/standalone/{chunk-EIWXXEVA.js → chunk-4NIGWKLB.js} +1 -1
  88. package/dist/standalone/{chunk-TCAX32PK.js → chunk-52EGR2D7.js} +1 -1
  89. package/dist/standalone/{chunk-2HW5M4MK.js → chunk-52XAAEXT.js} +1 -1
  90. package/dist/standalone/{chunk-7MO56FXL.js → chunk-5AZRLELE.js} +1 -1
  91. package/dist/standalone/{chunk-DXXXNZ3P.js → chunk-5RC2J7EQ.js} +1 -1
  92. package/dist/standalone/{chunk-7EOXUWAI.js → chunk-6OP4OPZL.js} +1 -1
  93. package/dist/standalone/{chunk-BKM6PMSO.js → chunk-6ZPTNC34.js} +1 -1
  94. package/dist/standalone/{chunk-T7DJP5HM.js → chunk-76YLMHR3.js} +1 -1
  95. package/dist/standalone/{chunk-UBT2FIU5.js → chunk-BFCUKERU.js} +1 -1
  96. package/dist/standalone/{chunk-33TNFS73.js → chunk-C4KVCFWK.js} +1 -1
  97. package/dist/standalone/{chunk-5DEXJ766.js → chunk-CDSCHFAO.js} +1 -1
  98. package/dist/standalone/{chunk-GISVVEPU.js → chunk-CORGKNPG.js} +1 -1
  99. package/dist/standalone/{chunk-KNI5YDPT.js → chunk-CXCSFWBE.js} +1 -1
  100. package/dist/standalone/{chunk-SQSMHFA7.js → chunk-CXYGKZKS.js} +1 -1
  101. package/dist/standalone/{chunk-GDC3W3DZ.js → chunk-DPNKDUJC.js} +1 -1
  102. package/dist/standalone/{chunk-POD66K2Y.js → chunk-EKZA2SNK.js} +1 -1
  103. package/dist/standalone/{chunk-VYW2PAWC.js → chunk-FDLSPDIC.js} +4 -4
  104. package/dist/standalone/{chunk-XYWLXNTV.js → chunk-FJ57FLS4.js} +1 -1
  105. package/dist/standalone/{chunk-2EWSVBWG.js → chunk-FM2JJJO7.js} +1 -1
  106. package/dist/standalone/{chunk-UDCFI5NF.js → chunk-FW2XISZX.js} +1 -1
  107. package/dist/standalone/{chunk-THTL2KBP.js → chunk-FZQVGJMN.js} +1 -1
  108. package/dist/standalone/{chunk-FKXX3Y2J.js → chunk-GHYRLOMN.js} +1 -1
  109. package/dist/standalone/{chunk-6AJONHNM.js → chunk-GIQDEWC4.js} +1 -1
  110. package/dist/standalone/{chunk-TI5RJJRX.js → chunk-HBOCJUOG.js} +1 -1
  111. package/dist/standalone/chunk-HHVCAFE5.js +7 -0
  112. package/dist/standalone/{chunk-E4RVRJHD.js → chunk-HKEMILZM.js} +1 -1
  113. package/dist/standalone/{chunk-GNN5HJ56.js → chunk-ICIYR6A6.js} +1 -1
  114. package/dist/standalone/{chunk-JCSDJBBZ.js → chunk-JCSKFOWL.js} +1 -1
  115. package/dist/standalone/{chunk-UFUOW6UJ.js → chunk-JSRBQSJF.js} +1 -1
  116. package/dist/standalone/{chunk-E6P2ERQV.js → chunk-JURAVSE7.js} +1 -1
  117. package/dist/standalone/chunk-KIU56OEQ.js +11 -0
  118. package/dist/standalone/{chunk-B6YM5NAF.js → chunk-KN3HN3RR.js} +1 -1
  119. package/dist/standalone/chunk-LCQ5HHRP.js +1 -0
  120. package/dist/standalone/{chunk-MTGEDJQH.js → chunk-LY2DCTSE.js} +1 -1
  121. package/dist/standalone/{chunk-VJQAOU2U.js → chunk-MR7UZGEN.js} +1 -1
  122. package/dist/standalone/{chunk-4HWTEDVV.js → chunk-MV7VAZWZ.js} +1 -1
  123. package/dist/standalone/{chunk-AVBUV42G.js → chunk-N3BGHNUY.js} +1 -1
  124. package/dist/standalone/{chunk-MHB2TOAK.js → chunk-NF2SQSOU.js} +1 -1
  125. package/dist/standalone/{chunk-XL2OT5WB.js → chunk-NNLNQKT7.js} +1 -1
  126. package/dist/standalone/chunk-O5MAFDY2.js +1 -0
  127. package/dist/standalone/{chunk-2FFV3NB7.js → chunk-O7SUXUZM.js} +1 -1
  128. package/dist/standalone/{chunk-MLYZZD5C.js → chunk-OE4KGVJW.js} +1 -1
  129. package/dist/standalone/{chunk-2EJQ7SPV.js → chunk-OG57FC7W.js} +1 -1
  130. package/dist/standalone/{chunk-O4RQGUJ7.js → chunk-PC77ZYDR.js} +1 -1
  131. package/dist/standalone/{chunk-PAJQOSEU.js → chunk-QEF6JA57.js} +1 -1
  132. package/dist/standalone/chunk-QHQTOESO.js +1 -0
  133. package/dist/standalone/{chunk-PGTCEMBA.js → chunk-QQHMGTOT.js} +1 -1
  134. package/dist/standalone/{chunk-KTEVBZIV.js → chunk-QWARY4R4.js} +1 -1
  135. package/dist/standalone/{chunk-QBONDY5I.js → chunk-RBD64CEG.js} +1 -1
  136. package/dist/standalone/chunk-RCCQVHVD.js +1 -0
  137. package/dist/standalone/{chunk-VTFMI4DC.js → chunk-RO6ZQZVK.js} +1 -1
  138. package/dist/standalone/{chunk-KJNDUIZG.js → chunk-S7CPEVEC.js} +1 -1
  139. package/dist/standalone/{chunk-XOA5TTRA.js → chunk-SQMJUXBA.js} +1 -1
  140. package/dist/standalone/{chunk-YMVKAXBC.js → chunk-SRQP7SLQ.js} +1 -1
  141. package/dist/standalone/{chunk-TKKRBSUB.js → chunk-SXDZK4EN.js} +1 -1
  142. package/dist/standalone/{chunk-6UN4V2HB.js → chunk-TB5N24CM.js} +1 -1
  143. package/dist/standalone/{chunk-TDH7K7E7.js → chunk-USM7ZIHK.js} +1 -1
  144. package/dist/standalone/{chunk-MG7VPUFA.js → chunk-V6QPVFDL.js} +1 -1
  145. package/dist/standalone/{chunk-U2FRMJAN.js → chunk-VKJS3O3E.js} +1 -1
  146. package/dist/standalone/{chunk-OCZ2IP5A.js → chunk-VLIRSGFL.js} +1 -1
  147. package/dist/standalone/{chunk-3K4F3B56.js → chunk-W5WKMQFK.js} +1 -1
  148. package/dist/standalone/{chunk-U32MMDFO.js → chunk-WED7GO6G.js} +2 -2
  149. package/dist/standalone/{chunk-KR6SZXOI.js → chunk-WJOMJPWF.js} +1 -1
  150. package/dist/standalone/{chunk-RAFPVMXJ.js → chunk-X2CXZPPL.js} +1 -1
  151. package/dist/standalone/{chunk-N7PPYEHW.js → chunk-XT5DGCBY.js} +1 -1
  152. package/dist/standalone/{chunk-ZWATJNSU.js → chunk-YGGQHUKC.js} +1 -1
  153. package/dist/standalone/{chunk-2AJMY73I.js → chunk-YNIOJEFL.js} +1 -1
  154. package/dist/standalone/{chunk-3WFIPW6W.js → chunk-Z5HOZ3HK.js} +1 -1
  155. package/dist/standalone/{chunk-4O7MEQMU.js → chunk-ZQMNQ2EZ.js} +1 -1
  156. package/dist/standalone/studio.js +1 -1
  157. package/package.json +6 -6
  158. package/dist/packem_shared/DataBrowser-C68K5QHO.js +0 -4
  159. package/dist/packem_shared/GlobalDataBrowser-BHFgEqMl.js +0 -1
  160. package/dist/packem_shared/Studio-BYdUxnM5.js +0 -1
  161. package/dist/packem_shared/grid-features-AzpmpR3Q.js +0 -6
  162. package/dist/packem_shared/table-list-sidebar-BCxqrZ0s.js +0 -1
  163. package/dist/standalone/chunk-5QAT5NQ4.js +0 -1
  164. package/dist/standalone/chunk-5VKIJNHE.js +0 -1
  165. package/dist/standalone/chunk-7CVIN6KU.js +0 -6
  166. package/dist/standalone/chunk-FS7FGJOU.js +0 -1
  167. package/dist/standalone/chunk-ICQTVV6U.js +0 -7
  168. package/dist/standalone/chunk-NIUA7EHL.js +0 -11
@@ -1 +1 @@
1
- import{c as Q}from"react/compiler-runtime";import{useLunora as A}from"@lunora/react";import{useQueryClient as g,useQuery as R,keepPreviousData as _}from"@tanstack/react-query";import{useState as M,useEffect as P}from"react";import{c as b,d as v,f as I,b as T}from"./internal-7bgd8inO.js";const S=300,l=e=>typeof e=="string"?e===""?void 0:e:typeof e=="number"||typeof e=="boolean"?String(e):void 0,d=e=>e.filter(t=>t!==void 0).join(" "),K={deleteRows:e=>d([l(e.table),Array.isArray(e.ids)?`${String(e.ids.length)} rows`:void 0]),facetColumn:e=>d([l(e.table),l(e.column)]),lintSql:()=>"sql",readTablePage:e=>d([l(e.table),Array.isArray(e.filters)&&e.filters.length>0?`${String(e.filters.length)} filters`:void 0,typeof e.search=="string"&&e.search!==""?"search":void 0,typeof e.limit=="number"?`limit ${String(e.limit)}`:void 0]),runMigration:e=>d([l(e.id),l(e.direction),e.dryRun===!0?"dry-run":void 0]),runSql:e=>typeof e.sql=="string"?`${String(e.sql.length)} chars`:"",schemaVersion:e=>typeof e.hash=="string"?e.hash.slice(0,8):"",writeRow:e=>d([l(e.table),"1 row"])},q="__lunora_admin__:",j=(e,t)=>{const r=e.startsWith(q)?e.slice(q.length):e,s=K[r];if(s!==void 0)return s(t);const i=Object.keys(t);return i.length===0?"":i.join(", ")},x=e=>{if(Array.isArray(e))return e.length;if(!(typeof e!="object"||e===null)){for(const t of Object.values(e))if(Array.isArray(t))return t.length}};class C{entries=[];listeners=new Set;nextSeq=1;getSnapshot=()=>this.entries;subscribe=t=>(this.listeners.add(t),()=>{this.listeners.delete(t)});start(t,r,s){return this.append(t,r,s,"call","pending")}startSubscription(t,r,s){return this.append(t,r,s,"subscription","live")}recordPush(t){if(this.listeners.size===0){const r=this.entries.find(s=>s.seq===t);r!==void 0&&(r.pushes=(r.pushes??0)+1);return}this.patch(t,r=>({...r,pushes:(r.pushes??0)+1}))}failSubscription(t,r){this.patch(t,s=>({...s,error:r,status:"error"}))}endSubscription(t){this.patch(t,r=>r.status==="error"?r:{...r,durationMs:Date.now()-r.startedAt,status:"closed"})}lastErrorSeq(){return this.entries.findLast(t=>t.status==="error")?.seq}settle(t,r){this.patch(t,s=>({...s,durationMs:Date.now()-s.startedAt,...r.error===void 0?{resultCount:x(r.result),status:"ok"}:{error:r.error,status:"error"}}))}clear(){this.entries=[],this.emit()}append(t,r,s,i,n){const u=this.nextSeq;this.nextSeq+=1;const c={functionPath:t,kind:i,seq:u,shardKey:s,startedAt:Date.now(),status:n,summary:j(t,r),...i==="subscription"?{pushes:0}:{}},o=[...this.entries,c];return this.entries=o.length>S?o.slice(o.length-S):o,this.emit(),u}patch(t,r){const s=this.entries.findIndex(i=>i.seq===t);s!==-1&&(this.entries=this.entries.with(s,r(this.entries[s])),this.emit())}emit(){for(const t of this.listeners)t()}}const f=new C,w=(e,t,r)=>["lunora-admin",e,t,r.trim()],E=(e,t)=>[...e,t];function F(e,t,r={}){const s=A(),{enabled:i=!0,keepPreviousData:n=!1,staleTime:u=0}=r,c=E(e,s.clientIdentifier()),a=R({enabled:i,queryFn:t,placeholderData:n?_:void 0,queryKey:c,staleTime:u});return{data:a.data,error:a.error?T(a.error):a.error,errorSource:a.error??void 0,isLoading:a.isLoading,liveError:void 0,refetch:()=>{I(a.refetch())}}}function J(e,t,r={}){const s=A(),i=g(),{enabled:n=!0,keepPreviousData:u=!1,live:c=!1,shardKey:o="",staleTime:a}=r,p=w(e,t,o),D=F(p,()=>s.query(b(e),t,v(o)),{enabled:n,keepPreviousData:u,staleTime:a??(c?Number.POSITIVE_INFINITY:0)}),[k,y]=M(void 0),L=JSON.stringify(p);return P(()=>{if(!n||!c)return;y(void 0);const m=f.startSubscription(e,t,o),O=s.subscribe(b(e),t,h=>{f.recordPush(m),y(void 0),i.setQueryData(E(p,s.clientIdentifier()),h)},{...v(o),onError:h=>{f.failSubscription(m,h.message),y(h.message)}});return()=>{f.endSubscription(m),O()}},[L,n,c]),{...D,liveError:n&&c?k:void 0}}const U=()=>{const e=Q(2),t=g();let r;return e[0]!==t?(r=(s,i,n)=>{const u=i===void 0?["lunora-admin",s]:w(s,i,n??"");I(t.invalidateQueries({queryKey:u}))},e[0]=t,e[1]=r):r=e[1],r};export{U as a,F as b,f as o,J as u};
1
+ import{c as Q}from"react/compiler-runtime";import{useLunora as A}from"@lunora/react";import{useQueryClient as g,useQuery as R,keepPreviousData as _}from"@tanstack/react-query";import{useState as M,useEffect as P}from"react";import{c as b,d as v,f as I,b as T}from"./internal-CwaF9YNk.js";const S=300,l=e=>typeof e=="string"?e===""?void 0:e:typeof e=="number"||typeof e=="boolean"?String(e):void 0,d=e=>e.filter(t=>t!==void 0).join(" "),K={deleteRows:e=>d([l(e.table),Array.isArray(e.ids)?`${String(e.ids.length)} rows`:void 0]),facetColumn:e=>d([l(e.table),l(e.column)]),lintSql:()=>"sql",readTablePage:e=>d([l(e.table),Array.isArray(e.filters)&&e.filters.length>0?`${String(e.filters.length)} filters`:void 0,typeof e.search=="string"&&e.search!==""?"search":void 0,typeof e.limit=="number"?`limit ${String(e.limit)}`:void 0]),runMigration:e=>d([l(e.id),l(e.direction),e.dryRun===!0?"dry-run":void 0]),runSql:e=>typeof e.sql=="string"?`${String(e.sql.length)} chars`:"",schemaVersion:e=>typeof e.hash=="string"?e.hash.slice(0,8):"",writeRow:e=>d([l(e.table),"1 row"])},q="__lunora_admin__:",j=(e,t)=>{const r=e.startsWith(q)?e.slice(q.length):e,s=K[r];if(s!==void 0)return s(t);const i=Object.keys(t);return i.length===0?"":i.join(", ")},x=e=>{if(Array.isArray(e))return e.length;if(!(typeof e!="object"||e===null)){for(const t of Object.values(e))if(Array.isArray(t))return t.length}};class C{entries=[];listeners=new Set;nextSeq=1;getSnapshot=()=>this.entries;subscribe=t=>(this.listeners.add(t),()=>{this.listeners.delete(t)});start(t,r,s){return this.append(t,r,s,"call","pending")}startSubscription(t,r,s){return this.append(t,r,s,"subscription","live")}recordPush(t){if(this.listeners.size===0){const r=this.entries.find(s=>s.seq===t);r!==void 0&&(r.pushes=(r.pushes??0)+1);return}this.patch(t,r=>({...r,pushes:(r.pushes??0)+1}))}failSubscription(t,r){this.patch(t,s=>({...s,error:r,status:"error"}))}endSubscription(t){this.patch(t,r=>r.status==="error"?r:{...r,durationMs:Date.now()-r.startedAt,status:"closed"})}lastErrorSeq(){return this.entries.findLast(t=>t.status==="error")?.seq}settle(t,r){this.patch(t,s=>({...s,durationMs:Date.now()-s.startedAt,...r.error===void 0?{resultCount:x(r.result),status:"ok"}:{error:r.error,status:"error"}}))}clear(){this.entries=[],this.emit()}append(t,r,s,i,n){const u=this.nextSeq;this.nextSeq+=1;const c={functionPath:t,kind:i,seq:u,shardKey:s,startedAt:Date.now(),status:n,summary:j(t,r),...i==="subscription"?{pushes:0}:{}},o=[...this.entries,c];return this.entries=o.length>S?o.slice(o.length-S):o,this.emit(),u}patch(t,r){const s=this.entries.findIndex(i=>i.seq===t);s!==-1&&(this.entries=this.entries.with(s,r(this.entries[s])),this.emit())}emit(){for(const t of this.listeners)t()}}const f=new C,w=(e,t,r)=>["lunora-admin",e,t,r.trim()],E=(e,t)=>[...e,t];function F(e,t,r={}){const s=A(),{enabled:i=!0,keepPreviousData:n=!1,staleTime:u=0}=r,c=E(e,s.clientIdentifier()),a=R({enabled:i,queryFn:t,placeholderData:n?_:void 0,queryKey:c,staleTime:u});return{data:a.data,error:a.error?T(a.error):a.error,errorSource:a.error??void 0,isLoading:a.isLoading,liveError:void 0,refetch:()=>{I(a.refetch())}}}function J(e,t,r={}){const s=A(),i=g(),{enabled:n=!0,keepPreviousData:u=!1,live:c=!1,shardKey:o="",staleTime:a}=r,p=w(e,t,o),D=F(p,()=>s.query(b(e),t,v(o)),{enabled:n,keepPreviousData:u,staleTime:a??(c?Number.POSITIVE_INFINITY:0)}),[k,y]=M(void 0),L=JSON.stringify(p);return P(()=>{if(!n||!c)return;y(void 0);const m=f.startSubscription(e,t,o),O=s.subscribe(b(e),t,h=>{f.recordPush(m),y(void 0),i.setQueryData(E(p,s.clientIdentifier()),h)},{...v(o),onError:h=>{f.failSubscription(m,h.message),y(h.message)}});return()=>{f.endSubscription(m),O()}},[L,n,c]),{...D,liveError:n&&c?k:void 0}}const U=()=>{const e=Q(2),t=g();let r;return e[0]!==t?(r=(s,i,n)=>{const u=i===void 0?["lunora-admin",s]:w(s,i,n??"");I(t.invalidateQueries({queryKey:u}))},e[0]=t,e[1]=r):r=e[1],r};export{U as a,F as b,f as o,J as u};
@@ -1 +1 @@
1
- import{c as m}from"react/compiler-runtime";import{useState as a}from"react";import{f as i,b as y}from"./internal-7bgd8inO.js";const g=()=>{const r=m(4),[s,n]=a(!1),[o,c]=a(null);let e;r[0]===Symbol.for("react.memo_cache_sentinel")?(e=u=>{i((async()=>{n(!0),c(null);try{await u()}catch(f){c(y(f))}n(!1)})())},r[0]=e):e=r[0];const l=e;let t;return r[1]!==s||r[2]!==o?(t={busy:s,error:o,run:l},r[1]=s,r[2]=o,r[3]=t):t=r[3],t};export{g as u};
1
+ import{c as m}from"react/compiler-runtime";import{useState as a}from"react";import{f as i,b as y}from"./internal-CwaF9YNk.js";const g=()=>{const r=m(4),[s,n]=a(!1),[o,c]=a(null);let e;r[0]===Symbol.for("react.memo_cache_sentinel")?(e=u=>{i((async()=>{n(!0),c(null);try{await u()}catch(f){c(y(f))}n(!1)})())},r[0]=e):e=r[0];const l=e;let t;return r[1]!==s||r[2]!==o?(t={busy:s,error:o,run:l},r[1]=s,r[2]=o,r[3]=t):t=r[3],t};export{g as u};
@@ -1 +1 @@
1
- import{c}from"react/compiler-runtime";import{useLunora as f}from"@lunora/react";import{b as u}from"./use-admin-query-DV9xmFl8.js";const m={capabilities:{accounts:!0,admin:!0,organization:!1,passkey:!1,twoFactor:!1},emailAndPassword:!1,organization:{enabled:!1,roles:!1,teams:!1},plugins:[],rateLimit:{enabled:!1},session:{},socialProviders:[],userFields:[]},b=()=>{const e=c(6),o=f();let s;e[0]===Symbol.for("react.memo_cache_sentinel")?(s=["lunora-auth-config"],e[0]=s):s=e[0];let t;e[1]!==o?(t=()=>o.getAuthConfig(),e[1]=o,e[2]=t):t=e[2];const{data:l,isLoading:r}=u(s,t),i=l??m,n=!r;let a;return e[3]!==i||e[4]!==n?(a={config:i,ready:n},e[3]=i,e[4]=n,e[5]=a):a=e[5],a};export{m as D,b as u};
1
+ import{c}from"react/compiler-runtime";import{useLunora as f}from"@lunora/react";import{b as u}from"./use-admin-query-P0RJrjsD.js";const m={capabilities:{accounts:!0,admin:!0,organization:!1,passkey:!1,twoFactor:!1},emailAndPassword:!1,organization:{enabled:!1,roles:!1,teams:!1},plugins:[],rateLimit:{enabled:!1},session:{},socialProviders:[],userFields:[]},b=()=>{const e=c(6),o=f();let s;e[0]===Symbol.for("react.memo_cache_sentinel")?(s=["lunora-auth-config"],e[0]=s):s=e[0];let t;e[1]!==o?(t=()=>o.getAuthConfig(),e[1]=o,e[2]=t):t=e[2];const{data:l,isLoading:r}=u(s,t),i=l??m,n=!r;let a;return e[3]!==i||e[4]!==n?(a={config:i,ready:n},e[3]=i,e[4]=n,e[5]=a):a=e[5],a};export{m as D,b as u};
@@ -1 +1 @@
1
- import{c as n}from"react/compiler-runtime";import{useNavigate as a}from"@tanstack/react-router";import{f as m}from"./internal-7bgd8inO.js";import{w as s}from"./trace-handoff-z9sy89Ci.js";const u=r=>{const t=n(3),o=a();let e;return t[0]!==o||t[1]!==r?(e=i=>{s({shardKey:r,traceId:i}),m(o({to:"/traces"}))},t[0]=o,t[1]=r,t[2]=e):e=t[2],e};export{u};
1
+ import{c as n}from"react/compiler-runtime";import{useNavigate as a}from"@tanstack/react-router";import{f as m}from"./internal-CwaF9YNk.js";import{w as s}from"./trace-handoff-z9sy89Ci.js";const u=r=>{const t=n(3),o=a();let e;return t[0]!==o||t[1]!==r?(e=i=>{s({shardKey:r,traceId:i}),m(o({to:"/traces"}))},t[0]=o,t[1]=r,t[2]=e):e=t[2],e};export{u};
@@ -1 +1 @@
1
- import{useLunora as A}from"@lunora/react";import{useState as c}from"react";import{u as h}from"./use-admin-query-DV9xmFl8.js";import{ADMIN_FUNCTIONS as s}from"./ADMIN_FUNCTIONS-B6z7VLYt.js";import{d,c as l}from"./internal-7bgd8inO.js";const T={},_=l(s.aiGenerateSql),b=l(s.aiTableFilter),C=l(s.aiChartConfig),w=n=>{const o=A(),[f,u]=c({}),[v,g]=c({}),m=h(s.aiAvailable,T,{shardKey:n}),[p,y]=c(!1),q=p||m.data?.available===!1,i=e=>{u(r=>({...r,[e]:!0})),g(r=>({...r,[e]:void 0}))},a=(e,r)=>{u(t=>({...t,[e]:!1})),r!==void 0&&g(t=>({...t,[e]:r})),r==="no-ai-binding"&&y(!0)};return{generate:async(e,r)=>{i("sql");try{const{result:t}=await o.query(_,{failedError:r?.error,failedSql:r?.sql,prompt:e},d(n));return a("sql",t.degraded?t.reason:void 0),t.degraded?void 0:t.sql}catch{a("sql","ai-error");return}},inferChart:async e=>{i("chart");try{const{result:r}=await o.query(C,e,d(n));return a("chart",r.degraded?r.reason:void 0),r.degraded?void 0:r.chart}catch{a("chart","ai-error");return}},pending:e=>f[e]===!0,reason:e=>v[e],suggestFilter:async(e,r)=>{i("filter");try{const{result:t}=await o.query(b,{prompt:e,table:r},d(n));return a("filter",t.degraded?t.reason:void 0),t.degraded?void 0:t.clauses}catch{a("filter","ai-error");return}},unavailable:q}};export{w as u};
1
+ import{useLunora as A}from"@lunora/react";import{useState as c}from"react";import{u as h}from"./use-admin-query-P0RJrjsD.js";import{ADMIN_FUNCTIONS as s}from"./ADMIN_FUNCTIONS-B6z7VLYt.js";import{d,c as l}from"./internal-CwaF9YNk.js";const T={},_=l(s.aiGenerateSql),b=l(s.aiTableFilter),C=l(s.aiChartConfig),w=n=>{const o=A(),[f,u]=c({}),[v,g]=c({}),m=h(s.aiAvailable,T,{shardKey:n}),[p,y]=c(!1),q=p||m.data?.available===!1,i=e=>{u(r=>({...r,[e]:!0})),g(r=>({...r,[e]:void 0}))},a=(e,r)=>{u(t=>({...t,[e]:!1})),r!==void 0&&g(t=>({...t,[e]:r})),r==="no-ai-binding"&&y(!0)};return{generate:async(e,r)=>{i("sql");try{const{result:t}=await o.query(_,{failedError:r?.error,failedSql:r?.sql,prompt:e},d(n));return a("sql",t.degraded?t.reason:void 0),t.degraded?void 0:t.sql}catch{a("sql","ai-error");return}},inferChart:async e=>{i("chart");try{const{result:r}=await o.query(C,e,d(n));return a("chart",r.degraded?r.reason:void 0),r.degraded?void 0:r.chart}catch{a("chart","ai-error");return}},pending:e=>f[e]===!0,reason:e=>v[e],suggestFilter:async(e,r)=>{i("filter");try{const{result:t}=await o.query(b,{prompt:e,table:r},d(n));return a("filter",t.degraded?t.reason:void 0),t.degraded?void 0:t.clauses}catch{a("filter","ai-error");return}},unavailable:q}};export{w as u};
@@ -1 +1 @@
1
- import{a as x}from"./chunk-CAOUXOL7.js";import{b as h}from"./chunk-SPDZUX4P.js";import{s as v}from"./chunk-BKM6PMSO.js";import{a as g,d as p,f as k,g as y}from"./chunk-R5ZTCHCE.js";var N=p(k(),1);var l=p(y(),1);var b={debug:"secondary",error:"destructive",fatal:"destructive",info:"outline",log:"outline",trace:"outline",warn:"secondary"},F=g(w=>{let e=(0,N.c)(21),{entry:t}=w,c;e[0]!==t.fields?(c=x(t.fields),e[0]=t.fields,e[1]=c):c=e[1];let m=c,s;e[2]!==t.timestamp?(s=v(t.timestamp),e[2]=t.timestamp,e[3]=s):s=e[3];let r;e[4]!==s?(r=(0,l.jsx)("span",{className:"w-44 shrink-0 tabular-nums text-muted-foreground",role:"gridcell",children:s}),e[4]=s,e[5]=r):r=e[5];let u=b[t.level],a;e[6]!==t.level||e[7]!==u?(a=(0,l.jsx)("span",{className:"w-20 shrink-0",role:"gridcell",children:(0,l.jsx)(h,{variant:u,children:t.level})}),e[6]=t.level,e[7]=u,e[8]=a):a=e[8];let f=t.functionPath??"\u2014",n;e[9]!==f?(n=(0,l.jsx)("span",{className:"w-48 shrink-0 truncate text-muted-foreground",role:"gridcell",children:f}),e[9]=f,e[10]=n):n=e[10];let i;e[11]!==m?(i=m===""?null:(0,l.jsx)("span",{className:"ml-2 text-muted-foreground","data-testid":"lg-fields",children:m}),e[11]=m,e[12]=i):i=e[12];let o;e[13]!==t.message||e[14]!==i?(o=(0,l.jsxs)("span",{className:"flex-1 truncate",role:"gridcell",children:[t.message,i]}),e[13]=t.message,e[14]=i,e[15]=o):o=e[15];let d;return e[16]!==r||e[17]!==a||e[18]!==n||e[19]!==o?(d=(0,l.jsxs)(l.Fragment,{children:[r,a,n,o]}),e[16]=r,e[17]=a,e[18]=n,e[19]=o,e[20]=d):d=e[20],d},"B");export{b as a,F as b};
1
+ import{a as x}from"./chunk-CAOUXOL7.js";import{b as h}from"./chunk-SPDZUX4P.js";import{r as v}from"./chunk-6ZPTNC34.js";import{a as g,d as p,f as k,g as y}from"./chunk-R5ZTCHCE.js";var N=p(k(),1);var l=p(y(),1);var b={debug:"secondary",error:"destructive",fatal:"destructive",info:"outline",log:"outline",trace:"outline",warn:"secondary"},F=g(w=>{let e=(0,N.c)(21),{entry:t}=w,c;e[0]!==t.fields?(c=x(t.fields),e[0]=t.fields,e[1]=c):c=e[1];let m=c,s;e[2]!==t.timestamp?(s=v(t.timestamp),e[2]=t.timestamp,e[3]=s):s=e[3];let r;e[4]!==s?(r=(0,l.jsx)("span",{className:"w-44 shrink-0 tabular-nums text-muted-foreground",role:"gridcell",children:s}),e[4]=s,e[5]=r):r=e[5];let u=b[t.level],a;e[6]!==t.level||e[7]!==u?(a=(0,l.jsx)("span",{className:"w-20 shrink-0",role:"gridcell",children:(0,l.jsx)(h,{variant:u,children:t.level})}),e[6]=t.level,e[7]=u,e[8]=a):a=e[8];let f=t.functionPath??"\u2014",n;e[9]!==f?(n=(0,l.jsx)("span",{className:"w-48 shrink-0 truncate text-muted-foreground",role:"gridcell",children:f}),e[9]=f,e[10]=n):n=e[10];let i;e[11]!==m?(i=m===""?null:(0,l.jsx)("span",{className:"ml-2 text-muted-foreground","data-testid":"lg-fields",children:m}),e[11]=m,e[12]=i):i=e[12];let o;e[13]!==t.message||e[14]!==i?(o=(0,l.jsxs)("span",{className:"flex-1 truncate",role:"gridcell",children:[t.message,i]}),e[13]=t.message,e[14]=i,e[15]=o):o=e[15];let d;return e[16]!==r||e[17]!==a||e[18]!==n||e[19]!==o?(d=(0,l.jsxs)(l.Fragment,{children:[r,a,n,o]}),e[16]=r,e[17]=a,e[18]=n,e[19]=o,e[20]=d):d=e[20],d},"B");export{b as a,F as b};
@@ -1 +1 @@
1
- import{a as G}from"./chunk-METRMDIQ.js";import{a as x}from"./chunk-NXXGISFB.js";import{a as U}from"./chunk-6UN4V2HB.js";import{b as M}from"./chunk-KVSQKUWD.js";import"./chunk-ZHPDAJBM.js";import{P as O}from"./chunk-AOAJGSYZ.js";import"./chunk-TFMQSCGC.js";import{a as h}from"./chunk-BWEXJENB.js";import"./chunk-74ASA4WU.js";import"./chunk-XQS7KSHL.js";import{b as w}from"./chunk-SPDZUX4P.js";import"./chunk-7PIHTTND.js";import{a as E}from"./chunk-DZGOHOOE.js";import{f as D}from"./chunk-NIUA7EHL.js";import"./chunk-RCZTUWG3.js";import{d as K,e as _,f as z,h as B,o as P,s as q}from"./chunk-BKM6PMSO.js";import"./chunk-VYW2PAWC.js";import{a as s,d as J,e as ie,g as oe}from"./chunk-R5ZTCHCE.js";var i=J(ie(),1);var e=J(oe(),1);var de=s(r=>r.kind==="id"?r.table===void 0?"id":`id<${r.table}>`:r.kind==="array"?r.element===void 0?"array":`${r.element}[]`:r.kind,"oe"),le=s(r=>r===void 0||r.length===0?"()":`(${r.map(o=>`${o.name}${o.optional?"?":""}: ${de(o)}`).join(", ")})`,"ie"),ce=s(r=>{switch(r){case"array":return[];case"bigint":case"number":return 0;case"boolean":return!1;case"object":case"record":return{};default:return""}},"de"),ue=s(r=>{let o={};for(let a of r??[])a.optional||(o[a.name]=ce(a.kind));return JSON.stringify(o,void 0,2)},"le"),me=z(E.runAs),fe=10,pe=s(r=>r===void 0?"undefined":JSON.stringify(r,null,2),"me"),Fe=s(({functions:r,runAsIdentity:o=!1}={})=>{let a=K(),u=D(),[H,Q]=(0,i.useState)(null),[k,V]=(0,i.useState)(null),g=r??H??[],[I,S]=(0,i.useState)(""),[m,b]=(0,i.useState)("{}"),[c,F]=(0,i.useState)(""),[f,W]=(0,i.useState)(""),[v,p]=(0,i.useState)("idle"),[X,y]=(0,i.useState)(void 0),[C,N]=(0,i.useState)(null),[$,Y]=(0,i.useState)([]);(0,i.useEffect)(()=>{if(r!==void 0)return;let t=!1;return u.listFunctions().then(d=>(t||Q(d),d)).catch(d=>{t||V(B(d))}),()=>{t=!0}},[u,r]);let A=I===""?g[0]?.path??"":I,n=g.find(t=>t.path===A),Z=s(async()=>{if(!n)return;let t;try{t=m.trim()===""?{}:JSON.parse(m)}catch(l){p("error"),y(void 0),N(a("Invalid JSON args: {message}",{message:l.message}));return}let d={__lunoraRef:n.path},R=c.trim()===""?{}:{shardKey:c.trim()},j=o?f.trim():"",L=s(l=>{Y(T=>[{argsText:m,at:Date.now(),id:(T[0]?.id??0)+1,kind:n.kind,path:n.path,shardKey:c,status:l},...T].slice(0,fe))},"$");p("running"),N(null);try{let l=j===""?await _(u,n.kind,d,t,R):await u.query(me,{args:t,functionPath:n.path,userId:j},R);M(c),y(l),p("success"),L("success")}catch(l){y(void 0),N(l.message),p("error"),L("error")}},"J"),ee=s(t=>{S(t.path),b(t.argsText),F(t.shardKey)},"M"),te=s(t=>{S(t.target.value)},"P"),re=s(t=>{b(t.target.value)},"z"),ae=s(t=>{W(t.target.value)},"q"),se=s(()=>{P(Z())},"H"),ne=s(()=>{b(ue(n?.args))},"V");return(0,e.jsxs)("div",{className:"flex flex-col gap-4","data-testid":"lunora-function-runner",children:[k!==null&&(0,e.jsx)("p",{className:"text-sm text-destructive","data-testid":"function-discover-error",role:"alert",children:k}),(0,e.jsxs)("div",{className:"flex flex-col gap-4 rounded-xl border border-border bg-card p-4",children:[(0,e.jsxs)("div",{className:"flex flex-col gap-1.5",children:[(0,e.jsx)(x,{htmlFor:"function-select",children:a("Function")}),(0,e.jsx)("select",{"aria-label":a("Function"),className:"flex h-9 w-full rounded-md border border-input bg-transparent px-3 py-1 text-sm shadow-xs transition-[color,box-shadow] outline-none focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:cursor-not-allowed disabled:opacity-50","data-testid":"function-select",id:"function-select",onChange:te,value:A,children:g.map(t=>(0,e.jsxs)("option",{value:t.path,children:[t.path," (",t.kind,")"]},t.path))}),n!==void 0&&(0,e.jsxs)("p",{className:"text-xs text-muted-foreground",children:[(0,e.jsx)("span",{className:"mr-1.5 font-medium",children:a("Signature")}),(0,e.jsx)("code",{className:"font-mono","data-testid":"function-signature",children:le(n.args)})]})]}),(0,e.jsxs)("div",{className:"flex flex-col gap-1.5",children:[(0,e.jsxs)("div",{className:"flex items-center justify-between gap-2",children:[(0,e.jsx)(x,{htmlFor:"args-input",children:a("Arguments")}),(0,e.jsx)(h,{"data-testid":"prefill-button",disabled:n===void 0,onClick:ne,size:"xs",type:"button",variant:"ghost",children:a("Prefill")})]}),(0,e.jsx)(G,{"aria-label":a("Arguments"),className:"font-mono text-xs","data-testid":"args-input",id:"args-input",onChange:re,value:m})]}),(0,e.jsx)(U,{onChange:F,testId:"shard-input",value:c}),o&&(0,e.jsxs)("div",{className:"flex flex-col gap-1.5","data-testid":"run-as-field",children:[(0,e.jsx)(x,{htmlFor:"run-as-input",children:a("Run as identity (userId)")}),(0,e.jsx)(O,{"aria-label":a("Run as identity (userId)"),className:"font-mono text-xs","data-testid":"run-as-input",id:"run-as-input",onChange:ae,placeholder:a("Leave empty to run as admin"),value:f}),(0,e.jsx)("p",{className:"text-[11px] text-muted-foreground",children:a("Dev only: runs the function as this user so you can test auth and RLS. Forged over the admin gate.")})]}),(0,e.jsxs)("div",{className:"flex flex-wrap items-center gap-2",children:[(0,e.jsx)(h,{"data-testid":"run-button",disabled:v==="running"||n===void 0,onClick:se,type:"button",children:a("Run")}),n!==void 0&&(0,e.jsx)(w,{variant:"outline",children:n.kind}),o&&f.trim()!==""&&(0,e.jsx)(w,{"data-testid":"run-as-badge",variant:"secondary",children:a("as {userId}",{userId:f.trim()})})]})]}),v==="error"&&C!==null&&(0,e.jsx)("pre",{className:"overflow-auto rounded-md border border-border bg-muted/50 p-3 font-mono text-xs text-destructive","data-testid":"error",role:"alert",children:C}),v==="success"&&(0,e.jsx)("pre",{className:"overflow-auto rounded-md border border-border bg-muted/50 p-3 font-mono text-xs","data-testid":"result",children:pe(X)}),$.length>0&&(0,e.jsx)("ul",{className:"flex flex-col overflow-hidden rounded-xl border border-border","data-testid":"fn-history",children:$.map((t,d)=>(0,e.jsxs)("li",{className:"flex flex-wrap items-center gap-2 border-b border-border px-3 py-2 text-sm last:border-b-0","data-testid":"fn-history-row",children:[(0,e.jsx)("span",{className:t.status==="success"?"text-success":"text-destructive","data-testid":`fn-history-status-${d.toString()}`,children:t.status==="success"?"\u2713":"\u2717"})," ",(0,e.jsxs)("span",{className:"font-mono text-xs",children:[t.path," (",t.kind,")"]})," ",(0,e.jsx)("time",{className:"text-xs text-muted-foreground",children:q(t.at)})," ",(0,e.jsx)(h,{className:"ml-auto","data-testid":`fn-history-load-${d.toString()}`,onClick:s(()=>{ee(t)},"onClick"),size:"xs",type:"button",variant:"ghost",children:a("Load")})]},t.id))})]})},"Ae");export{Fe as FunctionRunner};
1
+ import{a as G}from"./chunk-METRMDIQ.js";import{a as x}from"./chunk-NXXGISFB.js";import{a as U}from"./chunk-TB5N24CM.js";import{b as M}from"./chunk-KVSQKUWD.js";import"./chunk-ZHPDAJBM.js";import{P as O}from"./chunk-AOAJGSYZ.js";import"./chunk-TFMQSCGC.js";import{a as h}from"./chunk-BWEXJENB.js";import"./chunk-74ASA4WU.js";import"./chunk-XQS7KSHL.js";import{b as w}from"./chunk-SPDZUX4P.js";import"./chunk-7PIHTTND.js";import{a as E}from"./chunk-DZGOHOOE.js";import{f as D}from"./chunk-KIU56OEQ.js";import"./chunk-RCZTUWG3.js";import{d as K,e as _,f as z,h as B,o as P,r as q}from"./chunk-6ZPTNC34.js";import"./chunk-FDLSPDIC.js";import{a as s,d as J,e as ie,g as oe}from"./chunk-R5ZTCHCE.js";var i=J(ie(),1);var e=J(oe(),1);var de=s(r=>r.kind==="id"?r.table===void 0?"id":`id<${r.table}>`:r.kind==="array"?r.element===void 0?"array":`${r.element}[]`:r.kind,"oe"),le=s(r=>r===void 0||r.length===0?"()":`(${r.map(o=>`${o.name}${o.optional?"?":""}: ${de(o)}`).join(", ")})`,"ie"),ce=s(r=>{switch(r){case"array":return[];case"bigint":case"number":return 0;case"boolean":return!1;case"object":case"record":return{};default:return""}},"de"),ue=s(r=>{let o={};for(let a of r??[])a.optional||(o[a.name]=ce(a.kind));return JSON.stringify(o,void 0,2)},"le"),me=z(E.runAs),fe=10,pe=s(r=>r===void 0?"undefined":JSON.stringify(r,null,2),"me"),Fe=s(({functions:r,runAsIdentity:o=!1}={})=>{let a=K(),u=D(),[H,Q]=(0,i.useState)(null),[k,V]=(0,i.useState)(null),g=r??H??[],[I,S]=(0,i.useState)(""),[m,b]=(0,i.useState)("{}"),[c,F]=(0,i.useState)(""),[f,W]=(0,i.useState)(""),[v,p]=(0,i.useState)("idle"),[X,y]=(0,i.useState)(void 0),[C,N]=(0,i.useState)(null),[$,Y]=(0,i.useState)([]);(0,i.useEffect)(()=>{if(r!==void 0)return;let t=!1;return u.listFunctions().then(d=>(t||Q(d),d)).catch(d=>{t||V(B(d))}),()=>{t=!0}},[u,r]);let A=I===""?g[0]?.path??"":I,n=g.find(t=>t.path===A),Z=s(async()=>{if(!n)return;let t;try{t=m.trim()===""?{}:JSON.parse(m)}catch(l){p("error"),y(void 0),N(a("Invalid JSON args: {message}",{message:l.message}));return}let d={__lunoraRef:n.path},R=c.trim()===""?{}:{shardKey:c.trim()},j=o?f.trim():"",L=s(l=>{Y(T=>[{argsText:m,at:Date.now(),id:(T[0]?.id??0)+1,kind:n.kind,path:n.path,shardKey:c,status:l},...T].slice(0,fe))},"$");p("running"),N(null);try{let l=j===""?await _(u,n.kind,d,t,R):await u.query(me,{args:t,functionPath:n.path,userId:j},R);M(c),y(l),p("success"),L("success")}catch(l){y(void 0),N(l.message),p("error"),L("error")}},"J"),ee=s(t=>{S(t.path),b(t.argsText),F(t.shardKey)},"M"),te=s(t=>{S(t.target.value)},"P"),re=s(t=>{b(t.target.value)},"z"),ae=s(t=>{W(t.target.value)},"q"),se=s(()=>{P(Z())},"H"),ne=s(()=>{b(ue(n?.args))},"V");return(0,e.jsxs)("div",{className:"flex flex-col gap-4","data-testid":"lunora-function-runner",children:[k!==null&&(0,e.jsx)("p",{className:"text-sm text-destructive","data-testid":"function-discover-error",role:"alert",children:k}),(0,e.jsxs)("div",{className:"flex flex-col gap-4 rounded-xl border border-border bg-card p-4",children:[(0,e.jsxs)("div",{className:"flex flex-col gap-1.5",children:[(0,e.jsx)(x,{htmlFor:"function-select",children:a("Function")}),(0,e.jsx)("select",{"aria-label":a("Function"),className:"flex h-9 w-full rounded-md border border-input bg-transparent px-3 py-1 text-sm shadow-xs transition-[color,box-shadow] outline-none focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:cursor-not-allowed disabled:opacity-50","data-testid":"function-select",id:"function-select",onChange:te,value:A,children:g.map(t=>(0,e.jsxs)("option",{value:t.path,children:[t.path," (",t.kind,")"]},t.path))}),n!==void 0&&(0,e.jsxs)("p",{className:"text-xs text-muted-foreground",children:[(0,e.jsx)("span",{className:"mr-1.5 font-medium",children:a("Signature")}),(0,e.jsx)("code",{className:"font-mono","data-testid":"function-signature",children:le(n.args)})]})]}),(0,e.jsxs)("div",{className:"flex flex-col gap-1.5",children:[(0,e.jsxs)("div",{className:"flex items-center justify-between gap-2",children:[(0,e.jsx)(x,{htmlFor:"args-input",children:a("Arguments")}),(0,e.jsx)(h,{"data-testid":"prefill-button",disabled:n===void 0,onClick:ne,size:"xs",type:"button",variant:"ghost",children:a("Prefill")})]}),(0,e.jsx)(G,{"aria-label":a("Arguments"),className:"font-mono text-xs","data-testid":"args-input",id:"args-input",onChange:re,value:m})]}),(0,e.jsx)(U,{onChange:F,testId:"shard-input",value:c}),o&&(0,e.jsxs)("div",{className:"flex flex-col gap-1.5","data-testid":"run-as-field",children:[(0,e.jsx)(x,{htmlFor:"run-as-input",children:a("Run as identity (userId)")}),(0,e.jsx)(O,{"aria-label":a("Run as identity (userId)"),className:"font-mono text-xs","data-testid":"run-as-input",id:"run-as-input",onChange:ae,placeholder:a("Leave empty to run as admin"),value:f}),(0,e.jsx)("p",{className:"text-[11px] text-muted-foreground",children:a("Dev only: runs the function as this user so you can test auth and RLS. Forged over the admin gate.")})]}),(0,e.jsxs)("div",{className:"flex flex-wrap items-center gap-2",children:[(0,e.jsx)(h,{"data-testid":"run-button",disabled:v==="running"||n===void 0,onClick:se,type:"button",children:a("Run")}),n!==void 0&&(0,e.jsx)(w,{variant:"outline",children:n.kind}),o&&f.trim()!==""&&(0,e.jsx)(w,{"data-testid":"run-as-badge",variant:"secondary",children:a("as {userId}",{userId:f.trim()})})]})]}),v==="error"&&C!==null&&(0,e.jsx)("pre",{className:"overflow-auto rounded-md border border-border bg-muted/50 p-3 font-mono text-xs text-destructive","data-testid":"error",role:"alert",children:C}),v==="success"&&(0,e.jsx)("pre",{className:"overflow-auto rounded-md border border-border bg-muted/50 p-3 font-mono text-xs","data-testid":"result",children:pe(X)}),$.length>0&&(0,e.jsx)("ul",{className:"flex flex-col overflow-hidden rounded-xl border border-border","data-testid":"fn-history",children:$.map((t,d)=>(0,e.jsxs)("li",{className:"flex flex-wrap items-center gap-2 border-b border-border px-3 py-2 text-sm last:border-b-0","data-testid":"fn-history-row",children:[(0,e.jsx)("span",{className:t.status==="success"?"text-success":"text-destructive","data-testid":`fn-history-status-${d.toString()}`,children:t.status==="success"?"\u2713":"\u2717"})," ",(0,e.jsxs)("span",{className:"font-mono text-xs",children:[t.path," (",t.kind,")"]})," ",(0,e.jsx)("time",{className:"text-xs text-muted-foreground",children:q(t.at)})," ",(0,e.jsx)(h,{className:"ml-auto","data-testid":`fn-history-load-${d.toString()}`,onClick:s(()=>{ee(t)},"onClick"),size:"xs",type:"button",variant:"ghost",children:a("Load")})]},t.id))})]})},"Ae");export{Fe as FunctionRunner};