@weaverse/hydrogen 1.1.16 → 1.1.19

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.js CHANGED
@@ -28,26 +28,352 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
28
28
  ));
29
29
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
30
30
 
31
- // src/index.tsx
31
+ // src/index.ts
32
32
  var src_exports = {};
33
33
  __export(src_exports, {
34
+ WeaverseClient: () => WeaverseClient,
34
35
  WeaverseHydrogenRoot: () => WeaverseHydrogenRoot,
35
- fetchWithServerCache: () => fetchWithServerCache,
36
+ createContentSecurityPolicy: () => createContentSecurityPolicy,
37
+ createWeaverseClient: () => createWeaverseClient,
36
38
  getRequestQueries: () => getRequestQueries,
37
39
  getSelectedProductOptions: () => getSelectedProductOptions,
38
- useThemeSettings: () => useThemeSettings,
39
- weaverseLoader: () => weaverseLoader
40
+ getWeaverseConfigs: () => getWeaverseConfigs,
41
+ getWeaverseCsp: () => getWeaverseCsp,
42
+ useThemeSettings: () => useThemeSettings
40
43
  });
41
44
  module.exports = __toCommonJS(src_exports);
42
- var import_react6 = require("@remix-run/react");
43
- var import_react7 = require("@weaverse/react");
44
- var import_react8 = __toESM(require("react"));
45
+ __reExport(src_exports, require("@weaverse/react"), module.exports);
46
+
47
+ // src/client.ts
48
+ var import_hydrogen = require("@shopify/hydrogen");
49
+
50
+ // package.json
51
+ var package_default = {
52
+ version: "1.1.19",
53
+ license: "MIT",
54
+ main: "dist/index.js",
55
+ typings: "dist/index.d.ts",
56
+ module: "dist/index.mjs",
57
+ publishConfig: {
58
+ access: "public"
59
+ },
60
+ files: [
61
+ "dist/*"
62
+ ],
63
+ engines: {
64
+ node: ">=10"
65
+ },
66
+ scripts: {
67
+ start: "npm run dev",
68
+ dev: "tsup src/index.ts --format esm,cjs --dts --outDir dist --watch --external @remix-run/react,@shopify/hydrogen",
69
+ build: "tsup src/index.ts --format esm,cjs --dts --outDir dist --external @remix-run/react,@shopify/hydrogen",
70
+ clean: "rimraf dist",
71
+ prepublish: "npm run build"
72
+ },
73
+ peerDependencies: {
74
+ react: ">=18",
75
+ "react-dom": ">=18"
76
+ },
77
+ prettier: {
78
+ printWidth: 80,
79
+ semi: false,
80
+ singleQuote: true
81
+ },
82
+ name: "@weaverse/hydrogen",
83
+ author: "Weaverse Team",
84
+ dependencies: {
85
+ "@remix-run/react": "1.19.1",
86
+ "@shopify/hydrogen": "2023.7.7",
87
+ "@weaverse/react": "1.1.19",
88
+ "react-error-boundary": "^4.0.11"
89
+ },
90
+ devDependencies: {
91
+ "@shopify/remix-oxygen": "^1.1.4"
92
+ }
93
+ };
94
+
95
+ // src/utils.ts
96
+ function getRequestQueries(request) {
97
+ let url = new URL(request.url);
98
+ return Array.from(url.searchParams.entries()).reduce(
99
+ (q, [k, v]) => {
100
+ q[k] = v === "true" ? true : v === "false" ? false : v;
101
+ return q;
102
+ },
103
+ {}
104
+ );
105
+ }
106
+ function getWeaverseConfigs(request, env) {
107
+ let queries = getRequestQueries(request);
108
+ let {
109
+ WEAVERSE_PROJECT_ID,
110
+ WEAVERSE_HOST,
111
+ PUBLIC_STORE_DOMAIN,
112
+ PUBLIC_STOREFRONT_API_TOKEN
113
+ } = env || {};
114
+ let { weaverseProjectId, weaverseHost, isDesignMode, weaverseVersion } = queries;
115
+ return {
116
+ projectId: weaverseProjectId || WEAVERSE_PROJECT_ID || "",
117
+ weaverseHost: weaverseHost || WEAVERSE_HOST || "https://weaverse.io",
118
+ weaverseVersion: weaverseVersion || "",
119
+ isDesignMode: isDesignMode || false,
120
+ publicEnv: {
121
+ PUBLIC_STORE_DOMAIN,
122
+ PUBLIC_STOREFRONT_API_TOKEN
123
+ }
124
+ };
125
+ }
126
+ function getWeaverseCsp(request) {
127
+ let url = new URL(request.url);
128
+ let weaverseHost = url.searchParams.get("weaverseHost");
129
+ let weaverseHosts = ["https://*.weaverse.io"];
130
+ if (weaverseHost) {
131
+ weaverseHosts.push(weaverseHost);
132
+ }
133
+ return {
134
+ frameAncestors: weaverseHosts,
135
+ defaultSrc: [
136
+ "'self'",
137
+ "https://cdn.shopify.com",
138
+ "https://shopify.com",
139
+ "https://*.youtube.com",
140
+ ...weaverseHosts
141
+ ],
142
+ styleSrc: [
143
+ "'self'",
144
+ "'unsafe-inline'",
145
+ "https://cdn.shopify.com",
146
+ ...weaverseHosts
147
+ ]
148
+ };
149
+ }
150
+
151
+ // src/client.ts
152
+ var WeaverseClient = class {
153
+ constructor(args) {
154
+ this.API = "api/public/project";
155
+ this.clientVersion = package_default.version;
156
+ this.fetchWithCache = (url, options) => {
157
+ let cacheKey = [url, options.body];
158
+ let { strategy = this.storefront.CacheShort(), ...reqInit } = options;
159
+ let res = this.withCache(cacheKey, strategy, async () => {
160
+ let response = await fetch(url, reqInit);
161
+ if (!response.ok) {
162
+ throw new Error("Something went wrong. Skipping cache.");
163
+ }
164
+ return await response.json();
165
+ });
166
+ return res;
167
+ };
168
+ this.loadThemeSettings = async (strategy) => {
169
+ let { API, configs } = this;
170
+ let { weaverseHost, projectId } = configs;
171
+ let res = await this.fetchWithCache(
172
+ `${weaverseHost}/${API}/${projectId}/configs`,
173
+ { strategy }
174
+ );
175
+ let data = null;
176
+ if (res.ok) {
177
+ data = res.payload;
178
+ if (this.configs.isDesignMode) {
179
+ data = {
180
+ ...data,
181
+ schema: this.themeSchema,
182
+ countries: this.countries,
183
+ publicEnv: this.configs.publicEnv
184
+ };
185
+ }
186
+ }
187
+ return data;
188
+ };
189
+ this.loadPage = async (args, configs = {}) => {
190
+ return new Promise(async (resolve, reject) => {
191
+ try {
192
+ let { request, params } = args;
193
+ let { strategy, ...pageLoadParams } = configs;
194
+ let body = {
195
+ ...this.basePageRequestBody,
196
+ params: pageLoadParams,
197
+ url: request.url
198
+ };
199
+ let reqInit = {
200
+ method: "POST",
201
+ body: JSON.stringify(body)
202
+ };
203
+ let url = `${this.configs.weaverseHost}/api/public/project`;
204
+ let payload;
205
+ if (this.configs.isDesignMode) {
206
+ payload = await fetch(url, reqInit).then((res) => res.json());
207
+ } else {
208
+ payload = await this.fetchWithCache(url, {
209
+ ...reqInit,
210
+ strategy
211
+ });
212
+ }
213
+ let { page, project, pageAssignment } = payload;
214
+ if (!page || !project || !pageAssignment) {
215
+ return reject(
216
+ new Error(
217
+ // @ts-ignore
218
+ payload?.error || "Invalid Weaverse project payload!"
219
+ )
220
+ );
221
+ }
222
+ if (page?.items) {
223
+ let items = page.items;
224
+ page.items = await Promise.all(
225
+ items.map((item) => this.execComponentLoader(item, args))
226
+ );
227
+ }
228
+ let data = {
229
+ page,
230
+ project,
231
+ pageAssignment,
232
+ configs: {
233
+ ...this.basePageConfigs,
234
+ requestInfo: {
235
+ params,
236
+ i18n: this.storefront.i18n,
237
+ queries: getRequestQueries(request),
238
+ pathname: new URL(request.url).pathname,
239
+ search: new URL(request.url).search
240
+ }
241
+ }
242
+ };
243
+ return resolve(data);
244
+ } catch (err) {
245
+ console.log(`\u274C [Weaverse page]`, err);
246
+ reject(err);
247
+ }
248
+ });
249
+ };
250
+ this.execComponentLoader = async (item, args) => {
251
+ let schema = this.components.find(
252
+ ({ schema: schema2 }) => schema2?.type === item.type
253
+ );
254
+ let { loader } = schema || {};
255
+ if (loader && typeof loader === "function") {
256
+ try {
257
+ return {
258
+ ...item,
259
+ loaderData: await loader({
260
+ itemData: item,
261
+ ...args
262
+ })
263
+ };
264
+ } catch (err) {
265
+ console.log(`\u274C [Weaverse item loader]`, item.id, err);
266
+ return item;
267
+ }
268
+ }
269
+ return item;
270
+ };
271
+ let { configs, storefront, components, countries, withCache, themeSchema } = args;
272
+ this.storefront = storefront;
273
+ this.components = components;
274
+ this.countries = countries;
275
+ this.themeSchema = themeSchema;
276
+ this.configs = configs;
277
+ this.withCache = withCache;
278
+ this.basePageConfigs = {
279
+ projectId: configs.projectId,
280
+ weaverseHost: configs.weaverseHost,
281
+ weaverseVersion: configs.weaverseVersion,
282
+ isDesignMode: configs.isDesignMode
283
+ };
284
+ this.basePageRequestBody = {
285
+ countries,
286
+ isDesignMode: this.configs.isDesignMode,
287
+ i18n: storefront.i18n,
288
+ projectId: this.configs.projectId
289
+ };
290
+ }
291
+ };
292
+ function createWeaverseClient(args) {
293
+ return new WeaverseClient(args);
294
+ }
295
+
296
+ // src/hooks/use-theme-settings.ts
297
+ var import_react = require("@remix-run/react");
298
+ var import_react2 = require("@weaverse/react");
299
+ var import_react3 = require("react");
300
+ var settings = null;
301
+ var listeners = [];
302
+ var themeSettingsStore = {
303
+ updateThemeSettings(newSettings) {
304
+ settings = { ...settings, ...newSettings };
305
+ emitChange();
306
+ },
307
+ subscribe(listener) {
308
+ listeners = [...listeners, listener];
309
+ return () => {
310
+ listeners = listeners.filter((l) => l !== listener);
311
+ };
312
+ },
313
+ getSnapshot() {
314
+ return settings;
315
+ },
316
+ getServerSnapshot() {
317
+ return settings;
318
+ }
319
+ };
320
+ function emitChange() {
321
+ for (let listener of listeners) {
322
+ listener();
323
+ }
324
+ }
325
+ if (import_react2.isBrowser) {
326
+ window.__weaverseThemeSettingsStore = themeSettingsStore;
327
+ }
328
+ function useThemeSettings() {
329
+ let settings2 = (0, import_react3.useSyncExternalStore)(
330
+ themeSettingsStore.subscribe,
331
+ themeSettingsStore.getSnapshot,
332
+ themeSettingsStore.getServerSnapshot
333
+ );
334
+ let { weaverseTheme } = (0, import_react.useLoaderData)();
335
+ (0, import_react3.useEffect)(() => {
336
+ if (weaverseTheme) {
337
+ let settings3 = weaverseTheme.theme;
338
+ if (settings3) {
339
+ themeSettingsStore.updateThemeSettings(settings3);
340
+ }
341
+ } else {
342
+ console.warn(
343
+ `'weaverseTheme' should be returned from root loader in order to get global settings from 'useThemeSettings'.`
344
+ );
345
+ }
346
+ }, [weaverseTheme]);
347
+ return settings2;
348
+ }
349
+
350
+ // src/wrappers.ts
351
+ var import_hydrogen2 = require("@shopify/hydrogen");
352
+ var import_hydrogen3 = require("@shopify/hydrogen");
353
+ function getSelectedProductOptions(request) {
354
+ let options = (0, import_hydrogen2.getSelectedProductOptions)(request);
355
+ return options.filter(
356
+ ({ name }) => name !== "isDesignMode" && !name.startsWith("weaverse")
357
+ );
358
+ }
359
+ function createContentSecurityPolicy(request, directives) {
360
+ let weaverseDirectives = getWeaverseCsp(request);
361
+ return (0, import_hydrogen3.createContentSecurityPolicy)({
362
+ ...directives,
363
+ ...weaverseDirectives
364
+ });
365
+ }
366
+
367
+ // src/WeaverseHydrogenRoot.tsx
368
+ var import_react8 = require("@remix-run/react");
369
+ var import_react9 = require("@weaverse/react");
370
+ var import_react10 = __toESM(require("react"));
45
371
  var import_react_error_boundary = require("react-error-boundary");
