@weaverse/hydrogen 5.9.0 → 5.9.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.mts CHANGED
@@ -1,5 +1,5 @@
1
1
  import { SelectedOptionInput } from '@shopify/hydrogen/storefront-api-types';
2
- import { EventEmitter, Weaverse, WeaverseItemStore, ElementData, WeaverseElement, WeaverseProjectDataType, WeaverseCoreParams, WeaverseResourcePickerData } from '@weaverse/react';
2
+ import { Weaverse, 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';
@@ -17,14 +17,20 @@ type WeaverseThemeData = {
17
17
  schema?: HydrogenThemeSchema;
18
18
  publicEnv?: PublicEnv;
19
19
  };
20
- declare class ThemeSettingsStore extends EventEmitter {
20
+ declare class ThemeSettingsStore {
21
21
  settings: HydrogenThemeSettings;
22
22
  schema?: HydrogenThemeSchema;
23
23
  publicEnv?: PublicEnv;
24
+ private listeners;
25
+ private readonly MAX_LISTENERS;
26
+ private isDestroyed;
24
27
  constructor(data: WeaverseThemeData);
25
28
  updateThemeSettings: (newSettings: HydrogenThemeSettings) => void;
26
29
  getSnapshot: () => HydrogenThemeSettings;
27
30
  getServerSnapshot: () => HydrogenThemeSettings;
31
+ subscribe: (callback: () => void) => () => void;
32
+ private emit;
33
+ destroy: () => void;
28
34
  }
29
35
 
30
36
  declare class WeaverseHydrogenItem extends WeaverseItemStore {
@@ -43,6 +49,7 @@ declare class WeaverseHydrogen extends Weaverse {
43
49
  weaverseVersion: string;
44
50
  isDesignMode: boolean;
45
51
  isPreviewMode: boolean;
52
+ isRevisionPreview: boolean;
46
53
  sectionType: string;
47
54
  ItemConstructor: typeof WeaverseHydrogenItem;
48
55
  data: HydrogenPageData;
@@ -50,14 +57,69 @@ declare class WeaverseHydrogen extends Weaverse {
50
57
  static elementRegistry: Map<string, HydrogenElement>;
51
58
  constructor(params: WeaverseHydrogenParams);
52
59
  }
60
+ /**
61
+ * Register a Weaverse component with the global element registry.
62
+ * Must be called before rendering components in WeaverseHydrogenRoot.
63
+ *
64
+ * @param element - Component configuration with schema, Component, and optional loader
65
+ *
66
+ * @example
67
+ * ```typescript
68
+ * import Hero from './sections/Hero'
69
+ * import { schema } from './sections/Hero'
70
+ *
71
+ * registerComponent({
72
+ * type: 'hero',
73
+ * Component: Hero,
74
+ * schema,
75
+ * loader: async ({ data, weaverse }) => {
76
+ * return { someData: 'value' }
77
+ * }
78
+ * })
79
+ * ```
80
+ */
53
81
  declare function registerComponent(element: HydrogenElement): void;
54
82
  declare const WeaverseHydrogenRoot: React$1.MemoExoticComponent<({ components, errorComponent: ErrorComponent, }: {
55
83
  components: HydrogenComponent[];
56
84
  errorComponent?: React.FC<{
57
- error: any;
85
+ error: Error | unknown;
58
86
  }>;
59
87
  }) => react_jsx_runtime.JSX.Element>;
88
+ /**
89
+ * Higher-order component that wraps your app with Weaverse theme settings context.
90
+ * Provides theme settings to all child components via React context.
91
+ *
92
+ * @param Component - The root component to wrap
93
+ * @returns Wrapped component with theme settings provider
94
+ *
95
+ * @example
96
+ * ```typescript
97
+ * import { withWeaverse } from '@weaverse/hydrogen'
98
+ *
99
+ * function App() {
100
+ * return <div>My App</div>
101
+ * }
102
+ *
103
+ * export default withWeaverse(App)
104
+ * ```
105
+ */
60
106
  declare function withWeaverse(Component: ComponentType<any>): (props: JSX.IntrinsicAttributes) => react_jsx_runtime.JSX.Element;
107
+ /**
108
+ * React hook to access Weaverse theme settings from anywhere in your component tree.
109
+ * Must be used within a component wrapped by `withWeaverse` or inside `WeaverseHydrogenRoot`.
110
+ *
111
+ * @returns Current theme settings object
112
+ *
113
+ * @example
114
+ * ```typescript
115
+ * function MyComponent() {
116
+ * const theme = useThemeSettings()
117
+ * const primaryColor = theme.colors?.primary
118
+ *
119
+ * return <div style={{ color: primaryColor }}>Styled content</div>
120
+ * }
121
+ * ```
122
+ */
61
123
  declare function useThemeSettings<T = HydrogenThemeSettings>(): T;
62
124
 
63
125
  declare class WeaverseClient {
@@ -162,11 +224,76 @@ declare class WeaverseClient {
162
224
  */
163
225
  private readonly directFetch;
164
226
  private getApiUrl;
227
+ /**
228
+ * Fetch data with caching support for both design mode and production.
229
+ * Uses direct fetch in design mode, Hydrogen's withCache in production.
230
+ * Automatically includes projectId in cache key for multi-project isolation.
231
+ *
232
+ * @param url - The URL to fetch from
233
+ * @param options - Fetch options including optional cache strategy
234
+ * @returns Promise resolving to the fetched data
235
+ *
236
+ * @example
237
+ * ```typescript
238
+ * const data = await weaverse.fetchWithCache<MyData>(
239
+ * 'https://api.example.com/data',
240
+ * { method: 'POST', body: JSON.stringify({ key: 'value' }) }
241
+ * )
242
+ * ```
243
+ */
165
244
  fetchWithCache: <T = unknown>(url: string, options?: RequestInit & {
166
245
  strategy?: CachingStrategy;
167
246
  }) => Promise<T>;
247
+ /**
248
+ * Load theme settings from Weaverse API with fallback to schema defaults.
249
+ * Merges remote settings with local theme schema and handles design mode serialization.
250
+ *
251
+ * @param strategy - Optional cache strategy override
252
+ * @returns Promise resolving to theme settings response
253
+ *
254
+ * @example
255
+ * ```typescript
256
+ * const settings = await weaverse.loadThemeSettings()
257
+ * const primaryColor = settings.theme.colors?.primary
258
+ * ```
259
+ */
168
260
  loadThemeSettings: (strategy?: CachingStrategy) => Promise<ThemeSettingsResponse>;
261
+ /**
262
+ * Generate fallback page with default structure when page data is unavailable.
263
+ * Used internally when API returns no page or when page needs default content.
264
+ *
265
+ * @param message - Custom message to display in the fallback page
266
+ * @returns HydrogenPageData with single main component containing the message
267
+ */
169
268
  generateFallbackPage: (message: string) => HydrogenPageData;
269
+ /**
270
+ * Load page data from Weaverse API with optional route-level project override.
271
+ * Fetches page content, executes component loaders, and handles empty items fallback.
272
+ *
273
+ * @param params - Optional page loading parameters
274
+ * @param params.type - Page type (HOME, PAGE, PRODUCT, COLLECTION, etc.)
275
+ * @param params.handle - Page handle for dynamic routes
276
+ * @param params.locale - Locale override
277
+ * @param params.projectId - Route-level project ID override (for multi-project)
278
+ * @param params.strategy - Custom cache strategy override
279
+ * @returns Promise resolving to page data or null on error
280
+ *
281
+ * @example
282
+ * ```typescript
283
+ * // Basic usage
284
+ * const data = await weaverse.loadPage()
285
+ *
286
+ * // With page type
287
+ * const data = await weaverse.loadPage({ type: 'HOME' })
288
+ *
289
+ * // Route-level project override
290
+ * const data = await weaverse.loadPage({
291
+ * type: 'PAGE',
292
+ * handle: 'about',
293
+ * projectId: 'campaign-project-123'
294
+ * })
295
+ * ```
296
+ */
170
297
  loadPage: (params?: LoadPageParams) => Promise<WeaverseLoaderData | null>;
171
298
  execComponentLoader: (item: HydrogenComponentData) => Promise<HydrogenComponentData>;
172
299
  }
@@ -180,10 +307,11 @@ interface RouteLoaderArgs extends LoaderFunctionArgs {
180
307
  weaverse: WeaverseClient;
181
308
  };
182
309
  }
310
+ type ComponentDataValue = string | number | boolean | undefined | null;
183
311
  interface HydrogenComponentData extends ElementData {
184
- data?: {
185
- [key: string]: any;
186
- };
312
+ id: string;
313
+ type: string;
314
+ data?: Record<string, ComponentDataValue | Record<string, unknown>>;
187
315
  children?: {
188
316
  id: string;
189
317
  }[];
@@ -248,6 +376,7 @@ interface WeaverseHydrogenParams extends Omit<WeaverseCoreParams, 'ItemConstruct
248
376
  weaverseVersion?: string;
249
377
  isDesignMode?: boolean;
250
378
  isPreviewMode?: boolean;
379
+ isRevisionPreview?: boolean;
251
380
  sectionType?: string;
252
381
  dataContext?: Record<string, unknown> | null;
253
382
  }
@@ -278,6 +407,7 @@ type WeaverseProjectConfigs = {
278
407
  weaverseVersion?: string;
279
408
  isDesignMode?: boolean;
280
409
  isPreviewMode?: boolean;
410
+ isRevisionPreview?: boolean;
281
411
  sectionType?: string;
282
412
  publicEnv?: PublicEnv;
283
413
  };
@@ -562,11 +692,18 @@ type CreateHydrogenSchemaOptions = {
562
692
  };
563
693
  declare global {
564
694
  interface Window {
565
- __weaverse: WeaverseHydrogen;
566
- __weaverses: Record<string, WeaverseHydrogen>;
567
- __weaverseThemeSettingsStore: ThemeSettingsStore;
695
+ __weaverse?: WeaverseHydrogen;
696
+ __weaverses?: Record<string, WeaverseHydrogen>;
697
+ __weaverseThemeSettingsStore?: ThemeSettingsStore;
568
698
  }
569
699
  }
700
+ interface WeaverseStudio {
701
+ init: (weaverse: WeaverseHydrogen) => void;
702
+ refreshStudio: (params: WeaverseHydrogenParams) => void;
703
+ }
704
+ declare function hasWeaverseStudio(window: Window): window is Window & {
705
+ weaverseStudio: WeaverseStudio;
706
+ };
570
707
  declare module '@shopify/remix-oxygen' {
571
708
  interface AppLoadContext {
572
709
  weaverse: WeaverseClient;
@@ -739,6 +876,21 @@ declare function getWeaverseConfigs(request: Request, env: HydrogenEnv): Weavers
739
876
  declare function generateDataFromSchema(schema: HydrogenComponentSchema | HydrogenThemeSchema): Record<string, any>;
740
877
  declare function getPreviewData(type: string, components: HydrogenComponent[], weaverseHost: string): WeaverseLoaderData;
741
878
 
879
+ /**
880
+ * Filter out Weaverse-specific query parameters from product options.
881
+ * Removes `isDesignMode` and any parameters starting with `weaverse` prefix.
882
+ *
883
+ * @param request - The incoming HTTP request
884
+ * @returns Filtered product options for Shopify Hydrogen
885
+ *
886
+ * @example
887
+ * ```typescript
888
+ * export async function loader({ request }: LoaderFunctionArgs) {
889
+ * const selectedOptions = getSelectedProductOptions(request)
890
+ * // Use selectedOptions for product queries without Weaverse params
891
+ * }
892
+ * ```
893
+ */
742
894
  declare function getSelectedProductOptions(request: Request): SelectedOptionInput[];
743
895
  declare const IMAGES_PLACEHOLDERS: {
744
896
  logo_white: string;
@@ -772,4 +924,4 @@ declare const IMAGES_PLACEHOLDERS: {
772
924
  product_18: string;
773
925
  };
774
926
 
775
- export { 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 LoadPageParams, type ProjectIdValidationResult, type ProjectIdValue, type PublicEnv, type RouteLoaderArgs, type ThemeSettingsResponse, type WeaverseArticle, type WeaverseBlog, WeaverseClient, type WeaverseClientArgs, type WeaverseCollection, type WeaverseDataContext, WeaverseError, WeaverseHydrogen, WeaverseHydrogenItem, type WeaverseHydrogenParams, WeaverseHydrogenRoot, type WeaverseI18n, type WeaverseInternal, type WeaverseLoaderData, type WeaverseLoaderRequestInfo, type WeaverseMetaObject, type WeaverseProduct, type WeaverseProjectConfigs, type WeaverseStudioQueries, type WithCacheFetchResponse, createWeaverseDataContext, defaultComponents, generateDataFromSchema, getPreviewData, getRequestQueries, getSelectedProductOptions, getWeaverseConfigs, hasError, isFetchProjectPayload, isProjectIdFunction, isThemeSettingsResponse, isValidHydrogenSchema, isWithCacheFetchResponse, registerComponent, useThemeSettings, useWeaverseDataContext, withWeaverse };
927
+ export { type CacheResponseValidator, type ComponentDataValue, 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 LoadPageParams, type ProjectIdValidationResult, type ProjectIdValue, type PublicEnv, type RouteLoaderArgs, type ThemeSettingsResponse, type WeaverseArticle, type WeaverseBlog, WeaverseClient, type WeaverseClientArgs, type WeaverseCollection, type WeaverseDataContext, WeaverseError, WeaverseHydrogen, WeaverseHydrogenItem, type WeaverseHydrogenParams, WeaverseHydrogenRoot, type WeaverseI18n, type WeaverseInternal, type WeaverseLoaderData, type WeaverseLoaderRequestInfo, type WeaverseMetaObject, type WeaverseProduct, type WeaverseProjectConfigs, type WeaverseStudioQueries, type WithCacheFetchResponse, createWeaverseDataContext, defaultComponents, generateDataFromSchema, getPreviewData, getRequestQueries, getSelectedProductOptions, getWeaverseConfigs, hasError, hasWeaverseStudio, isFetchProjectPayload, isProjectIdFunction, isThemeSettingsResponse, isValidHydrogenSchema, isWithCacheFetchResponse, registerComponent, useThemeSettings, useWeaverseDataContext, withWeaverse };
package/dist/index.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import { SelectedOptionInput } from '@shopify/hydrogen/storefront-api-types';
2
- import { EventEmitter, Weaverse, WeaverseItemStore, ElementData, WeaverseElement, WeaverseProjectDataType, WeaverseCoreParams, WeaverseResourcePickerData } from '@weaverse/react';
2
+ import { Weaverse, 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';
@@ -17,14 +17,20 @@ type WeaverseThemeData = {
17
17
  schema?: HydrogenThemeSchema;
18
18
  publicEnv?: PublicEnv;
19
19
  };
20
- declare class ThemeSettingsStore extends EventEmitter {
20
+ declare class ThemeSettingsStore {
21
21
  settings: HydrogenThemeSettings;
22
22
  schema?: HydrogenThemeSchema;
23
23
  publicEnv?: PublicEnv;
24
+ private listeners;
25
+ private readonly MAX_LISTENERS;
26
+ private isDestroyed;
24
27
  constructor(data: WeaverseThemeData);
25
28
  updateThemeSettings: (newSettings: HydrogenThemeSettings) => void;
26
29
  getSnapshot: () => HydrogenThemeSettings;
27
30
  getServerSnapshot: () => HydrogenThemeSettings;
31
+ subscribe: (callback: () => void) => () => void;
32
+ private emit;
33
+ destroy: () => void;
28
34
  }
29
35
 
30
36
  declare class WeaverseHydrogenItem extends WeaverseItemStore {
@@ -43,6 +49,7 @@ declare class WeaverseHydrogen extends Weaverse {
43
49
  weaverseVersion: string;
44
50
  isDesignMode: boolean;
45
51
  isPreviewMode: boolean;
52
+ isRevisionPreview: boolean;
46
53
  sectionType: string;
47
54
  ItemConstructor: typeof WeaverseHydrogenItem;
48
55
  data: HydrogenPageData;
@@ -50,14 +57,69 @@ declare class WeaverseHydrogen extends Weaverse {
50
57
  static elementRegistry: Map<string, HydrogenElement>;
51
58
  constructor(params: WeaverseHydrogenParams);
52
59
  }
60
+ /**
61
+ * Register a Weaverse component with the global element registry.
62
+ * Must be called before rendering components in WeaverseHydrogenRoot.
63
+ *
64
+ * @param element - Component configuration with schema, Component, and optional loader
65
+ *
66
+ * @example
67
+ * ```typescript
68
+ * import Hero from './sections/Hero'
69
+ * import { schema } from './sections/Hero'
70
+ *
71
+ * registerComponent({
72
+ * type: 'hero',
73
+ * Component: Hero,
74
+ * schema,
75
+ * loader: async ({ data, weaverse }) => {
76
+ * return { someData: 'value' }
77
+ * }
78
+ * })
79
+ * ```
80
+ */
53
81
  declare function registerComponent(element: HydrogenElement): void;
54
82
  declare const WeaverseHydrogenRoot: React$1.MemoExoticComponent<({ components, errorComponent: ErrorComponent, }: {
55
83
  components: HydrogenComponent[];
56
84
  errorComponent?: React.FC<{
57
- error: any;
85
+ error: Error | unknown;
58
86
  }>;
59
87
  }) => react_jsx_runtime.JSX.Element>;
88
+ /**
89
+ * Higher-order component that wraps your app with Weaverse theme settings context.
90
+ * Provides theme settings to all child components via React context.
91
+ *
92
+ * @param Component - The root component to wrap
93
+ * @returns Wrapped component with theme settings provider
94
+ *
95
+ * @example
96
+ * ```typescript
97
+ * import { withWeaverse } from '@weaverse/hydrogen'
98
+ *
99
+ * function App() {
100
+ * return <div>My App</div>
101
+ * }
102
+ *
103
+ * export default withWeaverse(App)
104
+ * ```
105
+ */
60
106
  declare function withWeaverse(Component: ComponentType<any>): (props: JSX.IntrinsicAttributes) => react_jsx_runtime.JSX.Element;
107
+ /**
108
+ * React hook to access Weaverse theme settings from anywhere in your component tree.
109
+ * Must be used within a component wrapped by `withWeaverse` or inside `WeaverseHydrogenRoot`.
110
+ *
111
+ * @returns Current theme settings object
112
+ *
113
+ * @example
114
+ * ```typescript
115
+ * function MyComponent() {
116
+ * const theme = useThemeSettings()
117
+ * const primaryColor = theme.colors?.primary
118
+ *
119
+ * return <div style={{ color: primaryColor }}>Styled content</div>
120
+ * }
121
+ * ```
122
+ */
61
123
  declare function useThemeSettings<T = HydrogenThemeSettings>(): T;
62
124
 
63
125
  declare class WeaverseClient {
@@ -162,11 +224,76 @@ declare class WeaverseClient {
162
224
  */
163
225
  private readonly directFetch;
164
226
  private getApiUrl;
227
+ /**
228
+ * Fetch data with caching support for both design mode and production.
229
+ * Uses direct fetch in design mode, Hydrogen's withCache in production.
230
+ * Automatically includes projectId in cache key for multi-project isolation.
231
+ *
232
+ * @param url - The URL to fetch from
233
+ * @param options - Fetch options including optional cache strategy
234
+ * @returns Promise resolving to the fetched data
235
+ *
236
+ * @example
237
+ * ```typescript
238
+ * const data = await weaverse.fetchWithCache<MyData>(
239
+ * 'https://api.example.com/data',
240
+ * { method: 'POST', body: JSON.stringify({ key: 'value' }) }
241
+ * )
242
+ * ```
243
+ */
165
244
  fetchWithCache: <T = unknown>(url: string, options?: RequestInit & {
166
245
  strategy?: CachingStrategy;
167
246
  }) => Promise<T>;
247
+ /**
248
+ * Load theme settings from Weaverse API with fallback to schema defaults.
249
+ * Merges remote settings with local theme schema and handles design mode serialization.
250
+ *
251
+ * @param strategy - Optional cache strategy override
252
+ * @returns Promise resolving to theme settings response
253
+ *
254
+ * @example
255
+ * ```typescript
256
+ * const settings = await weaverse.loadThemeSettings()
257
+ * const primaryColor = settings.theme.colors?.primary
258
+ * ```
259
+ */
168
260
  loadThemeSettings: (strategy?: CachingStrategy) => Promise<ThemeSettingsResponse>;
261
+ /**
262
+ * Generate fallback page with default structure when page data is unavailable.
263
+ * Used internally when API returns no page or when page needs default content.
264
+ *
265
+ * @param message - Custom message to display in the fallback page
266
+ * @returns HydrogenPageData with single main component containing the message
267
+ */
169
268
  generateFallbackPage: (message: string) => HydrogenPageData;
269
+ /**
270
+ * Load page data from Weaverse API with optional route-level project override.
271
+ * Fetches page content, executes component loaders, and handles empty items fallback.
272
+ *
273
+ * @param params - Optional page loading parameters
274
+ * @param params.type - Page type (HOME, PAGE, PRODUCT, COLLECTION, etc.)
275
+ * @param params.handle - Page handle for dynamic routes
276
+ * @param params.locale - Locale override
277
+ * @param params.projectId - Route-level project ID override (for multi-project)
278
+ * @param params.strategy - Custom cache strategy override
279
+ * @returns Promise resolving to page data or null on error
280
+ *
281
+ * @example
282
+ * ```typescript
283
+ * // Basic usage
284
+ * const data = await weaverse.loadPage()
285
+ *
286
+ * // With page type
287
+ * const data = await weaverse.loadPage({ type: 'HOME' })
288
+ *
289
+ * // Route-level project override
290
+ * const data = await weaverse.loadPage({
291
+ * type: 'PAGE',
292
+ * handle: 'about',
293
+ * projectId: 'campaign-project-123'
294
+ * })
295
+ * ```
296
+ */
170
297
  loadPage: (params?: LoadPageParams) => Promise<WeaverseLoaderData | null>;
171
298
  execComponentLoader: (item: HydrogenComponentData) => Promise<HydrogenComponentData>;
172
299
  }
@@ -180,10 +307,11 @@ interface RouteLoaderArgs extends LoaderFunctionArgs {
180
307
  weaverse: WeaverseClient;
181
308
  };
182
309
  }
310
+ type ComponentDataValue = string | number | boolean | undefined | null;
183
311
  interface HydrogenComponentData extends ElementData {
184
- data?: {
185
- [key: string]: any;
186
- };
312
+ id: string;
313
+ type: string;
314
+ data?: Record<string, ComponentDataValue | Record<string, unknown>>;
187
315
  children?: {
188
316
  id: string;
189
317
  }[];
@@ -248,6 +376,7 @@ interface WeaverseHydrogenParams extends Omit<WeaverseCoreParams, 'ItemConstruct
248
376
  weaverseVersion?: string;
249
377
  isDesignMode?: boolean;
250
378
  isPreviewMode?: boolean;
379
+ isRevisionPreview?: boolean;
251
380
  sectionType?: string;
252
381
  dataContext?: Record<string, unknown> | null;
253
382
  }
@@ -278,6 +407,7 @@ type WeaverseProjectConfigs = {
278
407
  weaverseVersion?: string;
279
408
  isDesignMode?: boolean;
280
409
  isPreviewMode?: boolean;
410
+ isRevisionPreview?: boolean;
281
411
  sectionType?: string;
282
412
  publicEnv?: PublicEnv;
283
413
  };
@@ -562,11 +692,18 @@ type CreateHydrogenSchemaOptions = {
562
692
  };
563
693
  declare global {
564
694
  interface Window {
565
- __weaverse: WeaverseHydrogen;
566
- __weaverses: Record<string, WeaverseHydrogen>;
567
- __weaverseThemeSettingsStore: ThemeSettingsStore;
695
+ __weaverse?: WeaverseHydrogen;
696
+ __weaverses?: Record<string, WeaverseHydrogen>;
697
+ __weaverseThemeSettingsStore?: ThemeSettingsStore;
568
698
  }
569
699
  }
700
+ interface WeaverseStudio {
701
+ init: (weaverse: WeaverseHydrogen) => void;
702
+ refreshStudio: (params: WeaverseHydrogenParams) => void;
703
+ }
704
+ declare function hasWeaverseStudio(window: Window): window is Window & {
705
+ weaverseStudio: WeaverseStudio;
706
+ };
570
707
  declare module '@shopify/remix-oxygen' {
571
708
  interface AppLoadContext {
572
709
  weaverse: WeaverseClient;
@@ -739,6 +876,21 @@ declare function getWeaverseConfigs(request: Request, env: HydrogenEnv): Weavers
739
876
  declare function generateDataFromSchema(schema: HydrogenComponentSchema | HydrogenThemeSchema): Record<string, any>;
740
877
  declare function getPreviewData(type: string, components: HydrogenComponent[], weaverseHost: string): WeaverseLoaderData;
741
878
 
879
+ /**
880
+ * Filter out Weaverse-specific query parameters from product options.
881
+ * Removes `isDesignMode` and any parameters starting with `weaverse` prefix.
882
+ *
883
+ * @param request - The incoming HTTP request
884
+ * @returns Filtered product options for Shopify Hydrogen
885
+ *
886
+ * @example
887
+ * ```typescript
888
+ * export async function loader({ request }: LoaderFunctionArgs) {
889
+ * const selectedOptions = getSelectedProductOptions(request)
890
+ * // Use selectedOptions for product queries without Weaverse params
891
+ * }
892
+ * ```
893
+ */
742
894
  declare function getSelectedProductOptions(request: Request): SelectedOptionInput[];
743
895
  declare const IMAGES_PLACEHOLDERS: {
744
896
  logo_white: string;
@@ -772,4 +924,4 @@ declare const IMAGES_PLACEHOLDERS: {
772
924
  product_18: string;
773
925
  };
774
926
 
775
- export { 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 LoadPageParams, type ProjectIdValidationResult, type ProjectIdValue, type PublicEnv, type RouteLoaderArgs, type ThemeSettingsResponse, type WeaverseArticle, type WeaverseBlog, WeaverseClient, type WeaverseClientArgs, type WeaverseCollection, type WeaverseDataContext, WeaverseError, WeaverseHydrogen, WeaverseHydrogenItem, type WeaverseHydrogenParams, WeaverseHydrogenRoot, type WeaverseI18n, type WeaverseInternal, type WeaverseLoaderData, type WeaverseLoaderRequestInfo, type WeaverseMetaObject, type WeaverseProduct, type WeaverseProjectConfigs, type WeaverseStudioQueries, type WithCacheFetchResponse, createWeaverseDataContext, defaultComponents, generateDataFromSchema, getPreviewData, getRequestQueries, getSelectedProductOptions, getWeaverseConfigs, hasError, isFetchProjectPayload, isProjectIdFunction, isThemeSettingsResponse, isValidHydrogenSchema, isWithCacheFetchResponse, registerComponent, useThemeSettings, useWeaverseDataContext, withWeaverse };
927
+ export { type CacheResponseValidator, type ComponentDataValue, 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 LoadPageParams, type ProjectIdValidationResult, type ProjectIdValue, type PublicEnv, type RouteLoaderArgs, type ThemeSettingsResponse, type WeaverseArticle, type WeaverseBlog, WeaverseClient, type WeaverseClientArgs, type WeaverseCollection, type WeaverseDataContext, WeaverseError, WeaverseHydrogen, WeaverseHydrogenItem, type WeaverseHydrogenParams, WeaverseHydrogenRoot, type WeaverseI18n, type WeaverseInternal, type WeaverseLoaderData, type WeaverseLoaderRequestInfo, type WeaverseMetaObject, type WeaverseProduct, type WeaverseProjectConfigs, type WeaverseStudioQueries, type WithCacheFetchResponse, createWeaverseDataContext, defaultComponents, generateDataFromSchema, getPreviewData, getRequestQueries, getSelectedProductOptions, getWeaverseConfigs, hasError, hasWeaverseStudio, isFetchProjectPayload, isProjectIdFunction, isThemeSettingsResponse, isValidHydrogenSchema, isWithCacheFetchResponse, registerComponent, useThemeSettings, useWeaverseDataContext, withWeaverse };