@weaverse/hydrogen 5.13.0 → 5.14.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 +59 -5
- package/dist/index.d.ts +59 -5
- package/dist/index.js +108 -15
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +108 -17
- package/dist/index.mjs.map +1 -1
- package/package.json +4 -4
package/dist/index.d.mts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { SelectedOptionInput } from '@shopify/hydrogen/storefront-api-types';
|
|
2
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
|
-
import { PageType, InspectorGroup, SchemaType, ComponentPresets, SchemaValidationResult } from '@weaverse/schema';
|
|
4
|
+
import { PageType, InspectorGroup, SchemaType, PageSEOData, ComponentPresets, SchemaValidationResult } from '@weaverse/schema';
|
|
5
5
|
export * from '@weaverse/schema';
|
|
6
6
|
export { BasicInput, HeadingInput, InputType, InspectorGroup, PageType, SchemaValidationIssue, SchemaValidationResult } from '@weaverse/schema';
|
|
7
7
|
import { createWithCache, CachingStrategy, I18nBase, HydrogenContext, HydrogenEnv } from '@shopify/hydrogen';
|
|
@@ -9,7 +9,7 @@ export { CachingStrategy } from '@shopify/hydrogen';
|
|
|
9
9
|
import { LoaderFunctionArgs, AppLoadContext } from '@shopify/remix-oxygen';
|
|
10
10
|
import * as React$1 from 'react';
|
|
11
11
|
import { ReactNode, ComponentType, JSX, ForwardRefExoticComponent } from 'react';
|
|
12
|
-
import { NavigateFunction, UIMatch } from 'react-router';
|
|
12
|
+
import { NavigateFunction, UIMatch, MetaDescriptor } from 'react-router';
|
|
13
13
|
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
14
14
|
|
|
15
15
|
/**
|
|
@@ -131,6 +131,8 @@ declare function ThemeTextProvider({ staticContent, merchantOverrides, t: extern
|
|
|
131
131
|
*/
|
|
132
132
|
declare function useThemeText(): ThemeTextValue;
|
|
133
133
|
|
|
134
|
+
type WeaverseDataValue = WeaverseLoaderData | Promise<WeaverseLoaderData> | null;
|
|
135
|
+
|
|
134
136
|
declare class WeaverseHydrogenItem extends WeaverseItemStore {
|
|
135
137
|
weaverse: WeaverseHydrogen;
|
|
136
138
|
/**
|
|
@@ -226,12 +228,22 @@ declare class WeaverseHydrogen extends Weaverse {
|
|
|
226
228
|
* ```
|
|
227
229
|
*/
|
|
228
230
|
declare function registerComponent(element: HydrogenElement): void;
|
|
229
|
-
declare const WeaverseHydrogenRoot: React$1.MemoExoticComponent<({ components, errorComponent: ErrorComponent, }: {
|
|
231
|
+
declare const WeaverseHydrogenRoot: React$1.MemoExoticComponent<({ components, data: dataProp, errorComponent: ErrorComponent, }: {
|
|
230
232
|
components: HydrogenComponent[];
|
|
233
|
+
/**
|
|
234
|
+
* Optional explicit `weaverseData` payload. When provided, bypasses the
|
|
235
|
+
* automatic route-scoped resolution. Accepts a resolved value, a
|
|
236
|
+
* `Promise` (handled via `<Await>`), or `null` to suppress rendering.
|
|
237
|
+
*
|
|
238
|
+
* Recommended for nested layout + child route compositions where two
|
|
239
|
+
* `<WeaverseHydrogenRoot>` instances need to render different Weaverse
|
|
240
|
+
* pages on the same URL. See issue #451.
|
|
241
|
+
*/
|
|
242
|
+
data?: WeaverseDataValue;
|
|
231
243
|
errorComponent?: React.FC<{
|
|
232
244
|
error: Error | unknown;
|
|
233
245
|
}>;
|
|
234
|
-
}) => react_jsx_runtime.JSX.Element>;
|
|
246
|
+
}) => react_jsx_runtime.JSX.Element | null>;
|
|
235
247
|
/**
|
|
236
248
|
* Options for the `withWeaverse` HOC.
|
|
237
249
|
*/
|
|
@@ -610,6 +622,13 @@ interface HydrogenPageData extends WeaverseProjectDataType {
|
|
|
610
622
|
id: string;
|
|
611
623
|
items: HydrogenComponentData[];
|
|
612
624
|
name: string;
|
|
625
|
+
/**
|
|
626
|
+
* Page-level SEO metadata published by Weaverse Builder. `null` when
|
|
627
|
+
* the page has no `PageSeo` row; absent on revision snapshots that
|
|
628
|
+
* predate the SEO feature. Themes should treat both as "no Weaverse
|
|
629
|
+
* override".
|
|
630
|
+
*/
|
|
631
|
+
seo?: PageSEOData | null;
|
|
613
632
|
[key: string]: any;
|
|
614
633
|
}
|
|
615
634
|
type WeaverseI18n = I18nBase & {
|
|
@@ -1061,6 +1080,41 @@ declare function useWeaverseDataContext(): WeaverseDataContext;
|
|
|
1061
1080
|
*/
|
|
1062
1081
|
declare function createWeaverseDataContext(matches: UIMatch<unknown, unknown>[]): WeaverseDataContext;
|
|
1063
1082
|
|
|
1083
|
+
/**
|
|
1084
|
+
* Convert a Weaverse page-level SEO payload into React Router
|
|
1085
|
+
* `MetaDescriptor[]`. Pure, synchronous, tree-shakeable — does not fetch.
|
|
1086
|
+
*
|
|
1087
|
+
* Behavior:
|
|
1088
|
+
* - `title` → top-level `{ title }` descriptor.
|
|
1089
|
+
* - `description` / `keywords` → `<meta name="...">`.
|
|
1090
|
+
* - `canonicalUrl` → `<link rel="canonical">`.
|
|
1091
|
+
* - `openGraph.*` → `<meta property="og:*">`. `og:type` defaults to
|
|
1092
|
+
* `'website'` when any other OG field is present.
|
|
1093
|
+
* - `twitter.*` → `<meta name="twitter:*">`. `twitter:card` defaults to
|
|
1094
|
+
* `'summary'` when any other Twitter field is present.
|
|
1095
|
+
* - `robots` is always emitted (defaults to `'index,follow'`) so themes
|
|
1096
|
+
* stacking multiple SEO sources have a deterministic last word on
|
|
1097
|
+
* indexing for Weaverse-managed pages.
|
|
1098
|
+
* - Empty strings / missing fields are filtered before return so empty
|
|
1099
|
+
* descriptors don't override earlier sources (e.g. Hydrogen
|
|
1100
|
+
* `getSeoMeta`).
|
|
1101
|
+
*/
|
|
1102
|
+
declare function formatMetaDescriptors(seo: PageSEOData | null | undefined): MetaDescriptor[];
|
|
1103
|
+
/**
|
|
1104
|
+
* Convenience accessor: pull `page.seo` out of a `WeaverseLoaderData`
|
|
1105
|
+
* (or `HydrogenPageData`) and emit `MetaDescriptor[]`. Null-safe.
|
|
1106
|
+
*
|
|
1107
|
+
* @example
|
|
1108
|
+
* ```ts
|
|
1109
|
+
* export const meta: MetaFunction<typeof loader> = ({ data }) => {
|
|
1110
|
+
* return getWeaverseSeoMeta(data?.weaverseData)
|
|
1111
|
+
* }
|
|
1112
|
+
* ```
|
|
1113
|
+
*/
|
|
1114
|
+
declare function getWeaverseSeoMeta(data: WeaverseLoaderData | HydrogenPageData | {
|
|
1115
|
+
page?: HydrogenPageData | null;
|
|
1116
|
+
} | null | undefined): MetaDescriptor[];
|
|
1117
|
+
|
|
1064
1118
|
/**
|
|
1065
1119
|
* Extract and parse query parameters from a request URL.
|
|
1066
1120
|
* Supports optional allowlist for security-sensitive applications.
|
|
@@ -1143,4 +1197,4 @@ declare const IMAGES_PLACEHOLDERS: {
|
|
|
1143
1197
|
product_18: string;
|
|
1144
1198
|
};
|
|
1145
1199
|
|
|
1146
|
-
export { type CacheResponseValidator, type ComponentDataValue, type ComponentLoaderArgs, type CreateHydrogenSchemaOptions, type CustomPageEntry, 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, ThemeTextProvider, type ThemeTextProviderProps, ThemeTextStore, type ThemeTextValue, type TranslateFunction, type TranslationChanges, type TranslationEntry, type TranslationItemEntry, type TranslationMap, type TranslationMapEntry, 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, type WithWeaverseOptions, createWeaverseDataContext, defaultComponents, generateDataFromSchema, getNestedKey, getPreviewData, getRequestQueries, getSelectedProductOptions, getWeaverseConfigs, hasError, hasWeaverseStudio, interpolate, isFetchProjectPayload, isProjectIdFunction, isThemeSettingsResponse, isValidHydrogenSchema, isWithCacheFetchResponse, registerComponent, useThemeSettings, useThemeText, useWeaverseDataContext, withWeaverse };
|
|
1200
|
+
export { type CacheResponseValidator, type ComponentDataValue, type ComponentLoaderArgs, type CreateHydrogenSchemaOptions, type CustomPageEntry, 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, ThemeTextProvider, type ThemeTextProviderProps, ThemeTextStore, type ThemeTextValue, type TranslateFunction, type TranslationChanges, type TranslationEntry, type TranslationItemEntry, type TranslationMap, type TranslationMapEntry, 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, type WithWeaverseOptions, createWeaverseDataContext, defaultComponents, formatMetaDescriptors, generateDataFromSchema, getNestedKey, getPreviewData, getRequestQueries, getSelectedProductOptions, getWeaverseConfigs, getWeaverseSeoMeta, hasError, hasWeaverseStudio, interpolate, isFetchProjectPayload, isProjectIdFunction, isThemeSettingsResponse, isValidHydrogenSchema, isWithCacheFetchResponse, registerComponent, useThemeSettings, useThemeText, useWeaverseDataContext, withWeaverse };
|
package/dist/index.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { SelectedOptionInput } from '@shopify/hydrogen/storefront-api-types';
|
|
2
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
|
-
import { PageType, InspectorGroup, SchemaType, ComponentPresets, SchemaValidationResult } from '@weaverse/schema';
|
|
4
|
+
import { PageType, InspectorGroup, SchemaType, PageSEOData, ComponentPresets, SchemaValidationResult } from '@weaverse/schema';
|
|
5
5
|
export * from '@weaverse/schema';
|
|
6
6
|
export { BasicInput, HeadingInput, InputType, InspectorGroup, PageType, SchemaValidationIssue, SchemaValidationResult } from '@weaverse/schema';
|
|
7
7
|
import { createWithCache, CachingStrategy, I18nBase, HydrogenContext, HydrogenEnv } from '@shopify/hydrogen';
|
|
@@ -9,7 +9,7 @@ export { CachingStrategy } from '@shopify/hydrogen';
|
|
|
9
9
|
import { LoaderFunctionArgs, AppLoadContext } from '@shopify/remix-oxygen';
|
|
10
10
|
import * as React$1 from 'react';
|
|
11
11
|
import { ReactNode, ComponentType, JSX, ForwardRefExoticComponent } from 'react';
|
|
12
|
-
import { NavigateFunction, UIMatch } from 'react-router';
|
|
12
|
+
import { NavigateFunction, UIMatch, MetaDescriptor } from 'react-router';
|
|
13
13
|
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
14
14
|
|
|
15
15
|
/**
|
|
@@ -131,6 +131,8 @@ declare function ThemeTextProvider({ staticContent, merchantOverrides, t: extern
|
|
|
131
131
|
*/
|
|
132
132
|
declare function useThemeText(): ThemeTextValue;
|
|
133
133
|
|
|
134
|
+
type WeaverseDataValue = WeaverseLoaderData | Promise<WeaverseLoaderData> | null;
|
|
135
|
+
|
|
134
136
|
declare class WeaverseHydrogenItem extends WeaverseItemStore {
|
|
135
137
|
weaverse: WeaverseHydrogen;
|
|
136
138
|
/**
|
|
@@ -226,12 +228,22 @@ declare class WeaverseHydrogen extends Weaverse {
|
|
|
226
228
|
* ```
|
|
227
229
|
*/
|
|
228
230
|
declare function registerComponent(element: HydrogenElement): void;
|
|
229
|
-
declare const WeaverseHydrogenRoot: React$1.MemoExoticComponent<({ components, errorComponent: ErrorComponent, }: {
|
|
231
|
+
declare const WeaverseHydrogenRoot: React$1.MemoExoticComponent<({ components, data: dataProp, errorComponent: ErrorComponent, }: {
|
|
230
232
|
components: HydrogenComponent[];
|
|
233
|
+
/**
|
|
234
|
+
* Optional explicit `weaverseData` payload. When provided, bypasses the
|
|
235
|
+
* automatic route-scoped resolution. Accepts a resolved value, a
|
|
236
|
+
* `Promise` (handled via `<Await>`), or `null` to suppress rendering.
|
|
237
|
+
*
|
|
238
|
+
* Recommended for nested layout + child route compositions where two
|
|
239
|
+
* `<WeaverseHydrogenRoot>` instances need to render different Weaverse
|
|
240
|
+
* pages on the same URL. See issue #451.
|
|
241
|
+
*/
|
|
242
|
+
data?: WeaverseDataValue;
|
|
231
243
|
errorComponent?: React.FC<{
|
|
232
244
|
error: Error | unknown;
|
|
233
245
|
}>;
|
|
234
|
-
}) => react_jsx_runtime.JSX.Element>;
|
|
246
|
+
}) => react_jsx_runtime.JSX.Element | null>;
|
|
235
247
|
/**
|
|
236
248
|
* Options for the `withWeaverse` HOC.
|
|
237
249
|
*/
|
|
@@ -610,6 +622,13 @@ interface HydrogenPageData extends WeaverseProjectDataType {
|
|
|
610
622
|
id: string;
|
|
611
623
|
items: HydrogenComponentData[];
|
|
612
624
|
name: string;
|
|
625
|
+
/**
|
|
626
|
+
* Page-level SEO metadata published by Weaverse Builder. `null` when
|
|
627
|
+
* the page has no `PageSeo` row; absent on revision snapshots that
|
|
628
|
+
* predate the SEO feature. Themes should treat both as "no Weaverse
|
|
629
|
+
* override".
|
|
630
|
+
*/
|
|
631
|
+
seo?: PageSEOData | null;
|
|
613
632
|
[key: string]: any;
|
|
614
633
|
}
|
|
615
634
|
type WeaverseI18n = I18nBase & {
|
|
@@ -1061,6 +1080,41 @@ declare function useWeaverseDataContext(): WeaverseDataContext;
|
|
|
1061
1080
|
*/
|
|
1062
1081
|
declare function createWeaverseDataContext(matches: UIMatch<unknown, unknown>[]): WeaverseDataContext;
|
|
1063
1082
|
|
|
1083
|
+
/**
|
|
1084
|
+
* Convert a Weaverse page-level SEO payload into React Router
|
|
1085
|
+
* `MetaDescriptor[]`. Pure, synchronous, tree-shakeable — does not fetch.
|
|
1086
|
+
*
|
|
1087
|
+
* Behavior:
|
|
1088
|
+
* - `title` → top-level `{ title }` descriptor.
|
|
1089
|
+
* - `description` / `keywords` → `<meta name="...">`.
|
|
1090
|
+
* - `canonicalUrl` → `<link rel="canonical">`.
|
|
1091
|
+
* - `openGraph.*` → `<meta property="og:*">`. `og:type` defaults to
|
|
1092
|
+
* `'website'` when any other OG field is present.
|
|
1093
|
+
* - `twitter.*` → `<meta name="twitter:*">`. `twitter:card` defaults to
|
|
1094
|
+
* `'summary'` when any other Twitter field is present.
|
|
1095
|
+
* - `robots` is always emitted (defaults to `'index,follow'`) so themes
|
|
1096
|
+
* stacking multiple SEO sources have a deterministic last word on
|
|
1097
|
+
* indexing for Weaverse-managed pages.
|
|
1098
|
+
* - Empty strings / missing fields are filtered before return so empty
|
|
1099
|
+
* descriptors don't override earlier sources (e.g. Hydrogen
|
|
1100
|
+
* `getSeoMeta`).
|
|
1101
|
+
*/
|
|
1102
|
+
declare function formatMetaDescriptors(seo: PageSEOData | null | undefined): MetaDescriptor[];
|
|
1103
|
+
/**
|
|
1104
|
+
* Convenience accessor: pull `page.seo` out of a `WeaverseLoaderData`
|
|
1105
|
+
* (or `HydrogenPageData`) and emit `MetaDescriptor[]`. Null-safe.
|
|
1106
|
+
*
|
|
1107
|
+
* @example
|
|
1108
|
+
* ```ts
|
|
1109
|
+
* export const meta: MetaFunction<typeof loader> = ({ data }) => {
|
|
1110
|
+
* return getWeaverseSeoMeta(data?.weaverseData)
|
|
1111
|
+
* }
|
|
1112
|
+
* ```
|
|
1113
|
+
*/
|
|
1114
|
+
declare function getWeaverseSeoMeta(data: WeaverseLoaderData | HydrogenPageData | {
|
|
1115
|
+
page?: HydrogenPageData | null;
|
|
1116
|
+
} | null | undefined): MetaDescriptor[];
|
|
1117
|
+
|
|
1064
1118
|
/**
|
|
1065
1119
|
* Extract and parse query parameters from a request URL.
|
|
1066
1120
|
* Supports optional allowlist for security-sensitive applications.
|
|
@@ -1143,4 +1197,4 @@ declare const IMAGES_PLACEHOLDERS: {
|
|
|
1143
1197
|
product_18: string;
|
|
1144
1198
|
};
|
|
1145
1199
|
|
|
1146
|
-
export { type CacheResponseValidator, type ComponentDataValue, type ComponentLoaderArgs, type CreateHydrogenSchemaOptions, type CustomPageEntry, 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, ThemeTextProvider, type ThemeTextProviderProps, ThemeTextStore, type ThemeTextValue, type TranslateFunction, type TranslationChanges, type TranslationEntry, type TranslationItemEntry, type TranslationMap, type TranslationMapEntry, 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, type WithWeaverseOptions, createWeaverseDataContext, defaultComponents, generateDataFromSchema, getNestedKey, getPreviewData, getRequestQueries, getSelectedProductOptions, getWeaverseConfigs, hasError, hasWeaverseStudio, interpolate, isFetchProjectPayload, isProjectIdFunction, isThemeSettingsResponse, isValidHydrogenSchema, isWithCacheFetchResponse, registerComponent, useThemeSettings, useThemeText, useWeaverseDataContext, withWeaverse };
|
|
1200
|
+
export { type CacheResponseValidator, type ComponentDataValue, type ComponentLoaderArgs, type CreateHydrogenSchemaOptions, type CustomPageEntry, 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, ThemeTextProvider, type ThemeTextProviderProps, ThemeTextStore, type ThemeTextValue, type TranslateFunction, type TranslationChanges, type TranslationEntry, type TranslationItemEntry, type TranslationMap, type TranslationMapEntry, 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, type WithWeaverseOptions, createWeaverseDataContext, defaultComponents, formatMetaDescriptors, generateDataFromSchema, getNestedKey, getPreviewData, getRequestQueries, getSelectedProductOptions, getWeaverseConfigs, getWeaverseSeoMeta, hasError, hasWeaverseStudio, interpolate, isFetchProjectPayload, isProjectIdFunction, isThemeSettingsResponse, isValidHydrogenSchema, isWithCacheFetchResponse, registerComponent, useThemeSettings, useThemeText, useWeaverseDataContext, withWeaverse };
|
package/dist/index.js
CHANGED
|
@@ -143,6 +143,73 @@ function useWeaverseDataContext() {
|
|
|
143
143
|
function createWeaverseDataContext(matches) {
|
|
144
144
|
return createFlatDataContext(matches);
|
|
145
145
|
}
|
|
146
|
+
|
|
147
|
+
// src/seo.ts
|
|
148
|
+
function formatMetaDescriptors(seo) {
|
|
149
|
+
if (!seo) {
|
|
150
|
+
return [{ name: "robots", content: "index,follow" }];
|
|
151
|
+
}
|
|
152
|
+
let descriptors = [];
|
|
153
|
+
if (seo.title) {
|
|
154
|
+
descriptors.push({ title: seo.title });
|
|
155
|
+
}
|
|
156
|
+
if (seo.description) {
|
|
157
|
+
descriptors.push({ name: "description", content: seo.description });
|
|
158
|
+
}
|
|
159
|
+
if (seo.keywords) {
|
|
160
|
+
descriptors.push({ name: "keywords", content: seo.keywords });
|
|
161
|
+
}
|
|
162
|
+
if (seo.canonicalUrl) {
|
|
163
|
+
descriptors.push({
|
|
164
|
+
tagName: "link",
|
|
165
|
+
rel: "canonical",
|
|
166
|
+
href: seo.canonicalUrl
|
|
167
|
+
});
|
|
168
|
+
}
|
|
169
|
+
let og = seo.openGraph;
|
|
170
|
+
if (og && (og.title || og.description || og.image || og.type)) {
|
|
171
|
+
if (og.title) {
|
|
172
|
+
descriptors.push({ property: "og:title", content: og.title });
|
|
173
|
+
}
|
|
174
|
+
if (og.description) {
|
|
175
|
+
descriptors.push({ property: "og:description", content: og.description });
|
|
176
|
+
}
|
|
177
|
+
if (og.image) {
|
|
178
|
+
descriptors.push({ property: "og:image", content: og.image });
|
|
179
|
+
}
|
|
180
|
+
descriptors.push({ property: "og:type", content: og.type || "website" });
|
|
181
|
+
}
|
|
182
|
+
let tw = seo.twitter;
|
|
183
|
+
if (tw && (tw.title || tw.description || tw.image || tw.cardType)) {
|
|
184
|
+
descriptors.push({
|
|
185
|
+
name: "twitter:card",
|
|
186
|
+
content: tw.cardType || "summary"
|
|
187
|
+
});
|
|
188
|
+
if (tw.title) {
|
|
189
|
+
descriptors.push({ name: "twitter:title", content: tw.title });
|
|
190
|
+
}
|
|
191
|
+
if (tw.description) {
|
|
192
|
+
descriptors.push({ name: "twitter:description", content: tw.description });
|
|
193
|
+
}
|
|
194
|
+
if (tw.image) {
|
|
195
|
+
descriptors.push({ name: "twitter:image", content: tw.image });
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
let index = seo.robots?.index !== false;
|
|
199
|
+
let follow = seo.robots?.follow !== false;
|
|
200
|
+
descriptors.push({
|
|
201
|
+
name: "robots",
|
|
202
|
+
content: `${index ? "index" : "noindex"},${follow ? "follow" : "nofollow"}`
|
|
203
|
+
});
|
|
204
|
+
return descriptors;
|
|
205
|
+
}
|
|
206
|
+
function getWeaverseSeoMeta(data) {
|
|
207
|
+
if (!data) {
|
|
208
|
+
return formatMetaDescriptors(null);
|
|
209
|
+
}
|
|
210
|
+
let page = "items" in data && "id" in data ? data : data.page ?? null;
|
|
211
|
+
return formatMetaDescriptors(page?.seo ?? null);
|
|
212
|
+
}
|
|
146
213
|
function isProjectIdFunction(projectId) {
|
|
147
214
|
return typeof projectId === "function";
|
|
148
215
|
}
|
|
@@ -417,6 +484,29 @@ var ThemeTextStore = class {
|
|
|
417
484
|
}
|
|
418
485
|
};
|
|
419
486
|
};
|
|
487
|
+
|
|
488
|
+
// src/utils/pick-weaverse-data.ts
|
|
489
|
+
function pickWeaverseData(dataProp, ownLoaderData, matches) {
|
|
490
|
+
if (dataProp !== void 0) {
|
|
491
|
+
return dataProp;
|
|
492
|
+
}
|
|
493
|
+
if (hasWeaverseData(ownLoaderData)) {
|
|
494
|
+
return ownLoaderData.weaverseData;
|
|
495
|
+
}
|
|
496
|
+
for (let i = matches.length - 1; i >= 0; i--) {
|
|
497
|
+
const loaderData = matches[i].loaderData;
|
|
498
|
+
if (hasWeaverseData(loaderData)) {
|
|
499
|
+
return loaderData.weaverseData;
|
|
500
|
+
}
|
|
501
|
+
}
|
|
502
|
+
return null;
|
|
503
|
+
}
|
|
504
|
+
function hasWeaverseData(value) {
|
|
505
|
+
if (typeof value !== "object" || value === null || !("weaverseData" in value)) {
|
|
506
|
+
return false;
|
|
507
|
+
}
|
|
508
|
+
return value.weaverseData !== void 0;
|
|
509
|
+
}
|
|
420
510
|
var ThemeSettingsStore = class {
|
|
421
511
|
settings = {};
|
|
422
512
|
schema;
|
|
@@ -709,7 +799,7 @@ var WeaverseHydrogen = class extends react.Weaverse {
|
|
|
709
799
|
const entries = [];
|
|
710
800
|
const languageId = this.translationLanguageId;
|
|
711
801
|
if (!(this.translationLocale && languageId)) {
|
|
712
|
-
return
|
|
802
|
+
return;
|
|
713
803
|
}
|
|
714
804
|
for (const [itemId, fields] of Object.entries(this.translationMap)) {
|
|
715
805
|
for (const [key, entry] of Object.entries(fields)) {
|
|
@@ -722,7 +812,7 @@ var WeaverseHydrogen = class extends react.Weaverse {
|
|
|
722
812
|
}
|
|
723
813
|
}
|
|
724
814
|
if (entries.length === 0) {
|
|
725
|
-
return
|
|
815
|
+
return;
|
|
726
816
|
}
|
|
727
817
|
return { languageId, entries };
|
|
728
818
|
};
|
|
@@ -786,20 +876,19 @@ function registerComponent(element) {
|
|
|
786
876
|
var WeaverseHydrogenRoot = react$1.memo(
|
|
787
877
|
({
|
|
788
878
|
components,
|
|
879
|
+
data: dataProp,
|
|
789
880
|
errorComponent: ErrorComponent = ({ error }) => /* @__PURE__ */ jsxRuntime.jsx("div", { children: error instanceof Error ? error.message : "An unexpected error occurred" })
|
|
790
881
|
}) => {
|
|
791
882
|
const matches = reactRouter.useMatches();
|
|
792
883
|
const enhancedDataContext = createWeaverseDataContext(matches);
|
|
793
|
-
const
|
|
794
|
-
|
|
795
|
-
|
|
796
|
-
|
|
797
|
-
|
|
798
|
-
|
|
799
|
-
}
|
|
800
|
-
}
|
|
884
|
+
const ownLoaderData = reactRouter.useLoaderData();
|
|
885
|
+
const weaverseData = react$1.useMemo(
|
|
886
|
+
() => pickWeaverseData(dataProp, ownLoaderData, matches),
|
|
887
|
+
[dataProp, ownLoaderData, matches]
|
|
888
|
+
);
|
|
889
|
+
if (dataProp === null) {
|
|
801
890
|
return null;
|
|
802
|
-
}
|
|
891
|
+
}
|
|
803
892
|
if (weaverseData) {
|
|
804
893
|
if (weaverseData instanceof Promise) {
|
|
805
894
|
return /* @__PURE__ */ jsxRuntime.jsx(reactErrorBoundary.ErrorBoundary, { fallbackRender: ErrorComponent, children: /* @__PURE__ */ jsxRuntime.jsx(react$1.Suspense, { children: /* @__PURE__ */ jsxRuntime.jsx(reactRouter.Await, { resolve: weaverseData, children: (resolvedData) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -1355,7 +1444,7 @@ var WeaverseClient = class {
|
|
|
1355
1444
|
const { projectId, weaverseHost } = this.configs;
|
|
1356
1445
|
const i18n = this.storefront.i18n;
|
|
1357
1446
|
if (!(projectId && weaverseHost)) {
|
|
1358
|
-
return
|
|
1447
|
+
return;
|
|
1359
1448
|
}
|
|
1360
1449
|
const language = (i18n?.language || "en").toLowerCase();
|
|
1361
1450
|
const country = (i18n?.country || "us").toLowerCase();
|
|
@@ -1374,13 +1463,13 @@ var WeaverseClient = class {
|
|
|
1374
1463
|
if (typeof overrides === "object" && overrides !== null) {
|
|
1375
1464
|
return overrides;
|
|
1376
1465
|
}
|
|
1377
|
-
return
|
|
1466
|
+
return;
|
|
1378
1467
|
} catch (error) {
|
|
1379
1468
|
console.warn(
|
|
1380
1469
|
"Unable to load merchant overrides, using theme defaults:",
|
|
1381
1470
|
this.extractErrorMessage(error)
|
|
1382
1471
|
);
|
|
1383
|
-
return
|
|
1472
|
+
return;
|
|
1384
1473
|
}
|
|
1385
1474
|
};
|
|
1386
1475
|
/**
|
|
@@ -1559,7 +1648,9 @@ var WeaverseClient = class {
|
|
|
1559
1648
|
};
|
|
1560
1649
|
}
|
|
1561
1650
|
if (!page) {
|
|
1562
|
-
page = this.generateFallbackPage(
|
|
1651
|
+
page = this.generateFallbackPage(
|
|
1652
|
+
'<div style="text-align: center;">Please add new section to start.</div>'
|
|
1653
|
+
);
|
|
1563
1654
|
}
|
|
1564
1655
|
if (page?.items?.length === 0) {
|
|
1565
1656
|
page.items.push({
|
|
@@ -1711,12 +1802,14 @@ exports.WeaverseHydrogenItem = WeaverseHydrogenItem;
|
|
|
1711
1802
|
exports.WeaverseHydrogenRoot = WeaverseHydrogenRoot;
|
|
1712
1803
|
exports.createWeaverseDataContext = createWeaverseDataContext;
|
|
1713
1804
|
exports.defaultComponents = defaultComponents;
|
|
1805
|
+
exports.formatMetaDescriptors = formatMetaDescriptors;
|
|
1714
1806
|
exports.generateDataFromSchema = generateDataFromSchema;
|
|
1715
1807
|
exports.getNestedKey = getNestedKey;
|
|
1716
1808
|
exports.getPreviewData = getPreviewData;
|
|
1717
1809
|
exports.getRequestQueries = getRequestQueries;
|
|
1718
1810
|
exports.getSelectedProductOptions = getSelectedProductOptions;
|
|
1719
1811
|
exports.getWeaverseConfigs = getWeaverseConfigs;
|
|
1812
|
+
exports.getWeaverseSeoMeta = getWeaverseSeoMeta;
|
|
1720
1813
|
exports.hasError = hasError;
|
|
1721
1814
|
exports.hasWeaverseStudio = hasWeaverseStudio;
|
|
1722
1815
|
exports.interpolate = interpolate;
|