@weaverse/hydrogen 2.0.1 → 2.1.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
@@ -1,31 +1,12 @@
1
1
  import { ElementData, ElementSchema, BasicInput, WeaverseElement, WeaverseCoreParams, WeaverseProjectDataType, Weaverse, PlatformTypeEnum, WeaverseItemStore } from '@weaverse/react';
2
- import { Params, NavigateFunction } from '@remix-run/react';
2
+ export { WeaverseImage } from '@weaverse/react';
3
+ import { NavigateFunction } from '@remix-run/react';
3
4
  import { createWithCache, Storefront } from '@shopify/hydrogen';
4
5
  import { LanguageCode, CountryCode, CurrencyCode } from '@shopify/hydrogen/storefront-api-types';
5
6
  import { LoaderArgs, AppLoadContext } from '@shopify/remix-oxygen';
6
7
  import React, { ForwardRefExoticComponent } from 'react';
7
8
  import * as _shopify_hydrogen_react_storefront_api_types from '@shopify/hydrogen-react/storefront-api-types';
8
9
 
9
- declare class WeaverseClient {
10
- API: string;
11
- clientVersion: string;
12
- basePageConfigs: Omit<WeaverseProjectConfigs, 'requestInfo'>;
13
- basePageRequestBody: Omit<FetchProjectRequestBody, 'url'>;
14
- storefront: WeaverseClientArgs['storefront'];
15
- components: HydrogenComponent[];
16
- countries?: Localizations;
17
- themeSchema: HydrogenThemeSchema;
18
- configs: WeaverseProjectConfigs;
19
- withCache: WeaverseClientArgs['withCache'];
20
- constructor(args: WeaverseClientArgs);
21
- fetchWithCache: <T>(url: string, options: FetchWithCacheOptions) => Promise<T>;
22
- loadThemeSettings: (strategy?: AllCacheOptions) => Promise<any>;
23
- loadPage: (args: LoaderArgs, configs?: PageLoadParams & {
24
- strategy?: AllCacheOptions;
25
- }) => Promise<WeaverseLoaderData | null>;
26
- execComponentLoader: (item: HydrogenComponentData, args: LoaderArgs) => Promise<HydrogenComponentData>;
27
- }
28
-
29
10
  declare class ThemeSettingsStore {
30
11
  settings: HydrogenThemeSettings | null;
31
12
  listeners: (() => void)[];
@@ -58,13 +39,35 @@ declare let STORE_PAGES: {
58
39
  CUSTOM: string;
59
40
  };
60
41
 
42
+ declare class WeaverseClient {
43
+ API: string;
44
+ clientVersion: string;
45
+ basePageConfigs: Omit<WeaverseProjectConfigs, 'requestInfo'>;
46
+ basePageRequestBody: Omit<FetchProjectRequestBody, 'url'>;
47
+ configs: WeaverseProjectConfigs;
48
+ request: WeaverseClientArgs['request'];
49
+ storefront: WeaverseClientArgs['storefront'];
50
+ components: WeaverseClientArgs['components'];
51
+ themeSchema: WeaverseClientArgs['themeSchema'];
52
+ env: WeaverseClientArgs['env'];
53
+ withCache: WeaverseClientArgs['withCache'];
54
+ countries?: WeaverseClientArgs['countries'];
55
+ constructor(args: WeaverseClientArgs);
56
+ fetchWithCache: <T>(url: string, options: FetchWithCacheOptions) => Promise<T>;
57
+ loadThemeSettings: (strategy?: AllCacheOptions) => Promise<{} | null>;
58
+ loadPage: (params?: LoadPageParams) => Promise<WeaverseLoaderData | null>;
59
+ execComponentLoader: (item: HydrogenComponentData) => Promise<HydrogenComponentData>;
60
+ }
61
+
61
62
  type Locale = {
62
63
  language: LanguageCode;
63
64
  country: CountryCode;
64
65
  label: string;
65
66
  currency: CurrencyCode;
66
67
  };
67
- type Localizations = Record<string, Locale>;
68
+ type Localizations = {
69
+ [key: string]: Locale;
70
+ };
68
71
  interface AllCacheOptions {
69
72
  mode?: string;
70
73
  maxAge?: number;
@@ -72,8 +75,11 @@ interface AllCacheOptions {
72
75
  sMaxAge?: number;
73
76
  staleIfError?: number;
74
77
  }
75
- type ComponentLoaderArgs = LoaderArgs & {
76
- itemData: HydrogenComponentData;
78
+ type ComponentLoaderArgs<T = {
79
+ [key: string]: any;
80
+ }> = {
81
+ data: T;
82
+ weaverse: WeaverseClient;
77
83
  };
78
84
  interface RouteLoaderArgs extends LoaderArgs {
79
85
  context: AppLoadContext & {
@@ -81,7 +87,9 @@ interface RouteLoaderArgs extends LoaderArgs {
81
87
  };
82
88
  }
83
89
  interface HydrogenComponentData extends ElementData {
84
- data?: Record<string, any>;
90
+ data?: {
91
+ [key: string]: any;
92
+ };
85
93
  children?: {
86
94
  id: string;
87
95
  }[];
@@ -114,10 +122,11 @@ type I18nLocale = Locale & {
114
122
  pathPrefix: string;
115
123
  };
116
124
  type WeaverseLoaderRequestInfo = {
117
- params: Params;
118
125
  search: string;
119
126
  pathname: string;
120
- queries: Record<string, string | boolean>;
127
+ queries: {
128
+ [key: string]: string | boolean;
129
+ };
121
130
  i18n: I18nLocale;
122
131
  };
123
132
  type WeaverseStorefrontData = {
@@ -137,7 +146,6 @@ type HydrogenProjectType = {
137
146
  id: string;
138
147
  weaverseShopId: string;
139
148
  name: string;
140
- config: HydrogenProjectConfig;
141
149
  [key: string]: any;
142
150
  };
143
151
  type WeaverseThemeConfigs = {
@@ -235,17 +243,20 @@ interface HydrogenThemeSchema {
235
243
  inspector: InspectorGroup[];
236
244
  }
237
245
  type PageType = keyof typeof STORE_PAGES;
238
- type PageLoadParams = {
246
+ type PageAssignmentParams = {
239
247
  type?: PageType;
240
248
  locale?: string;
241
249
  handle?: string;
242
250
  };
251
+ type LoadPageParams = PageAssignmentParams & {
252
+ strategy?: AllCacheOptions;
253
+ };
243
254
  type FetchProjectRequestBody = {
244
255
  projectId: string;
245
256
  url: string;
246
257
  countries?: Localizations;
247
258
  i18n?: I18nLocale;
248
- params?: PageLoadParams;
259
+ params?: PageAssignmentParams;
249
260
  isDesignMode?: boolean;
250
261
  };
251
262
  type FetchProjectPayload = {
@@ -260,8 +271,9 @@ type HydrogenThemeEnv = {
260
271
  PUBLIC_STOREFRONT_API_TOKEN: string;
261
272
  };
262
273
  type WeaverseClientArgs = {
274
+ request: Request;
263
275
  withCache: ReturnType<typeof createWithCache>;
264
- configs: WeaverseProjectConfigs;
276
+ env: HydrogenThemeEnv;
265
277
  storefront: Storefront<I18nLocale>;
266
278
  components: HydrogenComponent[];
267
279
  countries?: Localizations;
@@ -315,4 +327,4 @@ declare class WeaverseHydrogenItem extends WeaverseItemStore {
315
327
  set data(update: HydrogenComponentData);
316
328
  }
317
329
 
318
- export { AllCacheOptions, ComponentLoaderArgs, FetchProjectPayload, FetchProjectRequestBody, FetchWithCacheOptions, HydrogenComponent, HydrogenComponentData, HydrogenComponentLoaderFunction, HydrogenComponentPresets, HydrogenComponentProps, HydrogenComponentSchema, HydrogenElement, HydrogenPageAssignment, HydrogenPageConfigs, HydrogenPageData, HydrogenProjectConfig, HydrogenProjectType, HydrogenThemeEnv, HydrogenThemeInfo, HydrogenThemeSchema, HydrogenThemeSettings, HydrogenToolbarAction, I18nLocale, InspectorGroup, Locale, Localizations, PageLoadParams, PageType, PublicEnv, RootRouteData, RouteLoaderArgs, ThemeSettingsStore, WeaverseClient, WeaverseClientArgs, WeaverseHydrogen, WeaverseHydrogenItem, WeaverseHydrogenParams, WeaverseHydrogenRoot, WeaverseHydrogenRootProps, WeaverseInternal, WeaverseLoaderData, WeaverseLoaderRequestInfo, WeaverseProjectConfigs, WeaverseStorefrontData, WeaverseStudioQueries, WeaverseThemeConfigs, getRequestQueries, getSelectedProductOptions, getWeaverseConfigs, useThemeSettings, withWeaverse };
330
+ export { AllCacheOptions, ComponentLoaderArgs, FetchProjectPayload, FetchProjectRequestBody, FetchWithCacheOptions, HydrogenComponent, HydrogenComponentData, HydrogenComponentLoaderFunction, HydrogenComponentPresets, HydrogenComponentProps, HydrogenComponentSchema, HydrogenElement, HydrogenPageAssignment, HydrogenPageConfigs, HydrogenPageData, HydrogenProjectConfig, HydrogenProjectType, HydrogenThemeEnv, HydrogenThemeInfo, HydrogenThemeSchema, HydrogenThemeSettings, HydrogenToolbarAction, I18nLocale, InspectorGroup, LoadPageParams, Locale, Localizations, PageAssignmentParams, PageType, PublicEnv, RootRouteData, RouteLoaderArgs, ThemeSettingsStore, WeaverseClient, WeaverseClientArgs, WeaverseHydrogen, WeaverseHydrogenItem, WeaverseHydrogenParams, WeaverseHydrogenRoot, WeaverseHydrogenRootProps, WeaverseInternal, WeaverseLoaderData, WeaverseLoaderRequestInfo, WeaverseProjectConfigs, WeaverseStorefrontData, WeaverseStudioQueries, WeaverseThemeConfigs, getRequestQueries, getSelectedProductOptions, getWeaverseConfigs, useThemeSettings, withWeaverse };
package/dist/index.d.ts CHANGED
@@ -1,31 +1,12 @@
1
1
  import { ElementData, ElementSchema, BasicInput, WeaverseElement, WeaverseCoreParams, WeaverseProjectDataType, Weaverse, PlatformTypeEnum, WeaverseItemStore } from '@weaverse/react';
2
- import { Params, NavigateFunction } from '@remix-run/react';
2
+ export { WeaverseImage } from '@weaverse/react';
3
+ import { NavigateFunction } from '@remix-run/react';
3
4
  import { createWithCache, Storefront } from '@shopify/hydrogen';
4
5
  import { LanguageCode, CountryCode, CurrencyCode } from '@shopify/hydrogen/storefront-api-types';
5
6
  import { LoaderArgs, AppLoadContext } from '@shopify/remix-oxygen';
6
7
  import React, { ForwardRefExoticComponent } from 'react';
7
8
  import * as _shopify_hydrogen_react_storefront_api_types from '@shopify/hydrogen-react/storefront-api-types';
8
9
 
9
- declare class WeaverseClient {
10
- API: string;
11
- clientVersion: string;
12
- basePageConfigs: Omit<WeaverseProjectConfigs, 'requestInfo'>;
13
- basePageRequestBody: Omit<FetchProjectRequestBody, 'url'>;
14
- storefront: WeaverseClientArgs['storefront'];
15
- components: HydrogenComponent[];
16
- countries?: Localizations;
17
- themeSchema: HydrogenThemeSchema;
18
- configs: WeaverseProjectConfigs;
19
- withCache: WeaverseClientArgs['withCache'];
20
- constructor(args: WeaverseClientArgs);
21
- fetchWithCache: <T>(url: string, options: FetchWithCacheOptions) => Promise<T>;
22
- loadThemeSettings: (strategy?: AllCacheOptions) => Promise<any>;
23
- loadPage: (args: LoaderArgs, configs?: PageLoadParams & {
24
- strategy?: AllCacheOptions;
25
- }) => Promise<WeaverseLoaderData | null>;
26
- execComponentLoader: (item: HydrogenComponentData, args: LoaderArgs) => Promise<HydrogenComponentData>;
27
- }
28
-
29
10
  declare class ThemeSettingsStore {
30
11
  settings: HydrogenThemeSettings | null;
31
12
  listeners: (() => void)[];
@@ -58,13 +39,35 @@ declare let STORE_PAGES: {
58
39
  CUSTOM: string;
59
40
  };
60
41
 
42
+ declare class WeaverseClient {
43
+ API: string;
44
+ clientVersion: string;
45
+ basePageConfigs: Omit<WeaverseProjectConfigs, 'requestInfo'>;
46
+ basePageRequestBody: Omit<FetchProjectRequestBody, 'url'>;
47
+ configs: WeaverseProjectConfigs;
48
+ request: WeaverseClientArgs['request'];
49
+ storefront: WeaverseClientArgs['storefront'];
50
+ components: WeaverseClientArgs['components'];
51
+ themeSchema: WeaverseClientArgs['themeSchema'];
52
+ env: WeaverseClientArgs['env'];
53
+ withCache: WeaverseClientArgs['withCache'];
54
+ countries?: WeaverseClientArgs['countries'];
55
+ constructor(args: WeaverseClientArgs);
56
+ fetchWithCache: <T>(url: string, options: FetchWithCacheOptions) => Promise<T>;
57
+ loadThemeSettings: (strategy?: AllCacheOptions) => Promise<{} | null>;
58
+ loadPage: (params?: LoadPageParams) => Promise<WeaverseLoaderData | null>;
59
+ execComponentLoader: (item: HydrogenComponentData) => Promise<HydrogenComponentData>;
60
+ }
61
+
61
62
  type Locale = {
62
63
  language: LanguageCode;
63
64
  country: CountryCode;
64
65
  label: string;
65
66
  currency: CurrencyCode;
66
67
  };
67
- type Localizations = Record<string, Locale>;
68
+ type Localizations = {
69
+ [key: string]: Locale;
70
+ };
68
71
  interface AllCacheOptions {
69
72
  mode?: string;
70
73
  maxAge?: number;
@@ -72,8 +75,11 @@ interface AllCacheOptions {
72
75
  sMaxAge?: number;
73
76
  staleIfError?: number;
74
77
  }
75
- type ComponentLoaderArgs = LoaderArgs & {
76
- itemData: HydrogenComponentData;
78
+ type ComponentLoaderArgs<T = {
79
+ [key: string]: any;
80
+ }> = {
81
+ data: T;
82
+ weaverse: WeaverseClient;
77
83
  };
78
84
  interface RouteLoaderArgs extends LoaderArgs {
79
85
  context: AppLoadContext & {
@@ -81,7 +87,9 @@ interface RouteLoaderArgs extends LoaderArgs {
81
87
  };
82
88
  }
83
89
  interface HydrogenComponentData extends ElementData {
84
- data?: Record<string, any>;
90
+ data?: {
91
+ [key: string]: any;
92
+ };
85
93
  children?: {
86
94
  id: string;
87
95
  }[];
@@ -114,10 +122,11 @@ type I18nLocale = Locale & {
114
122
  pathPrefix: string;
115
123
  };
116
124
  type WeaverseLoaderRequestInfo = {
117
- params: Params;
118
125
  search: string;
119
126
  pathname: string;
120
- queries: Record<string, string | boolean>;
127
+ queries: {
128
+ [key: string]: string | boolean;
129
+ };
121
130
  i18n: I18nLocale;
122
131
  };
123
132
  type WeaverseStorefrontData = {
@@ -137,7 +146,6 @@ type HydrogenProjectType = {
137
146
  id: string;
138
147
  weaverseShopId: string;
139
148
  name: string;
140
- config: HydrogenProjectConfig;
141
149
  [key: string]: any;
142
150
  };
143
151
  type WeaverseThemeConfigs = {
@@ -235,17 +243,20 @@ interface HydrogenThemeSchema {
235
243
  inspector: InspectorGroup[];
236
244
  }
237
245
  type PageType = keyof typeof STORE_PAGES;
238
- type PageLoadParams = {
246
+ type PageAssignmentParams = {
239
247
  type?: PageType;
240
248
  locale?: string;
241
249
  handle?: string;
242
250
  };
251
+ type LoadPageParams = PageAssignmentParams & {
252
+ strategy?: AllCacheOptions;
253
+ };
243
254
  type FetchProjectRequestBody = {
244
255
  projectId: string;
245
256
  url: string;
246
257
  countries?: Localizations;
247
258
  i18n?: I18nLocale;
248
- params?: PageLoadParams;
259
+ params?: PageAssignmentParams;
249
260
  isDesignMode?: boolean;
250
261
  };
251
262
  type FetchProjectPayload = {
@@ -260,8 +271,9 @@ type HydrogenThemeEnv = {
260
271
  PUBLIC_STOREFRONT_API_TOKEN: string;
261
272
  };
262
273
  type WeaverseClientArgs = {
274
+ request: Request;
263
275
  withCache: ReturnType<typeof createWithCache>;
264
- configs: WeaverseProjectConfigs;
276
+ env: HydrogenThemeEnv;
265
277
  storefront: Storefront<I18nLocale>;
266
278
  components: HydrogenComponent[];
267
279
  countries?: Localizations;
@@ -315,4 +327,4 @@ declare class WeaverseHydrogenItem extends WeaverseItemStore {
315
327
  set data(update: HydrogenComponentData);
316
328
  }
317
329
 
318
- export { AllCacheOptions, ComponentLoaderArgs, FetchProjectPayload, FetchProjectRequestBody, FetchWithCacheOptions, HydrogenComponent, HydrogenComponentData, HydrogenComponentLoaderFunction, HydrogenComponentPresets, HydrogenComponentProps, HydrogenComponentSchema, HydrogenElement, HydrogenPageAssignment, HydrogenPageConfigs, HydrogenPageData, HydrogenProjectConfig, HydrogenProjectType, HydrogenThemeEnv, HydrogenThemeInfo, HydrogenThemeSchema, HydrogenThemeSettings, HydrogenToolbarAction, I18nLocale, InspectorGroup, Locale, Localizations, PageLoadParams, PageType, PublicEnv, RootRouteData, RouteLoaderArgs, ThemeSettingsStore, WeaverseClient, WeaverseClientArgs, WeaverseHydrogen, WeaverseHydrogenItem, WeaverseHydrogenParams, WeaverseHydrogenRoot, WeaverseHydrogenRootProps, WeaverseInternal, WeaverseLoaderData, WeaverseLoaderRequestInfo, WeaverseProjectConfigs, WeaverseStorefrontData, WeaverseStudioQueries, WeaverseThemeConfigs, getRequestQueries, getSelectedProductOptions, getWeaverseConfigs, useThemeSettings, withWeaverse };
330
+ export { AllCacheOptions, ComponentLoaderArgs, FetchProjectPayload, FetchProjectRequestBody, FetchWithCacheOptions, HydrogenComponent, HydrogenComponentData, HydrogenComponentLoaderFunction, HydrogenComponentPresets, HydrogenComponentProps, HydrogenComponentSchema, HydrogenElement, HydrogenPageAssignment, HydrogenPageConfigs, HydrogenPageData, HydrogenProjectConfig, HydrogenProjectType, HydrogenThemeEnv, HydrogenThemeInfo, HydrogenThemeSchema, HydrogenThemeSettings, HydrogenToolbarAction, I18nLocale, InspectorGroup, LoadPageParams, Locale, Localizations, PageAssignmentParams, PageType, PublicEnv, RootRouteData, RouteLoaderArgs, ThemeSettingsStore, WeaverseClient, WeaverseClientArgs, WeaverseHydrogen, WeaverseHydrogenItem, WeaverseHydrogenParams, WeaverseHydrogenRoot, WeaverseHydrogenRootProps, WeaverseInternal, WeaverseLoaderData, WeaverseLoaderRequestInfo, WeaverseProjectConfigs, WeaverseStorefrontData, WeaverseStudioQueries, WeaverseThemeConfigs, getRequestQueries, getSelectedProductOptions, getWeaverseConfigs, useThemeSettings, withWeaverse };
package/dist/index.js CHANGED
@@ -217,7 +217,7 @@ function FallbackError({ error }) {
217
217
 
218
218
  // package.json
219
219
  var package_default = {
220
- version: "2.0.1",
220
+ version: "2.1.0",
221
221
  license: "MIT",
222
222
  main: "dist/index.js",
223
223
  typings: "dist/index.d.ts",
@@ -251,8 +251,8 @@ var package_default = {
251
251
  author: "Weaverse Team",
252
252
  dependencies: {
253
253
  "@remix-run/react": "1.19.1",
254
- "@shopify/hydrogen": "2023.7.8",
255
- "@weaverse/react": "2.0.1",
254
+ "@shopify/hydrogen": "2023.7.9",
255
+ "@weaverse/react": "2.1.0",
256
256
  "react-error-boundary": "^4.0.11"
257
257
  },
258
258
  devDependencies: {
@@ -298,27 +298,37 @@ var WeaverseClient = class {
298
298
  clientVersion = package_default.version;
299
299
  basePageConfigs;
300
300
  basePageRequestBody;
301
+ configs;
302
+ request;
301
303
  storefront;
302
- // storefront: Storefront<I18nLocale>
303
304
  components;
304
- countries;
305
305
  themeSchema;
306
- configs;
306
+ env;
307
307
  withCache;
308
- // withCache: ReturnType<typeof createWithCache>
308
+ countries;
309
309
  constructor(args) {
310
- let { configs, storefront, components, countries, withCache, themeSchema } = args;
310
+ let {
311
+ env,
312
+ storefront,
313
+ components,
314
+ countries,
315
+ withCache,
316
+ themeSchema,
317
+ request
318
+ } = args;
319
+ this.request = request;
311
320
  this.storefront = storefront;
312
321
  this.components = components;
313
- this.countries = countries;
314
322
  this.themeSchema = themeSchema;
315
- this.configs = configs;
323
+ this.env = env;
316
324
  this.withCache = withCache;
325
+ this.countries = countries;
326
+ this.configs = getWeaverseConfigs(request, env);
317
327
  this.basePageConfigs = {
318
- projectId: configs.projectId,
319
- weaverseHost: configs.weaverseHost,
320
- weaverseVersion: configs.weaverseVersion,
321
- isDesignMode: configs.isDesignMode
328
+ projectId: this.configs.projectId,
329
+ weaverseHost: this.configs.weaverseHost,
330
+ weaverseVersion: this.configs.weaverseVersion,
331
+ isDesignMode: this.configs.isDesignMode
322
332
  };
323
333
  this.basePageRequestBody = {
324
334
  countries,
@@ -333,7 +343,9 @@ var WeaverseClient = class {
333
343
  let res = this.withCache(cacheKey, strategy, async () => {
334
344
  let response = await fetch(url, reqInit);
335
345
  if (!response.ok) {
336
- throw new Error("Something went wrong. Skipping cache.");
346
+ let error = await response.text();
347
+ let { status, statusText } = response;
348
+ throw new Error(`${status} ${statusText} ${error}`);
337
349
  }
338
350
  return await response.json();
339
351
  });
@@ -348,36 +360,34 @@ var WeaverseClient = class {
348
360
  }
349
361
  let res = await this.fetchWithCache(
350
362
  `${weaverseHost}/${API}/${projectId}/configs`,
351
- { strategy }
363
+ { method: "POST", strategy }
352
364
  );
353
- let data = null;
354
- if (res.ok) {
355
- data = res.payload;
356
- if (this.configs.isDesignMode) {
357
- data = {
358
- ...data,
359
- schema: this.themeSchema,
360
- countries: this.countries,
361
- publicEnv: this.configs.publicEnv
362
- };
363
- }
365
+ let data = res || {};
366
+ if (this.configs.isDesignMode) {
367
+ data = {
368
+ ...data,
369
+ schema: this.themeSchema,
370
+ countries: this.countries || [],
371
+ publicEnv: this.configs.publicEnv
372
+ };
364
373
  }
365
374
  return data;
366
- } catch (err) {
367
- console.log(`\u274C [Weaverse theme settings]`, err);
375
+ } catch (e) {
376
+ console.error(`\u274C Theme settings load failed.`, e);
368
377
  return null;
369
378
  }
370
379
  };
371
- loadPage = async (args, configs = {}) => {
380
+ loadPage = async (params = {}) => {
372
381
  return new Promise(async (resolve, reject) => {
373
382
  try {
374
- if (!this.configs.projectId) {
383
+ let { request, storefront, basePageRequestBody, basePageConfigs } = this;
384
+ let { projectId, isDesignMode, weaverseHost } = this.configs;
385
+ if (!projectId) {
375
386
  throw new Error("Missing Weaverse projectId!");
376
387
  }
377
- let { request, params } = args;
378
- let { strategy, ...pageLoadParams } = configs;
388
+ let { strategy, ...pageLoadParams } = params;
379
389
  let body = {
380
- ...this.basePageRequestBody,
390
+ ...basePageRequestBody,
381
391
  params: pageLoadParams,
382
392
  url: request.url
383
393
  };
@@ -385,9 +395,9 @@ var WeaverseClient = class {
385
395
  method: "POST",
386
396
  body: JSON.stringify(body)
387
397
  };
388
- let url = `${this.configs.weaverseHost}/${this.API}`;
398
+ let url = `${weaverseHost}/${this.API}`;
389
399
  let payload;
390
- if (this.configs.isDesignMode) {
400
+ if (isDesignMode) {
391
401
  payload = await fetch(url, reqInit).then((res) => res.json());
392
402
  } else {
393
403
  payload = await this.fetchWithCache(url, {
@@ -405,7 +415,7 @@ var WeaverseClient = class {
405
415
  if (page?.items) {
406
416
  let items = page.items;
407
417
  page.items = await Promise.all(
408
- items.map((item) => this.execComponentLoader(item, args))
418
+ items.map((item) => this.execComponentLoader(item))
409
419
  );
410
420
  }
411
421
  let data = {
@@ -413,10 +423,9 @@ var WeaverseClient = class {
413
423
  project,
414
424
  pageAssignment,
415
425
  configs: {
416
- ...this.basePageConfigs,
426
+ ...basePageConfigs,
417
427
  requestInfo: {
418
- params,
419
- i18n: this.storefront.i18n,
428
+ i18n: storefront.i18n,
420
429
  queries: getRequestQueries(request),
421
430
  pathname: new URL(request.url).pathname,
422
431
  search: new URL(request.url).search
@@ -424,28 +433,27 @@ var WeaverseClient = class {
424
433
  }
425
434
  };
426
435
  return resolve(data);
427
- } catch (err) {
428
- console.log(`\u274C [Weaverse page]`, err);
429
- reject(err);
436
+ } catch (e) {
437
+ console.error(`\u274C Page load failed.`, e);
438
+ reject(e);
430
439
  }
431
440
  });
432
441
  };
433
- execComponentLoader = async (item, args) => {
434
- let schema = this.components.find(
435
- ({ schema: schema2 }) => schema2?.type === item.type
436
- );
442
+ execComponentLoader = async (item) => {
443
+ let { data = {}, type, id } = item;
444
+ let schema = this.components.find(({ schema: schema2 }) => schema2?.type === type);
437
445
  let { loader } = schema || {};
438
446
  if (loader && typeof loader === "function") {
439
447
  try {
440
448
  return {
441
449
  ...item,
442
450
  loaderData: await loader({
443
- itemData: item,
444
- ...args
451
+ data,
452
+ weaverse: this
445
453
  })
446
454
  };
447
- } catch (err) {
448
- console.log(`\u274C [Weaverse item loader]`, item.id, err);
455
+ } catch (e) {
456
+ console.warn(`\u274C Item loader run failed.`, type, id, e);
449
457
  return item;
450
458
  }
451
459
  }
package/dist/index.mjs CHANGED
@@ -177,7 +177,7 @@ function FallbackError({ error }) {
177
177
 
178
178
  // package.json
179
179
  var package_default = {
180
- version: "2.0.1",
180
+ version: "2.1.0",
181
181
  license: "MIT",
182
182
  main: "dist/index.js",
183
183
  typings: "dist/index.d.ts",
@@ -211,8 +211,8 @@ var package_default = {
211
211
  author: "Weaverse Team",
212
212
  dependencies: {
213
213
  "@remix-run/react": "1.19.1",
214
- "@shopify/hydrogen": "2023.7.8",
215
- "@weaverse/react": "2.0.1",
214
+ "@shopify/hydrogen": "2023.7.9",
215
+ "@weaverse/react": "2.1.0",
216
216
  "react-error-boundary": "^4.0.11"
217
217
  },
218
218
  devDependencies: {
@@ -258,27 +258,37 @@ var WeaverseClient = class {
258
258
  clientVersion = package_default.version;
259
259
  basePageConfigs;
260
260
  basePageRequestBody;
261
+ configs;
262
+ request;
261
263
  storefront;
262
- // storefront: Storefront<I18nLocale>
263
264
  components;
264
- countries;
265
265
  themeSchema;
266
- configs;
266
+ env;
267
267
  withCache;
268
- // withCache: ReturnType<typeof createWithCache>
268
+ countries;
269
269
  constructor(args) {
270
- let { configs, storefront, components, countries, withCache, themeSchema } = args;
270
+ let {
271
+ env,
272
+ storefront,
273
+ components,
274
+ countries,
275
+ withCache,
276
+ themeSchema,
277
+ request
278
+ } = args;
279
+ this.request = request;
271
280
  this.storefront = storefront;
272
281
  this.components = components;
273
- this.countries = countries;
274
282
  this.themeSchema = themeSchema;
275
- this.configs = configs;
283
+ this.env = env;
276
284
  this.withCache = withCache;
285
+ this.countries = countries;
286
+ this.configs = getWeaverseConfigs(request, env);
277
287
  this.basePageConfigs = {
278
- projectId: configs.projectId,
279
- weaverseHost: configs.weaverseHost,
280
- weaverseVersion: configs.weaverseVersion,
281
- isDesignMode: configs.isDesignMode
288
+ projectId: this.configs.projectId,
289
+ weaverseHost: this.configs.weaverseHost,
290
+ weaverseVersion: this.configs.weaverseVersion,
291
+ isDesignMode: this.configs.isDesignMode
282
292
  };
283
293
  this.basePageRequestBody = {
284
294
  countries,
@@ -293,7 +303,9 @@ var WeaverseClient = class {
293
303
  let res = this.withCache(cacheKey, strategy, async () => {
294
304
  let response = await fetch(url, reqInit);
295
305
  if (!response.ok) {
296
- throw new Error("Something went wrong. Skipping cache.");
306
+ let error = await response.text();
307
+ let { status, statusText } = response;
308
+ throw new Error(`${status} ${statusText} ${error}`);
297
309
  }
298
310
  return await response.json();
299
311
  });
@@ -308,36 +320,34 @@ var WeaverseClient = class {
308
320
  }
309
321
  let res = await this.fetchWithCache(
310
322
  `${weaverseHost}/${API}/${projectId}/configs`,
311
- { strategy }
323
+ { method: "POST", strategy }
312
324
  );
313
- let data = null;
314
- if (res.ok) {
315
- data = res.payload;
316
- if (this.configs.isDesignMode) {
317
- data = {
318
- ...data,
319
- schema: this.themeSchema,
320
- countries: this.countries,
321
- publicEnv: this.configs.publicEnv
322
- };
323
- }
325
+ let data = res || {};
326
+ if (this.configs.isDesignMode) {
327
+ data = {
328
+ ...data,
329
+ schema: this.themeSchema,
330
+ countries: this.countries || [],
331
+ publicEnv: this.configs.publicEnv
332
+ };
324
333
  }
325
334
  return data;
326
- } catch (err) {
327
- console.log(`\u274C [Weaverse theme settings]`, err);
335
+ } catch (e) {
336
+ console.error(`\u274C Theme settings load failed.`, e);
328
337
  return null;
329
338
  }
330
339
  };
331
- loadPage = async (args, configs = {}) => {
340
+ loadPage = async (params = {}) => {
332
341
  return new Promise(async (resolve, reject) => {
333
342
  try {
334
- if (!this.configs.projectId) {
343
+ let { request, storefront, basePageRequestBody, basePageConfigs } = this;
344
+ let { projectId, isDesignMode, weaverseHost } = this.configs;
345
+ if (!projectId) {
335
346
  throw new Error("Missing Weaverse projectId!");
336
347
  }
337
- let { request, params } = args;
338
- let { strategy, ...pageLoadParams } = configs;
348
+ let { strategy, ...pageLoadParams } = params;
339
349
  let body = {
340
- ...this.basePageRequestBody,
350
+ ...basePageRequestBody,
341
351
  params: pageLoadParams,
342
352
  url: request.url
343
353
  };
@@ -345,9 +355,9 @@ var WeaverseClient = class {
345
355
  method: "POST",
346
356
  body: JSON.stringify(body)
347
357
  };
348
- let url = `${this.configs.weaverseHost}/${this.API}`;
358
+ let url = `${weaverseHost}/${this.API}`;
349
359
  let payload;
350
- if (this.configs.isDesignMode) {
360
+ if (isDesignMode) {
351
361
  payload = await fetch(url, reqInit).then((res) => res.json());
352
362
  } else {
353
363
  payload = await this.fetchWithCache(url, {
@@ -365,7 +375,7 @@ var WeaverseClient = class {
365
375
  if (page?.items) {
366
376
  let items = page.items;
367
377
  page.items = await Promise.all(
368
- items.map((item) => this.execComponentLoader(item, args))
378
+ items.map((item) => this.execComponentLoader(item))
369
379
  );
370
380
  }
371
381
  let data = {
@@ -373,10 +383,9 @@ var WeaverseClient = class {
373
383
  project,
374
384
  pageAssignment,
375
385
  configs: {
376
- ...this.basePageConfigs,
386
+ ...basePageConfigs,
377
387
  requestInfo: {
378
- params,
379
- i18n: this.storefront.i18n,
388
+ i18n: storefront.i18n,
380
389
  queries: getRequestQueries(request),
381
390
  pathname: new URL(request.url).pathname,
382
391
  search: new URL(request.url).search
@@ -384,28 +393,27 @@ var WeaverseClient = class {
384
393
  }
385
394
  };
386
395
  return resolve(data);
387
- } catch (err) {
388
- console.log(`\u274C [Weaverse page]`, err);
389
- reject(err);
396
+ } catch (e) {
397
+ console.error(`\u274C Page load failed.`, e);
398
+ reject(e);
390
399
  }
391
400
  });
392
401
  };
393
- execComponentLoader = async (item, args) => {
394
- let schema = this.components.find(
395
- ({ schema: schema2 }) => schema2?.type === item.type
396
- );
402
+ execComponentLoader = async (item) => {
403
+ let { data = {}, type, id } = item;
404
+ let schema = this.components.find(({ schema: schema2 }) => schema2?.type === type);
397
405
  let { loader } = schema || {};
398
406
  if (loader && typeof loader === "function") {
399
407
  try {
400
408
  return {
401
409
  ...item,
402
410
  loaderData: await loader({
403
- itemData: item,
404
- ...args
411
+ data,
412
+ weaverse: this
405
413
  })
406
414
  };
407
- } catch (err) {
408
- console.log(`\u274C [Weaverse item loader]`, item.id, err);
415
+ } catch (e) {
416
+ console.warn(`\u274C Item loader run failed.`, type, id, e);
409
417
  return item;
410
418
  }
411
419
  }
package/package.json CHANGED
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "2.0.1",
2
+ "version": "2.1.0",
3
3
  "license": "MIT",
4
4
  "main": "dist/index.js",
5
5
  "typings": "dist/index.d.ts",
@@ -33,8 +33,8 @@
33
33
  "author": "Weaverse Team",
34
34
  "dependencies": {
35
35
  "@remix-run/react": "1.19.1",
36
- "@shopify/hydrogen": "2023.7.8",
37
- "@weaverse/react": "2.0.1",
36
+ "@shopify/hydrogen": "2023.7.9",
37
+ "@weaverse/react": "2.1.0",
38
38
  "react-error-boundary": "^4.0.11"
39
39
  },
40
40
  "devDependencies": {