@urun-sh/react 0.1.10 → 0.1.11
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/CHANGELOG.md +4 -0
- package/dist/index.js +1 -1
- package/dist/index.mjs +1 -1
- package/package.json +2 -2
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,9 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 0.1.11
|
|
4
|
+
|
|
5
|
+
- Resolve browser auth mode from public environment, use `NEXT_PUBLIC_SESSION_TOKEN` only in JWT/test mode, and wait for WorkOS access tokens before rendering session-creating children.
|
|
6
|
+
|
|
3
7
|
## 0.1.10
|
|
4
8
|
|
|
5
9
|
- Bumped peer dependency to `@urun-sh/core@0.1.10`.
|
package/dist/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var
|
|
1
|
+
"use strict";var le=Object.create;var w=Object.defineProperty;var ge=Object.getOwnPropertyDescriptor;var fe=Object.getOwnPropertyNames;var he=Object.getPrototypeOf,ve=Object.prototype.hasOwnProperty;var Se=(t,e)=>{for(var r in e)w(t,r,{get:e[r],enumerable:!0})},$=(t,e,r,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let o of fe(e))!ve.call(t,o)&&o!==r&&w(t,o,{get:()=>e[o],enumerable:!(n=ge(e,o))||n.enumerable});return t};var ye=(t,e,r)=>(r=t!=null?le(he(t)):{},$(e||!t||!t.__esModule?w(r,"default",{value:t,enumerable:!0}):r,t)),ke=t=>$(w({},"__esModule",{value:!0}),t);var be={};Se(be,{ComponentRenderer:()=>ee,ImageFrame:()=>ce,ImageFrameSchema:()=>ae,MetricsPanel:()=>pe,MetricsPanelSchema:()=>ue,ProgressCard:()=>te,ProgressCardSchema:()=>re,StatusBadge:()=>oe,StatusBadgeSchema:()=>ne,TextStream:()=>ie,TextStreamSchema:()=>se,UrunErrorBoundary:()=>d,UrunProvider:()=>Z,registerComponent:()=>Q,useApp:()=>q,useImageFrame:()=>D,useMetricsPanel:()=>F,useProgressCard:()=>B,useStatusBadge:()=>O,useTextStream:()=>W});module.exports=ke(be);var _=require("react");var V=require("react"),g=require("react/jsx-runtime"),d=class extends V.Component{constructor(e){super(e),this.state={error:null}}static getDerivedStateFromError(e){return{error:e}}componentDidCatch(e,r){console.error("[urun] Error caught by UrunErrorBoundary:",e,r)}render(){if(this.state.error){let{fallback:e}=this.props;return typeof e=="function"?e(this.state.error):e||(0,g.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,g.jsx)("p",{style:{margin:0,fontWeight:600},children:"Connection interrupted"}),(0,g.jsx)("p",{style:{margin:"6px 0 0",color:"#4b5563"},children:"Reconnecting automatically."})]})}return this.props.children}};var J=require("react"),T=(0,J.createContext)(null);var f=require("react"),H=require("react/jsx-runtime");function Pe({module:t,onToken:e}){let r;try{r=t.useAuth()}catch{r={}}return(0,f.useEffect)(()=>{let n=!1;async function o(){if(!(r.loading||r.isLoading))try{let c=r.getAccessToken?await r.getAccessToken():r.accessToken;n||e(c??void 0)}catch{n||e(void 0)}}o();let s=window.setInterval(()=>{o()},6e4);return()=>{n=!0,window.clearInterval(s)}},[r,r.accessToken,r.getAccessToken,r.isAuthenticated,r.isLoading,r.loading,r.user,e]),null}function X({onToken:t}){let[e,r]=(0,f.useState)(null);return(0,f.useEffect)(()=>{let n=!1;return import("@workos-inc/authkit-react").then(o=>{!n&&typeof o.useAuth=="function"&&r({useAuth:o.useAuth})}).catch(()=>{n||r(null)}),()=>{n=!0}},[]),e?(0,H.jsx)(Pe,{module:e,onToken:t}):null}var v=require("react/jsx-runtime");function h(t){let r=(typeof process<"u"?process.env:void 0)?.[t];return r&&r.trim()?r.trim():void 0}function xe(){let t=h("NEXT_PUBLIC_AUTH_MODE")?.toLowerCase();return t==="jwt"||t==="customer-jwt"||t==="test-jwt"?"jwt":t==="workos"?"workos":h("NEXT_PUBLIC_AUTH_ENABLED")==="false"?"jwt":"workos"}function Z({baseUrl:t,orgId:e,appId:r,jwt:n,authProvider:o,fallback:s,children:c}){let[C,R]=(0,_.useState)(),b=h("NEXT_PUBLIC_SESSION_TOKEN")??h("NEXT_PUBLIC_URUN_JWT"),L=xe(),j=L==="workos"&&!n,I=n??(L==="jwt"?b:void 0)??C,z=o??h("NEXT_PUBLIC_SESSION_AUTH_PROVIDER"),de=j&&!I,me=(0,_.useMemo)(()=>({appId:r,baseUrl:t,orgId:e,jwt:I,authProvider:z}),[r,t,z,I,e]);return(0,v.jsxs)(d,{fallback:s,children:[j?(0,v.jsx)(X,{onToken:R}):null,de?null:(0,v.jsx)(T.Provider,{value:me,children:c})]})}var i=require("react"),K=require("@urun-sh/core");function Ce(t,e){return`${t}:${JSON.stringify(e??{})}`}var N=class{constructor(e,r){this._doc=e;this._notify=r;this._unsubscribeChange=this._doc.on("change",()=>this._notify())}_doc;_notify;_unsubscribeChange;get(e,r){return this._doc.get(e,r)}set(e){this._doc.set(e),this._notify()}on(e,r){return this._doc.on(e,n=>r(n))}dispose(){this._unsubscribeChange()}},U=class{constructor(e,r){this._stream=e;this._notify=r;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,r){return this._stream.on(e,r)}dispose(){this._unsubscribeTrack()}},M=class{constructor(e,r){this._session=e;this._notify=r}_session;_notify;_docs=new Map;_streams=new Map;get id(){return this._session.id}doc(e){let r=this._docs.get(e);return r||(r=new N(this._session.doc(e),this._notify),this._docs.set(e,r)),r}stream(e){let r=this._streams.get(e);return r||(r=new U(this._session.stream(e),this._notify),this._streams.set(e,r)),r}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 q(){let t=(0,i.useContext)(T);if(!t)throw new Error("useApp must be used within <UrunProvider>");if(!t.appId)throw new Error('useApp requires <UrunProvider appId="...">');let[,e]=(0,i.useReducer)(o=>o+1,0),r=(0,i.useRef)(new Map),n=(0,i.useMemo)(()=>(0,K.App)(t.appId,{baseUrl:t.baseUrl,orgId:t.orgId,jwt:t.jwt,authProvider:t.authProvider}),[t.appId,t.baseUrl,t.orgId,t.jwt,t.authProvider]);return(0,i.useMemo)(()=>new Proxy({},{get(o,s){if(typeof s=="string")return c=>{let C=Ce(s,c),R=r.current.get(C);if(R)return R;let b=new M(n[s](c),e);return r.current.set(C,b),b}}}),[n])}var G=new Map;function Q(t,e,r){if(!r||typeof r.safeParse!="function")throw new Error(`registerComponent("${t}"): schema must be a valid Zod schema`);G.set(t,{component:e,schema:r})}function Y(t,e){let r=G.get(t);if(!r)return{error:`Unknown component: "${t}"`};let n=r.schema.safeParse(e);return n.success?{Component:r.component,validatedProps:n.data}:{error:`Validation failed for "${t}": ${n.error.message}`}}var u=require("react/jsx-runtime");function ee({name:t,props:e,fallback:r}){let n=Y(t,e);if(n.error)return console.warn(`[urun] ComponentRenderer: ${n.error}`),r?(0,u.jsx)(u.Fragment,{children:r}):(0,u.jsx)("div",{className:"urun-component-error",role:"alert",children:(0,u.jsx)("span",{className:"urun-component-error-text",children:n.error})});let o=n.Component;return(0,u.jsx)(o,{...n.validatedProps})}var m=require("zod"),p=require("react/jsx-runtime"),re=m.z.object({step:m.z.number().min(0),total:m.z.number().min(1),label:m.z.string().optional(),variant:m.z.enum(["default","success","error"]).default("default")});function B(t){let{step:e,total:r,label:n,variant:o="default"}=t,s=Math.min(e/r*100,100),c=e>=r;return{step:e,total:r,label:n,variant:o,percentage:s,isComplete:c}}function te(t){let{step:e,total:r,label:n,variant:o,percentage:s}=B(t);return(0,p.jsxs)("div",{className:"urun-progress-card","data-variant":o,children:[n&&(0,p.jsx)("div",{className:"urun-progress-label",children:n}),(0,p.jsx)("div",{className:"urun-progress-bar",children:(0,p.jsx)("div",{className:"urun-progress-fill",style:{width:`${s}%`}})}),(0,p.jsxs)("div",{className:"urun-progress-text",children:[e,"/",r]})]})}var E=require("zod"),S=require("react/jsx-runtime"),ne=E.z.object({state:E.z.enum(["thinking","generating","idle","error"]),message:E.z.string().optional()}),Re={thinking:"Thinking...",generating:"Generating...",idle:"Idle",error:"Error"};function O(t){let{state:e,message:r}=t,n=e==="thinking"||e==="generating",o=r??Re[e]??e;return{state:e,message:o,isActive:n}}function oe(t){let{state:e,message:r,isActive:n}=O(t);return(0,S.jsxs)("span",{className:"urun-status-badge","data-state":e,children:[(0,S.jsx)("span",{className:`urun-status-indicator${n?" urun-status-pulse":""}`}),(0,S.jsx)("span",{className:"urun-status-message",children:r})]})}var y=require("react"),A=require("zod"),k=require("react/jsx-runtime"),se=A.z.object({text:A.z.string(),streaming:A.z.boolean().default(!1)});function W(t){let{text:e,streaming:r=!1}=t,n=e.length===0;return{text:e,streaming:r,isEmpty:n}}function ie(t){let{text:e,streaming:r}=W(t),n=(0,y.useRef)(null),o=(0,y.useRef)(0);return(0,y.useEffect)(()=>{let s=n.current;s&&e.length!==o.current&&(s.textContent=e,o.current=e.length)},[e]),(0,k.jsxs)("div",{className:"urun-text-stream",children:[(0,k.jsx)("span",{ref:n,className:"urun-text-content"}),r&&(0,k.jsx)("span",{className:"urun-text-cursor"})]})}var P=require("zod"),x=require("react/jsx-runtime"),ae=P.z.object({src:P.z.string().url(),alt:P.z.string().optional(),caption:P.z.string().optional()});function D(t){let{src:e,alt:r,caption:n}=t;return{src:e,alt:r??"",caption:n}}function ce(t){let{src:e,alt:r,caption:n}=D(t);return(0,x.jsxs)("figure",{className:"urun-image-frame",children:[(0,x.jsx)("img",{className:"urun-image",src:e,alt:r}),n&&(0,x.jsx)("figcaption",{className:"urun-image-caption",children:n})]})}var a=require("zod"),l=require("react/jsx-runtime"),ue=a.z.object({metrics:a.z.array(a.z.object({label:a.z.string(),value:a.z.union([a.z.string(),a.z.number()]),unit:a.z.string().optional()}))});function F(t){return{metrics:t.metrics.map(r=>({...r,displayValue:r.unit?`${r.value} ${r.unit}`:String(r.value)}))}}function pe(t){let{metrics:e}=F(t);return(0,l.jsx)("div",{className:"urun-metrics-panel",children:e.map((r,n)=>(0,l.jsxs)("div",{className:"urun-metric-card",children:[(0,l.jsx)("div",{className:"urun-metric-label",children:r.label}),(0,l.jsx)("div",{className:"urun-metric-value",children:r.displayValue})]},n))})}0&&(module.exports={ComponentRenderer,ImageFrame,ImageFrameSchema,MetricsPanel,MetricsPanelSchema,ProgressCard,ProgressCardSchema,StatusBadge,StatusBadgeSchema,TextStream,TextStreamSchema,UrunErrorBoundary,UrunProvider,registerComponent,useApp,useImageFrame,useMetricsPanel,useProgressCard,useStatusBadge,useTextStream});
|
package/dist/index.mjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{useMemo as
|
|
1
|
+
import{useMemo as Y,useState as ee}from"react";import{Component as H}from"react";import{jsx as _,jsxs as Z}from"react/jsx-runtime";var c=class extends H{constructor(e){super(e),this.state={error:null}}static getDerivedStateFromError(e){return{error:e}}componentDidCatch(e,r){console.error("[urun] Error caught by UrunErrorBoundary:",e,r)}render(){if(this.state.error){let{fallback:e}=this.props;return typeof e=="function"?e(this.state.error):e||Z("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:[_("p",{style:{margin:0,fontWeight:600},children:"Connection interrupted"}),_("p",{style:{margin:"6px 0 0",color:"#4b5563"},children:"Reconnecting automatically."})]})}return this.props.children}};import{createContext as K}from"react";var g=K(null);import{useEffect as E,useState as q}from"react";import{jsx as Q}from"react/jsx-runtime";function G({module:t,onToken:e}){let r;try{r=t.useAuth()}catch{r={}}return E(()=>{let n=!1;async function o(){if(!(r.loading||r.isLoading))try{let i=r.getAccessToken?await r.getAccessToken():r.accessToken;n||e(i??void 0)}catch{n||e(void 0)}}o();let s=window.setInterval(()=>{o()},6e4);return()=>{n=!0,window.clearInterval(s)}},[r,r.accessToken,r.getAccessToken,r.isAuthenticated,r.isLoading,r.loading,r.user,e]),null}function A({onToken:t}){let[e,r]=q(null);return E(()=>{let n=!1;return import("@workos-inc/authkit-react").then(o=>{!n&&typeof o.useAuth=="function"&&r({useAuth:o.useAuth})}).catch(()=>{n||r(null)}),()=>{n=!0}},[]),e?Q(G,{module:e,onToken:t}):null}import{jsx as I,jsxs as ne}from"react/jsx-runtime";function u(t){let r=(typeof process<"u"?process.env:void 0)?.[t];return r&&r.trim()?r.trim():void 0}function re(){let t=u("NEXT_PUBLIC_AUTH_MODE")?.toLowerCase();return t==="jwt"||t==="customer-jwt"||t==="test-jwt"?"jwt":t==="workos"?"workos":u("NEXT_PUBLIC_AUTH_ENABLED")==="false"?"jwt":"workos"}function te({baseUrl:t,orgId:e,appId:r,jwt:n,authProvider:o,fallback:s,children:i}){let[d,m]=ee(),l=u("NEXT_PUBLIC_SESSION_TOKEN")??u("NEXT_PUBLIC_URUN_JWT"),b=re(),w=b==="workos"&&!n,v=n??(b==="jwt"?l:void 0)??d,T=o??u("NEXT_PUBLIC_SESSION_AUTH_PROVIDER"),J=w&&!v,X=Y(()=>({appId:r,baseUrl:t,orgId:e,jwt:v,authProvider:T}),[r,t,T,v,e]);return ne(c,{fallback:s,children:[w?I(A,{onToken:m}):null,J?null:I(g.Provider,{value:X,children:i})]})}import{useContext as oe,useMemo as N,useReducer as se,useRef as ie}from"react";import{App as ae}from"@urun-sh/core";function ce(t,e){return`${t}:${JSON.stringify(e??{})}`}var S=class{constructor(e,r){this._doc=e;this._notify=r;this._unsubscribeChange=this._doc.on("change",()=>this._notify())}_doc;_notify;_unsubscribeChange;get(e,r){return this._doc.get(e,r)}set(e){this._doc.set(e),this._notify()}on(e,r){return this._doc.on(e,n=>r(n))}dispose(){this._unsubscribeChange()}},y=class{constructor(e,r){this._stream=e;this._notify=r;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,r){return this._stream.on(e,r)}dispose(){this._unsubscribeTrack()}},k=class{constructor(e,r){this._session=e;this._notify=r}_session;_notify;_docs=new Map;_streams=new Map;get id(){return this._session.id}doc(e){let r=this._docs.get(e);return r||(r=new S(this._session.doc(e),this._notify),this._docs.set(e,r)),r}stream(e){let r=this._streams.get(e);return r||(r=new y(this._session.stream(e),this._notify),this._streams.set(e,r)),r}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 ue(){let t=oe(g);if(!t)throw new Error("useApp must be used within <UrunProvider>");if(!t.appId)throw new Error('useApp requires <UrunProvider appId="...">');let[,e]=se(o=>o+1,0),r=ie(new Map),n=N(()=>ae(t.appId,{baseUrl:t.baseUrl,orgId:t.orgId,jwt:t.jwt,authProvider:t.authProvider}),[t.appId,t.baseUrl,t.orgId,t.jwt,t.authProvider]);return N(()=>new Proxy({},{get(o,s){if(typeof s=="string")return i=>{let d=ce(s,i),m=r.current.get(d);if(m)return m;let l=new k(n[s](i),e);return r.current.set(d,l),l}}}),[n])}var U=new Map;function pe(t,e,r){if(!r||typeof r.safeParse!="function")throw new Error(`registerComponent("${t}"): schema must be a valid Zod schema`);U.set(t,{component:e,schema:r})}function M(t,e){let r=U.get(t);if(!r)return{error:`Unknown component: "${t}"`};let n=r.schema.safeParse(e);return n.success?{Component:r.component,validatedProps:n.data}:{error:`Validation failed for "${t}": ${n.error.message}`}}import{Fragment as me,jsx as f}from"react/jsx-runtime";function de({name:t,props:e,fallback:r}){let n=M(t,e);if(n.error)return console.warn(`[urun] ComponentRenderer: ${n.error}`),r?f(me,{children:r}):f("div",{className:"urun-component-error",role:"alert",children:f("span",{className:"urun-component-error-text",children:n.error})});let o=n.Component;return f(o,{...n.validatedProps})}import{z as p}from"zod";import{jsx as P,jsxs as B}from"react/jsx-runtime";var le=p.object({step:p.number().min(0),total:p.number().min(1),label:p.string().optional(),variant:p.enum(["default","success","error"]).default("default")});function O(t){let{step:e,total:r,label:n,variant:o="default"}=t,s=Math.min(e/r*100,100),i=e>=r;return{step:e,total:r,label:n,variant:o,percentage:s,isComplete:i}}function ge(t){let{step:e,total:r,label:n,variant:o,percentage:s}=O(t);return B("div",{className:"urun-progress-card","data-variant":o,children:[n&&P("div",{className:"urun-progress-label",children:n}),P("div",{className:"urun-progress-bar",children:P("div",{className:"urun-progress-fill",style:{width:`${s}%`}})}),B("div",{className:"urun-progress-text",children:[e,"/",r]})]})}import{z as x}from"zod";import{jsx as W,jsxs as Se}from"react/jsx-runtime";var fe=x.object({state:x.enum(["thinking","generating","idle","error"]),message:x.string().optional()}),he={thinking:"Thinking...",generating:"Generating...",idle:"Idle",error:"Error"};function D(t){let{state:e,message:r}=t,n=e==="thinking"||e==="generating",o=r??he[e]??e;return{state:e,message:o,isActive:n}}function ve(t){let{state:e,message:r,isActive:n}=D(t);return Se("span",{className:"urun-status-badge","data-state":e,children:[W("span",{className:`urun-status-indicator${n?" urun-status-pulse":""}`}),W("span",{className:"urun-status-message",children:r})]})}import{useRef as F,useEffect as ye}from"react";import{z as C}from"zod";import{jsx as L,jsxs as xe}from"react/jsx-runtime";var ke=C.object({text:C.string(),streaming:C.boolean().default(!1)});function j(t){let{text:e,streaming:r=!1}=t,n=e.length===0;return{text:e,streaming:r,isEmpty:n}}function Pe(t){let{text:e,streaming:r}=j(t),n=F(null),o=F(0);return ye(()=>{let s=n.current;s&&e.length!==o.current&&(s.textContent=e,o.current=e.length)},[e]),xe("div",{className:"urun-text-stream",children:[L("span",{ref:n,className:"urun-text-content"}),r&&L("span",{className:"urun-text-cursor"})]})}import{z as h}from"zod";import{jsx as z,jsxs as be}from"react/jsx-runtime";var Ce=h.object({src:h.string().url(),alt:h.string().optional(),caption:h.string().optional()});function $(t){let{src:e,alt:r,caption:n}=t;return{src:e,alt:r??"",caption:n}}function Re(t){let{src:e,alt:r,caption:n}=$(t);return be("figure",{className:"urun-image-frame",children:[z("img",{className:"urun-image",src:e,alt:r}),n&&z("figcaption",{className:"urun-image-caption",children:n})]})}import{z as a}from"zod";import{jsx as R,jsxs as _e}from"react/jsx-runtime";var we=a.object({metrics:a.array(a.object({label:a.string(),value:a.union([a.string(),a.number()]),unit:a.string().optional()}))});function V(t){return{metrics:t.metrics.map(r=>({...r,displayValue:r.unit?`${r.value} ${r.unit}`:String(r.value)}))}}function Te(t){let{metrics:e}=V(t);return R("div",{className:"urun-metrics-panel",children:e.map((r,n)=>_e("div",{className:"urun-metric-card",children:[R("div",{className:"urun-metric-label",children:r.label}),R("div",{className:"urun-metric-value",children:r.displayValue})]},n))})}export{de as ComponentRenderer,Re as ImageFrame,Ce as ImageFrameSchema,Te as MetricsPanel,we as MetricsPanelSchema,ge as ProgressCard,le as ProgressCardSchema,ve as StatusBadge,fe as StatusBadgeSchema,Pe as TextStream,ke as TextStreamSchema,c as UrunErrorBoundary,te as UrunProvider,pe as registerComponent,ue as useApp,$ as useImageFrame,V as useMetricsPanel,O as useProgressCard,D as useStatusBadge,j as useTextStream};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@urun-sh/react",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.11",
|
|
4
4
|
"description": "React bindings for the urun TypeScript SDK",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -31,7 +31,7 @@
|
|
|
31
31
|
},
|
|
32
32
|
"peerDependencies": {
|
|
33
33
|
"react": "^18.2.0 || ^19.0.0",
|
|
34
|
-
"@urun-sh/core": "^0.1.
|
|
34
|
+
"@urun-sh/core": "^0.1.11",
|
|
35
35
|
"@workos-inc/authkit-react": "^0.15.0"
|
|
36
36
|
},
|
|
37
37
|
"dependencies": {
|