@weaverse/hydrogen 2.7.0 → 2.7.1-pre.1

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.3",
260
+ version: "2.7.1-pre.1",
264
261
  license: "MIT",
265
262
  main: "dist/index.js",
266
263
  typings: "dist/index.d.ts",
@@ -326,11 +323,12 @@ function getWeaverseConfigs(request, env) {
326
323
  PUBLIC_STORE_DOMAIN,
327
324
  PUBLIC_STOREFRONT_API_TOKEN
328
325
  } = env || {};
326
+ let envFromProcess = typeof process !== "undefined" && process.env || {};
329
327
  let { weaverseProjectId, weaverseHost, isDesignMode, weaverseVersion, weaverseApiKey } = queries;
330
328
  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 || "",
329
+ projectId: weaverseProjectId || WEAVERSE_PROJECT_ID || envFromProcess.WEAVERSE_PROJECT_ID || "",
330
+ weaverseHost: weaverseHost || WEAVERSE_HOST || envFromProcess.WEAVERSE_HOST || "https://weaverse.io",
331
+ weaverseApiKey: weaverseApiKey || WEAVERSE_API_KEY || envFromProcess.WEAVERSE_API_KEY || "",
334
332
  weaverseVersion: weaverseVersion || "",
335
333
  isDesignMode: isDesignMode || false,
