@weaverse/hydrogen 2.1.1 → 2.2.0

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.mts CHANGED
@@ -8,7 +8,7 @@ import React, { ForwardRefExoticComponent } from 'react';
8
8
  import * as _shopify_hydrogen_react_storefront_api_types from '@shopify/hydrogen-react/storefront-api-types';
9
9
 
10
10
  declare class ThemeSettingsStore {
11
- settings: HydrogenThemeSettings | null;
11
+ static settings: HydrogenThemeSettings | null;
12
12
  listeners: (() => void)[];
13
13
  countries?: Localizations;
14
14
  schema?: HydrogenThemeSchema;
@@ -43,14 +43,16 @@ declare class WeaverseClient {
43
43
  API: string;
44
44
  clientVersion: string;
45
45
  basePageConfigs: Omit<WeaverseProjectConfigs, 'requestInfo'>;
46
- basePageRequestBody: Omit<FetchProjectRequestBody, 'url'>;
46
+ basePageRequestBody: Omit<FetchProjectRequestBody, 'url' | 'countries'>;
47
47
  configs: WeaverseProjectConfigs;
48
+ withCache: ReturnType<typeof createWithCache>;
48
49
  request: WeaverseClientArgs['request'];
49
50
  storefront: WeaverseClientArgs['storefront'];
50
51
  components: WeaverseClientArgs['components'];
51
52
  themeSchema: WeaverseClientArgs['themeSchema'];
52
53
  env: WeaverseClientArgs['env'];
53
- withCache: WeaverseClientArgs['withCache'];
54
+ cache: WeaverseClientArgs['cache'];
55
+ waitUntil: WeaverseClientArgs['waitUntil'];
54
56
  countries?: WeaverseClientArgs['countries'];
55
57
  constructor(args: WeaverseClientArgs);
56
58
  fetchWithCache: <T>(url: string, options: FetchWithCacheOptions) => Promise<T>;
@@ -272,7 +274,8 @@ type HydrogenThemeEnv = {
272
274
  };
273
275
  type WeaverseClientArgs = {
274
276
  request: Request;
275
- withCache: ReturnType<typeof createWithCache>;
277
+ cache: Cache;
278
+ waitUntil: ExecutionContext['waitUntil'];
276
279
  env: HydrogenThemeEnv;
277
280
  storefront: Storefront<I18nLocale>;
278
281
  components: HydrogenComponent[];
@@ -298,7 +301,7 @@ declare global {
298
301
  }
299
302
  }
300
303
 
301
- declare function WeaverseHydrogenRoot({ errorComponent: ErrorComponent, components, }: WeaverseHydrogenRootProps): React.JSX.Element;
304
+ declare let WeaverseHydrogenRoot: React.MemoExoticComponent<({ errorComponent: ErrorComponent, components, }: WeaverseHydrogenRootProps) => React.JSX.Element>;
302
305
  declare function withWeaverse(Component: React.ComponentType): (props: React.JSX.IntrinsicAttributes) => React.JSX.Element;
303
306
 
304
307
  declare function getRequestQueries<T = Record<string, string | boolean>>(request: Request): T;
@@ -321,7 +324,7 @@ declare class WeaverseHydrogen extends Weaverse {
321
324
  }
322
325
  declare class WeaverseHydrogenItem extends WeaverseItemStore {
323
326
  weaverse: WeaverseHydrogen;
324
- constructor(intialData: HydrogenComponentData, weaverse: WeaverseHydrogen);
327
+ constructor(initialData: HydrogenComponentData, weaverse: WeaverseHydrogen);
325
328
  get Element(): HydrogenElement;
326
329
  get data(): HydrogenComponentData;
327
330
  set data(update: HydrogenComponentData);
package/dist/index.d.ts CHANGED
@@ -8,7 +8,7 @@ import React, { ForwardRefExoticComponent } from 'react';
8
8
  import * as _shopify_hydrogen_react_storefront_api_types from '@shopify/hydrogen-react/storefront-api-types';
9
9
 
10
10
  declare class ThemeSettingsStore {
11
- settings: HydrogenThemeSettings | null;
11
+ static settings: HydrogenThemeSettings | null;
12
12
  listeners: (() => void)[];
13
13
  countries?: Localizations;
14
14
  schema?: HydrogenThemeSchema;
@@ -43,14 +43,16 @@ declare class WeaverseClient {
43
43
  API: string;
44
44
  clientVersion: string;
45
45
  basePageConfigs: Omit<WeaverseProjectConfigs, 'requestInfo'>;
46
- basePageRequestBody: Omit<FetchProjectRequestBody, 'url'>;
46
+ basePageRequestBody: Omit<FetchProjectRequestBody, 'url' | 'countries'>;
47
47
  configs: WeaverseProjectConfigs;
48
+ withCache: ReturnType<typeof createWithCache>;
48
49
  request: WeaverseClientArgs['request'];
49
50
  storefront: WeaverseClientArgs['storefront'];
50
51
  components: WeaverseClientArgs['components'];
51
52
  themeSchema: WeaverseClientArgs['themeSchema'];
52
53
  env: WeaverseClientArgs['env'];
53
- withCache: WeaverseClientArgs['withCache'];
54
+ cache: WeaverseClientArgs['cache'];
55
+ waitUntil: WeaverseClientArgs['waitUntil'];
54
56
  countries?: WeaverseClientArgs['countries'];
55
57
  constructor(args: WeaverseClientArgs);
56
58
  fetchWithCache: <T>(url: string, options: FetchWithCacheOptions) => Promise<T>;
@@ -272,7 +274,8 @@ type HydrogenThemeEnv = {
272
274
  };
273
275
  type WeaverseClientArgs = {
274
276
  request: Request;
275
- withCache: ReturnType<typeof createWithCache>;
277
+ cache: Cache;
278
+ waitUntil: ExecutionContext['waitUntil'];
276
279
  env: HydrogenThemeEnv;
277
280
  storefront: Storefront<I18nLocale>;
278
281
  components: HydrogenComponent[];
@@ -298,7 +301,7 @@ declare global {
298
301
  }
299
302
  }
300
303
 
301
- declare function WeaverseHydrogenRoot({ errorComponent: ErrorComponent, components, }: WeaverseHydrogenRootProps): React.JSX.Element;
304
+ declare let WeaverseHydrogenRoot: React.MemoExoticComponent<({ errorComponent: ErrorComponent, components, }: WeaverseHydrogenRootProps) => React.JSX.Element>;
302
305
  declare function withWeaverse(Component: React.ComponentType): (props: React.JSX.IntrinsicAttributes) => React.JSX.Element;
303
306
 
304
307
  declare function getRequestQueries<T = Record<string, string | boolean>>(request: Request): T;
@@ -321,7 +324,7 @@ declare class WeaverseHydrogen extends Weaverse {
321
324
  }
322
325
  declare class WeaverseHydrogenItem extends WeaverseItemStore {
323
326
  weaverse: WeaverseHydrogen;
324
- constructor(intialData: HydrogenComponentData, weaverse: WeaverseHydrogen);
327
+ constructor(initialData: HydrogenComponentData, weaverse: WeaverseHydrogen);
325
328
  get Element(): HydrogenElement;
326
329
  get data(): HydrogenComponentData;
327
330
  set data(update: HydrogenComponentData);
package/dist/index.js CHANGED
@@ -58,13 +58,14 @@ function createCachedWeaverseInstance(params, components) {
58
58
  window.__weaverses = window.__weaverses || [];
59
59
  let weaverse = window.__weaverses.find((w) => {
60
60
  let { pathname, search } = w.requestInfo;
61
- let { __cachedId } = w.data;
62
- return pathname === params.requestInfo.pathname && search === params.requestInfo.search && __cachedId === params.data.__cachedId;
61
+ return pathname === params.requestInfo.pathname;
63
62
  });
64
63
  if (!weaverse) {
65
64
  weaverse = new WeaverseHydrogen(params, components);
66
65
  window.__weaverses.push(weaverse);
67
- console.log("\u{1F4BF} Weaverse", weaverse);
66
+ } else if (weaverse.isDesignMode) {
67
+ weaverse.requestInfo = params.requestInfo;
68
+ weaverse.setProjectData(params.data);
68
69
  }
69
70
  return weaverse;
70
71
  }
@@ -72,7 +73,7 @@ function createCachedWeaverseInstance(params, components) {
72
73
  }
73
74
  function createWeaverseInstance(weaverseData, components) {
74
75
  let { page, configs, project, pageAssignment } = weaverseData || {};
75
- let weaverse = createCachedWeaverseInstance(
76
+ return createCachedWeaverseInstance(
76
77
  {
77
78
  ...configs,
78
79
  data: page || {},
@@ -81,7 +82,6 @@ function createWeaverseInstance(weaverseData, components) {
81
82
  },
82
83
  components
83
84
  );
84
- return weaverse;
85
85
  }
86
86
  var ThemeProvider = (0, import_react2.createContext)(null);
87
87
  ThemeProvider.displayName = "WeaverseThemeProvider";
@@ -126,26 +126,36 @@ function useStudio(weaverse) {
126
126
  (0, import_react5.loadScript)(studioSrc);
127
127
  }
128
128
  }
129
- }, [weaverse]);
129
+ }, [weaverse.requestInfo]);
130
130
  }
131
131
 
132
132
  // src/hooks/use-theme-settings.ts
133
133
  var import_react7 = require("react");
134
- var ThemeSettingsStore = class {
135
- settings = null;
134
+ var ThemeSettingsStore = class _ThemeSettingsStore {
135
+ static settings = null;
136
136
  listeners = [];
137
137
  countries;
138
138
  schema;
139
139
  publicEnv;
140
140
  constructor(data) {
141
141
  let { theme, countries, schema, publicEnv } = data || {};
142
- this.settings = theme || null;
142
+ if (!_ThemeSettingsStore.settings) {
143
+ _ThemeSettingsStore.settings = theme || null;
144
+ } else {
145
+ _ThemeSettingsStore.settings = {
146
+ ...theme,
147
+ ..._ThemeSettingsStore.settings
148
+ };
149
+ }
143
150
  this.countries = countries;
144
151
  this.schema = schema;
145
152
  this.publicEnv = publicEnv;
146
153
  }
147
154
  updateThemeSettings = (newSettings) => {
148
- this.settings = { ...this.settings, ...newSettings };
155
+ _ThemeSettingsStore.settings = {
156
+ ..._ThemeSettingsStore.settings,
157
+ ...newSettings
158
+ };
149
159
  this.emitChange();
150
160
  };
151
161
  subscribe = (listener) => {
@@ -155,10 +165,10 @@ var ThemeSettingsStore = class {
155
165
  };
156
166
  };
157
167
  getSnapshot = () => {
158
- return this.settings;
168
+ return _ThemeSettingsStore.settings;
159
169
  };
160
170
  getServerSnapshot = () => {
161
- return this.settings;
171
+ return _ThemeSettingsStore.settings;
162
172
  };
163
173
  emitChange = () => {
164
174
  for (let listener of this.listeners) {
@@ -177,27 +187,29 @@ function useThemeSettings() {
177
187
  }
178
188
 
179
189
  // src/WeaverseHydrogenRoot.tsx
180
- function WeaverseHydrogenRoot({
181
- errorComponent: ErrorComponent = FallbackError,
182
- components
183
- }) {
184
- let loaderData = (0, import_react8.useLoaderData)();
185
- let data = loaderData?.weaverseData;
186
- if (data) {
187
- if (data instanceof Promise) {
188
- return /* @__PURE__ */ import_react10.default.createElement(import_react_error_boundary.ErrorBoundary, { fallbackRender: ErrorComponent }, /* @__PURE__ */ import_react10.default.createElement(import_react10.Suspense, null, /* @__PURE__ */ import_react10.default.createElement(import_react8.Await, { resolve: data }, (resolvedData) => {
189
- return /* @__PURE__ */ import_react10.default.createElement(RenderRoot, { data: resolvedData, components });
190
- })));
190
+ var WeaverseHydrogenRoot = (0, import_react10.memo)(
191
+ ({
192
+ errorComponent: ErrorComponent = FallbackError,
193
+ components
194
+ }) => {
195
+ let loaderData = (0, import_react8.useLoaderData)();
196
+ let data = loaderData?.weaverseData;
197
+ if (data) {
198
+ if (data instanceof Promise) {
199
+ return /* @__PURE__ */ import_react10.default.createElement(import_react_error_boundary.ErrorBoundary, { fallbackRender: ErrorComponent }, /* @__PURE__ */ import_react10.default.createElement(import_react10.Suspense, null, /* @__PURE__ */ import_react10.default.createElement(import_react8.Await, { resolve: data }, (resolvedData) => {
200
+ return /* @__PURE__ */ import_react10.default.createElement(RenderRoot, { data: resolvedData, components });
201
+ })));
202
+ }
203
+ return /* @__PURE__ */ import_react10.default.createElement(RenderRoot, { data, components });
191
204
  }
192
- return /* @__PURE__ */ import_react10.default.createElement(RenderRoot, { data, components });
205
+ return /* @__PURE__ */ import_react10.default.createElement(
206
+ ErrorComponent,
207
+ {
208
+ error: { message: "No Weaverse data return from route loader!" }
209
+ }
210
+ );
193
211
  }
194
- return /* @__PURE__ */ import_react10.default.createElement(
195
- ErrorComponent,
196
- {
197
- error: { message: "No Weaverse data return from route loader!" }
198
- }
199
- );
200
- }
212
+ );
201
213
  function RenderRoot(props) {
202
214
  let { data, components } = props;
203
215
  let weaverse = createWeaverseInstance(data, components);
@@ -215,9 +227,12 @@ function FallbackError({ error }) {
215
227
  return /* @__PURE__ */ import_react10.default.createElement("div", null, error?.message || "An unexpected error occurred");
216
228
  }
217
229
 
230
+ // src/weaverse-client.ts
231
+ var import_hydrogen = require("@shopify/hydrogen");
232
+
218
233
  // package.json
219
234
  var package_default = {
220
- version: "2.1.1",
235
+ version: "2.2.0",
221
236
  license: "MIT",
222
237
  main: "dist/index.js",
223
238
  typings: "dist/index.d.ts",
@@ -251,12 +266,12 @@ var package_default = {
251
266
  author: "Weaverse Team",
252
267
  dependencies: {
253
268
  "@remix-run/react": "1.19.1",
254
- "@shopify/hydrogen": "2023.7.9",
255
- "@weaverse/react": "2.1.1",
269
+ "@shopify/hydrogen": "2023.7.10",
270
+ "@weaverse/react": "2.2.0",
256
271
  "react-error-boundary": "^4.0.11"
257
272
  },
258
273
  devDependencies: {
259
- "@shopify/remix-oxygen": "^1.1.4"
274
+ "@shopify/remix-oxygen": "^1.1.6"
260
275
  }
261
276
  };
262
277
 
@@ -299,12 +314,14 @@ var WeaverseClient = class {
299
314
  basePageConfigs;
300
315
  basePageRequestBody;
301
316
  configs;
317
+ withCache;
302
318
  request;
303
319
  storefront;
304
320
  components;
305
321
  themeSchema;
306
322
  env;
307
- withCache;
323
+ cache;
324
+ waitUntil;
308
325
  countries;
309
326
  constructor(args) {
310
327
  let {
@@ -312,7 +329,8 @@ var WeaverseClient = class {
312
329
  storefront,
313
330
  components,
314
331
  countries,
315
- withCache,
332
+ cache,
333
+ waitUntil,
316
334
  themeSchema,
317
335
  request
318
336
  } = args;
@@ -321,8 +339,10 @@ var WeaverseClient = class {
321
339
  this.components = components;
322
340
  this.themeSchema = themeSchema;
323
341
  this.env = env;
324
- this.withCache = withCache;
342
+ this.cache = cache;
343
+ this.waitUntil = waitUntil;
325
344
  this.countries = countries;
345
+ this.withCache = (0, import_hydrogen.createWithCache)({ cache, waitUntil });
326
346
  this.configs = getWeaverseConfigs(request, env);
327
347
  this.basePageConfigs = {
328
348
  projectId: this.configs.projectId,
@@ -331,7 +351,6 @@ var WeaverseClient = class {
331
351
  isDesignMode: this.configs.isDesignMode
332
352
  };
333
353
  this.basePageRequestBody = {
334
- countries,
335
354
  isDesignMode: this.configs.isDesignMode,
336
355
  i18n: storefront.i18n,
337
356
  projectId: this.configs.projectId
@@ -354,14 +373,21 @@ var WeaverseClient = class {
354
373
  loadThemeSettings = async (strategy) => {
355
374
  try {
356
375
  let { API, configs } = this;
357
- let { weaverseHost, projectId } = configs;
376
+ let { weaverseHost, projectId, isDesignMode } = configs;
358
377
  if (!projectId) {
359
378
  throw new Error("Missing Weaverse projectId!");
360
379
  }
361
- let res = await this.fetchWithCache(
362
- `${weaverseHost}/${API}/${projectId}/configs`,
363
- { method: "POST", strategy }
364
- );
380
+ let res;
381
+ if (isDesignMode) {
382
+ res = await fetch(`${weaverseHost}/${API}/${projectId}/configs`, {
383
+ method: "POST"
384
+ });
385
+ } else {
386
+ res = await this.fetchWithCache(
387
+ `${weaverseHost}/${API}/${projectId}/configs`,
388
+ { method: "POST", strategy }
389
+ );
390
+ }
365
391
  let data = res || {};
366
392
  if (this.configs.isDesignMode) {
367
393
  data = {
@@ -462,9 +488,9 @@ var WeaverseClient = class {
462
488
  };
463
489
 
464
490
  // src/wrappers.ts
465
- var import_hydrogen = require("@shopify/hydrogen");
491
+ var import_hydrogen2 = require("@shopify/hydrogen");
466
492
  function getSelectedProductOptions(request) {
467
- let options = (0, import_hydrogen.getSelectedProductOptions)(request);
493
+ let options = (0, import_hydrogen2.getSelectedProductOptions)(request);
468
494
  return options.filter(
469
495
  ({ name }) => name !== "isDesignMode" && !name.startsWith("weaverse")
470
496
  );
@@ -499,9 +525,9 @@ var WeaverseHydrogen = class extends import_react11.Weaverse {
499
525
  }
500
526
  };
501
527
  var WeaverseHydrogenItem = class extends import_react11.WeaverseItemStore {
502
- constructor(intialData, weaverse) {
503
- super(intialData, weaverse);
504
- let { data, ...rest } = intialData;
528
+ constructor(initialData, weaverse) {
529
+ super(initialData, weaverse);
530
+ let { data, ...rest } = initialData;
505
531
  this._store = { ...data, ...rest };
506
532
  }
507
533
  get Element() {
package/dist/index.mjs CHANGED
@@ -7,7 +7,7 @@ import {
7
7
  // src/WeaverseHydrogenRoot.tsx
8
8
  import { Await, useLoaderData } from "@remix-run/react";
9
9
  import { WeaverseRoot } from "@weaverse/react";
10
- import React, { Suspense } from "react";
10
+ import React, { memo, Suspense } from "react";
11
11
  import { ErrorBoundary } from "react-error-boundary";
12
12
 
13
13
  // src/context.ts
@@ -18,13 +18,14 @@ function createCachedWeaverseInstance(params, components) {
18
18
  window.__weaverses = window.__weaverses || [];
19
19
  let weaverse = window.__weaverses.find((w) => {
20
20
  let { pathname, search } = w.requestInfo;
21
- let { __cachedId } = w.data;
22
- return pathname === params.requestInfo.pathname && search === params.requestInfo.search && __cachedId === params.data.__cachedId;
21
+ return pathname === params.requestInfo.pathname;
23
22
  });
24
23
  if (!weaverse) {
25
24
  weaverse = new WeaverseHydrogen(params, components);
26
25
  window.__weaverses.push(weaverse);
27
- console.log("\u{1F4BF} Weaverse", weaverse);
26
+ } else if (weaverse.isDesignMode) {
27
+ weaverse.requestInfo = params.requestInfo;
28
+ weaverse.setProjectData(params.data);
28
29
  }
29
30
  return weaverse;
30
31
  }
@@ -32,7 +33,7 @@ function createCachedWeaverseInstance(params, components) {
32
33
  }
33
34
  function createWeaverseInstance(weaverseData, components) {
34
35
  let { page, configs, project, pageAssignment } = weaverseData || {};
35
- let weaverse = createCachedWeaverseInstance(
36
+ return createCachedWeaverseInstance(
36
37
  {
37
38
  ...configs,
38
39
  data: page || {},
@@ -41,7 +42,6 @@ function createWeaverseInstance(weaverseData, components) {
41
42
  },
42
43
  components
43
44
  );
44
- return weaverse;
45
45
  }
46
46
  var ThemeProvider = createContext(null);
47
47
  ThemeProvider.displayName = "WeaverseThemeProvider";
@@ -86,26 +86,36 @@ function useStudio(weaverse) {
86
86
  loadScript(studioSrc);
87
87
  }
88
88
  }
89
- }, [weaverse]);
89
+ }, [weaverse.requestInfo]);
90
90
  }
91
91
 
92
92
  // src/hooks/use-theme-settings.ts
93
93
  import { useSyncExternalStore } from "react";
94
- var ThemeSettingsStore = class {
95
- settings = null;
94
+ var ThemeSettingsStore = class _ThemeSettingsStore {
95
+ static settings = null;
96
96
  listeners = [];
97
97
  countries;
98
98
  schema;
99
99
  publicEnv;
100
100
  constructor(data) {
101
101
  let { theme, countries, schema, publicEnv } = data || {};
102
- this.settings = theme || null;
102
+ if (!_ThemeSettingsStore.settings) {
103
+ _ThemeSettingsStore.settings = theme || null;
104
+ } else {
105
+ _ThemeSettingsStore.settings = {
106
+ ...theme,
107
+ ..._ThemeSettingsStore.settings
108
+ };
109
+ }
103
110
  this.countries = countries;
104
111
  this.schema = schema;
105
112
  this.publicEnv = publicEnv;
106
113
  }
107
114
  updateThemeSettings = (newSettings) => {
108
- this.settings = { ...this.settings, ...newSettings };
115
+ _ThemeSettingsStore.settings = {
116
+ ..._ThemeSettingsStore.settings,
117
+ ...newSettings
118
+ };
109
119
  this.emitChange();
110
120
  };
111
121
  subscribe = (listener) => {
@@ -115,10 +125,10 @@ var ThemeSettingsStore = class {
115
125
  };
116
126
  };
117
127
  getSnapshot = () => {
118
- return this.settings;
128
+ return _ThemeSettingsStore.settings;
119
129
  };
120
130
  getServerSnapshot = () => {
121
- return this.settings;
131
+ return _ThemeSettingsStore.settings;
122
132
  };
123
133
  emitChange = () => {
124
134
  for (let listener of this.listeners) {
@@ -137,27 +147,29 @@ function useThemeSettings() {
137
147
  }
138
148
 
139
149
  // src/WeaverseHydrogenRoot.tsx
140
- function WeaverseHydrogenRoot({
141
- errorComponent: ErrorComponent = FallbackError,
142
- components
143
- }) {
144
- let loaderData = useLoaderData();
145
- let data = loaderData?.weaverseData;
146
- if (data) {
147
- if (data instanceof Promise) {
148
- return /* @__PURE__ */ React.createElement(ErrorBoundary, { fallbackRender: ErrorComponent }, /* @__PURE__ */ React.createElement(Suspense, null, /* @__PURE__ */ React.createElement(Await, { resolve: data }, (resolvedData) => {
149
- return /* @__PURE__ */ React.createElement(RenderRoot, { data: resolvedData, components });
150
- })));
150
+ var WeaverseHydrogenRoot = memo(
151
+ ({
152
+ errorComponent: ErrorComponent = FallbackError,
153
+ components
154
+ }) => {
155
+ let loaderData = useLoaderData();
156
+ let data = loaderData?.weaverseData;
157
+ if (data) {
158
+ if (data instanceof Promise) {
159
+ return /* @__PURE__ */ React.createElement(ErrorBoundary, { fallbackRender: ErrorComponent }, /* @__PURE__ */ React.createElement(Suspense, null, /* @__PURE__ */ React.createElement(Await, { resolve: data }, (resolvedData) => {
160
+ return /* @__PURE__ */ React.createElement(RenderRoot, { data: resolvedData, components });
161
+ })));
162
+ }
163
+ return /* @__PURE__ */ React.createElement(RenderRoot, { data, components });
151
164
  }
152
- return /* @__PURE__ */ React.createElement(RenderRoot, { data, components });
165
+ return /* @__PURE__ */ React.createElement(
166
+ ErrorComponent,
167
+ {
168
+ error: { message: "No Weaverse data return from route loader!" }
169
+ }
170
+ );
153
171
  }
154
- return /* @__PURE__ */ React.createElement(
155
- ErrorComponent,
156
- {
157
- error: { message: "No Weaverse data return from route loader!" }
158
- }
159
- );
160
- }
172
+ );
161
173
  function RenderRoot(props) {
162
174
  let { data, components } = props;
163
175
  let weaverse = createWeaverseInstance(data, components);
@@ -175,9 +187,12 @@ function FallbackError({ error }) {
175
187
  return /* @__PURE__ */ React.createElement("div", null, error?.message || "An unexpected error occurred");
176
188
  }
177
189
 
190
+ // src/weaverse-client.ts
191
+ import { createWithCache } from "@shopify/hydrogen";
192
+
178
193
  // package.json
179
194
  var package_default = {
180
- version: "2.1.1",
195
+ version: "2.2.0",
181
196
  license: "MIT",
182
197
  main: "dist/index.js",
183
198
  typings: "dist/index.d.ts",
@@ -211,12 +226,12 @@ var package_default = {
211
226
  author: "Weaverse Team",
212
227
  dependencies: {
213
228
  "@remix-run/react": "1.19.1",
214
- "@shopify/hydrogen": "2023.7.9",
215
- "@weaverse/react": "2.1.1",
229
+ "@shopify/hydrogen": "2023.7.10",
230
+ "@weaverse/react": "2.2.0",
216
231
  "react-error-boundary": "^4.0.11"
217
232
  },
218
233
  devDependencies: {
219
- "@shopify/remix-oxygen": "^1.1.4"
234
+ "@shopify/remix-oxygen": "^1.1.6"
220
235
  }
221
236
  };
222
237
 
@@ -259,12 +274,14 @@ var WeaverseClient = class {
259
274
  basePageConfigs;
260
275
  basePageRequestBody;
261
276
  configs;
277
+ withCache;
262
278
  request;
263
279
  storefront;
264
280
  components;
265
281
  themeSchema;
266
282
  env;
267
- withCache;
283
+ cache;
284
+ waitUntil;
268
285
  countries;
269
286
  constructor(args) {
270
287
  let {
@@ -272,7 +289,8 @@ var WeaverseClient = class {
272
289
  storefront,
273
290
  components,
274
291
  countries,
275
- withCache,
292
+ cache,
293
+ waitUntil,
276
294
  themeSchema,
277
295
  request
278
296
  } = args;
@@ -281,8 +299,10 @@ var WeaverseClient = class {
281
299
  this.components = components;
282
300
  this.themeSchema = themeSchema;
283
301
  this.env = env;
284
- this.withCache = withCache;
302
+ this.cache = cache;
303
+ this.waitUntil = waitUntil;
285
304
  this.countries = countries;
305
+ this.withCache = createWithCache({ cache, waitUntil });
286
306
  this.configs = getWeaverseConfigs(request, env);
287
307
  this.basePageConfigs = {
288
308
  projectId: this.configs.projectId,
@@ -291,7 +311,6 @@ var WeaverseClient = class {
291
311
  isDesignMode: this.configs.isDesignMode
292
312
  };
293
313
  this.basePageRequestBody = {
294
- countries,
295
314
  isDesignMode: this.configs.isDesignMode,
296
315
  i18n: storefront.i18n,
297
316
  projectId: this.configs.projectId
@@ -314,14 +333,21 @@ var WeaverseClient = class {
314
333
  loadThemeSettings = async (strategy) => {
315
334
  try {
316
335
  let { API, configs } = this;
317
- let { weaverseHost, projectId } = configs;
336
+ let { weaverseHost, projectId, isDesignMode } = configs;
318
337
  if (!projectId) {
319
338
  throw new Error("Missing Weaverse projectId!");
320
339
  }
321
- let res = await this.fetchWithCache(
322
- `${weaverseHost}/${API}/${projectId}/configs`,
323
- { method: "POST", strategy }
324
- );
340
+ let res;
341
+ if (isDesignMode) {
342
+ res = await fetch(`${weaverseHost}/${API}/${projectId}/configs`, {
343
+ method: "POST"
344
+ });
345
+ } else {
346
+ res = await this.fetchWithCache(
347
+ `${weaverseHost}/${API}/${projectId}/configs`,
348
+ { method: "POST", strategy }
349
+ );
350
+ }
325
351
  let data = res || {};
326
352
  if (this.configs.isDesignMode) {
327
353
  data = {
@@ -459,9 +485,9 @@ var WeaverseHydrogen = class extends Weaverse {
459
485
  }
460
486
  };
461
487
  var WeaverseHydrogenItem = class extends WeaverseItemStore {
462
- constructor(intialData, weaverse) {
463
- super(intialData, weaverse);
464
- let { data, ...rest } = intialData;
488
+ constructor(initialData, weaverse) {
489
+ super(initialData, weaverse);
490
+ let { data, ...rest } = initialData;
465
491
  this._store = { ...data, ...rest };
466
492
  }
467
493
  get Element() {
package/package.json CHANGED
@@ -1,5 +1,5 @@
1
1
  {
2
- "version" : "2.1.1",
2
+ "version" : "2.2.0",
3
3
  "license" : "MIT",
4
4
  "main" : "dist/index.js",
5
5
  "typings" : "dist/index.d.ts",
@@ -33,11 +33,11 @@
33
33
  "author" : "Weaverse Team",
34
34
  "dependencies" : {
35
35
  "@remix-run/react" : "1.19.1",
36
- "@shopify/hydrogen" : "2023.7.9",
37
- "@weaverse/react" : "2.1.1",
36
+ "@shopify/hydrogen" : "2023.7.10",
37
+ "@weaverse/react" : "2.2.0",
38
38
  "react-error-boundary" : "^4.0.11"
39
39
  },
40
40
  "devDependencies" : {
41
- "@shopify/remix-oxygen" : "^1.1.4"
41
+ "@shopify/remix-oxygen" : "^1.1.6"
42
42
  }
43
43
  }