@weaverse/next 0.1.0-alpha.0 → 0.1.0-alpha.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.ts CHANGED
@@ -1,163 +1,11 @@
1
- import { WeaverseElement, WeaverseResourcePickerData } from '@weaverse/react';
1
+ import { Weaverse } from '@weaverse/react';
2
2
  export { isBrowser, isIframe, useChildInstances, useItemInstance, useParentInstance, useWeaverse } from '@weaverse/react';
3
- import { PageType, SchemaType } from '@weaverse/schema';
4
3
  export { InspectorGroup, PageType, SchemaType, createSchema } from '@weaverse/schema';
5
- import * as react from 'react';
6
- import { ReactNode, ComponentType, ForwardRefExoticComponent } from 'react';
4
+ import { d as WeaverseNextClientConfig, c as WeaverseNextClient, e as WeaverseNextCommerceContext, q as WeaverseNextRequestContext, n as WeaverseNextLoaderData, r as WeaverseNextRequestInfo, t as WeaverseNextRuntimeInternal, s as WeaverseNextRuntimeConfig, A as WeaverseNextThemeSettingsStore } from './types-DvEeLX6L.js';
5
+ export { W as WeaverseCollection, f as WeaverseNextComponent, g as WeaverseNextComponentData, h as WeaverseNextComponentLoaderArgs, i as WeaverseNextComponentProps, l as WeaverseNextI18n, m as WeaverseNextLoadPageInput, o as WeaverseNextPageData, x as WeaverseNextStorefront, B as WeaverseProduct } from './types-DvEeLX6L.js';
7
6
  import * as react_jsx_runtime from 'react/jsx-runtime';
8
-
9
- /**
10
- * Locale/market info passed through to component loaders and the Storefront
11
- * client. Kept structurally close to Hydrogen's `WeaverseI18n` but without the
12
- * `@shopify/hydrogen` `I18nBase` dependency so the adapter stays framework
13
- * neutral.
14
- */
15
- interface WeaverseNextI18n {
16
- country?: string;
17
- label?: string;
18
- language?: string;
19
- locale?: string;
20
- pathPrefix?: string;
21
- [key: string]: unknown;
22
- }
23
- /**
24
- * Minimal Storefront client shape required by component loaders. The host app
25
- * provides this (public or private token mode); Weaverse never owns it.
26
- */
27
- interface WeaverseNextStorefront {
28
- i18n?: WeaverseNextI18n;
29
- query: (query: string, options?: unknown) => Promise<unknown>;
30
- [key: string]: unknown;
31
- }
32
- /**
33
- * App-provided commerce context. `storefront` is the only v0 must-have; cart
34
- * and customer-account stay app-owned and are passed through untouched.
35
- */
36
- interface WeaverseNextCommerceContext {
37
- cart?: unknown;
38
- customerAccount?: unknown;
39
- storefront?: WeaverseNextStorefront;
40
- [key: string]: unknown;
41
- }
42
- /**
43
- * Explicit, framework-neutral replacement for React Router's
44
- * `LoaderFunctionArgs`. Built by the Next route/page from params + headers +
45
- * searchParams instead of an implicit loader context.
46
- */
47
- interface WeaverseNextRequestContext {
48
- handle?: string;
49
- headers?: Headers;
50
- i18n?: WeaverseNextI18n;
51
- isDesignMode?: boolean;
52
- isPreviewMode?: boolean;
53
- isRevisionPreview?: boolean;
54
- pageType?: PageType;
55
- pathname?: string;
56
- searchParams?: URLSearchParams;
57
- sectionType?: string;
58
- url?: URL | string;
59
- [key: string]: unknown;
60
- }
61
- /** A single serialized item in a Weaverse page tree. */
62
- interface WeaverseNextComponentData {
63
- children?: WeaverseNextComponentData[] | {
64
- id: string;
65
- }[];
66
- data?: Record<string, unknown>;
67
- id: string;
68
- /** Attached by {@link runWeaverseComponentLoaders} after a loader runs. */
69
- loaderData?: unknown;
70
- type: string;
71
- [key: string]: unknown;
72
- }
73
- /** Serialized page tree fetched from Weaverse. */
74
- interface WeaverseNextPageData {
75
- id: string;
76
- items: WeaverseNextComponentData[];
77
- name?: string;
78
- rootId?: string;
79
- [key: string]: unknown;
80
- }
81
- /**
82
- * Top-level payload returned by `client.loadPage`. Kept close to Hydrogen's
83
- * `WeaverseLoaderData` so registered components stay portable.
84
- */
85
- interface WeaverseNextLoaderData {
86
- configs?: Record<string, unknown>;
87
- page: WeaverseNextPageData;
88
- pageAssignment?: Record<string, unknown>;
89
- project?: Record<string, unknown>;
90
- [key: string]: unknown;
91
- }
92
- /** Props injected into every registered Weaverse component. */
93
- interface WeaverseNextComponentProps<L = unknown> extends Partial<WeaverseElement> {
94
- children?: ReactNode;
95
- className?: string;
96
- loaderData?: L;
97
- [key: string]: unknown;
98
- }
99
- /**
100
- * Arguments passed to a component `loader`. `commerce.storefront` is the
101
- * explicit contract; `weaverse.storefront` exists as a compatibility alias for
102
- * Pilot-style loaders that call `weaverse.storefront.query(...)`.
103
- */
104
- interface WeaverseNextComponentLoaderArgs<TData = unknown> {
105
- commerce?: WeaverseNextCommerceContext;
106
- context?: WeaverseNextRequestContext;
107
- data: TData;
108
- weaverse: WeaverseNextClient;
109
- }
110
- /** Registered component module shape: `default` + `schema` + optional `loader`. */
111
- interface WeaverseNextComponent<TProps extends WeaverseNextComponentProps = WeaverseNextComponentProps> {
112
- default: ComponentType<TProps> | ForwardRefExoticComponent<TProps>;
113
- loader?: (args: WeaverseNextComponentLoaderArgs) => Promise<unknown>;
114
- schema: SchemaType;
115
- }
116
- /** Input for `client.loadPage`. The Next route maps `params` → `type/handle`. */
117
- interface WeaverseNextLoadPageInput {
118
- handle?: string;
119
- locale?: string;
120
- type?: PageType;
121
- [key: string]: unknown;
122
- }
123
- interface WeaverseNextClientConfig {
124
- commerce?: WeaverseNextCommerceContext;
125
- components: WeaverseNextComponent[];
126
- /**
127
- * Injected page fetcher. v0 delegates network I/O to the host app so the
128
- * adapter can be tested without real Weaverse API calls.
129
- */
130
- fetchPage?: (input: WeaverseNextLoadPageInput) => Promise<WeaverseNextLoaderData | null>;
131
- /** Injected theme-settings fetcher. */
132
- fetchThemeSettings?: (context?: WeaverseNextRequestContext) => Promise<unknown>;
133
- projectId: string;
134
- requestContext?: WeaverseNextRequestContext;
135
- themeSchema?: unknown;
136
- themeSettings?: Record<string, unknown>;
137
- }
138
- /**
139
- * Request-safe client returned by {@link createWeaverseNextClient}. Holds the
140
- * registry/config plus the currently loaded page data, and is the object passed
141
- * to component loaders as `weaverse`.
142
- */
143
- interface WeaverseNextClient {
144
- commerce?: WeaverseNextCommerceContext;
145
- components: WeaverseNextComponent[];
146
- /** Currently loaded page payload (set by `loadPage`). */
147
- data: WeaverseNextLoaderData | null;
148
- /** Data-connector context handed to the React renderer. */
149
- dataContext: Record<string, unknown>;
150
- loadPage: (input?: WeaverseNextLoadPageInput) => Promise<WeaverseNextLoaderData | null>;
151
- loadThemeSettings: (context?: WeaverseNextRequestContext) => Promise<unknown>;
152
- projectId: string;
153
- requestContext?: WeaverseNextRequestContext;
154
- /** Compatibility alias for `commerce.storefront`. */
155
- storefront?: WeaverseNextStorefront;
156
- themeSchema?: unknown;
157
- themeSettings: Record<string, unknown>;
158
- }
159
- type WeaverseProduct = WeaverseResourcePickerData;
160
- type WeaverseCollection = WeaverseResourcePickerData;
7
+ import * as react from 'react';
8
+ import { ReactNode } from 'react';
161
9
 
