@urun-sh/react 0.1.33 → 0.1.35
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.
- package/dist/index.d.mts +4 -2
- package/dist/index.d.ts +4 -2
- package/dist/index.js +1 -1
- package/dist/index.mjs +1 -1
- package/package.json +2 -2
package/dist/index.d.mts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
2
2
|
import * as react from 'react';
|
|
3
3
|
import { RefObject, ReactNode, Component, ErrorInfo, ComponentType } from 'react';
|
|
4
|
-
import { SessionInterface, SessionDocument, SessionStream } from '@urun-sh/core';
|
|
5
|
-
export { App as AppInterface, AppOptions, SessionDocument, Session as SessionInterface, SessionStream } from '@urun-sh/core';
|
|
4
|
+
import { SessionInterface, SessionDocument, SessionStream, SessionPhase } from '@urun-sh/core';
|
|
5
|
+
export { App as AppInterface, AppOptions, SessionDocument, Session as SessionInterface, SessionPhase, SessionPhaseName, SessionStream } from '@urun-sh/core';
|
|
6
6
|
import { ZodSchema, z } from 'zod';
|
|
7
7
|
|
|
8
8
|
interface UrunProviderProps {
|
|
@@ -75,6 +75,8 @@ type ReactSessionStream = SessionStream;
|
|
|
75
75
|
interface ReactSession extends Omit<SessionInterface, 'doc' | 'stream'> {
|
|
76
76
|
doc<T = Record<string, unknown>>(name: string): ReactSessionDocument<T>;
|
|
77
77
|
stream(name: string): ReactSessionStream;
|
|
78
|
+
|
|
79
|
+
readonly phase: SessionPhase;
|
|
78
80
|
}
|
|
79
81
|
type ReactApp = Record<string, (args?: Record<string, unknown>) => ReactSession>;
|
|
80
82
|
|
package/dist/index.d.ts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
2
2
|
import * as react from 'react';
|
|
3
3
|
import { RefObject, ReactNode, Component, ErrorInfo, ComponentType } from 'react';
|
|
4
|
-
import { SessionInterface, SessionDocument, SessionStream } from '@urun-sh/core';
|
|
5
|
-
export { App as AppInterface, AppOptions, SessionDocument, Session as SessionInterface, SessionStream } from '@urun-sh/core';
|
|
4
|
+
import { SessionInterface, SessionDocument, SessionStream, SessionPhase } from '@urun-sh/core';
|
|
5
|
+
export { App as AppInterface, AppOptions, SessionDocument, Session as SessionInterface, SessionPhase, SessionPhaseName, SessionStream } from '@urun-sh/core';
|
|
6
6
|
import { ZodSchema, z } from 'zod';
|
|
7
7
|
|
|
8
8
|
interface UrunProviderProps {
|
|
@@ -75,6 +75,8 @@ type ReactSessionStream = SessionStream;
|
|
|
75
75
|
interface ReactSession extends Omit<SessionInterface, 'doc' | 'stream'> {
|
|
76
76
|
doc<T = Record<string, unknown>>(name: string): ReactSessionDocument<T>;
|
|
77
77
|
stream(name: string): ReactSessionStream;
|
|
78
|
+
|
|
79
|
+
readonly phase: SessionPhase;
|
|
78
80
|
}
|
|
79
81
|
type ReactApp = Record<string, (args?: Record<string, unknown>) => ReactSession>;
|
|
80
82
|
|
package/dist/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var L=Object.defineProperty;var Ce=Object.getOwnPropertyDescriptor;var Ue=Object.getOwnPropertyNames;var Re=Object.prototype.hasOwnProperty;var ke=(r,e)=>{for(var t in e)L(r,t,{get:e[t],enumerable:!0})},Ee=(r,e,t,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let o of Ue(e))!Re.call(r,o)&&o!==t&&L(r,o,{get:()=>e[o],enumerable:!(n=Ce(e,o))||n.enumerable});return r};var Ae=r=>Ee(L({},"__esModule",{value:!0}),r);var Ne={};ke(Ne,{ComponentRenderer:()=>ae,ImageFrame:()=>ge,ImageFrameSchema:()=>le,MetricsPanel:()=>ve,MetricsPanelSchema:()=>he,ProgressCard:()=>ue,ProgressCardSchema:()=>ce,StatusBadge:()=>de,StatusBadgeSchema:()=>pe,TextStream:()=>fe,TextStreamSchema:()=>me,UrunAuthProvider:()=>O,UrunErrorBoundary:()=>l,UrunJwtProvider:()=>Y,UrunProvider:()=>re,authMode:()=>T,registerComponent:()=>se,urunPublicEnv:()=>i,useApp:()=>ne,useImageFrame:()=>$,useMetricsPanel:()=>H,useProgressCard:()=>F,useStatusBadge:()=>j,useTextStream:()=>z,useUrunAuth:()=>b,usesWorkOSAuth:()=>G});module.exports=Ae(Ne);var h=require("react");var Z=require("react"),y=require("react/jsx-runtime"),l=class extends Z.Component{constructor(e){super(e),this.state={error:null}}static getDerivedStateFromError(e){return{error:e}}componentDidCatch(e,t){console.error("[urun] Error caught by UrunErrorBoundary:",e,t)}render(){if(this.state.error){let{fallback:e}=this.props;return typeof e=="function"?e(this.state.error):e||(0,y.jsxs)("div",{role:"status","aria-live":"polite",style:{padding:"16px",border:"1px solid rgba(17, 24, 39, 0.12)",borderRadius:"8px",background:"#ffffff",color:"#111827",fontFamily:'system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif',maxWidth:"360px"},children:[(0,y.jsx)("p",{style:{margin:0,fontWeight:600},children:"Connection interrupted"}),(0,y.jsx)("p",{style:{margin:"6px 0 0",color:"#4b5563"},children:"Reconnecting automatically."})]})}return this.props.children}};var q=require("react"),A=(0,q.createContext)(null);function p(r){return r&&r.trim()?r.trim():void 0}function i(r){switch(r){case"NEXT_PUBLIC_AUTH_MODE":return p(typeof process<"u"?process.env?.NEXT_PUBLIC_AUTH_MODE:void 0);case"NEXT_PUBLIC_AUTH_ENABLED":return p(typeof process<"u"?process.env?.NEXT_PUBLIC_AUTH_ENABLED:void 0);case"NEXT_PUBLIC_SESSION_AUTH_PROVIDER":return p(typeof process<"u"?process.env?.NEXT_PUBLIC_SESSION_AUTH_PROVIDER:void 0);case"NEXT_PUBLIC_SESSION_TOKEN":return p(typeof process<"u"?process.env?.NEXT_PUBLIC_SESSION_TOKEN:void 0);case"NEXT_PUBLIC_URUN_JWT":return p(typeof process<"u"?process.env?.NEXT_PUBLIC_URUN_JWT:void 0);case"VERCEL_ENV":return p(typeof process<"u"?process.env?.VERCEL_ENV:void 0);default:return p(typeof process<"u"?process.env?.[r]:void 0)}}function T(){let r=i("NEXT_PUBLIC_AUTH_MODE")?.toLowerCase();return r==="jwt"||r==="customer-jwt"||r==="test-jwt"?"jwt":r==="workos"||i("VERCEL_ENV")==="production"?"workos":i("NEXT_PUBLIC_AUTH_ENABLED")==="false"?"jwt":"workos"}function G(){return T()==="workos"}var g=require("react"),ee=require("react/jsx-runtime"),Q=(0,g.createContext)(null);function O({getAccessToken:r,children:e}){let t=(0,g.useMemo)(()=>({getAccessToken:r}),[r]);return(0,ee.jsx)(Q.Provider,{value:t,children:e})}var Y=O;function b(){return(0,g.useContext)(Q)}var w=require("react/jsx-runtime");function re({baseUrl:r,orgId:e,appId:t,jwt:n,authProvider:o,fallback:s,children:f}){let[E,S]=(0,h.useState)(),u=b(),Pe=i("NEXT_PUBLIC_SESSION_TOKEN")??i("NEXT_PUBLIC_URUN_JWT"),J=T(),x=J==="workos"&&!n,M=n??(J==="jwt"?Pe:void 0)??E,W=o??i("NEXT_PUBLIC_SESSION_AUTH_PROVIDER"),Se=x&&!M,xe=(0,h.useMemo)(()=>({appId:t,baseUrl:r,orgId:e,jwt:M,getAccessToken:x?u?.getAccessToken:void 0,authProvider:W}),[t,u,r,W,M,e,x]);return(0,h.useEffect)(()=>{if(!x||!u)return;let B=!1,ye=u;async function K(){try{let _e=await ye.getAccessToken();B||S(_e??void 0)}catch{B||S(void 0)}}K();let Te=window.setInterval(()=>{K()},6e4);return()=>{B=!0,window.clearInterval(Te)}},[u,x]),(0,w.jsx)(l,{fallback:s,children:Se?(0,w.jsx)("div",{role:"status","aria-live":"polite",children:"Signing in..."}):(0,w.jsx)(A.Provider,{value:xe,children:f})})}var a=require("react"),te=require("@urun-sh/core");function be(r,e){return`${r}:${JSON.stringify(e??{})}`}var D=class{constructor(e,t){this._doc=e;this._notify=t;this._unsubscribeChange=this._doc.on("change",()=>this._notify())}_doc;_notify;_unsubscribeChange;get(e,t){return this._doc.get(e,t)}set(e){this._doc.set(e),this._notify()}on(e,t){return this._doc.on(e,n=>t(n))}dispose(){this._unsubscribeChange()}},V=class{constructor(e,t){this._stream=e;this._notify=t;this._unsubscribeTrack=this._stream.on("track",()=>this._notify())}_stream;_notify;_unsubscribeTrack;get track(){return this._stream.track}attach(e){return this._stream.attach(e)}detach(){return this._stream.detach()}seek(e){return this._stream.seek(e)}on(e,t){return this._stream.on(e,t)}dispose(){this._unsubscribeTrack()}},X=class{constructor(e,t){this._session=e;this._notify=t}_session;_notify;_docs=new Map;_streams=new Map;get id(){return this._session.id}doc(e){let t=this._docs.get(e);return t||(t=new D(this._session.doc(e),this._notify),this._docs.set(e,t)),t}stream(e){let t=this._streams.get(e);return t||(t=new V(this._session.stream(e),this._notify),this._streams.set(e,t)),t}disconnect(){for(let e of this._docs.values())e.dispose();for(let e of this._streams.values())e.dispose();this._docs.clear(),this._streams.clear(),this._session.disconnect(),this._notify()}};function ne(){let r=(0,a.useContext)(A);if(!r)throw new Error("useApp must be used within <UrunProvider>");if(!r.appId)throw new Error('useApp requires <UrunProvider appId="...">');let[,e]=(0,a.useReducer)(o=>o+1,0),t=(0,a.useRef)(new Map),n=(0,a.useMemo)(()=>(0,te.App)(r.appId,{baseUrl:r.baseUrl,orgId:r.orgId,jwt:r.jwt,getAccessToken:r.getAccessToken,authProvider:r.authProvider}),[r.appId,r.baseUrl,r.orgId,r.jwt,r.getAccessToken,r.authProvider]);return(0,a.useMemo)(()=>new Proxy({},{get(o,s){if(typeof s=="string")return f=>{let E=be(s,f),S=t.current.get(E);if(S)return S;let u=new X(n[s](f),e);return t.current.set(E,u),u}}}),[n])}var oe=new Map;function se(r,e,t){if(!t||typeof t.safeParse!="function")throw new Error(`registerComponent("${r}"): schema must be a valid Zod schema`);oe.set(r,{component:e,schema:t})}function ie(r,e){let t=oe.get(r);if(!t)return{error:`Unknown component: "${r}"`};let n=t.schema.safeParse(e);return n.success?{Component:t.component,validatedProps:n.data}:{error:`Validation failed for "${r}": ${n.error.message}`}}var d=require("react/jsx-runtime");function ae({name:r,props:e,fallback:t}){let n=ie(r,e);if(n.error)return console.warn(`[urun] ComponentRenderer: ${n.error}`),t?(0,d.jsx)(d.Fragment,{children:t}):(0,d.jsx)("div",{className:"urun-component-error",role:"alert",children:(0,d.jsx)("span",{className:"urun-component-error-text",children:n.error})});let o=n.Component;return(0,d.jsx)(o,{...n.validatedProps})}var v=require("zod"),m=require("react/jsx-runtime"),ce=v.z.object({step:v.z.number().min(0),total:v.z.number().min(1),label:v.z.string().optional(),variant:v.z.enum(["default","success","error"]).default("default")});function F(r){let{step:e,total:t,label:n,variant:o="default"}=r,s=Math.min(e/t*100,100),f=e>=t;return{step:e,total:t,label:n,variant:o,percentage:s,isComplete:f}}function ue(r){let{step:e,total:t,label:n,variant:o,percentage:s}=F(r);return(0,m.jsxs)("div",{className:"urun-progress-card","data-variant":o,children:[n&&(0,m.jsx)("div",{className:"urun-progress-label",children:n}),(0,m.jsx)("div",{className:"urun-progress-bar",children:(0,m.jsx)("div",{className:"urun-progress-fill",style:{width:`${s}%`}})}),(0,m.jsxs)("div",{className:"urun-progress-text",children:[e,"/",t]})]})}var N=require("zod"),_=require("react/jsx-runtime"),pe=N.z.object({state:N.z.enum(["thinking","generating","idle","error"]),message:N.z.string().optional()}),we={thinking:"Thinking...",generating:"Generating...",idle:"Idle",error:"Error"};function j(r){let{state:e,message:t}=r,n=e==="thinking"||e==="generating",o=t??we[e]??e;return{state:e,message:o,isActive:n}}function de(r){let{state:e,message:t,isActive:n}=j(r);return(0,_.jsxs)("span",{className:"urun-status-badge","data-state":e,children:[(0,_.jsx)("span",{className:`urun-status-indicator${n?" urun-status-pulse":""}`}),(0,_.jsx)("span",{className:"urun-status-message",children:t})]})}var C=require("react"),I=require("zod"),U=require("react/jsx-runtime"),me=I.z.object({text:I.z.string(),streaming:I.z.boolean().default(!1)});function z(r){let{text:e,streaming:t=!1}=r,n=e.length===0;return{text:e,streaming:t,isEmpty:n}}function fe(r){let{text:e,streaming:t}=z(r),n=(0,C.useRef)(null),o=(0,C.useRef)(0);return(0,C.useEffect)(()=>{let s=n.current;s&&e.length!==o.current&&(s.textContent=e,o.current=e.length)},[e]),(0,U.jsxs)("div",{className:"urun-text-stream",children:[(0,U.jsx)("span",{ref:n,className:"urun-text-content"}),t&&(0,U.jsx)("span",{className:"urun-text-cursor"})]})}var R=require("zod"),k=require("react/jsx-runtime"),le=R.z.object({src:R.z.string().url(),alt:R.z.string().optional(),caption:R.z.string().optional()});function $(r){let{src:e,alt:t,caption:n}=r;return{src:e,alt:t??"",caption:n}}function ge(r){let{src:e,alt:t,caption:n}=$(r);return(0,k.jsxs)("figure",{className:"urun-image-frame",children:[(0,k.jsx)("img",{className:"urun-image",src:e,alt:t}),n&&(0,k.jsx)("figcaption",{className:"urun-image-caption",children:n})]})}var c=require("zod"),P=require("react/jsx-runtime"),he=c.z.object({metrics:c.z.array(c.z.object({label:c.z.string(),value:c.z.union([c.z.string(),c.z.number()]),unit:c.z.string().optional()}))});function H(r){return{metrics:r.metrics.map(t=>({...t,displayValue:t.unit?`${t.value} ${t.unit}`:String(t.value)}))}}function ve(r){let{metrics:e}=H(r);return(0,P.jsx)("div",{className:"urun-metrics-panel",children:e.map((t,n)=>(0,P.jsxs)("div",{className:"urun-metric-card",children:[(0,P.jsx)("div",{className:"urun-metric-label",children:t.label}),(0,P.jsx)("div",{className:"urun-metric-value",children:t.displayValue})]},n))})}0&&(module.exports={ComponentRenderer,ImageFrame,ImageFrameSchema,MetricsPanel,MetricsPanelSchema,ProgressCard,ProgressCardSchema,StatusBadge,StatusBadgeSchema,TextStream,TextStreamSchema,UrunAuthProvider,UrunErrorBoundary,UrunJwtProvider,UrunProvider,authMode,registerComponent,urunPublicEnv,useApp,useImageFrame,useMetricsPanel,useProgressCard,useStatusBadge,useTextStream,useUrunAuth,usesWorkOSAuth});
|
|
1
|
+
"use strict";var L=Object.defineProperty;var Ce=Object.getOwnPropertyDescriptor;var Ue=Object.getOwnPropertyNames;var Re=Object.prototype.hasOwnProperty;var be=(r,e)=>{for(var t in e)L(r,t,{get:e[t],enumerable:!0})},ke=(r,e,t,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let o of Ue(e))!Re.call(r,o)&&o!==t&&L(r,o,{get:()=>e[o],enumerable:!(n=Ce(e,o))||n.enumerable});return r};var Ee=r=>ke(L({},"__esModule",{value:!0}),r);var Ne={};be(Ne,{ComponentRenderer:()=>ae,ImageFrame:()=>ge,ImageFrameSchema:()=>le,MetricsPanel:()=>ve,MetricsPanelSchema:()=>he,ProgressCard:()=>ue,ProgressCardSchema:()=>ce,StatusBadge:()=>de,StatusBadgeSchema:()=>pe,TextStream:()=>fe,TextStreamSchema:()=>me,UrunAuthProvider:()=>O,UrunErrorBoundary:()=>l,UrunJwtProvider:()=>Y,UrunProvider:()=>re,authMode:()=>_,registerComponent:()=>se,urunPublicEnv:()=>i,useApp:()=>ne,useImageFrame:()=>$,useMetricsPanel:()=>H,useProgressCard:()=>F,useStatusBadge:()=>j,useTextStream:()=>z,useUrunAuth:()=>A,usesWorkOSAuth:()=>G});module.exports=Ee(Ne);var h=require("react");var Z=require("react"),y=require("react/jsx-runtime"),l=class extends Z.Component{constructor(e){super(e),this.state={error:null}}static getDerivedStateFromError(e){return{error:e}}componentDidCatch(e,t){console.error("[urun] Error caught by UrunErrorBoundary:",e,t)}render(){if(this.state.error){let{fallback:e}=this.props;return typeof e=="function"?e(this.state.error):e||(0,y.jsxs)("div",{role:"status","aria-live":"polite",style:{padding:"16px",border:"1px solid rgba(17, 24, 39, 0.12)",borderRadius:"8px",background:"#ffffff",color:"#111827",fontFamily:'system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif',maxWidth:"360px"},children:[(0,y.jsx)("p",{style:{margin:0,fontWeight:600},children:"Connection interrupted"}),(0,y.jsx)("p",{style:{margin:"6px 0 0",color:"#4b5563"},children:"Reconnecting automatically."})]})}return this.props.children}};var q=require("react"),E=(0,q.createContext)(null);function p(r){return r&&r.trim()?r.trim():void 0}function i(r){switch(r){case"NEXT_PUBLIC_AUTH_MODE":return p(typeof process<"u"?process.env?.NEXT_PUBLIC_AUTH_MODE:void 0);case"NEXT_PUBLIC_AUTH_ENABLED":return p(typeof process<"u"?process.env?.NEXT_PUBLIC_AUTH_ENABLED:void 0);case"NEXT_PUBLIC_SESSION_AUTH_PROVIDER":return p(typeof process<"u"?process.env?.NEXT_PUBLIC_SESSION_AUTH_PROVIDER:void 0);case"NEXT_PUBLIC_SESSION_TOKEN":return p(typeof process<"u"?process.env?.NEXT_PUBLIC_SESSION_TOKEN:void 0);case"NEXT_PUBLIC_URUN_JWT":return p(typeof process<"u"?process.env?.NEXT_PUBLIC_URUN_JWT:void 0);case"VERCEL_ENV":return p(typeof process<"u"?process.env?.VERCEL_ENV:void 0);default:return p(typeof process<"u"?process.env?.[r]:void 0)}}function _(){let r=i("NEXT_PUBLIC_AUTH_MODE")?.toLowerCase();return r==="jwt"||r==="customer-jwt"||r==="test-jwt"?"jwt":r==="workos"||i("VERCEL_ENV")==="production"?"workos":i("NEXT_PUBLIC_AUTH_ENABLED")==="false"?"jwt":"workos"}function G(){return _()==="workos"}var g=require("react"),ee=require("react/jsx-runtime"),Q=(0,g.createContext)(null);function O({getAccessToken:r,children:e}){let t=(0,g.useMemo)(()=>({getAccessToken:r}),[r]);return(0,ee.jsx)(Q.Provider,{value:t,children:e})}var Y=O;function A(){return(0,g.useContext)(Q)}var w=require("react/jsx-runtime");function re({baseUrl:r,orgId:e,appId:t,jwt:n,authProvider:o,fallback:s,children:f}){let[k,S]=(0,h.useState)(),u=A(),Pe=i("NEXT_PUBLIC_SESSION_TOKEN")??i("NEXT_PUBLIC_URUN_JWT"),J=_(),x=J==="workos"&&!n,M=n??(J==="jwt"?Pe:void 0)??k,W=o??i("NEXT_PUBLIC_SESSION_AUTH_PROVIDER"),Se=x&&!M,xe=(0,h.useMemo)(()=>({appId:t,baseUrl:r,orgId:e,jwt:M,getAccessToken:x?u?.getAccessToken:void 0,authProvider:W}),[t,u,r,W,M,e,x]);return(0,h.useEffect)(()=>{if(!x||!u)return;let B=!1,ye=u;async function K(){try{let Te=await ye.getAccessToken();B||S(Te??void 0)}catch{B||S(void 0)}}K();let _e=window.setInterval(()=>{K()},6e4);return()=>{B=!0,window.clearInterval(_e)}},[u,x]),(0,w.jsx)(l,{fallback:s,children:Se?(0,w.jsx)("div",{role:"status","aria-live":"polite",children:"Signing in..."}):(0,w.jsx)(E.Provider,{value:xe,children:f})})}var a=require("react"),te=require("@urun-sh/core");function Ae(r,e){return`${r}:${JSON.stringify(e??{})}`}var D=class{constructor(e,t){this._doc=e;this._notify=t;this._unsubscribeChange=this._doc.on("change",()=>this._notify())}_doc;_notify;_unsubscribeChange;get(e,t){return this._doc.get(e,t)}set(e){this._doc.set(e),this._notify()}on(e,t){return this._doc.on(e,n=>t(n))}dispose(){this._unsubscribeChange()}},V=class{constructor(e,t){this._stream=e;this._notify=t;this._unsubscribeTrack=this._stream.on("track",()=>this._notify())}_stream;_notify;_unsubscribeTrack;get track(){return this._stream.track}attach(e){return this._stream.attach(e)}detach(){return this._stream.detach()}seek(e){return this._stream.seek(e)}on(e,t){return this._stream.on(e,t)}dispose(){this._unsubscribeTrack()}},X=class{constructor(e,t){this._session=e;this._notify=t;this._unsubscribePhase=this._session.onPhase(()=>this._notify())}_session;_notify;_docs=new Map;_streams=new Map;_unsubscribePhase;get id(){return this._session.id}get phase(){return this._session.phase}onPhase(e){return this._session.onPhase(e)}doc(e){let t=this._docs.get(e);return t||(t=new D(this._session.doc(e),this._notify),this._docs.set(e,t)),t}stream(e){let t=this._streams.get(e);return t||(t=new V(this._session.stream(e),this._notify),this._streams.set(e,t)),t}disconnect(){for(let e of this._docs.values())e.dispose();for(let e of this._streams.values())e.dispose();this._docs.clear(),this._streams.clear(),this._unsubscribePhase(),this._session.disconnect(),this._notify()}};function ne(){let r=(0,a.useContext)(E);if(!r)throw new Error("useApp must be used within <UrunProvider>");if(!r.appId)throw new Error('useApp requires <UrunProvider appId="...">');let[,e]=(0,a.useReducer)(o=>o+1,0),t=(0,a.useRef)(new Map),n=(0,a.useMemo)(()=>(0,te.App)(r.appId,{baseUrl:r.baseUrl,orgId:r.orgId,jwt:r.jwt,getAccessToken:r.getAccessToken,authProvider:r.authProvider}),[r.appId,r.baseUrl,r.orgId,r.jwt,r.getAccessToken,r.authProvider]);return(0,a.useMemo)(()=>new Proxy({},{get(o,s){if(typeof s=="string")return f=>{let k=Ae(s,f),S=t.current.get(k);if(S)return S;let u=new X(n[s](f),e);return t.current.set(k,u),u}}}),[n])}var oe=new Map;function se(r,e,t){if(!t||typeof t.safeParse!="function")throw new Error(`registerComponent("${r}"): schema must be a valid Zod schema`);oe.set(r,{component:e,schema:t})}function ie(r,e){let t=oe.get(r);if(!t)return{error:`Unknown component: "${r}"`};let n=t.schema.safeParse(e);return n.success?{Component:t.component,validatedProps:n.data}:{error:`Validation failed for "${r}": ${n.error.message}`}}var d=require("react/jsx-runtime");function ae({name:r,props:e,fallback:t}){let n=ie(r,e);if(n.error)return console.warn(`[urun] ComponentRenderer: ${n.error}`),t?(0,d.jsx)(d.Fragment,{children:t}):(0,d.jsx)("div",{className:"urun-component-error",role:"alert",children:(0,d.jsx)("span",{className:"urun-component-error-text",children:n.error})});let o=n.Component;return(0,d.jsx)(o,{...n.validatedProps})}var v=require("zod"),m=require("react/jsx-runtime"),ce=v.z.object({step:v.z.number().min(0),total:v.z.number().min(1),label:v.z.string().optional(),variant:v.z.enum(["default","success","error"]).default("default")});function F(r){let{step:e,total:t,label:n,variant:o="default"}=r,s=Math.min(e/t*100,100),f=e>=t;return{step:e,total:t,label:n,variant:o,percentage:s,isComplete:f}}function ue(r){let{step:e,total:t,label:n,variant:o,percentage:s}=F(r);return(0,m.jsxs)("div",{className:"urun-progress-card","data-variant":o,children:[n&&(0,m.jsx)("div",{className:"urun-progress-label",children:n}),(0,m.jsx)("div",{className:"urun-progress-bar",children:(0,m.jsx)("div",{className:"urun-progress-fill",style:{width:`${s}%`}})}),(0,m.jsxs)("div",{className:"urun-progress-text",children:[e,"/",t]})]})}var N=require("zod"),T=require("react/jsx-runtime"),pe=N.z.object({state:N.z.enum(["thinking","generating","idle","error"]),message:N.z.string().optional()}),we={thinking:"Thinking...",generating:"Generating...",idle:"Idle",error:"Error"};function j(r){let{state:e,message:t}=r,n=e==="thinking"||e==="generating",o=t??we[e]??e;return{state:e,message:o,isActive:n}}function de(r){let{state:e,message:t,isActive:n}=j(r);return(0,T.jsxs)("span",{className:"urun-status-badge","data-state":e,children:[(0,T.jsx)("span",{className:`urun-status-indicator${n?" urun-status-pulse":""}`}),(0,T.jsx)("span",{className:"urun-status-message",children:t})]})}var C=require("react"),I=require("zod"),U=require("react/jsx-runtime"),me=I.z.object({text:I.z.string(),streaming:I.z.boolean().default(!1)});function z(r){let{text:e,streaming:t=!1}=r,n=e.length===0;return{text:e,streaming:t,isEmpty:n}}function fe(r){let{text:e,streaming:t}=z(r),n=(0,C.useRef)(null),o=(0,C.useRef)(0);return(0,C.useEffect)(()=>{let s=n.current;s&&e.length!==o.current&&(s.textContent=e,o.current=e.length)},[e]),(0,U.jsxs)("div",{className:"urun-text-stream",children:[(0,U.jsx)("span",{ref:n,className:"urun-text-content"}),t&&(0,U.jsx)("span",{className:"urun-text-cursor"})]})}var R=require("zod"),b=require("react/jsx-runtime"),le=R.z.object({src:R.z.string().url(),alt:R.z.string().optional(),caption:R.z.string().optional()});function $(r){let{src:e,alt:t,caption:n}=r;return{src:e,alt:t??"",caption:n}}function ge(r){let{src:e,alt:t,caption:n}=$(r);return(0,b.jsxs)("figure",{className:"urun-image-frame",children:[(0,b.jsx)("img",{className:"urun-image",src:e,alt:t}),n&&(0,b.jsx)("figcaption",{className:"urun-image-caption",children:n})]})}var c=require("zod"),P=require("react/jsx-runtime"),he=c.z.object({metrics:c.z.array(c.z.object({label:c.z.string(),value:c.z.union([c.z.string(),c.z.number()]),unit:c.z.string().optional()}))});function H(r){return{metrics:r.metrics.map(t=>({...t,displayValue:t.unit?`${t.value} ${t.unit}`:String(t.value)}))}}function ve(r){let{metrics:e}=H(r);return(0,P.jsx)("div",{className:"urun-metrics-panel",children:e.map((t,n)=>(0,P.jsxs)("div",{className:"urun-metric-card",children:[(0,P.jsx)("div",{className:"urun-metric-label",children:t.label}),(0,P.jsx)("div",{className:"urun-metric-value",children:t.displayValue})]},n))})}0&&(module.exports={ComponentRenderer,ImageFrame,ImageFrameSchema,MetricsPanel,MetricsPanelSchema,ProgressCard,ProgressCardSchema,StatusBadge,StatusBadgeSchema,TextStream,TextStreamSchema,UrunAuthProvider,UrunErrorBoundary,UrunJwtProvider,UrunProvider,authMode,registerComponent,urunPublicEnv,useApp,useImageFrame,useMetricsPanel,useProgressCard,useStatusBadge,useTextStream,useUrunAuth,usesWorkOSAuth});
|
package/dist/index.mjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a as ee,b as re,c as x}from"./chunk-QAEWAWV4.mjs";import{useEffect as ie,useMemo as ae,useState as ce}from"react";import{Component as te}from"react";import{jsx as B,jsxs as ne}from"react/jsx-runtime";var f=class extends te{constructor(e){super(e),this.state={error:null}}static getDerivedStateFromError(e){return{error:e}}componentDidCatch(e,t){console.error("[urun] Error caught by UrunErrorBoundary:",e,t)}render(){if(this.state.error){let{fallback:e}=this.props;return typeof e=="function"?e(this.state.error):e||ne("div",{role:"status","aria-live":"polite",style:{padding:"16px",border:"1px solid rgba(17, 24, 39, 0.12)",borderRadius:"8px",background:"#ffffff",color:"#111827",fontFamily:'system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif',maxWidth:"360px"},children:[B("p",{style:{margin:0,fontWeight:600},children:"Connection interrupted"}),B("p",{style:{margin:"6px 0 0",color:"#4b5563"},children:"Reconnecting automatically."})]})}return this.props.children}};import{createContext as oe}from"react";var
|
|
1
|
+
import{a as ee,b as re,c as x}from"./chunk-QAEWAWV4.mjs";import{useEffect as ie,useMemo as ae,useState as ce}from"react";import{Component as te}from"react";import{jsx as B,jsxs as ne}from"react/jsx-runtime";var f=class extends te{constructor(e){super(e),this.state={error:null}}static getDerivedStateFromError(e){return{error:e}}componentDidCatch(e,t){console.error("[urun] Error caught by UrunErrorBoundary:",e,t)}render(){if(this.state.error){let{fallback:e}=this.props;return typeof e=="function"?e(this.state.error):e||ne("div",{role:"status","aria-live":"polite",style:{padding:"16px",border:"1px solid rgba(17, 24, 39, 0.12)",borderRadius:"8px",background:"#ffffff",color:"#111827",fontFamily:'system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif',maxWidth:"360px"},children:[B("p",{style:{margin:0,fontWeight:600},children:"Connection interrupted"}),B("p",{style:{margin:"6px 0 0",color:"#4b5563"},children:"Reconnecting automatically."})]})}return this.props.children}};import{createContext as oe}from"react";var h=oe(null);function u(r){return r&&r.trim()?r.trim():void 0}function a(r){switch(r){case"NEXT_PUBLIC_AUTH_MODE":return u(typeof process<"u"?process.env?.NEXT_PUBLIC_AUTH_MODE:void 0);case"NEXT_PUBLIC_AUTH_ENABLED":return u(typeof process<"u"?process.env?.NEXT_PUBLIC_AUTH_ENABLED:void 0);case"NEXT_PUBLIC_SESSION_AUTH_PROVIDER":return u(typeof process<"u"?process.env?.NEXT_PUBLIC_SESSION_AUTH_PROVIDER:void 0);case"NEXT_PUBLIC_SESSION_TOKEN":return u(typeof process<"u"?process.env?.NEXT_PUBLIC_SESSION_TOKEN:void 0);case"NEXT_PUBLIC_URUN_JWT":return u(typeof process<"u"?process.env?.NEXT_PUBLIC_URUN_JWT:void 0);case"VERCEL_ENV":return u(typeof process<"u"?process.env?.VERCEL_ENV:void 0);default:return u(typeof process<"u"?process.env?.[r]:void 0)}}function v(){let r=a("NEXT_PUBLIC_AUTH_MODE")?.toLowerCase();return r==="jwt"||r==="customer-jwt"||r==="test-jwt"?"jwt":r==="workos"||a("VERCEL_ENV")==="production"?"workos":a("NEXT_PUBLIC_AUTH_ENABLED")==="false"?"jwt":"workos"}function se(){return v()==="workos"}import{jsx as C}from"react/jsx-runtime";function ue({baseUrl:r,orgId:e,appId:t,jwt:n,authProvider:o,fallback:s,children:p}){let[l,d]=ce(),i=x(),K=a("NEXT_PUBLIC_SESSION_TOKEN")??a("NEXT_PUBLIC_URUN_JWT"),N=v(),m=N==="workos"&&!n,y=n??(N==="jwt"?K:void 0)??l,A=o??a("NEXT_PUBLIC_SESSION_AUTH_PROVIDER"),Z=m&&!y,q=ae(()=>({appId:t,baseUrl:r,orgId:e,jwt:y,getAccessToken:m?i?.getAccessToken:void 0,authProvider:A}),[t,i,r,A,y,e,m]);return ie(()=>{if(!m||!i)return;let _=!1,G=i;async function I(){try{let Y=await G.getAccessToken();_||d(Y??void 0)}catch{_||d(void 0)}}I();let Q=window.setInterval(()=>{I()},6e4);return()=>{_=!0,window.clearInterval(Q)}},[i,m]),C(f,{fallback:s,children:Z?C("div",{role:"status","aria-live":"polite",children:"Signing in..."}):C(h.Provider,{value:q,children:p})})}import{useContext as pe,useMemo as M,useReducer as de,useRef as me}from"react";import{App as fe}from"@urun-sh/core";function ge(r,e){return`${r}:${JSON.stringify(e??{})}`}var T=class{constructor(e,t){this._doc=e;this._notify=t;this._unsubscribeChange=this._doc.on("change",()=>this._notify())}_doc;_notify;_unsubscribeChange;get(e,t){return this._doc.get(e,t)}set(e){this._doc.set(e),this._notify()}on(e,t){return this._doc.on(e,n=>t(n))}dispose(){this._unsubscribeChange()}},b=class{constructor(e,t){this._stream=e;this._notify=t;this._unsubscribeTrack=this._stream.on("track",()=>this._notify())}_stream;_notify;_unsubscribeTrack;get track(){return this._stream.track}attach(e){return this._stream.attach(e)}detach(){return this._stream.detach()}seek(e){return this._stream.seek(e)}on(e,t){return this._stream.on(e,t)}dispose(){this._unsubscribeTrack()}},E=class{constructor(e,t){this._session=e;this._notify=t;this._unsubscribePhase=this._session.onPhase(()=>this._notify())}_session;_notify;_docs=new Map;_streams=new Map;_unsubscribePhase;get id(){return this._session.id}get phase(){return this._session.phase}onPhase(e){return this._session.onPhase(e)}doc(e){let t=this._docs.get(e);return t||(t=new T(this._session.doc(e),this._notify),this._docs.set(e,t)),t}stream(e){let t=this._streams.get(e);return t||(t=new b(this._session.stream(e),this._notify),this._streams.set(e,t)),t}disconnect(){for(let e of this._docs.values())e.dispose();for(let e of this._streams.values())e.dispose();this._docs.clear(),this._streams.clear(),this._unsubscribePhase(),this._session.disconnect(),this._notify()}};function le(){let r=pe(h);if(!r)throw new Error("useApp must be used within <UrunProvider>");if(!r.appId)throw new Error('useApp requires <UrunProvider appId="...">');let[,e]=de(o=>o+1,0),t=me(new Map),n=M(()=>fe(r.appId,{baseUrl:r.baseUrl,orgId:r.orgId,jwt:r.jwt,getAccessToken:r.getAccessToken,authProvider:r.authProvider}),[r.appId,r.baseUrl,r.orgId,r.jwt,r.getAccessToken,r.authProvider]);return M(()=>new Proxy({},{get(o,s){if(typeof s=="string")return p=>{let l=ge(s,p),d=t.current.get(l);if(d)return d;let i=new E(n[s](p),e);return t.current.set(l,i),i}}}),[n])}var L=new Map;function he(r,e,t){if(!t||typeof t.safeParse!="function")throw new Error(`registerComponent("${r}"): schema must be a valid Zod schema`);L.set(r,{component:e,schema:t})}function D(r,e){let t=L.get(r);if(!t)return{error:`Unknown component: "${r}"`};let n=t.schema.safeParse(e);return n.success?{Component:t.component,validatedProps:n.data}:{error:`Validation failed for "${r}": ${n.error.message}`}}import{Fragment as Se,jsx as S}from"react/jsx-runtime";function ve({name:r,props:e,fallback:t}){let n=D(r,e);if(n.error)return console.warn(`[urun] ComponentRenderer: ${n.error}`),t?S(Se,{children:t}):S("div",{className:"urun-component-error",role:"alert",children:S("span",{className:"urun-component-error-text",children:n.error})});let o=n.Component;return S(o,{...n.validatedProps})}import{z as g}from"zod";import{jsx as R,jsxs as O}from"react/jsx-runtime";var Pe=g.object({step:g.number().min(0),total:g.number().min(1),label:g.string().optional(),variant:g.enum(["default","success","error"]).default("default")});function V(r){let{step:e,total:t,label:n,variant:o="default"}=r,s=Math.min(e/t*100,100),p=e>=t;return{step:e,total:t,label:n,variant:o,percentage:s,isComplete:p}}function ye(r){let{step:e,total:t,label:n,variant:o,percentage:s}=V(r);return O("div",{className:"urun-progress-card","data-variant":o,children:[n&&R("div",{className:"urun-progress-label",children:n}),R("div",{className:"urun-progress-bar",children:R("div",{className:"urun-progress-fill",style:{width:`${s}%`}})}),O("div",{className:"urun-progress-text",children:[e,"/",t]})]})}import{z as U}from"zod";import{jsx as X,jsxs as Te}from"react/jsx-runtime";var _e=U.object({state:U.enum(["thinking","generating","idle","error"]),message:U.string().optional()}),xe={thinking:"Thinking...",generating:"Generating...",idle:"Idle",error:"Error"};function F(r){let{state:e,message:t}=r,n=e==="thinking"||e==="generating",o=t??xe[e]??e;return{state:e,message:o,isActive:n}}function Ce(r){let{state:e,message:t,isActive:n}=F(r);return Te("span",{className:"urun-status-badge","data-state":e,children:[X("span",{className:`urun-status-indicator${n?" urun-status-pulse":""}`}),X("span",{className:"urun-status-message",children:t})]})}import{useRef as j,useEffect as be}from"react";import{z as k}from"zod";import{jsx as z,jsxs as Ue}from"react/jsx-runtime";var Ee=k.object({text:k.string(),streaming:k.boolean().default(!1)});function $(r){let{text:e,streaming:t=!1}=r,n=e.length===0;return{text:e,streaming:t,isEmpty:n}}function Re(r){let{text:e,streaming:t}=$(r),n=j(null),o=j(0);return be(()=>{let s=n.current;s&&e.length!==o.current&&(s.textContent=e,o.current=e.length)},[e]),Ue("div",{className:"urun-text-stream",children:[z("span",{ref:n,className:"urun-text-content"}),t&&z("span",{className:"urun-text-cursor"})]})}import{z as P}from"zod";import{jsx as H,jsxs as Ne}from"react/jsx-runtime";var ke=P.object({src:P.string().url(),alt:P.string().optional(),caption:P.string().optional()});function J(r){let{src:e,alt:t,caption:n}=r;return{src:e,alt:t??"",caption:n}}function we(r){let{src:e,alt:t,caption:n}=J(r);return Ne("figure",{className:"urun-image-frame",children:[H("img",{className:"urun-image",src:e,alt:t}),n&&H("figcaption",{className:"urun-image-caption",children:n})]})}import{z as c}from"zod";import{jsx as w,jsxs as Be}from"react/jsx-runtime";var Ae=c.object({metrics:c.array(c.object({label:c.string(),value:c.union([c.string(),c.number()]),unit:c.string().optional()}))});function W(r){return{metrics:r.metrics.map(t=>({...t,displayValue:t.unit?`${t.value} ${t.unit}`:String(t.value)}))}}function Ie(r){let{metrics:e}=W(r);return w("div",{className:"urun-metrics-panel",children:e.map((t,n)=>Be("div",{className:"urun-metric-card",children:[w("div",{className:"urun-metric-label",children:t.label}),w("div",{className:"urun-metric-value",children:t.displayValue})]},n))})}export{ve as ComponentRenderer,we as ImageFrame,ke as ImageFrameSchema,Ie as MetricsPanel,Ae as MetricsPanelSchema,ye as ProgressCard,Pe as ProgressCardSchema,Ce as StatusBadge,_e as StatusBadgeSchema,Re as TextStream,Ee as TextStreamSchema,ee as UrunAuthProvider,f as UrunErrorBoundary,re as UrunJwtProvider,ue as UrunProvider,v as authMode,he as registerComponent,a as urunPublicEnv,le as useApp,J as useImageFrame,W as useMetricsPanel,V as useProgressCard,F as useStatusBadge,$ as useTextStream,x as useUrunAuth,se as usesWorkOSAuth};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@urun-sh/react",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.35",
|
|
4
4
|
"description": "React bindings for the urun TypeScript SDK",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -46,7 +46,7 @@
|
|
|
46
46
|
},
|
|
47
47
|
"peerDependencies": {
|
|
48
48
|
"react": "^18.2.0 || ^19.0.0",
|
|
49
|
-
"@urun-sh/core": "^0.1.
|
|
49
|
+
"@urun-sh/core": "^0.1.35",
|
|
50
50
|
"@workos-inc/authkit-react": "^0.15.0 || ^0.16.0",
|
|
51
51
|
"@workos-inc/authkit-nextjs": "^3.0.0",
|
|
52
52
|
"next": "^15.0.0 || ^16.0.0"
|