@weaverse/hydrogen 5.25.0 → 6.0.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.js +23 -2444
- package/dist/index.mjs +4 -2407
- package/dist/internal.js +64 -0
- package/dist/internal.js.map +1 -0
- package/dist/internal.mjs +16 -0
- package/dist/internal.mjs.map +1 -0
- package/dist/next-server.js +14 -0
- package/dist/next-server.mjs +2 -0
- package/dist/next.js +119 -0
- package/dist/next.mjs +5 -0
- package/dist/react-router.js +68 -0
- package/dist/react-router.mjs +5 -0
- package/dist/react.js +26 -0
- package/dist/react.mjs +2 -0
- package/dist/translation-store-BpPWqZ0B.js +548 -0
- package/dist/translation-store-BpPWqZ0B.js.map +1 -0
- package/dist/translation-store-C42QdI0e.mjs +441 -0
- package/dist/translation-store-C42QdI0e.mjs.map +1 -0
- package/dist/types/WeaverseHydrogenRoot.d.ts +7 -7
- package/dist/types/WeaverseHydrogenRoot.d.ts.map +1 -1
- package/dist/types/components/index.d.ts +2 -2
- package/dist/types/components/main.d.ts +2 -2
- package/dist/types/hooks/translation-context.d.ts +2 -8
- package/dist/types/hooks/translation-context.d.ts.map +1 -1
- package/dist/types/index.d.ts +12 -33
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/internal.d.ts +24 -0
- package/dist/types/internal.d.ts.map +1 -0
- package/dist/types/next-server.d.ts +8 -0
- package/dist/types/next-server.d.ts.map +1 -0
- package/dist/types/next.d.ts +12 -0
- package/dist/types/next.d.ts.map +1 -0
- package/dist/types/react-router.d.ts +18 -0
- package/dist/types/react-router.d.ts.map +1 -0
- package/dist/types/react.d.ts +11 -0
- package/dist/types/react.d.ts.map +1 -0
- package/dist/types/seo.d.ts +4 -4
- package/dist/types/seo.d.ts.map +1 -1
- package/dist/types/types.d.ts +88 -68
- package/dist/types/types.d.ts.map +1 -1
- package/dist/types/utils/index.d.ts +4 -5
- package/dist/types/utils/index.d.ts.map +1 -1
- package/dist/types/utils/nested-key.d.ts +9 -0
- package/dist/types/utils/nested-key.d.ts.map +1 -0
- package/dist/types/utils/normalize-page-url.d.ts +1 -1
- package/dist/types/utils/product-options.d.ts +18 -0
- package/dist/types/utils/product-options.d.ts.map +1 -0
- package/dist/types/utils/use-studio.d.ts +1 -1
- package/dist/types/utils/use-studio.d.ts.map +1 -1
- package/dist/types/utils/use-theme-settings-store.d.ts +8 -8
- package/dist/types/utils/use-theme-settings-store.d.ts.map +1 -1
- package/dist/types/weaverse-client.d.ts +14 -16
- package/dist/types/weaverse-client.d.ts.map +1 -1
- package/dist/weaverse-client-Clu3u7md.mjs +1966 -0
- package/dist/weaverse-client-Clu3u7md.mjs.map +1 -0
- package/dist/weaverse-client-yC4TYuVV.js +2073 -0
- package/dist/weaverse-client-yC4TYuVV.js.map +1 -0
- package/package.json +44 -6
- package/readme.md +44 -24
- package/src/WeaverseHydrogenRoot.tsx +18 -15
- package/src/components/index.ts +2 -2
- package/src/components/main.tsx +2 -2
- package/src/hooks/translation-context.tsx +3 -28
- package/src/index.ts +42 -81
- package/src/internal.ts +64 -0
- package/src/next-server.ts +13 -0
- package/src/next.ts +35 -0
- package/src/react-router.ts +52 -0
- package/src/react.ts +16 -0
- package/src/seo.ts +5 -5
- package/src/types.ts +104 -74
- package/src/utils/index.ts +15 -14
- package/src/utils/nested-key.ts +28 -0
- package/src/utils/normalize-page-url.ts +1 -1
- package/src/utils/product-options.ts +28 -0
- package/src/utils/use-studio.ts +1 -1
- package/src/utils/use-theme-settings-store.ts +7 -7
- package/src/weaverse-client.ts +88 -96
- package/dist/index.js.map +0 -1
- package/dist/index.mjs.map +0 -1
|
@@ -28,19 +28,19 @@ import {
|
|
|
28
28
|
} from './hooks/translation-context'
|
|
29
29
|
import { createWeaverseDataContext } from './hooks/use-weaverse-data-context'
|
|
30
30
|
import type {
|
|
31
|
-
HydrogenComponentData,
|
|
32
31
|
HydrogenElement,
|
|
33
|
-
HydrogenPageData,
|
|
34
|
-
HydrogenThemeSettings,
|
|
35
32
|
TranslationChanges,
|
|
36
33
|
TranslationEntry,
|
|
37
34
|
TranslationItemEntry,
|
|
38
35
|
TranslationMap,
|
|
36
|
+
WeaverseComponentData,
|
|
39
37
|
WeaverseInternal,
|
|
40
38
|
WeaverseLoaderRequestInfo,
|
|
41
|
-
|
|
39
|
+
WeaversePageData,
|
|
40
|
+
WeaverseThemeSettings,
|
|
41
|
+
} from './internal'
|
|
42
42
|
import type {
|
|
43
|
-
|
|
43
|
+
WeaverseComponent,
|
|
44
44
|
WeaverseHydrogenParams,
|
|
45
45
|
WeaverseLoaderData,
|
|
46
46
|
} from './types'
|
|
@@ -91,7 +91,7 @@ export class WeaverseHydrogenItem extends WeaverseItemStore {
|
|
|
91
91
|
private _snapshotTranslationRef: TranslationItemEntry | null = null
|
|
92
92
|
|
|
93
93
|
/** Creates an item store from serialized component data and its owner. */
|
|
94
|
-
constructor(initialData:
|
|
94
|
+
constructor(initialData: WeaverseComponentData, weaverse: WeaverseHydrogen) {
|
|
95
95
|
super(initialData, weaverse)
|
|
96
96
|
const { data, ...rest } = initialData
|
|
97
97
|
if (!this.Element?.schema) {
|
|
@@ -231,7 +231,7 @@ export class WeaverseHydrogen extends Weaverse {
|
|
|
231
231
|
/** Component item store constructor used by the core runtime. */
|
|
232
232
|
declare ItemConstructor: typeof WeaverseHydrogenItem
|
|
233
233
|
/** Current page content owned by the runtime. */
|
|
234
|
-
declare data:
|
|
234
|
+
declare data: WeaversePageData
|
|
235
235
|
/** Component item stores indexed by instance ID. */
|
|
236
236
|
declare static itemInstances: Map<string, WeaverseHydrogenItem>
|
|
237
237
|
/** Registered component definitions indexed by component type. */
|
|
@@ -359,7 +359,7 @@ export class WeaverseHydrogen extends Weaverse {
|
|
|
359
359
|
/**
|
|
360
360
|
* Override setProjectData to re-extract translation sidecar from new page data.
|
|
361
361
|
*/
|
|
362
|
-
setProjectData = (data:
|
|
362
|
+
setProjectData = (data: WeaversePageData) => {
|
|
363
363
|
this.data = data
|
|
364
364
|
this.extractTranslationSidecar()
|
|
365
365
|
this.initProject()
|
|
@@ -371,8 +371,11 @@ function createWeaverseInstance(
|
|
|
371
371
|
): WeaverseHydrogen {
|
|
372
372
|
const normalizedParams = normalizeRequestInfo(params)
|
|
373
373
|
if (isBrowser) {
|
|
374
|
-
|
|
375
|
-
|
|
374
|
+
const runtimeWindow = window as unknown as {
|
|
375
|
+
__weaverses?: Record<string, WeaverseHydrogen>
|
|
376
|
+
}
|
|
377
|
+
runtimeWindow.__weaverses = runtimeWindow.__weaverses || {}
|
|
378
|
+
const existing = runtimeWindow.__weaverses[normalizedParams.pageId]
|
|
376
379
|
// Reuse the instance only while the browser stays on the same URL —
|
|
377
380
|
// navigation to a different pathname/search builds a fresh instance.
|
|
378
381
|
const isReused =
|
|
@@ -382,7 +385,7 @@ function createWeaverseInstance(
|
|
|
382
385
|
const weaverse = isReused
|
|
383
386
|
? existing
|
|
384
387
|
: new WeaverseHydrogen(normalizedParams)
|
|
385
|
-
|
|
388
|
+
runtimeWindow.__weaverses[normalizedParams.pageId] = weaverse
|
|
386
389
|
if (weaverse.isDesignMode) {
|
|
387
390
|
weaverse.requestInfo = normalizedParams.requestInfo
|
|
388
391
|
if (hasWeaverseStudio(window)) {
|
|
@@ -414,11 +417,11 @@ const StudioConnect = memo(() => {
|
|
|
414
417
|
* allocates and loops on every render — theme component arrays are
|
|
415
418
|
* module-level constants, so register each list identity once.
|
|
416
419
|
*/
|
|
417
|
-
const registeredComponentLists = new WeakSet<
|
|
420
|
+
const registeredComponentLists = new WeakSet<WeaverseComponent[]>()
|
|
418
421
|
|
|
419
422
|
function RenderRoot(props: {
|
|
420
423
|
data: WeaverseLoaderData
|
|
421
|
-
components:
|
|
424
|
+
components: WeaverseComponent[]
|
|
422
425
|
dataContext?: Record<string, any>
|
|
423
426
|
}) {
|
|
424
427
|
const { data, components, dataContext } = props
|
|
@@ -488,7 +491,7 @@ export interface WeaverseHydrogenRootErrorProps {
|
|
|
488
491
|
/** Props accepted by {@link WeaverseHydrogenRoot}. */
|
|
489
492
|
export interface WeaverseHydrogenRootProps {
|
|
490
493
|
/** Theme components available to the page renderer. */
|
|
491
|
-
components:
|
|
494
|
+
components: WeaverseComponent[]
|
|
492
495
|
/**
|
|
493
496
|
* Optional explicit `weaverseData` payload. When provided, bypasses the
|
|
494
497
|
* automatic route-scoped resolution. Accepts a resolved value, a
|
|
@@ -686,7 +689,7 @@ function useTranslationData(): {
|
|
|
686
689
|
* }
|
|
687
690
|
* ```
|
|
688
691
|
*/
|
|
689
|
-
export function useThemeSettings<T =
|
|
692
|
+
export function useThemeSettings<T = WeaverseThemeSettings>() {
|
|
690
693
|
const themeSettingsStore = useThemeSettingsStore()
|
|
691
694
|
const settings = useSafeExternalStore(
|
|
692
695
|
themeSettingsStore.subscribe,
|
package/src/components/index.ts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { WeaverseComponent } from '../types'
|
|
2
2
|
import MainComponent, { schema as mainSchema } from './main'
|
|
3
3
|
|
|
4
4
|
/** Built-in components required to render the root of every Weaverse page. */
|
|
5
|
-
export let defaultComponents:
|
|
5
|
+
export let defaultComponents: WeaverseComponent[] = [
|
|
6
6
|
{
|
|
7
7
|
default: MainComponent,
|
|
8
8
|
schema: mainSchema,
|
package/src/components/main.tsx
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import { createSchema, type SchemaType } from '@weaverse/schema'
|
|
2
2
|
import type { HTMLAttributes } from 'react'
|
|
3
|
-
import type {
|
|
3
|
+
import type { WeaverseComponentProps } from '../types'
|
|
4
4
|
|
|
5
5
|
/*
|
|
6
6
|
Main is the default Weaverse component that is used to render the main content.
|
|
7
7
|
This component wraps all the sections/components inside a Weaverse page.
|
|
8
8
|
*/
|
|
9
|
-
function Main(props:
|
|
9
|
+
function Main(props: WeaverseComponentProps & HTMLAttributes<HTMLDivElement>) {
|
|
10
10
|
let { children, dangerouslySetInnerHTML, ...rest } = props
|
|
11
11
|
|
|
12
12
|
return (
|
|
@@ -1,35 +1,10 @@
|
|
|
1
1
|
import { useSafeExternalStore } from '@weaverse/react'
|
|
2
2
|
import { createContext, type ReactNode, useContext, useMemo } from 'react'
|
|
3
|
-
import
|
|
4
|
-
|
|
5
|
-
/**
|
|
6
|
-
* Traverse a nested object by dot-path.
|
|
7
|
-
*
|
|
8
|
-
* @example
|
|
9
|
-
* getNestedKey({ cart: { title: 'Cart' } }, 'cart.title') // => 'Cart'
|
|
10
|
-
* getNestedKey({}, 'cart.title', 'fallback') // => 'fallback'
|
|
11
|
-
*/
|
|
12
|
-
export function getNestedKey(
|
|
13
|
-
obj: Record<string, unknown>,
|
|
14
|
-
path: string,
|
|
15
|
-
fallback?: string
|
|
16
|
-
): string | undefined {
|
|
17
|
-
const keys = path.split('.')
|
|
18
|
-
let current: unknown = obj
|
|
3
|
+
import { getNestedKey } from '../utils/nested-key'
|
|
19
4
|
|
|
20
|
-
|
|
21
|
-
if (current == null || typeof current !== 'object') {
|
|
22
|
-
return fallback
|
|
23
|
-
}
|
|
24
|
-
current = (current as Record<string, unknown>)[key]
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
if (typeof current === 'string') {
|
|
28
|
-
return current
|
|
29
|
-
}
|
|
5
|
+
export { getNestedKey }
|
|
30
6
|
|
|
31
|
-
|
|
32
|
-
}
|
|
7
|
+
import type { TranslationStore } from '../utils/translation-store'
|
|
33
8
|
|
|
34
9
|
/**
|
|
35
10
|
* Replace `{{variable}}` patterns in a string with provided values.
|
package/src/index.ts
CHANGED
|
@@ -1,88 +1,49 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
3
|
-
*
|
|
2
|
+
* Framework-independent core of the Weaverse SDK for Hydrogen storefronts:
|
|
3
|
+
* component and theme schemas, data helpers, translations and shared types.
|
|
4
4
|
*
|
|
5
|
-
*
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
import { getSelectedProductOptions as hydrogen_getSelectedProductOptions } from '@shopify/hydrogen'
|
|
9
|
-
import type { SelectedOptionInput } from '@shopify/hydrogen/storefront-api-types'
|
|
10
|
-
import {
|
|
11
|
-
isBrowser,
|
|
12
|
-
isIframe,
|
|
13
|
-
useChildInstances,
|
|
14
|
-
useItemInstance,
|
|
15
|
-
useParentInstance,
|
|
16
|
-
useWeaverse,
|
|
17
|
-
} from '@weaverse/react'
|
|
18
|
-
|
|
19
|
-
/**
|
|
20
|
-
* Filter out Weaverse-specific query parameters from product options.
|
|
21
|
-
* Removes `isDesignMode` and any parameters starting with `weaverse` prefix.
|
|
22
|
-
*
|
|
23
|
-
* @param request - The incoming HTTP request
|
|
24
|
-
* @returns Filtered product options for Shopify Hydrogen
|
|
5
|
+
* Themes import from their framework's entry, such as
|
|
6
|
+
* `@weaverse/hydrogen/react-router`, which re-exports this core.
|
|
25
7
|
*
|
|
26
|
-
* @
|
|
27
|
-
* ```typescript
|
|
28
|
-
* export async function loader({ request }: LoaderFunctionArgs) {
|
|
29
|
-
* const selectedOptions = getSelectedProductOptions(request)
|
|
30
|
-
* // Use selectedOptions for product queries without Weaverse params
|
|
31
|
-
* }
|
|
32
|
-
* ```
|
|
8
|
+
* @packageDocumentation
|
|
33
9
|
*/
|
|
34
|
-
export function getSelectedProductOptions(
|
|
35
|
-
request: Request
|
|
36
|
-
): SelectedOptionInput[] {
|
|
37
|
-
let options = hydrogen_getSelectedProductOptions(request)
|
|
38
|
-
return options.filter(
|
|
39
|
-
({ name }) => name !== 'isDesignMode' && !name.startsWith('weaverse')
|
|
40
|
-
)
|
|
41
|
-
}
|
|
42
10
|
|
|
43
|
-
|
|
44
|
-
export * from '@weaverse/schema'
|
|
45
|
-
export * from './components'
|
|
46
|
-
export {
|
|
47
|
-
getNestedKey,
|
|
48
|
-
interpolate,
|
|
49
|
-
// Deprecated aliases — kept for backward compatibility.
|
|
50
|
-
ThemeTextProvider,
|
|
51
|
-
type ThemeTextProviderProps,
|
|
52
|
-
type ThemeTextValue,
|
|
53
|
-
type TranslateFunction,
|
|
54
|
-
// Canonical translation API.
|
|
55
|
-
TranslationProvider,
|
|
56
|
-
type TranslationProviderProps,
|
|
57
|
-
type TranslationValue,
|
|
58
|
-
useThemeText,
|
|
59
|
-
useTranslation,
|
|
60
|
-
} from './hooks/translation-context'
|
|
61
|
-
// Export Hydrogen-specific hooks
|
|
11
|
+
export { isBrowser, isIframe } from '@weaverse/react'
|
|
62
12
|
export {
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
type
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
export
|
|
71
|
-
export * from './utils'
|
|
72
|
-
export type { WeaverseDataValue } from './utils/pick-weaverse-data'
|
|
73
|
-
export { ThemeTextStore, TranslationStore } from './utils/translation-store'
|
|
74
|
-
export type {
|
|
75
|
-
ThemeSettingsStore,
|
|
76
|
-
WeaverseThemeData,
|
|
77
|
-
} from './utils/use-theme-settings-store'
|
|
78
|
-
export * from './WeaverseHydrogenRoot'
|
|
79
|
-
export * from './weaverse-client'
|
|
80
|
-
// Re-export utilities from @weaverse/react
|
|
13
|
+
type BasicInput,
|
|
14
|
+
createSchema,
|
|
15
|
+
IMAGES_PLACEHOLDERS,
|
|
16
|
+
type InspectorGroup,
|
|
17
|
+
type PageType,
|
|
18
|
+
type SchemaType,
|
|
19
|
+
} from '@weaverse/schema'
|
|
20
|
+
export type { TranslateFunction } from './hooks/translation-context'
|
|
81
21
|
export {
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
22
|
+
type ComponentDataValue,
|
|
23
|
+
type PublicEnv,
|
|
24
|
+
type WeaverseBlog,
|
|
25
|
+
type WeaverseChildComponentReference,
|
|
26
|
+
type WeaverseCollection,
|
|
27
|
+
type WeaverseComponentData,
|
|
28
|
+
type WeaverseComponentSchema,
|
|
29
|
+
WeaverseError,
|
|
30
|
+
type WeaverseI18n,
|
|
31
|
+
type WeaverseImage,
|
|
32
|
+
WeaverseLoadError,
|
|
33
|
+
type WeaverseLoaderData,
|
|
34
|
+
type WeaverseLoaderRequestInfo,
|
|
35
|
+
type WeaverseLoadFailureKind,
|
|
36
|
+
type WeaverseMetaObject,
|
|
37
|
+
type WeaversePageAssignment,
|
|
38
|
+
type WeaversePageData,
|
|
39
|
+
type WeaverseProduct,
|
|
40
|
+
type WeaverseProjectConfigs,
|
|
41
|
+
type WeaverseProjectType,
|
|
42
|
+
type WeaverseThemeSchema,
|
|
43
|
+
type WeaverseThemeSettings,
|
|
44
|
+
type WeaverseThemeSettingsResponse,
|
|
45
|
+
type WeaverseVideo,
|
|
46
|
+
} from './types'
|
|
47
|
+
export { generateDataFromSchema } from './utils'
|
|
48
|
+
export { getNestedKey } from './utils/nested-key'
|
|
49
|
+
export { TranslationStore } from './utils/translation-store'
|
package/src/internal.ts
ADDED
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Internal surface of `@weaverse/hydrogen` for Weaverse's own tools (Builder,
|
|
3
|
+
* CLI). Undocumented and not covered by semver: themes import from
|
|
4
|
+
* `@weaverse/hydrogen/react-router` instead.
|
|
5
|
+
*
|
|
6
|
+
* @packageDocumentation
|
|
7
|
+
*/
|
|
8
|
+
|
|
9
|
+
import {
|
|
10
|
+
isBrowser,
|
|
11
|
+
isIframe,
|
|
12
|
+
useChildInstances,
|
|
13
|
+
useItemInstance,
|
|
14
|
+
useParentInstance,
|
|
15
|
+
useWeaverse,
|
|
16
|
+
} from '@weaverse/react'
|
|
17
|
+
|
|
18
|
+
// Re-export all types and utilities from schema package
|
|
19
|
+
export * from '@weaverse/schema'
|
|
20
|
+
export * from './components'
|
|
21
|
+
export {
|
|
22
|
+
interpolate,
|
|
23
|
+
// Deprecated aliases — kept for backward compatibility.
|
|
24
|
+
ThemeTextProvider,
|
|
25
|
+
type ThemeTextProviderProps,
|
|
26
|
+
type ThemeTextValue,
|
|
27
|
+
type TranslateFunction,
|
|
28
|
+
// Canonical translation API.
|
|
29
|
+
TranslationProvider,
|
|
30
|
+
type TranslationProviderProps,
|
|
31
|
+
type TranslationValue,
|
|
32
|
+
useThemeText,
|
|
33
|
+
useTranslation,
|
|
34
|
+
} from './hooks/translation-context'
|
|
35
|
+
// Export Hydrogen-specific hooks
|
|
36
|
+
export {
|
|
37
|
+
createWeaverseDataContext,
|
|
38
|
+
type RouteKeyedDataContext,
|
|
39
|
+
useWeaverseDataContext,
|
|
40
|
+
type WeaverseDataContext,
|
|
41
|
+
} from './hooks/use-weaverse-data-context'
|
|
42
|
+
// Export hydrogen-specific modules
|
|
43
|
+
export * from './seo'
|
|
44
|
+
export * from './types'
|
|
45
|
+
export * from './utils'
|
|
46
|
+
export { getNestedKey } from './utils/nested-key'
|
|
47
|
+
export type { WeaverseDataValue } from './utils/pick-weaverse-data'
|
|
48
|
+
export { getSelectedProductOptions } from './utils/product-options'
|
|
49
|
+
export { ThemeTextStore, TranslationStore } from './utils/translation-store'
|
|
50
|
+
export type {
|
|
51
|
+
ThemeSettingsStore,
|
|
52
|
+
WeaverseThemeData,
|
|
53
|
+
} from './utils/use-theme-settings-store'
|
|
54
|
+
export * from './WeaverseHydrogenRoot'
|
|
55
|
+
export * from './weaverse-client'
|
|
56
|
+
// Re-export utilities from @weaverse/react
|
|
57
|
+
export {
|
|
58
|
+
isBrowser,
|
|
59
|
+
isIframe,
|
|
60
|
+
useChildInstances,
|
|
61
|
+
useItemInstance,
|
|
62
|
+
useParentInstance,
|
|
63
|
+
useWeaverse,
|
|
64
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Server-only part of the Next.js adapter: the server client that loads pages
|
|
3
|
+
* and theme settings, and the revalidation route handler.
|
|
4
|
+
*
|
|
5
|
+
* @packageDocumentation
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
export {
|
|
9
|
+
createWeaverseNextRevalidateHandler,
|
|
10
|
+
createWeaverseNextServerClient,
|
|
11
|
+
type WeaverseNextServerClient,
|
|
12
|
+
type WeaverseNextThemeSettingsResponse,
|
|
13
|
+
} from '@weaverse/next/server'
|
package/src/next.ts
ADDED
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Next.js App Router adapter of the Weaverse SDK: the client factory, root and
|
|
3
|
+
* page providers, renderer and Studio connection. Re-exports the core and the
|
|
4
|
+
* React bindings, so a Next.js storefront imports client and shared code from
|
|
5
|
+
* this entry and server-only code from `@weaverse/hydrogen/next/server`.
|
|
6
|
+
*
|
|
7
|
+
* @packageDocumentation
|
|
8
|
+
*/
|
|
9
|
+
|
|
10
|
+
// Hooks and stores come from the Next adapter itself so they share its React
|
|
11
|
+
// contexts; these named exports take precedence over the star re-exports.
|
|
12
|
+
export {
|
|
13
|
+
buildWeaverseNextRequestInfo,
|
|
14
|
+
createWeaverseNextClient,
|
|
15
|
+
TranslationProvider,
|
|
16
|
+
TranslationStore,
|
|
17
|
+
useChildInstances,
|
|
18
|
+
useItemInstance,
|
|
19
|
+
useParentInstance,
|
|
20
|
+
useThemeSettings,
|
|
21
|
+
useTranslation,
|
|
22
|
+
useWeaverse,
|
|
23
|
+
type WeaverseNextComponent,
|
|
24
|
+
type WeaverseNextI18n,
|
|
25
|
+
type WeaverseNextLoaderData,
|
|
26
|
+
WeaverseNextProvider,
|
|
27
|
+
WeaverseNextRenderer,
|
|
28
|
+
type WeaverseNextRequestContext,
|
|
29
|
+
WeaverseNextRootProvider,
|
|
30
|
+
WeaverseNextStudioConnect,
|
|
31
|
+
type WeaverseNextThemeSchema,
|
|
32
|
+
type WeaverseNextThemeSchemaGroup,
|
|
33
|
+
} from '@weaverse/next'
|
|
34
|
+
export * from './index'
|
|
35
|
+
export * from './react'
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* React Router adapter of the Weaverse SDK for Hydrogen 2026.10+ storefronts:
|
|
3
|
+
* the request-scoped client, root rendering, Studio connection, SEO and
|
|
4
|
+
* commerce helpers. Re-exports the core and the React bindings, so a theme
|
|
5
|
+
* imports everything from this entry.
|
|
6
|
+
*
|
|
7
|
+
* @packageDocumentation
|
|
8
|
+
*/
|
|
9
|
+
|
|
10
|
+
export {
|
|
11
|
+
TranslationProvider,
|
|
12
|
+
type TranslationProviderProps,
|
|
13
|
+
type TranslationValue,
|
|
14
|
+
useTranslation,
|
|
15
|
+
} from './hooks/translation-context'
|
|
16
|
+
export * from './index'
|
|
17
|
+
export * from './react'
|
|
18
|
+
export {
|
|
19
|
+
getWeaverseSeoMeta,
|
|
20
|
+
type WeaverseSeoInput,
|
|
21
|
+
type WeaverseSeoPageContainer,
|
|
22
|
+
} from './seo'
|
|
23
|
+
export type {
|
|
24
|
+
CustomPageEntry,
|
|
25
|
+
FetchProjectRequestBody,
|
|
26
|
+
LoadPageParams,
|
|
27
|
+
ProjectIdValue,
|
|
28
|
+
RouteLoaderArgs,
|
|
29
|
+
WeaverseClientArgs,
|
|
30
|
+
WeaverseComponent,
|
|
31
|
+
WeaverseComponentLoaderArgs,
|
|
32
|
+
WeaverseEnv,
|
|
33
|
+
WeaverseRouteAppLoadContext,
|
|
34
|
+
WeaverseStorefront,
|
|
35
|
+
WeaverseStorefrontCallOptions,
|
|
36
|
+
} from './types'
|
|
37
|
+
export type { WeaverseDataValue } from './utils/pick-weaverse-data'
|
|
38
|
+
export { getSelectedProductOptions } from './utils/product-options'
|
|
39
|
+
export {
|
|
40
|
+
useThemeSettings,
|
|
41
|
+
WeaverseHydrogenRoot,
|
|
42
|
+
type WeaverseHydrogenRootErrorProps,
|
|
43
|
+
type WeaverseHydrogenRootProps,
|
|
44
|
+
type WithWeaverseOptions,
|
|
45
|
+
withWeaverse,
|
|
46
|
+
} from './WeaverseHydrogenRoot'
|
|
47
|
+
export {
|
|
48
|
+
type BuilderApiCacheTarget,
|
|
49
|
+
type FetchCustomPagesOptions,
|
|
50
|
+
WeaverseClient,
|
|
51
|
+
type WeaverseFetchWithCacheOptions,
|
|
52
|
+
} from './weaverse-client'
|
package/src/react.ts
ADDED
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* React bindings of the Weaverse SDK that work in any React framework.
|
|
3
|
+
*
|
|
4
|
+
* Themes import from their framework's entry, such as
|
|
5
|
+
* `@weaverse/hydrogen/react-router`, which re-exports these bindings.
|
|
6
|
+
*
|
|
7
|
+
* @packageDocumentation
|
|
8
|
+
*/
|
|
9
|
+
|
|
10
|
+
export {
|
|
11
|
+
useChildInstances,
|
|
12
|
+
useItemInstance,
|
|
13
|
+
useParentInstance,
|
|
14
|
+
useWeaverse,
|
|
15
|
+
} from '@weaverse/react'
|
|
16
|
+
export type { WeaverseComponentProps } from './types'
|
package/src/seo.ts
CHANGED
|
@@ -1,17 +1,17 @@
|
|
|
1
1
|
import type { PageSEOData } from '@weaverse/schema'
|
|
2
2
|
import type { MetaDescriptor } from 'react-router'
|
|
3
|
-
import type {
|
|
3
|
+
import type { WeaverseLoaderData, WeaversePageData } from './types'
|
|
4
4
|
|
|
5
5
|
/** Object containing an optional Weaverse page for SEO extraction. */
|
|
6
6
|
export interface WeaverseSeoPageContainer {
|
|
7
7
|
/** Page whose published SEO fields should be formatted. */
|
|
8
|
-
page?:
|
|
8
|
+
page?: WeaversePageData | null
|
|
9
9
|
}
|
|
10
10
|
|
|
11
11
|
/** Input accepted by {@link getWeaverseSeoMeta}. */
|
|
12
12
|
export type WeaverseSeoInput =
|
|
13
13
|
| WeaverseLoaderData
|
|
14
|
-
|
|
|
14
|
+
| WeaversePageData
|
|
15
15
|
| WeaverseSeoPageContainer
|
|
16
16
|
| null
|
|
17
17
|
| undefined
|
|
@@ -104,7 +104,7 @@ export function formatMetaDescriptors(
|
|
|
104
104
|
|
|
105
105
|
/**
|
|
106
106
|
* Convenience accessor: pull `page.seo` out of a `WeaverseLoaderData`
|
|
107
|
-
* (or `
|
|
107
|
+
* (or `WeaversePageData`) and emit `MetaDescriptor[]`. Null-safe.
|
|
108
108
|
*
|
|
109
109
|
* @example
|
|
110
110
|
* ```ts
|
|
@@ -119,7 +119,7 @@ export function getWeaverseSeoMeta(data: WeaverseSeoInput): MetaDescriptor[] {
|
|
|
119
119
|
}
|
|
120
120
|
let page =
|
|
121
121
|
'items' in data && 'id' in data
|
|
122
|
-
? (data as
|
|
122
|
+
? (data as WeaversePageData)
|
|
123
123
|
: ((data as WeaverseSeoPageContainer).page ?? null)
|
|
124
124
|
return formatMetaDescriptors(page?.seo ?? null)
|
|
125
125
|
}
|