@swarm.ing/pieui 2.1.6 → 2.2.0

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 (66) hide show
  1. package/dist/components/PieCard/index.d.ts.map +1 -1
  2. package/dist/components/index.esm.js +1 -1
  3. package/dist/components/index.js +1 -1
  4. package/dist/index.esm.js +2 -2
  5. package/dist/index.js +2 -2
  6. package/dist/native/index.esm.js +2 -2
  7. package/dist/native/index.js +2 -2
  8. package/dist/server/card.d.ts +28 -0
  9. package/dist/server/card.d.ts.map +1 -0
  10. package/dist/server/cards/AjaxGroupCard.d.ts +8 -0
  11. package/dist/server/cards/AjaxGroupCard.d.ts.map +1 -0
  12. package/dist/server/cards/HTMLEmbedCard.d.ts +6 -0
  13. package/dist/server/cards/HTMLEmbedCard.d.ts.map +1 -0
  14. package/dist/server/cards/HiddenCard.d.ts +6 -0
  15. package/dist/server/cards/HiddenCard.d.ts.map +1 -0
  16. package/dist/server/cards/OneOfCard.d.ts +8 -0
  17. package/dist/server/cards/OneOfCard.d.ts.map +1 -0
  18. package/dist/server/cards/UnionCard.d.ts +8 -0
  19. package/dist/server/cards/UnionCard.d.ts.map +1 -0
  20. package/dist/server/cards/index.d.ts +6 -0
  21. package/dist/server/cards/index.d.ts.map +1 -0
  22. package/dist/server/form.d.ts +5 -0
  23. package/dist/server/form.d.ts.map +1 -0
  24. package/dist/server/index.d.ts +9 -0
  25. package/dist/server/index.d.ts.map +1 -0
  26. package/dist/server/index.esm.js +382 -0
  27. package/dist/server/index.js +427 -0
  28. package/dist/server/page.d.ts +26 -0
  29. package/dist/server/page.d.ts.map +1 -0
  30. package/dist/server/realtime.d.ts +13 -0
  31. package/dist/server/realtime.d.ts.map +1 -0
  32. package/dist/server/types.d.ts +28 -0
  33. package/dist/server/types.d.ts.map +1 -0
  34. package/dist/server/web.d.ts +23 -0
  35. package/dist/server/web.d.ts.map +1 -0
  36. package/dist/telegram/index.esm.js +1 -1
  37. package/dist/telegram/index.js +1 -1
  38. package/dist/tests/centrifugeSubscription.test.d.ts +2 -0
  39. package/dist/tests/centrifugeSubscription.test.d.ts.map +1 -0
  40. package/dist/tests/server/card-fill.test.d.ts +2 -0
  41. package/dist/tests/server/card-fill.test.d.ts.map +1 -0
  42. package/dist/tests/server/card-generate.test.d.ts +2 -0
  43. package/dist/tests/server/card-generate.test.d.ts.map +1 -0
  44. package/dist/tests/server/cards.test.d.ts +2 -0
  45. package/dist/tests/server/cards.test.d.ts.map +1 -0
  46. package/dist/tests/server/e2e.test.d.ts +2 -0
  47. package/dist/tests/server/e2e.test.d.ts.map +1 -0
  48. package/dist/tests/server/entry.test.d.ts +2 -0
  49. package/dist/tests/server/entry.test.d.ts.map +1 -0
  50. package/dist/tests/server/form.test.d.ts +2 -0
  51. package/dist/tests/server/form.test.d.ts.map +1 -0
  52. package/dist/tests/server/page.test.d.ts +2 -0
  53. package/dist/tests/server/page.test.d.ts.map +1 -0
  54. package/dist/tests/server/realtime.test.d.ts +2 -0
  55. package/dist/tests/server/realtime.test.d.ts.map +1 -0
  56. package/dist/tests/server/web-ajax.test.d.ts +2 -0
  57. package/dist/tests/server/web-ajax.test.d.ts.map +1 -0
  58. package/dist/tests/server/web-content.test.d.ts +2 -0
  59. package/dist/tests/server/web-content.test.d.ts.map +1 -0
  60. package/dist/tests/server/web-process.test.d.ts +2 -0
  61. package/dist/tests/server/web-process.test.d.ts.map +1 -0
  62. package/dist/tests/server/web-token.test.d.ts +2 -0
  63. package/dist/tests/server/web-token.test.d.ts.map +1 -0
  64. package/dist/util/centrifugeSubscription.d.ts +18 -0
  65. package/dist/util/centrifugeSubscription.d.ts.map +1 -0
  66. package/package.json +28 -3
@@ -1,2 +1,2 @@
1
1
  "use client";
