@weaverse/hydrogen 2.6.4-pre.1 → 2.7.1-pre.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
@@ -56,8 +56,6 @@ declare class WeaverseClient {
56
56
  countries?: WeaverseClientArgs['countries'];
57
57
  constructor(args: WeaverseClientArgs);
58
58
  fetchWithCache: <T>(url: string, options?: FetchWithCacheOptions) => Promise<T>;
59
- incrementCacheHits: () => Promise<string>;
60
- resetCacheHits: () => Promise<void>;
61
59
  loadThemeSettings: (strategy?: AllCacheOptions) => Promise<any>;
62
60
  loadPage: (params?: LoadPageParams) => Promise<WeaverseLoaderData | null>;
63
61
  execComponentLoader: (item: HydrogenComponentData) => Promise<HydrogenComponentData>;
package/dist/index.d.ts CHANGED
@@ -56,8 +56,6 @@ declare class WeaverseClient {
56
56
  countries?: WeaverseClientArgs['countries'];
57
57
  constructor(args: WeaverseClientArgs);
58
58
  fetchWithCache: <T>(url: string, options?: FetchWithCacheOptions) => Promise<T>;
59
- incrementCacheHits: () => Promise<string>;
60
- resetCacheHits: () => Promise<void>;
61
59
  loadThemeSettings: (strategy?: AllCacheOptions) => Promise<any>;
62
60
  loadPage: (params?: LoadPageParams) => Promise<WeaverseLoaderData | null>;
63
61
  execComponentLoader: (item: HydrogenComponentData) => Promise<HydrogenComponentData>;
package/dist/index.js CHANGED
@@ -111,51 +111,16 @@ var ThemeProvider = (0, import_react3.createContext)(null);
111
111
  ThemeProvider.displayName = "WeaverseThemeProvider";
112
112
 
113
113
  // src/hooks/use-studio.ts
114
- var import_react5 = require("@remix-run/react");
115
- var import_react6 = require("@weaverse/react");
116
- var import_react7 = require("react");
114
+ var import_react7 = require("@remix-run/react");
115
+ var import_react8 = require("@weaverse/react");
116
+ var import_react9 = require("react");
117
117
 
118
118
  // src/hooks/use-theme-context.ts
119
- var import_react4 = require("react");
120
- function useThemeContext() {
121
- let themeContext = (0, import_react4.useContext)(ThemeProvider);
122
- if (!themeContext) {
123
- throw new Error(
124
- `useThemeContext must be used within a ThemeProvider. Make sure to wrap your app in the withWeaverse HoC.`
125
- );
126
- }
127
- return themeContext;
128
- }
129
-
130
- // src/hooks/use-studio.ts
131
- function useStudio(weaverse) {
132
- let { revalidate } = (0, import_react5.useRevalidator)();
133
- let navigate = (0, import_react5.useNavigate)();
134
- let themeSettingsStore = useThemeContext();
135
- let { isDesignMode, weaverseHost, weaverseVersion } = weaverse;
136
- let isStudio = import_react6.isIframe && isDesignMode && weaverseHost && weaverseVersion;
137
- (0, import_react7.useEffect)(() => {
138
- if (isStudio) {
139
- weaverse.internal = {
140
- ...weaverse.internal,
141
- navigate,
142
- revalidate,
143
- themeSettingsStore
144
- };
145
- window.__weaverse = weaverse;
146
- if (window.weaverseStudio) {
147
- window.weaverseStudio.init(weaverse);
148
- } else {
149
- let studioSrc = `${weaverseHost}/static/studio/hydrogen/index.js?v=${weaverseVersion}`;
150
- (0, import_react6.loadScript)(studioSrc);
151
- }
152
- }
153
- }, [weaverse.requestInfo]);
154
- }
119
+ var import_react6 = require("react");
155
120
 
156
121
  // src/hooks/use-theme-settings.ts
157
- var import_react8 = require("react");
158
- var import_react9 = require("@weaverse/react");
122
+ var import_react4 = require("react");
123
+ var import_react5 = require("@weaverse/react");
159
124
  var ThemeSettingsStore = class _ThemeSettingsStore {
160
125
  static settings = null;
161
126
  listeners = [];
@@ -164,7 +129,7 @@ var ThemeSettingsStore = class _ThemeSettingsStore {
164
129
  publicEnv;
165
130
  constructor(data) {
166
131
  let { theme, countries, schema: schema2, publicEnv } = data || {};
167
- if (import_react9.isBrowser && _ThemeSettingsStore.settings) {
132
+ if (import_react5.isBrowser && _ThemeSettingsStore.settings) {
168
133
  _ThemeSettingsStore.settings = {
169
134
  ...theme,
170
135
  ..._ThemeSettingsStore.settings
@@ -203,7 +168,7 @@ var ThemeSettingsStore = class _ThemeSettingsStore {
203
168
  };
204
169
  function useThemeSettings() {
205
170
  let themeSettingsStore = useThemeContext();
206
- let settings = (0, import_react8.useSyncExternalStore)(
171
+ let settings = (0, import_react4.useSyncExternalStore)(
207
172
  themeSettingsStore.subscribe,
208
173
  themeSettingsStore.getSnapshot,
209
174
  themeSettingsStore.getServerSnapshot
@@ -211,6 +176,38 @@ function useThemeSettings() {
211
176
  return settings;
212
177
  }
213
178
 
179
+ // src/hooks/use-theme-context.ts
180
+ function useThemeContext() {
181
+ let themeContext = (0, import_react6.useContext)(ThemeProvider);
182
+ return themeContext || new ThemeSettingsStore({ theme: {} });
183
+ }
184
+
185
+ // src/hooks/use-studio.ts
186
+ function useStudio(weaverse) {
187
+ let { revalidate } = (0, import_react7.useRevalidator)();
188
+ let navigate = (0, import_react7.useNavigate)();
189
+ let themeSettingsStore = useThemeContext();
190
+ let { isDesignMode, weaverseHost, weaverseVersion } = weaverse;
191
+ let isStudio = import_react8.isIframe && isDesignMode && weaverseHost && weaverseVersion;
192
+ (0, import_react9.useEffect)(() => {
193
+ if (isStudio) {
194
+ weaverse.internal = {
195
+ ...weaverse.internal,
196
+ navigate,
197
+ revalidate,
198
+ themeSettingsStore
199
+ };
200
+ window.__weaverse = weaverse;
201
+ if (window.weaverseStudio) {
202
+ window.weaverseStudio.init(weaverse);
203
+ } else {
204
+ let studioSrc = `${weaverseHost}/static/studio/hydrogen/index.js?v=${weaverseVersion}`;
205
+ (0, import_react8.loadScript)(studioSrc);
206
+ }
207
+ }
208
+ }, [weaverse.requestInfo]);
209
+ }
210
+
214
211
  // src/WeaverseHydrogenRoot.tsx
215
212
  var WeaverseHydrogenRoot = (0, import_react12.memo)(
216
213
  ({
@@ -260,7 +257,7 @@ var package_default = {
260
257
  name: "@weaverse/hydrogen",
261
258
  author: "Weaverse Team",
262
259
  description: "Components, hooks, and utilities for building Shopify Hydrogen websites with Weaverse",
263
- version: "2.6.4-pre.0",
260
+ version: "2.7.0",
264
261
  license: "MIT",
265
262
  main: "dist/index.js",
266
263
  typings: "dist/index.d.ts",
@@ -325,12 +322,12 @@ function getWeaverseConfigs(request, env) {
325
322
  WEAVERSE_HOST,
326
323
  PUBLIC_STORE_DOMAIN,
327
324
  PUBLIC_STOREFRONT_API_TOKEN
328
- } = env || {};
325
+ } = env || typeof process !== "undefined" && process?.env || {};
329
326
  let { weaverseProjectId, weaverseHost, isDesignMode, weaverseVersion, weaverseApiKey } = queries;
330
327
  return {
331
- projectId: weaverseProjectId || WEAVERSE_PROJECT_ID || process?.env?.WEAVERSE_PROJECT_ID || "",
332
- weaverseHost: weaverseHost || WEAVERSE_HOST || process?.env?.WEAVERSE_HOST || "https://weaverse.io",
333
- weaverseApiKey: weaverseApiKey || WEAVERSE_API_KEY || process?.env?.WEAVERSE_API_KEY || "",
328
+ projectId: weaverseProjectId || WEAVERSE_PROJECT_ID || "",
329
+ weaverseHost: weaverseHost || WEAVERSE_HOST || "https://weaverse.io",
330
+ weaverseApiKey: weaverseApiKey || WEAVERSE_API_KEY || "",
334
331
  weaverseVersion: weaverseVersion || "",
335
332
  isDesignMode: isDesignMode || false,
336
333
  publicEnv: {
@@ -341,7 +338,6 @@ function getWeaverseConfigs(request, env) {
341
338
  }
342
339
 
343
340
  // src/weaverse-client.ts
344
- var CACHE_HITS_KEY = "https://weaverse.io/__CACHE_HITS_COUNT__";
345
341
  var WeaverseClient = class {
346
342
  API = "api/public/project";
347
343
  clientVersion = package_default.version;
@@ -401,36 +397,49 @@ var WeaverseClient = class {
401
397
  ...reqInit
402
398
  } = options;
403
399
  let res = this.withCache(cacheKey, strategy, async () => {
404
- let response = await fetch(url, reqInit);
400
+ let cacheControlHeader = (0, import_hydrogen.generateCacheControlHeader)(strategy);
401
+ console.log("cacheControlHeader1", cacheControlHeader);
402
+ let response = await fetch(url, { ...reqInit, headers: {
403
+ "Cache-Control": cacheControlHeader,
404
+ ...reqInit.headers
405
+ } });
405
406
  if (!response.ok) {
406
407
  let error = await response.text();
407
408
  let { status, statusText } = response;
408
409
  throw new Error(`${status} ${statusText} ${error}`);
409
- } else {
410
- if (!url.includes("/configs")) {
411
- await this.resetCacheHits().catch(console.error);
412
- }
413
410
  }
414
411
  return await response.json();
415
412
  });
416
413
  return res;
417
414
  };
418
- incrementCacheHits = async () => {
419
- const currentHitsResponse = await this.cache.match(CACHE_HITS_KEY);
420
- const currentHits = currentHitsResponse ? parseInt(await currentHitsResponse.text()) : 0;
421
- const newHitsCount = currentHits + 1;
422
- const newHitsResponse = new Response(newHitsCount.toString(), {
423
- headers: {
424
- "Cache-Control": "max-age=3600"
425
- }
426
- });
427
- await this.cache.put(CACHE_HITS_KEY, newHitsResponse);
428
- return newHitsCount.toString();
429
- };
430
- resetCacheHits = async () => {
431
- const resetHitsResponse = new Response("0");
432
- await this.cache.put(CACHE_HITS_KEY, resetHitsResponse);
433
- };
415
+ // incrementCacheHits = async () => {
416
+ // if (!this.cache) {
417
+ // return '1'
418
+ // }
419
+ // // Increment the cacheHits count in the cache
420
+ // const currentHitsResponse = await this.cache.match(CACHE_HITS_KEY)
421
+ // const currentHits = currentHitsResponse
422
+ // ? parseInt(await currentHitsResponse.text())
423
+ // : 0
424
+ // const newHitsCount = currentHits + 1
425
+ // const newHitsResponse = new Response(newHitsCount.toString(), {
426
+ // headers: {
427
+ // 'Cache-Control': 'max-age=3600',
428
+ // },
429
+ // })
430
+ //
431
+ // await this.cache.put(CACHE_HITS_KEY, newHitsResponse)
432
+ //
433
+ // return newHitsCount.toString()
434
+ // }
435
+ // resetCacheHits = async () => {
436
+ // if (!this.cache) {
437
+ // return
438
+ // }
439
+ // // Reset the cacheHits count in the cache
440
+ // const resetHitsResponse = new Response('0')
441
+ // await this.cache.put(CACHE_HITS_KEY, resetHitsResponse)
442
+ // }
434
443
  loadThemeSettings = async (strategy) => {
435
444
  try {
436
445
  let { API, configs } = this;
@@ -504,16 +513,9 @@ var WeaverseClient = class {
504
513
  if (isDesignMode) {
505
514
  payload = await fetch(url, reqInit).then((res) => res.json());
506
515
  } else {
507
- let cacheHitsToSend = await this.incrementCacheHits().catch(
508
- console.error
509
- );
510
- let headers = {
511
- "X-Cache-Hits": cacheHitsToSend || "0"
512
- // Send cache hits as a custom header
513
- };
514
516
  payload = await this.fetchWithCache(url, {
515
517
  ...reqInit,
516
- headers,
518
+ // headers,
517
519
  strategy
518
520
  });
519
521
  }
package/dist/index.mjs CHANGED
@@ -83,41 +83,6 @@ import { useEffect } from "react";
83
83
 
84
84
  // src/hooks/use-theme-context.ts
85
85
  import { useContext } from "react";
86
- function useThemeContext() {
87
- let themeContext = useContext(ThemeProvider);
88
- if (!themeContext) {
89
- throw new Error(
90
- `useThemeContext must be used within a ThemeProvider. Make sure to wrap your app in the withWeaverse HoC.`
91
- );
92
- }
93
- return themeContext;
94
- }
95
-
96
- // src/hooks/use-studio.ts
97
- function useStudio(weaverse) {
98
- let { revalidate } = useRevalidator();
99
- let navigate = useNavigate();
100
- let themeSettingsStore = useThemeContext();
101
- let { isDesignMode, weaverseHost, weaverseVersion } = weaverse;
102
- let isStudio = isIframe && isDesignMode && weaverseHost && weaverseVersion;
103
- useEffect(() => {
104
- if (isStudio) {
105
- weaverse.internal = {
106
- ...weaverse.internal,
107
- navigate,
108
- revalidate,
109
- themeSettingsStore
110
- };
111
- window.__weaverse = weaverse;
112
- if (window.weaverseStudio) {
113
- window.weaverseStudio.init(weaverse);
114
- } else {
115
- let studioSrc = `${weaverseHost}/static/studio/hydrogen/index.js?v=${weaverseVersion}`;
116
- loadScript(studioSrc);
117
- }
118
- }
119
- }, [weaverse.requestInfo]);
120
- }
121
86
 
122
87
  // src/hooks/use-theme-settings.ts
123
88
  import { useSyncExternalStore } from "react";
@@ -177,6 +142,38 @@ function useThemeSettings() {
177
142
  return settings;
178
143
  }
179
144
 
145
+ // src/hooks/use-theme-context.ts
146
+ function useThemeContext() {
147
+ let themeContext = useContext(ThemeProvider);
148
+ return themeContext || new ThemeSettingsStore({ theme: {} });
149
+ }
150
+
151
+ // src/hooks/use-studio.ts
152
+ function useStudio(weaverse) {
153
+ let { revalidate } = useRevalidator();
154
+ let navigate = useNavigate();
155
+ let themeSettingsStore = useThemeContext();
156
+ let { isDesignMode, weaverseHost, weaverseVersion } = weaverse;
157
+ let isStudio = isIframe && isDesignMode && weaverseHost && weaverseVersion;
158
+ useEffect(() => {
159
+ if (isStudio) {
160
+ weaverse.internal = {
161
+ ...weaverse.internal,
162
+ navigate,
163
+ revalidate,
164
+ themeSettingsStore
165
+ };
166
+ window.__weaverse = weaverse;
167
+ if (window.weaverseStudio) {
168
+ window.weaverseStudio.init(weaverse);
169
+ } else {
170
+ let studioSrc = `${weaverseHost}/static/studio/hydrogen/index.js?v=${weaverseVersion}`;
171
+ loadScript(studioSrc);
172
+ }
173
+ }
174
+ }, [weaverse.requestInfo]);
175
+ }
176
+
180
177
  // src/WeaverseHydrogenRoot.tsx
181
178
  var WeaverseHydrogenRoot = memo(
182
179
  ({
@@ -219,14 +216,14 @@ function FallbackError({ error }) {
219
216
  }
220
217
 
221
218
  // src/weaverse-client.ts
222
- import { createWithCache } from "@shopify/hydrogen";
219
+ import { createWithCache, generateCacheControlHeader } from "@shopify/hydrogen";
223
220
 
224
221
  // package.json
225
222
  var package_default = {
226
223
  name: "@weaverse/hydrogen",
227
224
  author: "Weaverse Team",
228
225
  description: "Components, hooks, and utilities for building Shopify Hydrogen websites with Weaverse",
229
- version: "2.6.4-pre.0",
226
+ version: "2.7.0",
230
227
  license: "MIT",
231
228
  main: "dist/index.js",
232
229
  typings: "dist/index.d.ts",
@@ -291,12 +288,12 @@ function getWeaverseConfigs(request, env) {
291
288
  WEAVERSE_HOST,
292
289
  PUBLIC_STORE_DOMAIN,
293
290
  PUBLIC_STOREFRONT_API_TOKEN
294
- } = env || {};
291
+ } = env || typeof process !== "undefined" && process?.env || {};
295
292
  let { weaverseProjectId, weaverseHost, isDesignMode, weaverseVersion, weaverseApiKey } = queries;
296
293
  return {
297
- projectId: weaverseProjectId || WEAVERSE_PROJECT_ID || process?.env?.WEAVERSE_PROJECT_ID || "",
298
- weaverseHost: weaverseHost || WEAVERSE_HOST || process?.env?.WEAVERSE_HOST || "https://weaverse.io",
299
- weaverseApiKey: weaverseApiKey || WEAVERSE_API_KEY || process?.env?.WEAVERSE_API_KEY || "",
294
+ projectId: weaverseProjectId || WEAVERSE_PROJECT_ID || "",
295
+ weaverseHost: weaverseHost || WEAVERSE_HOST || "https://weaverse.io",
296
+ weaverseApiKey: weaverseApiKey || WEAVERSE_API_KEY || "",
300
297
  weaverseVersion: weaverseVersion || "",
301
298
  isDesignMode: isDesignMode || false,
302
299
  publicEnv: {
@@ -307,7 +304,6 @@ function getWeaverseConfigs(request, env) {
307
304
  }
308
305
 
309
306
  // src/weaverse-client.ts
310
- var CACHE_HITS_KEY = "https://weaverse.io/__CACHE_HITS_COUNT__";
311
307
  var WeaverseClient = class {
312
308
  API = "api/public/project";
313
309
  clientVersion = package_default.version;
@@ -367,36 +363,49 @@ var WeaverseClient = class {
367
363
  ...reqInit
368
364
  } = options;
369
365
  let res = this.withCache(cacheKey, strategy, async () => {
370
- let response = await fetch(url, reqInit);
366
+ let cacheControlHeader = generateCacheControlHeader(strategy);
367
+ console.log("cacheControlHeader1", cacheControlHeader);
368
+ let response = await fetch(url, { ...reqInit, headers: {
369
+ "Cache-Control": cacheControlHeader,
370
+ ...reqInit.headers
371
+ } });
371
372
  if (!response.ok) {
372
373
  let error = await response.text();
373
374
  let { status, statusText } = response;
374
375
  throw new Error(`${status} ${statusText} ${error}`);
375
- } else {
376
- if (!url.includes("/configs")) {
377
- await this.resetCacheHits().catch(console.error);
378
- }
379
376
  }
380
377
  return await response.json();
381
378
  });
382
379
  return res;
383
380
  };
384
- incrementCacheHits = async () => {
385
- const currentHitsResponse = await this.cache.match(CACHE_HITS_KEY);
386
- const currentHits = currentHitsResponse ? parseInt(await currentHitsResponse.text()) : 0;
387
- const newHitsCount = currentHits + 1;
388
- const newHitsResponse = new Response(newHitsCount.toString(), {
389
- headers: {
390
- "Cache-Control": "max-age=3600"
391
- }
392
- });
393
- await this.cache.put(CACHE_HITS_KEY, newHitsResponse);
394
- return newHitsCount.toString();
395
- };
396
- resetCacheHits = async () => {
397
- const resetHitsResponse = new Response("0");
398
- await this.cache.put(CACHE_HITS_KEY, resetHitsResponse);
399
- };
381
+ // incrementCacheHits = async () => {
382
+ // if (!this.cache) {
383
+ // return '1'
384
+ // }
385
+ // // Increment the cacheHits count in the cache
386
+ // const currentHitsResponse = await this.cache.match(CACHE_HITS_KEY)
387
+ // const currentHits = currentHitsResponse
388
+ // ? parseInt(await currentHitsResponse.text())
389
+ // : 0
390
+ // const newHitsCount = currentHits + 1
391
+ // const newHitsResponse = new Response(newHitsCount.toString(), {
392
+ // headers: {
393
+ // 'Cache-Control': 'max-age=3600',
394
+ // },
395
+ // })
396
+ //
397
+ // await this.cache.put(CACHE_HITS_KEY, newHitsResponse)
398
+ //
399
+ // return newHitsCount.toString()
400
+ // }
401
+ // resetCacheHits = async () => {
402
+ // if (!this.cache) {
403
+ // return
404
+ // }
405
+ // // Reset the cacheHits count in the cache
406
+ // const resetHitsResponse = new Response('0')
407
+ // await this.cache.put(CACHE_HITS_KEY, resetHitsResponse)
408
+ // }
400
409
  loadThemeSettings = async (strategy) => {
401
410
  try {
402
411
  let { API, configs } = this;
@@ -470,16 +479,9 @@ var WeaverseClient = class {
470
479
  if (isDesignMode) {
471
480
  payload = await fetch(url, reqInit).then((res) => res.json());
472
481
  } else {
473
- let cacheHitsToSend = await this.incrementCacheHits().catch(
474
- console.error
475
- );
476
- let headers = {
477
- "X-Cache-Hits": cacheHitsToSend || "0"
478
- // Send cache hits as a custom header
479
- };
480
482
  payload = await this.fetchWithCache(url, {
481
483
  ...reqInit,
482
- headers,
484
+ // headers,
483
485
  strategy
484
486
  });
485
487
  }
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "@weaverse/hydrogen",
3
3
  "author": "Weaverse Team",
4
4
  "description": "Components, hooks, and utilities for building Shopify Hydrogen websites with Weaverse",
5
- "version": "2.6.4-pre.1",
5
+ "version": "2.7.1-pre.0",
6
6
  "license": "MIT",
7
7
  "main": "dist/index.js",
8
8
  "typings": "dist/index.d.ts",