@weaverse/next 0.1.0-alpha.13 → 0.1.0-alpha.15

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.
Files changed (106) hide show
  1. package/README.md +125 -23
  2. package/dist/{chunk-MQ6N5ODA.mjs → chunk-NL22OVD7.mjs} +93 -4
  3. package/dist/chunk-NL22OVD7.mjs.map +1 -0
  4. package/dist/index.js +86 -5
  5. package/dist/index.js.map +1 -1
  6. package/dist/index.mjs +20 -27
  7. package/dist/index.mjs.map +1 -1
  8. package/dist/server.js +158 -2
  9. package/dist/server.js.map +1 -1
  10. package/dist/server.mjs +126 -5
  11. package/dist/server.mjs.map +1 -1
  12. package/dist/types/client.d.ts +16 -0
  13. package/dist/types/client.d.ts.map +1 -0
  14. package/dist/types/hooks.d.ts +20 -0
  15. package/dist/types/hooks.d.ts.map +1 -0
  16. package/dist/types/index.d.ts +34 -0
  17. package/dist/types/index.d.ts.map +1 -0
  18. package/dist/types/item.d.ts +54 -0
  19. package/dist/types/item.d.ts.map +1 -0
  20. package/dist/types/loader.d.ts +25 -0
  21. package/dist/types/loader.d.ts.map +1 -0
  22. package/dist/types/main.d.ts +11 -0
  23. package/dist/types/main.d.ts.map +1 -0
  24. package/dist/types/provider.d.ts +82 -0
  25. package/dist/types/provider.d.ts.map +1 -0
  26. package/dist/types/registry.d.ts +15 -0
  27. package/dist/types/registry.d.ts.map +1 -0
  28. package/dist/types/renderer.d.ts +20 -0
  29. package/dist/types/renderer.d.ts.map +1 -0
  30. package/dist/types/request-info.d.ts +8 -0
  31. package/dist/types/request-info.d.ts.map +1 -0
  32. package/dist/types/revalidate-item.d.ts +81 -0
  33. package/dist/types/revalidate-item.d.ts.map +1 -0
  34. package/dist/types/root-provider.d.ts +61 -0
  35. package/dist/types/root-provider.d.ts.map +1 -0
  36. package/dist/types/runtime.d.ts +113 -0
  37. package/dist/types/runtime.d.ts.map +1 -0
  38. package/dist/types/seo.d.ts +55 -0
  39. package/dist/types/seo.d.ts.map +1 -0
  40. package/dist/types/server/configs.d.ts +27 -0
  41. package/dist/types/server/configs.d.ts.map +1 -0
  42. package/dist/types/server/normalize-page-url.d.ts +19 -0
  43. package/dist/types/server/normalize-page-url.d.ts.map +1 -0
  44. package/dist/types/server/revalidate-handler.d.ts +55 -0
  45. package/dist/types/server/revalidate-handler.d.ts.map +1 -0
  46. package/dist/types/server/server-client.d.ts +21 -0
  47. package/dist/types/server/server-client.d.ts.map +1 -0
  48. package/dist/types/server.d.ts +19 -0
  49. package/dist/types/server.d.ts.map +1 -0
  50. package/dist/types/studio-bridge.d.ts +16 -0
  51. package/dist/types/studio-bridge.d.ts.map +1 -0
  52. package/dist/types/studio-connect.d.ts +27 -0
  53. package/dist/types/studio-connect.d.ts.map +1 -0
  54. package/dist/types/studio-router.d.ts +50 -0
  55. package/dist/types/studio-router.d.ts.map +1 -0
  56. package/dist/types/studio-script-src.d.ts +12 -0
  57. package/dist/types/studio-script-src.d.ts.map +1 -0
  58. package/dist/types/theme-settings-store.d.ts +17 -0
  59. package/dist/types/theme-settings-store.d.ts.map +1 -0
  60. package/dist/types/translation-context.d.ts +156 -0
  61. package/dist/types/translation-context.d.ts.map +1 -0
  62. package/dist/types/translation-store.d.ts +44 -0
  63. package/dist/types/translation-store.d.ts.map +1 -0
  64. package/dist/types/types.d.ts +661 -0
  65. package/dist/types/types.d.ts.map +1 -0
  66. package/dist/types/use-weaverse-next-studio.d.ts +34 -0
  67. package/dist/types/use-weaverse-next-studio.d.ts.map +1 -0
  68. package/dist/types/utils.d.ts +12 -0
  69. package/dist/types/utils.d.ts.map +1 -0
  70. package/package.json +7 -6
  71. package/src/client.ts +101 -0
  72. package/src/hooks.ts +50 -0
  73. package/src/index.ts +153 -0
  74. package/src/item.ts +151 -0
  75. package/src/loader.ts +135 -0
  76. package/src/main.tsx +45 -0
  77. package/src/provider.tsx +225 -0
  78. package/src/registry.ts +63 -0
  79. package/src/renderer.tsx +99 -0
  80. package/src/request-info.ts +95 -0
  81. package/src/revalidate-item.ts +210 -0
  82. package/src/root-provider.tsx +181 -0
  83. package/src/runtime.ts +521 -0
  84. package/src/seo.ts +157 -0
  85. package/src/server/configs.ts +182 -0
  86. package/src/server/normalize-page-url.ts +65 -0
  87. package/src/server/revalidate-handler.ts +357 -0
  88. package/src/server/server-client.ts +727 -0
  89. package/src/server.ts +67 -0
  90. package/src/studio-bridge.tsx +82 -0
  91. package/src/studio-connect.tsx +88 -0
  92. package/src/studio-router.ts +85 -0
  93. package/src/studio-script-src.ts +128 -0
  94. package/src/theme-settings-store.ts +46 -0
  95. package/src/translation-context.tsx +299 -0
  96. package/src/translation-store.ts +69 -0
  97. package/src/types.ts +748 -0
  98. package/src/use-weaverse-next-studio.tsx +106 -0
  99. package/src/utils.ts +37 -0
  100. package/dist/chunk-MQ6N5ODA.mjs.map +0 -1
  101. package/dist/index.d.mts +0 -592
  102. package/dist/index.d.ts +0 -592
  103. package/dist/seo-CrEFl_Up.d.mts +0 -516
  104. package/dist/seo-CrEFl_Up.d.ts +0 -516
  105. package/dist/server.d.mts +0 -100
  106. package/dist/server.d.ts +0 -100