162
10
  /**
163
11
  * Create a {@link WeaverseNextClient} from explicit config.
@@ -187,8 +35,9 @@ declare function useWeaversePageData<T = unknown>(): T;
187
35
  /** Read the app-provided commerce context (storefront/cart/customer). */
188
36
  declare function useWeaverseCommerce<T = WeaverseNextCommerceContext>(): T;
189
37
  /**
190
- * Read Weaverse theme settings. Next version backed by provider root/theme
191
- * data (`client.themeSettings`), not the Hydrogen theme-settings store.
38
+ * Read live Weaverse theme settings. The Studio bridge updates the provider's
39
+ * external store via `updateThemeSettings`, so components re-render during live
40
+ * design-mode edits.
192
41
  */
193
42
  declare function useThemeSettings<T = Record<string, unknown>>(): T;
194
43
 
@@ -262,4 +111,74 @@ interface WeaverseNextRendererProps {
262
111
  */
263
112
  declare const WeaverseNextRenderer: react.MemoExoticComponent<(props: WeaverseNextRendererProps) => react_jsx_runtime.JSX.Element | null>;
264
113
 
265
- export { type RunComponentLoadersArgs, type WeaverseCollection, type WeaverseNextClient, type WeaverseNextClientConfig, type WeaverseNextCommerceContext, type WeaverseNextComponent, type WeaverseNextComponentData, type WeaverseNextComponentLoaderArgs, type WeaverseNextComponentProps, type WeaverseNextI18n, type WeaverseNextLoadPageInput, type WeaverseNextLoaderData, type WeaverseNextPageData, WeaverseNextProvider, type WeaverseNextProviderProps, WeaverseNextRenderer, type WeaverseNextRendererProps, type WeaverseNextRequestContext, type WeaverseNextStorefront, type WeaverseProduct, createWeaverseNextClient, runWeaverseComponentLoaders, useThemeSettings, useWeaverseCommerce, useWeaversePageData, useWeaverseRootData };
114
+ /**
115
+ * Build the Hydrogen-like request info shape consumed by the Studio bridge.
116
+ * Duplicate query keys keep the last value, matching `URLSearchParams` iteration
117
+ * assignment and Hydrogen's practical query-object behavior.
118
+ */
119
+ declare function buildWeaverseNextRequestInfo(context?: WeaverseNextRequestContext): WeaverseNextRequestInfo;
120
+
121
+ declare global {
122
+ interface Window {
123
+ __weaverse?: WeaverseNextRuntime;
124
+ __weaverses?: Record<string, WeaverseNextRuntime>;
125
+ }
126
+ }
127
+ declare class WeaverseNextRuntime extends Weaverse {
128
+ pageId: string;
129
+ internal: WeaverseNextRuntimeInternal;
130
+ requestInfo: WeaverseNextRequestInfo;
131
+ isPreviewMode: boolean;
132
+ isRevisionPreview: boolean;
133
+ sectionType?: string;
134
+ translationMap: Record<string, unknown>;
135
+ translationLocale: string;
136
+ translationLanguageId: string;
137
+ constructor(config: WeaverseNextRuntimeConfig);
138
+ extractTranslationSidecar: () => undefined;
139
+ setTranslationSidecar: (map?: Record<string, unknown>, locale?: string, languageId?: string) => void;
140
+ updateTranslation: () => undefined;
141
+ getTranslationChanges: () => undefined;
142
+ }
143
+ declare function createWeaverseNextRuntime(config: WeaverseNextRuntimeConfig): WeaverseNextRuntime;
144
+ declare function bindWeaverseNextStudioRuntime(runtime: WeaverseNextRuntime): boolean;
145
+
146
+ interface WeaverseNextStudioBridgeProps {
147
+ navigate?: WeaverseNextRuntimeInternal['navigate'];
148
+ revalidate?: WeaverseNextRuntimeInternal['revalidate'];
149
+ runtime: WeaverseNextRuntime;
150
+ }
151
+ /** Page-level Studio runtime binder. */
152
+ declare function WeaverseNextStudioBridge(props: WeaverseNextStudioBridgeProps): null;
153
+
154
+ interface WeaverseNextStudioConnectProps {
155
+ context?: WeaverseNextRequestContext;
156
+ storefrontHostname?: string;
157
+ }
158
+ /** Root-level Studio script connector for Next client boundaries. */
159
+ declare function WeaverseNextStudioConnect(props: WeaverseNextStudioConnectProps): null;
160
+
161
+ interface ResolveWeaverseNextStudioScriptSrcOptions {
162
+ framework?: 'hydrogen' | 'next';
163
+ storefrontHostname?: string;
164
+ }
165
+ /**
166
+ * Resolve the Studio script URL from request/search context. v0 intentionally
167
+ * reuses the existing structural Hydrogen bridge script until a concrete Builder
168
+ * incompatibility requires a dedicated Next bundle.
169
+ */
170
+ declare function resolveWeaverseNextStudioScriptSrc(context?: WeaverseNextRequestContext, options?: ResolveWeaverseNextStudioScriptSrcOptions): string | null;
171
+
172
+ interface CreateWeaverseNextThemeSettingsStoreOptions {
173
+ publicEnv?: Record<string, string | undefined>;
174
+ schema?: unknown;
175
+ settings?: Record<string, unknown>;
176
+ }
177
+ /**
178
+ * Small external store shape compatible with the Studio bridge and React's
179
+ * `useSyncExternalStore` contract. The bridge calls `updateThemeSettings` during
180
+ * live theme edits, so keep that method name stable.
181
+ */
182
+ declare function createWeaverseNextThemeSettingsStore(options?: CreateWeaverseNextThemeSettingsStoreOptions): WeaverseNextThemeSettingsStore;
183
+
184
+ export { type CreateWeaverseNextThemeSettingsStoreOptions, type ResolveWeaverseNextStudioScriptSrcOptions, type RunComponentLoadersArgs, WeaverseNextClient, WeaverseNextClientConfig, WeaverseNextCommerceContext, WeaverseNextLoaderData, WeaverseNextProvider, type WeaverseNextProviderProps, WeaverseNextRenderer, type WeaverseNextRendererProps, WeaverseNextRequestContext, WeaverseNextRequestInfo, WeaverseNextRuntime, WeaverseNextRuntimeConfig, WeaverseNextRuntimeInternal, WeaverseNextStudioBridge, type WeaverseNextStudioBridgeProps, WeaverseNextStudioConnect, type WeaverseNextStudioConnectProps, WeaverseNextThemeSettingsStore, bindWeaverseNextStudioRuntime, buildWeaverseNextRequestInfo, createWeaverseNextClient, createWeaverseNextRuntime, createWeaverseNextThemeSettingsStore, resolveWeaverseNextStudioScriptSrc, runWeaverseComponentLoaders, useThemeSettings, useWeaverseCommerce, useWeaversePageData, useWeaverseRootData };