336
334
  publicEnv: {
@@ -341,7 +339,6 @@ function getWeaverseConfigs(request, env) {
341
339
  }
342
340
 
343
341
  // src/weaverse-client.ts
344
- var CACHE_HITS_KEY = "https://weaverse.io/__CACHE_HITS_COUNT__";
345
342
  var WeaverseClient = class {
346
343
  API = "api/public/project";
347
344
  clientVersion = package_default.version;
@@ -401,36 +398,49 @@ var WeaverseClient = class {
401
398
  ...reqInit
402
399
  } = options;
403
400
  let res = this.withCache(cacheKey, strategy, async () => {
404
- let response = await fetch(url, reqInit);
401
+ let cacheControlHeader = (0, import_hydrogen.generateCacheControlHeader)(strategy);
402
+ console.log("cacheControlHeader1", cacheControlHeader);
403
+ let response = await fetch(url, { ...reqInit, headers: {
404
+ "Cache-Control": cacheControlHeader,
405
+ ...reqInit.headers
406
+ } });
405
407
  if (!response.ok) {
406
408
  let error = await response.text();
407
409
  let { status, statusText } = response;
408
410
  throw new Error(`${status} ${statusText} ${error}`);
409
- } else {
410
- if (!url.includes("/configs")) {
411
- await this.resetCacheHits().catch(console.error);
412
- }
413
411
  }
414
412
  return await response.json();
415
413
  });
416
414
  return res;
417
415
  };
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
- };
416
+ // incrementCacheHits = async () => {
417
+ // if (!this.cache) {
418
+ // return '1'
419
+ // }
420
+ // // Increment the cacheHits count in the cache
421
+ // const currentHitsResponse = await this.cache.match(CACHE_HITS_KEY)
422
+ // const currentHits = currentHitsResponse
423
+ // ? parseInt(await currentHitsResponse.text())
424
+ // : 0
425
+ // const newHitsCount = currentHits + 1
426
+ // const newHitsResponse = new Response(newHitsCount.toString(), {
427
+ // headers: {
428
+ // 'Cache-Control': 'max-age=3600',
429
+ // },
430
+ // })
431
+ //
432
+ // await this.cache.put(CACHE_HITS_KEY, newHitsResponse)
433
+ //
434
+ // return newHitsCount.toString()
435
+ // }
436
+ // resetCacheHits = async () => {
437
+ // if (!this.cache) {
438
+ // return
439
+ // }
440
+ // // Reset the cacheHits count in the cache
441
+ // const resetHitsResponse = new Response('0')
442
+ // await this.cache.put(CACHE_HITS_KEY, resetHitsResponse)
443
+ // }
434
444
  loadThemeSettings = async (strategy) => {
435
445
  try {
436
446
  let { API, configs } = this;
@@ -504,16 +514,9 @@ var WeaverseClient = class {
504
514
  if (isDesignMode) {
505
515
  payload = await fetch(url, reqInit).then((res) => res.json());
506
516
  } 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
517
  payload = await this.fetchWithCache(url, {
515
518
  ...reqInit,
516
- headers,
519
+ // headers,
517
520
  strategy
518
521
  });
519
522
  }
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.3",
226
+ version: "2.7.1-pre.1",
230
227
  license: "MIT",
231
228
  main: "dist/index.js",
232
229
  typings: "dist/index.d.ts",
@@ -292,11 +289,12 @@ function getWeaverseConfigs(request, env) {
292
289
  PUBLIC_STORE_DOMAIN,
293
290
  PUBLIC_STOREFRONT_API_TOKEN
294
291
  } = env || {};
292
+ let envFromProcess = typeof process !== "undefined" && process.env || {};
295
293
  let { weaverseProjectId, weaverseHost, isDesignMode, weaverseVersion, weaverseApiKey } = queries;
296
294
  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 || "",
295
+ projectId: weaverseProjectId || WEAVERSE_PROJECT_ID || envFromProcess.WEAVERSE_PROJECT_ID || "",
296
+ weaverseHost: weaverseHost || WEAVERSE_HOST || envFromProcess.WEAVERSE_HOST || "https://weaverse.io",
297
+ weaverseApiKey: weaverseApiKey || WEAVERSE_API_KEY || envFromProcess.WEAVERSE_API_KEY || "",
300
298
  weaverseVersion: weaverseVersion || "",
301
299
  isDesignMode: isDesignMode || false,
302
300
  publicEnv: {
@@ -307,7 +305,6 @@ function getWeaverseConfigs(request, env) {
307
305
  }
308
306
 
309
307
  // src/weaverse-client.ts
310
- var CACHE_HITS_KEY = "https://weaverse.io/__CACHE_HITS_COUNT__";
311
308
  var WeaverseClient = class {
312
309
  API = "api/public/project";
313
310
  clientVersion = package_default.version;
@@ -367,36 +364,49 @@ var WeaverseClient = class {
367
364
  ...reqInit
368
365
  } = options;
369
366
  let res = this.withCache(cacheKey, strategy, async () => {
370
- let response = await fetch(url, reqInit);
367
+ let cacheControlHeader = generateCacheControlHeader(strategy);
368
+ console.log("cacheControlHeader1", cacheControlHeader);
369
+ let response = await fetch(url, { ...reqInit, headers: {
370
+ "Cache-Control": cacheControlHeader,
371
+ ...reqInit.headers
372
+ } });
371
373
  if (!response.ok) {
372
374
  let error = await response.text();
373
375
  let { status, statusText } = response;
374
376
  throw new Error(`${status} ${statusText} ${error}`);
375
- } else {
376
- if (!url.includes("/configs")) {
377
- await this.resetCacheHits().catch(console.error);
378
- }
379
377
  }
380
378
  return await response.json();
381
379
  });
382
380
  return res;
383
381
  };
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
- };
382
+ // incrementCacheHits = async () => {
383
+ // if (!this.cache) {
384
+ // return '1'
385
+ // }
386
+ // // Increment the cacheHits count in the cache
387
+ // const currentHitsResponse = await this.cache.match(CACHE_HITS_KEY)
388
+ // const currentHits = currentHitsResponse
389
+ // ? parseInt(await currentHitsResponse.text())
390
+ // : 0
391
+ // const newHitsCount = currentHits + 1
392
+ // const newHitsResponse = new Response(newHitsCount.toString(), {
393
+ // headers: {
394
+ // 'Cache-Control': 'max-age=3600',
395
+ // },
396
+ // })
397
+ //
398
+ // await this.cache.put(CACHE_HITS_KEY, newHitsResponse)
399
+ //
400
+ // return newHitsCount.toString()
401
+ // }
402
+ // resetCacheHits = async () => {
403
+ // if (!this.cache) {
404
+ // return
405
+ // }
406
+ // // Reset the cacheHits count in the cache
407
+ // const resetHitsResponse = new Response('0')
408
+ // await this.cache.put(CACHE_HITS_KEY, resetHitsResponse)
409
+ // }
400
410
  loadThemeSettings = async (strategy) => {
401
411
  try {
402
412
  let { API, configs } = this;
@@ -470,16 +480,9 @@ var WeaverseClient = class {
470
480
  if (isDesignMode) {
471
481
  payload = await fetch(url, reqInit).then((res) => res.json());
472
482
  } 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
483
  payload = await this.fetchWithCache(url, {
481
484
  ...reqInit,
482
- headers,
485
+ // headers,
483
486
  strategy
484
487
  });
485
488
  }
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.7.0",
5
+ "version": "2.7.1-pre.1",
6
6
  "license": "MIT",
7
7
  "main": "dist/index.js",
8
8
  "typings": "dist/index.d.ts",