@@ -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": "0.1.0-alpha.13",
5
+ "version": "0.1.0-alpha.15",
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"
package/src/client.ts ADDED
@@ -0,0 +1,101 @@
1
+ import { registerWeaverseNextComponents } from './registry'
2
+ import type {
3
+ WeaverseNextClient,
4
+ WeaverseNextClientConfig,
5
+ WeaverseNextCommerceContext,
6
+ WeaverseNextComponent,
7
+ WeaverseNextLoaderData,
8
+ WeaverseNextLoadPageInput,
9
+ WeaverseNextRequestContext,
10
+ WeaverseNextStorefront,
11
+ WeaverseNextThemeSchema,
12
+ } from './types'
13
+ import { generateDataFromSchema } from './utils'
14
+
15
+ /**
16
+ * Request-safe Weaverse client for Next.js. Holds the component registry, theme
17
+ * data, request/commerce context, and the currently loaded page payload.
18
+ *
19
+ * Unlike Hydrogen's `WeaverseClient`, it never receives a React Router
20
+ * `Request`/`LoaderFunctionArgs`. Network I/O is delegated to `fetchPage` /
21
+ * `fetchThemeSettings` injected through config, keeping v0 testable without
22
+ * real Weaverse API calls.
23
+ */
24
+ class NextClient implements WeaverseNextClient {
25
+ projectId: string
26
+ components: WeaverseNextComponent[]
27
+ themeSchema?: WeaverseNextThemeSchema
28
+ themeSettings: Record<string, unknown>
29
+ requestContext?: WeaverseNextRequestContext
30
+ commerce?: WeaverseNextCommerceContext
31
+ data: WeaverseNextLoaderData | null = null
32
+ dataContext: Record<string, unknown> = {}
33
+
34
+ private readonly _fetchPage?: WeaverseNextClientConfig['fetchPage']
35
+ private readonly _fetchThemeSettings?: WeaverseNextClientConfig['fetchThemeSettings']
36
+
37
+ constructor(config: WeaverseNextClientConfig) {
38
+ this.projectId = config.projectId
39
+ this.components = config.components
40
+ registerWeaverseNextComponents(this.components)
41
+ this.themeSchema = config.themeSchema
42
+ // Seed `themeSchema` defaults before merchant-provided overrides, mirroring
43
+ // Hydrogen's `loadThemeSettings` (schema defaults under remote `theme`).
44
+ // Without this, `useThemeSettings()` would miss any setting the merchant
45
+ // never explicitly overrode.
46
+ this.themeSettings = {
47
+ ...generateDataFromSchema(config.themeSchema),
48
+ ...config.themeSettings,
49
+ }
50
+ this.requestContext = config.requestContext
51
+ this.commerce = config.commerce
52
+ this._fetchPage = config.fetchPage
53
+ this._fetchThemeSettings = config.fetchThemeSettings
54
+ }
55
+
56
+ /** Compatibility alias so loaders can call `weaverse.storefront.query(...)`. */
57
+ get storefront(): WeaverseNextStorefront | undefined {
58
+ return this.commerce?.storefront
59
+ }
60
+
61
+ loadPage = (
62
+ input: WeaverseNextLoadPageInput = {}
63
+ ): Promise<WeaverseNextLoaderData | null> => {
64
+ if (!this._fetchPage) {
65
+ throw new Error(
66
+ '[WeaverseNextClient] loadPage requires a `fetchPage` function in client config.'
67
+ )
68
+ }
69
+ return this._fetchPage(input)
70
+ }
71
+
72
+ loadThemeSettings = (
73
+ context?: WeaverseNextRequestContext
74
+ ): Promise<unknown> => {
75
+ if (!this._fetchThemeSettings) {
76
+ throw new Error(
77
+ '[WeaverseNextClient] loadThemeSettings requires a `fetchThemeSettings` function in client config.'
78
+ )
79
+ }
80
+ return this._fetchThemeSettings(context ?? this.requestContext)
81
+ }
82
+ }
83
+
84
+ /**
85
+ * Create a {@link WeaverseNextClient} from explicit config.
86
+ *
87
+ * @example
88
+ * ```ts
89
+ * let client = createWeaverseNextClient({
90
+ * projectId: process.env.WEAVERSE_PROJECT_ID!,
91
+ * components,
92
+ * commerce: { storefront },
93
+ * fetchPage: async ({ type, handle }) => fetchWeaversePage({ type, handle }),
94
+ * })
95
+ * ```
96
+ */
97
+ export function createWeaverseNextClient(
98
+ config: WeaverseNextClientConfig
99
+ ): WeaverseNextClient {
100
+ return new NextClient(config)
101
+ }
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,151 @@
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), and
84
+ * the inherited shallow merge would leave stale top-level props behind.
85
+ * Assigning through the inherited `data` setter swaps the `_store` ref,
86
+ * which invalidates the memoized snapshot below. The subscriber emit is
87
+ * queued instead of fired when a render-phase deferral is active (see
88
+ * `collectDeferredItemUpdates`).
89
+ */
90
+ setData = (update: Omit<ElementData, 'id' | 'type'>) => {
91
+ this.data = flattenItemData(update)
92
+ if (deferredItemUpdates) {
93
+ deferredItemUpdates.add(this)
94
+ } else {
95
+ this.triggerUpdate()
96
+ }
97
+ return this.data
98
+ }
99
+
100
+ /**
101
+ * Overlay item-level translations onto the base store when the runtime is in
102
+ * translation mode. Mirrors Hydrogen's `WeaverseHydrogenItem.getSnapShot()`:
103
+ * memoized by `_store` ref + translation entry ref so the returned object is
104
+ * referentially stable, and a fast path that returns the base store untouched
105
+ * when the item has no translations.
106
+ */
107
+ getSnapShot = (): ElementData => {
108
+ let base = this._store
109
+ let translations = this.weaverse.translationMap[this._id]
110
+
111
+ // No translations → return the base store directly (fast path).
112
+ if (!translations) {
113
+ return base
114
+ }
115
+
116
+ // Reuse the cached merge while both the store and translation refs hold.
117
+ if (
118
+ this._cachedSnapshot &&
119
+ this._snapshotStoreRef === base &&
120
+ this._snapshotTranslationRef === translations
121
+ ) {
122
+ return this._cachedSnapshot
123
+ }
124
+
125
+ let merged = { ...base }
126
+ for (let [key, entry] of Object.entries(translations)) {
127
+ if (entry.translatedValue !== undefined) {
128
+ merged[key] = entry.translatedValue
129
+ }
130
+ }
131
+
132
+ this._cachedSnapshot = merged
133
+ this._snapshotStoreRef = base
134
+ this._snapshotTranslationRef = translations
135
+ return merged
136
+ }
137
+ }
138
+
139
+ /**
140
+ * Register the Next item constructor globally. Idempotent: calling it more than
141
+ * once is safe. Invoked by the renderer before it builds a Weaverse instance.
142
+ */
143
+ export function ensureNextItemConstructor() {
144
+ if (
145
+ !Weaverse.ItemConstructor ||
146
+ Weaverse.ItemConstructor === WeaverseItemStore ||
147
+ Weaverse.ItemConstructor === WeaverseNextItem
148
+ ) {
149
+ Weaverse.ItemConstructor = WeaverseNextItem
150
+ }
151
+ }