@lunora/studio 1.0.0-alpha.245 → 1.0.0-alpha.247

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 (134) hide show
  1. package/dist/index.d.mts +2 -2
  2. package/dist/index.d.ts +2 -2
  3. package/dist/index.mjs +1 -1
  4. package/dist/mount.mjs +1 -1
  5. package/dist/packem_chunks/ApiTab.mjs +1 -1
  6. package/dist/packem_chunks/SchemaViewer.mjs +1 -1
  7. package/dist/packem_chunks/architecture-panel.mjs +1 -0
  8. package/dist/packem_chunks/kv-browser.mjs +1 -1
  9. package/dist/packem_chunks/migrations-route.mjs +1 -1
  10. package/dist/packem_chunks/queues-panel.mjs +1 -1
  11. package/dist/packem_shared/ApiReferencePanel-nAf8tNRr.mjs +1 -0
  12. package/dist/packem_shared/OpenRpcReferencePanel-BxEr49D9.mjs +1 -0
  13. package/dist/packem_shared/{Studio-qyqfHiQ3.mjs → Studio-BboteWG5.mjs} +1 -1
  14. package/dist/packem_shared/{StudioApp-BwOFVJBy.mjs → StudioApp-DkjIpaM2.mjs} +1 -1
  15. package/dist/packem_shared/diagram-export-panel-D5CVNJkp.mjs +2 -0
  16. package/dist/packem_shared/reference-view-CIHyURU6.mjs +13 -0
  17. package/dist/packem_shared/schema-diagram-C5oilX7l.mjs +2 -0
  18. package/dist/packem_shared/studio-CrypdTyE.mjs +2 -0
  19. package/dist/packem_shared/use-admin-spec-Bir7V68L.mjs +1 -0
  20. package/dist/standalone/{chunk-VTMPJ7GE.js → chunk-2BHVS5B6.js} +1 -1
  21. package/dist/standalone/chunk-2T4EFQNZ.js +1 -0
  22. package/dist/standalone/{chunk-BKGZMIF3.js → chunk-2TRJ53XJ.js} +1 -1
  23. package/dist/standalone/{chunk-PQWCYQGZ.js → chunk-2ZNM4ZPA.js} +1 -1
  24. package/dist/standalone/{chunk-DKTDJOYC.js → chunk-3G24A35Q.js} +1 -1
  25. package/dist/standalone/chunk-3QXSLIE4.js +1 -0
  26. package/dist/standalone/{chunk-SI6U7NIE.js → chunk-3UA5CP3H.js} +1 -1
  27. package/dist/standalone/chunk-4IU3JCV6.js +1 -0
  28. package/dist/standalone/{chunk-2M6HDLZL.js → chunk-4KSBB2YH.js} +1 -1
  29. package/dist/standalone/{chunk-AVRH4ZBT.js → chunk-5CFKIQLP.js} +1 -1
  30. package/dist/standalone/{chunk-435IWCIW.js → chunk-5YKKSHIB.js} +1 -1
  31. package/dist/standalone/chunk-6QA34EWC.js +3 -0
  32. package/dist/standalone/{chunk-WB5OMGYR.js → chunk-AHNZKXCL.js} +1 -1
  33. package/dist/standalone/chunk-AQR5KUL6.js +1 -0
  34. package/dist/standalone/chunk-ARPIW4IJ.js +1 -0
  35. package/dist/standalone/chunk-ATGO7XFL.js +1 -0
  36. package/dist/standalone/{chunk-GZT3A3DF.js → chunk-BBM53HFU.js} +1 -1
  37. package/dist/standalone/{chunk-KQQVI6ZS.js → chunk-BKARD4NH.js} +1 -1
  38. package/dist/standalone/chunk-BRIYEPXI.js +1 -0
  39. package/dist/standalone/{chunk-TESQ5ZIA.js → chunk-CZXBYHCA.js} +1 -1
  40. package/dist/standalone/{chunk-XNRRHFOY.js → chunk-EDCFVXZF.js} +1 -1
  41. package/dist/standalone/chunk-EEEEYLT7.js +1 -0
  42. package/dist/standalone/{chunk-CAHTJYC5.js → chunk-EOXUWPOY.js} +1 -1
  43. package/dist/standalone/{chunk-QROMT56V.js → chunk-F6SM55KU.js} +1 -1
  44. package/dist/standalone/chunk-FW6WOY3S.js +1 -0
  45. package/dist/standalone/chunk-GPFBLWA7.js +1 -0
  46. package/dist/standalone/chunk-GX2YM7MB.js +1 -0
  47. package/dist/standalone/chunk-H44HW3WV.js +1 -0
  48. package/dist/standalone/chunk-H6LZ3QM4.js +1 -0
  49. package/dist/standalone/chunk-HKWL6IY3.js +2 -0
  50. package/dist/standalone/chunk-HLTKKVDQ.js +1 -0
  51. package/dist/standalone/{chunk-2URQKGWU.js → chunk-HPFN7S7N.js} +1 -1
  52. package/dist/standalone/{chunk-GMS77BZD.js → chunk-IFJOYAEZ.js} +1 -1
  53. package/dist/standalone/chunk-JDAWPJ7U.js +1 -0
  54. package/dist/standalone/{chunk-OGFQ4LUG.js → chunk-JJB2KGI2.js} +1 -1
  55. package/dist/standalone/{chunk-OSOMPF2M.js → chunk-JUSVEJIQ.js} +1 -1
  56. package/dist/standalone/chunk-KTHHXUCF.js +1 -0
  57. package/dist/standalone/chunk-KZAW64TR.js +1 -0
  58. package/dist/standalone/chunk-L4DT5US3.js +1 -0
  59. package/dist/standalone/{chunk-N3DFLRGG.js → chunk-LDEGPYES.js} +1 -1
  60. package/dist/standalone/{chunk-EJSI4PMU.js → chunk-LIOUCOP2.js} +1 -1
  61. package/dist/standalone/{chunk-FBPF5WYL.js → chunk-LNDCZ3M2.js} +1 -1
  62. package/dist/standalone/{chunk-ZIE7D6ZS.js → chunk-M45TEYKZ.js} +1 -1
  63. package/dist/standalone/chunk-MDUETXVR.js +1 -0
  64. package/dist/standalone/{chunk-RFNGDE33.js → chunk-NESDGS7F.js} +1 -1
  65. package/dist/standalone/{chunk-DEDFT62S.js → chunk-NPRI4BCN.js} +1 -1
  66. package/dist/standalone/{chunk-WZI2ZAPQ.js → chunk-OCUJO2PM.js} +1 -1
  67. package/dist/standalone/{chunk-GUD3ZG3Z.js → chunk-PRHWNGXX.js} +2 -2
  68. package/dist/standalone/{chunk-ZDPY27UY.js → chunk-Q7GZKFBT.js} +1 -1
  69. package/dist/standalone/{chunk-AAXLEHDI.js → chunk-QA6CZASY.js} +1 -1
  70. package/dist/standalone/chunk-R65X5YQK.js +1 -0
  71. package/dist/standalone/chunk-RG6VUBGP.js +1 -0
  72. package/dist/standalone/chunk-RJJ5J24X.js +1 -0
  73. package/dist/standalone/{chunk-AANB526D.js → chunk-T6JDEFHN.js} +1 -1
  74. package/dist/standalone/chunk-TDXV3OT5.js +1 -0
  75. package/dist/standalone/{chunk-GMHY2XTC.js → chunk-TYT4DBMD.js} +1 -1
  76. package/dist/standalone/chunk-U4EW2BWO.js +1 -0
  77. package/dist/standalone/chunk-U7WLCN6P.js +1 -0
  78. package/dist/standalone/{chunk-MEV2FUUD.js → chunk-V5EINW4G.js} +1 -1
  79. package/dist/standalone/chunk-VIFOIB6M.js +1 -0
  80. package/dist/standalone/chunk-VMXD6LRC.js +14 -0
  81. package/dist/standalone/chunk-WA3ZZ65C.js +1 -0
  82. package/dist/standalone/chunk-WIIQAPHM.js +1 -0
  83. package/dist/standalone/chunk-WX4HPONC.js +1 -0
  84. package/dist/standalone/{chunk-KVSSLKGK.js → chunk-XB6LUZP2.js} +1 -1
  85. package/dist/standalone/chunk-XLAJX4GC.js +1 -0
  86. package/dist/standalone/chunk-XXTB46YA.js +1 -0
  87. package/dist/standalone/{chunk-V3CZW3JB.js → chunk-XXVOKVXV.js} +1 -1
  88. package/dist/standalone/{chunk-IVKVGV4Y.js → chunk-Y4N7CB4T.js} +1 -1
  89. package/dist/standalone/{chunk-NPT4MKTL.js → chunk-YSVZF4HX.js} +1 -1
  90. package/dist/standalone/chunk-YZ2QZG3W.js +1 -0
  91. package/dist/standalone/chunk-ZEYT2NT5.js +1 -0
  92. package/dist/standalone/chunk-ZMF7QLKI.js +8 -0
  93. package/dist/standalone/{chunk-5AAHUEQD.js → chunk-ZSM5GPHG.js} +1 -1
  94. package/dist/standalone/studio.js +1 -1
  95. package/dist/styles.css +1 -1
  96. package/package.json +5 -5
  97. package/dist/packem_shared/ApiReferencePanel-CHoHM5ME.mjs +0 -1
  98. package/dist/packem_shared/OpenRpcReferencePanel-C8ctFJVm.mjs +0 -1
  99. package/dist/packem_shared/reference-view-DSeKRrUU.mjs +0 -13
  100. package/dist/packem_shared/schema-diagram-CQ4vn0CN.mjs +0 -2
  101. package/dist/packem_shared/studio-CwC7cOyC.mjs +0 -2
  102. package/dist/standalone/chunk-3FBLWUXD.js +0 -1
  103. package/dist/standalone/chunk-4E6W2IDP.js +0 -14
  104. package/dist/standalone/chunk-5MGCPNPF.js +0 -1
  105. package/dist/standalone/chunk-5XPSGVCH.js +0 -1
  106. package/dist/standalone/chunk-6QPTJCQA.js +0 -1
  107. package/dist/standalone/chunk-6XKPY5RJ.js +0 -1
  108. package/dist/standalone/chunk-ATOGOQKD.js +0 -1
  109. package/dist/standalone/chunk-B5NQHH5M.js +0 -1
  110. package/dist/standalone/chunk-BLAZ5733.js +0 -1
  111. package/dist/standalone/chunk-C3M6CCOV.js +0 -1
  112. package/dist/standalone/chunk-EUEWGG46.js +0 -1
  113. package/dist/standalone/chunk-HHUH2AEG.js +0 -1
  114. package/dist/standalone/chunk-HQFXXC33.js +0 -1
  115. package/dist/standalone/chunk-HW33JZQP.js +0 -2
  116. package/dist/standalone/chunk-IHMGCHAA.js +0 -1
  117. package/dist/standalone/chunk-IVQFP5JU.js +0 -1
  118. package/dist/standalone/chunk-JNAZOBTV.js +0 -1
  119. package/dist/standalone/chunk-JSPFPDQ6.js +0 -1
  120. package/dist/standalone/chunk-KMLJSWTP.js +0 -1
  121. package/dist/standalone/chunk-KZ7UVPF6.js +0 -1
  122. package/dist/standalone/chunk-LB4Y3C7N.js +0 -1
  123. package/dist/standalone/chunk-MLFPYQNL.js +0 -1
  124. package/dist/standalone/chunk-NSCZ3RJ3.js +0 -1
  125. package/dist/standalone/chunk-OD7E3QLZ.js +0 -1
  126. package/dist/standalone/chunk-PLHA3OWK.js +0 -3
  127. package/dist/standalone/chunk-Q2G3FQMR.js +0 -1
  128. package/dist/standalone/chunk-TDD2TZCN.js +0 -1
  129. package/dist/standalone/chunk-WMD6QHHD.js +0 -8
  130. package/dist/standalone/chunk-XIL7BLJ5.js +0 -1
  131. package/dist/standalone/chunk-Y5KK6IM3.js +0 -1
  132. package/dist/standalone/chunk-YPRQLCKF.js +0 -1
  133. package/dist/standalone/chunk-ZZ24NI6P.js +0 -1
  134. package/dist/standalone/chunk-ZZJE2GV3.js +0 -1
