@weaverse/hydrogen 1.0.38 → 1.0.39
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 +77 -79
- package/dist/index.mjs +77 -76
- 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,36 +815,25 @@ 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",
|
|
@@ -843,54 +845,53 @@ async function weaverseLoader({
|
|
|
843
845
|
url: request.url
|
|
844
846
|
})
|
|
845
847
|
},
|
|
846
|
-
|
|
847
|
-
waitUntil
|
|
848
|
+
context
|
|
848
849
|
}).then((r2) => r2.json()).catch((err) => {
|
|
849
|
-
console.log(`\u274C Error fetching
|
|
850
|
+
console.log(`\u274C Error fetching project data: ${err?.toString()}`);
|
|
850
851
|
return {};
|
|
851
852
|
});
|
|
852
|
-
if (
|
|
853
|
-
let items =
|
|
854
|
-
|
|
853
|
+
if (page?.items) {
|
|
854
|
+
let items = page.items;
|
|
855
|
+
page.items = await Promise.all(
|
|
855
856
|
items.map(async (item) => {
|
|
856
857
|
let loader = components[item.type]?.loader;
|
|
857
|
-
if (loader) {
|
|
858
|
-
|
|
859
|
-
|
|
860
|
-
|
|
861
|
-
|
|
862
|
-
|
|
863
|
-
|
|
864
|
-
|
|
865
|
-
|
|
866
|
-
|
|
867
|
-
|
|
858
|
+
if (loader && typeof loader === "function") {
|
|
859
|
+
try {
|
|
860
|
+
return {
|
|
861
|
+
...item,
|
|
862
|
+
loaderData: await loader({
|
|
863
|
+
data: item,
|
|
864
|
+
context,
|
|
865
|
+
params,
|
|
866
|
+
request,
|
|
867
|
+
config: configs
|
|
868
|
+
})
|
|
869
|
+
};
|
|
870
|
+
} catch (err) {
|
|
871
|
+
console.log(
|
|
872
|
+
`\u274C Loader run failed! Item: ${item}: ${err}`
|
|
873
|
+
);
|
|
874
|
+
return item;
|
|
875
|
+
}
|
|
868
876
|
}
|
|
869
877
|
return item;
|
|
870
878
|
})
|
|
871
879
|
);
|
|
872
880
|
}
|
|
873
|
-
return {
|
|
874
|
-
pageData,
|
|
875
|
-
config,
|
|
876
|
-
components: {}
|
|
877
|
-
};
|
|
881
|
+
return { page, configs };
|
|
878
882
|
} catch (err) {
|
|
879
|
-
console.
|
|
880
|
-
return
|
|
883
|
+
console.log(`\u274C Error fetching Weaverse data: ${err?.toString()}`);
|
|
884
|
+
return null;
|
|
881
885
|
}
|
|
882
886
|
}
|
|
883
887
|
|
|
884
888
|
// src/index.tsx
|
|
885
|
-
var WeaverseHydrogenRoot = ({
|
|
886
|
-
components,
|
|
887
|
-
data
|
|
888
|
-
}) => {
|
|
889
|
+
var WeaverseHydrogenRoot = (props) => {
|
|
890
|
+
let { components, data } = props;
|
|
889
891
|
let weaverse = createWeaverseHydrogenContext(data, components);
|
|
890
892
|
useStudio(weaverse);
|
|
891
|
-
if (!weaverse?.data)
|
|
892
|
-
return /* @__PURE__ */ import_react4.default.createElement("div", null, "
|
|
893
|
-
}
|
|
893
|
+
if (!weaverse?.data)
|
|
894
|
+
return /* @__PURE__ */ import_react4.default.createElement("div", null, "No Weaverse data!");
|
|
894
895
|
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
896
|
};
|
|
896
897
|
var StitchesStyle = (0, import_react4.memo)(
|
|
@@ -913,8 +914,5 @@ var StitchesStyle = (0, import_react4.memo)(
|
|
|
913
914
|
0 && (module.exports = {
|
|
914
915
|
WeaverseHydrogenRoot,
|
|
915
916
|
fetchWithServerCache,
|
|
916
|
-
getRequestQueries,
|
|
917
|
-
hashKey,
|
|
918
|
-
useStudio,
|
|
919
917
|
weaverseLoader
|
|
920
918
|
});
|
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,36 +779,25 @@ 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",
|
|
@@ -804,54 +809,53 @@ async function weaverseLoader({
|
|
|
804
809
|
url: request.url
|
|
805
810
|
})
|
|
806
811
|
},
|
|
807
|
-
|
|
808
|
-
waitUntil
|
|
812
|
+
context
|
|
809
813
|
}).then((r2) => r2.json()).catch((err) => {
|
|
810
|
-
console.log(`\u274C Error fetching
|
|
814
|
+
console.log(`\u274C Error fetching project data: ${err?.toString()}`);
|
|
811
815
|
return {};
|
|
812
816
|
});
|
|
813
|
-
if (
|
|
814
|
-
let items =
|
|
815
|
-
|
|
817
|
+
if (page?.items) {
|
|
818
|
+
let items = page.items;
|
|
819
|
+
page.items = await Promise.all(
|
|
816
820
|
items.map(async (item) => {
|
|
817
821
|
let loader = components[item.type]?.loader;
|
|
818
|
-
if (loader) {
|
|
819
|
-
|
|
820
|
-
|
|
821
|
-
|
|
822
|
-
|
|
823
|
-
|
|
824
|
-
|
|
825
|
-
|
|
826
|
-
|
|
827
|
-
|
|
828
|
-
|
|
822
|
+
if (loader && typeof loader === "function") {
|
|
823
|
+
try {
|
|
824
|
+
return {
|
|
825
|
+
...item,
|
|
826
|
+
loaderData: await loader({
|
|
827
|
+
data: item,
|
|
828
|
+
context,
|
|
829
|
+
params,
|
|
830
|
+
request,
|
|
831
|
+
config: configs
|
|
832
|
+
})
|
|
833
|
+
};
|
|
834
|
+
} catch (err) {
|
|
835
|
+
console.log(
|
|
836
|
+
`\u274C Loader run failed! Item: ${item}: ${err}`
|
|
837
|
+
);
|
|
838
|
+
return item;
|
|
839
|
+
}
|
|
829
840
|
}
|
|
830
841
|
return item;
|
|
831
842
|
})
|
|
832
843
|
);
|
|
833
844
|
}
|
|
834
|
-
return {
|
|
835
|
-
pageData,
|
|
836
|
-
config,
|
|
837
|
-
components: {}
|
|
838
|
-
};
|
|
845
|
+
return { page, configs };
|
|
839
846
|
} catch (err) {
|
|
840
|
-
console.
|
|
841
|
-
return
|
|
847
|
+
console.log(`\u274C Error fetching Weaverse data: ${err?.toString()}`);
|
|
848
|
+
return null;
|
|
842
849
|
}
|
|
843
850
|
}
|
|
844
851
|
|
|
845
852
|
// src/index.tsx
|
|
846
|
-
var WeaverseHydrogenRoot = ({
|
|
847
|
-
components,
|
|
848
|
-
data
|
|
849
|
-
}) => {
|
|
853
|
+
var WeaverseHydrogenRoot = (props) => {
|
|
854
|
+
let { components, data } = props;
|
|
850
855
|
let weaverse = createWeaverseHydrogenContext(data, components);
|
|
851
856
|
useStudio(weaverse);
|
|
852
|
-
if (!weaverse?.data)
|
|
853
|
-
return /* @__PURE__ */ React.createElement("div", null, "
|
|
854
|
-
}
|
|
857
|
+
if (!weaverse?.data)
|
|
858
|
+
return /* @__PURE__ */ React.createElement("div", null, "No Weaverse data!");
|
|
855
859
|
return /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement(WeaverseRoot, { context: weaverse }), weaverse.isDesignMode ? null : /* @__PURE__ */ React.createElement(StitchesStyle, { weaverse }));
|
|
856
860
|
};
|
|
857
861
|
var StitchesStyle = memo(
|
|
@@ -873,8 +877,5 @@ var StitchesStyle = memo(
|
|
|
873
877
|
export {
|
|
874
878
|
WeaverseHydrogenRoot,
|
|
875
879
|
fetchWithServerCache,
|
|
876
|
-
getRequestQueries,
|
|
877
|
-
hashKey,
|
|
878
|
-
useStudio,
|
|
879
880
|
weaverseLoader
|
|
880
881
|
};
|
package/package.json
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
{
|
|
2
|
-
"version": "1.0.
|
|
2
|
+
"version": "1.0.39",
|
|
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.39"
|
|
37
37
|
},
|
|
38
38
|
"devDependencies": {
|
|
39
39
|
"@shopify/remix-oxygen": "^1.0.5"
|