@weaverse/hydrogen 5.9.0 → 5.9.2
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 +183 -31
- package/dist/index.d.ts +183 -31
- package/dist/index.js +159 -24
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +160 -26
- package/dist/index.mjs.map +1 -1
- package/package.json +14 -14
package/dist/index.d.mts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { SelectedOptionInput } from '@shopify/hydrogen/storefront-api-types';
|
|
2
|
-
import {
|
|
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
|
|
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:
|
|
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,16 +307,17 @@ 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
|
-
};
|
|
187
312
|
children?: {
|
|
188
313
|
id: string;
|
|
189
314
|
}[];
|
|
190
315
|
createdAt?: string;
|
|
191
|
-
|
|
316
|
+
data?: Record<string, ComponentDataValue | Record<string, unknown>>;
|
|
192
317
|
deletedAt?: string;
|
|
318
|
+
id: string;
|
|
319
|
+
type: string;
|
|
320
|
+
updatedAt?: string;
|
|
193
321
|
}
|
|
194
322
|
/**
|
|
195
323
|
* Optimized: Use Zod-inferred SchemaType directly instead of extending
|
|
@@ -197,9 +325,9 @@ interface HydrogenComponentData extends ElementData {
|
|
|
197
325
|
*/
|
|
198
326
|
type HydrogenComponentSchema = SchemaType;
|
|
199
327
|
interface HydrogenComponentProps<L = any> extends WeaverseElement {
|
|
328
|
+
children?: React$1.JSX.Element[];
|
|
200
329
|
className?: string;
|
|
201
330
|
loaderData?: L;
|
|
202
|
-
children?: React$1.JSX.Element[];
|
|
203
331
|
}
|
|
204
332
|
type WeaverseLoaderRequestInfo = {
|
|
205
333
|
search: string;
|
|
@@ -238,18 +366,19 @@ type HydrogenElement = {
|
|
|
238
366
|
};
|
|
239
367
|
interface WeaverseHydrogenParams extends Omit<WeaverseCoreParams, 'ItemConstructor'> {
|
|
240
368
|
data: HydrogenPageData;
|
|
241
|
-
|
|
369
|
+
dataContext?: Record<string, unknown> | null;
|
|
242
370
|
internal: Partial<WeaverseInternal>;
|
|
243
|
-
|
|
371
|
+
isDesignMode?: boolean;
|
|
372
|
+
isPreviewMode?: boolean;
|
|
373
|
+
isRevisionPreview?: boolean;
|
|
374
|
+
pageId: string;
|
|
244
375
|
projectId: string;
|
|
245
|
-
|
|
376
|
+
requestInfo: WeaverseLoaderRequestInfo;
|
|
377
|
+
sectionType?: string;
|
|
246
378
|
weaverseApiBase: string;
|
|
247
379
|
weaverseApiKey: string;
|
|
380
|
+
weaverseHost: string;
|
|
248
381
|
weaverseVersion?: string;
|
|
249
|
-
isDesignMode?: boolean;
|
|
250
|
-
isPreviewMode?: boolean;
|
|
251
|
-
sectionType?: string;
|
|
252
|
-
dataContext?: Record<string, unknown> | null;
|
|
253
382
|
}
|
|
254
383
|
type HydrogenComponent<T extends HydrogenComponentProps = any> = {
|
|
255
384
|
default: ForwardRefExoticComponent<T> | ((props: T) => React$1.JSX.Element);
|
|
@@ -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
|
};
|
|
@@ -301,10 +431,10 @@ type WeaverseLoaderData = {
|
|
|
301
431
|
pageAssignment?: HydrogenPageAssignment;
|
|
302
432
|
};
|
|
303
433
|
interface HydrogenPageData extends WeaverseProjectDataType {
|
|
434
|
+
__cacheId?: string;
|
|
304
435
|
id: string;
|
|
305
|
-
name: string;
|
|
306
436
|
items: HydrogenComponentData[];
|
|
307
|
-
|
|
437
|
+
name: string;
|
|
308
438
|
[key: string]: any;
|
|
309
439
|
}
|
|
310
440
|
type WeaverseI18n = I18nBase & {
|
|
@@ -562,11 +692,18 @@ type CreateHydrogenSchemaOptions = {
|
|
|
562
692
|
};
|
|
563
693
|
declare global {
|
|
564
694
|
interface Window {
|
|
565
|
-
__weaverse
|
|
566
|
-
__weaverses
|
|
567
|
-
__weaverseThemeSettingsStore
|
|
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;
|
|
@@ -574,20 +711,20 @@ declare module '@shopify/remix-oxygen' {
|
|
|
574
711
|
}
|
|
575
712
|
declare module '@shopify/hydrogen' {
|
|
576
713
|
interface HydrogenEnv {
|
|
577
|
-
WEAVERSE_PROJECT_ID: string;
|
|
578
|
-
WEAVERSE_HOST?: string;
|
|
579
|
-
WEAVERSE_API_BASE?: string;
|
|
580
|
-
WEAVERSE_API_KEY: string;
|
|
581
|
-
PUBLIC_STORE_DOMAIN: string;
|
|
582
|
-
PUBLIC_STOREFRONT_API_TOKEN: string;
|
|
583
|
-
PUBLIC_GOOGLE_GTM_ID: string;
|
|
584
|
-
JUDGEME_PRIVATE_API_TOKEN: string;
|
|
585
714
|
CUSTOM_COLLECTION_BANNER_METAFIELD: string;
|
|
586
|
-
|
|
715
|
+
JUDGEME_PRIVATE_API_TOKEN: string;
|
|
716
|
+
KLAVIYO_PRIVATE_API_TOKEN: string;
|
|
587
717
|
METAOBJECT_COLOR_NAME_KEY: string;
|
|
588
718
|
METAOBJECT_COLOR_VALUE_KEY: string;
|
|
589
|
-
|
|
719
|
+
METAOBJECT_COLORS_TYPE: string;
|
|
720
|
+
PUBLIC_GOOGLE_GTM_ID: string;
|
|
590
721
|
PUBLIC_SHOPIFY_INBOX_SHOP_ID: string;
|
|
722
|
+
PUBLIC_STORE_DOMAIN: string;
|
|
723
|
+
PUBLIC_STOREFRONT_API_TOKEN: string;
|
|
724
|
+
WEAVERSE_API_BASE?: string;
|
|
725
|
+
WEAVERSE_API_KEY: string;
|
|
726
|
+
WEAVERSE_HOST?: string;
|
|
727
|
+
WEAVERSE_PROJECT_ID: string;
|
|
591
728
|
}
|
|
592
729
|
}
|
|
593
730
|
/**
|
|
@@ -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 {
|
|
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
|
|
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:
|
|
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,16 +307,17 @@ 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
|
-
};
|
|
187
312
|
children?: {
|
|
188
313
|
id: string;
|
|
189
314
|
}[];
|
|
190
315
|
createdAt?: string;
|
|
191
|
-
|
|
316
|
+
data?: Record<string, ComponentDataValue | Record<string, unknown>>;
|
|
192
317
|
deletedAt?: string;
|
|
318
|
+
id: string;
|
|
319
|
+
type: string;
|
|
320
|
+
updatedAt?: string;
|
|
193
321
|
}
|
|
194
322
|
/**
|
|
195
323
|
* Optimized: Use Zod-inferred SchemaType directly instead of extending
|
|
@@ -197,9 +325,9 @@ interface HydrogenComponentData extends ElementData {
|
|
|
197
325
|
*/
|
|
198
326
|
type HydrogenComponentSchema = SchemaType;
|
|
199
327
|
interface HydrogenComponentProps<L = any> extends WeaverseElement {
|
|
328
|
+
children?: React$1.JSX.Element[];
|
|
200
329
|
className?: string;
|
|
201
330
|
loaderData?: L;
|
|
202
|
-
children?: React$1.JSX.Element[];
|
|
203
331
|
}
|
|
204
332
|
type WeaverseLoaderRequestInfo = {
|
|
205
333
|
search: string;
|
|
@@ -238,18 +366,19 @@ type HydrogenElement = {
|
|
|
238
366
|
};
|
|
239
367
|
interface WeaverseHydrogenParams extends Omit<WeaverseCoreParams, 'ItemConstructor'> {
|
|
240
368
|
data: HydrogenPageData;
|
|
241
|
-
|
|
369
|
+
dataContext?: Record<string, unknown> | null;
|
|
242
370
|
internal: Partial<WeaverseInternal>;
|
|
243
|
-
|
|
371
|
+
isDesignMode?: boolean;
|
|
372
|
+
isPreviewMode?: boolean;
|
|
373
|
+
isRevisionPreview?: boolean;
|
|
374
|
+
pageId: string;
|
|
244
375
|
projectId: string;
|
|
245
|
-
|
|
376
|
+
requestInfo: WeaverseLoaderRequestInfo;
|
|
377
|
+
sectionType?: string;
|
|
246
378
|
weaverseApiBase: string;
|
|
247
379
|
weaverseApiKey: string;
|
|
380
|
+
weaverseHost: string;
|
|
248
381
|
weaverseVersion?: string;
|
|
249
|
-
isDesignMode?: boolean;
|
|
250
|
-
isPreviewMode?: boolean;
|
|
251
|
-
sectionType?: string;
|
|
252
|
-
dataContext?: Record<string, unknown> | null;
|
|
253
382
|
}
|
|
254
383
|
type HydrogenComponent<T extends HydrogenComponentProps = any> = {
|
|
255
384
|
default: ForwardRefExoticComponent<T> | ((props: T) => React$1.JSX.Element);
|
|
@@ -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
|
};
|
|
@@ -301,10 +431,10 @@ type WeaverseLoaderData = {
|
|
|
301
431
|
pageAssignment?: HydrogenPageAssignment;
|
|
302
432
|
};
|
|
303
433
|
interface HydrogenPageData extends WeaverseProjectDataType {
|
|
434
|
+
__cacheId?: string;
|
|
304
435
|
id: string;
|
|
305
|
-
name: string;
|
|
306
436
|
items: HydrogenComponentData[];
|
|
307
|
-
|
|
437
|
+
name: string;
|
|
308
438
|
[key: string]: any;
|
|
309
439
|
}
|
|
310
440
|
type WeaverseI18n = I18nBase & {
|
|
@@ -562,11 +692,18 @@ type CreateHydrogenSchemaOptions = {
|
|
|
562
692
|
};
|
|
563
693
|
declare global {
|
|
564
694
|
interface Window {
|
|
565
|
-
__weaverse
|
|
566
|
-
__weaverses
|
|
567
|
-
__weaverseThemeSettingsStore
|
|
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;
|
|
@@ -574,20 +711,20 @@ declare module '@shopify/remix-oxygen' {
|
|
|
574
711
|
}
|
|
575
712
|
declare module '@shopify/hydrogen' {
|
|
576
713
|
interface HydrogenEnv {
|
|
577
|
-
WEAVERSE_PROJECT_ID: string;
|
|
578
|
-
WEAVERSE_HOST?: string;
|
|
579
|
-
WEAVERSE_API_BASE?: string;
|
|
580
|
-
WEAVERSE_API_KEY: string;
|
|
581
|
-
PUBLIC_STORE_DOMAIN: string;
|
|
582
|
-
PUBLIC_STOREFRONT_API_TOKEN: string;
|
|
583
|
-
PUBLIC_GOOGLE_GTM_ID: string;
|
|
584
|
-
JUDGEME_PRIVATE_API_TOKEN: string;
|
|
585
714
|
CUSTOM_COLLECTION_BANNER_METAFIELD: string;
|
|
586
|
-
|
|
715
|
+
JUDGEME_PRIVATE_API_TOKEN: string;
|
|
716
|
+
KLAVIYO_PRIVATE_API_TOKEN: string;
|
|
587
717
|
METAOBJECT_COLOR_NAME_KEY: string;
|
|
588
718
|
METAOBJECT_COLOR_VALUE_KEY: string;
|
|
589
|
-
|
|
719
|
+
METAOBJECT_COLORS_TYPE: string;
|
|
720
|
+
PUBLIC_GOOGLE_GTM_ID: string;
|
|
590
721
|
PUBLIC_SHOPIFY_INBOX_SHOP_ID: string;
|
|
722
|
+
PUBLIC_STORE_DOMAIN: string;
|
|
723
|
+
PUBLIC_STOREFRONT_API_TOKEN: string;
|
|
724
|
+
WEAVERSE_API_BASE?: string;
|
|
725
|
+
WEAVERSE_API_KEY: string;
|
|
726
|
+
WEAVERSE_HOST?: string;
|
|
727
|
+
WEAVERSE_PROJECT_ID: string;
|
|
591
728
|
}
|
|
592
729
|
}
|
|
593
730
|
/**
|
|
@@ -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 };
|