@@ -1 +1 @@
1
- import{b as C}from"./chunk-FEWMAPNI.js";import"./chunk-225VJ77I.js";import{a as J}from"./chunk-AVRH4ZBT.js";import"./chunk-ULIQFBZU.js";import"./chunk-GMHY2XTC.js";import"./chunk-35DM4JJG.js";import{a as H}from"./chunk-4ZEL6BYL.js";import{c as z}from"./chunk-ZDPY27UY.js";import"./chunk-GUD3ZG3Z.js";import"./chunk-FSRSK4LY.js";import"./chunk-PUGHZTBL.js";import{a as E}from"./chunk-FKVZRPV5.js";import{a as G,b as M,c as U,d as P,e as d,f as c}from"./chunk-HEAQVSNS.js";import{a as D,e as _}from"./chunk-N6NMLJ6R.js";import{d as q}from"./chunk-PTZD7RUZ.js";import{a as S,d as O,f as Q,g as V}from"./chunk-YKXDMIHQ.js";var L=O(Q(),1);var r=O(V(),1);var K=["read","insert","update","delete"],B=S((e,s)=>({delete:e("Delete"),insert:e("Insert"),read:e("Read"),update:e("Update")})[s],"z"),W=S(e=>{let s=new Map;for(let a of e){let t=s.get(a.table)??{operations:new Set,procedures:new Set,table:a.table};t.operations.add(a.on),t.procedures.add(a.procedure),s.set(a.table,t)}return[...s.values()].toSorted((a,t)=>a.table.localeCompare(t.table))},"J"),ie=S(()=>{let e=(0,L.c)(49),s=q(),a;e[0]===Symbol.for("react.memo_cache_sentinel")?(a={},e[0]=a):a=e[0];let{data:t,error:R,errorSource:k}=z(H.rlsPolicies,a),p=t!==void 0,m,n,h,l,f,u,x,b,o;if(e[1]!==t||e[2]!==R||e[3]!==k||e[4]!==p||e[5]!==s){let $=W(Array.isArray(t?.policies)?t.policies:[]),j;e[15]!==t?(j=Array.isArray(t?.roles)?t.roles:[],e[15]=t,e[16]=j):j=e[16],n=j,x="flex flex-col gap-6",b="lunora-rls-panel",e[17]!==R||e[18]!==k?(o=R!==null&&(0,r.jsx)(J,{error:k,testId:"rls-error"}),e[17]=R,e[18]=k,e[19]=o):o=e[19],u="flex flex-col gap-2",m=D,h="overflow-hidden py-0";let I;e[20]!==s?(I=s("Policies"),e[20]=s,e[21]=I):I=e[21],e[22]!==I?(l=(0,r.jsx)("header",{className:"border-b border-border px-4 py-3",children:(0,r.jsx)("span",{className:"font-mono text-[11px] tracking-wide text-muted-foreground uppercase",children:I})}),e[22]=I,e[23]=l):l=e[23],f=p&&$.length===0?(0,r.jsx)(E,{description:s("No `definePolicy` is wired through `.use(rls(...))` in this deployment. Add one to guard a table's rows."),testId:"rls-policies-empty",title:s("No policies defined")}):(0,r.jsx)(_,{className:"px-0",children:(0,r.jsxs)(G,{"data-testid":"rls-policies-table",children:[(0,r.jsx)(M,{children:(0,r.jsxs)(P,{children:[(0,r.jsx)(d,{children:s("Table")}),K.map(i=>(0,r.jsx)(d,{children:B(s,i)},i)),(0,r.jsx)(d,{children:s("Guarded by")})]})}),(0,r.jsx)(U,{children:$.map(i=>(0,r.jsxs)(P,{"data-testid":`rls-table-${i.table}`,children:[(0,r.jsx)(c,{className:"font-mono text-xs",children:i.table}),K.map(F=>(0,r.jsx)(c,{children:i.operations.has(F)?(0,r.jsx)(C,{variant:"secondary",children:s("Guarded")}):(0,r.jsx)("span",{"aria-hidden":"true",className:"text-muted-foreground",children:"\u2014"})},F)),(0,r.jsx)(c,{className:"font-mono text-xs text-muted-foreground",children:[...i.procedures].join(", ")})]},i.table))})]})}),e[1]=t,e[2]=R,e[3]=k,e[4]=p,e[5]=s,e[6]=m,e[7]=n,e[8]=h,e[9]=l,e[10]=f,e[11]=u,e[12]=x,e[13]=b,e[14]=o}else m=e[6],n=e[7],h=e[8],l=e[9],f=e[10],u=e[11],x=e[12],b=e[13],o=e[14];let N;e[24]!==m||e[25]!==h||e[26]!==l||e[27]!==f?(N=(0,r.jsxs)(m,{className:h,children:[l,f]}),e[24]=m,e[25]=h,e[26]=l,e[27]=f,e[28]=N):N=e[28];let g;e[29]!==u||e[30]!==N?(g=(0,r.jsx)("section",{className:u,children:N}),e[29]=u,e[30]=N,e[31]=g):g=e[31];let y;e[32]!==s?(y=s("Roles"),e[32]=s,e[33]=y):y=e[33];let w;e[34]!==y?(w=(0,r.jsx)("header",{className:"border-b border-border px-4 py-3",children:(0,r.jsx)("span",{className:"font-mono text-[11px] tracking-wide text-muted-foreground uppercase",children:y})}),e[34]=y,e[35]=w):w=e[35];let v;e[36]!==p||e[37]!==n||e[38]!==s?(v=p&&n.length===0?(0,r.jsx)(E,{description:s("No `defineRole` is registered via `rls(policies, { roles })`. Roles back `ctx.auth.can(...)` permission checks."),testId:"rls-roles-empty",title:s("No roles defined")}):(0,r.jsx)(_,{className:"px-0",children:(0,r.jsxs)(G,{"data-testid":"rls-roles-table",children:[(0,r.jsx)(M,{children:(0,r.jsxs)(P,{children:[(0,r.jsx)(d,{children:s("Role")}),(0,r.jsx)(d,{children:s("Description")}),(0,r.jsx)(d,{children:s("Permissions")})]})}),(0,r.jsx)(U,{children:n.map(Y)})]})}),e[36]=p,e[37]=n,e[38]=s,e[39]=v):v=e[39];let A;e[40]!==w||e[41]!==v?(A=(0,r.jsx)("section",{className:"flex flex-col gap-2",children:(0,r.jsxs)(D,{className:"overflow-hidden py-0",children:[w,v]})}),e[40]=w,e[41]=v,e[42]=A):A=e[42];let T;return e[43]!==A||e[44]!==x||e[45]!==b||e[46]!==o||e[47]!==g?(T=(0,r.jsxs)("div",{className:x,"data-testid":b,children:[o,g,A]}),e[43]=A,e[44]=x,e[45]=b,e[46]=o,e[47]=g,e[48]=T):T=e[48],T},"oe");function X(e){return(0,r.jsx)(C,{variant:"outline",children:e},e)}S(X,"K");function Y(e){return(0,r.jsxs)(P,{"data-testid":`rls-role-${e.name}`,children:[(0,r.jsx)(c,{className:"font-mono text-xs",children:e.name}),(0,r.jsx)(c,{className:"text-muted-foreground",children:e.description??""}),(0,r.jsx)(c,{children:e.permissions.length===0?(0,r.jsx)("span",{"aria-hidden":"true",className:"text-muted-foreground",children:"\u2014"}):(0,r.jsx)("span",{className:"flex flex-wrap gap-1",children:e.permissions.map(X)})})]},e.name)}S(Y,"V");export{ie as default};
1
+ import{b as C}from"./chunk-FEWMAPNI.js";import"./chunk-225VJ77I.js";import{a as J}from"./chunk-5CFKIQLP.js";import"./chunk-ULIQFBZU.js";import"./chunk-TYT4DBMD.js";import"./chunk-35DM4JJG.js";import{a as H}from"./chunk-4ZEL6BYL.js";import{c as z}from"./chunk-Q7GZKFBT.js";import"./chunk-PRHWNGXX.js";import"./chunk-FSRSK4LY.js";import"./chunk-PUGHZTBL.js";import{a as E}from"./chunk-FKVZRPV5.js";import{a as G,b as M,c as U,d as P,e as d,f as c}from"./chunk-HEAQVSNS.js";import{a as D,e as _}from"./chunk-N6NMLJ6R.js";import{d as q}from"./chunk-PTZD7RUZ.js";import{a as S,d as O,f as Q,g as V}from"./chunk-YKXDMIHQ.js";var L=O(Q(),1);var r=O(V(),1);var K=["read","insert","update","delete"],B=S((e,s)=>({delete:e("Delete"),insert:e("Insert"),read:e("Read"),update:e("Update")})[s],"z"),W=S(e=>{let s=new Map;for(let a of e){let t=s.get(a.table)??{operations:new Set,procedures:new Set,table:a.table};t.operations.add(a.on),t.procedures.add(a.procedure),s.set(a.table,t)}return[...s.values()].toSorted((a,t)=>a.table.localeCompare(t.table))},"J"),ie=S(()=>{let e=(0,L.c)(49),s=q(),a;e[0]===Symbol.for("react.memo_cache_sentinel")?(a={},e[0]=a):a=e[0];let{data:t,error:R,errorSource:k}=z(H.rlsPolicies,a),p=t!==void 0,m,n,h,l,f,u,x,b,o;if(e[1]!==t||e[2]!==R||e[3]!==k||e[4]!==p||e[5]!==s){let $=W(Array.isArray(t?.policies)?t.policies:[]),j;e[15]!==t?(j=Array.isArray(t?.roles)?t.roles:[],e[15]=t,e[16]=j):j=e[16],n=j,x="flex flex-col gap-6",b="lunora-rls-panel",e[17]!==R||e[18]!==k?(o=R!==null&&(0,r.jsx)(J,{error:k,testId:"rls-error"}),e[17]=R,e[18]=k,e[19]=o):o=e[19],u="flex flex-col gap-2",m=D,h="overflow-hidden py-0";let I;e[20]!==s?(I=s("Policies"),e[20]=s,e[21]=I):I=e[21],e[22]!==I?(l=(0,r.jsx)("header",{className:"border-b border-border px-4 py-3",children:(0,r.jsx)("span",{className:"font-mono text-[11px] tracking-wide text-muted-foreground uppercase",children:I})}),e[22]=I,e[23]=l):l=e[23],f=p&&$.length===0?(0,r.jsx)(E,{description:s("No `definePolicy` is wired through `.use(rls(...))` in this deployment. Add one to guard a table's rows."),testId:"rls-policies-empty",title:s("No policies defined")}):(0,r.jsx)(_,{className:"px-0",children:(0,r.jsxs)(G,{"data-testid":"rls-policies-table",children:[(0,r.jsx)(M,{children:(0,r.jsxs)(P,{children:[(0,r.jsx)(d,{children:s("Table")}),K.map(i=>(0,r.jsx)(d,{children:B(s,i)},i)),(0,r.jsx)(d,{children:s("Guarded by")})]})}),(0,r.jsx)(U,{children:$.map(i=>(0,r.jsxs)(P,{"data-testid":`rls-table-${i.table}`,children:[(0,r.jsx)(c,{className:"font-mono text-xs",children:i.table}),K.map(F=>(0,r.jsx)(c,{children:i.operations.has(F)?(0,r.jsx)(C,{variant:"secondary",children:s("Guarded")}):(0,r.jsx)("span",{"aria-hidden":"true",className:"text-muted-foreground",children:"\u2014"})},F)),(0,r.jsx)(c,{className:"font-mono text-xs text-muted-foreground",children:[...i.procedures].join(", ")})]},i.table))})]})}),e[1]=t,e[2]=R,e[3]=k,e[4]=p,e[5]=s,e[6]=m,e[7]=n,e[8]=h,e[9]=l,e[10]=f,e[11]=u,e[12]=x,e[13]=b,e[14]=o}else m=e[6],n=e[7],h=e[8],l=e[9],f=e[10],u=e[11],x=e[12],b=e[13],o=e[14];let N;e[24]!==m||e[25]!==h||e[26]!==l||e[27]!==f?(N=(0,r.jsxs)(m,{className:h,children:[l,f]}),e[24]=m,e[25]=h,e[26]=l,e[27]=f,e[28]=N):N=e[28];let g;e[29]!==u||e[30]!==N?(g=(0,r.jsx)("section",{className:u,children:N}),e[29]=u,e[30]=N,e[31]=g):g=e[31];let y;e[32]!==s?(y=s("Roles"),e[32]=s,e[33]=y):y=e[33];let w;e[34]!==y?(w=(0,r.jsx)("header",{className:"border-b border-border px-4 py-3",children:(0,r.jsx)("span",{className:"font-mono text-[11px] tracking-wide text-muted-foreground uppercase",children:y})}),e[34]=y,e[35]=w):w=e[35];let v;e[36]!==p||e[37]!==n||e[38]!==s?(v=p&&n.length===0?(0,r.jsx)(E,{description:s("No `defineRole` is registered via `rls(policies, { roles })`. Roles back `ctx.auth.can(...)` permission checks."),testId:"rls-roles-empty",title:s("No roles defined")}):(0,r.jsx)(_,{className:"px-0",children:(0,r.jsxs)(G,{"data-testid":"rls-roles-table",children:[(0,r.jsx)(M,{children:(0,r.jsxs)(P,{children:[(0,r.jsx)(d,{children:s("Role")}),(0,r.jsx)(d,{children:s("Description")}),(0,r.jsx)(d,{children:s("Permissions")})]})}),(0,r.jsx)(U,{children:n.map(Y)})]})}),e[36]=p,e[37]=n,e[38]=s,e[39]=v):v=e[39];let A;e[40]!==w||e[41]!==v?(A=(0,r.jsx)("section",{className:"flex flex-col gap-2",children:(0,r.jsxs)(D,{className:"overflow-hidden py-0",children:[w,v]})}),e[40]=w,e[41]=v,e[42]=A):A=e[42];let T;return e[43]!==A||e[44]!==x||e[45]!==b||e[46]!==o||e[47]!==g?(T=(0,r.jsxs)("div",{className:x,"data-testid":b,children:[o,g,A]}),e[43]=A,e[44]=x,e[45]=b,e[46]=o,e[47]=g,e[48]=T):T=e[48],T},"oe");function X(e){return(0,r.jsx)(C,{variant:"outline",children:e},e)}S(X,"K");function Y(e){return(0,r.jsxs)(P,{"data-testid":`rls-role-${e.name}`,children:[(0,r.jsx)(c,{className:"font-mono text-xs",children:e.name}),(0,r.jsx)(c,{className:"text-muted-foreground",children:e.description??""}),(0,r.jsx)(c,{children:e.permissions.length===0?(0,r.jsx)("span",{"aria-hidden":"true",className:"text-muted-foreground",children:"\u2014"}):(0,r.jsx)("span",{className:"flex flex-wrap gap-1",children:e.permissions.map(X)})})]},e.name)}S(Y,"V");export{ie as default};
@@ -1,4 +1,4 @@
1
- import{a as fe}from"./chunk-UYEZR3BI.js";import{W as ce}from"./chunk-PLHA3OWK.js";import"./chunk-4L4WTGN5.js";import{a as ae}from"./chunk-55754F6H.js";import"./chunk-IS6LVJ6L.js";import"./chunk-AAVLPU5Q.js";import"./chunk-225VJ77I.js";import"./chunk-FSRSK4LY.js";import{a as le,e as oe}from"./chunk-N6NMLJ6R.js";import{d as re,h as me,p as ue,s as pe}from"./chunk-PTZD7RUZ.js";import{a as h,d as se,e as be,f as ke,g as ve}from"./chunk-YKXDMIHQ.js";var ne=se(ke(),1),X=se(be(),1);var s=se(ve(),1);var we=h(e=>{let t=(0,ne.c)(23),{destination:r}=e,f=re(),x;t[0]!==r.snippet?(x=h(()=>{pe(r.snippet)},"x"),t[0]=r.snippet,t[1]=x):x=t[1];let u=x,a;t[2]!==r.title?(a=(0,s.jsx)("h4",{className:"text-sm font-semibold",children:r.title}),t[2]=r.title,t[3]=a):a=t[3];let l;t[4]!==r.description?(l=(0,s.jsx)("p",{className:"text-sm text-muted-foreground",children:r.description}),t[4]=r.description,t[5]=l):l=t[5];let c;t[6]!==a||t[7]!==l?(c=(0,s.jsxs)("div",{children:[a,l]}),t[6]=a,t[7]=l,t[8]=c):c=t[8];let J=`drain-copy-${r.id}`,o;t[9]!==f?(o=f("Copy"),t[9]=f,t[10]=o):o=t[10];let n;t[11]!==u||t[12]!==J||t[13]!==o?(n=(0,s.jsx)(ae,{"data-testid":J,onClick:u,size:"sm",variant:"outline",children:o}),t[11]=u,t[12]=J,t[13]=o,t[14]=n):n=t[14];let i;t[15]!==c||t[16]!==n?(i=(0,s.jsxs)("div",{className:"flex items-start justify-between gap-3",children:[c,n]}),t[15]=c,t[16]=n,t[17]=i):i=t[17];let m;t[18]!==r.snippet?(m=(0,s.jsx)("pre",{className:"mt-2 overflow-x-auto rounded bg-muted p-2 font-mono text-xs",children:r.snippet}),t[18]=r.snippet,t[19]=m):m=t[19];let y;return t[20]!==i||t[21]!==m?(y=(0,s.jsx)(le,{className:"py-0","data-testid":"drain-card",children:(0,s.jsxs)(oe,{className:"p-3",children:[i,m]})}),t[20]=i,t[21]=m,t[22]=y):y=t[22],y},"be"),Me=h(()=>{let e=(0,ne.c)(93),t=re(),r;e[0]!==t?(r=t("Stream every request log to R2, a SIEM, or a third-party log service."),e[0]=t,e[1]=r):r=e[1];let f;e[2]===Symbol.for("react.memo_cache_sentinel")?(f=["{",' "logpush": true',"}"],e[2]=f):f=e[2];let x=f.join(`
1
+ import{a as fe}from"./chunk-UYEZR3BI.js";import{i as ce}from"./chunk-6QA34EWC.js";import"./chunk-TDXV3OT5.js";import"./chunk-4L4WTGN5.js";import{a as ae}from"./chunk-55754F6H.js";import"./chunk-IS6LVJ6L.js";import"./chunk-AAVLPU5Q.js";import"./chunk-225VJ77I.js";import"./chunk-FSRSK4LY.js";import{a as le,e as oe}from"./chunk-N6NMLJ6R.js";import{d as re,h as me,p as ue,s as pe}from"./chunk-PTZD7RUZ.js";import{a as h,d as se,e as be,f as ke,g as ve}from"./chunk-YKXDMIHQ.js";var ne=se(ke(),1),X=se(be(),1);var s=se(ve(),1);var we=h(e=>{let t=(0,ne.c)(23),{destination:r}=e,f=re(),x;t[0]!==r.snippet?(x=h(()=>{pe(r.snippet)},"x"),t[0]=r.snippet,t[1]=x):x=t[1];let u=x,a;t[2]!==r.title?(a=(0,s.jsx)("h4",{className:"text-sm font-semibold",children:r.title}),t[2]=r.title,t[3]=a):a=t[3];let l;t[4]!==r.description?(l=(0,s.jsx)("p",{className:"text-sm text-muted-foreground",children:r.description}),t[4]=r.description,t[5]=l):l=t[5];let c;t[6]!==a||t[7]!==l?(c=(0,s.jsxs)("div",{children:[a,l]}),t[6]=a,t[7]=l,t[8]=c):c=t[8];let J=`drain-copy-${r.id}`,o;t[9]!==f?(o=f("Copy"),t[9]=f,t[10]=o):o=t[10];let n;t[11]!==u||t[12]!==J||t[13]!==o?(n=(0,s.jsx)(ae,{"data-testid":J,onClick:u,size:"sm",variant:"outline",children:o}),t[11]=u,t[12]=J,t[13]=o,t[14]=n):n=t[14];let i;t[15]!==c||t[16]!==n?(i=(0,s.jsxs)("div",{className:"flex items-start justify-between gap-3",children:[c,n]}),t[15]=c,t[16]=n,t[17]=i):i=t[17];let m;t[18]!==r.snippet?(m=(0,s.jsx)("pre",{className:"mt-2 overflow-x-auto rounded bg-muted p-2 font-mono text-xs",children:r.snippet}),t[18]=r.snippet,t[19]=m):m=t[19];let y;return t[20]!==i||t[21]!==m?(y=(0,s.jsx)(le,{className:"py-0","data-testid":"drain-card",children:(0,s.jsxs)(oe,{className:"p-3",children:[i,m]})}),t[20]=i,t[21]=m,t[22]=y):y=t[22],y},"be"),Me=h(()=>{let e=(0,ne.c)(93),t=re(),r;e[0]!==t?(r=t("Stream every request log to R2, a SIEM, or a third-party log service."),e[0]=t,e[1]=r):r=e[1];let f;e[2]===Symbol.for("react.memo_cache_sentinel")?(f=["{",' "logpush": true',"}"],e[2]=f):f=e[2];let x=f.join(`
2
2
  `),u;e[3]!==t?(u=t("Logpush"),e[3]=t,e[4]=u):u=e[4];let a;e[5]!==r||e[6]!==u?(a={description:r,id:"logpush",snippet:x,title:u},e[5]=r,e[6]=u,e[7]=a):a=e[7];let l;e[8]!==t?(l=t("Send logs programmatically to a Worker for custom capture and forwarding."),e[8]=t,e[9]=l):l=e[9];let c;e[10]===Symbol.for("react.memo_cache_sentinel")?(c=["{",' "tail_consumers": [{ "service": "my-log-forwarder" }]',"}"],e[10]=c):c=e[10];let J=c.join(`
3
3
  `),o;e[11]!==t?(o=t("Tail Workers"),e[11]=t,e[12]=o):o=e[12];let n;e[13]!==l||e[14]!==o?(n={description:l,id:"tail-worker",snippet:J,title:o},e[13]=l,e[14]=o,e[15]=n):n=e[15];let i;e[16]!==t?(i=t("Retain and query recent request logs directly in Cloudflare's dashboard."),e[16]=t,e[17]=i):i=e[17];let m;e[18]===Symbol.for("react.memo_cache_sentinel")?(m=["{",' "observability": { "enabled": true }',"}"],e[18]=m):m=e[18];let y=m.join(`
4
4
  `),b;e[19]!==t?(b=t("Workers Logs"),e[19]=t,e[20]=b):b=e[20];let k;e[21]!==i||e[22]!==b?(k={description:i,id:"workers-logs",snippet:y,title:b},e[21]=i,e[22]=b,e[23]=k):k=e[23];let $;e[24]!==k||e[25]!==a||e[26]!==n?($=[a,n,k],e[24]=k,e[25]=a,e[26]=n,e[27]=$):$=e[27];let Y=$,[d,he]=(0,X.useState)(""),[v,ie]=(0,X.useState)(!1),[A,G]=(0,X.useState)(null),H;e[28]!==t||e[29]!==d?(H=h(async()=>{let g=d.trim();if(g==="")return;let de="fetch"in globalThis?globalThis.fetch:void 0;if(de===void 0){G({kind:"error",message:t("fetch is unavailable in this environment."),url:g});return}let xe={durationMs:12,function:"messages:list",outcome:"ok",shard:"root",source:"lunora",tablesRead:["messages"],tablesWritten:[],ts:new Date().toISOString(),type:"request"};ie(!0),G(null);let ye=performance.now();try{let te=await de(g,{body:JSON.stringify(xe),headers:{"Content-Type":"application/json"},method:"POST"});G({kind:"success",latencyMs:Math.round(performance.now()-ye),status:te.status,url:g})}catch(te){G({kind:"error",message:me(te),url:g})}ie(!1)},"V"),e[28]=t,e[29]=d,e[30]=H):H=e[30];let Z=H,K;e[31]!==A||e[32]!==d?(K=A?.url===d.trim()?A:null,e[31]=A,e[32]=d,e[33]=K):K=e[33];let p=K,Q;e[34]!==Z?(Q=h(()=>{ue(Z())},"G"),e[34]=Z,e[35]=Q):Q=e[35];let ee=Q,U;e[36]===Symbol.for("react.memo_cache_sentinel")?(U=h(g=>{he(g.target.value)},"H"),e[36]=U):U=e[36];let ge=U,w;e[37]!==t?(w=t("Open in Cloudflare"),e[37]=t,e[38]=w):w=e[38];let N;e[39]!==w?(N=(0,s.jsx)("div",{className:"flex flex-wrap items-center gap-3",children:(0,s.jsx)("a",{className:"text-sm text-primary underline-offset-4 hover:underline","data-testid":"drain-cf-link",href:fe,rel:"noreferrer",target:"_blank",children:w})}),e[39]=w,e[40]=N):N=e[40];let S;e[41]!==t?(S=t("Lunora does not ship logs itself \u2014 forwarding is handled by Cloudflare. Configure a destination below, then test your collector."),e[41]=t,e[42]=S):S=e[42];let C;e[43]!==S?(C=(0,s.jsx)("p",{className:"text-sm text-muted-foreground","data-testid":"drain-readonly-note",children:S}),e[43]=S,e[44]=C):C=e[44];let _;e[45]!==t?(_=t("Cloudflare destinations"),e[45]=t,e[46]=_):_=e[46];let j;e[47]!==_?(j=(0,s.jsx)("h3",{className:"font-mono text-[11px] tracking-wide text-muted-foreground uppercase",children:_}),e[47]=_,e[48]=j):j=e[48];let T;e[49]!==Y?(T=Y.map(Ne),e[49]=Y,e[50]=T):T=e[50];let q;e[51]!==j||e[52]!==T?(q=(0,s.jsxs)("section",{className:"flex flex-col gap-3","data-testid":"drain-destinations",children:[j,T]}),e[51]=j,e[52]=T,e[53]=q):q=e[53];let M;e[54]!==t?(M=t("Webhook test"),e[54]=t,e[55]=M):M=e[55];let O;e[56]!==M?(O=(0,s.jsx)("h3",{className:"mb-1 font-mono text-[11px] tracking-wide text-muted-foreground uppercase",children:M}),e[56]=M,e[57]=O):O=e[57];let W;e[58]!==t?(W=t("POST a sample Lunora request-log envelope to your collector to confirm it is reachable."),e[58]=t,e[59]=W):W=e[59];let L;e[60]!==W?(L=(0,s.jsx)("p",{className:"mb-2 text-sm text-muted-foreground",children:W}),e[60]=W,e[61]=L):L=e[61];let I;e[62]!==t?(I=t("https://example.com/logs"),e[62]=t,e[63]=I):I=e[63];let P;e[64]!==I||e[65]!==d?(P=(0,s.jsx)(ce,{className:"min-w-[20rem] flex-1","data-testid":"drain-webhook-url",onChange:ge,placeholder:I,type:"url",value:d}),e[64]=I,e[65]=d,e[66]=P):P=e[66];let R;e[67]!==v||e[68]!==d?(R=v||d.trim()==="",e[67]=v,e[68]=d,e[69]=R):R=e[69];let D;e[70]!==v||e[71]!==t?(D=t(v?"Sending\u2026":"Send test event"),e[70]=v,e[71]=t,e[72]=D):D=e[72];let z;e[73]!==ee||e[74]!==R||e[75]!==D?(z=(0,s.jsx)(ae,{"data-testid":"drain-webhook-test",disabled:R,onClick:ee,children:D}),e[73]=ee,e[74]=R,e[75]=D,e[76]=z):z=e[76];let B;e[77]!==P||e[78]!==z?(B=(0,s.jsxs)("div",{className:"flex flex-wrap items-center gap-2",children:[P,z]}),e[77]=P,e[78]=z,e[79]=B):B=e[79];let E;e[80]!==p||e[81]!==t?(E=p!==null&&(0,s.jsx)("p",{className:p.kind==="success"?"mt-2 text-sm text-muted-foreground":"mt-2 text-sm text-destructive","data-testid":"drain-webhook-result",role:p.kind==="error"?"alert":void 0,children:p.kind==="success"?t("Delivered \u2014 status {status} in {latency}ms",{latency:p.latencyMs,status:p.status}):t("Failed: {message}",{message:p.message})}),e[80]=p,e[81]=t,e[82]=E):E=e[82];let F;e[83]!==O||e[84]!==L||e[85]!==B||e[86]!==E?(F=(0,s.jsx)(le,{className:"py-0",children:(0,s.jsx)(oe,{className:"p-3",children:(0,s.jsxs)("section",{"data-testid":"drain-webhook",children:[O,L,B,E]})})}),e[83]=O,e[84]=L,e[85]=B,e[86]=E,e[87]=F):F=e[87];let V;return e[88]!==N||e[89]!==C||e[90]!==q||e[91]!==F?(V=(0,s.jsxs)("div",{className:"flex flex-col gap-4","data-testid":"log-drains",children:[N,C,q,F]}),e[88]=N,e[89]=C,e[90]=q,e[91]=F,e[92]=V):V=e[92],V},"je");function Ne(e){return(0,s.jsx)(we,{destination:e},e.id)}h(Ne,"ye");export{Me as default};