@weaverse/next 0.1.0-alpha.9 → 1.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/README.md +155 -73
- package/dist/{chunk-6PMZ77RA.mjs → chunk-LH6AAEIK.mjs} +115 -8
- package/dist/chunk-LH6AAEIK.mjs.map +1 -0
- package/dist/index.js +180 -32
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +86 -47
- package/dist/index.mjs.map +1 -1
- package/dist/server.js +321 -91
- package/dist/server.js.map +1 -1
- package/dist/server.mjs +205 -28
- package/dist/server.mjs.map +1 -1
- package/dist/types/client.d.ts +16 -0
- package/dist/types/client.d.ts.map +1 -0
- package/dist/types/hooks.d.ts +20 -0
- package/dist/types/hooks.d.ts.map +1 -0
- package/dist/types/index.d.ts +34 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/item.d.ts +60 -0
- package/dist/types/item.d.ts.map +1 -0
- package/dist/types/loader.d.ts +25 -0
- package/dist/types/loader.d.ts.map +1 -0
- package/dist/types/main.d.ts +11 -0
- package/dist/types/main.d.ts.map +1 -0
- package/dist/types/provider.d.ts +82 -0
- package/dist/types/provider.d.ts.map +1 -0
- package/dist/types/registry.d.ts +15 -0
- package/dist/types/registry.d.ts.map +1 -0
- package/dist/types/renderer.d.ts +21 -0
- package/dist/types/renderer.d.ts.map +1 -0
- package/dist/types/request-info.d.ts +19 -0
- package/dist/types/request-info.d.ts.map +1 -0
- package/dist/types/revalidate-item.d.ts +82 -0
- package/dist/types/revalidate-item.d.ts.map +1 -0
- package/dist/types/root-provider.d.ts +62 -0
- package/dist/types/root-provider.d.ts.map +1 -0
- package/dist/types/runtime.d.ts +113 -0
- package/dist/types/runtime.d.ts.map +1 -0
- package/dist/types/seo.d.ts +55 -0
- package/dist/types/seo.d.ts.map +1 -0
- package/dist/types/server/configs.d.ts +27 -0
- package/dist/types/server/configs.d.ts.map +1 -0
- package/dist/types/server/normalize-page-url.d.ts +19 -0
- package/dist/types/server/normalize-page-url.d.ts.map +1 -0
- package/dist/types/server/revalidate-handler.d.ts +55 -0
- package/dist/types/server/revalidate-handler.d.ts.map +1 -0
- package/dist/types/server/server-client.d.ts +21 -0
- package/dist/types/server/server-client.d.ts.map +1 -0
- package/dist/types/server.d.ts +19 -0
- package/dist/types/server.d.ts.map +1 -0
- package/dist/types/studio-bridge.d.ts +16 -0
- package/dist/types/studio-bridge.d.ts.map +1 -0
- package/dist/types/studio-connect.d.ts +27 -0
- package/dist/types/studio-connect.d.ts.map +1 -0
- package/dist/types/studio-router.d.ts +50 -0
- package/dist/types/studio-router.d.ts.map +1 -0
- package/dist/types/studio-script-src.d.ts +12 -0
- package/dist/types/studio-script-src.d.ts.map +1 -0
- package/dist/types/theme-settings-store.d.ts +18 -0
- package/dist/types/theme-settings-store.d.ts.map +1 -0
- package/dist/types/translation-context.d.ts +156 -0
- package/dist/types/translation-context.d.ts.map +1 -0
- package/dist/types/translation-store.d.ts +44 -0
- package/dist/types/translation-store.d.ts.map +1 -0
- package/dist/types/types.d.ts +665 -0
- package/dist/types/types.d.ts.map +1 -0
- package/dist/types/use-weaverse-next-studio.d.ts +34 -0
- package/dist/types/use-weaverse-next-studio.d.ts.map +1 -0
- package/dist/types/utils.d.ts +12 -0
- package/dist/types/utils.d.ts.map +1 -0
- package/package.json +12 -8
- package/src/client.ts +102 -0
- package/src/hooks.ts +50 -0
- package/src/index.ts +153 -0
- package/src/item.ts +167 -0
- package/src/loader.ts +135 -0
- package/src/main.tsx +45 -0
- package/src/provider.tsx +225 -0
- package/src/registry.ts +63 -0
- package/src/renderer.tsx +100 -0
- package/src/request-info.ts +124 -0
- package/src/revalidate-item.ts +211 -0
- package/src/root-provider.tsx +182 -0
- package/src/runtime.ts +555 -0
- package/src/seo.ts +157 -0
- package/src/server/configs.ts +178 -0
- package/src/server/normalize-page-url.ts +73 -0
- package/src/server/revalidate-handler.ts +357 -0
- package/src/server/server-client.ts +728 -0
- package/src/server.ts +67 -0
- package/src/studio-bridge.tsx +82 -0
- package/src/studio-connect.tsx +88 -0
- package/src/studio-router.ts +85 -0
- package/src/studio-script-src.ts +128 -0
- package/src/theme-settings-store.ts +47 -0
- package/src/translation-context.tsx +299 -0
- package/src/translation-store.ts +69 -0
- package/src/types.ts +753 -0
- package/src/use-weaverse-next-studio.tsx +106 -0
- package/src/utils.ts +37 -0
- package/dist/chunk-6PMZ77RA.mjs.map +0 -1
- package/dist/index.d.mts +0 -580
- package/dist/index.d.ts +0 -580
- package/dist/seo-Dos9t22_.d.mts +0 -477
- package/dist/seo-Dos9t22_.d.ts +0 -477
- package/dist/server.d.mts +0 -99
- package/dist/server.d.ts +0 -99
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import type { WeaverseNextRuntime } from './runtime';
|
|
2
|
+
import { type CreateWeaverseNextStudioInternalsOptions, type WeaverseNextStudioInternals } from './studio-router';
|
|
3
|
+
/**
|
|
4
|
+
* Resolve stable Studio `navigate` / `revalidate` callbacks from the Next App
|
|
5
|
+
* Router. `useRouter()` is stable across renders, but the derived callbacks are
|
|
6
|
+
* cached in a ref keyed on the router instance so the bridge's bind effect
|
|
7
|
+
* (which depends on `navigate` / `revalidate` identity) doesn't re-run — and
|
|
8
|
+
* re-`refreshStudio` — on every render.
|
|
9
|
+
*/
|
|
10
|
+
export declare function useWeaverseNextStudioInternals(options?: CreateWeaverseNextStudioInternalsOptions): WeaverseNextStudioInternals;
|
|
11
|
+
/** Props for the page-level Next App Router Studio binder. */
|
|
12
|
+
export interface WeaverseNextStudioProps extends CreateWeaverseNextStudioInternalsOptions {
|
|
13
|
+
/**
|
|
14
|
+
* Route the app mounted with `createWeaverseNextRevalidateHandler`.
|
|
15
|
+
* Defaults to `/api/weaverse/revalidate`.
|
|
16
|
+
*/
|
|
17
|
+
revalidateEndpoint?: string;
|
|
18
|
+
/** Browser runtime to bind to Builder Studio. */
|
|
19
|
+
runtime: WeaverseNextRuntime;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Page-level Studio binder wired to the Next App Router. Mirrors Hydrogen's
|
|
23
|
+
* `useStudio` (which binds the runtime and feeds it React Router's `navigate` /
|
|
24
|
+
* `revalidate`): it resolves the App Router callbacks via
|
|
25
|
+
* {@link useWeaverseNextStudioInternals} and hands them to
|
|
26
|
+
* {@link WeaverseNextStudioBridge}, so consuming apps get Studio navigation and
|
|
27
|
+
* revalidation without manually wiring `next/navigation`.
|
|
28
|
+
*
|
|
29
|
+
* Client-only — it is the single place `@weaverse/next` touches
|
|
30
|
+
* `next/navigation`, keeping the runtime/renderer and `@weaverse/next/server`
|
|
31
|
+
* free of router imports.
|
|
32
|
+
*/
|
|
33
|
+
export declare function WeaverseNextStudio(props: WeaverseNextStudioProps): import("react/jsx-runtime").JSX.Element;
|
|
34
|
+
//# sourceMappingURL=use-weaverse-next-studio.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-weaverse-next-studio.d.ts","sourceRoot":"","sources":["../../src/use-weaverse-next-studio.tsx"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAA;AAEpD,OAAO,EACL,KAAK,wCAAwC,EAE7C,KAAK,2BAA2B,EACjC,MAAM,iBAAiB,CAAA;AAGxB;;;;;;GAMG;AACH,wBAAgB,8BAA8B,CAC5C,OAAO,CAAC,EAAE,wCAAwC,GACjD,2BAA2B,CAqB7B;AAED,8DAA8D;AAC9D,MAAM,WAAW,uBACf,SAAQ,wCAAwC;IAChD;;;OAGG;IACH,kBAAkB,CAAC,EAAE,MAAM,CAAA;IAC3B,iDAAiD;IACjD,OAAO,EAAE,mBAAmB,CAAA;CAC7B;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,uBAAuB,2CAgChE"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { SchemaType } from '@weaverse/schema';
|
|
2
|
+
import type { WeaverseNextThemeSchema } from './types';
|
|
3
|
+
/**
|
|
4
|
+
* Generate default component data from a schema's `settings` inputs.
|
|
5
|
+
*
|
|
6
|
+
* Mirrors Hydrogen's `generateDataFromSchema` (settings → `{ [name]:
|
|
7
|
+
* defaultValue }`) but is kept local so `@weaverse/next` doesn't depend on
|
|
8
|
+
* `@weaverse/hydrogen`. Falls back to the deprecated `inspector` array when a
|
|
9
|
+
* schema predates `settings`.
|
|
10
|
+
*/
|
|
11
|
+
export declare function generateDataFromSchema(schema: SchemaType | WeaverseNextThemeSchema | undefined): Record<string, unknown>;
|
|
12
|
+
//# sourceMappingURL=utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAClD,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,SAAS,CAAA;AAEtD;;;;;;;GAOG;AACH,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,UAAU,GAAG,uBAAuB,GAAG,SAAS,GACvD,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAuBzB"}
|
package/package.json
CHANGED
|
@@ -2,19 +2,19 @@
|
|
|
2
2
|
"name": "@weaverse/next",
|
|
3
3
|
"author": "Weaverse Team",
|
|
4
4
|
"description": "Next.js App Router integration for building Weaverse-powered storefronts",
|
|
5
|
-
"version": "
|
|
5
|
+
"version": "1.0.0",
|
|
6
6
|
"license": "MIT",
|
|
7
7
|
"main": "dist/index.js",
|
|
8
|
-
"typings": "dist/index.d.ts",
|
|
8
|
+
"typings": "dist/types/index.d.ts",
|
|
9
9
|
"module": "dist/index.mjs",
|
|
10
10
|
"exports": {
|
|
11
11
|
".": {
|
|
12
|
-
"types": "./dist/index.d.ts",
|
|
12
|
+
"types": "./dist/types/index.d.ts",
|
|
13
13
|
"import": "./dist/index.mjs",
|
|
14
14
|
"require": "./dist/index.js"
|
|
15
15
|
},
|
|
16
16
|
"./server": {
|
|
17
|
-
"types": "./dist/server.d.ts",
|
|
17
|
+
"types": "./dist/types/server.d.ts",
|
|
18
18
|
"import": "./dist/server.mjs",
|
|
19
19
|
"require": "./dist/server.js"
|
|
20
20
|
},
|
|
@@ -29,14 +29,15 @@
|
|
|
29
29
|
"directory": "packages/next"
|
|
30
30
|
},
|
|
31
31
|
"files": [
|
|
32
|
-
"dist
|
|
32
|
+
"dist",
|
|
33
|
+
"src"
|
|
33
34
|
],
|
|
34
35
|
"engines": {
|
|
35
36
|
"node": ">=20"
|
|
36
37
|
},
|
|
37
38
|
"scripts": {
|
|
38
39
|
"dev": "tsup --watch",
|
|
39
|
-
"build": "tsup",
|
|
40
|
+
"build": "tsup && node ../../scripts/build-declarations.mjs",
|
|
40
41
|
"clean": "rimraf dist",
|
|
41
42
|
"test": "vp test --run --config vitest.config.ts",
|
|
42
43
|
"typecheck": "tsc --noEmit"
|
|
@@ -61,8 +62,11 @@
|
|
|
61
62
|
]
|
|
62
63
|
},
|
|
63
64
|
"dependencies": {
|
|
64
|
-
"@weaverse/react": "5.
|
|
65
|
-
"@weaverse/schema": "0.
|
|
65
|
+
"@weaverse/react": "5.22.1",
|
|
66
|
+
"@weaverse/schema": "0.18.0"
|
|
67
|
+
},
|
|
68
|
+
"devDependencies": {
|
|
69
|
+
"next": "16.3.4"
|
|
66
70
|
},
|
|
67
71
|
"peerDependencies": {
|
|
68
72
|
"next": ">=14",
|
package/src/client.ts
ADDED
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
import type { SchemaType } from '@weaverse/schema'
|
|
2
|
+
import { registerWeaverseNextComponents } from './registry'
|
|
3
|
+
import type {
|
|
4
|
+
WeaverseNextClient,
|
|
5
|
+
WeaverseNextClientConfig,
|
|
6
|
+
WeaverseNextCommerceContext,
|
|
7
|
+
WeaverseNextComponent,
|
|
8
|
+
WeaverseNextLoaderData,
|
|
9
|
+
WeaverseNextLoadPageInput,
|
|
10
|
+
WeaverseNextRequestContext,
|
|
11
|
+
WeaverseNextStorefront,
|
|
12
|
+
WeaverseNextThemeSchema,
|
|
13
|
+
} from './types'
|
|
14
|
+
import { generateDataFromSchema } from './utils'
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* Request-safe Weaverse client for Next.js. Holds the component registry, theme
|
|
18
|
+
* data, request/commerce context, and the currently loaded page payload.
|
|
19
|
+
*
|
|
20
|
+
* Unlike Hydrogen's `WeaverseClient`, it never receives a React Router
|
|
21
|
+
* `Request`/`LoaderFunctionArgs`. Network I/O is delegated to `fetchPage` /
|
|
22
|
+
* `fetchThemeSettings` injected through config, keeping v0 testable without
|
|
23
|
+
* real Weaverse API calls.
|
|
24
|
+
*/
|
|
25
|
+
class NextClient implements WeaverseNextClient {
|
|
26
|
+
projectId: string
|
|
27
|
+
components: WeaverseNextComponent[]
|
|
28
|
+
themeSchema?: SchemaType | WeaverseNextThemeSchema
|
|
29
|
+
themeSettings: Record<string, unknown>
|
|
30
|
+
requestContext?: WeaverseNextRequestContext
|
|
31
|
+
commerce?: WeaverseNextCommerceContext
|
|
32
|
+
data: WeaverseNextLoaderData | null = null
|
|
33
|
+
dataContext: Record<string, unknown> = {}
|
|
34
|
+
|
|
35
|
+
private readonly _fetchPage?: WeaverseNextClientConfig['fetchPage']
|
|
36
|
+
private readonly _fetchThemeSettings?: WeaverseNextClientConfig['fetchThemeSettings']
|
|
37
|
+
|
|
38
|
+
constructor(config: WeaverseNextClientConfig) {
|
|
39
|
+
this.projectId = config.projectId
|
|
40
|
+
this.components = config.components
|
|
41
|
+
registerWeaverseNextComponents(this.components)
|
|
42
|
+
this.themeSchema = config.themeSchema
|
|
43
|
+
// Seed `themeSchema` defaults before merchant-provided overrides, mirroring
|
|
44
|
+
// Hydrogen's `loadThemeSettings` (schema defaults under remote `theme`).
|
|
45
|
+
// Without this, `useThemeSettings()` would miss any setting the merchant
|
|
46
|
+
// never explicitly overrode.
|
|
47
|
+
this.themeSettings = {
|
|
48
|
+
...generateDataFromSchema(config.themeSchema),
|
|
49
|
+
...config.themeSettings,
|
|
50
|
+
}
|
|
51
|
+
this.requestContext = config.requestContext
|
|
52
|
+
this.commerce = config.commerce
|
|
53
|
+
this._fetchPage = config.fetchPage
|
|
54
|
+
this._fetchThemeSettings = config.fetchThemeSettings
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
/** Compatibility alias so loaders can call `weaverse.storefront.query(...)`. */
|
|
58
|
+
get storefront(): WeaverseNextStorefront | undefined {
|
|
59
|
+
return this.commerce?.storefront
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
loadPage = (
|
|
63
|
+
input: WeaverseNextLoadPageInput = {}
|
|
64
|
+
): Promise<WeaverseNextLoaderData | null> => {
|
|
65
|
+
if (!this._fetchPage) {
|
|
66
|
+
throw new Error(
|
|
67
|
+
'[WeaverseNextClient] loadPage requires a `fetchPage` function in client config.'
|
|
68
|
+
)
|
|
69
|
+
}
|
|
70
|
+
return this._fetchPage(input)
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
loadThemeSettings = (
|
|
74
|
+
context?: WeaverseNextRequestContext
|
|
75
|
+
): Promise<unknown> => {
|
|
76
|
+
if (!this._fetchThemeSettings) {
|
|
77
|
+
throw new Error(
|
|
78
|
+
'[WeaverseNextClient] loadThemeSettings requires a `fetchThemeSettings` function in client config.'
|
|
79
|
+
)
|
|
80
|
+
}
|
|
81
|
+
return this._fetchThemeSettings(context ?? this.requestContext)
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
/**
|
|
86
|
+
* Create a {@link WeaverseNextClient} from explicit config.
|
|
87
|
+
*
|
|
88
|
+
* @example
|
|
89
|
+
* ```ts
|
|
90
|
+
* let client = createWeaverseNextClient({
|
|
91
|
+
* projectId: process.env.WEAVERSE_PROJECT_ID!,
|
|
92
|
+
* components,
|
|
93
|
+
* commerce: { storefront },
|
|
94
|
+
* fetchPage: async ({ type, handle }) => fetchWeaversePage({ type, handle }),
|
|
95
|
+
* })
|
|
96
|
+
* ```
|
|
97
|
+
*/
|
|
98
|
+
export function createWeaverseNextClient(
|
|
99
|
+
config: WeaverseNextClientConfig
|
|
100
|
+
): WeaverseNextClient {
|
|
101
|
+
return new NextClient(config)
|
|
102
|
+
}
|
package/src/hooks.ts
ADDED
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
'use client'
|
|
2
|
+
|
|
3
|
+
import { useContext, useSyncExternalStore } from 'react'
|
|
4
|
+
import { WeaverseNextContext } from './provider'
|
|
5
|
+
import type { WeaverseNextCommerceContext } from './types'
|
|
6
|
+
|
|
7
|
+
const OUTSIDE_PROVIDER_ERROR = 'must be used inside a <WeaverseNextProvider>.'
|
|
8
|
+
|
|
9
|
+
function useWeaverseNextContext(hookName: string) {
|
|
10
|
+
let context = useContext(WeaverseNextContext)
|
|
11
|
+
if (!context) {
|
|
12
|
+
throw new Error(`[@weaverse/next] ${hookName} ${OUTSIDE_PROVIDER_ERROR}`)
|
|
13
|
+
}
|
|
14
|
+
return context
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* Read explicit root/global data passed to the provider. Next-native
|
|
19
|
+
* replacement for `useRouteLoaderData('root')`.
|
|
20
|
+
*/
|
|
21
|
+
export function useWeaverseRootData<T = unknown>(): T {
|
|
22
|
+
return useWeaverseNextContext('useWeaverseRootData').rootData as T
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
/**
|
|
26
|
+
* Read explicit page/route commerce data passed to the provider. Next-native
|
|
27
|
+
* replacement for section-level `useLoaderData()`.
|
|
28
|
+
*/
|
|
29
|
+
export function useWeaversePageData<T = unknown>(): T {
|
|
30
|
+
return useWeaverseNextContext('useWeaversePageData').pageData as T
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
/** Read the app-provided commerce context (storefront/cart/customer). */
|
|
34
|
+
export function useWeaverseCommerce<T = WeaverseNextCommerceContext>(): T {
|
|
35
|
+
return useWeaverseNextContext('useWeaverseCommerce').commerce as T
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
/**
|
|
39
|
+
* Read live Weaverse theme settings. The Studio bridge updates the provider's
|
|
40
|
+
* external store via `updateThemeSettings`, so components re-render during live
|
|
41
|
+
* design-mode edits.
|
|
42
|
+
*/
|
|
43
|
+
export function useThemeSettings<T = Record<string, unknown>>(): T {
|
|
44
|
+
let { themeSettingsStore } = useWeaverseNextContext('useThemeSettings')
|
|
45
|
+
return useSyncExternalStore(
|
|
46
|
+
themeSettingsStore.subscribe,
|
|
47
|
+
themeSettingsStore.getSnapshot,
|
|
48
|
+
themeSettingsStore.getServerSnapshot
|
|
49
|
+
) as T
|
|
50
|
+
}
|
package/src/index.ts
ADDED
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Next.js App Router rendering, provider, Studio, translation, and schema APIs.
|
|
3
|
+
*
|
|
4
|
+
* When migrating from `@weaverse/hydrogen`, replace route-loader context with
|
|
5
|
+
* {@link WeaverseNextProvider} props and render page data with
|
|
6
|
+
* {@link WeaverseNextRenderer}. Import server-only fetching and route-handler
|
|
7
|
+
* helpers from `@weaverse/next/server`.
|
|
8
|
+
*
|
|
9
|
+
* @packageDocumentation
|
|
10
|
+
*/
|
|
11
|
+
|
|
12
|
+
// Re-export schema authoring + runtime hooks for migration ergonomics.
|
|
13
|
+
|
|
14
|
+
// Runtime hooks from @weaverse/react (item store + editor instance).
|
|
15
|
+
export {
|
|
16
|
+
isBrowser,
|
|
17
|
+
isIframe,
|
|
18
|
+
useChildInstances,
|
|
19
|
+
useItemInstance,
|
|
20
|
+
useParentInstance,
|
|
21
|
+
useWeaverse,
|
|
22
|
+
} from '@weaverse/react'
|
|
23
|
+
export * from '@weaverse/schema'
|
|
24
|
+
export { createWeaverseNextClient } from './client'
|
|
25
|
+
export {
|
|
26
|
+
useThemeSettings,
|
|
27
|
+
useWeaverseCommerce,
|
|
28
|
+
useWeaversePageData,
|
|
29
|
+
useWeaverseRootData,
|
|
30
|
+
} from './hooks'
|
|
31
|
+
export type { WeaverseNextItem } from './item'
|
|
32
|
+
export {
|
|
33
|
+
type RunComponentLoadersArgs,
|
|
34
|
+
runWeaverseComponentLoaders,
|
|
35
|
+
} from './loader'
|
|
36
|
+
export {
|
|
37
|
+
WeaverseNextProvider,
|
|
38
|
+
type WeaverseNextProviderProps,
|
|
39
|
+
} from './provider'
|
|
40
|
+
export {
|
|
41
|
+
WeaverseNextRenderer,
|
|
42
|
+
type WeaverseNextRendererProps,
|
|
43
|
+
} from './renderer'
|
|
44
|
+
export { buildWeaverseNextRequestInfo } from './request-info'
|
|
45
|
+
export {
|
|
46
|
+
buildWeaverseNextRevalidateRouteContext,
|
|
47
|
+
DEFAULT_REVALIDATE_ENDPOINT,
|
|
48
|
+
type RevalidateItemRuntimeLike,
|
|
49
|
+
revalidateWeaverseNextItem,
|
|
50
|
+
type WeaverseNextRevalidateRouteContext,
|
|
51
|
+
} from './revalidate-item'
|
|
52
|
+
export {
|
|
53
|
+
type WeaverseNextRootContextValue,
|
|
54
|
+
WeaverseNextRootProvider,
|
|
55
|
+
type WeaverseNextRootProviderProps,
|
|
56
|
+
} from './root-provider'
|
|
57
|
+
export {
|
|
58
|
+
bindWeaverseNextStudioRuntime,
|
|
59
|
+
createWeaverseNextRuntime,
|
|
60
|
+
type WeaverseNextRenderablePage,
|
|
61
|
+
WeaverseNextRuntime,
|
|
62
|
+
} from './runtime'
|
|
63
|
+
export {
|
|
64
|
+
formatWeaverseNextSeoMetadata,
|
|
65
|
+
getWeaverseNextSeoMetadata,
|
|
66
|
+
type NextOpenGraph,
|
|
67
|
+
type NextTwitter,
|
|
68
|
+
type WeaverseNextSeoInput,
|
|
69
|
+
type WeaverseNextSeoMetadata,
|
|
70
|
+
type WeaverseNextSeoPageContainer,
|
|
71
|
+
} from './seo'
|
|
72
|
+
export {
|
|
73
|
+
WeaverseNextStudioBridge,
|
|
74
|
+
type WeaverseNextStudioBridgeProps,
|
|
75
|
+
} from './studio-bridge'
|
|
76
|
+
export {
|
|
77
|
+
type LoadWeaverseNextStudioScriptOptions,
|
|
78
|
+
loadWeaverseNextStudioScript,
|
|
79
|
+
WeaverseNextStudioConnect,
|
|
80
|
+
type WeaverseNextStudioConnectProps,
|
|
81
|
+
} from './studio-connect'
|
|
82
|
+
export {
|
|
83
|
+
type CreateWeaverseNextStudioInternalsOptions,
|
|
84
|
+
createWeaverseNextStudioInternals,
|
|
85
|
+
type WeaverseNextRouterLike,
|
|
86
|
+
type WeaverseNextStudioInternals,
|
|
87
|
+
} from './studio-router'
|
|
88
|
+
export {
|
|
89
|
+
type ResolveWeaverseNextStudioScriptSrcOptions,
|
|
90
|
+
resolveWeaverseNextStudioScriptSrc,
|
|
91
|
+
} from './studio-script-src'
|
|
92
|
+
export {
|
|
93
|
+
type CreateWeaverseNextThemeSettingsStoreOptions,
|
|
94
|
+
createWeaverseNextThemeSettingsStore,
|
|
95
|
+
} from './theme-settings-store'
|
|
96
|
+
export {
|
|
97
|
+
type CreateTranslateSources,
|
|
98
|
+
createTranslate,
|
|
99
|
+
getNestedKey,
|
|
100
|
+
interpolate,
|
|
101
|
+
ThemeTextProvider,
|
|
102
|
+
type ThemeTextProviderProps,
|
|
103
|
+
type ThemeTextValue,
|
|
104
|
+
type TranslateFunction,
|
|
105
|
+
TranslationProvider,
|
|
106
|
+
type TranslationProviderProps,
|
|
107
|
+
type TranslationValue,
|
|
108
|
+
useThemeText,
|
|
109
|
+
useTranslation,
|
|
110
|
+
} from './translation-context'
|
|
111
|
+
export { ThemeTextStore, TranslationStore } from './translation-store'
|
|
112
|
+
export type {
|
|
113
|
+
WeaverseArticle,
|
|
114
|
+
WeaverseBlog,
|
|
115
|
+
WeaverseCollection,
|
|
116
|
+
WeaverseMetaObject,
|
|
117
|
+
WeaverseNextCacheConfig,
|
|
118
|
+
WeaverseNextClient,
|
|
119
|
+
WeaverseNextClientConfig,
|
|
120
|
+
WeaverseNextCommerceContext,
|
|
121
|
+
WeaverseNextComponent,
|
|
122
|
+
WeaverseNextComponentData,
|
|
123
|
+
WeaverseNextComponentLoaderArgs,
|
|
124
|
+
WeaverseNextComponentProps,
|
|
125
|
+
WeaverseNextCustomPageEntry,
|
|
126
|
+
WeaverseNextFetchCustomPagesOptions,
|
|
127
|
+
WeaverseNextI18n,
|
|
128
|
+
WeaverseNextLoaderData,
|
|
129
|
+
WeaverseNextLoadPageInput,
|
|
130
|
+
WeaverseNextPageAssignment,
|
|
131
|
+
WeaverseNextPageData,
|
|
132
|
+
WeaverseNextRequestContext,
|
|
133
|
+
WeaverseNextRequestInfo,
|
|
134
|
+
WeaverseNextRuntimeConfig,
|
|
135
|
+
WeaverseNextRuntimeInternal,
|
|
136
|
+
WeaverseNextStorefront,
|
|
137
|
+
WeaverseNextThemeSchema,
|
|
138
|
+
WeaverseNextThemeSchemaGroup,
|
|
139
|
+
WeaverseNextThemeSchemaInput,
|
|
140
|
+
WeaverseNextThemeSettingsStore,
|
|
141
|
+
WeaverseNextTranslationChanges,
|
|
142
|
+
WeaverseNextTranslationEntry,
|
|
143
|
+
WeaverseNextTranslationItemEntry,
|
|
144
|
+
WeaverseNextTranslationMap,
|
|
145
|
+
WeaverseNextTranslationMapEntry,
|
|
146
|
+
WeaverseProduct,
|
|
147
|
+
} from './types'
|
|
148
|
+
export {
|
|
149
|
+
useWeaverseNextStudioInternals,
|
|
150
|
+
WeaverseNextStudio,
|
|
151
|
+
type WeaverseNextStudioProps,
|
|
152
|
+
} from './use-weaverse-next-studio'
|
|
153
|
+
export { generateDataFromSchema } from './utils'
|
package/src/item.ts
ADDED
|
@@ -0,0 +1,167 @@
|
|
|
1
|
+
import type { ElementData } from '@weaverse/react'
|
|
2
|
+
import { Weaverse, WeaverseItemStore } from '@weaverse/react'
|
|
3
|
+
import type { WeaverseNextRuntime } from './runtime'
|
|
4
|
+
import type {
|
|
5
|
+
WeaverseNextComponentData,
|
|
6
|
+
WeaverseNextTranslationItemEntry,
|
|
7
|
+
} from './types'
|
|
8
|
+
import { generateDataFromSchema } from './utils'
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* Spread a serialized item's nested `data` field into top-level props — the
|
|
12
|
+
* shape the shared `@weaverse/react` renderer expects. Top-level fields win
|
|
13
|
+
* over nested ones, matching the constructor's original
|
|
14
|
+
* `Object.assign(store, schemaDefaults, data, rest)` merge order. Flat payloads
|
|
15
|
+
* with no nested `data` pass through unchanged.
|
|
16
|
+
*/
|
|
17
|
+
function flattenItemData(update: Omit<ElementData, 'id' | 'type'>) {
|
|
18
|
+
let { data, ...rest } = update
|
|
19
|
+
if (!(data && typeof data === 'object' && !Array.isArray(data))) {
|
|
20
|
+
return rest
|
|
21
|
+
}
|
|
22
|
+
return { ...data, ...rest }
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
/**
|
|
26
|
+
* While set, item `setData()` queues its subscriber notification here instead
|
|
27
|
+
* of emitting synchronously. `createWeaverseNextRuntime()` runs during React
|
|
28
|
+
* render (the renderer's `useMemo`), and constructing a runtime makes core's
|
|
29
|
+
* `initProject()` call `setData()` on reused item instances (locale/client
|
|
30
|
+
* navigation) — emitting to `useSyncExternalStore` subscribers mid-render
|
|
31
|
+
* trips React's setState-in-render warning. Data is still applied
|
|
32
|
+
* synchronously; only the emit is deferred.
|
|
33
|
+
*/
|
|
34
|
+
let deferredItemUpdates: Set<WeaverseNextItem> | null = null
|
|
35
|
+
|
|
36
|
+
/**
|
|
37
|
+
* Run `create` with item update emissions deferred, returning its result and
|
|
38
|
+
* the items whose `setData()` fired meanwhile. The caller is responsible for
|
|
39
|
+
* calling `triggerUpdate()` on them once React has committed.
|
|
40
|
+
*/
|
|
41
|
+
export function collectDeferredItemUpdates<T>(
|
|
42
|
+
create: () => T
|
|
43
|
+
): [T, WeaverseNextItem[]] {
|
|
44
|
+
let previousQueue = deferredItemUpdates
|
|
45
|
+
let queue = new Set<WeaverseNextItem>()
|
|
46
|
+
deferredItemUpdates = queue
|
|
47
|
+
try {
|
|
48
|
+
return [create(), [...queue]]
|
|
49
|
+
} finally {
|
|
50
|
+
deferredItemUpdates = previousQueue
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
/**
|
|
55
|
+
* Item store that flattens the serialized item's nested `data` field onto the
|
|
56
|
+
* store and seeds schema defaults — same shape Hydrogen produces, so the
|
|
57
|
+
* shared `@weaverse/react` renderer can spread props at the top level.
|
|
58
|
+
*/
|
|
59
|
+
export class WeaverseNextItem extends WeaverseItemStore {
|
|
60
|
+
/** Browser runtime that owns this item store. */
|
|
61
|
+
declare weaverse: WeaverseNextRuntime
|
|
62
|
+
|
|
63
|
+
/**
|
|
64
|
+
* Cached merged snapshot (base `_store` + translations). Reset whenever the
|
|
65
|
+
* `_store` ref or the item's translation entry ref changes, so
|
|
66
|
+
* `useSyncExternalStore` sees a stable object between unrelated re-renders.
|
|
67
|
+
*/
|
|
68
|
+
private _cachedSnapshot: ElementData | null = null
|
|
69
|
+
private _snapshotStoreRef: ElementData | null = null
|
|
70
|
+
private _snapshotTranslationRef: WeaverseNextTranslationItemEntry | null =
|
|
71
|
+
null
|
|
72
|
+
|
|
73
|
+
/** Create an item store from serialized component data and its runtime. */
|
|
74
|
+
constructor(initialData: WeaverseNextComponentData, weaverse: Weaverse) {
|
|
75
|
+
super(initialData as ElementData, weaverse)
|
|
76
|
+
let schemaData = generateDataFromSchema(this.Element?.schema)
|
|
77
|
+
Object.assign(this._store, schemaData, flattenItemData(initialData))
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
/**
|
|
81
|
+
* Flatten nested `data` on updates exactly like the constructor does. Core's
|
|
82
|
+
* `initProject()` calls `setData(item)` when a new runtime serves a page
|
|
83
|
+
* whose item instances already exist (e.g. locale/client navigation).
|
|
84
|
+
*
|
|
85
|
+
* A complete serialized item (it carries `id` and `type`; core's
|
|
86
|
+
* `initProject()` always passes one) replaces the store the way the
|
|
87
|
+
* constructor builds it: the schema defaults of the item's own `type` — the
|
|
88
|
+
* Builder can replace a section in place, keeping its id — then the item's
|
|
89
|
+
* settings. A payload omits a setting — or the whole optional `data` — when
|
|
90
|
+
* its value equals the schema default, so merging into the previous store
|
|
91
|
+
* would keep the previous locale's value visible. Partial updates still
|
|
92
|
+
* merge. Either way the `_store` ref changes, which invalidates the memoized
|
|
93
|
+
* snapshot below. The subscriber emit is queued instead of fired when a
|
|
94
|
+
* render-phase deferral is active (see `collectDeferredItemUpdates`).
|
|
95
|
+
*/
|
|
96
|
+
setData = (update: Omit<ElementData, 'id' | 'type'>) => {
|
|
97
|
+
if ('id' in update && 'type' in update) {
|
|
98
|
+
let { data, type } = update as ElementData
|
|
99
|
+
let schema = this.weaverse.elementRegistry.get(type)?.schema
|
|
100
|
+
this._store = {
|
|
101
|
+
...generateDataFromSchema(schema),
|
|
102
|
+
...(data === undefined ? {} : { data }),
|
|
103
|
+
...flattenItemData(update),
|
|
104
|
+
} as ElementData
|
|
105
|
+
} else {
|
|
106
|
+
this.data = flattenItemData(update)
|
|
107
|
+
}
|
|
108
|
+
if (deferredItemUpdates) {
|
|
109
|
+
deferredItemUpdates.add(this)
|
|
110
|
+
} else {
|
|
111
|
+
this.triggerUpdate()
|
|
112
|
+
}
|
|
113
|
+
return this.data
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
/**
|
|
117
|
+
* Overlay item-level translations onto the base store when the runtime is in
|
|
118
|
+
* translation mode. Mirrors Hydrogen's `WeaverseHydrogenItem.getSnapShot()`:
|
|
119
|
+
* memoized by `_store` ref + translation entry ref so the returned object is
|
|
120
|
+
* referentially stable, and a fast path that returns the base store untouched
|
|
121
|
+
* when the item has no translations.
|
|
122
|
+
*/
|
|
123
|
+
getSnapShot = (): ElementData => {
|
|
124
|
+
let base = this._store
|
|
125
|
+
let translations = this.weaverse.translationMap[this._id]
|
|
126
|
+
|
|
127
|
+
// No translations → return the base store directly (fast path).
|
|
128
|
+
if (!translations) {
|
|
129
|
+
return base
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
// Reuse the cached merge while both the store and translation refs hold.
|
|
133
|
+
if (
|
|
134
|
+
this._cachedSnapshot &&
|
|
135
|
+
this._snapshotStoreRef === base &&
|
|
136
|
+
this._snapshotTranslationRef === translations
|
|
137
|
+
) {
|
|
138
|
+
return this._cachedSnapshot
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
let merged = { ...base }
|
|
142
|
+
for (let [key, entry] of Object.entries(translations)) {
|
|
143
|
+
if (entry.translatedValue !== undefined) {
|
|
144
|
+
merged[key] = entry.translatedValue
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
this._cachedSnapshot = merged
|
|
149
|
+
this._snapshotStoreRef = base
|
|
150
|
+
this._snapshotTranslationRef = translations
|
|
151
|
+
return merged
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
/**
|
|
156
|
+
* Register the Next item constructor globally. Idempotent: calling it more than
|
|
157
|
+
* once is safe. Invoked by the renderer before it builds a Weaverse instance.
|
|
158
|
+
*/
|
|
159
|
+
export function ensureNextItemConstructor() {
|
|
160
|
+
if (
|
|
161
|
+
!Weaverse.ItemConstructor ||
|
|
162
|
+
Weaverse.ItemConstructor === WeaverseItemStore ||
|
|
163
|
+
Weaverse.ItemConstructor === WeaverseNextItem
|
|
164
|
+
) {
|
|
165
|
+
Weaverse.ItemConstructor = WeaverseNextItem
|
|
166
|
+
}
|
|
167
|
+
}
|