@weaverse/hydrogen 2.8.3 → 2.8.5

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
@@ -57,6 +57,7 @@ declare class WeaverseClient {
57
57
  constructor(args: WeaverseClientArgs);
58
58
  fetchWithCache: <T>(url: string, options?: FetchWithCacheOptions) => Promise<T>;
59
59
  loadThemeSettings: (strategy?: AllCacheOptions) => Promise<any>;
60
+ generateFallbackPage: (message: string) => HydrogenPageData;
60
61
  loadPage: (params?: LoadPageParams) => Promise<WeaverseLoaderData | null>;
61
62
  execComponentLoader: (item: HydrogenComponentData) => Promise<HydrogenComponentData>;
62
63
  }
@@ -286,12 +287,14 @@ type HydrogenThemeEnv = {
286
287
  PUBLIC_CUSTOMER_ACCOUNT_API_CLIENT_ID: string;
287
288
  PUBLIC_CUSTOMER_ACCOUNT_API_URL: string;
288
289
  };
289
- type WeaverseClientArgs = {
290
+ type CreateWeaverseClientArgs = {
290
291
  request: Request;
291
292
  cache: Cache;
292
293
  waitUntil: ExecutionContext['waitUntil'];
293
294
  env: HydrogenThemeEnv;
294
- storefront: Storefront<I18nBase>;
295
+ storefront: Storefront<I18nBase> | any;
296
+ };
297
+ type WeaverseClientArgs = CreateWeaverseClientArgs & {
295
298
  components: HydrogenComponent[];
296
299
  countries?: Localizations;
297
300
  themeSchema: HydrogenThemeSchema;
@@ -347,4 +350,4 @@ declare class WeaverseHydrogenItem extends WeaverseItemStore {
347
350
  set data(update: HydrogenComponentData);
348
351
  }
349
352
 
350
- export { type AllCacheOptions, type BasicInput, type ComponentLoaderArgs, type FetchProjectPayload, type FetchProjectRequestBody, type FetchWithCacheOptions, type HeadingInput, type HeadingInputType, type HydrogenComponent, type HydrogenComponentData, type HydrogenComponentLoaderFunction, type HydrogenComponentPresets, type HydrogenComponentProps, type HydrogenComponentSchema, type HydrogenElement, type HydrogenPageAssignment, type HydrogenPageConfigs, type HydrogenPageData, type HydrogenProjectConfig, type HydrogenProjectType, type HydrogenThemeEnv, type HydrogenThemeInfo, type HydrogenThemeSchema, type HydrogenThemeSettings, type HydrogenToolbarAction, type I18nLocale, type InspectorGroup, type LoadPageParams, type Locale, type Localizations, type PageAssignmentParams, type PageType, type PublicEnv, type RootRouteData, type RouteLoaderArgs, ThemeSettingsStore, type WeaverseArticle, type WeaverseBlog, WeaverseClient, type WeaverseClientArgs, type WeaverseCollection, WeaverseHydrogen, WeaverseHydrogenItem, type WeaverseHydrogenParams, WeaverseHydrogenRoot, type WeaverseHydrogenRootProps, type WeaverseInternal, type WeaverseLoaderData, type WeaverseLoaderRequestInfo, type WeaverseProduct, type WeaverseProjectConfigs, type WeaverseStorefrontData, type WeaverseStudioQueries, type WeaverseThemeConfigs, getRequestQueries, getSelectedProductOptions, getWeaverseConfigs, useThemeSettings, withWeaverse };
353
+ export { type AllCacheOptions, type BasicInput, type ComponentLoaderArgs, type CreateWeaverseClientArgs, type FetchProjectPayload, type FetchProjectRequestBody, type FetchWithCacheOptions, type HeadingInput, type HeadingInputType, type HydrogenComponent, type HydrogenComponentData, type HydrogenComponentLoaderFunction, type HydrogenComponentPresets, type HydrogenComponentProps, type HydrogenComponentSchema, type HydrogenElement, type HydrogenPageAssignment, type HydrogenPageConfigs, type HydrogenPageData, type HydrogenProjectConfig, type HydrogenProjectType, type HydrogenThemeEnv, type HydrogenThemeInfo, type HydrogenThemeSchema, type HydrogenThemeSettings, type HydrogenToolbarAction, type I18nLocale, type InspectorGroup, type LoadPageParams, type Locale, type Localizations, type PageAssignmentParams, type PageType, type PublicEnv, type RootRouteData, type RouteLoaderArgs, ThemeSettingsStore, type WeaverseArticle, type WeaverseBlog, WeaverseClient, type WeaverseClientArgs, type WeaverseCollection, WeaverseHydrogen, WeaverseHydrogenItem, type WeaverseHydrogenParams, WeaverseHydrogenRoot, type WeaverseHydrogenRootProps, type WeaverseInternal, type WeaverseLoaderData, type WeaverseLoaderRequestInfo, type WeaverseProduct, type WeaverseProjectConfigs, type WeaverseStorefrontData, type WeaverseStudioQueries, type WeaverseThemeConfigs, getRequestQueries, getSelectedProductOptions, getWeaverseConfigs, useThemeSettings, withWeaverse };
package/dist/index.d.ts CHANGED
@@ -57,6 +57,7 @@ declare class WeaverseClient {
57
57
  constructor(args: WeaverseClientArgs);
58
58
  fetchWithCache: <T>(url: string, options?: FetchWithCacheOptions) => Promise<T>;
59
59
  loadThemeSettings: (strategy?: AllCacheOptions) => Promise<any>;
60
+ generateFallbackPage: (message: string) => HydrogenPageData;
60
61
  loadPage: (params?: LoadPageParams) => Promise<WeaverseLoaderData | null>;
61
62
  execComponentLoader: (item: HydrogenComponentData) => Promise<HydrogenComponentData>;
62
63
  }
@@ -286,12 +287,14 @@ type HydrogenThemeEnv = {
286
287
  PUBLIC_CUSTOMER_ACCOUNT_API_CLIENT_ID: string;
287
288
  PUBLIC_CUSTOMER_ACCOUNT_API_URL: string;
288
289
  };
289
- type WeaverseClientArgs = {
290
+ type CreateWeaverseClientArgs = {
290
291
  request: Request;
291
292
  cache: Cache;
292
293
  waitUntil: ExecutionContext['waitUntil'];
293
294
  env: HydrogenThemeEnv;
294
- storefront: Storefront<I18nBase>;
295
+ storefront: Storefront<I18nBase> | any;
296
+ };
297
+ type WeaverseClientArgs = CreateWeaverseClientArgs & {
295
298
  components: HydrogenComponent[];
296
299
  countries?: Localizations;
297
300
  themeSchema: HydrogenThemeSchema;
@@ -347,4 +350,4 @@ declare class WeaverseHydrogenItem extends WeaverseItemStore {
347
350
  set data(update: HydrogenComponentData);
348
351
  }
349
352
 
350
- export { type AllCacheOptions, type BasicInput, type ComponentLoaderArgs, type FetchProjectPayload, type FetchProjectRequestBody, type FetchWithCacheOptions, type HeadingInput, type HeadingInputType, type HydrogenComponent, type HydrogenComponentData, type HydrogenComponentLoaderFunction, type HydrogenComponentPresets, type HydrogenComponentProps, type HydrogenComponentSchema, type HydrogenElement, type HydrogenPageAssignment, type HydrogenPageConfigs, type HydrogenPageData, type HydrogenProjectConfig, type HydrogenProjectType, type HydrogenThemeEnv, type HydrogenThemeInfo, type HydrogenThemeSchema, type HydrogenThemeSettings, type HydrogenToolbarAction, type I18nLocale, type InspectorGroup, type LoadPageParams, type Locale, type Localizations, type PageAssignmentParams, type PageType, type PublicEnv, type RootRouteData, type RouteLoaderArgs, ThemeSettingsStore, type WeaverseArticle, type WeaverseBlog, WeaverseClient, type WeaverseClientArgs, type WeaverseCollection, WeaverseHydrogen, WeaverseHydrogenItem, type WeaverseHydrogenParams, WeaverseHydrogenRoot, type WeaverseHydrogenRootProps, type WeaverseInternal, type WeaverseLoaderData, type WeaverseLoaderRequestInfo, type WeaverseProduct, type WeaverseProjectConfigs, type WeaverseStorefrontData, type WeaverseStudioQueries, type WeaverseThemeConfigs, getRequestQueries, getSelectedProductOptions, getWeaverseConfigs, useThemeSettings, withWeaverse };
353
+ export { type AllCacheOptions, type BasicInput, type ComponentLoaderArgs, type CreateWeaverseClientArgs, type FetchProjectPayload, type FetchProjectRequestBody, type FetchWithCacheOptions, type HeadingInput, type HeadingInputType, type HydrogenComponent, type HydrogenComponentData, type HydrogenComponentLoaderFunction, type HydrogenComponentPresets, type HydrogenComponentProps, type HydrogenComponentSchema, type HydrogenElement, type HydrogenPageAssignment, type HydrogenPageConfigs, type HydrogenPageData, type HydrogenProjectConfig, type HydrogenProjectType, type HydrogenThemeEnv, type HydrogenThemeInfo, type HydrogenThemeSchema, type HydrogenThemeSettings, type HydrogenToolbarAction, type I18nLocale, type InspectorGroup, type LoadPageParams, type Locale, type Localizations, type PageAssignmentParams, type PageType, type PublicEnv, type RootRouteData, type RouteLoaderArgs, ThemeSettingsStore, type WeaverseArticle, type WeaverseBlog, WeaverseClient, type WeaverseClientArgs, type WeaverseCollection, WeaverseHydrogen, WeaverseHydrogenItem, type WeaverseHydrogenParams, WeaverseHydrogenRoot, type WeaverseHydrogenRootProps, type WeaverseInternal, type WeaverseLoaderData, type WeaverseLoaderRequestInfo, type WeaverseProduct, type WeaverseProjectConfigs, type WeaverseStorefrontData, type WeaverseStudioQueries, type WeaverseThemeConfigs, getRequestQueries, getSelectedProductOptions, getWeaverseConfigs, useThemeSettings, withWeaverse };
package/dist/index.js CHANGED
@@ -38,15 +38,15 @@ __export(src_exports, {
38
38
  getRequestQueries: () => getRequestQueries,
39
39
  getSelectedProductOptions: () => getSelectedProductOptions,
40
40
  getWeaverseConfigs: () => getWeaverseConfigs,
41
- useChildInstances: () => import_react16.useChildInstances,
42
- useItemInstance: () => import_react16.useItemInstance,
43
- useParentInstance: () => import_react16.useParentInstance,
41
+ useChildInstances: () => import_react14.useChildInstances,
42
+ useItemInstance: () => import_react14.useItemInstance,
43
+ useParentInstance: () => import_react14.useParentInstance,
44
44
  useThemeSettings: () => useThemeSettings,
45
- useWeaverse: () => import_react16.useWeaverse,
45
+ useWeaverse: () => import_react14.useWeaverse,
46
46
  withWeaverse: () => withWeaverse
47
47
  });
48
48
  module.exports = __toCommonJS(src_exports);
49
- var import_react16 = require("@weaverse/react");
49
+ var import_react14 = require("@weaverse/react");
50
50
 
51
51
  // src/components/main.tsx
52
52
  var main_exports = {};
@@ -69,9 +69,9 @@ var schema = {
69
69
  var defaultComponents = [main_exports];
70
70
 
71
71
  // src/WeaverseHydrogenRoot.tsx
72
- var import_react13 = require("@remix-run/react");
73
- var import_react14 = require("@weaverse/react");
74
- var import_react15 = __toESM(require("react"));
72
+ var import_react11 = require("@remix-run/react");
73
+ var import_react12 = require("@weaverse/react");
74
+ var import_react13 = __toESM(require("react"));
75
75
  var import_react_error_boundary = require("react-error-boundary");
76
76
 
77
77
  // src/context.ts
@@ -174,41 +174,19 @@ function useThemeSettings() {
174
174
  }
175
175
 
176
176
  // src/Effect.tsx
177
- var import_react12 = require("react");
178
-
179
- // src/hooks/use-pixel.ts
180
- var import_react7 = require("react");
181
- var import_react8 = require("@remix-run/react");
182
- var fetchingKey = "";
183
- function usePixel(context) {
184
- let { projectId, pageId, weaverseHost, isDesignMode } = context;
185
- let location = (0, import_react8.useLocation)();
186
- (0, import_react7.useEffect)(() => {
187
- if (isDesignMode || !projectId || !pageId || !weaverseHost)
188
- return;
189
- let currentKey = `${projectId}-${pageId}-${location.pathname}`;
190
- if (fetchingKey === currentKey)
191
- return;
192
- fetchingKey = currentKey;
193
- let url = `${weaverseHost}/api/public/px`;
194
- let xhr = new XMLHttpRequest();
195
- xhr.open("POST", url, true);
196
- xhr.setRequestHeader("Content-Type", "application/json");
197
- xhr.send(JSON.stringify({ projectId, pageId }));
198
- }, [location]);
199
- }
177
+ var import_react10 = require("react");
200
178
 
201
179
  // src/hooks/use-studio.ts
202
- var import_react9 = require("@remix-run/react");
203
- var import_react10 = require("@weaverse/react");
204
- var import_react11 = require("react");
180
+ var import_react7 = require("@remix-run/react");
181
+ var import_react8 = require("@weaverse/react");
182
+ var import_react9 = require("react");
205
183
  function useStudio(weaverse) {
206
- let { revalidate } = (0, import_react9.useRevalidator)();
207
- let { pathname, search } = (0, import_react9.useLocation)();
208
- let navigate = (0, import_react9.useNavigate)();
184
+ let { revalidate } = (0, import_react7.useRevalidator)();
185
+ let { pathname, search } = (0, import_react7.useLocation)();
186
+ let navigate = (0, import_react7.useNavigate)();
209
187
  let themeSettingsStore = useThemeContext();
210
188
  let { isDesignMode, weaverseHost, weaverseVersion } = weaverse;
211
- (0, import_react11.useEffect)(() => {
189
+ (0, import_react9.useEffect)(() => {
212
190
  if (isDesignMode) {
213
191
  weaverse.internal = {
214
192
  ...weaverse.internal,
@@ -217,7 +195,7 @@ function useStudio(weaverse) {
217
195
  themeSettingsStore
218
196
  };
219
197
  let studioSrc = `${weaverseHost}/static/studio/hydrogen/index.js?v=${weaverseVersion}`;
220
- (0, import_react10.loadScript)(studioSrc).then(() => {
198
+ (0, import_react8.loadScript)(studioSrc).then(() => {
221
199
  window.weaverseStudio?.init(weaverse);
222
200
  }).catch(console.error);
223
201
  }
@@ -225,31 +203,30 @@ function useStudio(weaverse) {
225
203
  }
226
204
 
227
205
  // src/Effect.tsx
228
- var WeaverseEffect = (0, import_react12.memo)(
206
+ var WeaverseEffect = (0, import_react10.memo)(
229
207
  ({ context }) => {
230
208
  useStudio(context);
231
- usePixel(context);
232
209
  return null;
233
210
  }
234
211
  );
235
212
 
236
213
  // src/WeaverseHydrogenRoot.tsx
237
- var WeaverseHydrogenRoot = (0, import_react15.memo)(
214
+ var WeaverseHydrogenRoot = (0, import_react13.memo)(
238
215
  ({
239
216
  errorComponent: ErrorComponent = FallbackError,
240
217
  components
241
218
  }) => {
242
- let loaderData = (0, import_react13.useLoaderData)();
219
+ let loaderData = (0, import_react11.useLoaderData)();
243
220
  let data = loaderData?.weaverseData;
244
221
  if (data) {
245
222
  if (data instanceof Promise) {
246
- return /* @__PURE__ */ import_react15.default.createElement(import_react_error_boundary.ErrorBoundary, { fallbackRender: ErrorComponent }, /* @__PURE__ */ import_react15.default.createElement(import_react15.Suspense, null, /* @__PURE__ */ import_react15.default.createElement(import_react13.Await, { resolve: data }, (resolvedData) => {
247
- return /* @__PURE__ */ import_react15.default.createElement(RenderRoot, { data: resolvedData, components });
223
+ return /* @__PURE__ */ import_react13.default.createElement(import_react_error_boundary.ErrorBoundary, { fallbackRender: ErrorComponent }, /* @__PURE__ */ import_react13.default.createElement(import_react13.Suspense, null, /* @__PURE__ */ import_react13.default.createElement(import_react11.Await, { resolve: data }, (resolvedData) => {
224
+ return /* @__PURE__ */ import_react13.default.createElement(RenderRoot, { data: resolvedData, components });
248
225
  })));
249
226
  }
250
- return /* @__PURE__ */ import_react15.default.createElement(RenderRoot, { data, components });
227
+ return /* @__PURE__ */ import_react13.default.createElement(RenderRoot, { data, components });
251
228
  }
252
- return /* @__PURE__ */ import_react15.default.createElement(
229
+ return /* @__PURE__ */ import_react13.default.createElement(
253
230
  ErrorComponent,
254
231
  {
255
232
  error: { message: "No Weaverse data return from route loader!" }
@@ -260,17 +237,17 @@ var WeaverseHydrogenRoot = (0, import_react15.memo)(
260
237
  function RenderRoot(props) {
261
238
  let { data, components } = props;
262
239
  let weaverse = createWeaverseInstance(data, components);
263
- return /* @__PURE__ */ import_react15.default.createElement(import_react15.default.Fragment, null, /* @__PURE__ */ import_react15.default.createElement(import_react14.WeaverseRoot, { context: weaverse }), /* @__PURE__ */ import_react15.default.createElement(WeaverseEffect, { context: weaverse }));
240
+ return /* @__PURE__ */ import_react13.default.createElement(import_react13.default.Fragment, null, /* @__PURE__ */ import_react13.default.createElement(import_react12.WeaverseRoot, { context: weaverse }), /* @__PURE__ */ import_react13.default.createElement(WeaverseEffect, { context: weaverse }));
264
241
  }
265
242
  function withWeaverse(Component) {
266
243
  return (props) => {
267
- let loaderData = (0, import_react13.useRouteLoaderData)("root");
244
+ let loaderData = (0, import_react11.useRouteLoaderData)("root");
268
245
  let themeSettingsStore = new ThemeSettingsStore(loaderData?.weaverseTheme);
269
- return /* @__PURE__ */ import_react15.default.createElement(ThemeProvider.Provider, { value: themeSettingsStore }, /* @__PURE__ */ import_react15.default.createElement(Component, { ...props }));
246
+ return /* @__PURE__ */ import_react13.default.createElement(ThemeProvider.Provider, { value: themeSettingsStore }, /* @__PURE__ */ import_react13.default.createElement(Component, { ...props }));
270
247
  };
271
248
  }
272
249
  function FallbackError({ error }) {
273
- return /* @__PURE__ */ import_react15.default.createElement("div", null, error?.message || "An unexpected error occurred");
250
+ return /* @__PURE__ */ import_react13.default.createElement("div", null, error?.message || "An unexpected error occurred");
274
251
  }
275
252
 
276
253
  // src/weaverse-client.ts
@@ -281,7 +258,7 @@ var package_default = {
281
258
  name: "@weaverse/hydrogen",
282
259
  author: "Weaverse Team",
283
260
  description: "Components, hooks, and utilities for building Shopify Hydrogen websites with Weaverse",
284
- version: "2.8.3",
261
+ version: "2.8.5",
285
262
  license: "MIT",
286
263
  main: "dist/index.js",
287
264
  typings: "dist/index.d.ts",
@@ -319,7 +296,7 @@ var package_default = {
319
296
  singleQuote: true
320
297
  },
321
298
  dependencies: {
322
- "@weaverse/react": "2.8.3",
299
+ "@weaverse/react": "2.8.5",
323
300
  "react-error-boundary": "^4.0.11"
324
301
  },
325
302
  devDependencies: {
@@ -496,6 +473,20 @@ var WeaverseClient = class {
496
473
  return null;
497
474
  }
498
475
  };
476
+ generateFallbackPage = (message) => {
477
+ return {
478
+ id: "fallback" + Date.now(),
479
+ rootId: "root",
480
+ name: "Error",
481
+ items: [
482
+ {
483
+ type: "main",
484
+ id: "main",
485
+ data: { dangerouslySetInnerHTML: { __html: message } }
486
+ }
487
+ ]
488
+ };
489
+ };
499
490
  loadPage = async (params = {}) => {
500
491
  return new Promise(async (resolve, reject) => {
501
492
  try {
@@ -532,7 +523,9 @@ var WeaverseClient = class {
532
523
  throw new Error(`Weaverse project not found. Id: ${projectId}`);
533
524
  }
534
525
  if (!page) {
535
- throw new Error(`No Weaverse page assigned to this url.`);
526
+ page = this.generateFallbackPage(
527
+ `No Weaverse page assigned to this url.1`
528
+ );
536
529
  }
537
530
  if (page?.items) {
538
531
  let items = page.items;
@@ -592,7 +585,7 @@ function getSelectedProductOptions(request) {
592
585
  }
593
586
 
594
587
  // src/index.ts
595
- var WeaverseHydrogen = class extends import_react16.Weaverse {
588
+ var WeaverseHydrogen = class extends import_react14.Weaverse {
596
589
  platformType = "shopify-hydrogen";
597
590
  pageId;
598
591
  internal;
@@ -609,7 +602,7 @@ var WeaverseHydrogen = class extends import_react16.Weaverse {
609
602
  }
610
603
  registerComponents = (components) => {
611
604
  components.forEach((comp) => {
612
- import_react16.Weaverse.registerElement({
605
+ import_react14.Weaverse.registerElement({
613
606
  type: comp?.schema?.type,
614
607
  Component: comp?.default,
615
608
  schema: comp?.schema,
@@ -618,7 +611,7 @@ var WeaverseHydrogen = class extends import_react16.Weaverse {
618
611
  });
619
612
  };
620
613
  };
621
- var WeaverseHydrogenItem = class extends import_react16.WeaverseItemStore {
614
+ var WeaverseHydrogenItem = class extends import_react14.WeaverseItemStore {
622
615
  constructor(initialData, weaverse) {
623
616
  super(initialData, weaverse);
624
617
  let { data, ...rest } = initialData;
package/dist/index.mjs CHANGED
@@ -142,39 +142,17 @@ function useThemeSettings() {
142
142
  // src/Effect.tsx
143
143
  import { memo } from "react";
144
144
 
145
- // src/hooks/use-pixel.ts
146
- import { useEffect } from "react";
147
- import { useLocation } from "@remix-run/react";
148
- var fetchingKey = "";
149
- function usePixel(context) {
150
- let { projectId, pageId, weaverseHost, isDesignMode } = context;
151
- let location = useLocation();
152
- useEffect(() => {
153
- if (isDesignMode || !projectId || !pageId || !weaverseHost)
154
- return;
155
- let currentKey = `${projectId}-${pageId}-${location.pathname}`;
156
- if (fetchingKey === currentKey)
157
- return;
158
- fetchingKey = currentKey;
159
- let url = `${weaverseHost}/api/public/px`;
160
- let xhr = new XMLHttpRequest();
161
- xhr.open("POST", url, true);
162
- xhr.setRequestHeader("Content-Type", "application/json");
163
- xhr.send(JSON.stringify({ projectId, pageId }));
164
- }, [location]);
165
- }
166
-
167
145
  // src/hooks/use-studio.ts
168
- import { useLocation as useLocation2, useNavigate, useRevalidator } from "@remix-run/react";
146
+ import { useLocation, useNavigate, useRevalidator } from "@remix-run/react";
169
147
  import { loadScript } from "@weaverse/react";
170
- import { useEffect as useEffect2 } from "react";
148
+ import { useEffect } from "react";
171
149
  function useStudio(weaverse) {
172
150
  let { revalidate } = useRevalidator();
173
- let { pathname, search } = useLocation2();
151
+ let { pathname, search } = useLocation();
174
152
  let navigate = useNavigate();
175
153
  let themeSettingsStore = useThemeContext();
176
154
  let { isDesignMode, weaverseHost, weaverseVersion } = weaverse;
177
- useEffect2(() => {
155
+ useEffect(() => {
178
156
  if (isDesignMode) {
179
157
  weaverse.internal = {
180
158
  ...weaverse.internal,
@@ -194,7 +172,6 @@ function useStudio(weaverse) {
194
172
  var WeaverseEffect = memo(
195
173
  ({ context }) => {
196
174
  useStudio(context);
197
- usePixel(context);
198
175
  return null;
199
176
  }
200
177
  );
@@ -247,7 +224,7 @@ var package_default = {
247
224
  name: "@weaverse/hydrogen",
248
225
  author: "Weaverse Team",
249
226
  description: "Components, hooks, and utilities for building Shopify Hydrogen websites with Weaverse",
250
- version: "2.8.3",
227
+ version: "2.8.5",
251
228
  license: "MIT",
252
229
  main: "dist/index.js",
253
230
  typings: "dist/index.d.ts",
@@ -285,7 +262,7 @@ var package_default = {
285
262
  singleQuote: true
286
263
  },
287
264
  dependencies: {
288
- "@weaverse/react": "2.8.3",
265
+ "@weaverse/react": "2.8.5",
289
266
  "react-error-boundary": "^4.0.11"
290
267
  },
291
268
  devDependencies: {
@@ -462,6 +439,20 @@ var WeaverseClient = class {
462
439
  return null;
463
440
  }
464
441
  };
442
+ generateFallbackPage = (message) => {
443
+ return {
444
+ id: "fallback" + Date.now(),
445
+ rootId: "root",
446
+ name: "Error",
447
+ items: [
448
+ {
449
+ type: "main",
450
+ id: "main",
451
+ data: { dangerouslySetInnerHTML: { __html: message } }
452
+ }
453
+ ]
454
+ };
455
+ };
465
456
  loadPage = async (params = {}) => {
466
457
  return new Promise(async (resolve, reject) => {
467
458
  try {
@@ -498,7 +489,9 @@ var WeaverseClient = class {
498
489
  throw new Error(`Weaverse project not found. Id: ${projectId}`);
499
490
  }
500
491
  if (!page) {
501
- throw new Error(`No Weaverse page assigned to this url.`);
492
+ page = this.generateFallbackPage(
493
+ `No Weaverse page assigned to this url.1`
494
+ );
502
495
  }
503
496
  if (page?.items) {
504
497
  let items = page.items;
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.8.3",
5
+ "version": "2.8.5",
6
6
  "license": "MIT",
7
7
  "main": "dist/index.js",
8
8
  "typings": "dist/index.d.ts",
@@ -40,10 +40,10 @@
40
40
  "singleQuote": true
41
41
  },
42
42
  "dependencies": {
43
- "@weaverse/react": "2.8.3",
43
+ "@weaverse/react": "2.8.5",
44
44
  "react-error-boundary": "^4.0.11"
45
45
  },
46
46
  "devDependencies": {
47
47
  "@shopify/remix-oxygen": "^2.0.1"
48
48
  }
49
- }
49
+ }
package/readme.md CHANGED
@@ -34,7 +34,7 @@ Initialize the Weaverse Client to establish a connection between your Hydrogen p
34
34
  ```typescript
35
35
  // <root>/server.ts
36
36
 
37
- import {createWeaverseClient} from '~/weaverse/create-weaverse.server';
37
+ import { createWeaverseClient } from '~/weaverse/create-weaverse.server'
38
38
 
39
39
  const handleRequest = createRequestHandler({
40
40
  // ...
@@ -49,8 +49,7 @@ const handleRequest = createRequestHandler({
49
49
  }),
50
50
  // ... more app context properties
51
51
  }),
52
- });
53
-
52
+ })
54
53
  ```
55
54
 
56
55
  ### Data Fetching and Rendering
@@ -60,19 +59,18 @@ Use the Weaverse Client to fetch data such as page content and global theme sett
60
59
  ```typescript
61
60
  // <root>/app/routes/($locale)._index.tsx
62
61
 
63
- import { json } from '@shopify/remix-oxygen';
64
- import { type RouteLoaderArgs } from '@weaverse/hydrogen';
62
+ import { json } from '@shopify/remix-oxygen'
63
+ import { type RouteLoaderArgs } from '@weaverse/hydrogen'
65
64
 
66
- export async function loader({context}: RouteLoaderArgs) {
67
- let {weaverse} = context;
65
+ export async function loader({ context }: RouteLoaderArgs) {
66
+ let { weaverse } = context
68
67
 
69
68
  return json({
70
69
  // The key prop for a Weaverse page must always be `weaverseData`
71
70
  weaverseData: await weaverse.loadPage(),
72
71
  // Additional page data...
73
- });
72
+ })
74
73
  }
75
-
76
74
  ```
77
75
 
78
76
  Implement the `WeaverseHydrogenRoot` component to render the fetched content:
@@ -80,9 +78,9 @@ Implement the `WeaverseHydrogenRoot` component to render the fetched content:
80
78
  ```jsx
81
79
  // <root>/app/weaverse/index.tsx
82
80
 
83
- import {WeaverseHydrogenRoot} from '@weaverse/hydrogen';
84
- import {GenericError} from '~/components/GenericError';
85
- import {components} from './components';
81
+ import { WeaverseHydrogenRoot } from '@weaverse/hydrogen'
82
+ import { GenericError } from '~/components/GenericError'
83
+ import { components } from './components'
86
84
 
87
85
  export function WeaverseContent() {
88
86
  return (
@@ -90,18 +88,16 @@ export function WeaverseContent() {
90
88
  components={components}
91
89
  errorComponent={GenericError}
92
90
  />
93
- );
91
+ )
94
92
  }
95
93
 
96
-
97
94
  // <root>/app/routes/($locale)._index.tsx
98
95
 
99
- import { WeaverseContent } from '~/weaverse';
96
+ import { WeaverseContent } from '~/weaverse'
100
97
 
101
98
  export default function Homepage() {
102
- return <WeaverseContent />;
99
+ return <WeaverseContent />
103
100
  }
104
-
105
101
  ```
106
102
 
107
103
  ### Defining Component Schema
@@ -109,7 +105,7 @@ export default function Homepage() {
109
105
  Define your component's schema to control its behavior and interactivity within Weaverse Studio:
110
106
 
111
107
  ```typescript
112
- import type { HydrogenComponentSchema } from '@weaverse/hydrogen';
108
+ import type { HydrogenComponentSchema } from '@weaverse/hydrogen'
113
109
 
114
110
  export let schema: HydrogenComponentSchema = {
115
111
  title: 'Product Card',
@@ -117,17 +113,13 @@ export let schema: HydrogenComponentSchema = {
117
113
  inspector: [
118
114
  {
119
115
  group: 'Settings',
120
- inputs: [] // Defining input settings
121
- }
116
+ inputs: [], // Defining input settings
117
+ },
122
118
  ],
123
119
  childTypes: ['image', 'product-title', 'price'],
124
120
  presets: {
125
121
  type: 'product-card',
126
- children: [
127
- { type: 'image' },
128
- { type: 'product-title' },
129
- { type: 'price' },
130
- ],
122
+ children: [{ type: 'image' }, { type: 'product-title' }, { type: 'price' }],
131
123
  },
132
124
  limit: 3,
133
125
  enabledOn: {
@@ -135,8 +127,7 @@ export let schema: HydrogenComponentSchema = {
135
127
  groups: ['body'],
136
128
  },
137
129
  toolbar: ['general-settings', ['duplicate', 'delete']],
138
- };
139
-
130
+ }
140
131
  ```
141
132
 
142
133
  ### Customizing Input Settings
@@ -170,4 +161,3 @@ for more details on how to contribute effectively.
170
161
 
171
162
  This package is created by The Weaverse Team ([https://weaverse.io](https://weaverse.io)) and is licensed under the MIT
172
163
  License.
173
-