@legit-sdk/react 0.2.13 → 0.2.14

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.
@@ -1,4 +1,4 @@
1
- import { ReactNode } from 'react';
1
+ import type { ReactNode } from 'react';
2
2
  type OpenLegitFsWithMemoryFs = (typeof import('@legit-sdk/core'))['openLegitFsWithMemoryFs'];
3
3
  export interface LegitContextValue {
4
4
  legitFs: Awaited<ReturnType<OpenLegitFsWithMemoryFs>> | null;
package/dist/index.js CHANGED
@@ -1,3 +1,3 @@
1
1
  // @legit-sdk/react - works in browser and Next.js SSR
2
2
 
3
- var M=Object.defineProperty;var a=(i,s)=>M(i,"name",{value:s,configurable:!0});import{createContext as N,useContext as W,useEffect as H,useState as L,useRef as A}from"react";import{jsx as K}from"react/jsx-runtime";var I=N({legitFs:null,loading:!0,head:null,rollback:a(async()=>{},"rollback")}),x=a(()=>W(I),"useLegitContext"),S={gitRoot:"/"},T=100,z=a(({children:i,config:s=S})=>{let[e,h]=L(!0),[n,f]=L(null),u=A(null),[F,d]=L(),[y,p]=L(null);H(()=>{if(!e)return;if(typeof window>"u"){h(!1);return}a(async()=>{try{let{openLegitFsWithMemoryFs:t}=await import("@legit-sdk/core"),r=await t({gitRoot:s.gitRoot,serverUrl:s.serverUrl,publicKey:s.publicKey});s.publicKey&&(await r.auth.addAccessToken(s.publicKey),r.sync.start()),r&&f(r)}catch(t){d(t)}},"init")(),h(!1)},[]),H(()=>{if(!n||typeof window>"u")return;window.legitFs=n;let c=setInterval(async()=>{let t=await n.getCurrentBranch();try{let r=await n.promises.readFile(`/.legit/branches/${t}/.legit/head`,"utf8");r!==u.current&&(u.current=r,p(r))}catch{}},T);return()=>{clearInterval(c)}},[n]);let w=a(async c=>{if(!(typeof window>"u")){if(!n){console.error("No legitFs instance available");return}try{let t=await n.getCurrentBranch();await n.promises.writeFile(`/.legit/branches/${t}/.legit/head`,c,"utf8")}catch(t){d(t)}}},"rollback");return K(I.Provider,{value:{legitFs:n,loading:n===null,head:y,rollback:w,error:F},children:i})},"LegitProvider");import{useEffect as O,useState as m,useRef as P,useCallback as U,useMemo as V}from"react";function _(i,s){let{legitFs:e,error:h,head:n}=x(),[f,u]=m(null),[F,d]=m([]),[y,p]=m(!0),[w,c]=m(),t=P(null),r=P(!1),C=P(!1);O(()=>{if(typeof window>"u"){p(!1);return}if(!e)return;let o=!1;return a(async()=>{p(!0);try{let g=await e.getCurrentBranch(),k=`/.legit/branches/${g}${i}`,B=`/.legit/branches/${g}/.legit/history`,v=await e.promises.readFile(k,"utf8"),D=await e.promises.readFile(B,"utf8").catch(()=>"");if(o)return;let b=[],E=D;E&&(b=JSON.parse(E)),t.current===v&&(t.current=null),u(v),d(b),c(void 0)}catch(g){g?.code!=="ENOENT"?c(g):(u(null),d([]))}finally{o||p(!1)}},"load")(),()=>{o=!0}},[e,i,n]);let R=U(async o=>{if(!(typeof window>"u")&&e)try{t.current=o;let l=await e.getCurrentBranch();await e.promises.writeFile(`/.legit/branches/${l}${i}`,o,"utf8"),u(o)}catch(l){throw t.current=null,c(l),l}},[e,i]);O(()=>{r.current||C.current||!y&&f===null&&e&&s?.initialData&&(C.current=!0,r.current=!0,a(async()=>{try{await R(s.initialData)}catch(l){console.error("Failed to initialize file:",l),r.current=!1}finally{C.current=!1}},"initialize")())},[y,f,e,s?.initialData,R]);let $=U(async o=>{if(typeof window>"u"||!e)return"";try{let l=i.startsWith("/")?i.slice(1):i;return await e.promises.readFile(`/.legit/commits/${o.slice(0,2)}/${o.slice(2)}/${l}`,"utf8")}catch{return""}},[e,i]);return{data:f,setData:R,history:V(()=>F,[F]),getPastState:$,loading:y,error:w??h,legitFs:e}}a(_,"useLegitFile");export{z as LegitProvider,x as useLegitContext,_ as useLegitFile};
3
+ var N=Object.defineProperty;var a=(i,s)=>N(i,"name",{value:s,configurable:!0});import{createContext as x,useContext as W,useEffect as I,useState as F,useRef as A}from"react";import{jsx as V}from"react/jsx-runtime";var S=a(()=>{if(typeof x>"u"||!x)throw new Error("React createContext is not available. Make sure React is properly installed.");return x({legitFs:null,loading:!0,head:null,rollback:a(async()=>{},"rollback")})},"createLegitContext"),O=S(),P=a(()=>W(O),"useLegitContext"),T={gitRoot:"/"},z=100,K=a(({children:i,config:s=T})=>{let[e,h]=F(!0),[n,f]=F(null),u=A(null),[m,d]=F(),[y,p]=F(null);I(()=>{if(!e)return;if(typeof window>"u"){h(!1);return}a(async()=>{try{let{openLegitFsWithMemoryFs:t}=await import("@legit-sdk/core"),r=await t({gitRoot:s.gitRoot,serverUrl:s.serverUrl,publicKey:s.publicKey});s.publicKey&&(await r.auth.addAccessToken(s.publicKey),r.sync.start()),r&&f(r)}catch(t){d(t)}},"init")(),h(!1)},[]),I(()=>{if(!n||typeof window>"u")return;window.legitFs=n;let c=setInterval(async()=>{let t=await n.getCurrentBranch();try{let r=await n.promises.readFile(`/.legit/branches/${t}/.legit/head`,"utf8");r!==u.current&&(u.current=r,p(r))}catch{}},z);return()=>{clearInterval(c)}},[n]);let w=a(async c=>{if(!(typeof window>"u")){if(!n){console.error("No legitFs instance available");return}try{let t=await n.getCurrentBranch();await n.promises.writeFile(`/.legit/branches/${t}/.legit/head`,c,"utf8")}catch(t){d(t)}}},"rollback");return V(O.Provider,{value:{legitFs:n,loading:n===null,head:y,rollback:w,error:m},children:i})},"LegitProvider");import{useEffect as k,useState as L,useRef as v,useCallback as U,useMemo as _}from"react";function J(i,s){let{legitFs:e,error:h,head:n}=P(),[f,u]=L(null),[m,d]=L([]),[y,p]=L(!0),[w,c]=L(),t=v(null),r=v(!1),C=v(!1);k(()=>{if(typeof window>"u"){p(!1);return}if(!e)return;let o=!1;return a(async()=>{p(!0);try{let g=await e.getCurrentBranch(),B=`/.legit/branches/${g}${i}`,D=`/.legit/branches/${g}/.legit/history`,b=await e.promises.readFile(B,"utf8"),M=await e.promises.readFile(D,"utf8").catch(()=>"");if(o)return;let E=[],H=M;H&&(E=JSON.parse(H)),t.current===b&&(t.current=null),u(b),d(E),c(void 0)}catch(g){g?.code!=="ENOENT"?c(g):(u(null),d([]))}finally{o||p(!1)}},"load")(),()=>{o=!0}},[e,i,n]);let R=U(async o=>{if(!(typeof window>"u")&&e)try{t.current=o;let l=await e.getCurrentBranch();await e.promises.writeFile(`/.legit/branches/${l}${i}`,o,"utf8"),u(o)}catch(l){throw t.current=null,c(l),l}},[e,i]);k(()=>{r.current||C.current||!y&&f===null&&e&&s?.initialData&&(C.current=!0,r.current=!0,a(async()=>{try{await R(s.initialData)}catch(l){console.error("Failed to initialize file:",l),r.current=!1}finally{C.current=!1}},"initialize")())},[y,f,e,s?.initialData,R]);let $=U(async o=>{if(typeof window>"u"||!e)return"";try{let l=i.startsWith("/")?i.slice(1):i;return await e.promises.readFile(`/.legit/commits/${o.slice(0,2)}/${o.slice(2)}/${l}`,"utf8")}catch{return""}},[e,i]);return{data:f,setData:R,history:_(()=>m,[m]),getPastState:$,loading:y,error:w??h,legitFs:e}}a(J,"useLegitFile");export{K as LegitProvider,P as useLegitContext,J as useLegitFile};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@legit-sdk/react",
3
- "version": "0.2.13",
3
+ "version": "0.2.14",
4
4
  "description": "React wrapper for @legit-sdk/core",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",