@lasterp/shared 1.0.0-beta.1 → 1.0.0-beta.2
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.
|
@@ -644,4 +644,12 @@ interface ProductContext {
|
|
|
644
644
|
}
|
|
645
645
|
import { camelize, decamelize, camelizeKeys, decamelizeKeys } from "humps";
|
|
646
646
|
declare function equalsIgnoreCase(str1: string, str2: string): boolean;
|
|
647
|
-
|
|
647
|
+
import { JSX, ReactNode } from "react";
|
|
648
|
+
interface ServerProviderProps {
|
|
649
|
+
frappeUrl: string;
|
|
650
|
+
siteName?: string;
|
|
651
|
+
resource: string;
|
|
652
|
+
children: ReactNode;
|
|
653
|
+
}
|
|
654
|
+
declare function ServerProvider({ frappeUrl, siteName, resource, children }: ServerProviderProps): JSX.Element;
|
|
655
|
+
export { useVariantSelector, useSearch, useFrappeUpdateDoc, useFrappePutCall, useFrappePrefetchDoc, useFrappePostCall, useFrappeGetDocList, useFrappeGetDocCount, useFrappeGetDoc, useFrappeGetCall, useFrappeFileUpload, useFrappeEventListener, useFrappeDocumentEventListener, useFrappeDocTypeEventListener, useFrappeDeleteDoc, useFrappeDeleteCall, useFrappeCreateDoc, useFrappeAuth, equalsIgnoreCase, decamelizeKeys, decamelize, camelizeKeys, camelize, ViewerEventData, VariantSelectorResult, VariantSelectorProps, VariantSelectorOption, UseFrappeFileUploadReturnType, TopbarItem, Topbar, TokenParams, ShopContext, ServerProvider, SearchResult, ProductVariant, ProductContext, Product, Page, NavbarSubItemGroup, NavbarSubItem, NavbarItem, Model, ItemVariant, Item, Hero, Header, Globals, FrappeProviderProps, FrappeProvider, FrappeMutationResult, FrappeFileUploadResponse, FrappeError, FrappeContext, FrappeConfig, FooterItemGroup, FooterItem, Footer, DocumentUpdateEventData, DocTypeListUpdateEventData, Colour, Category, Brand, Block };
|
|
@@ -575,6 +575,54 @@ import { camelize, decamelize, camelizeKeys, decamelizeKeys } from "humps";
|
|
|
575
575
|
function equalsIgnoreCase(str1, str2) {
|
|
576
576
|
return str1.localeCompare(str2, undefined, { sensitivity: "accent" }) === 0;
|
|
577
577
|
}
|
|
578
|
+
// src/context/server-provider.node.tsx
|
|
579
|
+
import {
|
|
580
|
+
useCallback as useCallback5,
|
|
581
|
+
useEffect as useEffect4,
|
|
582
|
+
useRef
|
|
583
|
+
} from "react";
|
|
584
|
+
import { useLogto } from "@logto/react";
|
|
585
|
+
import { jsx as jsx2 } from "react/jsx-runtime";
|
|
586
|
+
var TOKEN_STALE_MS = 50 * 60 * 1000;
|
|
587
|
+
function ServerProvider({
|
|
588
|
+
frappeUrl,
|
|
589
|
+
siteName,
|
|
590
|
+
resource,
|
|
591
|
+
children
|
|
592
|
+
}) {
|
|
593
|
+
const { getAccessToken, isAuthenticated } = useLogto();
|
|
594
|
+
const tokenRef = useRef("");
|
|
595
|
+
const fetchedAtRef = useRef(0);
|
|
596
|
+
const isRefreshingRef = useRef(false);
|
|
597
|
+
const refresh = useCallback5(async () => {
|
|
598
|
+
const token = await getAccessToken(resource);
|
|
599
|
+
if (token) {
|
|
600
|
+
tokenRef.current = token;
|
|
601
|
+
fetchedAtRef.current = Date.now();
|
|
602
|
+
}
|
|
603
|
+
}, [getAccessToken, resource]);
|
|
604
|
+
useEffect4(() => {
|
|
605
|
+
if (isAuthenticated)
|
|
606
|
+
refresh();
|
|
607
|
+
}, [isAuthenticated, refresh]);
|
|
608
|
+
const getToken = useCallback5(() => {
|
|
609
|
+
if (!isRefreshingRef.current && fetchedAtRef.current > 0 && Date.now() - fetchedAtRef.current > TOKEN_STALE_MS) {
|
|
610
|
+
isRefreshingRef.current = true;
|
|
611
|
+
refresh().finally(() => {
|
|
612
|
+
isRefreshingRef.current = false;
|
|
613
|
+
});
|
|
614
|
+
}
|
|
615
|
+
return tokenRef.current;
|
|
616
|
+
}, [refresh]);
|
|
617
|
+
return /* @__PURE__ */ jsx2(FrappeProvider, {
|
|
618
|
+
url: frappeUrl,
|
|
619
|
+
siteName,
|
|
620
|
+
customHeaders: siteName ? { "X-Frappe-Site-Name": siteName } : undefined,
|
|
621
|
+
enableSocket: false,
|
|
622
|
+
tokenParams: { useToken: true, token: getToken, type: "Bearer" },
|
|
623
|
+
children
|
|
624
|
+
});
|
|
625
|
+
}
|
|
578
626
|
export {
|
|
579
627
|
useVariantSelector,
|
|
580
628
|
useSearch,
|
|
@@ -599,6 +647,7 @@ export {
|
|
|
599
647
|
decamelize,
|
|
600
648
|
camelizeKeys,
|
|
601
649
|
camelize,
|
|
650
|
+
ServerProvider,
|
|
602
651
|
FrappeProvider,
|
|
603
652
|
FrappeContext
|
|
604
653
|
};
|
|
@@ -644,4 +644,12 @@ interface ProductContext {
|
|
|
644
644
|
}
|
|
645
645
|
import { camelize, decamelize, camelizeKeys, decamelizeKeys } from "humps";
|
|
646
646
|
declare function equalsIgnoreCase(str1: string, str2: string): boolean;
|
|
647
|
-
|
|
647
|
+
import { JSX, ReactNode } from "react";
|
|
648
|
+
interface ServerProviderProps {
|
|
649
|
+
frappeUrl: string;
|
|
650
|
+
siteName?: string;
|
|
651
|
+
resource: string;
|
|
652
|
+
children: ReactNode;
|
|
653
|
+
}
|
|
654
|
+
declare function ServerProvider({ frappeUrl, siteName, resource, children }: ServerProviderProps): JSX.Element;
|
|
655
|
+
export { useVariantSelector, useSearch, useFrappeUpdateDoc, useFrappePutCall, useFrappePrefetchDoc, useFrappePostCall, useFrappeGetDocList, useFrappeGetDocCount, useFrappeGetDoc, useFrappeGetCall, useFrappeFileUpload, useFrappeEventListener, useFrappeDocumentEventListener, useFrappeDocTypeEventListener, useFrappeDeleteDoc, useFrappeDeleteCall, useFrappeCreateDoc, useFrappeAuth, equalsIgnoreCase, decamelizeKeys, decamelize, camelizeKeys, camelize, ViewerEventData, VariantSelectorResult, VariantSelectorProps, VariantSelectorOption, UseFrappeFileUploadReturnType, TopbarItem, Topbar, TokenParams, ShopContext, ServerProvider, SearchResult, ProductVariant, ProductContext, Product, Page, NavbarSubItemGroup, NavbarSubItem, NavbarItem, Model, ItemVariant, Item, Hero, Header, Globals, FrappeProviderProps, FrappeProvider, FrappeMutationResult, FrappeFileUploadResponse, FrappeError, FrappeContext, FrappeConfig, FooterItemGroup, FooterItem, Footer, DocumentUpdateEventData, DocTypeListUpdateEventData, Colour, Category, Brand, Block };
|
|
@@ -575,6 +575,54 @@ import { camelize, decamelize, camelizeKeys, decamelizeKeys } from "humps";
|
|
|
575
575
|
function equalsIgnoreCase(str1, str2) {
|
|
576
576
|
return str1.localeCompare(str2, undefined, { sensitivity: "accent" }) === 0;
|
|
577
577
|
}
|
|
578
|
+
// src/context/server-provider.rn.tsx
|
|
579
|
+
import {
|
|
580
|
+
useCallback as useCallback5,
|
|
581
|
+
useEffect as useEffect4,
|
|
582
|
+
useRef
|
|
583
|
+
} from "react";
|
|
584
|
+
import { useLogto } from "@logto/rn";
|
|
585
|
+
import { jsx as jsx2 } from "react/jsx-runtime";
|
|
586
|
+
var TOKEN_STALE_MS = 50 * 60 * 1000;
|
|
587
|
+
function ServerProvider({
|
|
588
|
+
frappeUrl,
|
|
589
|
+
siteName,
|
|
590
|
+
resource,
|
|
591
|
+
children
|
|
592
|
+
}) {
|
|
593
|
+
const { getAccessToken, isAuthenticated } = useLogto();
|
|
594
|
+
const tokenRef = useRef("");
|
|
595
|
+
const fetchedAtRef = useRef(0);
|
|
596
|
+
const isRefreshingRef = useRef(false);
|
|
597
|
+
const refresh = useCallback5(async () => {
|
|
598
|
+
const token = await getAccessToken(resource);
|
|
599
|
+
if (token) {
|
|
600
|
+
tokenRef.current = token;
|
|
601
|
+
fetchedAtRef.current = Date.now();
|
|
602
|
+
}
|
|
603
|
+
}, [getAccessToken, resource]);
|
|
604
|
+
useEffect4(() => {
|
|
605
|
+
if (isAuthenticated)
|
|
606
|
+
refresh();
|
|
607
|
+
}, [isAuthenticated, refresh]);
|
|
608
|
+
const getToken = useCallback5(() => {
|
|
609
|
+
if (!isRefreshingRef.current && fetchedAtRef.current > 0 && Date.now() - fetchedAtRef.current > TOKEN_STALE_MS) {
|
|
610
|
+
isRefreshingRef.current = true;
|
|
611
|
+
refresh().finally(() => {
|
|
612
|
+
isRefreshingRef.current = false;
|
|
613
|
+
});
|
|
614
|
+
}
|
|
615
|
+
return tokenRef.current;
|
|
616
|
+
}, [refresh]);
|
|
617
|
+
return /* @__PURE__ */ jsx2(FrappeProvider, {
|
|
618
|
+
url: frappeUrl,
|
|
619
|
+
siteName,
|
|
620
|
+
customHeaders: siteName ? { "X-Frappe-Site-Name": siteName } : undefined,
|
|
621
|
+
enableSocket: false,
|
|
622
|
+
tokenParams: { useToken: true, token: getToken, type: "Bearer" },
|
|
623
|
+
children
|
|
624
|
+
});
|
|
625
|
+
}
|
|
578
626
|
export {
|
|
579
627
|
useVariantSelector,
|
|
580
628
|
useSearch,
|
|
@@ -599,6 +647,7 @@ export {
|
|
|
599
647
|
decamelize,
|
|
600
648
|
camelizeKeys,
|
|
601
649
|
camelize,
|
|
650
|
+
ServerProvider,
|
|
602
651
|
FrappeProvider,
|
|
603
652
|
FrappeContext
|
|
604
653
|
};
|