46
372
 
47
373
  // src/context.ts
48
- var import_react = require("@weaverse/react");
374
+ var import_react4 = require("@weaverse/react");
49
375
  function createCachedWeaverseInstance(init) {
50
- if (import_react.isBrowser) {
376
+ if (import_react4.isBrowser) {
51
377
  window.__weaverses = window.__weaverses || [];
52
378
  let weaverse = window.__weaverses.find((w) => {
53
379
  let { pathname, search } = w.requestInfo;
@@ -55,13 +381,13 @@ function createCachedWeaverseInstance(init) {
55
381
  return pathname === init.requestInfo.pathname && search === init.requestInfo.search && __cachedId === init.data.__cachedId;
56
382
  });
57
383
  if (!weaverse) {
58
- weaverse = new import_react.Weaverse(init);
384
+ weaverse = new import_react4.Weaverse(init);
59
385
  window.__weaverses.push(weaverse);
60
386
  console.log("\u{1F4BF} Weaverse", weaverse);
61
387
  }
62
388
  return weaverse;
63
389
  }
64
- return new import_react.Weaverse(init);
390
+ return new import_react4.Weaverse(init);
65
391
  }
66
392
  function createWeaverseInstance(weaverseData, components) {
67
393
  let { page, configs, project, pageAssignment } = weaverseData || {};
@@ -84,15 +410,17 @@ function createWeaverseInstance(weaverseData, components) {
84
410
  }
85
411
 
86
412
  // src/hooks/use-studio.ts
87
- var import_react2 = require("@remix-run/react");
88
- var import_react3 = require("@weaverse/react");
89
- var import_react4 = require("react");
90
- function useStudio(weaverse, countries, schema, publicEnv) {
91
- let navigate = (0, import_react2.useNavigate)();
92
- let { revalidate } = (0, import_react2.useRevalidator)();
413
+ var import_react5 = require("@remix-run/react");
414
+ var import_react6 = require("@weaverse/react");
415
+ var import_react7 = require("react");
416
+ function useStudio(weaverse) {
417
+ let { weaverseTheme } = (0, import_react5.useRouteLoaderData)("root");
418
+ let navigate = (0, import_react5.useNavigate)();
419
+ let { revalidate } = (0, import_react5.useRevalidator)();
420
+ let { countries, schema, publicEnv } = weaverseTheme || {};
93
421
  let { isDesignMode, weaverseHost, weaverseVersion } = weaverse;
94
- let isStudio = import_react3.isIframe && isDesignMode && weaverseHost && weaverseVersion;
95
- (0, import_react4.useEffect)(() => {
422
+ let isStudio = import_react6.isIframe && isDesignMode && weaverseHost && weaverseVersion;
423
+ (0, import_react7.useEffect)(() => {
96
424
  if (isStudio) {
97
425
  weaverse.internal = {
98
426
  ...weaverse.internal,
@@ -105,213 +433,51 @@ function useStudio(weaverse, countries, schema, publicEnv) {
105
433
  if (window.weaverseStudio) {
106
434
  window.weaverseStudio.init(weaverse);
107
435
  } else {
108
- (0, import_react3.loadScript)(
109
- `${weaverseHost}/assets/studio/hydrogen/index.js?v=${weaverseVersion}`
110
- );
436
+ let studioSrc = `${weaverseHost}/assets/studio/hydrogen/index.js?v=${weaverseVersion}`;
437
+ (0, import_react6.loadScript)(studioSrc);
111
438
  }
112
439
  }
113
440
  }, [weaverse]);
114
441
  }
115
442
 
116
- // src/index.tsx
117
- __reExport(src_exports, require("@weaverse/react"), module.exports);
118
-
119
- // src/fetch.ts
120
- var import_hydrogen = require("@shopify/hydrogen");
121
- async function fetchWithServerCache(params) {
122
- let { url, options = {}, context } = params;
123
- let { storefront } = context;
124
- let withCache = (0, import_hydrogen.createWithCache)(storefront);
125
- let cacheKey = [url, options.body];
126
- let data = await withCache(cacheKey, storefront.CacheShort(), async () => {
127
- let response = await fetch(url, options);
128
- if (!response.ok)
129
- throw new Error("Something went wrong. Skipping cache.");
130
- return await response.json();
131
- });
132
- return data;
133
- }
134
-
135
- // src/utils.ts
136
- function getRequestQueries(request) {
137
- let url = new URL(request.url);
138
- return Array.from(url.searchParams.entries()).reduce(
139
- (q, [k, v]) => {
140
- q[k] = v === "true" ? true : v === "false" ? false : v;
141
- return q;
142
- },
143
- {}
144
- );
145
- }
146
-
147
- // src/loader.ts
148
- async function weaverseLoader(args, components, countries, loaderConfigs) {
149
- return new Promise(async (resolve, reject) => {
150
- try {
151
- let { request, context, params } = args;
152
- let queries = getRequestQueries(request);
153
- let {
154
- WEAVERSE_PROJECT_ID,
155
- WEAVERSE_HOST,
156
- PUBLIC_STORE_DOMAIN,
157
- PUBLIC_STOREFRONT_API_TOKEN
158
- } = context?.env || {};
159
- let { weaverseProjectId, weaverseHost, isDesignMode, weaverseVersion } = queries;
160
- let projectId = weaverseProjectId || WEAVERSE_PROJECT_ID;
161
- weaverseHost = weaverseHost || WEAVERSE_HOST || "https://weaverse.io";
162
- if (!projectId) {
163
- return reject(
164
- new Error(
165
- `Missing Weaverse project's id. Try adding WEAVERSE_PROJECT_ID to your .env file then restart the server.`
166
- )
167
- );
168
- }
169
- let i18n = context?.storefront?.i18n;
170
- let reqBody = {
171
- isDesignMode,
172
- i18n,
173
- countries,
174
- projectId,
175
- loaderConfigs,
176
- url: request.url
177
- };
178
- let url = `${weaverseHost}/api/public/project`;
179
- let payload;
180
- if (isDesignMode) {
181
- payload = await fetch(url, {
182
- method: "POST",
183
- body: JSON.stringify(reqBody)
184
- }).then((res) => res.json());
185
- } else {
186
- payload = await fetchWithServerCache({
187
- url,
188
- options: { method: "POST", body: JSON.stringify(reqBody) },
189
- context
190
- });
191
- }
192
- let { page, project, pageAssignment } = payload;
193
- if (!page || !project || !pageAssignment) {
194
- return reject(
195
- new Error(
196
- // @ts-ignore
197
- payload?.error || "Invalid Weaverse project payload!"
198
- )
199
- );
200
- }
201
- let configs = {
202
- projectId,
203
- weaverseHost,
204
- weaverseVersion,
205
- isDesignMode,
206
- requestInfo: {
207
- i18n,
208
- params,
209
- queries,
210
- pathname: new URL(request.url).pathname,
211
- search: new URL(request.url).search
212
- }
213
- };
214
- if (page?.items) {
215
- let items = page.items;
216
- page.items = await withLoaderData(items, components, configs, args);
217
- }
218
- if (isDesignMode) {
219
- configs.publicEnv = {
220
- PUBLIC_STORE_DOMAIN,
221
- PUBLIC_STOREFRONT_API_TOKEN
222
- };
223
- }
224
- return resolve({ page, configs, project, pageAssignment });
225
- } catch (err) {
226
- console.log(`\u274C Error fetching project data: ${err?.toString()}`);
227
- reject(err);
228
- }
229
- });
230
- }
231
- async function withLoaderData(items, components, configs, args) {
232
- return await Promise.all(
233
- items.map(async (itemData) => {
234
- let type = itemData.type;
235
- let { loader } = components.find(({ schema }) => schema?.type === type) || {};
236
- if (loader && typeof loader === "function") {
237
- try {
238
- return {
239
- ...itemData,
240
- loaderData: await loader({
241
- itemData,
242
- configs,
243
- ...args
244
- })
245
- };
246
- } catch (err) {
247
- console.log(`\u274C Loader run failed! Item: ${itemData}: ${err}`);
248
- return itemData;
249
- }
250
- }
251
- return itemData;
252
- })
253
- );
254
- }
255
-
256
- // src/hydrogen-wrappers.ts
257
- var import_hydrogen2 = require("@shopify/hydrogen");
258
- function getSelectedProductOptions(request) {
259
- let options = (0, import_hydrogen2.getSelectedProductOptions)(request);
260
- return options.filter(
261
- ({ name }) => name !== "isDesignMode" && !name.startsWith("weaverse")
262
- );
263
- }
264
-
265
- // src/hooks/use-theme-settings.ts
266
- var import_react5 = require("@weaverse/react");
267
- function useThemeSettings() {
268
- let weaverse = (0, import_react5.useWeaverse)();
269
- let settings = weaverse?.internal?.project?.config?.theme;
270
- return settings;
271
- }
272
-
273
- // src/index.tsx
443
+ // src/WeaverseHydrogenRoot.tsx
274
444
  function WeaverseHydrogenRoot({
275
445
  errorComponent: ErrorComponent,
276
- ...themeConfigs
446
+ components
277
447
  }) {
278
- let data = (0, import_react6.useLoaderData)();
279
- let weaverseData = data?.weaverseData;
280
- if (weaverseData) {
281
- if (weaverseData instanceof Promise) {
282
- return /* @__PURE__ */ import_react8.default.createElement(import_react_error_boundary.ErrorBoundary, { fallbackRender: ErrorComponent }, /* @__PURE__ */ import_react8.default.createElement(import_react8.Suspense, null, /* @__PURE__ */ import_react8.default.createElement(import_react6.Await, { resolve: weaverseData }, (resolvedData) => {
283
- return /* @__PURE__ */ import_react8.default.createElement(
284
- RenderWeaverseRoot,
285
- {
286
- weaverseData: resolvedData,
287
- ...themeConfigs
288
- }
289
- );
448
+ let loaderData = (0, import_react8.useLoaderData)();
449
+ let data = loaderData?.weaverseData;
450
+ if (data) {
451
+ if (data instanceof Promise) {
452
+ 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) => {
453
+ return /* @__PURE__ */ import_react10.default.createElement(RenderRoot, { data: resolvedData, components });
290
454
  })));
291
455
  }
292
- return /* @__PURE__ */ import_react8.default.createElement(RenderWeaverseRoot, { weaverseData, ...themeConfigs });
456
+ return /* @__PURE__ */ import_react10.default.createElement(RenderRoot, { data, components });
293
457
  }
294
- return /* @__PURE__ */ import_react8.default.createElement(
458
+ return /* @__PURE__ */ import_react10.default.createElement(
295
459
  ErrorComponent,
296
460
  {
297
461
  error: { message: "No Weaverse data return from route loader!" }
298
462
  }
299
463
  );
300
464
  }
301
- function RenderWeaverseRoot(props) {
302
- let { weaverseData, components, countries, themeSchema } = props;
303
- let weaverse = createWeaverseInstance(weaverseData, components);
304
- let { publicEnv } = weaverseData.configs;
305
- useStudio(weaverse, countries, themeSchema, publicEnv);
306
- return /* @__PURE__ */ import_react8.default.createElement(import_react7.WeaverseRoot, { context: weaverse });
465
+ function RenderRoot(props) {
466
+ let { data, components } = props;
467
+ let weaverse = createWeaverseInstance(data, components);
468
+ useStudio(weaverse);
469
+ return /* @__PURE__ */ import_react10.default.createElement(import_react9.WeaverseRoot, { context: weaverse });
307
470
  }
308
471
  // Annotate the CommonJS export names for ESM import in node:
309
472
  0 && (module.exports = {
473
+ WeaverseClient,
310
474
  WeaverseHydrogenRoot,
311
- fetchWithServerCache,
475
+ createContentSecurityPolicy,
476
+ createWeaverseClient,
312
477
  getRequestQueries,
313
478
  getSelectedProductOptions,
479
+ getWeaverseConfigs,
480
+ getWeaverseCsp,
314
481
  useThemeSettings,
315
- weaverseLoader,
316
482
  ...require("@weaverse/react")
317
483
  });