@weaverse/next 0.1.0-alpha.2 → 0.1.0-alpha.20

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 (107) hide show
  1. package/README.md +586 -123
  2. package/dist/chunk-LH6AAEIK.mjs +326 -0
  3. package/dist/chunk-LH6AAEIK.mjs.map +1 -0
  4. package/dist/index.js +784 -60
  5. package/dist/index.js.map +1 -1
  6. package/dist/index.mjs +588 -58
  7. package/dist/index.mjs.map +1 -1
  8. package/dist/server.js +537 -76
  9. package/dist/server.js.map +1 -1
  10. package/dist/server.mjs +363 -27
  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 +60 -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 +21 -0
  29. package/dist/types/renderer.d.ts.map +1 -0
  30. package/dist/types/request-info.d.ts +19 -0
  31. package/dist/types/request-info.d.ts.map +1 -0
  32. package/dist/types/revalidate-item.d.ts +82 -0
  33. package/dist/types/revalidate-item.d.ts.map +1 -0
  34. package/dist/types/root-provider.d.ts +62 -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 +18 -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 +665 -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 +12 -8
  71. package/src/client.ts +102 -0
  72. package/src/hooks.ts +50 -0
  73. package/src/index.ts +153 -0
  74. package/src/item.ts +167 -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 +100 -0
  80. package/src/request-info.ts +124 -0
  81. package/src/revalidate-item.ts +211 -0
  82. package/src/root-provider.tsx +182 -0
  83. package/src/runtime.ts +555 -0
  84. package/src/seo.ts +157 -0
  85. package/src/server/configs.ts +178 -0
  86. package/src/server/normalize-page-url.ts +73 -0
  87. package/src/server/revalidate-handler.ts +357 -0
  88. package/src/server/server-client.ts +728 -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 +47 -0
  95. package/src/translation-context.tsx +299 -0
  96. package/src/translation-store.ts +69 -0
  97. package/src/types.ts +753 -0
  98. package/src/use-weaverse-next-studio.tsx +106 -0
  99. package/src/utils.ts +37 -0
  100. package/dist/chunk-SS6QUKYY.mjs +0 -149
  101. package/dist/chunk-SS6QUKYY.mjs.map +0 -1
  102. package/dist/index.d.mts +0 -250
  103. package/dist/index.d.ts +0 -250
  104. package/dist/server.d.mts +0 -60
  105. package/dist/server.d.ts +0 -60
  106. package/dist/types-DvEeLX6L.d.mts +0 -321
  107. package/dist/types-DvEeLX6L.d.ts +0 -321
@@ -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.2",
5
+ "version": "0.1.0-alpha.20",
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.16.3",
65
- "@weaverse/schema": "0.10.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
+ }