2
- var Y$=Object.create;var{getPrototypeOf:z$,defineProperty:y,getOwnPropertyNames:KU,getOwnPropertyDescriptor:G$}=Object,LU=Object.prototype.hasOwnProperty;var B$=(U,$,H)=>{H=U!=null?Y$(z$(U)):{};let I=$||!U||!U.__esModule?y(H,"default",{value:U,enumerable:!0}):H;for(let Z of KU(U))if(!LU.call(I,Z))y(I,Z,{get:()=>U[Z],enumerable:!0});return I},TU=new WeakMap,Q$=(U)=>{var $=TU.get(U),H;if($)return $;if($=y({},"__esModule",{value:!0}),U&&typeof U==="object"||typeof U==="function")KU(U).map((I)=>!LU.call($,I)&&y($,I,{get:()=>U[I],enumerable:!(H=G$(U,I))||H.enumerable}));return TU.set(U,$),$};var _$=(U,$)=>{for(var H in $)y(U,H,{get:$[H],enumerable:!0,configurable:!0,set:(I)=>$[H]=()=>I})};var g$={};_$(g$,{useWebApp:()=>S,useInitData:()=>lU,SecureStorageCard:()=>X$,PieTelegramRoot:()=>U$,CloudStorageCard:()=>J$});module.exports=Q$(g$);var k=require("react"),b=require("@tanstack/react-query");var qU=B$(require("mitt")),d=require("react");var YU=globalThis,Q=(U,$)=>{let H=Symbol.for(U);if(!(H in YU))YU[H]=$();return YU[H]};function OU(){return Q("@swarm.ing/pieui:mitt-emitter",()=>qU.default())}var D$=Q("@swarm.ing/pieui:context:mitt",()=>d.createContext(null));var c=D$;var VU=require("socket.io-client"),MU=require("react");var WU=Q("@swarm.ing/pieui:socket-cache",()=>new Map),AU=(U)=>{let $=WU.get(U);if($)return $;let H=VU.io(U,{autoConnect:!1,transports:["websocket"]});return WU.set(U,H),H},F$=Q("@swarm.ing/pieui:context:socket",()=>MU.createContext(null)),P=F$;var RU=require("react"),zU=require("centrifuge");var EU=Q("@swarm.ing/pieui:centrifuge-cache",()=>new Map),PU=(U,$)=>{if(!$)return null;let H=`${U}::${$}`,I=EU.get(H);if(I)return I;async function Z(){let X=await fetch(U+"api/centrifuge/gen_token",{credentials:"include"});if(!X.ok){if(X.status===401||X.status===403)throw new zU.Centrifuge.UnauthorizedError("Backend is not answering");throw Error(`Unexpected status code ${X.status}`)}return(await X.json()).token}let J=new zU.Centrifuge($,{getToken:Z});return EU.set(H,J),J},T$=Q("@swarm.ing/pieui:context:centrifuge",()=>RU.createContext(null)),j=T$;var t=require("react");var o=require("react"),l=new Map,u=new Map;function s(U,$){let H=`${U}::${$}`,I=U?l.get(H):void 0,[Z,J]=o.useState(I??null);return o.useEffect(()=>{if(!U)return;if(l.has(H)){J(l.get(H));return}let X=u.get(H);if(!X)X=fetch(U+`api/support/${$}`,{method:"GET"}).then((z)=>z.json()).then((z)=>{return l.set(H,z),u.delete(H),z}).catch((z)=>{throw u.delete(H),z}),u.set(H,X);let G=!1;return X.then((z)=>{if(!G)J(z)}).catch(()=>{}),()=>{G=!0}},[U,$,H]),Z}var n=require("react");var GU=Q("@swarm.ing/pieui:context:pieConfig",()=>n.createContext(null)),i=()=>{let U=n.useContext(GU);if(!U)throw Error("usePieConfig must be used within PieConfigProvider");return U},BU=()=>{let{apiServer:U}=i();return U},r=BU,jU=()=>{let{centrifugeServer:U}=i();return U};var E=()=>{let{enableRenderingLog:U}=i();return U},NU=E,wU=()=>{let{pageProcessor:U}=i();return U};var K$=(U)=>{let $=document.cookie?document.cookie.split(";"):[];for(let H of $){let I=H.indexOf("=");if((I===-1?H:H.slice(0,I)).trim()===U){let J=I===-1?"":H.slice(I+1).trim();try{return decodeURIComponent(J)}catch{return J}}}return null},L$={isClient(){return typeof window<"u"&&typeof document<"u"},readSid(){return typeof window>"u"?void 0:window.sid},setSid(U){if(typeof window<"u")window.sid=U},readWebStorage(U,$){return(U==="local"?window.localStorage:window.sessionStorage).getItem($)},readCookie:K$,readUrlParams(U){return new URLSearchParams(window.location.search).getAll(U)},readDomInput(U){let $=document.getElementsByName(U);if(!$.length)return null;let H=$[0];if(H instanceof HTMLInputElement){if(H.type==="file"&&H.files)return Array.from(H.files);return[H.value]}if(H instanceof HTMLTextAreaElement)return[H.value];return[]},submitGlobalForm(){if(typeof document>"u")return;let U=document.getElementById("piedata_global_form");U&&U.submit()}},xU=L$;var q$={};function R(){return q$}var kU=new Map;var bU=(U)=>{return kU.has(U)?kU.get(U):null};var fU,O$={isClient(){return!0},readSid(){return fU},setSid(U){fU=U},readWebStorage(U,$){let H=R(),I=U==="local"?H.storage:H.sessionStorage;return I?I.getItem($):null},async readWebStorageAsync(U,$){let H=R(),I=U==="local"?H.asyncStorage:H.asyncSessionStorage;if(I)return I.getItem($);let Z=U==="local"?H.storage:H.sessionStorage;return Z?Z.getItem($):null},readCookie(U){let $=R();return $.getCookie?$.getCookie(U):null},readUrlParams(U){let $=R();return $.getRouteParams?$.getRouteParams(U):[]},readDomInput(U){let $=R();return $.getInput?$.getInput(U):bU(U)},submitGlobalForm(){R().submitForm?.()}},yU=O$;var W$=typeof navigator<"u"&&navigator.product==="ReactNative",V$=W$?yU:xU,a=V$;var M$=Q("@swarm.ing/pieui:sid-state",()=>({promise:null,resolve:null}));function CU(){M$.resolve?.()}var A$=({children:U})=>{let $=t.useContext(P),H=r(),I=s(H,"socketIO"),Z=(J)=>{if(a.isClient())a.setSid(J.sid),CU(),console.log(`SocketIO initialized: ${a.readSid()}`)};return t.useEffect(()=>{if(!$)return;let J=()=>{console.log("SocketIO connected")},X=(G)=>{console.log(`SocketIO disconnected: ${G}`),$.connect()};if(I)$.on("pieinit",Z),$.on("connect",J),$.on("disconnect",X),$.connect();return()=>{if(I)$.off("pieinit",Z),$.off("connect",J),$.off("disconnect",X),$.disconnect()}},[$,I]),U},vU=A$;var e=require("react");var E$=({children:U})=>{let $=e.useContext(j),H=r(),I=s(H,"centrifuge");return e.useEffect(()=>{if(!$)return;let Z=()=>{console.log("Centrifuge connected")},J=(X)=>{console.log("Centrifuge disconnected:",X)};if(I)$.on("connected",Z),$.on("disconnected",J),$.connect();return()=>{if(I)$.disconnect()}},[$,I]),U},SU=E$;var mU=require("react");var UU=require("react/jsx-runtime"),R$=Q("@swarm.ing/pieui:context:fallback",()=>mU.createContext(UU.jsx(UU.Fragment,{}))),N=R$;var gU=require("react");var P$=Q("@swarm.ing/pieui:context:lazyError",()=>gU.createContext(void 0)),w=P$;var hU=require("react"),C=new Map;function j$(U,$){return $.catch(()=>{if(C.get(U)===$)C.delete(U)}),C.set(U,$),$}function pU(U,$){return hU.lazy(()=>{if(C.has($))return C.get($);return j$($,U().then((H)=>H))})}var dU=Q("@swarm.ing/pieui:component-registry",()=>new Map),N$=(U)=>{if(!U.name)throw Error("Component registration requires a name");if(!U.component&&!U.loader)throw Error(`Component "${U.name}" requires component or loader`);let $={name:U.name,component:U.component,loader:U.loader,metadata:U.metadata,fallback:U.fallback,isLazy:!1};if(!$.component&&$.loader)$.component=pU($.loader,U.name),$.isLazy=!0;return $};function $U(U){let $=N$(U);return dU.set($.name,$),$.component}var HU=(U)=>{return dU.get(U)};var v=require("react");var IU=require("react"),cU=require("react/jsx-runtime"),w$=2,x$=400;class x extends IU.Component{state={failed:!1,attempt:0};timer;static getDerivedStateFromError(){return{failed:!0}}componentDidCatch(U){if(this.props.onError?.(U),this.state.attempt<w$){let $=x$*(this.state.attempt+1);this.timer=setTimeout(()=>{this.setState((H)=>({failed:!1,attempt:H.attempt+1}))},$)}}componentDidUpdate(U){if(U.name!==this.props.name&&this.state.attempt!==0)this.setState({failed:!1,attempt:0})}componentWillUnmount(){if(this.timer)clearTimeout(this.timer)}render(){if(this.state.failed)return this.props.fallback;return cU.jsx(IU.Suspense,{fallback:this.props.fallback,children:this.props.children},`${this.props.name}:${this.state.attempt}`)}}var JU=require("react/jsx-runtime");function k$({uiConfig:U,setUiAjaxConfiguration:$}){let H=v.useContext(N),I=v.useContext(w),Z=E();if(Z)console.log("[UI] Rendering component:",U.card),console.log("[UI] Component data:",U.data),console.log("[UI] Component content:",U.content),console.log("[UI] Has setUiAjaxConfiguration:",!!$);let J=HU(U.card);if(!J?.component){if(Z)console.warn(`[UI] Component not found in registry: ${U.card}`),console.log("[UI] Returning fallback component");return H}if(Z)console.log("[UI] Found component in registry:",{name:J.name,isLazy:J.isLazy,hasMetadata:!!J.metadata});let X=J.component,G=JU.jsx(X,{data:U.data,content:U.content,setUiAjaxConfiguration:$});if(J.isLazy){if(Z)console.log("[UI] Rendering lazy component with Suspense:",J.name);return JU.jsx(x,{name:J.name,fallback:J.fallback?JU.jsx(J.fallback,{}):H,onError:I,children:G})}if(Z)console.log("[UI] Rendering component directly:",J.name);return G}var QU=v.memo(k$);var eU=require("axios-date-transformer");var ZU=require("react");var S=({onError:U}={})=>{let[$,H]=ZU.useState(null),I=wU();return ZU.useEffect(()=>{if(typeof window>"u")return;let Z=window.Telegram?.WebApp;if(!Z)return;try{Z.ready?.()}catch(J){U?.()}if(I==="telegram_expanded"&&(Z.platform==="ios"||Z.platform==="android"))Z.expand();H(Z)},[]),$},lU=()=>{let U=S();return[U?.initDataUnsafe,U?.initData]};var uU=require("react");var b$=Q("@swarm.ing/pieui:context:navigate",()=>uU.createContext(void 0)),oU=b$;var _U=require("react");var sU=require("react");var f$=Q("@swarm.ing/pieui:context:uiRenderer",()=>sU.createContext(null)),nU=f$;var m=require("react/jsx-runtime");function iU({uiConfig:U,setUiAjaxConfiguration:$}){let H=_U.useContext(N),I=_U.useContext(w),Z=E();if(Z)console.log("[UILoading] Rendering fallback for:",U.card),console.log("[UILoading] Component data:",U.data),console.log("[UILoading] Component content:",U.content),console.log("[UILoading] Has setUiAjaxConfiguration:",!!$);let J=HU(U.card);if(!J?.component){if(Z)console.warn(`[UILoading] Component not found in registry: ${U.card}`),console.log("[UILoading] Returning fallback component");return H}if(Z)console.log("[UILoading] Found component in registry:",{name:J.name,isLazy:J.isLazy,hasMetadata:!!J.metadata,hasFallback:!!J.fallback});if(J.fallback){if(Z)console.log("[UILoading] Rendering fallback for:",J.name);let z=J.fallback;return m.jsx(z,{})}if(Z)console.log("[UILoading] No fallback, rendering full component:",J.name);let X=J.component,G=m.jsx(nU.Provider,{value:iU,children:m.jsx(X,{data:U.data,content:U.content,setUiAjaxConfiguration:$})});if(J.isLazy)return m.jsx(x,{name:J.name,fallback:H,onError:I,children:G});return G}var rU=iU;var tU=require("react/jsx-runtime");function aU(U,$,H){if(!$)return H;let I=U.replace(/^\//,""),Z=$[I];if(!Z)return H;return tU.jsx(rU,{uiConfig:Z})}var D=require("react/jsx-runtime"),y$=({location:U,fallback:$,piecache:H,onError:I,queryOptions:Z,disableGlobalForm:J})=>{let X=BU(),G=jU(),z=E(),K=k.useMemo(()=>eU.createAxiosDateTransformer({baseURL:X}),[X]),Y=k.useMemo(()=>OU(),[]),F=k.useMemo(()=>X?AU(X):null,[X]),p=k.useMemo(()=>X?PU(X,G):null,[X,G]),O=S({onError:I}),{data:L,isLoading:A,error:W}=b.useQuery({queryKey:["uiConfig",U.pathname+U.search,O?.initData],enabled:!!O?.initData,queryFn:async()=>{let B=new URLSearchParams(U.search);if(B.set("__pieroot","telegram"),O?.initData)B.set("initData",O.initData);let _="/api/content"+U.pathname+"?"+B.toString();if(z)console.log("[PieRoot] Fetching UI configuration from:",_);let T=await K.get(_,{headers:{"Access-Control-Allow-Origin":"*","Access-Control-Allow-Methods":"GET,PUT,POST,DELETE,PATCH,OPTIONS","Content-type":"application/json"},withCredentials:!0});if(z)console.log("[PieRoot] Received UI configuration:",T.data);return T.data},staleTime:1/0,gcTime:1/0,refetchOnWindowFocus:!1,refetchOnMount:!1,refetchOnReconnect:!1,retry:!0,retryDelay:(B)=>Math.min(1000*2**B,30000),...Z}),V=aU(U.pathname,H,$);if(!X)throw Error("Set PIE_API_SERVER and PIE_CENTRIFUGE_SERVER");if(W&&z)return console.error("[PieRoot] Error fetching UI configuration:",W),console.error("[PieRoot] Error details:",{message:W.message,status:W.response?.status,data:W.response?.data}),I?.(W),V;if(A||!L){if(z)console.log("[PieRoot] Loading state:",{isLoading:A,hasUiConfiguration:!!L});return V}if(z)console.log("[PieRoot] UI configuration loaded successfully:",L),console.log("[PieRoot] Rendering UI with configuration");return D.jsx(c.Provider,{value:Y,children:D.jsx(P.Provider,{value:F,children:D.jsx(j.Provider,{value:p,children:D.jsx(N.Provider,{value:$??D.jsx(D.Fragment,{}),children:D.jsx(vU,{children:D.jsx(SU,{children:J?D.jsx(QU,{uiConfig:L}):D.jsx("form",{id:"piedata_global_form",action:X+"api/process"+U.pathname,method:"post",encType:"multipart/form-data",children:D.jsx(QU,{uiConfig:L})})})})})})})})},C$=(U)=>{let $=k.useMemo(()=>new b.QueryClient,[]),H=U.queryClient??$;return D.jsx(oU.Provider,{value:U.onNavigate,children:D.jsx(GU.Provider,{value:U.config,children:D.jsx(w.Provider,{value:U.onError,children:D.jsx(b.QueryClientProvider,{client:H,children:D.jsx(y$,{...U})})})})})},U$=C$;var g=require("react");var q=require("react");function $$(U){return U.wasRecovering===!0&&U.recovered===!1}function H$(U){return U.recoverable===!1}var f=require("react/jsx-runtime"),v$=({card:U,data:$,children:H,useSocketioSupport:I=!1,useCentrifugeSupport:Z=!1,useMittSupport:J=!1,centrifugeChannel:X=void 0,methods:G=void 0,stored:z=void 0,onResync:K=void 0})=>{let Y=NU(),F=q.useRef(G);F.current=G;let p=q.useRef(K);if(p.current=K,Y)console.log("[PieCard] Rendering card:",U),console.log("[PieCard] Card data:",$),console.log("[PieCard] Component name:",$?.name),console.log("[PieCard] Real-time support:",{socketio:I,centrifuge:Z,mitt:J,centrifugeChannel:X}),console.log("[PieCard] Methods:",G?Object.keys(G):"none"),console.log("[PieCard] Has children:",!!H);let O=q.useContext(P),L=q.useContext(j),A=q.useContext(c);if(q.useEffect(()=>{if(!O||!I||!F.current||!$.name){if(Y&&I)console.log("[PieCard] Socket.IO setup skipped:",{hasSocket:!!O,useSocketioSupport:I,hasMethods:!!F.current,hasDataName:!!$?.name});return}let V=Object.keys(F.current??{}).map((B)=>{let _=`pie${B}_${$.name}`;if(Y)console.log(`[PieCard] Socket.IO registering event: ${_}`);let T=(M)=>{F.current?.[B]?.(M)};return O.on(_,T),[_,T]});return()=>{V.forEach(([B,_])=>{if(Y)console.log(`[PieCard] Socket.IO unregistering event: ${B}`);O.off(B,_)})}},[O,$.name,I]),q.useEffect(()=>{if(!L||!Z||!X||!$.name){if(Y&&Z)console.log("[PieCard] Centrifuge setup skipped:",{hasCentrifuge:!!L,useCentrifugeSupport:Z,hasCentrifugeChannel:!!X,hasMethods:!!F.current,hasDataName:!!$?.name});return}let V=Object.keys(F.current??{}).map((B)=>{let _=`pie${B}_${$.name}_${X}`;if(Y)console.log(`[PieCard] Centrifuge subscribing to channel: ${_}`);let T=L.newSubscription(_,{recoverable:!0,positioned:!0});return T.on("publication",(M)=>{if(Y)console.log(`[PieCard] Centrifuge received data on ${_}:`,M.data);F.current?.[B]?.(M.data)}),T.on("subscribed",(M)=>{if(H$(M))console.warn(`[PieCard] Centrifuge channel ${_} is not `+"recoverable — enable history on the server "+"namespace for exact replay; relying on resync fallback only.");if($$(M)){if(Y)console.log(`[PieCard] Centrifuge recovery gap on ${_}; requesting resync`);p.current?.({channel:_,reason:"gap"})}}),T.subscribe(),T});return()=>{V.forEach((B)=>{if(Y)console.log("[PieCard] Centrifuge unsubscribing from channel");B.unsubscribe(),L.removeSubscription(B)})}},[L,X,$.name,Z]),q.useEffect(()=>{if(!A||!J||!$.name){if(Y&&J)console.log("[PieCard] Mitt setup skipped:",{hasMitt:!!A,useMittSupport:J,hasMethods:!!F.current,hasDataName:!!$?.name});return}let W=Object.keys(F.current??{}),V={};return W.forEach((B)=>{let _=`pie${B}_${$.name}`,T=(M)=>{if(Y)console.log(`[PieCard] Mitt registering event: ${_}`);F.current?.[B]?.(M)};V[_]=T,A.on(_,T)}),()=>{Object.entries(V).forEach(([B,_])=>{if(Y)console.log(`[PieCard] Mitt unregistering event: ${B}`);A.off(B,_)})}},[A,$.name,J]),Y)console.log("[PieCard] Rendering complete, returning children");if(z!==void 0)return f.jsxs(f.Fragment,{children:[f.jsx("input",{type:"hidden",name:$.name,value:JSON.stringify(z)}),H]});return H},XU=v$;var DU=require("react/jsx-runtime"),S$=({data:U})=>{let{name:$,key:H,value:I,useSocketioSupport:Z,useCentrifugeSupport:J,useMittSupport:X,centrifugeChannel:G}=U,[z,K]=g.useState(I);return g.useEffect(()=>{K(I)},[I]),g.useEffect(()=>{if(typeof window>"u")return;let Y=window.Telegram?.WebApp?.CloudStorage;if(!Y)return;Y.setItem(H,z)},[H,z]),DU.jsx(XU,{card:"CloudStorageCard",data:U,useSocketioSupport:Z,useCentrifugeSupport:J,useMittSupport:X,centrifugeChannel:G,methods:{update:({value:Y})=>{K(Y)},remove:()=>{let Y=window.Telegram?.WebApp?.CloudStorage;if(Y)Y.removeItem(H);K("")}},children:DU.jsx("input",{type:"hidden",id:$,name:$,value:z})})},I$=S$;var J$=$U({name:"CloudStorageCard",component:I$,metadata:{author:"PieData"}});var h=require("react");var FU=require("react/jsx-runtime"),m$=({data:U})=>{let{name:$,key:H,value:I,useSocketioSupport:Z,useCentrifugeSupport:J,useMittSupport:X,centrifugeChannel:G}=U,[z,K]=h.useState(I);return h.useEffect(()=>{K(I)},[I]),h.useEffect(()=>{if(typeof window>"u")return;let Y=window.Telegram?.WebApp?.SecureStorage;if(!Y)return;Y.setItem(H,z)},[H,z]),FU.jsx(XU,{card:"SecureStorageCard",data:U,useSocketioSupport:Z,useCentrifugeSupport:J,useMittSupport:X,centrifugeChannel:G,methods:{update:({value:Y})=>{K(Y)},remove:()=>{let Y=window.Telegram?.WebApp?.SecureStorage;if(Y)Y.removeItem(H);K("")}},children:FU.jsx("input",{type:"hidden",id:$,name:$,value:z})})},Z$=m$;var X$=$U({name:"SecureStorageCard",component:Z$,metadata:{author:"PieData"}});
2
+ var Q$=Object.create;var{getPrototypeOf:_$,defineProperty:b,getOwnPropertyNames:WU,getOwnPropertyDescriptor:D$}=Object,OU=Object.prototype.hasOwnProperty;var F$=(U,$,I)=>{I=U!=null?Q$(_$(U)):{};let J=$||!U||!U.__esModule?b(I,"default",{value:U,enumerable:!0}):I;for(let X of WU(U))if(!OU.call(J,X))b(J,X,{get:()=>U[X],enumerable:!0});return J},qU=new WeakMap,T$=(U)=>{var $=qU.get(U),I;if($)return $;if($=b({},"__esModule",{value:!0}),U&&typeof U==="object"||typeof U==="function")WU(U).map((J)=>!OU.call($,J)&&b($,J,{get:()=>U[J],enumerable:!(I=D$(U,J))||I.enumerable}));return qU.set(U,$),$};var K$=(U,$)=>{for(var I in $)b(U,I,{get:$[I],enumerable:!0,configurable:!0,set:(J)=>$[I]=()=>J})};var l$={};K$(l$,{useWebApp:()=>m,useInitData:()=>sU,SecureStorageCard:()=>H$,PieTelegramRoot:()=>J$,CloudStorageCard:()=>G$});module.exports=T$(l$);var k=require("react"),C=require("@tanstack/react-query");var VU=F$(require("mitt")),l=require("react");var GU=globalThis,_=(U,$)=>{let I=Symbol.for(U);if(!(I in GU))GU[I]=$();return GU[I]};function MU(){return _("@swarm.ing/pieui:mitt-emitter",()=>VU.default())}var L$=_("@swarm.ing/pieui:context:mitt",()=>l.createContext(null));var c=L$;var EU=require("socket.io-client"),RU=require("react");var AU=_("@swarm.ing/pieui:socket-cache",()=>new Map),jU=(U)=>{let $=AU.get(U);if($)return $;let I=EU.io(U,{autoConnect:!1,transports:["websocket"]});return AU.set(U,I),I},q$=_("@swarm.ing/pieui:context:socket",()=>RU.createContext(null)),j=q$;var NU=require("react"),BU=require("centrifuge");var PU=_("@swarm.ing/pieui:centrifuge-cache",()=>new Map),wU=(U,$)=>{if(!$)return null;let I=`${U}::${$}`,J=PU.get(I);if(J)return J;async function X(){let Y=await fetch(U+"api/centrifuge/gen_token",{credentials:"include"});if(!Y.ok){if(Y.status===401||Y.status===403)throw new BU.Centrifuge.UnauthorizedError("Backend is not answering");throw Error(`Unexpected status code ${Y.status}`)}return(await Y.json()).token}let Z=new BU.Centrifuge($,{getToken:X});return PU.set(I,Z),Z},W$=_("@swarm.ing/pieui:context:centrifuge",()=>NU.createContext(null)),P=W$;var e=require("react");var s=require("react"),u=new Map,o=new Map;function n(U,$){let I=`${U}::${$}`,J=U?u.get(I):void 0,[X,Z]=s.useState(J??null);return s.useEffect(()=>{if(!U)return;if(u.has(I)){Z(u.get(I));return}let Y=o.get(I);if(!Y)Y=fetch(U+`api/support/${$}`,{method:"GET"}).then((G)=>G.json()).then((G)=>{return u.set(I,G),o.delete(I),G}).catch((G)=>{throw o.delete(I),G}),o.set(I,Y);let H=!1;return Y.then((G)=>{if(!H)Z(G)}).catch(()=>{}),()=>{H=!0}},[U,$,I]),X}var i=require("react");var HU=_("@swarm.ing/pieui:context:pieConfig",()=>i.createContext(null)),r=()=>{let U=i.useContext(HU);if(!U)throw Error("usePieConfig must be used within PieConfigProvider");return U},QU=()=>{let{apiServer:U}=r();return U},a=QU,xU=()=>{let{centrifugeServer:U}=r();return U};var E=()=>{let{enableRenderingLog:U}=r();return U},kU=E,CU=()=>{let{pageProcessor:U}=r();return U};var O$=(U)=>{let $=document.cookie?document.cookie.split(";"):[];for(let I of $){let J=I.indexOf("=");if((J===-1?I:I.slice(0,J)).trim()===U){let Z=J===-1?"":I.slice(J+1).trim();try{return decodeURIComponent(Z)}catch{return Z}}}return null},V$={isClient(){return typeof window<"u"&&typeof document<"u"},readSid(){return typeof window>"u"?void 0:window.sid},setSid(U){if(typeof window<"u")window.sid=U},readWebStorage(U,$){return(U==="local"?window.localStorage:window.sessionStorage).getItem($)},readCookie:O$,readUrlParams(U){return new URLSearchParams(window.location.search).getAll(U)},readDomInput(U){let $=document.getElementsByName(U);if(!$.length)return null;let I=$[0];if(I instanceof HTMLInputElement){if(I.type==="file"&&I.files)return Array.from(I.files);return[I.value]}if(I instanceof HTMLTextAreaElement)return[I.value];return[]},submitGlobalForm(){if(typeof document>"u")return;let U=document.getElementById("piedata_global_form");U&&U.submit()}},yU=V$;var M$={};function R(){return M$}var fU=new Map;var bU=(U)=>{return fU.has(U)?fU.get(U):null};var vU,A$={isClient(){return!0},readSid(){return vU},setSid(U){vU=U},readWebStorage(U,$){let I=R(),J=U==="local"?I.storage:I.sessionStorage;return J?J.getItem($):null},async readWebStorageAsync(U,$){let I=R(),J=U==="local"?I.asyncStorage:I.asyncSessionStorage;if(J)return J.getItem($);let X=U==="local"?I.storage:I.sessionStorage;return X?X.getItem($):null},readCookie(U){let $=R();return $.getCookie?$.getCookie(U):null},readUrlParams(U){let $=R();return $.getRouteParams?$.getRouteParams(U):[]},readDomInput(U){let $=R();return $.getInput?$.getInput(U):bU(U)},submitGlobalForm(){R().submitForm?.()}},SU=A$;var E$=typeof navigator<"u"&&navigator.product==="ReactNative",R$=E$?SU:yU,t=R$;var j$=_("@swarm.ing/pieui:sid-state",()=>({promise:null,resolve:null}));function mU(){j$.resolve?.()}var P$=({children:U})=>{let $=e.useContext(j),I=a(),J=n(I,"socketIO"),X=(Z)=>{if(t.isClient())t.setSid(Z.sid),mU(),console.log(`SocketIO initialized: ${t.readSid()}`)};return e.useEffect(()=>{if(!$)return;let Z=()=>{console.log("SocketIO connected")},Y=(H)=>{console.log(`SocketIO disconnected: ${H}`),$.connect()};if(J)$.on("pieinit",X),$.on("connect",Z),$.on("disconnect",Y),$.connect();return()=>{if(J)$.off("pieinit",X),$.off("connect",Z),$.off("disconnect",Y),$.disconnect()}},[$,J]),U},gU=P$;var UU=require("react");var N$=({children:U})=>{let $=UU.useContext(P),I=a(),J=n(I,"centrifuge");return UU.useEffect(()=>{if(!$)return;let X=()=>{console.log("Centrifuge connected")},Z=(Y)=>{console.log("Centrifuge disconnected:",Y)};if(J)$.on("connected",X),$.on("disconnected",Z),$.connect();return()=>{if(J)$.disconnect()}},[$,J]),U},hU=N$;var pU=require("react");var $U=require("react/jsx-runtime"),w$=_("@swarm.ing/pieui:context:fallback",()=>pU.createContext($U.jsx($U.Fragment,{}))),N=w$;var dU=require("react");var x$=_("@swarm.ing/pieui:context:lazyError",()=>dU.createContext(void 0)),w=x$;var lU=require("react"),v=new Map;function k$(U,$){return $.catch(()=>{if(v.get(U)===$)v.delete(U)}),v.set(U,$),$}function cU(U,$){return lU.lazy(()=>{if(v.has($))return v.get($);return k$($,U().then((I)=>I))})}var uU=_("@swarm.ing/pieui:component-registry",()=>new Map),C$=(U)=>{if(!U.name)throw Error("Component registration requires a name");if(!U.component&&!U.loader)throw Error(`Component "${U.name}" requires component or loader`);let $={name:U.name,component:U.component,loader:U.loader,metadata:U.metadata,fallback:U.fallback,isLazy:!1};if(!$.component&&$.loader)$.component=cU($.loader,U.name),$.isLazy=!0;return $};function IU(U){let $=C$(U);return uU.set($.name,$),$.component}var JU=(U)=>{return uU.get(U)};var S=require("react");var ZU=require("react"),oU=require("react/jsx-runtime"),y$=2,f$=400;class x extends ZU.Component{state={failed:!1,attempt:0};timer;static getDerivedStateFromError(){return{failed:!0}}componentDidCatch(U){if(this.props.onError?.(U),this.state.attempt<y$){let $=f$*(this.state.attempt+1);this.timer=setTimeout(()=>{this.setState((I)=>({failed:!1,attempt:I.attempt+1}))},$)}}componentDidUpdate(U){if(U.name!==this.props.name&&this.state.attempt!==0)this.setState({failed:!1,attempt:0})}componentWillUnmount(){if(this.timer)clearTimeout(this.timer)}render(){if(this.state.failed)return this.props.fallback;return oU.jsx(ZU.Suspense,{fallback:this.props.fallback,children:this.props.children},`${this.props.name}:${this.state.attempt}`)}}var XU=require("react/jsx-runtime");function b$({uiConfig:U,setUiAjaxConfiguration:$}){let I=S.useContext(N),J=S.useContext(w),X=E();if(X)console.log("[UI] Rendering component:",U.card),console.log("[UI] Component data:",U.data),console.log("[UI] Component content:",U.content),console.log("[UI] Has setUiAjaxConfiguration:",!!$);let Z=JU(U.card);if(!Z?.component){if(X)console.warn(`[UI] Component not found in registry: ${U.card}`),console.log("[UI] Returning fallback component");return I}if(X)console.log("[UI] Found component in registry:",{name:Z.name,isLazy:Z.isLazy,hasMetadata:!!Z.metadata});let Y=Z.component,H=XU.jsx(Y,{data:U.data,content:U.content,setUiAjaxConfiguration:$});if(Z.isLazy){if(X)console.log("[UI] Rendering lazy component with Suspense:",Z.name);return XU.jsx(x,{name:Z.name,fallback:Z.fallback?XU.jsx(Z.fallback,{}):I,onError:J,children:H})}if(X)console.log("[UI] Rendering component directly:",Z.name);return H}var _U=S.memo(b$);var I$=require("axios-date-transformer");var YU=require("react");var m=({onError:U}={})=>{let[$,I]=YU.useState(null),J=CU();return YU.useEffect(()=>{if(typeof window>"u")return;let X=window.Telegram?.WebApp;if(!X)return;try{X.ready?.()}catch(Z){U?.()}if(J==="telegram_expanded"&&(X.platform==="ios"||X.platform==="android"))X.expand();I(X)},[]),$},sU=()=>{let U=m();return[U?.initDataUnsafe,U?.initData]};var nU=require("react");var v$=_("@swarm.ing/pieui:context:navigate",()=>nU.createContext(void 0)),iU=v$;var DU=require("react");var rU=require("react");var S$=_("@swarm.ing/pieui:context:uiRenderer",()=>rU.createContext(null)),aU=S$;var g=require("react/jsx-runtime");function tU({uiConfig:U,setUiAjaxConfiguration:$}){let I=DU.useContext(N),J=DU.useContext(w),X=E();if(X)console.log("[UILoading] Rendering fallback for:",U.card),console.log("[UILoading] Component data:",U.data),console.log("[UILoading] Component content:",U.content),console.log("[UILoading] Has setUiAjaxConfiguration:",!!$);let Z=JU(U.card);if(!Z?.component){if(X)console.warn(`[UILoading] Component not found in registry: ${U.card}`),console.log("[UILoading] Returning fallback component");return I}if(X)console.log("[UILoading] Found component in registry:",{name:Z.name,isLazy:Z.isLazy,hasMetadata:!!Z.metadata,hasFallback:!!Z.fallback});if(Z.fallback){if(X)console.log("[UILoading] Rendering fallback for:",Z.name);let G=Z.fallback;return g.jsx(G,{})}if(X)console.log("[UILoading] No fallback, rendering full component:",Z.name);let Y=Z.component,H=g.jsx(aU.Provider,{value:tU,children:g.jsx(Y,{data:U.data,content:U.content,setUiAjaxConfiguration:$})});if(Z.isLazy)return g.jsx(x,{name:Z.name,fallback:I,onError:J,children:H});return H}var eU=tU;var $$=require("react/jsx-runtime");function U$(U,$,I){if(!$)return I;let J=U.replace(/^\//,""),X=$[J];if(!X)return I;return $$.jsx(eU,{uiConfig:X})}var D=require("react/jsx-runtime"),m$=({location:U,fallback:$,piecache:I,onError:J,queryOptions:X,disableGlobalForm:Z})=>{let Y=QU(),H=xU(),G=E(),K=k.useMemo(()=>I$.createAxiosDateTransformer({baseURL:Y}),[Y]),z=k.useMemo(()=>MU(),[]),T=k.useMemo(()=>Y?jU(Y):null,[Y]),d=k.useMemo(()=>Y?wU(Y,H):null,[Y,H]),W=m({onError:J}),{data:L,isLoading:M,error:O}=C.useQuery({queryKey:["uiConfig",U.pathname+U.search,W?.initData],enabled:!!W?.initData,queryFn:async()=>{let B=new URLSearchParams(U.search);if(B.set("__pieroot","telegram"),W?.initData)B.set("initData",W.initData);let Q="/api/content"+U.pathname+"?"+B.toString();if(G)console.log("[PieRoot] Fetching UI configuration from:",Q);let F=await K.get(Q,{headers:{"Access-Control-Allow-Origin":"*","Access-Control-Allow-Methods":"GET,PUT,POST,DELETE,PATCH,OPTIONS","Content-type":"application/json"},withCredentials:!0});if(G)console.log("[PieRoot] Received UI configuration:",F.data);return F.data},staleTime:1/0,gcTime:1/0,refetchOnWindowFocus:!1,refetchOnMount:!1,refetchOnReconnect:!1,retry:!0,retryDelay:(B)=>Math.min(1000*2**B,30000),...X}),V=U$(U.pathname,I,$);if(!Y)throw Error("Set PIE_API_SERVER and PIE_CENTRIFUGE_SERVER");if(O&&G)return console.error("[PieRoot] Error fetching UI configuration:",O),console.error("[PieRoot] Error details:",{message:O.message,status:O.response?.status,data:O.response?.data}),J?.(O),V;if(M||!L){if(G)console.log("[PieRoot] Loading state:",{isLoading:M,hasUiConfiguration:!!L});return V}if(G)console.log("[PieRoot] UI configuration loaded successfully:",L),console.log("[PieRoot] Rendering UI with configuration");return D.jsx(c.Provider,{value:z,children:D.jsx(j.Provider,{value:T,children:D.jsx(P.Provider,{value:d,children:D.jsx(N.Provider,{value:$??D.jsx(D.Fragment,{}),children:D.jsx(gU,{children:D.jsx(hU,{children:Z?D.jsx(_U,{uiConfig:L}):D.jsx("form",{id:"piedata_global_form",action:Y+"api/process"+U.pathname,method:"post",encType:"multipart/form-data",children:D.jsx(_U,{uiConfig:L})})})})})})})})},g$=(U)=>{let $=k.useMemo(()=>new C.QueryClient,[]),I=U.queryClient??$;return D.jsx(iU.Provider,{value:U.onNavigate,children:D.jsx(HU.Provider,{value:U.config,children:D.jsx(w.Provider,{value:U.onError,children:D.jsx(C.QueryClientProvider,{client:I,children:D.jsx(m$,{...U})})})})})},J$=g$;var h=require("react");var q=require("react");function Z$(U){return U.wasRecovering===!0&&U.recovered===!1}function X$(U){return U.recoverable===!1}function Y$(U,$,I){let J=U.getSubscription($);if(J)return{subscription:J,createdHere:!1};return{subscription:U.newSubscription($,I),createdHere:!0}}var y=require("react/jsx-runtime"),h$=({card:U,data:$,children:I,useSocketioSupport:J=!1,useCentrifugeSupport:X=!1,useMittSupport:Z=!1,centrifugeChannel:Y=void 0,methods:H=void 0,stored:G=void 0,onResync:K=void 0})=>{let z=kU(),T=q.useRef(H);T.current=H;let d=q.useRef(K);if(d.current=K,z)console.log("[PieCard] Rendering card:",U),console.log("[PieCard] Card data:",$),console.log("[PieCard] Component name:",$?.name),console.log("[PieCard] Real-time support:",{socketio:J,centrifuge:X,mitt:Z,centrifugeChannel:Y}),console.log("[PieCard] Methods:",H?Object.keys(H):"none"),console.log("[PieCard] Has children:",!!I);let W=q.useContext(j),L=q.useContext(P),M=q.useContext(c);if(q.useEffect(()=>{if(!W||!J||!T.current||!$.name){if(z&&J)console.log("[PieCard] Socket.IO setup skipped:",{hasSocket:!!W,useSocketioSupport:J,hasMethods:!!T.current,hasDataName:!!$?.name});return}let V=Object.keys(T.current??{}).map((B)=>{let Q=`pie${B}_${$.name}`;if(z)console.log(`[PieCard] Socket.IO registering event: ${Q}`);let F=(A)=>{T.current?.[B]?.(A)};return W.on(Q,F),[Q,F]});return()=>{V.forEach(([B,Q])=>{if(z)console.log(`[PieCard] Socket.IO unregistering event: ${B}`);W.off(B,Q)})}},[W,$.name,J]),q.useEffect(()=>{if(!L||!X||!Y||!$.name){if(z&&X)console.log("[PieCard] Centrifuge setup skipped:",{hasCentrifuge:!!L,useCentrifugeSupport:X,hasCentrifugeChannel:!!Y,hasMethods:!!T.current,hasDataName:!!$?.name});return}let V=Object.keys(T.current??{}).map((B)=>{let Q=`pie${B}_${$.name}_${Y}`;if(z)console.log(`[PieCard] Centrifuge subscribing to channel: ${Q}`);let{subscription:F,createdHere:A}=Y$(L,Q,{recoverable:!0,positioned:!0}),KU=(f)=>{if(z)console.log(`[PieCard] Centrifuge received data on ${Q}:`,f.data);T.current?.[B]?.(f.data)},LU=(f)=>{if(X$(f))console.warn(`[PieCard] Centrifuge channel ${Q} is not `+"recoverable — enable history on the server "+"namespace for exact replay; relying on resync fallback only.");if(Z$(f)){if(z)console.log(`[PieCard] Centrifuge recovery gap on ${Q}; requesting resync`);d.current?.({channel:Q,reason:"gap"})}};return F.on("publication",KU),F.on("subscribed",LU),F.subscribe(),{subscription:F,createdHere:A,onPublication:KU,onSubscribed:LU}});return()=>{V.forEach(({subscription:B,createdHere:Q,onPublication:F,onSubscribed:A})=>{if(z)console.log("[PieCard] Centrifuge unsubscribing from channel");if(B.off("publication",F),B.off("subscribed",A),Q)B.unsubscribe(),L.removeSubscription(B)})}},[L,Y,$.name,X]),q.useEffect(()=>{if(!M||!Z||!$.name){if(z&&Z)console.log("[PieCard] Mitt setup skipped:",{hasMitt:!!M,useMittSupport:Z,hasMethods:!!T.current,hasDataName:!!$?.name});return}let O=Object.keys(T.current??{}),V={};return O.forEach((B)=>{let Q=`pie${B}_${$.name}`,F=(A)=>{if(z)console.log(`[PieCard] Mitt registering event: ${Q}`);T.current?.[B]?.(A)};V[Q]=F,M.on(Q,F)}),()=>{Object.entries(V).forEach(([B,Q])=>{if(z)console.log(`[PieCard] Mitt unregistering event: ${B}`);M.off(B,Q)})}},[M,$.name,Z]),z)console.log("[PieCard] Rendering complete, returning children");if(G!==void 0)return y.jsxs(y.Fragment,{children:[y.jsx("input",{type:"hidden",name:$.name,value:JSON.stringify(G)}),I]});return I},zU=h$;var FU=require("react/jsx-runtime"),p$=({data:U})=>{let{name:$,key:I,value:J,useSocketioSupport:X,useCentrifugeSupport:Z,useMittSupport:Y,centrifugeChannel:H}=U,[G,K]=h.useState(J);return h.useEffect(()=>{K(J)},[J]),h.useEffect(()=>{if(typeof window>"u")return;let z=window.Telegram?.WebApp?.CloudStorage;if(!z)return;z.setItem(I,G)},[I,G]),FU.jsx(zU,{card:"CloudStorageCard",data:U,useSocketioSupport:X,useCentrifugeSupport:Z,useMittSupport:Y,centrifugeChannel:H,methods:{update:({value:z})=>{K(z)},remove:()=>{let z=window.Telegram?.WebApp?.CloudStorage;if(z)z.removeItem(I);K("")}},children:FU.jsx("input",{type:"hidden",id:$,name:$,value:G})})},z$=p$;var G$=IU({name:"CloudStorageCard",component:z$,metadata:{author:"PieData"}});var p=require("react");var TU=require("react/jsx-runtime"),d$=({data:U})=>{let{name:$,key:I,value:J,useSocketioSupport:X,useCentrifugeSupport:Z,useMittSupport:Y,centrifugeChannel:H}=U,[G,K]=p.useState(J);return p.useEffect(()=>{K(J)},[J]),p.useEffect(()=>{if(typeof window>"u")return;let z=window.Telegram?.WebApp?.SecureStorage;if(!z)return;z.setItem(I,G)},[I,G]),TU.jsx(zU,{card:"SecureStorageCard",data:U,useSocketioSupport:X,useCentrifugeSupport:Z,useMittSupport:Y,centrifugeChannel:H,methods:{update:({value:z})=>{K(z)},remove:()=>{let z=window.Telegram?.WebApp?.SecureStorage;if(z)z.removeItem(I);K("")}},children:TU.jsx("input",{type:"hidden",id:$,name:$,value:G})})},B$=d$;var H$=IU({name:"SecureStorageCard",component:B$,metadata:{author:"PieData"}});
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=centrifugeSubscription.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"centrifugeSubscription.test.d.ts","sourceRoot":"","sources":["../../src/tests/centrifugeSubscription.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=card-fill.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"card-fill.test.d.ts","sourceRoot":"","sources":["../../../src/tests/server/card-fill.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=card-generate.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"card-generate.test.d.ts","sourceRoot":"","sources":["../../../src/tests/server/card-generate.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=cards.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cards.test.d.ts","sourceRoot":"","sources":["../../../src/tests/server/cards.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=e2e.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"e2e.test.d.ts","sourceRoot":"","sources":["../../../src/tests/server/e2e.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=entry.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"entry.test.d.ts","sourceRoot":"","sources":["../../../src/tests/server/entry.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=form.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"form.test.d.ts","sourceRoot":"","sources":["../../../src/tests/server/form.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=page.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"page.test.d.ts","sourceRoot":"","sources":["../../../src/tests/server/page.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=realtime.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"realtime.test.d.ts","sourceRoot":"","sources":["../../../src/tests/server/realtime.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=web-ajax.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"web-ajax.test.d.ts","sourceRoot":"","sources":["../../../src/tests/server/web-ajax.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=web-content.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"web-content.test.d.ts","sourceRoot":"","sources":["../../../src/tests/server/web-content.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=web-process.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"web-process.test.d.ts","sourceRoot":"","sources":["../../../src/tests/server/web-process.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=web-token.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"web-token.test.d.ts","sourceRoot":"","sources":["../../../src/tests/server/web-token.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,18 @@
1
+ import type { Centrifuge, Subscription, SubscriptionOptions } from 'centrifuge';
2
+ /**
3
+ * Returns the existing Centrifuge subscription for `channel`, or creates one if
4
+ * none is registered yet. `centrifuge.newSubscription` throws if a subscription
5
+ * for the channel already exists, so callers that may subscribe to the same
6
+ * channel more than once (e.g. a card briefly mounted twice during a tree
7
+ * rebuild) must dedupe via `getSubscription` first — this helper does that.
8
+ *
9
+ * `createdHere` is `true` when this call allocated the subscription, so the
10
+ * caller knows it owns teardown (`unsubscribe` + `removeSubscription`); when a
11
+ * subscription is reused, the caller should only remove its own listeners and
12
+ * leave the subscription for its original owner.
13
+ */
14
+ export declare function getOrCreateSubscription(centrifuge: Pick<Centrifuge, 'getSubscription' | 'newSubscription'>, channel: string, options?: Partial<SubscriptionOptions>): {
15
+ subscription: Subscription;
16
+ createdHere: boolean;
17
+ };
18
+ //# sourceMappingURL=centrifugeSubscription.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"centrifugeSubscription.d.ts","sourceRoot":"","sources":["../../src/util/centrifugeSubscription.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAA;AAE/E;;;;;;;;;;;GAWG;AACH,wBAAgB,uBAAuB,CACnC,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE,iBAAiB,GAAG,iBAAiB,CAAC,EACnE,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE,OAAO,CAAC,mBAAmB,CAAC,GACvC;IAAE,YAAY,EAAE,YAAY,CAAC;IAAC,WAAW,EAAE,OAAO,CAAA;CAAE,CAStD"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@swarm.ing/pieui",
3
- "version": "2.1.6",
3
+ "version": "2.2.0",
4
4
  "description": "A React component library featuring PieCard component",
5
5
  "repository": {
6
6
  "type": "git",
@@ -34,6 +34,11 @@
34
34
  "require": "./dist/agent/index.js",
35
35
  "types": "./dist/agent/index.d.ts"
36
36
  },
37
+ "./server": {
38
+ "import": "./dist/server/index.esm.js",
39
+ "require": "./dist/server/index.js",
40
+ "types": "./dist/server/index.d.ts"
41
+ },
37
42
  "./telegram": {
38
43
  "import": "./dist/telegram/index.esm.js",
39
44
  "require": "./dist/telegram/index.js",
@@ -67,7 +72,7 @@
67
72
  }
68
73
  },
69
74
  "scripts": {
70
- "build": "rm -rf ./dist && rm -rf pieui-*.tgz && bun run build:clean && NODE_ENV=production bun run build:esm && NODE_ENV=production bun run build:cjs && NODE_ENV=production bun run build:components:esm && NODE_ENV=production bun run build:components:cjs && NODE_ENV=production bun run build:agent:esm && NODE_ENV=production bun run build:agent:cjs && NODE_ENV=production bun run build:telegram:esm && NODE_ENV=production bun run build:telegram:cjs && NODE_ENV=production bun run build:native:esm && NODE_ENV=production bun run build:native:cjs && NODE_ENV=production bun run build:max:esm && NODE_ENV=production bun run build:max:cjs && NODE_ENV=production bun run build:storybook:esm && NODE_ENV=production bun run build:storybook:cjs && NODE_ENV=production bun run build:storybook:addon:esm && NODE_ENV=production bun run build:storybook:addon:cjs && NODE_ENV=production bun run build:storybook:addon:manager:esm && NODE_ENV=production bun run build:storybook:addon:manager:cjs && NODE_ENV=production bun run build:storybook:addon:preset && bun run build:banner && NODE_ENV=production bun run build:types && NODE_ENV=production bun run build:cli && bun src/cli.ts postbuild --src-dir src --out-dir dist && bun pm pack",
75
+ "build": "rm -rf ./dist && rm -rf pieui-*.tgz && bun run build:clean && NODE_ENV=production bun run build:esm && NODE_ENV=production bun run build:cjs && NODE_ENV=production bun run build:components:esm && NODE_ENV=production bun run build:components:cjs && NODE_ENV=production bun run build:agent:esm && NODE_ENV=production bun run build:agent:cjs && NODE_ENV=production bun run build:server:esm && NODE_ENV=production bun run build:server:cjs && NODE_ENV=production bun run build:telegram:esm && NODE_ENV=production bun run build:telegram:cjs && NODE_ENV=production bun run build:native:esm && NODE_ENV=production bun run build:native:cjs && NODE_ENV=production bun run build:max:esm && NODE_ENV=production bun run build:max:cjs && NODE_ENV=production bun run build:storybook:esm && NODE_ENV=production bun run build:storybook:cjs && NODE_ENV=production bun run build:storybook:addon:esm && NODE_ENV=production bun run build:storybook:addon:cjs && NODE_ENV=production bun run build:storybook:addon:manager:esm && NODE_ENV=production bun run build:storybook:addon:manager:cjs && NODE_ENV=production bun run build:storybook:addon:preset && bun run build:banner && NODE_ENV=production bun run build:types && NODE_ENV=production bun run build:cli && bun src/cli.ts postbuild --src-dir src --out-dir dist && bun pm pack",
71
76
  "build:banner": "node -e \"const fs=require('fs');['dist/index.esm.js','dist/index.js','dist/components/index.esm.js','dist/components/index.js','dist/agent/index.esm.js','dist/agent/index.js','dist/telegram/index.esm.js','dist/telegram/index.js','dist/native/index.esm.js','dist/native/index.js','dist/max/index.esm.js','dist/max/index.js','dist/storybook/index.esm.js','dist/storybook/index.js','dist/storybook/addon/index.esm.js','dist/storybook/addon/index.js'].forEach(f=>{if(fs.existsSync(f)){fs.writeFileSync(f,'\\\"use client\\\";\\n'+fs.readFileSync(f,'utf8'))}})\"",
72
77
  "build:clean": "rm -rf dist",
73
78
  "build:esm": "bun build src/index.ts --outfile dist/index.esm.js --format esm --target browser --jsx=automatic --jsx-import-source=react --minify --packages=external",
@@ -76,6 +81,8 @@
76
81
  "build:components:cjs": "bun build src/components/index.ts --outfile dist/components/index.js --format cjs --target node --jsx=automatic --jsx-import-source=react --minify --packages=external",
77
82
  "build:agent:esm": "bun build src/agent/index.ts --outfile dist/agent/index.esm.js --format esm --target browser --jsx=automatic --jsx-import-source=react --minify --packages=external",
78
83
  "build:agent:cjs": "bun build src/agent/index.ts --outfile dist/agent/index.js --format cjs --target node --jsx=automatic --jsx-import-source=react --minify --packages=external",
84
+ "build:server:esm": "bun build src/server/index.ts --outfile dist/server/index.esm.js --format esm --target node --packages=external",
85
+ "build:server:cjs": "bun build src/server/index.ts --outfile dist/server/index.js --format cjs --target node --packages=external",
79
86
  "build:telegram:esm": "bun build src/telegram/index.ts --outfile dist/telegram/index.esm.js --format esm --target browser --jsx=automatic --jsx-import-source=react --minify --packages=external",
80
87
  "build:telegram:cjs": "bun build src/telegram/index.ts --outfile dist/telegram/index.js --format cjs --target node --jsx=automatic --jsx-import-source=react --minify --packages=external",
81
88
  "build:native:esm": "bun build src/native/index.ts --outfile dist/native/index.esm.js --format esm --target browser --jsx=automatic --jsx-import-source=react --minify --packages=external",
@@ -133,7 +140,10 @@
133
140
  "react": ">=19",
134
141
  "react-dom": ">=19",
135
142
  "@openai/agents": "^0.4.5",
136
- "react-native": ">=0.74"
143
+ "react-native": ">=0.74",
144
+ "express": "^5.0.0",
145
+ "jsonwebtoken": "^9.0.0",
146
+ "cookie-parser": "^1.4.0"
137
147
  },
138
148
  "peerDependenciesMeta": {
139
149
  "@openai/agents": {
@@ -141,14 +151,29 @@
141
151
  },
142
152
  "react-native": {
143
153
  "optional": true
154
+ },
155
+ "express": {
156
+ "optional": true
157
+ },
158
+ "jsonwebtoken": {
159
+ "optional": true
160
+ },
161
+ "cookie-parser": {
162
+ "optional": true
144
163
  }
145
164
  },
146
165
  "devDependencies": {
166
+ "cookie-parser": "^1.4.7",
167
+ "express": "^5.2.1",
168
+ "jsonwebtoken": "^9.0.3",
147
169
  "@openai/agents": "^0.4.5",
148
170
  "@testing-library/jest-dom": "^6.9.1",
149
171
  "@testing-library/react": "^16.3.2",
150
172
  "@types/bun": "latest",
173
+ "@types/cookie-parser": "^1.4.10",
174
+ "@types/express": "^5.0.6",
151
175
  "@types/glob": "^9.0.0",
176
+ "@types/jsonwebtoken": "^9.0.10",
152
177
  "@types/node": "^25.5.0",
153
178
  "@types/react": "^19.2.14",
154
179
  "ajv": "^8.18.0",