@weaverse/hydrogen 5.3.4 → 5.4.1-beta.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,5 +1,5 @@
1
1
  import { SelectedOptionInput } from '@shopify/hydrogen/storefront-api-types';
2
- import { EventEmitter, ElementData, WeaverseElement, WeaverseProjectDataType, WeaverseCoreParams, WeaverseResourcePickerData, Weaverse, PlatformTypeEnum, WeaverseItemStore } from '@weaverse/react';
2
+ import { EventEmitter, Weaverse, PlatformTypeEnum, WeaverseItemStore, ElementData, WeaverseElement, WeaverseProjectDataType, WeaverseCoreParams, WeaverseResourcePickerData } from '@weaverse/react';
3
3
  export { PositionInputValue, WeaverseImage, WeaverseVideo, isBrowser, isIframe, useChildInstances, useItemInstance, useParentInstance, useWeaverse } from '@weaverse/react';
4
4
  import { PageType, InspectorGroup, SchemaType, ComponentPresets, SchemaValidationResult } from '@weaverse/schema';
5
5
  export * from '@weaverse/schema';
@@ -7,7 +7,7 @@ export { BasicInput, HeadingInput, InputType, InspectorGroup, PageType, SchemaVa
7
7
  import { createWithCache, I18nBase, HydrogenContext, HydrogenEnv } from '@shopify/hydrogen';
8
8
  import { LoaderFunctionArgs, AppLoadContext } from '@shopify/remix-oxygen';
9
9
  import * as React$1 from 'react';
10
- import { ForwardRefExoticComponent, ComponentType, JSX } from 'react';
10
+ import { ComponentType, JSX, ForwardRefExoticComponent } from 'react';
11
11
  import { NavigateFunction } from 'react-router';
12
12
  import * as react_jsx_runtime from 'react/jsx-runtime';
13
13
 
@@ -26,8 +26,42 @@ declare class ThemeSettingsStore extends EventEmitter {
26
26
  getServerSnapshot: () => HydrogenThemeSettings;
27
27
  }
28
28
 
29
+ declare class WeaverseHydrogenItem extends WeaverseItemStore {
30
+ weaverse: WeaverseHydrogen;
31
+ constructor(initialData: HydrogenComponentData, weaverse: WeaverseHydrogen);
32
+ get Element(): HydrogenElement;
33
+ }
34
+ declare class WeaverseHydrogen extends Weaverse {
35
+ platformType: PlatformTypeEnum;
36
+ pageId: string;
37
+ internal: Partial<WeaverseInternal>;
38
+ requestInfo: WeaverseLoaderRequestInfo;
39
+ projectId: string;
40
+ weaverseHost: string;
41
+ weaverseApiBase: string;
42
+ weaverseApiKey: string;
43
+ weaverseVersion: string;
44
+ isDesignMode: boolean;
45
+ isPreviewMode: boolean;
46
+ sectionType: string;
47
+ ItemConstructor: typeof WeaverseHydrogenItem;
48
+ data: HydrogenPageData;
49
+ static itemInstances: Map<string, WeaverseHydrogenItem>;
50
+ static elementRegistry: Map<string, HydrogenElement>;
51
+ constructor(params: WeaverseHydrogenParams);
52
+ }
53
+ declare function registerComponent(element: HydrogenElement): void;
54
+ declare let WeaverseHydrogenRoot: React$1.MemoExoticComponent<({ components, errorComponent: ErrorComponent, }: {
55
+ components: HydrogenComponent[];
56
+ errorComponent?: React.FC<{
57
+ error: any;
58
+ }>;
59
+ }) => react_jsx_runtime.JSX.Element>;
60
+ declare function withWeaverse(Component: ComponentType<any>): (props: JSX.IntrinsicAttributes) => react_jsx_runtime.JSX.Element;
61
+ declare function useThemeSettings<T = HydrogenThemeSettings>(): T;
62
+
29
63
  declare class WeaverseClient {
30
- API: string;
64
+ API: "v1";
31
65
  basePageConfigs: Omit<WeaverseProjectConfigs, 'requestInfo'>;
32
66
  basePageRequestBody: Omit<FetchProjectRequestBody, 'url'>;
33
67
  configs: WeaverseProjectConfigs;
@@ -40,11 +74,12 @@ declare class WeaverseClient {
40
74
  cache: WeaverseClientArgs['cache'];
41
75
  waitUntil: WeaverseClientArgs['waitUntil'];
42
76
  constructor(args: WeaverseClientArgs);
43
- private directFetch;
44
- fetchWithCache: <T extends object>(url: string, options?: RequestInit & {
77
+ private readonly directFetch;
78
+ private getApiUrl;
79
+ fetchWithCache: <T = unknown>(url: string, options?: RequestInit & {
45
80
  strategy?: AllCacheOptions;
46
81
  }) => Promise<T>;
47
- loadThemeSettings: (strategy?: AllCacheOptions) => Promise<any>;
82
+ loadThemeSettings: (strategy?: AllCacheOptions) => Promise<ThemeSettingsResponse>;
48
83
  generateFallbackPage: (message: string) => HydrogenPageData;
49
84
  loadPage: (params?: {
50
85
  type?: PageType;
@@ -55,14 +90,14 @@ declare class WeaverseClient {
55
90
  execComponentLoader: (item: HydrogenComponentData) => Promise<HydrogenComponentData>;
56
91
  }
57
92
 
58
- interface AllCacheOptions {
59
- mode?: string;
93
+ type AllCacheOptions = {
94
+ mode?: 'must-revalidate' | 'no-cache' | 'no-store' | 'private' | 'public' | string;
60
95
  maxAge?: number;
61
96
  staleWhileRevalidate?: number;
62
97
  sMaxAge?: number;
63
98
  staleIfError?: number;
64
- }
65
- type ComponentLoaderArgs<T = any, E = any> = {
99
+ };
100
+ type ComponentLoaderArgs<T = any, _E = any> = {
66
101
  data: T;
67
102
  weaverse: WeaverseClient;
68
103
  };
@@ -120,25 +155,33 @@ type WeaverseInternal = {
120
155
  * Optimized: Use direct type alias to maintain consistency
121
156
  */
122
157
  type HydrogenComponentPresets = ComponentPresets;
123
- interface HydrogenElement {
158
+ type HydrogenElement = {
124
159
  Component: ForwardRefExoticComponent<HydrogenComponentProps> | ((props: HydrogenComponentProps) => React$1.JSX.Element);
125
160
  type: string;
126
161
  schema?: HydrogenComponentSchema;
127
162
  /** Optional data loader function for server-side data fetching */
128
163
  loader?: (args: ComponentLoaderArgs) => Promise<unknown>;
129
- }
164
+ };
130
165
  interface WeaverseHydrogenParams extends Omit<WeaverseCoreParams, 'ItemConstructor'> {
131
166
  data: HydrogenPageData;
132
167
  pageId: string;
133
168
  internal: Partial<WeaverseInternal>;
134
169
  requestInfo: WeaverseLoaderRequestInfo;
170
+ projectId: string;
171
+ weaverseHost: string;
172
+ weaverseApiBase: string;
173
+ weaverseApiKey: string;
174
+ weaverseVersion?: string;
175
+ isDesignMode?: boolean;
176
+ isPreviewMode?: boolean;
177
+ sectionType?: string;
135
178
  }
136
- interface HydrogenComponent<T extends HydrogenComponentProps = any> {
179
+ type HydrogenComponent<T extends HydrogenComponentProps = any> = {
137
180
  default: ForwardRefExoticComponent<T> | ((props: T) => React$1.JSX.Element);
138
181
  schema: HydrogenComponentSchema;
139
182
  /** Optional data loader function for server-side data fetching */
140
183
  loader?: (args: ComponentLoaderArgs) => Promise<unknown>;
141
- }
184
+ };
142
185
  type WeaverseStudioQueries = {
143
186
  weaverseProjectId: string;
144
187
  weaverseApiKey: string;
@@ -155,6 +198,7 @@ type PublicEnv = {
155
198
  type WeaverseProjectConfigs = {
156
199
  projectId: string;
157
200
  weaverseHost: string;
201
+ weaverseApiBase: string;
158
202
  weaverseApiKey: string;
159
203
  weaverseVersion?: string;
160
204
  isDesignMode?: boolean;
@@ -168,14 +212,14 @@ type HydrogenPageAssignment = {
168
212
  handle: string;
169
213
  locale: string;
170
214
  };
171
- interface WeaverseLoaderData {
215
+ type WeaverseLoaderData = {
172
216
  configs: Omit<WeaverseProjectConfigs, 'publicEnv'> & {
173
217
  requestInfo: WeaverseLoaderRequestInfo;
174
218
  };
175
219
  page: HydrogenPageData;
176
220
  project: HydrogenProjectType;
177
221
  pageAssignment: HydrogenPageAssignment;
178
- }
222
+ };
179
223
  interface HydrogenPageData extends WeaverseProjectDataType {
180
224
  id: string;
181
225
  name: string;
@@ -188,7 +232,7 @@ type WeaverseI18n = I18nBase & {
188
232
  pathPrefix?: string;
189
233
  [key: string]: any;
190
234
  };
191
- interface HydrogenThemeSchema {
235
+ type HydrogenThemeSchema = {
192
236
  info: {
193
237
  name: string;
194
238
  version: string;
@@ -205,7 +249,7 @@ interface HydrogenThemeSchema {
205
249
  defaultLocale: WeaverseI18n;
206
250
  shopLocales: WeaverseI18n[];
207
251
  };
208
- }
252
+ };
209
253
  type FetchProjectRequestBody = {
210
254
  projectId: string;
211
255
  url: string;
@@ -218,10 +262,11 @@ type FetchProjectRequestBody = {
218
262
  isDesignMode?: boolean;
219
263
  };
220
264
  type FetchProjectPayload = {
221
- page: HydrogenPageData;
222
- project: HydrogenProjectType;
223
- pageAssignment: HydrogenPageAssignment;
265
+ page?: HydrogenPageData;
266
+ project?: HydrogenProjectType;
267
+ pageAssignment?: HydrogenPageAssignment;
224
268
  error?: string;
269
+ [key: string]: any;
225
270
  };
226
271
  type WeaverseClientArgs = HydrogenContext & {
227
272
  components: HydrogenComponent[];
@@ -234,6 +279,38 @@ type WeaverseCollection = WeaverseResourcePickerData;
234
279
  type WeaverseBlog = WeaverseResourcePickerData;
235
280
  type WeaverseArticle = WeaverseResourcePickerData;
236
281
  type WeaverseMetaObject = WeaverseResourcePickerData;
282
+ /**
283
+ * Response types for improved type safety
284
+ */
285
+ type WithCacheFetchResponse<T> = {
286
+ data: T;
287
+ response: Response;
288
+ };
289
+ type ThemeSettingsResponse = {
290
+ theme?: HydrogenThemeSettings;
291
+ schema?: HydrogenThemeSchema;
292
+ publicEnv?: PublicEnv;
293
+ };
294
+ type DirectFetchResponse<T = unknown> = {
295
+ data?: T;
296
+ error?: string;
297
+ };
298
+ type CacheResponseValidator<T = unknown> = (response: WithCacheFetchResponse<T> | T) => boolean;
299
+ declare class WeaverseError extends Error {
300
+ readonly code: string;
301
+ readonly statusCode?: number;
302
+ readonly context?: Record<string, unknown>;
303
+ constructor(message: string, code?: string, statusCode?: number, context?: Record<string, unknown>);
304
+ }
305
+ /**
306
+ * Type guards for response validation
307
+ */
308
+ declare function isWithCacheFetchResponse<T>(response: unknown): response is WithCacheFetchResponse<T>;
309
+ declare function isFetchProjectPayload(payload: unknown): payload is FetchProjectPayload;
310
+ declare function hasError(response: unknown): response is {
311
+ error: string;
312
+ };
313
+ declare function isThemeSettingsResponse(data: unknown): data is ThemeSettingsResponse;
237
314
  /**
238
315
  * Enhanced type utilities for better development experience
239
316
  */
@@ -266,11 +343,6 @@ declare global {
266
343
  __weaverses: Record<string, WeaverseHydrogen>;
267
344
  __weaverseThemeSettingsStore: ThemeSettingsStore;
268
345
  }
269
- interface Env {
270
- WEAVERSE_PROJECT_ID: string;
271
- WEAVERSE_HOST: string;
272
- WEAVERSE_API_KEY: string;
273
- }
274
346
  }
275
347
  declare module '@shopify/remix-oxygen' {
276
348
  interface AppLoadContext {
@@ -281,7 +353,10 @@ declare module '@shopify/hydrogen' {
281
353
  interface HydrogenEnv {
282
354
  WEAVERSE_PROJECT_ID: string;
283
355
  WEAVERSE_HOST?: string;
356
+ WEAVERSE_API_BASE?: string;
284
357
  WEAVERSE_API_KEY: string;
358
+ PUBLIC_STORE_DOMAIN: string;
359
+ PUBLIC_STOREFRONT_API_TOKEN: string;
285
360
  PUBLIC_GOOGLE_GTM_ID: string;
286
361
  JUDGEME_PRIVATE_API_TOKEN: string;
287
362
  CUSTOM_COLLECTION_BANNER_METAFIELD: string;
@@ -300,32 +375,6 @@ declare function getWeaverseConfigs(request: Request, env: HydrogenEnv): Weavers
300
375
  declare function generateDataFromSchema(schema: HydrogenComponentSchema | HydrogenThemeSchema): Record<string, any>;
301
376
  declare function getPreviewData(type: string, components: HydrogenComponent[], weaverseHost: string): WeaverseLoaderData;
302
377
 
303
- declare class WeaverseHydrogenItem extends WeaverseItemStore {
304
- weaverse: WeaverseHydrogen;
305
- constructor(initialData: HydrogenComponentData, weaverse: WeaverseHydrogen);
306
- get Element(): HydrogenElement;
307
- }
308
- declare class WeaverseHydrogen extends Weaverse {
309
- platformType: PlatformTypeEnum;
310
- pageId: string;
311
- internal: Partial<WeaverseInternal>;
312
- requestInfo: WeaverseLoaderRequestInfo;
313
- ItemConstructor: typeof WeaverseHydrogenItem;
314
- data: HydrogenPageData;
315
- static itemInstances: Map<string, WeaverseHydrogenItem>;
316
- static elementRegistry: Map<string, HydrogenElement>;
317
- constructor(params: WeaverseHydrogenParams);
318
- }
319
- declare function registerComponent(element: HydrogenElement): void;
320
- declare let WeaverseHydrogenRoot: React$1.MemoExoticComponent<({ components, errorComponent: ErrorComponent, }: {
321
- components: HydrogenComponent[];
322
- errorComponent?: React.FC<{
323
- error: any;
324
- }>;
325
- }) => react_jsx_runtime.JSX.Element>;
326
- declare function withWeaverse(Component: ComponentType<any>): (props: JSX.IntrinsicAttributes) => react_jsx_runtime.JSX.Element;
327
- declare function useThemeSettings<T = HydrogenThemeSettings>(): T;
328
-
329
378
  declare function getSelectedProductOptions(request: Request): SelectedOptionInput[];
330
379
  declare const IMAGES_PLACEHOLDERS: {
331
380
  logo_white: string;
@@ -359,4 +408,4 @@ declare const IMAGES_PLACEHOLDERS: {
359
408
  product_18: string;
360
409
  };
361
410
 
362
- export { type AllCacheOptions, type ComponentLoaderArgs, type CreateHydrogenSchemaOptions, type FetchProjectPayload, type FetchProjectRequestBody, type HydrogenComponent, type HydrogenComponentData, type HydrogenComponentPresets, type HydrogenComponentProps, type HydrogenComponentSchema, type HydrogenElement, type HydrogenPageAssignment, type HydrogenPageData, type HydrogenProjectType, type HydrogenSchemaValidationResult, type HydrogenThemeSchema, type HydrogenThemeSettings, IMAGES_PLACEHOLDERS, type PublicEnv, type RouteLoaderArgs, type WeaverseArticle, type WeaverseBlog, WeaverseClient, type WeaverseClientArgs, type WeaverseCollection, WeaverseHydrogen, WeaverseHydrogenItem, type WeaverseHydrogenParams, WeaverseHydrogenRoot, type WeaverseI18n, type WeaverseInternal, type WeaverseLoaderData, type WeaverseLoaderRequestInfo, type WeaverseMetaObject, type WeaverseProduct, type WeaverseProjectConfigs, type WeaverseStudioQueries, defaultComponents, generateDataFromSchema, getPreviewData, getRequestQueries, getSelectedProductOptions, getWeaverseConfigs, isValidHydrogenSchema, registerComponent, useThemeSettings, withWeaverse };
411
+ export { type AllCacheOptions, type CacheResponseValidator, type ComponentLoaderArgs, type CreateHydrogenSchemaOptions, type DirectFetchResponse, type FetchProjectPayload, type FetchProjectRequestBody, type HydrogenComponent, type HydrogenComponentData, type HydrogenComponentPresets, type HydrogenComponentProps, type HydrogenComponentSchema, type HydrogenElement, type HydrogenPageAssignment, type HydrogenPageData, type HydrogenProjectType, type HydrogenSchemaValidationResult, type HydrogenThemeSchema, type HydrogenThemeSettings, IMAGES_PLACEHOLDERS, type PublicEnv, type RouteLoaderArgs, type ThemeSettingsResponse, type WeaverseArticle, type WeaverseBlog, WeaverseClient, type WeaverseClientArgs, type WeaverseCollection, WeaverseError, WeaverseHydrogen, WeaverseHydrogenItem, type WeaverseHydrogenParams, WeaverseHydrogenRoot, type WeaverseI18n, type WeaverseInternal, type WeaverseLoaderData, type WeaverseLoaderRequestInfo, type WeaverseMetaObject, type WeaverseProduct, type WeaverseProjectConfigs, type WeaverseStudioQueries, type WithCacheFetchResponse, defaultComponents, generateDataFromSchema, getPreviewData, getRequestQueries, getSelectedProductOptions, getWeaverseConfigs, hasError, isFetchProjectPayload, isThemeSettingsResponse, isValidHydrogenSchema, isWithCacheFetchResponse, registerComponent, useThemeSettings, withWeaverse };
package/dist/index.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import { SelectedOptionInput } from '@shopify/hydrogen/storefront-api-types';
2
- import { EventEmitter, ElementData, WeaverseElement, WeaverseProjectDataType, WeaverseCoreParams, WeaverseResourcePickerData, Weaverse, PlatformTypeEnum, WeaverseItemStore } from '@weaverse/react';
2
+ import { EventEmitter, Weaverse, PlatformTypeEnum, WeaverseItemStore, ElementData, WeaverseElement, WeaverseProjectDataType, WeaverseCoreParams, WeaverseResourcePickerData } from '@weaverse/react';
3
3
  export { PositionInputValue, WeaverseImage, WeaverseVideo, isBrowser, isIframe, useChildInstances, useItemInstance, useParentInstance, useWeaverse } from '@weaverse/react';
4
4
  import { PageType, InspectorGroup, SchemaType, ComponentPresets, SchemaValidationResult } from '@weaverse/schema';
5
5
  export * from '@weaverse/schema';
@@ -7,7 +7,7 @@ export { BasicInput, HeadingInput, InputType, InspectorGroup, PageType, SchemaVa
7
7
  import { createWithCache, I18nBase, HydrogenContext, HydrogenEnv } from '@shopify/hydrogen';
8
8
  import { LoaderFunctionArgs, AppLoadContext } from '@shopify/remix-oxygen';
9
9
  import * as React$1 from 'react';
10
- import { ForwardRefExoticComponent, ComponentType, JSX } from 'react';
10
+ import { ComponentType, JSX, ForwardRefExoticComponent } from 'react';
11
11
  import { NavigateFunction } from 'react-router';
12
12
  import * as react_jsx_runtime from 'react/jsx-runtime';
13
13
 
@@ -26,8 +26,42 @@ declare class ThemeSettingsStore extends EventEmitter {
26
26
  getServerSnapshot: () => HydrogenThemeSettings;
27
27
  }
28
28
 
29
+ declare class WeaverseHydrogenItem extends WeaverseItemStore {
30
+ weaverse: WeaverseHydrogen;
31
+ constructor(initialData: HydrogenComponentData, weaverse: WeaverseHydrogen);
32
+ get Element(): HydrogenElement;
33
+ }
34
+ declare class WeaverseHydrogen extends Weaverse {
35
+ platformType: PlatformTypeEnum;
36
+ pageId: string;
37
+ internal: Partial<WeaverseInternal>;
38
+ requestInfo: WeaverseLoaderRequestInfo;
39
+ projectId: string;
40
+ weaverseHost: string;
41
+ weaverseApiBase: string;
42
+ weaverseApiKey: string;
43
+ weaverseVersion: string;
44
+ isDesignMode: boolean;
45
+ isPreviewMode: boolean;
46
+ sectionType: string;
47
+ ItemConstructor: typeof WeaverseHydrogenItem;
48
+ data: HydrogenPageData;
49
+ static itemInstances: Map<string, WeaverseHydrogenItem>;
50
+ static elementRegistry: Map<string, HydrogenElement>;
51
+ constructor(params: WeaverseHydrogenParams);
52
+ }
53
+ declare function registerComponent(element: HydrogenElement): void;
54
+ declare let WeaverseHydrogenRoot: React$1.MemoExoticComponent<({ components, errorComponent: ErrorComponent, }: {
55
+ components: HydrogenComponent[];
56
+ errorComponent?: React.FC<{
57
+ error: any;
58
+ }>;
59
+ }) => react_jsx_runtime.JSX.Element>;
60
+ declare function withWeaverse(Component: ComponentType<any>): (props: JSX.IntrinsicAttributes) => react_jsx_runtime.JSX.Element;
61
+ declare function useThemeSettings<T = HydrogenThemeSettings>(): T;
62
+
29
63
  declare class WeaverseClient {
30
- API: string;
64
+ API: "v1";
31
65
  basePageConfigs: Omit<WeaverseProjectConfigs, 'requestInfo'>;
32
66
  basePageRequestBody: Omit<FetchProjectRequestBody, 'url'>;
33
67
  configs: WeaverseProjectConfigs;
@@ -40,11 +74,12 @@ declare class WeaverseClient {
40
74
  cache: WeaverseClientArgs['cache'];
41
75
  waitUntil: WeaverseClientArgs['waitUntil'];
42
76
  constructor(args: WeaverseClientArgs);
43
- private directFetch;
44
- fetchWithCache: <T extends object>(url: string, options?: RequestInit & {
77
+ private readonly directFetch;
78
+ private getApiUrl;
79
+ fetchWithCache: <T = unknown>(url: string, options?: RequestInit & {
45
80
  strategy?: AllCacheOptions;
46
81
  }) => Promise<T>;
47
- loadThemeSettings: (strategy?: AllCacheOptions) => Promise<any>;
82
+ loadThemeSettings: (strategy?: AllCacheOptions) => Promise<ThemeSettingsResponse>;
48
83
  generateFallbackPage: (message: string) => HydrogenPageData;
49
84
  loadPage: (params?: {
50
85
  type?: PageType;
@@ -55,14 +90,14 @@ declare class WeaverseClient {
55
90
  execComponentLoader: (item: HydrogenComponentData) => Promise<HydrogenComponentData>;
56
91
  }
57
92
 
58
- interface AllCacheOptions {
59
- mode?: string;
93
+ type AllCacheOptions = {
94
+ mode?: 'must-revalidate' | 'no-cache' | 'no-store' | 'private' | 'public' | string;
60
95
  maxAge?: number;
61
96
  staleWhileRevalidate?: number;
62
97
  sMaxAge?: number;
63
98
  staleIfError?: number;
64
- }
65
- type ComponentLoaderArgs<T = any, E = any> = {
99
+ };
100
+ type ComponentLoaderArgs<T = any, _E = any> = {
66
101
  data: T;
67
102
  weaverse: WeaverseClient;
68
103
  };
@@ -120,25 +155,33 @@ type WeaverseInternal = {
120
155
  * Optimized: Use direct type alias to maintain consistency
121
156
  */
122
157
  type HydrogenComponentPresets = ComponentPresets;
123
- interface HydrogenElement {
158
+ type HydrogenElement = {
124
159
  Component: ForwardRefExoticComponent<HydrogenComponentProps> | ((props: HydrogenComponentProps) => React$1.JSX.Element);
125
160
  type: string;
126
161
  schema?: HydrogenComponentSchema;
127
162
  /** Optional data loader function for server-side data fetching */
128
163
  loader?: (args: ComponentLoaderArgs) => Promise<unknown>;
129
- }
164
+ };
130
165
  interface WeaverseHydrogenParams extends Omit<WeaverseCoreParams, 'ItemConstructor'> {
131
166
  data: HydrogenPageData;
132
167
  pageId: string;
133
168
  internal: Partial<WeaverseInternal>;
134
169
  requestInfo: WeaverseLoaderRequestInfo;
170
+ projectId: string;
171
+ weaverseHost: string;
172
+ weaverseApiBase: string;
173
+ weaverseApiKey: string;
174
+ weaverseVersion?: string;
175
+ isDesignMode?: boolean;
176
+ isPreviewMode?: boolean;
177
+ sectionType?: string;
135
178
  }
136
- interface HydrogenComponent<T extends HydrogenComponentProps = any> {
179
+ type HydrogenComponent<T extends HydrogenComponentProps = any> = {
137
180
  default: ForwardRefExoticComponent<T> | ((props: T) => React$1.JSX.Element);
138
181
  schema: HydrogenComponentSchema;
139
182
  /** Optional data loader function for server-side data fetching */
140
183
  loader?: (args: ComponentLoaderArgs) => Promise<unknown>;
141
- }
184
+ };
142
185
  type WeaverseStudioQueries = {
143
186
  weaverseProjectId: string;
144
187
  weaverseApiKey: string;
@@ -155,6 +198,7 @@ type PublicEnv = {
155
198
  type WeaverseProjectConfigs = {
156
199
  projectId: string;
157
200
  weaverseHost: string;
201
+ weaverseApiBase: string;
158
202
  weaverseApiKey: string;
159
203
  weaverseVersion?: string;
160
204
  isDesignMode?: boolean;
@@ -168,14 +212,14 @@ type HydrogenPageAssignment = {
168
212
  handle: string;
169
213
  locale: string;
170
214
  };
171
- interface WeaverseLoaderData {
215
+ type WeaverseLoaderData = {
172
216
  configs: Omit<WeaverseProjectConfigs, 'publicEnv'> & {
173
217
  requestInfo: WeaverseLoaderRequestInfo;
174
218
  };
175
219
  page: HydrogenPageData;
176
220
  project: HydrogenProjectType;
177
221
  pageAssignment: HydrogenPageAssignment;
178
- }
222
+ };
179
223
  interface HydrogenPageData extends WeaverseProjectDataType {
180
224
  id: string;
181
225
  name: string;
@@ -188,7 +232,7 @@ type WeaverseI18n = I18nBase & {
188
232
  pathPrefix?: string;
189
233
  [key: string]: any;
190
234
  };
191
- interface HydrogenThemeSchema {
235
+ type HydrogenThemeSchema = {
192
236
  info: {
193
237
  name: string;
194
238
  version: string;
@@ -205,7 +249,7 @@ interface HydrogenThemeSchema {
205
249
  defaultLocale: WeaverseI18n;
206
250
  shopLocales: WeaverseI18n[];
207
251
  };
208
- }
252
+ };
209
253
  type FetchProjectRequestBody = {
210
254
  projectId: string;
211
255
  url: string;
@@ -218,10 +262,11 @@ type FetchProjectRequestBody = {
218
262
  isDesignMode?: boolean;
219
263
  };
220
264
  type FetchProjectPayload = {
221
- page: HydrogenPageData;
222
- project: HydrogenProjectType;
223
- pageAssignment: HydrogenPageAssignment;
265
+ page?: HydrogenPageData;
266
+ project?: HydrogenProjectType;
267
+ pageAssignment?: HydrogenPageAssignment;
224
268
  error?: string;
269
+ [key: string]: any;
225
270
  };
226
271
  type WeaverseClientArgs = HydrogenContext & {
227
272
  components: HydrogenComponent[];
@@ -234,6 +279,38 @@ type WeaverseCollection = WeaverseResourcePickerData;
234
279
  type WeaverseBlog = WeaverseResourcePickerData;
235
280
  type WeaverseArticle = WeaverseResourcePickerData;
236
281
  type WeaverseMetaObject = WeaverseResourcePickerData;
282
+ /**
283
+ * Response types for improved type safety
284
+ */
285
+ type WithCacheFetchResponse<T> = {
286
+ data: T;
287
+ response: Response;
288
+ };
289
+ type ThemeSettingsResponse = {
290
+ theme?: HydrogenThemeSettings;
291
+ schema?: HydrogenThemeSchema;
292
+ publicEnv?: PublicEnv;
293
+ };
294
+ type DirectFetchResponse<T = unknown> = {
295
+ data?: T;
296
+ error?: string;
297
+ };
298
+ type CacheResponseValidator<T = unknown> = (response: WithCacheFetchResponse<T> | T) => boolean;
299
+ declare class WeaverseError extends Error {
300
+ readonly code: string;
301
+ readonly statusCode?: number;
302
+ readonly context?: Record<string, unknown>;
303
+ constructor(message: string, code?: string, statusCode?: number, context?: Record<string, unknown>);
304
+ }
305
+ /**
306
+ * Type guards for response validation
307
+ */
308
+ declare function isWithCacheFetchResponse<T>(response: unknown): response is WithCacheFetchResponse<T>;
309
+ declare function isFetchProjectPayload(payload: unknown): payload is FetchProjectPayload;
310
+ declare function hasError(response: unknown): response is {
311
+ error: string;
312
+ };
313
+ declare function isThemeSettingsResponse(data: unknown): data is ThemeSettingsResponse;
237
314
  /**
238
315
  * Enhanced type utilities for better development experience
239
316
  */
@@ -266,11 +343,6 @@ declare global {
266
343
  __weaverses: Record<string, WeaverseHydrogen>;
267
344
  __weaverseThemeSettingsStore: ThemeSettingsStore;
268
345
  }
269
- interface Env {
270
- WEAVERSE_PROJECT_ID: string;
271
- WEAVERSE_HOST: string;
272
- WEAVERSE_API_KEY: string;
273
- }
274
346
  }
275
347
  declare module '@shopify/remix-oxygen' {
276
348
  interface AppLoadContext {
@@ -281,7 +353,10 @@ declare module '@shopify/hydrogen' {
281
353
  interface HydrogenEnv {
282
354
  WEAVERSE_PROJECT_ID: string;
283
355
  WEAVERSE_HOST?: string;
356
+ WEAVERSE_API_BASE?: string;
284
357
  WEAVERSE_API_KEY: string;
358
+ PUBLIC_STORE_DOMAIN: string;
359
+ PUBLIC_STOREFRONT_API_TOKEN: string;
285
360
  PUBLIC_GOOGLE_GTM_ID: string;
286
361
  JUDGEME_PRIVATE_API_TOKEN: string;
287
362
  CUSTOM_COLLECTION_BANNER_METAFIELD: string;
@@ -300,32 +375,6 @@ declare function getWeaverseConfigs(request: Request, env: HydrogenEnv): Weavers
300
375
  declare function generateDataFromSchema(schema: HydrogenComponentSchema | HydrogenThemeSchema): Record<string, any>;
301
376
  declare function getPreviewData(type: string, components: HydrogenComponent[], weaverseHost: string): WeaverseLoaderData;
302
377
 
303
- declare class WeaverseHydrogenItem extends WeaverseItemStore {
304
- weaverse: WeaverseHydrogen;
305
- constructor(initialData: HydrogenComponentData, weaverse: WeaverseHydrogen);
306
- get Element(): HydrogenElement;
307
- }
308
- declare class WeaverseHydrogen extends Weaverse {
309
- platformType: PlatformTypeEnum;
310
- pageId: string;
311
- internal: Partial<WeaverseInternal>;
312
- requestInfo: WeaverseLoaderRequestInfo;
313
- ItemConstructor: typeof WeaverseHydrogenItem;
314
- data: HydrogenPageData;
315
- static itemInstances: Map<string, WeaverseHydrogenItem>;
316
- static elementRegistry: Map<string, HydrogenElement>;
317
- constructor(params: WeaverseHydrogenParams);
318
- }
319
- declare function registerComponent(element: HydrogenElement): void;
320
- declare let WeaverseHydrogenRoot: React$1.MemoExoticComponent<({ components, errorComponent: ErrorComponent, }: {
321
- components: HydrogenComponent[];
322
- errorComponent?: React.FC<{
323
- error: any;
324
- }>;
325
- }) => react_jsx_runtime.JSX.Element>;
326
- declare function withWeaverse(Component: ComponentType<any>): (props: JSX.IntrinsicAttributes) => react_jsx_runtime.JSX.Element;
327
- declare function useThemeSettings<T = HydrogenThemeSettings>(): T;
328
-
329
378
  declare function getSelectedProductOptions(request: Request): SelectedOptionInput[];
330
379
  declare const IMAGES_PLACEHOLDERS: {
331
380
  logo_white: string;
@@ -359,4 +408,4 @@ declare const IMAGES_PLACEHOLDERS: {
359
408
  product_18: string;
360
409
  };
361
410
 
362
- export { type AllCacheOptions, type ComponentLoaderArgs, type CreateHydrogenSchemaOptions, type FetchProjectPayload, type FetchProjectRequestBody, type HydrogenComponent, type HydrogenComponentData, type HydrogenComponentPresets, type HydrogenComponentProps, type HydrogenComponentSchema, type HydrogenElement, type HydrogenPageAssignment, type HydrogenPageData, type HydrogenProjectType, type HydrogenSchemaValidationResult, type HydrogenThemeSchema, type HydrogenThemeSettings, IMAGES_PLACEHOLDERS, type PublicEnv, type RouteLoaderArgs, type WeaverseArticle, type WeaverseBlog, WeaverseClient, type WeaverseClientArgs, type WeaverseCollection, WeaverseHydrogen, WeaverseHydrogenItem, type WeaverseHydrogenParams, WeaverseHydrogenRoot, type WeaverseI18n, type WeaverseInternal, type WeaverseLoaderData, type WeaverseLoaderRequestInfo, type WeaverseMetaObject, type WeaverseProduct, type WeaverseProjectConfigs, type WeaverseStudioQueries, defaultComponents, generateDataFromSchema, getPreviewData, getRequestQueries, getSelectedProductOptions, getWeaverseConfigs, isValidHydrogenSchema, registerComponent, useThemeSettings, withWeaverse };
411
+ export { type AllCacheOptions, type CacheResponseValidator, type ComponentLoaderArgs, type CreateHydrogenSchemaOptions, type DirectFetchResponse, type FetchProjectPayload, type FetchProjectRequestBody, type HydrogenComponent, type HydrogenComponentData, type HydrogenComponentPresets, type HydrogenComponentProps, type HydrogenComponentSchema, type HydrogenElement, type HydrogenPageAssignment, type HydrogenPageData, type HydrogenProjectType, type HydrogenSchemaValidationResult, type HydrogenThemeSchema, type HydrogenThemeSettings, IMAGES_PLACEHOLDERS, type PublicEnv, type RouteLoaderArgs, type ThemeSettingsResponse, type WeaverseArticle, type WeaverseBlog, WeaverseClient, type WeaverseClientArgs, type WeaverseCollection, WeaverseError, WeaverseHydrogen, WeaverseHydrogenItem, type WeaverseHydrogenParams, WeaverseHydrogenRoot, type WeaverseI18n, type WeaverseInternal, type WeaverseLoaderData, type WeaverseLoaderRequestInfo, type WeaverseMetaObject, type WeaverseProduct, type WeaverseProjectConfigs, type WeaverseStudioQueries, type WithCacheFetchResponse, defaultComponents, generateDataFromSchema, getPreviewData, getRequestQueries, getSelectedProductOptions, getWeaverseConfigs, hasError, isFetchProjectPayload, isThemeSettingsResponse, isValidHydrogenSchema, isWithCacheFetchResponse, registerComponent, useThemeSettings, withWeaverse };