@tapflowio/relay 0.26.1 → 0.27.1

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 (161) hide show
  1. package/dist/RelayServer.d.ts +92 -0
  2. package/dist/RelayServer.d.ts.map +1 -1
  3. package/dist/RelayServer.js +352 -13
  4. package/dist/RelayServer.js.map +1 -1
  5. package/dist/SessionManager.d.ts +5 -3
  6. package/dist/SessionManager.d.ts.map +1 -1
  7. package/dist/SessionManager.js +3 -1
  8. package/dist/SessionManager.js.map +1 -1
  9. package/dist/api/builds.d.ts.map +1 -1
  10. package/dist/api/builds.js +13 -8
  11. package/dist/api/builds.js.map +1 -1
  12. package/dist/api/comments.d.ts.map +1 -1
  13. package/dist/api/comments.js +5 -7
  14. package/dist/api/comments.js.map +1 -1
  15. package/dist/api/invitations.d.ts.map +1 -1
  16. package/dist/api/invitations.js +3 -0
  17. package/dist/api/invitations.js.map +1 -1
  18. package/dist/api/profile.d.ts.map +1 -1
  19. package/dist/api/profile.js +28 -9
  20. package/dist/api/profile.js.map +1 -1
  21. package/dist/api/recordings.d.ts.map +1 -1
  22. package/dist/api/recordings.js +5 -6
  23. package/dist/api/recordings.js.map +1 -1
  24. package/dist/api/settings.d.ts.map +1 -1
  25. package/dist/api/settings.js +28 -9
  26. package/dist/api/settings.js.map +1 -1
  27. package/dist/lib/clientAddress.d.ts +12 -0
  28. package/dist/lib/clientAddress.d.ts.map +1 -1
  29. package/dist/lib/clientAddress.js +22 -0
  30. package/dist/lib/clientAddress.js.map +1 -1
  31. package/dist/lib/uploads.d.ts +13 -0
  32. package/dist/lib/uploads.d.ts.map +1 -1
  33. package/dist/lib/uploads.js +41 -0
  34. package/dist/lib/uploads.js.map +1 -1
  35. package/dist/lib/webhookTransport.d.ts +29 -0
  36. package/dist/lib/webhookTransport.d.ts.map +1 -0
  37. package/dist/lib/webhookTransport.js +86 -0
  38. package/dist/lib/webhookTransport.js.map +1 -0
  39. package/dist/lib/webhookUrl.d.ts +6 -0
  40. package/dist/lib/webhookUrl.d.ts.map +1 -1
  41. package/dist/lib/webhookUrl.js +50 -14
  42. package/dist/lib/webhookUrl.js.map +1 -1
  43. package/dist/lib/webhooks.d.ts +2 -10
  44. package/dist/lib/webhooks.d.ts.map +1 -1
  45. package/dist/lib/webhooks.js +8 -3
  46. package/dist/lib/webhooks.js.map +1 -1
  47. package/package.json +6 -6
  48. package/public/assets/{AppCenter-DZCsC2wa.js → AppCenter-CeLjUbnR.js} +7 -7
  49. package/public/assets/AppCenter-CeLjUbnR.js.br +0 -0
  50. package/public/assets/AppCenter-CeLjUbnR.js.gz +0 -0
  51. package/public/assets/Default-UB0Pa3lN.js +1 -0
  52. package/public/assets/Default-UB0Pa3lN.js.br +0 -0
  53. package/public/assets/Default-UB0Pa3lN.js.gz +0 -0
  54. package/public/assets/Invite-Dv3omu3x.js +1 -0
  55. package/public/assets/Invite-Dv3omu3x.js.br +0 -0
  56. package/public/assets/Invite-Dv3omu3x.js.gz +0 -0
  57. package/public/assets/{MacResources-B0DQ9ISE.js → MacResources-CY4-OdGt.js} +1 -1
  58. package/public/assets/MacResources-CY4-OdGt.js.br +0 -0
  59. package/public/assets/MacResources-CY4-OdGt.js.gz +0 -0
  60. package/public/assets/QASession-H5eRSwZv.js +150 -0
  61. package/public/assets/QASession-H5eRSwZv.js.br +0 -0
  62. package/public/assets/QASession-H5eRSwZv.js.gz +0 -0
  63. package/public/assets/ResetPassword-nFTigYt2.js +1 -0
  64. package/public/assets/ResetPassword-nFTigYt2.js.br +0 -0
  65. package/public/assets/ResetPassword-nFTigYt2.js.gz +0 -0
  66. package/public/assets/Setup-UmLtF2PF.js +1 -0
  67. package/public/assets/Setup-UmLtF2PF.js.br +0 -0
  68. package/public/assets/Setup-UmLtF2PF.js.gz +0 -0
  69. package/public/assets/Team-DW40kt3H.js +6 -0
  70. package/public/assets/Team-DW40kt3H.js.br +0 -0
  71. package/public/assets/Team-DW40kt3H.js.gz +0 -0
  72. package/public/assets/Tokens-B1a4ChJK.js +1 -0
  73. package/public/assets/Tokens-B1a4ChJK.js.br +0 -0
  74. package/public/assets/Tokens-B1a4ChJK.js.gz +0 -0
  75. package/public/assets/alert-dialog-aoqYdAwx.js +1 -0
  76. package/public/assets/alert-dialog-aoqYdAwx.js.br +0 -0
  77. package/public/assets/alert-dialog-aoqYdAwx.js.gz +0 -0
  78. package/public/assets/badge-DNaS0Mu3.js +1 -0
  79. package/public/assets/badge-DNaS0Mu3.js.br +0 -0
  80. package/public/assets/badge-DNaS0Mu3.js.gz +0 -0
  81. package/public/assets/{build-format-fzt-JrUX.js → build-format-DF5aFcag.js} +3 -3
  82. package/public/assets/build-format-DF5aFcag.js.br +0 -0
  83. package/public/assets/build-format-DF5aFcag.js.gz +0 -0
  84. package/public/assets/{dialog-DQkbaw8h.js → dialog-DE2WUMuX.js} +5 -5
  85. package/public/assets/dialog-DE2WUMuX.js.br +0 -0
  86. package/public/assets/dialog-DE2WUMuX.js.gz +0 -0
  87. package/public/assets/field-hint-Csb40Gzp.js +1 -0
  88. package/public/assets/field-hint-Csb40Gzp.js.br +2 -0
  89. package/public/assets/field-hint-Csb40Gzp.js.gz +0 -0
  90. package/public/assets/index-BbCkTtjO.css +1 -0
  91. package/public/assets/index-BbCkTtjO.css.br +0 -0
  92. package/public/assets/index-BbCkTtjO.css.gz +0 -0
  93. package/public/assets/index-DSW9h8XX.js +218 -0
  94. package/public/assets/index-DSW9h8XX.js.br +0 -0
  95. package/public/assets/index-DSW9h8XX.js.gz +0 -0
  96. package/public/assets/list-view-C0w97ltJ.js +1 -0
  97. package/public/assets/list-view-C0w97ltJ.js.br +0 -0
  98. package/public/assets/list-view-C0w97ltJ.js.gz +0 -0
  99. package/public/assets/{pencil-BJcOp3oN.js → pencil-BN18R4oa.js} +2 -2
  100. package/public/assets/pencil-BN18R4oa.js.br +0 -0
  101. package/public/assets/pencil-BN18R4oa.js.gz +0 -0
  102. package/public/assets/resource-health-Bi20EUDs.js +1 -0
  103. package/public/assets/resource-health-Bi20EUDs.js.br +0 -0
  104. package/public/assets/resource-health-Bi20EUDs.js.gz +0 -0
  105. package/public/assets/{trash-DhBxh6H7.js → trash-D1l1Fm-Z.js} +3 -3
  106. package/public/assets/trash-D1l1Fm-Z.js.br +0 -0
  107. package/public/assets/trash-D1l1Fm-Z.js.gz +0 -0
  108. package/public/index.html +2 -2
  109. package/public/index.html.br +0 -0
  110. package/public/index.html.gz +0 -0
  111. package/public/assets/AppCenter-DZCsC2wa.js.br +0 -0
  112. package/public/assets/AppCenter-DZCsC2wa.js.gz +0 -0
  113. package/public/assets/Default-xD9Fmd5X.js +0 -1
  114. package/public/assets/Default-xD9Fmd5X.js.br +0 -0
  115. package/public/assets/Default-xD9Fmd5X.js.gz +0 -0
  116. package/public/assets/Invite-29Erwv8j.js +0 -1
  117. package/public/assets/Invite-29Erwv8j.js.br +0 -0
  118. package/public/assets/Invite-29Erwv8j.js.gz +0 -0
  119. package/public/assets/MacResources-B0DQ9ISE.js.br +0 -0
  120. package/public/assets/MacResources-B0DQ9ISE.js.gz +0 -0
  121. package/public/assets/QASession-D-n6PXuD.js +0 -150
  122. package/public/assets/QASession-D-n6PXuD.js.br +0 -0
  123. package/public/assets/QASession-D-n6PXuD.js.gz +0 -0
  124. package/public/assets/ResetPassword-BnPIwTYH.js +0 -1
  125. package/public/assets/ResetPassword-BnPIwTYH.js.br +0 -0
  126. package/public/assets/ResetPassword-BnPIwTYH.js.gz +0 -0
  127. package/public/assets/Setup-DmUGFblg.js +0 -1
  128. package/public/assets/Setup-DmUGFblg.js.br +0 -0
  129. package/public/assets/Setup-DmUGFblg.js.gz +0 -0
  130. package/public/assets/Team-BpvRgFfZ.js +0 -6
  131. package/public/assets/Team-BpvRgFfZ.js.br +0 -0
  132. package/public/assets/Team-BpvRgFfZ.js.gz +0 -0
  133. package/public/assets/Tokens-x6BtCcL7.js +0 -1
  134. package/public/assets/Tokens-x6BtCcL7.js.br +0 -0
  135. package/public/assets/Tokens-x6BtCcL7.js.gz +0 -0
  136. package/public/assets/alert-dialog-C8wDimW-.js +0 -1
  137. package/public/assets/alert-dialog-C8wDimW-.js.br +0 -0
  138. package/public/assets/alert-dialog-C8wDimW-.js.gz +0 -0
  139. package/public/assets/badge-CWVbeuH3.js +0 -1
  140. package/public/assets/badge-CWVbeuH3.js.br +0 -0
  141. package/public/assets/badge-CWVbeuH3.js.gz +0 -0
  142. package/public/assets/build-format-fzt-JrUX.js.br +0 -0
  143. package/public/assets/build-format-fzt-JrUX.js.gz +0 -0
  144. package/public/assets/dialog-DQkbaw8h.js.br +0 -0
  145. package/public/assets/dialog-DQkbaw8h.js.gz +0 -0
  146. package/public/assets/index-C1Fo8g_c.js +0 -218
  147. package/public/assets/index-C1Fo8g_c.js.br +0 -0
  148. package/public/assets/index-C1Fo8g_c.js.gz +0 -0
  149. package/public/assets/index-C2F1AgwB.css +0 -1
  150. package/public/assets/index-C2F1AgwB.css.br +0 -0
  151. package/public/assets/index-C2F1AgwB.css.gz +0 -0
  152. package/public/assets/list-view-DxI397-H.js +0 -1
  153. package/public/assets/list-view-DxI397-H.js.br +0 -0
  154. package/public/assets/list-view-DxI397-H.js.gz +0 -0
  155. package/public/assets/pencil-BJcOp3oN.js.br +0 -0
  156. package/public/assets/pencil-BJcOp3oN.js.gz +0 -0
  157. package/public/assets/resource-health-Cq3gqqVd.js +0 -1
  158. package/public/assets/resource-health-Cq3gqqVd.js.br +0 -0
  159. package/public/assets/resource-health-Cq3gqqVd.js.gz +0 -0
  160. package/public/assets/trash-DhBxh6H7.js.br +0 -0
  161. package/public/assets/trash-DhBxh6H7.js.gz +0 -0
