@weaverse/hydrogen 1.0.38 → 1.0.40
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.ts +44 -31
- package/dist/index.js +75 -82
- package/dist/index.mjs +75 -79
- package/package.json +2 -2
package/dist/index.d.ts
CHANGED
|
@@ -1,10 +1,11 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
|
-
import {
|
|
3
|
-
import { LoaderArgs } from '@shopify/remix-oxygen';
|
|
1
|
+
import React, { ForwardRefExoticComponent } from 'react';
|
|
2
|
+
import { ElementSchema, WeaverseElement } from '@weaverse/react';
|
|
3
|
+
import { LoaderArgs, AppLoadContext } from '@shopify/remix-oxygen';
|
|
4
4
|
|
|
5
5
|
/**
|
|
6
6
|
* Declare local additions to `AppLoadContext` to include the session utilities we injected in `server.ts`.
|
|
7
7
|
*/
|
|
8
|
+
type TODO = any;
|
|
8
9
|
declare module '@shopify/remix-oxygen' {
|
|
9
10
|
interface AppLoadContext {
|
|
10
11
|
waitUntil: ExecutionContext['waitUntil'];
|
|
@@ -13,42 +14,54 @@ declare module '@shopify/remix-oxygen' {
|
|
|
13
14
|
env: TODO;
|
|
14
15
|
}
|
|
15
16
|
}
|
|
16
|
-
type
|
|
17
|
-
[key: string]: any;
|
|
18
|
-
};
|
|
19
|
-
type TODO = any;
|
|
20
|
-
|
|
21
|
-
declare let useStudio: (weaverseCore: Weaverse) => void;
|
|
22
|
-
|
|
23
|
-
type QueryKey = string | readonly unknown[];
|
|
24
|
-
declare function hashKey(queryKey: QueryKey): string;
|
|
25
|
-
declare let fetchWithServerCache: ({ url, options, storefront, waitUntil, }: {
|
|
26
|
-
url: string;
|
|
27
|
-
options: RequestInit | Request;
|
|
28
|
-
storefront: any;
|
|
29
|
-
waitUntil?: any;
|
|
30
|
-
}) => Promise<any>;
|
|
31
|
-
type WeaverseComponentLoaderArgs = LoaderArgs & {
|
|
17
|
+
type WeaverseLoaderArgs = LoaderArgs & {
|
|
32
18
|
data: any;
|
|
33
19
|
config: {
|
|
34
20
|
projectId: string;
|
|
35
21
|
weaverseHost: string;
|
|
36
22
|
};
|
|
37
23
|
};
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
}
|
|
24
|
+
interface HydrogenComponentSchema extends ElementSchema {
|
|
25
|
+
isSection?: boolean;
|
|
26
|
+
}
|
|
27
|
+
interface HydrogenComponentProps<T = unknown> extends WeaverseElement {
|
|
28
|
+
loaderData?: T;
|
|
29
|
+
children?: React.JSX.Element[];
|
|
30
|
+
}
|
|
31
|
+
interface HydrogenComponent<T = HydrogenComponentProps> {
|
|
32
|
+
default: ForwardRefExoticComponent<T>;
|
|
33
|
+
schema: ElementSchema;
|
|
34
|
+
loader?: (args: WeaverseLoaderArgs) => Promise<unknown>;
|
|
35
|
+
}
|
|
36
|
+
type HydrogenPageConfigs = {
|
|
37
|
+
projectId: string;
|
|
38
|
+
weaverseHost: string;
|
|
39
|
+
isDesignMode?: boolean;
|
|
40
|
+
[key: string]: any;
|
|
41
|
+
};
|
|
42
|
+
interface HydrogenPageData {
|
|
43
|
+
page: any;
|
|
44
|
+
configs: HydrogenPageConfigs;
|
|
45
|
+
}
|
|
45
46
|
|
|
46
|
-
|
|
47
|
-
|
|
47
|
+
/**
|
|
48
|
+
* Fetch with server cache requires a storefront.cache instance which is Cloudflare Cache and a waitUntil function, otherwise it will just fetch the url.
|
|
49
|
+
*/
|
|
50
|
+
declare let fetchWithServerCache: ({ url, options, context, }: {
|
|
51
|
+
url: string;
|
|
52
|
+
options?: Request | RequestInit | undefined;
|
|
53
|
+
context: AppLoadContext;
|
|
54
|
+
}) => Promise<any>;
|
|
55
|
+
|
|
56
|
+
declare function weaverseLoader(args: LoaderArgs, components: Record<string, HydrogenComponent>): Promise<HydrogenPageData | null>;
|
|
57
|
+
|
|
58
|
+
interface WeaverseHydrogenRootProps {
|
|
59
|
+
components: Record<string, HydrogenComponent>;
|
|
48
60
|
data: {
|
|
61
|
+
weaverseData: HydrogenPageData;
|
|
49
62
|
[key: string]: any;
|
|
50
|
-
weaverseData: any;
|
|
51
63
|
};
|
|
52
|
-
}
|
|
64
|
+
}
|
|
65
|
+
declare let WeaverseHydrogenRoot: (props: WeaverseHydrogenRootProps) => React.JSX.Element;
|
|
53
66
|
|
|
54
|
-
export {
|
|
67
|
+
export { HydrogenComponent, HydrogenComponentProps, HydrogenComponentSchema, HydrogenPageConfigs, HydrogenPageData, TODO, WeaverseHydrogenRoot, WeaverseLoaderArgs, fetchWithServerCache, weaverseLoader };
|
package/dist/index.js
CHANGED
|
@@ -32,9 +32,6 @@ var src_exports = {};
|
|
|
32
32
|
__export(src_exports, {
|
|
33
33
|
WeaverseHydrogenRoot: () => WeaverseHydrogenRoot,
|
|
34
34
|
fetchWithServerCache: () => fetchWithServerCache,
|
|
35
|
-
getRequestQueries: () => getRequestQueries,
|
|
36
|
-
hashKey: () => hashKey,
|
|
37
|
-
useStudio: () => useStudio,
|
|
38
35
|
weaverseLoader: () => weaverseLoader
|
|
39
36
|
});
|
|
40
37
|
module.exports = __toCommonJS(src_exports);
|
|
@@ -43,7 +40,7 @@ var import_react4 = __toESM(require("react"));
|
|
|
43
40
|
|
|
44
41
|
// src/context.ts
|
|
45
42
|
var import_react = require("@weaverse/react");
|
|
46
|
-
|
|
43
|
+
function createCachedContext(init) {
|
|
47
44
|
if (import_react.isBrowser && init.pageId) {
|
|
48
45
|
window.__weaverses = window.__weaverses || {};
|
|
49
46
|
if (!window.__weaverses[init.pageId]) {
|
|
@@ -52,26 +49,25 @@ var createCachedWeaverseContext = (init) => {
|
|
|
52
49
|
return window.__weaverses[init.pageId];
|
|
53
50
|
}
|
|
54
51
|
return (0, import_react.createRootContext)(init);
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
let {
|
|
58
|
-
let weaverse =
|
|
59
|
-
...
|
|
60
|
-
data:
|
|
61
|
-
pageId:
|
|
52
|
+
}
|
|
53
|
+
function createWeaverseHydrogenContext({ weaverseData }, components) {
|
|
54
|
+
let { page = {}, configs = {} } = weaverseData || {};
|
|
55
|
+
let weaverse = createCachedContext({
|
|
56
|
+
...configs,
|
|
57
|
+
data: page,
|
|
58
|
+
pageId: page?.id,
|
|
62
59
|
platformType: "shopify-hydrogen"
|
|
63
60
|
});
|
|
64
61
|
Object.entries(components).forEach(([key, component]) => {
|
|
65
62
|
weaverse.registerElement({
|
|
66
63
|
type: component?.schema?.type || key,
|
|
67
64
|
Component: component?.default,
|
|
68
|
-
schema: component?.schema
|
|
69
|
-
defaultCss: component?.css,
|
|
70
|
-
permanentCss: component?.permanentCss
|
|
65
|
+
schema: component?.schema
|
|
66
|
+
// defaultCss: component?.css,
|
|
71
67
|
});
|
|
72
68
|
});
|
|
73
69
|
return weaverse;
|
|
74
|
-
}
|
|
70
|
+
}
|
|
75
71
|
|
|
76
72
|
// ../../node_modules/@stitches/core/dist/index.mjs
|
|
77
73
|
var t = "colors";
|
|
@@ -736,9 +732,9 @@ var Weaverse = class {
|
|
|
736
732
|
};
|
|
737
733
|
Weaverse.WeaverseItemStore = WeaverseItemStore;
|
|
738
734
|
|
|
739
|
-
// src/
|
|
735
|
+
// src/hooks/use-studio.ts
|
|
740
736
|
var import_react2 = require("react");
|
|
741
|
-
|
|
737
|
+
function useStudio(weaverseCore) {
|
|
742
738
|
(0, import_react2.useEffect)(() => {
|
|
743
739
|
if (weaverseCore.isDesignMode && isIframe && !window.weaverseStudioInitialized) {
|
|
744
740
|
window.weaverseStudioInitialized = true;
|
|
@@ -753,14 +749,16 @@ var useStudio = (weaverseCore) => {
|
|
|
753
749
|
}
|
|
754
750
|
);
|
|
755
751
|
}
|
|
756
|
-
|
|
752
|
+
window.requestAnimationFrame(() => {
|
|
757
753
|
window.__weaverse = weaverseCore;
|
|
758
|
-
}
|
|
754
|
+
});
|
|
759
755
|
}, []);
|
|
760
|
-
}
|
|
756
|
+
}
|
|
761
757
|
|
|
762
|
-
// src/
|
|
758
|
+
// src/fetch.ts
|
|
763
759
|
var import_hydrogen = require("@shopify/hydrogen");
|
|
760
|
+
|
|
761
|
+
// src/utils.ts
|
|
764
762
|
function hashKey(queryKey) {
|
|
765
763
|
const rawKeys = Array.isArray(queryKey) ? queryKey : [queryKey];
|
|
766
764
|
let hash = "";
|
|
@@ -779,16 +777,31 @@ function hashKey(queryKey) {
|
|
|
779
777
|
}
|
|
780
778
|
return hash;
|
|
781
779
|
}
|
|
780
|
+
function getRequestQueries(request) {
|
|
781
|
+
let url = new URL(request.url);
|
|
782
|
+
return Array.from(url.searchParams.entries()).reduce(
|
|
783
|
+
(q, [k2, v2]) => {
|
|
784
|
+
q[k2] = v2 === "true" ? true : v2 === "false" ? false : v2;
|
|
785
|
+
return q;
|
|
786
|
+
},
|
|
787
|
+
{}
|
|
788
|
+
);
|
|
789
|
+
}
|
|
790
|
+
|
|
791
|
+
// src/fetch.ts
|
|
782
792
|
var cacheControl = (0, import_hydrogen.generateCacheControlHeader)((0, import_hydrogen.CacheShort)());
|
|
783
793
|
var fetchWithServerCache = async ({
|
|
784
794
|
url,
|
|
785
795
|
options = {},
|
|
786
|
-
|
|
787
|
-
waitUntil
|
|
796
|
+
context
|
|
788
797
|
}) => {
|
|
789
|
-
|
|
798
|
+
let { storefront, waitUntil } = context;
|
|
799
|
+
if (!storefront?.cache || !waitUntil) {
|
|
800
|
+
return fetch(url, options);
|
|
801
|
+
}
|
|
802
|
+
let cacheUrl = new URL(url);
|
|
790
803
|
cacheUrl.pathname = "/cache" + cacheUrl.pathname + hashKey([options.body]);
|
|
791
|
-
|
|
804
|
+
let cacheKey = new Request(cacheUrl.toString());
|
|
792
805
|
let response = await storefront.cache.match(cacheKey);
|
|
793
806
|
if (!response) {
|
|
794
807
|
response = await fetch(url, {
|
|
@@ -802,95 +815,78 @@ var fetchWithServerCache = async ({
|
|
|
802
815
|
}
|
|
803
816
|
return response;
|
|
804
817
|
};
|
|
805
|
-
|
|
806
|
-
|
|
807
|
-
|
|
808
|
-
|
|
809
|
-
|
|
810
|
-
return q;
|
|
811
|
-
},
|
|
812
|
-
{}
|
|
813
|
-
);
|
|
814
|
-
}
|
|
815
|
-
async function weaverseLoader({
|
|
816
|
-
request,
|
|
817
|
-
context: { env, storefront, waitUntil },
|
|
818
|
-
context,
|
|
819
|
-
params
|
|
820
|
-
}, components) {
|
|
818
|
+
|
|
819
|
+
// src/loader.ts
|
|
820
|
+
async function weaverseLoader(args, components) {
|
|
821
|
+
let { request, context, params } = args;
|
|
822
|
+
let { env } = context;
|
|
821
823
|
let queries = getRequestQueries(request);
|
|
822
824
|
let projectId = env?.WEAVERSE_PROJECT_ID;
|
|
823
825
|
let weaverseHost = env?.WEAVERSE_HOST;
|
|
824
826
|
if (!projectId || !weaverseHost) {
|
|
825
|
-
console.
|
|
826
|
-
return
|
|
827
|
+
console.log("\u274C Missing `WEAVERSE_PROJECT_ID` or `WEAVERSE_HOST`!");
|
|
828
|
+
return null;
|
|
827
829
|
}
|
|
828
|
-
let
|
|
830
|
+
let configs = {
|
|
829
831
|
projectId,
|
|
830
832
|
weaverseHost,
|
|
831
833
|
...queries
|
|
832
834
|
};
|
|
833
835
|
try {
|
|
834
|
-
let
|
|
836
|
+
let page = await fetchWithServerCache({
|
|
835
837
|
url: `${weaverseHost}/api/public/project`,
|
|
836
838
|
options: {
|
|
837
839
|
method: "POST",
|
|
838
|
-
headers: {
|
|
839
|
-
"Content-Type": "application/json"
|
|
840
|
-
},
|
|
841
840
|
body: JSON.stringify({
|
|
842
841
|
projectId,
|
|
843
842
|
url: request.url
|
|
844
843
|
})
|
|
845
844
|
},
|
|
846
|
-
|
|
847
|
-
waitUntil
|
|
845
|
+
context
|
|
848
846
|
}).then((r2) => r2.json()).catch((err) => {
|
|
849
|
-
console.log(`\u274C Error fetching
|
|
847
|
+
console.log(`\u274C Error fetching project data: ${err?.toString()}`);
|
|
850
848
|
return {};
|
|
851
849
|
});
|
|
852
|
-
if (
|
|
853
|
-
let items =
|
|
854
|
-
|
|
850
|
+
if (page?.items) {
|
|
851
|
+
let items = page.items;
|
|
852
|
+
page.items = await Promise.all(
|
|
855
853
|
items.map(async (item) => {
|
|
856
854
|
let loader = components[item.type]?.loader;
|
|
857
|
-
if (loader) {
|
|
858
|
-
|
|
859
|
-
|
|
860
|
-
|
|
861
|
-
|
|
862
|
-
|
|
863
|
-
|
|
864
|
-
|
|
865
|
-
|
|
866
|
-
|
|
867
|
-
|
|
855
|
+
if (loader && typeof loader === "function") {
|
|
856
|
+
try {
|
|
857
|
+
return {
|
|
858
|
+
...item,
|
|
859
|
+
loaderData: await loader({
|
|
860
|
+
data: item,
|
|
861
|
+
context,
|
|
862
|
+
params,
|
|
863
|
+
request,
|
|
864
|
+
config: configs
|
|
865
|
+
})
|
|
866
|
+
};
|
|
867
|
+
} catch (err) {
|
|
868
|
+
console.log(`\u274C Loader run failed! Item: ${item}: ${err}`);
|
|
869
|
+
return item;
|
|
870
|
+
}
|
|
868
871
|
}
|
|
869
872
|
return item;
|
|
870
873
|
})
|
|
871
874
|
);
|
|
872
875
|
}
|
|
873
|
-
return {
|
|
874
|
-
pageData,
|
|
875
|
-
config,
|
|
876
|
-
components: {}
|
|
877
|
-
};
|
|
876
|
+
return { page, configs };
|
|
878
877
|
} catch (err) {
|
|
879
|
-
console.
|
|
880
|
-
return
|
|
878
|
+
console.log(`\u274C Error fetching Weaverse data: ${err?.toString()}`);
|
|
879
|
+
return null;
|
|
881
880
|
}
|
|
882
881
|
}
|
|
883
882
|
|
|
884
883
|
// src/index.tsx
|
|
885
|
-
var WeaverseHydrogenRoot = ({
|
|
886
|
-
components,
|
|
887
|
-
data
|
|
888
|
-
}) => {
|
|
884
|
+
var WeaverseHydrogenRoot = (props) => {
|
|
885
|
+
let { components, data } = props;
|
|
889
886
|
let weaverse = createWeaverseHydrogenContext(data, components);
|
|
890
887
|
useStudio(weaverse);
|
|
891
|
-
if (!weaverse?.data)
|
|
892
|
-
return /* @__PURE__ */ import_react4.default.createElement("div", null, "
|
|
893
|
-
}
|
|
888
|
+
if (!weaverse?.data)
|
|
889
|
+
return /* @__PURE__ */ import_react4.default.createElement("div", null, "No Weaverse data!");
|
|
894
890
|
return /* @__PURE__ */ import_react4.default.createElement(import_react4.default.Fragment, null, /* @__PURE__ */ import_react4.default.createElement(import_react3.WeaverseRoot, { context: weaverse }), weaverse.isDesignMode ? null : /* @__PURE__ */ import_react4.default.createElement(StitchesStyle, { weaverse }));
|
|
895
891
|
};
|
|
896
892
|
var StitchesStyle = (0, import_react4.memo)(
|
|
@@ -913,8 +909,5 @@ var StitchesStyle = (0, import_react4.memo)(
|
|
|
913
909
|
0 && (module.exports = {
|
|
914
910
|
WeaverseHydrogenRoot,
|
|
915
911
|
fetchWithServerCache,
|
|
916
|
-
getRequestQueries,
|
|
917
|
-
hashKey,
|
|
918
|
-
useStudio,
|
|
919
912
|
weaverseLoader
|
|
920
913
|
});
|
package/dist/index.mjs
CHANGED
|
@@ -4,7 +4,7 @@ import React, { memo } from "react";
|
|
|
4
4
|
|
|
5
5
|
// src/context.ts
|
|
6
6
|
import { createRootContext, isBrowser } from "@weaverse/react";
|
|
7
|
-
|
|
7
|
+
function createCachedContext(init) {
|
|
8
8
|
if (isBrowser && init.pageId) {
|
|
9
9
|
window.__weaverses = window.__weaverses || {};
|
|
10
10
|
if (!window.__weaverses[init.pageId]) {
|
|
@@ -13,26 +13,25 @@ var createCachedWeaverseContext = (init) => {
|
|
|
13
13
|
return window.__weaverses[init.pageId];
|
|
14
14
|
}
|
|
15
15
|
return createRootContext(init);
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
let {
|
|
19
|
-
let weaverse =
|
|
20
|
-
...
|
|
21
|
-
data:
|
|
22
|
-
pageId:
|
|
16
|
+
}
|
|
17
|
+
function createWeaverseHydrogenContext({ weaverseData }, components) {
|
|
18
|
+
let { page = {}, configs = {} } = weaverseData || {};
|
|
19
|
+
let weaverse = createCachedContext({
|
|
20
|
+
...configs,
|
|
21
|
+
data: page,
|
|
22
|
+
pageId: page?.id,
|
|
23
23
|
platformType: "shopify-hydrogen"
|
|
24
24
|
});
|
|
25
25
|
Object.entries(components).forEach(([key, component]) => {
|
|
26
26
|
weaverse.registerElement({
|
|
27
27
|
type: component?.schema?.type || key,
|
|
28
28
|
Component: component?.default,
|
|
29
|
-
schema: component?.schema
|
|
30
|
-
defaultCss: component?.css,
|
|
31
|
-
permanentCss: component?.permanentCss
|
|
29
|
+
schema: component?.schema
|
|
30
|
+
// defaultCss: component?.css,
|
|
32
31
|
});
|
|
33
32
|
});
|
|
34
33
|
return weaverse;
|
|
35
|
-
}
|
|
34
|
+
}
|
|
36
35
|
|
|
37
36
|
// ../../node_modules/@stitches/core/dist/index.mjs
|
|
38
37
|
var t = "colors";
|
|
@@ -697,9 +696,9 @@ var Weaverse = class {
|
|
|
697
696
|
};
|
|
698
697
|
Weaverse.WeaverseItemStore = WeaverseItemStore;
|
|
699
698
|
|
|
700
|
-
// src/
|
|
699
|
+
// src/hooks/use-studio.ts
|
|
701
700
|
import { useEffect } from "react";
|
|
702
|
-
|
|
701
|
+
function useStudio(weaverseCore) {
|
|
703
702
|
useEffect(() => {
|
|
704
703
|
if (weaverseCore.isDesignMode && isIframe && !window.weaverseStudioInitialized) {
|
|
705
704
|
window.weaverseStudioInitialized = true;
|
|
@@ -714,14 +713,16 @@ var useStudio = (weaverseCore) => {
|
|
|
714
713
|
}
|
|
715
714
|
);
|
|
716
715
|
}
|
|
717
|
-
|
|
716
|
+
window.requestAnimationFrame(() => {
|
|
718
717
|
window.__weaverse = weaverseCore;
|
|
719
|
-
}
|
|
718
|
+
});
|
|
720
719
|
}, []);
|
|
721
|
-
}
|
|
720
|
+
}
|
|
722
721
|
|
|
723
|
-
// src/
|
|
722
|
+
// src/fetch.ts
|
|
724
723
|
import { CacheShort, generateCacheControlHeader } from "@shopify/hydrogen";
|
|
724
|
+
|
|
725
|
+
// src/utils.ts
|
|
725
726
|
function hashKey(queryKey) {
|
|
726
727
|
const rawKeys = Array.isArray(queryKey) ? queryKey : [queryKey];
|
|
727
728
|
let hash = "";
|
|
@@ -740,16 +741,31 @@ function hashKey(queryKey) {
|
|
|
740
741
|
}
|
|
741
742
|
return hash;
|
|
742
743
|
}
|
|
744
|
+
function getRequestQueries(request) {
|
|
745
|
+
let url = new URL(request.url);
|
|
746
|
+
return Array.from(url.searchParams.entries()).reduce(
|
|
747
|
+
(q, [k2, v2]) => {
|
|
748
|
+
q[k2] = v2 === "true" ? true : v2 === "false" ? false : v2;
|
|
749
|
+
return q;
|
|
750
|
+
},
|
|
751
|
+
{}
|
|
752
|
+
);
|
|
753
|
+
}
|
|
754
|
+
|
|
755
|
+
// src/fetch.ts
|
|
743
756
|
var cacheControl = generateCacheControlHeader(CacheShort());
|
|
744
757
|
var fetchWithServerCache = async ({
|
|
745
758
|
url,
|
|
746
759
|
options = {},
|
|
747
|
-
|
|
748
|
-
waitUntil
|
|
760
|
+
context
|
|
749
761
|
}) => {
|
|
750
|
-
|
|
762
|
+
let { storefront, waitUntil } = context;
|
|
763
|
+
if (!storefront?.cache || !waitUntil) {
|
|
764
|
+
return fetch(url, options);
|
|
765
|
+
}
|
|
766
|
+
let cacheUrl = new URL(url);
|
|
751
767
|
cacheUrl.pathname = "/cache" + cacheUrl.pathname + hashKey([options.body]);
|
|
752
|
-
|
|
768
|
+
let cacheKey = new Request(cacheUrl.toString());
|
|
753
769
|
let response = await storefront.cache.match(cacheKey);
|
|
754
770
|
if (!response) {
|
|
755
771
|
response = await fetch(url, {
|
|
@@ -763,95 +779,78 @@ var fetchWithServerCache = async ({
|
|
|
763
779
|
}
|
|
764
780
|
return response;
|
|
765
781
|
};
|
|
766
|
-
|
|
767
|
-
|
|
768
|
-
|
|
769
|
-
|
|
770
|
-
|
|
771
|
-
return q;
|
|
772
|
-
},
|
|
773
|
-
{}
|
|
774
|
-
);
|
|
775
|
-
}
|
|
776
|
-
async function weaverseLoader({
|
|
777
|
-
request,
|
|
778
|
-
context: { env, storefront, waitUntil },
|
|
779
|
-
context,
|
|
780
|
-
params
|
|
781
|
-
}, components) {
|
|
782
|
+
|
|
783
|
+
// src/loader.ts
|
|
784
|
+
async function weaverseLoader(args, components) {
|
|
785
|
+
let { request, context, params } = args;
|
|
786
|
+
let { env } = context;
|
|
782
787
|
let queries = getRequestQueries(request);
|
|
783
788
|
let projectId = env?.WEAVERSE_PROJECT_ID;
|
|
784
789
|
let weaverseHost = env?.WEAVERSE_HOST;
|
|
785
790
|
if (!projectId || !weaverseHost) {
|
|
786
|
-
console.
|
|
787
|
-
return
|
|
791
|
+
console.log("\u274C Missing `WEAVERSE_PROJECT_ID` or `WEAVERSE_HOST`!");
|
|
792
|
+
return null;
|
|
788
793
|
}
|
|
789
|
-
let
|
|
794
|
+
let configs = {
|
|
790
795
|
projectId,
|
|
791
796
|
weaverseHost,
|
|
792
797
|
...queries
|
|
793
798
|
};
|
|
794
799
|
try {
|
|
795
|
-
let
|
|
800
|
+
let page = await fetchWithServerCache({
|
|
796
801
|
url: `${weaverseHost}/api/public/project`,
|
|
797
802
|
options: {
|
|
798
803
|
method: "POST",
|
|
799
|
-
headers: {
|
|
800
|
-
"Content-Type": "application/json"
|
|
801
|
-
},
|
|
802
804
|
body: JSON.stringify({
|
|
803
805
|
projectId,
|
|
804
806
|
url: request.url
|
|
805
807
|
})
|
|
806
808
|
},
|
|
807
|
-
|
|
808
|
-
waitUntil
|
|
809
|
+
context
|
|
809
810
|
}).then((r2) => r2.json()).catch((err) => {
|
|
810
|
-
console.log(`\u274C Error fetching
|
|
811
|
+
console.log(`\u274C Error fetching project data: ${err?.toString()}`);
|
|
811
812
|
return {};
|
|
812
813
|
});
|
|
813
|
-
if (
|
|
814
|
-
let items =
|
|
815
|
-
|
|
814
|
+
if (page?.items) {
|
|
815
|
+
let items = page.items;
|
|
816
|
+
page.items = await Promise.all(
|
|
816
817
|
items.map(async (item) => {
|
|
817
818
|
let loader = components[item.type]?.loader;
|
|
818
|
-
if (loader) {
|
|
819
|
-
|
|
820
|
-
|
|
821
|
-
|
|
822
|
-
|
|
823
|
-
|
|
824
|
-
|
|
825
|
-
|
|
826
|
-
|
|
827
|
-
|
|
828
|
-
|
|
819
|
+
if (loader && typeof loader === "function") {
|
|
820
|
+
try {
|
|
821
|
+
return {
|
|
822
|
+
...item,
|
|
823
|
+
loaderData: await loader({
|
|
824
|
+
data: item,
|
|
825
|
+
context,
|
|
826
|
+
params,
|
|
827
|
+
request,
|
|
828
|
+
config: configs
|
|
829
|
+
})
|
|
830
|
+
};
|
|
831
|
+
} catch (err) {
|
|
832
|
+
console.log(`\u274C Loader run failed! Item: ${item}: ${err}`);
|
|
833
|
+
return item;
|
|
834
|
+
}
|
|
829
835
|
}
|
|
830
836
|
return item;
|
|
831
837
|
})
|
|
832
838
|
);
|
|
833
839
|
}
|
|
834
|
-
return {
|
|
835
|
-
pageData,
|
|
836
|
-
config,
|
|
837
|
-
components: {}
|
|
838
|
-
};
|
|
840
|
+
return { page, configs };
|
|
839
841
|
} catch (err) {
|
|
840
|
-
console.
|
|
841
|
-
return
|
|
842
|
+
console.log(`\u274C Error fetching Weaverse data: ${err?.toString()}`);
|
|
843
|
+
return null;
|
|
842
844
|
}
|
|
843
845
|
}
|
|
844
846
|
|
|
845
847
|
// src/index.tsx
|
|
846
|
-
var WeaverseHydrogenRoot = ({
|
|
847
|
-
components,
|
|
848
|
-
data
|
|
849
|
-
}) => {
|
|
848
|
+
var WeaverseHydrogenRoot = (props) => {
|
|
849
|
+
let { components, data } = props;
|
|
850
850
|
let weaverse = createWeaverseHydrogenContext(data, components);
|
|
851
851
|
useStudio(weaverse);
|
|
852
|
-
if (!weaverse?.data)
|
|
853
|
-
return /* @__PURE__ */ React.createElement("div", null, "
|
|
854
|
-
}
|
|
852
|
+
if (!weaverse?.data)
|
|
853
|
+
return /* @__PURE__ */ React.createElement("div", null, "No Weaverse data!");
|
|
855
854
|
return /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement(WeaverseRoot, { context: weaverse }), weaverse.isDesignMode ? null : /* @__PURE__ */ React.createElement(StitchesStyle, { weaverse }));
|
|
856
855
|
};
|
|
857
856
|
var StitchesStyle = memo(
|
|
@@ -873,8 +872,5 @@ var StitchesStyle = memo(
|
|
|
873
872
|
export {
|
|
874
873
|
WeaverseHydrogenRoot,
|
|
875
874
|
fetchWithServerCache,
|
|
876
|
-
getRequestQueries,
|
|
877
|
-
hashKey,
|
|
878
|
-
useStudio,
|
|
879
875
|
weaverseLoader
|
|
880
876
|
};
|
package/package.json
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
{
|
|
2
|
-
"version": "1.0.
|
|
2
|
+
"version": "1.0.40",
|
|
3
3
|
"license": "MIT",
|
|
4
4
|
"main": "dist/index.js",
|
|
5
5
|
"typings": "dist/index.d.ts",
|
|
@@ -33,7 +33,7 @@
|
|
|
33
33
|
"author": "Weaverse Team",
|
|
34
34
|
"dependencies": {
|
|
35
35
|
"@shopify/hydrogen": "2023.4.0",
|
|
36
|
-
"@weaverse/react": "1.0.
|
|
36
|
+
"@weaverse/react": "1.0.40"
|
|
37
37
|
},
|
|
38
38
|
"devDependencies": {
|
|
39
39
|
"@shopify/remix-oxygen": "^1.0.5"
|