@weaverse/next 0.1.0-alpha.3 → 0.1.0-alpha.5
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 +404 -121
- package/dist/index.d.mts +36 -7
- package/dist/index.d.ts +36 -7
- package/dist/index.js +45 -6
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +44 -7
- package/dist/index.mjs.map +1 -1
- package/dist/server.d.mts +42 -3
- package/dist/server.d.ts +42 -3
- package/dist/server.js +84 -0
- package/dist/server.js.map +1 -1
- package/dist/server.mjs +84 -1
- package/dist/server.mjs.map +1 -1
- package/dist/{types-DvEeLX6L.d.mts → types-DvwaU20C.d.mts} +6 -0
- package/dist/{types-DvEeLX6L.d.ts → types-DvwaU20C.d.ts} +6 -0
- package/package.json +1 -1
package/dist/index.d.mts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { Weaverse } from '@weaverse/react';
|
|
2
2
|
export { isBrowser, isIframe, useChildInstances, useItemInstance, useParentInstance, useWeaverse } from '@weaverse/react';
|
|
3
3
|
export { InspectorGroup, PageType, SchemaType, createSchema } from '@weaverse/schema';
|
|
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-
|
|
5
|
-
export { W as WeaverseCollection, f as WeaverseNextComponent,
|
|
4
|
+
import { d as WeaverseNextClientConfig, c as WeaverseNextClient, e as WeaverseNextCommerceContext, q as WeaverseNextRequestContext, n as WeaverseNextLoaderData, r as WeaverseNextRequestInfo, g as WeaverseNextComponentData, t as WeaverseNextRuntimeInternal, s as WeaverseNextRuntimeConfig, A as WeaverseNextThemeSettingsStore } from './types-DvwaU20C.mjs';
|
|
5
|
+
export { W as WeaverseCollection, f as WeaverseNextComponent, h as WeaverseNextComponentLoaderArgs, i as WeaverseNextComponentProps, l as WeaverseNextI18n, m as WeaverseNextLoadPageInput, o as WeaverseNextPageData, x as WeaverseNextStorefront, B as WeaverseProduct } from './types-DvwaU20C.mjs';
|
|
6
6
|
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
7
7
|
import * as react from 'react';
|
|
8
8
|
import { ReactNode } from 'react';
|
|
@@ -118,6 +118,31 @@ declare const WeaverseNextRenderer: react.MemoExoticComponent<(props: WeaverseNe
|
|
|
118
118
|
*/
|
|
119
119
|
declare function buildWeaverseNextRequestInfo(context?: WeaverseNextRequestContext): WeaverseNextRequestInfo;
|
|
120
120
|
|
|
121
|
+
declare const DEFAULT_REVALIDATE_ENDPOINT = "/api/weaverse/revalidate";
|
|
122
|
+
/**
|
|
123
|
+
* Minimal runtime surface the in-place apply needs. Structural (not the
|
|
124
|
+
* concrete `WeaverseNextRuntime` class) so unit tests can drive it with a
|
|
125
|
+
* plain mock.
|
|
126
|
+
*/
|
|
127
|
+
interface RevalidateItemRuntimeLike {
|
|
128
|
+
itemInstances: Map<string, {
|
|
129
|
+
setData: (update: Record<string, unknown>) => unknown;
|
|
130
|
+
}>;
|
|
131
|
+
}
|
|
132
|
+
/**
|
|
133
|
+
* Studio per-item loader revalidation: POST the unsaved draft item to the
|
|
134
|
+
* app's revalidate route (see `createWeaverseNextRevalidateHandler`) and apply
|
|
135
|
+
* the returned `loaderData` to the live item instance in place.
|
|
136
|
+
*
|
|
137
|
+
* No `router.refresh()` is involved, so the RSC tree is never re-applied — no
|
|
138
|
+
* page remount, no scroll reset, and the draft payload never touches the URL.
|
|
139
|
+
*
|
|
140
|
+
* Throws on any failure (missing route, non-OK response, unknown item) so the
|
|
141
|
+
* Builder Studio bridge can detect the miss and fall back to its legacy
|
|
142
|
+
* refresh-based revalidation for this window.
|
|
143
|
+
*/
|
|
144
|
+
declare function revalidateWeaverseNextItem(runtime: RevalidateItemRuntimeLike, draftItem: WeaverseNextComponentData, endpoint?: string): Promise<void>;
|
|
145
|
+
|
|
121
146
|
declare global {
|
|
122
147
|
interface Window {
|
|
123
148
|
__weaverse?: WeaverseNextRuntime;
|
|
@@ -146,6 +171,7 @@ declare function bindWeaverseNextStudioRuntime(runtime: WeaverseNextRuntime): bo
|
|
|
146
171
|
interface WeaverseNextStudioBridgeProps {
|
|
147
172
|
navigate?: WeaverseNextRuntimeInternal['navigate'];
|
|
148
173
|
revalidate?: WeaverseNextRuntimeInternal['revalidate'];
|
|
174
|
+
revalidateItem?: WeaverseNextRuntimeInternal['revalidateItem'];
|
|
149
175
|
runtime: WeaverseNextRuntime;
|
|
150
176
|
}
|
|
151
177
|
/** Page-level Studio runtime binder. */
|
|
@@ -200,13 +226,11 @@ interface CreateWeaverseNextStudioInternalsOptions {
|
|
|
200
226
|
declare function createWeaverseNextStudioInternals(router: WeaverseNextRouterLike, options?: CreateWeaverseNextStudioInternalsOptions): WeaverseNextStudioInternals;
|
|
201
227
|
|
|
202
228
|
interface ResolveWeaverseNextStudioScriptSrcOptions {
|
|
203
|
-
framework?: 'hydrogen' | 'next';
|
|
204
229
|
storefrontHostname?: string;
|
|
205
230
|
}
|
|
206
231
|
/**
|
|
207
|
-
* Resolve the Studio script URL from request/search context.
|
|
208
|
-
*
|
|
209
|
-
* incompatibility requires a dedicated Next bundle.
|
|
232
|
+
* Resolve the Studio script URL from request/search context. `@weaverse/next`
|
|
233
|
+
* uses the dedicated Next bridge path served by Builder.
|
|
210
234
|
*/
|
|
211
235
|
declare function resolveWeaverseNextStudioScriptSrc(context?: WeaverseNextRequestContext, options?: ResolveWeaverseNextStudioScriptSrcOptions): string | null;
|
|
212
236
|
|
|
@@ -231,6 +255,11 @@ declare function createWeaverseNextThemeSettingsStore(options?: CreateWeaverseNe
|
|
|
231
255
|
*/
|
|
232
256
|
declare function useWeaverseNextStudioInternals(options?: CreateWeaverseNextStudioInternalsOptions): WeaverseNextStudioInternals;
|
|
233
257
|
interface WeaverseNextStudioProps extends CreateWeaverseNextStudioInternalsOptions {
|
|
258
|
+
/**
|
|
259
|
+
* Route the app mounted with `createWeaverseNextRevalidateHandler`.
|
|
260
|
+
* Defaults to `/api/weaverse/revalidate`.
|
|
261
|
+
*/
|
|
262
|
+
revalidateEndpoint?: string;
|
|
234
263
|
runtime: WeaverseNextRuntime;
|
|
235
264
|
}
|
|
236
265
|
/**
|
|
@@ -247,4 +276,4 @@ interface WeaverseNextStudioProps extends CreateWeaverseNextStudioInternalsOptio
|
|
|
247
276
|
*/
|
|
248
277
|
declare function WeaverseNextStudio(props: WeaverseNextStudioProps): react_jsx_runtime.JSX.Element;
|
|
249
278
|
|
|
250
|
-
export { type CreateWeaverseNextStudioInternalsOptions, type CreateWeaverseNextThemeSettingsStoreOptions, type ResolveWeaverseNextStudioScriptSrcOptions, type RunComponentLoadersArgs, WeaverseNextClient, WeaverseNextClientConfig, WeaverseNextCommerceContext, WeaverseNextLoaderData, WeaverseNextProvider, type WeaverseNextProviderProps, WeaverseNextRenderer, type WeaverseNextRendererProps, WeaverseNextRequestContext, WeaverseNextRequestInfo, type WeaverseNextRouterLike, WeaverseNextRuntime, WeaverseNextRuntimeConfig, WeaverseNextRuntimeInternal, WeaverseNextStudio, WeaverseNextStudioBridge, type WeaverseNextStudioBridgeProps, WeaverseNextStudioConnect, type WeaverseNextStudioConnectProps, type WeaverseNextStudioInternals, type WeaverseNextStudioProps, WeaverseNextThemeSettingsStore, bindWeaverseNextStudioRuntime, buildWeaverseNextRequestInfo, createWeaverseNextClient, createWeaverseNextRuntime, createWeaverseNextStudioInternals, createWeaverseNextThemeSettingsStore, resolveWeaverseNextStudioScriptSrc, runWeaverseComponentLoaders, useThemeSettings, useWeaverseCommerce, useWeaverseNextStudioInternals, useWeaversePageData, useWeaverseRootData };
|
|
279
|
+
export { type CreateWeaverseNextStudioInternalsOptions, type CreateWeaverseNextThemeSettingsStoreOptions, DEFAULT_REVALIDATE_ENDPOINT, type ResolveWeaverseNextStudioScriptSrcOptions, type RevalidateItemRuntimeLike, type RunComponentLoadersArgs, WeaverseNextClient, WeaverseNextClientConfig, WeaverseNextCommerceContext, WeaverseNextComponentData, WeaverseNextLoaderData, WeaverseNextProvider, type WeaverseNextProviderProps, WeaverseNextRenderer, type WeaverseNextRendererProps, WeaverseNextRequestContext, WeaverseNextRequestInfo, type WeaverseNextRouterLike, WeaverseNextRuntime, WeaverseNextRuntimeConfig, WeaverseNextRuntimeInternal, WeaverseNextStudio, WeaverseNextStudioBridge, type WeaverseNextStudioBridgeProps, WeaverseNextStudioConnect, type WeaverseNextStudioConnectProps, type WeaverseNextStudioInternals, type WeaverseNextStudioProps, WeaverseNextThemeSettingsStore, bindWeaverseNextStudioRuntime, buildWeaverseNextRequestInfo, createWeaverseNextClient, createWeaverseNextRuntime, createWeaverseNextStudioInternals, createWeaverseNextThemeSettingsStore, resolveWeaverseNextStudioScriptSrc, revalidateWeaverseNextItem, runWeaverseComponentLoaders, useThemeSettings, useWeaverseCommerce, useWeaverseNextStudioInternals, useWeaversePageData, useWeaverseRootData };
|
package/dist/index.d.ts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { Weaverse } from '@weaverse/react';
|
|
2
2
|
export { isBrowser, isIframe, useChildInstances, useItemInstance, useParentInstance, useWeaverse } from '@weaverse/react';
|
|
3
3
|
export { InspectorGroup, PageType, SchemaType, createSchema } from '@weaverse/schema';
|
|
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-
|
|
5
|
-
export { W as WeaverseCollection, f as WeaverseNextComponent,
|
|
4
|
+
import { d as WeaverseNextClientConfig, c as WeaverseNextClient, e as WeaverseNextCommerceContext, q as WeaverseNextRequestContext, n as WeaverseNextLoaderData, r as WeaverseNextRequestInfo, g as WeaverseNextComponentData, t as WeaverseNextRuntimeInternal, s as WeaverseNextRuntimeConfig, A as WeaverseNextThemeSettingsStore } from './types-DvwaU20C.js';
|
|
5
|
+
export { W as WeaverseCollection, f as WeaverseNextComponent, h as WeaverseNextComponentLoaderArgs, i as WeaverseNextComponentProps, l as WeaverseNextI18n, m as WeaverseNextLoadPageInput, o as WeaverseNextPageData, x as WeaverseNextStorefront, B as WeaverseProduct } from './types-DvwaU20C.js';
|
|
6
6
|
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
7
7
|
import * as react from 'react';
|
|
8
8
|
import { ReactNode } from 'react';
|
|
@@ -118,6 +118,31 @@ declare const WeaverseNextRenderer: react.MemoExoticComponent<(props: WeaverseNe
|
|
|
118
118
|
*/
|
|
119
119
|
declare function buildWeaverseNextRequestInfo(context?: WeaverseNextRequestContext): WeaverseNextRequestInfo;
|
|
120
120
|
|
|
121
|
+
declare const DEFAULT_REVALIDATE_ENDPOINT = "/api/weaverse/revalidate";
|
|
122
|
+
/**
|
|
123
|
+
* Minimal runtime surface the in-place apply needs. Structural (not the
|
|
124
|
+
* concrete `WeaverseNextRuntime` class) so unit tests can drive it with a
|
|
125
|
+
* plain mock.
|
|
126
|
+
*/
|
|
127
|
+
interface RevalidateItemRuntimeLike {
|
|
128
|
+
itemInstances: Map<string, {
|
|
129
|
+
setData: (update: Record<string, unknown>) => unknown;
|
|
130
|
+
}>;
|
|
131
|
+
}
|
|
132
|
+
/**
|
|
133
|
+
* Studio per-item loader revalidation: POST the unsaved draft item to the
|
|
134
|
+
* app's revalidate route (see `createWeaverseNextRevalidateHandler`) and apply
|
|
135
|
+
* the returned `loaderData` to the live item instance in place.
|
|
136
|
+
*
|
|
137
|
+
* No `router.refresh()` is involved, so the RSC tree is never re-applied — no
|
|
138
|
+
* page remount, no scroll reset, and the draft payload never touches the URL.
|
|
139
|
+
*
|
|
140
|
+
* Throws on any failure (missing route, non-OK response, unknown item) so the
|
|
141
|
+
* Builder Studio bridge can detect the miss and fall back to its legacy
|
|
142
|
+
* refresh-based revalidation for this window.
|
|
143
|
+
*/
|
|
144
|
+
declare function revalidateWeaverseNextItem(runtime: RevalidateItemRuntimeLike, draftItem: WeaverseNextComponentData, endpoint?: string): Promise<void>;
|
|
145
|
+
|
|
121
146
|
declare global {
|
|
122
147
|
interface Window {
|
|
123
148
|
__weaverse?: WeaverseNextRuntime;
|
|
@@ -146,6 +171,7 @@ declare function bindWeaverseNextStudioRuntime(runtime: WeaverseNextRuntime): bo
|
|
|
146
171
|
interface WeaverseNextStudioBridgeProps {
|
|
147
172
|
navigate?: WeaverseNextRuntimeInternal['navigate'];
|
|
148
173
|
revalidate?: WeaverseNextRuntimeInternal['revalidate'];
|
|
174
|
+
revalidateItem?: WeaverseNextRuntimeInternal['revalidateItem'];
|
|
149
175
|
runtime: WeaverseNextRuntime;
|
|
150
176
|
}
|
|
151
177
|
/** Page-level Studio runtime binder. */
|
|
@@ -200,13 +226,11 @@ interface CreateWeaverseNextStudioInternalsOptions {
|
|
|
200
226
|
declare function createWeaverseNextStudioInternals(router: WeaverseNextRouterLike, options?: CreateWeaverseNextStudioInternalsOptions): WeaverseNextStudioInternals;
|
|
201
227
|
|
|
202
228
|
interface ResolveWeaverseNextStudioScriptSrcOptions {
|
|
203
|
-
framework?: 'hydrogen' | 'next';
|
|
204
229
|
storefrontHostname?: string;
|
|
205
230
|
}
|
|
206
231
|
/**
|
|
207
|
-
* Resolve the Studio script URL from request/search context.
|
|
208
|
-
*
|
|
209
|
-
* incompatibility requires a dedicated Next bundle.
|
|
232
|
+
* Resolve the Studio script URL from request/search context. `@weaverse/next`
|
|
233
|
+
* uses the dedicated Next bridge path served by Builder.
|
|
210
234
|
*/
|
|
211
235
|
declare function resolveWeaverseNextStudioScriptSrc(context?: WeaverseNextRequestContext, options?: ResolveWeaverseNextStudioScriptSrcOptions): string | null;
|
|
212
236
|
|
|
@@ -231,6 +255,11 @@ declare function createWeaverseNextThemeSettingsStore(options?: CreateWeaverseNe
|
|
|
231
255
|
*/
|
|
232
256
|
declare function useWeaverseNextStudioInternals(options?: CreateWeaverseNextStudioInternalsOptions): WeaverseNextStudioInternals;
|
|
233
257
|
interface WeaverseNextStudioProps extends CreateWeaverseNextStudioInternalsOptions {
|
|
258
|
+
/**
|
|
259
|
+
* Route the app mounted with `createWeaverseNextRevalidateHandler`.
|
|
260
|
+
* Defaults to `/api/weaverse/revalidate`.
|
|
261
|
+
*/
|
|
262
|
+
revalidateEndpoint?: string;
|
|
234
263
|
runtime: WeaverseNextRuntime;
|
|
235
264
|
}
|
|
236
265
|
/**
|
|
@@ -247,4 +276,4 @@ interface WeaverseNextStudioProps extends CreateWeaverseNextStudioInternalsOptio
|
|
|
247
276
|
*/
|
|
248
277
|
declare function WeaverseNextStudio(props: WeaverseNextStudioProps): react_jsx_runtime.JSX.Element;
|
|
249
278
|
|
|
250
|
-
export { type CreateWeaverseNextStudioInternalsOptions, type CreateWeaverseNextThemeSettingsStoreOptions, type ResolveWeaverseNextStudioScriptSrcOptions, type RunComponentLoadersArgs, WeaverseNextClient, WeaverseNextClientConfig, WeaverseNextCommerceContext, WeaverseNextLoaderData, WeaverseNextProvider, type WeaverseNextProviderProps, WeaverseNextRenderer, type WeaverseNextRendererProps, WeaverseNextRequestContext, WeaverseNextRequestInfo, type WeaverseNextRouterLike, WeaverseNextRuntime, WeaverseNextRuntimeConfig, WeaverseNextRuntimeInternal, WeaverseNextStudio, WeaverseNextStudioBridge, type WeaverseNextStudioBridgeProps, WeaverseNextStudioConnect, type WeaverseNextStudioConnectProps, type WeaverseNextStudioInternals, type WeaverseNextStudioProps, WeaverseNextThemeSettingsStore, bindWeaverseNextStudioRuntime, buildWeaverseNextRequestInfo, createWeaverseNextClient, createWeaverseNextRuntime, createWeaverseNextStudioInternals, createWeaverseNextThemeSettingsStore, resolveWeaverseNextStudioScriptSrc, runWeaverseComponentLoaders, useThemeSettings, useWeaverseCommerce, useWeaverseNextStudioInternals, useWeaversePageData, useWeaverseRootData };
|
|
279
|
+
export { type CreateWeaverseNextStudioInternalsOptions, type CreateWeaverseNextThemeSettingsStoreOptions, DEFAULT_REVALIDATE_ENDPOINT, type ResolveWeaverseNextStudioScriptSrcOptions, type RevalidateItemRuntimeLike, type RunComponentLoadersArgs, WeaverseNextClient, WeaverseNextClientConfig, WeaverseNextCommerceContext, WeaverseNextComponentData, WeaverseNextLoaderData, WeaverseNextProvider, type WeaverseNextProviderProps, WeaverseNextRenderer, type WeaverseNextRendererProps, WeaverseNextRequestContext, WeaverseNextRequestInfo, type WeaverseNextRouterLike, WeaverseNextRuntime, WeaverseNextRuntimeConfig, WeaverseNextRuntimeInternal, WeaverseNextStudio, WeaverseNextStudioBridge, type WeaverseNextStudioBridgeProps, WeaverseNextStudioConnect, type WeaverseNextStudioConnectProps, type WeaverseNextStudioInternals, type WeaverseNextStudioProps, WeaverseNextThemeSettingsStore, bindWeaverseNextStudioRuntime, buildWeaverseNextRequestInfo, createWeaverseNextClient, createWeaverseNextRuntime, createWeaverseNextStudioInternals, createWeaverseNextThemeSettingsStore, resolveWeaverseNextStudioScriptSrc, revalidateWeaverseNextItem, runWeaverseComponentLoaders, useThemeSettings, useWeaverseCommerce, useWeaverseNextStudioInternals, useWeaversePageData, useWeaverseRootData };
|
package/dist/index.js
CHANGED
|
@@ -464,6 +464,7 @@ function createWeaverseNextRuntime(config) {
|
|
|
464
464
|
if (!(existing.isDesignMode || nextIsDesignMode)) {
|
|
465
465
|
existing.setProjectData(page);
|
|
466
466
|
}
|
|
467
|
+
existing.__weaverseNextLatestData = page;
|
|
467
468
|
existing.dataContext = resolveDataContext(config);
|
|
468
469
|
existing.requestInfo = requestInfo;
|
|
469
470
|
existing.projectId = resolveProjectId(config.client, config.data, page.id);
|
|
@@ -489,6 +490,7 @@ function createWeaverseNextRuntime(config) {
|
|
|
489
490
|
}
|
|
490
491
|
let runtime = new WeaverseNextRuntime(config);
|
|
491
492
|
runtime.__weaverseNextRequestKey = requestKey;
|
|
493
|
+
runtime.__weaverseNextLatestData = page;
|
|
492
494
|
registerRuntime(runtime);
|
|
493
495
|
return runtime;
|
|
494
496
|
}
|
|
@@ -507,16 +509,39 @@ function bindWeaverseNextStudioRuntime(runtime) {
|
|
|
507
509
|
return true;
|
|
508
510
|
}
|
|
509
511
|
studio.refreshStudio?.({
|
|
510
|
-
data: runtime.data,
|
|
512
|
+
data: boundRuntime.__weaverseNextLatestData ?? runtime.data,
|
|
511
513
|
pageId: runtime.pageId,
|
|
512
514
|
requestInfo: runtime.requestInfo
|
|
513
515
|
});
|
|
514
516
|
return true;
|
|
515
517
|
}
|
|
518
|
+
|
|
519
|
+
// src/revalidate-item.ts
|
|
520
|
+
var DEFAULT_REVALIDATE_ENDPOINT = "/api/weaverse/revalidate";
|
|
521
|
+
async function revalidateWeaverseNextItem(runtime, draftItem, endpoint = DEFAULT_REVALIDATE_ENDPOINT) {
|
|
522
|
+
let instance = runtime.itemInstances.get(draftItem.id);
|
|
523
|
+
if (!instance) {
|
|
524
|
+
throw new Error(
|
|
525
|
+
`[weaverse-next] No live item instance for "${draftItem.id}".`
|
|
526
|
+
);
|
|
527
|
+
}
|
|
528
|
+
let response = await fetch(endpoint, {
|
|
529
|
+
method: "POST",
|
|
530
|
+
headers: { "Content-Type": "application/json" },
|
|
531
|
+
body: JSON.stringify({ draftItem })
|
|
532
|
+
});
|
|
533
|
+
if (!response.ok) {
|
|
534
|
+
throw new Error(
|
|
535
|
+
`[weaverse-next] Revalidate endpoint responded ${response.status}.`
|
|
536
|
+
);
|
|
537
|
+
}
|
|
538
|
+
let { loaderData } = await response.json();
|
|
539
|
+
instance.setData({ loaderData: loaderData ?? null });
|
|
540
|
+
}
|
|
516
541
|
var STUDIO_BIND_RETRY_INTERVAL_MS = 50;
|
|
517
542
|
var STUDIO_BIND_MAX_ATTEMPTS = 100;
|
|
518
543
|
function WeaverseNextStudioBridge(props) {
|
|
519
|
-
let { runtime, navigate, revalidate } = props;
|
|
544
|
+
let { runtime, navigate, revalidate, revalidateItem } = props;
|
|
520
545
|
let lastRuntimeRef = react$1.useRef(runtime);
|
|
521
546
|
let lastRuntimeDataRef = react$1.useRef(runtime.data);
|
|
522
547
|
let lastRequestInfoRef = react$1.useRef(runtime.requestInfo);
|
|
@@ -527,6 +552,9 @@ function WeaverseNextStudioBridge(props) {
|
|
|
527
552
|
if (revalidate) {
|
|
528
553
|
runtime.internal.revalidate = revalidate;
|
|
529
554
|
}
|
|
555
|
+
if (revalidateItem) {
|
|
556
|
+
runtime.internal.revalidateItem = revalidateItem;
|
|
557
|
+
}
|
|
530
558
|
if (bindWeaverseNextStudioRuntime(runtime) || !runtime.isDesignMode) {
|
|
531
559
|
return;
|
|
532
560
|
}
|
|
@@ -538,7 +566,7 @@ function WeaverseNextStudioBridge(props) {
|
|
|
538
566
|
}
|
|
539
567
|
}, STUDIO_BIND_RETRY_INTERVAL_MS);
|
|
540
568
|
return () => window.clearInterval(interval);
|
|
541
|
-
}, [runtime, navigate, revalidate]);
|
|
569
|
+
}, [runtime, navigate, revalidate, revalidateItem]);
|
|
542
570
|
react$1.useEffect(() => {
|
|
543
571
|
if (lastRuntimeRef.current !== runtime) {
|
|
544
572
|
lastRuntimeRef.current = runtime;
|
|
@@ -591,13 +619,23 @@ function useWeaverseNextStudioInternals(options) {
|
|
|
591
619
|
return ref.current.internals;
|
|
592
620
|
}
|
|
593
621
|
function WeaverseNextStudio(props) {
|
|
594
|
-
let { runtime, replace } = props;
|
|
622
|
+
let { runtime, replace, revalidateEndpoint } = props;
|
|
595
623
|
let { navigate, revalidate } = useWeaverseNextStudioInternals({ replace });
|
|
624
|
+
let endpoint = revalidateEndpoint ?? DEFAULT_REVALIDATE_ENDPOINT;
|
|
625
|
+
let revalidateItemRef = react$1.useRef(null);
|
|
626
|
+
if (revalidateItemRef.current?.endpoint !== endpoint || revalidateItemRef.current.runtime !== runtime) {
|
|
627
|
+
revalidateItemRef.current = {
|
|
628
|
+
endpoint,
|
|
629
|
+
revalidateItem: (draftItem) => revalidateWeaverseNextItem(runtime, draftItem, endpoint),
|
|
630
|
+
runtime
|
|
631
|
+
};
|
|
632
|
+
}
|
|
596
633
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
597
634
|
WeaverseNextStudioBridge,
|
|
598
635
|
{
|
|
599
636
|
navigate,
|
|
600
637
|
revalidate,
|
|
638
|
+
revalidateItem: revalidateItemRef.current.revalidateItem,
|
|
601
639
|
runtime
|
|
602
640
|
}
|
|
603
641
|
);
|
|
@@ -700,10 +738,9 @@ function resolveWeaverseNextStudioScriptSrc(context, options = {}) {
|
|
|
700
738
|
if (!isTrustedStudioOrigin(origin, storefrontHostname)) {
|
|
701
739
|
return null;
|
|
702
740
|
}
|
|
703
|
-
let framework = options.framework ?? "hydrogen";
|
|
704
741
|
let bundle = isDesignMode ? "index.js" : "preview.js";
|
|
705
742
|
let version = last(searchParams, "weaverseVersion");
|
|
706
|
-
let url = `${origin}/static/studio/${
|
|
743
|
+
let url = `${origin}/static/studio/next/${bundle}`;
|
|
707
744
|
return version ? `${url}?v=${encodeURIComponent(version)}` : url;
|
|
708
745
|
}
|
|
709
746
|
|
|
@@ -774,6 +811,7 @@ Object.defineProperty(exports, "createSchema", {
|
|
|
774
811
|
enumerable: true,
|
|
775
812
|
get: function () { return schema.createSchema; }
|
|
776
813
|
});
|
|
814
|
+
exports.DEFAULT_REVALIDATE_ENDPOINT = DEFAULT_REVALIDATE_ENDPOINT;
|
|
777
815
|
exports.WeaverseNextProvider = WeaverseNextProvider;
|
|
778
816
|
exports.WeaverseNextRenderer = WeaverseNextRenderer;
|
|
779
817
|
exports.WeaverseNextRuntime = WeaverseNextRuntime;
|
|
@@ -787,6 +825,7 @@ exports.createWeaverseNextRuntime = createWeaverseNextRuntime;
|
|
|
787
825
|
exports.createWeaverseNextStudioInternals = createWeaverseNextStudioInternals;
|
|
788
826
|
exports.createWeaverseNextThemeSettingsStore = createWeaverseNextThemeSettingsStore;
|
|
789
827
|
exports.resolveWeaverseNextStudioScriptSrc = resolveWeaverseNextStudioScriptSrc;
|
|
828
|
+
exports.revalidateWeaverseNextItem = revalidateWeaverseNextItem;
|
|
790
829
|
exports.runWeaverseComponentLoaders = runWeaverseComponentLoaders;
|
|
791
830
|
exports.useThemeSettings = useThemeSettings;
|
|
792
831
|
exports.useWeaverseCommerce = useWeaverseCommerce;
|