@@ -0,0 +1 @@
1
+ import{k as c,f as n,j as i}from"./vendor-react-BlPSzrEe.js";import{a0 as d,B as x}from"./index-DSW9h8XX.js";const N=c.forwardRef((r,a)=>{const e=n.c(9);let t,s;e[0]!==r?({className:t,...s}=r,e[0]=r,e[1]=t,e[2]=s):(t=e[1],s=e[2]);let l;e[3]!==t?(l=d("w-full caption-bottom text-sm",t),e[3]=t,e[4]=l):l=e[4];let o;return e[5]!==s||e[6]!==a||e[7]!==l?(o=i.jsx("div",{className:"relative w-full overflow-auto",children:i.jsx("table",{ref:a,className:l,...s})}),e[5]=s,e[6]=a,e[7]=l,e[8]=o):o=e[8],o});N.displayName="Table";const T=c.forwardRef((r,a)=>{const e=n.c(9);let t,s;e[0]!==r?({className:t,...s}=r,e[0]=r,e[1]=t,e[2]=s):(t=e[1],s=e[2]);let l;e[3]!==t?(l=d("[&_tr]:border-b",t),e[3]=t,e[4]=l):l=e[4];let o;return e[5]!==s||e[6]!==a||e[7]!==l?(o=i.jsx("thead",{ref:a,className:l,...s}),e[5]=s,e[6]=a,e[7]=l,e[8]=o):o=e[8],o});T.displayName="TableHeader";const h=c.forwardRef((r,a)=>{const e=n.c(9);let t,s;e[0]!==r?({className:t,...s}=r,e[0]=r,e[1]=t,e[2]=s):(t=e[1],s=e[2]);let l;e[3]!==t?(l=d("[&_tr:last-child]:border-0",t),e[3]=t,e[4]=l):l=e[4];let o;return e[5]!==s||e[6]!==a||e[7]!==l?(o=i.jsx("tbody",{ref:a,className:l,...s}),e[5]=s,e[6]=a,e[7]=l,e[8]=o):o=e[8],o});h.displayName="TableBody";const w=c.forwardRef((r,a)=>{const e=n.c(9);let t,s;e[0]!==r?({className:t,...s}=r,e[0]=r,e[1]=t,e[2]=s):(t=e[1],s=e[2]);let l;e[3]!==t?(l=d("border-t bg-muted/50 font-medium [&>tr]:last:border-b-0",t),e[3]=t,e[4]=l):l=e[4];let o;return e[5]!==s||e[6]!==a||e[7]!==l?(o=i.jsx("tfoot",{ref:a,className:l,...s}),e[5]=s,e[6]=a,e[7]=l,e[8]=o):o=e[8],o});w.displayName="TableFooter";const b=c.forwardRef((r,a)=>{const e=n.c(9);let t,s;e[0]!==r?({className:t,...s}=r,e[0]=r,e[1]=t,e[2]=s):(t=e[1],s=e[2]);let l;e[3]!==t?(l=d("border-b transition-colors hover:bg-muted/50 data-[state=selected]:bg-muted",t),e[3]=t,e[4]=l):l=e[4];let o;return e[5]!==s||e[6]!==a||e[7]!==l?(o=i.jsx("tr",{ref:a,className:l,...s}),e[5]=s,e[6]=a,e[7]=l,e[8]=o):o=e[8],o});b.displayName="TableRow";const g=c.forwardRef((r,a)=>{const e=n.c(9);let t,s;e[0]!==r?({className:t,...s}=r,e[0]=r,e[1]=t,e[2]=s):(t=e[1],s=e[2]);let l;e[3]!==t?(l=d("h-12 px-4 text-left align-middle font-medium text-muted-foreground [&:has([role=checkbox])]:pr-0",t),e[3]=t,e[4]=l):l=e[4];let o;return e[5]!==s||e[6]!==a||e[7]!==l?(o=i.jsx("th",{ref:a,className:l,...s}),e[5]=s,e[6]=a,e[7]=l,e[8]=o):o=e[8],o});g.displayName="TableHead";const u=c.forwardRef((r,a)=>{const e=n.c(9);let t,s;e[0]!==r?({className:t,...s}=r,e[0]=r,e[1]=t,e[2]=s):(t=e[1],s=e[2]);let l;e[3]!==t?(l=d("p-4 align-middle [&:has([role=checkbox])]:pr-0",t),e[3]=t,e[4]=l):l=e[4];let o;return e[5]!==s||e[6]!==a||e[7]!==l?(o=i.jsx("td",{ref:a,className:l,...s}),e[5]=s,e[6]=a,e[7]=l,e[8]=o):o=e[8],o});u.displayName="TableCell";const j=c.forwardRef((r,a)=>{const e=n.c(9);let t,s;e[0]!==r?({className:t,...s}=r,e[0]=r,e[1]=t,e[2]=s):(t=e[1],s=e[2]);let l;e[3]!==t?(l=d("mt-4 text-sm text-muted-foreground",t),e[3]=t,e[4]=l):l=e[4];let o;return e[5]!==s||e[6]!==a||e[7]!==l?(o=i.jsx("caption",{ref:a,className:l,...s}),e[5]=s,e[6]=a,e[7]=l,e[8]=o):o=e[8],o});j.displayName="TableCaption";function $(r){const a=n.c(7),{view:e,colSpan:t,noun:s,emptyText:l,onRetry:o}=r;if(e==="list")return null;const f=e==="loading"?"Loading…":e==="empty"?l:`Couldn't load ${s}.`;let m;a[0]!==o||a[1]!==e?(m=e==="error"&&i.jsx(x,{variant:"outline",size:"sm",className:"ml-3",onClick:o,children:"Try again"}),a[0]=o,a[1]=e,a[2]=m):m=a[2];let p;return a[3]!==t||a[4]!==f||a[5]!==m?(p=i.jsx(b,{className:"hover:bg-transparent",children:i.jsxs(u,{colSpan:t,className:"h-20 text-center text-muted-foreground",children:[f,m]})}),a[3]=t,a[4]=f,a[5]=m,a[6]=p):p=a[6],p}function v(r){return r.data?r.data.length>0?"list":"empty":r.isError?"error":"loading"}export{$ as L,N as T,h as a,u as b,g as c,T as d,b as e,v as l};
@@ -1,5 +1,5 @@
1
- import{a2 as e}from"./index-C1Fo8g_c.js";/**
2
- * @license lucide-react v1.47.0 - ISC
1
+ import{a6 as e}from"./index-DSW9h8XX.js";/**
2
+ * @license lucide-react v1.48.0 - ISC
3
3
  *
4
4
  * This source code is licensed under the ISC license.
5
5
  * See the LICENSE file in the root directory of this source tree.
@@ -0,0 +1 @@
1
+ import{f as E,k as u,j as f}from"./vendor-react-BlPSzrEe.js";import{E as M,z as _,a8 as j,t as U,a1 as C,a4 as V,aI as H,aH as G,aL as F,y as K,a0 as S}from"./index-DSW9h8XX.js";function W(){const t=new Uint8Array(16);return crypto.getRandomValues(t),Array.from(t,n=>n.toString(16).padStart(2,"0")).join("")}const q=location.protocol==="https:"?"wss:":"ws:",z=`${q}//${location.host}`,J=2e3,Y=W();function B(){const t=new URL(z);return t.searchParams.set("client",Y),t.toString()}function be(t,n){const e=E.c(9),o=u.useRef(null),[a,s]=u.useState(!1),r=u.useRef(t),i=u.useRef(n);let d,b;e[0]!==n||e[1]!==t?(d=()=>{r.current=t,i.current=n},b=[t,n],e[0]=n,e[1]=t,e[2]=d,e[3]=b):(d=e[2],b=e[3]),u.useLayoutEffect(d,b);let m,l;e[4]===Symbol.for("react.memo_cache_sentinel")?(m=()=>{let T=!1;const R=()=>{if(T)return;const p=new WebSocket(B());p.binaryType="arraybuffer",o.current=p,p.onopen=()=>s(!0),p.onclose=()=>{s(!1),T||setTimeout(R,J)},p.onmessage=x=>{var A;if(x.data instanceof ArrayBuffer){(A=i.current)==null||A.call(i,x.data);return}try{r.current(JSON.parse(x.data))}catch{}}};return R(),()=>{var p;T=!0,(p=o.current)==null||p.close()}},l=[],e[4]=m,e[5]=l):(m=e[4],l=e[5]),u.useEffect(m,l);let c;e[6]===Symbol.for("react.memo_cache_sentinel")?(c=T=>{var R;((R=o.current)==null?void 0:R.readyState)===WebSocket.OPEN&&o.current.send(JSON.stringify(T))},e[6]=c):c=e[6];const g=c;let y;return e[7]!==a?(y={send:g,connected:a},e[7]=a,e[8]=y):y=e[8],y}var Q=Object.defineProperty,v=(t,n)=>Q(t,"name",{value:n,configurable:!0}),h="Tabs",[X,me]=V(h,[j]),$=j(),[Z,N]=X(h),ee=u.forwardRef(v(function(n,e){const{__scopeTabs:o,value:a,onValueChange:s,defaultValue:r,orientation:i="horizontal",dir:d,activationMode:b="automatic",...m}=n,l=H(d),[c,g]=G({prop:a,onChange:s,defaultProp:r??"",caller:h});return f.jsx(Z,{scope:o,baseId:F(),value:c,onValueChange:g,orientation:i,dir:l,activationMode:b,children:f.jsx(_.div,{dir:l,"data-orientation":i,...m,ref:e})})},"Tabs")),te="TabsList",ne=u.forwardRef(v(function(n,e){const{__scopeTabs:o,loop:a=!0,...s}=n,r=N(te,o),i=$(o);return f.jsx(M,{asChild:!0,...i,orientation:r.orientation,dir:r.dir,loop:a,children:f.jsx(_.div,{role:"tablist","aria-orientation":r.orientation,...s,ref:e})})},"TabsList")),ae="TabsTrigger",se=u.forwardRef(v(function(n,e){const{__scopeTabs:o,value:a,disabled:s=!1,...r}=n,i=N(ae,o),d=$(o),b=w(i.baseId,a),m=I(i.baseId,a),l=a===i.value;return f.jsx(U,{asChild:!0,...d,focusable:!s,active:l,children:f.jsx(_.button,{type:"button",role:"tab","aria-selected":l,"aria-controls":m,"data-state":l?"active":"inactive","data-disabled":s?"":void 0,disabled:s,id:b,...r,ref:e,onMouseDown:C(n.onMouseDown,c=>{!s&&c.button===0&&c.ctrlKey===!1?i.onValueChange(a):c.preventDefault()}),onKeyDown:C(n.onKeyDown,c=>{s||c.target!==c.currentTarget||[" ","Enter"].includes(c.key)&&i.onValueChange(a)}),onFocus:C(n.onFocus,()=>{const c=i.activationMode!=="manual";!l&&!s&&c&&i.onValueChange(a)})})})},"TabsTrigger")),oe="TabsContent",re=u.forwardRef(v(function(n,e){const{__scopeTabs:o,value:a,forceMount:s,children:r,...i}=n,d=N(oe,o),b=w(d.baseId,a),m=I(d.baseId,a),l=a===d.value,c=u.useRef(l);return u.useEffect(()=>{const g=requestAnimationFrame(()=>c.current=!1);return()=>cancelAnimationFrame(g)},[]),f.jsx(K,{present:s||l,children:({present:g})=>f.jsx(_.div,{"data-state":l?"active":"inactive","data-orientation":d.orientation,role:"tabpanel","aria-labelledby":b,hidden:!g,id:m,tabIndex:0,...i,ref:e,style:{...n.style,animationDuration:c.current?"0s":void 0},children:g&&r})})},"TabsContent"));function w(t,n){return`${t}-trigger-${n}`}v(w,"makeTriggerId");function I(t,n){return`${t}-content-${n}`}v(I,"makeContentId");var ie=ee,k=ne,O=se,D=re;const ge=ie,ce=u.forwardRef((t,n)=>{const e=E.c(9);let o,a;e[0]!==t?({className:o,...a}=t,e[0]=t,e[1]=o,e[2]=a):(o=e[1],a=e[2]);let s;e[3]!==o?(s=S("inline-flex h-9 items-center justify-center rounded-md bg-muted p-1 text-muted-foreground",o),e[3]=o,e[4]=s):s=e[4];let r;return e[5]!==a||e[6]!==n||e[7]!==s?(r=f.jsx(k,{ref:n,className:s,...a}),e[5]=a,e[6]=n,e[7]=s,e[8]=r):r=e[8],r});ce.displayName=k.displayName;const le=u.forwardRef((t,n)=>{const e=E.c(9);let o,a;e[0]!==t?({className:o,...a}=t,e[0]=t,e[1]=o,e[2]=a):(o=e[1],a=e[2]);let s;e[3]!==o?(s=S("inline-flex items-center justify-center whitespace-nowrap rounded-sm px-3 py-1 text-sm font-medium ring-offset-background transition-all focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 data-[state=active]:bg-background data-[state=active]:text-foreground data-[state=active]:shadow-sm",o),e[3]=o,e[4]=s):s=e[4];let r;return e[5]!==a||e[6]!==n||e[7]!==s?(r=f.jsx(O,{ref:n,className:s,...a}),e[5]=a,e[6]=n,e[7]=s,e[8]=r):r=e[8],r});le.displayName=O.displayName;const ue=u.forwardRef((t,n)=>{const e=E.c(9);let o,a;e[0]!==t?({className:o,...a}=t,e[0]=t,e[1]=o,e[2]=a):(o=e[1],a=e[2]);let s;e[3]!==o?(s=S("mt-2 ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2",o),e[3]=o,e[4]=s):s=e[4];let r;return e[5]!==a||e[6]!==n||e[7]!==s?(r=f.jsx(D,{ref:n,className:s,...a}),e[5]=a,e[6]=n,e[7]=s,e[8]=r):r=e[8],r});ue.displayName=D.displayName;const L=70,P=80,pe=3e4;function ve(t,n){if(!t||n)return"unknown";const e=t.memUsedMB/t.memTotalMB*100;return t.cpuPercent>P||e>P?"overloaded":t.cpuPercent>=L||e>=L?"warning":"healthy"}export{pe as R,ge as T,ue as a,ce as b,le as c,ve as g,W as n,be as u};
@@ -1,10 +1,10 @@
1
- import{a2 as a}from"./index-C1Fo8g_c.js";/**
2
- * @license lucide-react v1.47.0 - ISC
1
+ import{a6 as a}from"./index-DSW9h8XX.js";/**
2
+ * @license lucide-react v1.48.0 - ISC
3
3
  *
4
4
  * This source code is licensed under the ISC license.
5
5
  * See the LICENSE file in the root directory of this source tree.
6
6
  */const e={name:"plus",size:24,node:[["path",{d:"M5 12h14",key:"1ays0h"}],["path",{d:"M12 5v14",key:"s699le"}]]};e.node;const o=a(e);/**
7
- * @license lucide-react v1.47.0 - ISC
7
+ * @license lucide-react v1.48.0 - ISC
8
8
  *
9
9
  * This source code is licensed under the ISC license.
10
10
  * See the LICENSE file in the root directory of this source tree.
package/public/index.html CHANGED
@@ -5,10 +5,10 @@
5
5
  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
6
6
  <link rel="icon" href="/favicon.svg" type="image/svg+xml" />
7
7
  <title>tapflow</title>
8
- <script type="module" crossorigin src="/assets/index-C1Fo8g_c.js"></script>
8
+ <script type="module" crossorigin src="/assets/index-DSW9h8XX.js"></script>
9
9
  <link rel="modulepreload" crossorigin href="/assets/vendor-react-BlPSzrEe.js">
10
10
  <link rel="modulepreload" crossorigin href="/assets/vendor-router-B_lVHrKl.js">
11
- <link rel="stylesheet" crossorigin href="/assets/index-C2F1AgwB.css">
11
+ <link rel="stylesheet" crossorigin href="/assets/index-BbCkTtjO.css">
12
12
  </head>
13
13
  <body>
14
14
  <div id="root"></div>
Binary file
Binary file
@@ -1 +0,0 @@
1
- import{k as m,j as e}from"./vendor-react-BlPSzrEe.js";import{aO as ce,ay as me,aJ as ue,aI as $,aF as A,aw as k,aL as pe,C as y,c as b,d as N,a as S,L as c,I as u,F as p,S as Y,h as G,av as i,B as f,K as ge,W as fe,O as he,aq as g,ap as F,J as Z,au as h,ag as xe,a7 as je}from"./index-C1Fo8g_c.js";import{B as ve}from"./badge-CWVbeuH3.js";import{A as we,h as ye,c as be,f as Ne,g as Se,d as Pe,e as Ce,b as Ae,a as ke}from"./alert-dialog-C8wDimW-.js";import{P as X}from"./pencil-BJcOp3oN.js";import"./vendor-router-B_lVHrKl.js";const Fe=F({teamName:h().min(1,"Team name is required"),logo:Z(File).nullable().optional()}),De=F({displayName:h().min(1,"Display name is required"),avatar:Z(File).nullable().optional()}),qe=F({currentPassword:h().min(1,"Enter your current password"),newPassword:h().min(8,"Password must be at least 8 characters"),confirmPassword:h()}).refine(x=>x.newPassword===x.confirmPassword,{message:"Passwords do not match",path:["confirmPassword"]});function _e(){var K,U,W,H,M,V,J;const{resolvedTheme:x}=ce(),I=x==="dark"?"/logo-dark.svg":"/logo.svg",{user:t}=me(),D=(t==null?void 0:t.role)==="Admin",q=(t==null?void 0:t.role)==="Admin"||(t==null?void 0:t.role)==="Developer"||(t==null?void 0:t.role)==="QA",j=ue(),P=$({queryKey:g.settings,queryFn:xe,enabled:D}),[ee,se]=m.useState(null),re=ee??((K=P.data)==null?void 0:K.logo_url)??null,T=m.useRef(null),d=A({resolver:k(Fe),defaultValues:{teamName:"",logo:null},values:P.data?{teamName:P.data.team_name,logo:null}:void 0,resetOptions:{keepDirtyValues:!0}});async function ae(s){const r=new FormData;r.append("team_name",s.teamName),s.logo&&r.append("logo",s.logo);try{if(!(await fetch("/api/v1/settings",{method:"PATCH",credentials:"include",body:r})).ok){i.error("Failed to update workspace");return}i.success("Workspace updated"),j.invalidateQueries({queryKey:g.settings})}catch{i.error("Failed to update workspace")}}const[te,oe]=m.useState(null),L=te??(t==null?void 0:t.avatarUrl)??null,Q=m.useRef(null),l=A({resolver:k(De),defaultValues:{displayName:"",avatar:null},values:t?{displayName:t.displayName??"",avatar:null}:void 0,resetOptions:{keepDirtyValues:!0}});async function ie(s){const r=new FormData;r.append("display_name",s.displayName),s.avatar&&r.append("avatar",s.avatar);try{if(!(await fetch("/api/v1/profile",{method:"PATCH",credentials:"include",body:r})).ok){i.error("Failed to update profile");return}i.success("Profile updated"),j.invalidateQueries({queryKey:g.me})}catch{i.error("Failed to update profile")}}const o=A({resolver:k(qe)});async function ne(s){try{const r=await fetch("/api/v1/auth/change-password",{method:"POST",credentials:"include",headers:{"Content-Type":"application/json"},body:JSON.stringify({currentPassword:s.currentPassword,newPassword:s.newPassword})});if(!r.ok){const a=await r.json();o.setError("root",{message:a.error??"Failed to change password"});return}o.reset(),i.success("Password changed")}catch{o.setError("root",{message:"Network error"})}}const C=$({queryKey:g.apps,queryFn:je,enabled:q}).data??[],[E,z]=m.useState({}),[O,R]=m.useState({}),[_,B]=m.useState({});async function le(s){B(r=>({...r,[s]:!0}));try{if(!(await fetch(`/api/v1/apps/${s}`,{method:"DELETE",credentials:"include"})).ok){i.error("Failed to delete app");return}j.invalidateQueries({queryKey:g.apps}),i.success("App deleted")}catch{i.error("Failed to delete app")}finally{B(r=>({...r,[s]:!1}))}}async function de(s){var r;R(a=>({...a,[s]:!0}));try{if(!(await fetch(`/api/v1/apps/${s}`,{method:"PATCH",credentials:"include",headers:{"Content-Type":"application/json"},body:JSON.stringify({name:E[s]??((r=C.find(n=>n.id===s))==null?void 0:r.name)})})).ok){i.error("Failed to update app");return}i.success("App updated"),z(({[s]:n,...w})=>w),j.invalidateQueries({queryKey:g.apps})}catch{i.error("Failed to update app")}finally{R(a=>({...a,[s]:!1}))}}const v=pe({control:l.control,name:"displayName"});return e.jsxs("div",{className:"flex flex-col gap-6 max-w-[900px] mx-auto w-full p-6",children:[e.jsx("h1",{className:"text-xl font-semibold tracking-display-sm",children:"Settings"}),D&&e.jsxs(y,{children:[e.jsx(b,{children:e.jsx(N,{children:"Workspace"})}),e.jsx(S,{children:e.jsxs("form",{onSubmit:d.handleSubmit(ae),className:"flex flex-col gap-4",children:[e.jsxs("div",{className:"grid gap-2",children:[e.jsx(c,{htmlFor:"team-name",children:"Team name"}),e.jsx(u,{id:"team-name",placeholder:"My QA Team","aria-required":"true","aria-invalid":!!d.formState.errors.teamName,"aria-describedby":d.formState.errors.teamName?"teamName-error":void 0,...d.register("teamName")}),e.jsx(p,{id:"teamName-error",message:(U=d.formState.errors.teamName)==null?void 0:U.message})]}),e.jsx(Y,{}),e.jsxs("div",{className:"grid gap-2",children:[e.jsxs(c,{children:["Logo ",e.jsx("span",{className:"text-muted-foreground text-xs",children:"(png · jpg, max 2MB)"})]}),e.jsx(G,{name:"logo",control:d.control,render:({field:s})=>e.jsxs("div",{className:"relative w-16 h-16",children:[e.jsx("img",{src:re??I,alt:"Workspace logo",className:"w-16 h-16 rounded-lg object-contain"}),e.jsx("button",{type:"button","aria-label":"Change logo",onClick:()=>{var r;return(r=T.current)==null?void 0:r.click()},className:"absolute bottom-0 right-0 w-6 h-6 rounded-full bg-background border border-border shadow-sm flex items-center justify-center hover:bg-accent transition-colors",children:e.jsx(X,{className:"w-3 h-3","aria-hidden":"true"})}),e.jsx("input",{ref:T,type:"file",accept:".png,.jpg,.jpeg",className:"hidden",onChange:r=>{var n;const a=(n=r.target.files)==null?void 0:n[0];if(a&&a.size>2*1024*1024){i.error("Image must be 2MB or less");return}a&&(s.onChange(a),se(URL.createObjectURL(a)))}})]})})]}),e.jsx("div",{className:"flex justify-end",children:e.jsx(f,{type:"submit",size:"sm",disabled:d.formState.isSubmitting,children:d.formState.isSubmitting?"Saving…":"Save changes"})})]})})]}),e.jsxs(y,{children:[e.jsx(b,{children:e.jsx(N,{children:"Profile"})}),e.jsx(S,{children:e.jsxs("form",{onSubmit:l.handleSubmit(ie),className:"flex flex-col gap-4",children:[e.jsxs("div",{className:"grid gap-2",children:[e.jsx(c,{htmlFor:"display-name",children:"Nickname"}),e.jsx(u,{id:"display-name",placeholder:"Your name","aria-required":"true","aria-invalid":!!l.formState.errors.displayName,"aria-describedby":l.formState.errors.displayName?"displayName-error":void 0,...l.register("displayName")}),e.jsx(p,{id:"displayName-error",message:(W=l.formState.errors.displayName)==null?void 0:W.message})]}),e.jsx(Y,{}),e.jsxs("div",{className:"grid gap-2",children:[e.jsxs(c,{children:["Avatar ",e.jsx("span",{className:"text-muted-foreground text-xs",children:"(png · jpg, max 2MB)"})]}),e.jsx(G,{name:"avatar",control:l.control,render:({field:s})=>{var r;return e.jsxs("div",{className:"relative w-14 h-14",children:[L?e.jsx("img",{src:L,alt:"Profile avatar",className:"w-14 h-14 rounded-full object-cover border"}):e.jsx("div",{className:"w-14 h-14 rounded-full flex items-center justify-center text-lg font-medium",style:(()=>{const a=ge(v||(t==null?void 0:t.email)||"");return{backgroundColor:a.bg,color:a.fg}})(),children:((r=v==null?void 0:v[0])==null?void 0:r.toUpperCase())??"?"}),e.jsx("button",{type:"button","aria-label":"Change avatar",onClick:()=>{var a;return(a=Q.current)==null?void 0:a.click()},className:"absolute bottom-0 right-0 w-6 h-6 rounded-full bg-background border border-border shadow-sm flex items-center justify-center hover:bg-accent transition-colors",children:e.jsx(X,{className:"w-3 h-3","aria-hidden":"true"})}),e.jsx("input",{ref:Q,type:"file",accept:".png,.jpg,.jpeg",className:"hidden",onChange:a=>{var w;const n=(w=a.target.files)==null?void 0:w[0];if(n&&n.size>2*1024*1024){i.error("Image must be 2MB or less");return}n&&(s.onChange(n),oe(URL.createObjectURL(n)))}})]})}})]}),e.jsx("div",{className:"flex justify-end",children:e.jsx(f,{type:"submit",size:"sm",disabled:l.formState.isSubmitting,children:l.formState.isSubmitting?"Saving…":"Save changes"})})]})})]}),e.jsxs(y,{children:[e.jsx(b,{children:e.jsx(N,{children:"Password"})}),e.jsx(S,{children:e.jsxs("form",{onSubmit:o.handleSubmit(ne),className:"flex flex-col gap-4",children:[e.jsxs("div",{className:"grid gap-2",children:[e.jsx(c,{htmlFor:"current-password",children:"Current password"}),e.jsx(u,{id:"current-password",type:"password","aria-required":"true",autoComplete:"current-password","aria-invalid":!!o.formState.errors.currentPassword,"aria-describedby":o.formState.errors.currentPassword?"currentPassword-error":void 0,...o.register("currentPassword")}),e.jsx(p,{id:"currentPassword-error",message:(H=o.formState.errors.currentPassword)==null?void 0:H.message})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(c,{htmlFor:"new-password",children:"New password"}),e.jsx(u,{id:"new-password",type:"password","aria-required":"true",autoComplete:"new-password","aria-invalid":!!o.formState.errors.newPassword,"aria-describedby":o.formState.errors.newPassword?"newPassword-error":void 0,...o.register("newPassword")}),e.jsx(p,{id:"newPassword-error",message:(M=o.formState.errors.newPassword)==null?void 0:M.message})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(c,{htmlFor:"confirm-password",children:"Confirm new password"}),e.jsx(u,{id:"confirm-password",type:"password","aria-required":"true",autoComplete:"new-password","aria-invalid":!!o.formState.errors.confirmPassword,"aria-describedby":o.formState.errors.confirmPassword?"confirmPassword-error":void 0,...o.register("confirmPassword")}),e.jsx(p,{id:"confirmPassword-error",message:(V=o.formState.errors.confirmPassword)==null?void 0:V.message})]}),e.jsx(p,{assertive:!0,id:"default-error",message:(J=o.formState.errors.root)==null?void 0:J.message}),e.jsx("div",{className:"flex justify-end",children:e.jsx(f,{type:"submit",size:"sm",disabled:o.formState.isSubmitting,children:o.formState.isSubmitting?"Saving…":"Change password"})})]})})]}),q&&C.length>0&&e.jsxs(y,{children:[e.jsx(b,{children:e.jsx(N,{children:"Apps"})}),e.jsx(S,{children:e.jsx("div",{className:"flex flex-col divide-y divide-border",children:C.map(s=>e.jsxs("div",{className:"flex flex-col gap-2 py-4 first:pt-0 last:pb-0",children:[e.jsx(c,{htmlFor:`app-${s.id}`,children:"App Name"}),e.jsx(u,{id:`app-${s.id}`,value:E[s.id]??s.name,onChange:r=>z(a=>({...a,[s.id]:r.target.value}))}),e.jsxs("div",{className:"flex flex-col gap-1.5 mt-1",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("span",{className:"text-xs text-muted-foreground font-mono",children:s.bundle_id_key}),e.jsx(ve,{tone:s.platform==="ios"?"ios":s.platform==="android"?"android":void 0,variant:s.platform==="both"?"secondary":void 0,className:"capitalize",children:s.platform})]}),e.jsxs("div",{className:"flex items-center justify-end gap-2",children:[e.jsx(f,{size:"sm",variant:"outline",disabled:O[s.id],onClick:()=>de(s.id),children:O[s.id]?"Saving…":"Save"}),e.jsxs(we,{children:[e.jsx(ye,{asChild:!0,children:e.jsx(f,{size:"sm",variant:"destructive",disabled:_[s.id],children:_[s.id]?"Deleting…":"Delete"})}),e.jsxs(be,{children:[e.jsxs(Ne,{children:[e.jsx(Se,{children:"Delete app?"}),e.jsxs(Pe,{children:["This will permanently delete ",e.jsx("strong",{children:s.name})," and all its builds. This action cannot be undone."]})]}),e.jsxs(Ce,{children:[e.jsx(Ae,{className:"w-24",children:"Cancel"}),e.jsx(ke,{className:fe(he({variant:"destructive"}),"w-24"),onClick:()=>le(s.id),children:"Delete"})]})]})]})]})]})]},s.id))})})]})]})}export{_e as DefaultSettings};
@@ -1 +0,0 @@
1
- import{k as F,j as e}from"./vendor-react-BlPSzrEe.js";import{aF as U,aw as D,aL as J,aJ as O,aI as Y,C as q,c as I,d as L,b as T,a as _,L as m,I as f,h as z,K as G,F as u,S as H,B as V,aq as R,ap as W,au as v,J as X,aM as Z}from"./index-C1Fo8g_c.js";import{b as $,c as ee,L as ae}from"./vendor-router-B_lVHrKl.js";import{P as se}from"./pencil-BJcOp3oN.js";const re=W({displayName:v().optional(),avatar:X(File).nullable().optional(),password:v().min(8,"Password must be at least 8 characters"),confirm:v()}).refine(o=>o.password===o.confirm,{message:"Passwords do not match",path:["confirm"]});function le(){var b,N,C,k,P,S;const o=$(),[E]=ee(),i=E.get("token")??"",[x,A]=F.useState(null),g=F.useRef(null),{register:p,handleSubmit:B,control:j,setError:l,formState:{errors:s,isSubmitting:y}}=U({resolver:D(re),defaultValues:{displayName:"",avatar:null}}),d=J({control:j,name:"displayName"})??"",K=O(),h=Y({queryKey:R.inviteToken(i),queryFn:()=>Z(i),enabled:i!=="",staleTime:1/0}),w=!i||h.isError?"invalid":h.isPending?"loading":"valid",M=((b=h.data)==null?void 0:b.role)??"";async function Q(t){var n;try{const a=new FormData;a.append("token",i),a.append("password",t.password),(n=t.displayName)!=null&&n.trim()&&a.append("display_name",t.displayName.trim()),t.avatar&&a.append("avatar",t.avatar);const r=await fetch("/api/v1/invitations/accept",{method:"POST",body:a});if(r.status===409){l("root",{type:"already-member",message:"This email already has an account. Sign in instead, or ask your admin for a password reset link."});return}if(!r.ok){const c=await r.json().catch(()=>({}));l("root",{message:c.error??"Failed to accept invitation"});return}K.removeQueries({queryKey:R.inviteToken(i)}),o("/app-center",{replace:!0})}catch{l("root",{message:"Network error. Please try again."})}}return w==="loading"?e.jsx("div",{className:"flex min-h-svh items-center justify-center"}):w==="invalid"?e.jsx("div",{className:"bg-mesh-gradient flex min-h-svh items-center justify-center overflow-hidden p-4",children:e.jsx(q,{level:4,className:"w-full max-w-sm text-center",children:e.jsxs(I,{children:[e.jsx(L,{children:"Invitation expired"}),e.jsx(T,{children:"This invite link is invalid or has expired. Ask your admin for a new one."})]})})}):e.jsx("div",{className:"bg-mesh-gradient flex min-h-svh items-center justify-center overflow-hidden p-4",children:e.jsxs(q,{level:4,className:"w-full max-w-sm",children:[e.jsxs(I,{className:"text-center",children:[e.jsx(L,{children:"Set up your account"}),e.jsxs(T,{children:["You're joining as ",e.jsx("strong",{children:M})]})]}),e.jsx(_,{children:e.jsxs("form",{onSubmit:B(Q),className:"flex flex-col gap-4",children:[e.jsxs("div",{className:"grid gap-2",children:[e.jsxs(m,{htmlFor:"display-name",children:["Nickname ",e.jsx("span",{className:"text-muted-foreground text-xs",children:"(optional)"})]}),e.jsx(f,{id:"display-name",placeholder:"Your name",...p("displayName")})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsxs(m,{children:["Avatar ",e.jsx("span",{className:"text-muted-foreground text-xs",children:"(optional, png · jpg, max 2MB)"})]}),e.jsx(z,{name:"avatar",control:j,render:({field:t})=>{var n;return e.jsxs("div",{className:"relative w-14 h-14",children:[x?e.jsx("img",{src:x,alt:"Avatar preview",className:"w-14 h-14 rounded-full object-cover border"}):e.jsx("div",{className:"w-14 h-14 rounded-full flex items-center justify-center text-lg font-medium",style:(()=>{const a=G(d);return{backgroundColor:a.bg,color:a.fg}})(),children:((n=d==null?void 0:d[0])==null?void 0:n.toUpperCase())??"?"}),e.jsx("button",{type:"button","aria-label":s.avatar?"Change avatar — the file was rejected":"Change avatar","aria-describedby":s.avatar?"avatar-error":void 0,onClick:()=>{var a;return(a=g.current)==null?void 0:a.click()},className:"absolute bottom-0 right-0 w-6 h-6 rounded-full bg-background border border-border shadow-sm flex items-center justify-center hover:bg-accent transition-colors",children:e.jsx(se,{className:"w-3 h-3","aria-hidden":"true"})}),e.jsx("input",{ref:g,type:"file",accept:"image/png,image/jpeg",className:"hidden",onChange:a=>{var c;const r=(c=a.target.files)==null?void 0:c[0];if(r){if(r.size>2*1024*1024){l("avatar",{message:"Max 2MB for avatar"});return}t.onChange(r),A(URL.createObjectURL(r))}}})]})}}),e.jsx(u,{assertive:!0,id:"avatar-error",message:(N=s.avatar)==null?void 0:N.message})]}),e.jsx(H,{}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(m,{htmlFor:"password",children:"Password"}),e.jsx(f,{id:"password",type:"password","aria-required":"true",autoComplete:"new-password","aria-invalid":!!s.password,"aria-describedby":s.password?"password-error":void 0,...p("password")}),e.jsx(u,{id:"password-error",message:(C=s.password)==null?void 0:C.message})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(m,{htmlFor:"confirm",children:"Confirm password"}),e.jsx(f,{id:"confirm",type:"password","aria-required":"true",autoComplete:"new-password","aria-invalid":!!s.confirm,"aria-describedby":s.confirm?"confirm-error":void 0,...p("confirm")}),e.jsx(u,{id:"confirm-error",message:(k=s.confirm)==null?void 0:k.message})]}),e.jsx(u,{assertive:!0,id:"invite-error",message:(P=s.root)==null?void 0:P.message}),((S=s.root)==null?void 0:S.type)==="already-member"&&e.jsx(ae,{to:"/login",className:"text-sm text-center underline underline-offset-4",children:"Go to sign in"}),e.jsx(V,{type:"submit",disabled:y,className:"w-full",children:y?"Creating account…":"Create account"})]})})]})})}export{le as Invite};
Binary file
Binary file