@weaverse/next 1.0.1 → 1.0.2
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/client-boundary.js +929 -1293
- package/dist/client-boundary.js.map +1 -1
- package/dist/client-boundary.mjs +902 -1280
- package/dist/client-boundary.mjs.map +1 -1
- package/dist/index.js +265 -576
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +139 -175
- package/dist/index.mjs.map +1 -1
- package/dist/seo-BCFNGChj.js +319 -0
- package/dist/seo-BCFNGChj.js.map +1 -0
- package/dist/seo-C-S2viuI.mjs +242 -0
- package/dist/seo-C-S2viuI.mjs.map +1 -0
- package/dist/server.js +626 -1076
- package/dist/server.js.map +1 -1
- package/dist/server.mjs +620 -803
- package/dist/server.mjs.map +1 -1
- package/dist/types/item.d.ts +1 -1
- package/dist/types/item.d.ts.map +1 -1
- package/dist/types/revalidate-item.d.ts +1 -1
- package/dist/types/revalidate-item.d.ts.map +1 -1
- package/dist/types/runtime.d.ts.map +1 -1
- package/dist/types/translation-store.d.ts.map +1 -1
- package/dist/types/types.d.ts +6 -1
- package/dist/types/types.d.ts.map +1 -1
- package/package.json +5 -5
- package/src/types.ts +6 -0
- package/dist/chunk-OSC5HR5V.mjs +0 -328
- package/dist/chunk-OSC5HR5V.mjs.map +0 -1
package/dist/index.js
CHANGED
|
@@ -1,648 +1,337 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
// src/index.ts
|
|
7
|
-
|
|
8
|
-
// src/utils.ts
|
|
9
|
-
function generateDataFromSchema(schema) {
|
|
10
|
-
let data = {};
|
|
11
|
-
if (!schema) {
|
|
12
|
-
return data;
|
|
13
|
-
}
|
|
14
|
-
let groups = schema.settings ?? schema.inspector ?? [];
|
|
15
|
-
for (let group of groups) {
|
|
16
|
-
for (let input of group?.inputs ?? []) {
|
|
17
|
-
let { name, defaultValue } = input;
|
|
18
|
-
if (name && defaultValue !== null && defaultValue !== void 0) {
|
|
19
|
-
data[name] = defaultValue;
|
|
20
|
-
}
|
|
21
|
-
}
|
|
22
|
-
}
|
|
23
|
-
return data;
|
|
24
|
-
}
|
|
25
|
-
var isBrowser = typeof window !== "undefined";
|
|
26
|
-
var isIframe = isBrowser && window.top !== window.self;
|
|
27
|
-
|
|
28
|
-
// src/loader.ts
|
|
29
|
-
function isItemNode(node) {
|
|
30
|
-
return typeof node === "object" && node !== null && typeof node.type === "string";
|
|
31
|
-
}
|
|
32
|
-
function cloneItem(item) {
|
|
33
|
-
return {
|
|
34
|
-
...item,
|
|
35
|
-
children: Array.isArray(item.children) ? item.children.map(
|
|
36
|
-
(child) => isItemNode(child) ? cloneItem(child) : { ...child }
|
|
37
|
-
) : item.children
|
|
38
|
-
};
|
|
39
|
-
}
|
|
40
|
-
async function runWeaverseComponentLoaders(args) {
|
|
41
|
-
let { client, context, commerce } = args;
|
|
42
|
-
let sourceData = args.data ?? client.data;
|
|
43
|
-
if (!sourceData) {
|
|
44
|
-
return null;
|
|
45
|
-
}
|
|
46
|
-
if (!sourceData.page.items.length) {
|
|
47
|
-
return sourceData;
|
|
48
|
-
}
|
|
49
|
-
let data = {
|
|
50
|
-
...sourceData,
|
|
51
|
-
page: {
|
|
52
|
-
...sourceData.page,
|
|
53
|
-
items: sourceData.page.items.map(cloneItem)
|
|
54
|
-
}
|
|
55
|
-
};
|
|
56
|
-
let items = data.page.items;
|
|
57
|
-
let componentMap = /* @__PURE__ */ new Map();
|
|
58
|
-
for (let component of client.components) {
|
|
59
|
-
if (component?.schema?.type) {
|
|
60
|
-
componentMap.set(component.schema.type, component);
|
|
61
|
-
}
|
|
62
|
-
}
|
|
63
|
-
let visited = /* @__PURE__ */ new Set();
|
|
64
|
-
let resolvedContext = context ?? client.requestContext;
|
|
65
|
-
let resolvedCommerce = commerce ?? client.commerce;
|
|
66
|
-
let resolvedWeaverse = resolvedCommerce === client.commerce ? client : {
|
|
67
|
-
...client,
|
|
68
|
-
commerce: resolvedCommerce,
|
|
69
|
-
storefront: resolvedCommerce?.storefront
|
|
70
|
-
};
|
|
71
|
-
async function walk(nodes) {
|
|
72
|
-
for (let item of nodes) {
|
|
73
|
-
if (!item || visited.has(item.id)) {
|
|
74
|
-
continue;
|
|
75
|
-
}
|
|
76
|
-
visited.add(item.id);
|
|
77
|
-
let component = componentMap.get(item.type);
|
|
78
|
-
if (component?.loader) {
|
|
79
|
-
try {
|
|
80
|
-
item.loaderData = await component.loader({
|
|
81
|
-
data: { ...generateDataFromSchema(component.schema), ...item.data },
|
|
82
|
-
weaverse: resolvedWeaverse,
|
|
83
|
-
context: resolvedContext,
|
|
84
|
-
commerce: resolvedCommerce
|
|
85
|
-
});
|
|
86
|
-
} catch (error) {
|
|
87
|
-
console.warn("\u274C Item loader run failed.", item.type, item.id, error);
|
|
88
|
-
}
|
|
89
|
-
}
|
|
90
|
-
let children = item.children;
|
|
91
|
-
if (Array.isArray(children)) {
|
|
92
|
-
let inlineChildren = children.filter(
|
|
93
|
-
isItemNode
|
|
94
|
-
);
|
|
95
|
-
if (inlineChildren.length) {
|
|
96
|
-
await walk(inlineChildren);
|
|
97
|
-
}
|
|
98
|
-
}
|
|
99
|
-
}
|
|
100
|
-
}
|
|
101
|
-
await walk(items);
|
|
102
|
-
return data;
|
|
103
|
-
}
|
|
104
|
-
|
|
105
|
-
// src/request-info.ts
|
|
106
|
-
function toUrl(value) {
|
|
107
|
-
return typeof value === "string" ? new URL(value, "http://localhost") : value;
|
|
108
|
-
}
|
|
109
|
-
function getSearchParamsFromContext(context) {
|
|
110
|
-
if (context?.searchParams) {
|
|
111
|
-
return new URLSearchParams(context.searchParams);
|
|
112
|
-
}
|
|
113
|
-
if (context?.url) {
|
|
114
|
-
let url = toUrl(context.url);
|
|
115
|
-
return new URLSearchParams(url.searchParams);
|
|
116
|
-
}
|
|
117
|
-
return new URLSearchParams();
|
|
118
|
-
}
|
|
119
|
-
function withPathPrefix(pathname, i18n) {
|
|
120
|
-
let raw = typeof i18n?.pathPrefix === "string" ? i18n.pathPrefix : "";
|
|
121
|
-
let segments = raw.split("/").filter(Boolean);
|
|
122
|
-
let prefix = segments.length > 0 ? `/${segments.join("/")}` : "";
|
|
123
|
-
if (prefix === "" || pathname === prefix || pathname.startsWith(`${prefix}/`)) {
|
|
124
|
-
return pathname;
|
|
125
|
-
}
|
|
126
|
-
return pathname === "/" ? prefix : `${prefix}${pathname}`;
|
|
127
|
-
}
|
|
128
|
-
function getPathnameFromContext(context) {
|
|
129
|
-
if (context?.pathname) {
|
|
130
|
-
return withPathPrefix(context.pathname, context.i18n);
|
|
131
|
-
}
|
|
132
|
-
if (context?.url) {
|
|
133
|
-
let url = toUrl(context.url);
|
|
134
|
-
return withPathPrefix(url.pathname || "/", context.i18n);
|
|
135
|
-
}
|
|
136
|
-
return "/";
|
|
137
|
-
}
|
|
138
|
-
function coerceQueryValue(value) {
|
|
139
|
-
if (value === "true") {
|
|
140
|
-
return true;
|
|
141
|
-
}
|
|
142
|
-
if (value === "false") {
|
|
143
|
-
return false;
|
|
144
|
-
}
|
|
145
|
-
return value;
|
|
146
|
-
}
|
|
147
|
-
function toQueryRecord(searchParams) {
|
|
148
|
-
let queries = {};
|
|
149
|
-
for (let [key, value] of searchParams.entries()) {
|
|
150
|
-
queries[key] = coerceQueryValue(value);
|
|
151
|
-
}
|
|
152
|
-
return queries;
|
|
153
|
-
}
|
|
154
|
-
var TRANSIENT_STUDIO_PARAMS = /* @__PURE__ */ new Set([
|
|
155
|
-
"weaverseDraftItem",
|
|
156
|
-
// Legacy name from the original design-mode draft-item spike. Keep it out of
|
|
157
|
-
// runtime requestInfo too, in case an older Builder bundle is in front of a
|
|
158
|
-
// newer Next storefront.
|
|
159
|
-
"__weaverseDraftItem"
|
|
160
|
-
]);
|
|
161
|
-
function getRequestInfoSearchParams(context) {
|
|
162
|
-
let searchParams = new URLSearchParams(getSearchParamsFromContext(context));
|
|
163
|
-
for (let key of TRANSIENT_STUDIO_PARAMS) {
|
|
164
|
-
searchParams.delete(key);
|
|
165
|
-
}
|
|
166
|
-
return searchParams;
|
|
167
|
-
}
|
|
168
|
-
function buildWeaverseNextRequestInfo(context) {
|
|
169
|
-
let searchParams = getRequestInfoSearchParams(context);
|
|
170
|
-
let search = searchParams.toString();
|
|
171
|
-
return {
|
|
172
|
-
pathname: getPathnameFromContext(context),
|
|
173
|
-
search: search ? `?${search}` : "",
|
|
174
|
-
queries: toQueryRecord(searchParams),
|
|
175
|
-
...context?.i18n ? { i18n: context.i18n } : {},
|
|
176
|
-
...context?.pageType ? { pageType: context.pageType } : {},
|
|
177
|
-
...context?.handle ? { handle: context.handle } : {}
|
|
178
|
-
};
|
|
179
|
-
}
|
|
180
|
-
var DEFAULT_REVALIDATE_ENDPOINT = "/api/weaverse/revalidate";
|
|
181
|
-
var MAX_ROUTE_CONTEXT_HANDLE_LENGTH = 512;
|
|
182
|
-
var DENIED_ROUTE_CONTEXT_PARAMS = [
|
|
183
|
-
"weaverseprojectid",
|
|
184
|
-
"weaversehost",
|
|
185
|
-
"weaverseapikey",
|
|
186
|
-
"weaverseapibase",
|
|
187
|
-
"weaversepublicapibase",
|
|
188
|
-
"weaverseversion",
|
|
189
|
-
"projectid",
|
|
190
|
-
"weaversedraftitem",
|
|
191
|
-
"__weaversedraftitem",
|
|
192
|
-
"_rsc"
|
|
193
|
-
];
|
|
194
|
-
var ROUTE_CONTEXT_I18N_KEYS = [
|
|
195
|
-
"country",
|
|
196
|
-
"label",
|
|
197
|
-
"language",
|
|
198
|
-
"locale",
|
|
199
|
-
"pathPrefix"
|
|
200
|
-
];
|
|
201
|
-
function sanitizeRouteContextSearch(search) {
|
|
202
|
-
let params = new URLSearchParams(search);
|
|
203
|
-
let denied = new Set(DENIED_ROUTE_CONTEXT_PARAMS);
|
|
204
|
-
for (let key of [...new Set(params.keys())]) {
|
|
205
|
-
if (denied.has(key.toLowerCase())) {
|
|
206
|
-
params.delete(key);
|
|
207
|
-
}
|
|
208
|
-
}
|
|
209
|
-
let serialized = params.toString();
|
|
210
|
-
return serialized ? `?${serialized}` : "";
|
|
211
|
-
}
|
|
212
|
-
function buildWeaverseNextRevalidateRouteContext(requestInfo) {
|
|
213
|
-
if (!requestInfo || typeof requestInfo.pathname !== "string" || !requestInfo.pathname) {
|
|
214
|
-
return;
|
|
215
|
-
}
|
|
216
|
-
let routeContext = {
|
|
217
|
-
pathname: requestInfo.pathname,
|
|
218
|
-
search: sanitizeRouteContextSearch(requestInfo.search ?? "")
|
|
219
|
-
};
|
|
220
|
-
let { i18n } = requestInfo;
|
|
221
|
-
if (i18n && typeof i18n === "object") {
|
|
222
|
-
let picked = {};
|
|
223
|
-
for (let key of ROUTE_CONTEXT_I18N_KEYS) {
|
|
224
|
-
let value = i18n[key];
|
|
225
|
-
if (typeof value === "string") {
|
|
226
|
-
picked[key] = value;
|
|
227
|
-
}
|
|
228
|
-
}
|
|
229
|
-
if (Object.keys(picked).length) {
|
|
230
|
-
routeContext.i18n = picked;
|
|
231
|
-
}
|
|
232
|
-
}
|
|
233
|
-
if (requestInfo.pageType && schema.PageTypeSchema.safeParse(requestInfo.pageType).success) {
|
|
234
|
-
routeContext.pageType = requestInfo.pageType;
|
|
235
|
-
}
|
|
236
|
-
if (typeof requestInfo.handle === "string" && requestInfo.handle && requestInfo.handle.length <= MAX_ROUTE_CONTEXT_HANDLE_LENGTH) {
|
|
237
|
-
routeContext.handle = requestInfo.handle;
|
|
238
|
-
}
|
|
239
|
-
return routeContext;
|
|
240
|
-
}
|
|
241
|
-
async function revalidateWeaverseNextItem(runtime, draftItem, endpoint = DEFAULT_REVALIDATE_ENDPOINT) {
|
|
242
|
-
let instance = runtime.itemInstances.get(draftItem.id);
|
|
243
|
-
if (!instance) {
|
|
244
|
-
throw new Error(
|
|
245
|
-
`[weaverse-next] No live item instance for "${draftItem.id}".`
|
|
246
|
-
);
|
|
247
|
-
}
|
|
248
|
-
let routeContext = buildWeaverseNextRevalidateRouteContext(
|
|
249
|
-
runtime.requestInfo
|
|
250
|
-
);
|
|
251
|
-
let body = routeContext ? { draftItem, routeContext } : { draftItem };
|
|
252
|
-
let response = await fetch(endpoint, {
|
|
253
|
-
method: "POST",
|
|
254
|
-
headers: { "Content-Type": "application/json" },
|
|
255
|
-
body: JSON.stringify(body)
|
|
256
|
-
});
|
|
257
|
-
if (!response.ok) {
|
|
258
|
-
throw new Error(
|
|
259
|
-
`[weaverse-next] Revalidate endpoint responded ${response.status}.`
|
|
260
|
-
);
|
|
261
|
-
}
|
|
262
|
-
let { loaderData } = await response.json();
|
|
263
|
-
instance.setData({ loaderData: loaderData ?? null });
|
|
264
|
-
}
|
|
265
|
-
|
|
266
|
-
// src/seo.ts
|
|
267
|
-
function hasOpenGraphContent(seo) {
|
|
268
|
-
return Boolean(seo?.title || seo?.description || seo?.image || seo?.type);
|
|
269
|
-
}
|
|
270
|
-
function hasTwitterContent(seo) {
|
|
271
|
-
return Boolean(seo?.title || seo?.description || seo?.image || seo?.cardType);
|
|
272
|
-
}
|
|
273
|
-
function normalizeTwitterCard(cardType) {
|
|
274
|
-
return cardType === "summary_large_image" ? "summary_large_image" : "summary";
|
|
275
|
-
}
|
|
276
|
-
function normalizeOpenGraphType(type) {
|
|
277
|
-
if (type === "article" || type === "profile" || type === "video.other") {
|
|
278
|
-
return type;
|
|
279
|
-
}
|
|
280
|
-
return "website";
|
|
281
|
-
}
|
|
282
|
-
function formatWeaverseNextSeoMetadata(seo) {
|
|
283
|
-
let index = seo?.robots?.index !== false;
|
|
284
|
-
let follow = seo?.robots?.follow !== false;
|
|
285
|
-
let metadata = {
|
|
286
|
-
robots: { index, follow }
|
|
287
|
-
};
|
|
288
|
-
if (!seo) {
|
|
289
|
-
return metadata;
|
|
290
|
-
}
|
|
291
|
-
if (seo.title) {
|
|
292
|
-
metadata.title = seo.title;
|
|
293
|
-
}
|
|
294
|
-
if (seo.description) {
|
|
295
|
-
metadata.description = seo.description;
|
|
296
|
-
}
|
|
297
|
-
if (seo.keywords) {
|
|
298
|
-
metadata.keywords = seo.keywords;
|
|
299
|
-
}
|
|
300
|
-
if (seo.canonicalUrl) {
|
|
301
|
-
metadata.alternates = { canonical: seo.canonicalUrl };
|
|
302
|
-
}
|
|
303
|
-
let openGraph = seo.openGraph;
|
|
304
|
-
if (hasOpenGraphContent(openGraph)) {
|
|
305
|
-
metadata.openGraph = {
|
|
306
|
-
title: openGraph?.title,
|
|
307
|
-
description: openGraph?.description,
|
|
308
|
-
images: openGraph?.image ? [openGraph.image] : void 0,
|
|
309
|
-
type: normalizeOpenGraphType(openGraph?.type)
|
|
310
|
-
};
|
|
311
|
-
}
|
|
312
|
-
let twitter = seo.twitter;
|
|
313
|
-
if (hasTwitterContent(twitter)) {
|
|
314
|
-
metadata.twitter = {
|
|
315
|
-
card: normalizeTwitterCard(twitter?.cardType),
|
|
316
|
-
title: twitter?.title,
|
|
317
|
-
description: twitter?.description,
|
|
318
|
-
images: twitter?.image ? [twitter.image] : void 0
|
|
319
|
-
};
|
|
320
|
-
}
|
|
321
|
-
return metadata;
|
|
322
|
-
}
|
|
323
|
-
function getWeaverseNextSeoMetadata(data) {
|
|
324
|
-
if (!data) {
|
|
325
|
-
return formatWeaverseNextSeoMetadata(null);
|
|
326
|
-
}
|
|
327
|
-
let page = "items" in data && "id" in data ? data : data.page ?? null;
|
|
328
|
-
return formatWeaverseNextSeoMetadata(page?.seo ?? null);
|
|
329
|
-
}
|
|
330
|
-
|
|
331
|
-
// src/studio-router.ts
|
|
1
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
|
+
const require_seo = require("./seo-BCFNGChj.js");
|
|
3
|
+
let __client_boundary_js = require("./client-boundary.js");
|
|
4
|
+
//#region src/studio-router.ts
|
|
332
5
|
function shouldResetScroll(options) {
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
}
|
|
336
|
-
return !options.preventScrollReset;
|
|
6
|
+
if (!options || typeof options !== "object") return true;
|
|
7
|
+
return !options.preventScrollReset;
|
|
337
8
|
}
|
|
338
9
|
function createWeaverseNextStudioInternals(router, options = {}) {
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
// src/studio-script-src.ts
|
|
355
|
-
var TRUSTED_STUDIO_DOMAINS = ["weaverse.io", "weaverse.dev"];
|
|
10
|
+
return {
|
|
11
|
+
navigate: (to, navigateOptions) => {
|
|
12
|
+
let scroll = shouldResetScroll(navigateOptions);
|
|
13
|
+
if (options.replace) router.replace(to, { scroll });
|
|
14
|
+
else router.push(to, { scroll });
|
|
15
|
+
},
|
|
16
|
+
revalidate: () => {
|
|
17
|
+
router.refresh();
|
|
18
|
+
}
|
|
19
|
+
};
|
|
20
|
+
}
|
|
21
|
+
//#endregion
|
|
22
|
+
//#region src/studio-script-src.ts
|
|
23
|
+
const TRUSTED_STUDIO_DOMAINS = ["weaverse.io", "weaverse.dev"];
|
|
356
24
|
function isLoopbackHostname(hostname) {
|
|
357
|
-
|
|
25
|
+
return hostname === "localhost" || hostname === "127.0.0.1" || hostname.endsWith(".localhost");
|
|
358
26
|
}
|
|
359
27
|
function normalizeOrigin(value) {
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
return null;
|
|
367
|
-
}
|
|
28
|
+
if (!value) return null;
|
|
29
|
+
try {
|
|
30
|
+
return new URL(value).origin;
|
|
31
|
+
} catch {
|
|
32
|
+
return null;
|
|
33
|
+
}
|
|
368
34
|
}
|
|
369
35
|
function isTrustedStudioOrigin(origin, storefrontHostname) {
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
if (protocol !== "https:") {
|
|
381
|
-
return false;
|
|
382
|
-
}
|
|
383
|
-
return TRUSTED_STUDIO_DOMAINS.some(
|
|
384
|
-
(domain) => hostname === domain || hostname.endsWith(`.${domain}`)
|
|
385
|
-
);
|
|
36
|
+
let parsed;
|
|
37
|
+
try {
|
|
38
|
+
parsed = new URL(origin);
|
|
39
|
+
} catch {
|
|
40
|
+
return false;
|
|
41
|
+
}
|
|
42
|
+
let { hostname, protocol } = parsed;
|
|
43
|
+
if (isLoopbackHostname(storefrontHostname) && isLoopbackHostname(hostname)) return protocol === "http:" || protocol === "https:";
|
|
44
|
+
if (protocol !== "https:") return false;
|
|
45
|
+
return TRUSTED_STUDIO_DOMAINS.some((domain) => hostname === domain || hostname.endsWith(`.${domain}`));
|
|
386
46
|
}
|
|
387
47
|
function toSearchParams(context) {
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
}
|
|
395
|
-
return new URLSearchParams();
|
|
48
|
+
if (context?.searchParams) return new URLSearchParams(context.searchParams);
|
|
49
|
+
if (context?.url) {
|
|
50
|
+
let url = typeof context.url === "string" ? new URL(context.url, "http://localhost") : context.url;
|
|
51
|
+
return new URLSearchParams(url.searchParams);
|
|
52
|
+
}
|
|
53
|
+
return new URLSearchParams();
|
|
396
54
|
}
|
|
397
55
|
function last(searchParams, key) {
|
|
398
|
-
|
|
399
|
-
|
|
56
|
+
let values = searchParams.getAll(key);
|
|
57
|
+
return values.length ? values.at(-1) ?? null : null;
|
|
400
58
|
}
|
|
401
59
|
function resolveWeaverseNextStudioScriptSrc(context, options = {}) {
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
let bundle = isPreviewMode || isRevisionPreview ? "preview.js" : "index.js";
|
|
418
|
-
let version = last(searchParams, "weaverseVersion");
|
|
419
|
-
let url = `${origin}/static/studio/next/${bundle}`;
|
|
420
|
-
return version ? `${url}?v=${encodeURIComponent(version)}` : url;
|
|
421
|
-
}
|
|
422
|
-
|
|
423
|
-
// src/theme-settings-store.ts
|
|
60
|
+
let searchParams = toSearchParams(context);
|
|
61
|
+
let isDesignMode = context?.isDesignMode ?? last(searchParams, "isDesignMode") === "true";
|
|
62
|
+
let isPreviewMode = context?.isPreviewMode ?? last(searchParams, "isPreviewMode") === "true";
|
|
63
|
+
let isRevisionPreview = context?.isRevisionPreview ?? Boolean(last(searchParams, "__revisionId"));
|
|
64
|
+
if (!(isDesignMode || isPreviewMode || isRevisionPreview)) return null;
|
|
65
|
+
let origin = normalizeOrigin(last(searchParams, "weaverseHost"));
|
|
66
|
+
if (!origin) return null;
|
|
67
|
+
if (!isTrustedStudioOrigin(origin, options.storefrontHostname ?? "")) return null;
|
|
68
|
+
let bundle = isPreviewMode || isRevisionPreview ? "preview.js" : "index.js";
|
|
69
|
+
let version = last(searchParams, "weaverseVersion");
|
|
70
|
+
let url = `${origin}/static/studio/next/${bundle}`;
|
|
71
|
+
return version ? `${url}?v=${encodeURIComponent(version)}` : url;
|
|
72
|
+
}
|
|
73
|
+
//#endregion
|
|
74
|
+
//#region src/theme-settings-store.ts
|
|
424
75
|
function createWeaverseNextThemeSettingsStore(options = {}) {
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
|
|
76
|
+
let listeners = /* @__PURE__ */ new Set();
|
|
77
|
+
let store = {
|
|
78
|
+
publicEnv: options.publicEnv,
|
|
79
|
+
schema: options.schema,
|
|
80
|
+
settings: { ...options.settings ?? {} },
|
|
81
|
+
getServerSnapshot: () => store.settings,
|
|
82
|
+
getSnapshot: () => store.settings,
|
|
83
|
+
subscribe: (listener) => {
|
|
84
|
+
listeners.add(listener);
|
|
85
|
+
return () => {
|
|
86
|
+
listeners.delete(listener);
|
|
87
|
+
};
|
|
88
|
+
},
|
|
89
|
+
updateThemeSettings: (next) => {
|
|
90
|
+
store.settings = {
|
|
91
|
+
...store.settings,
|
|
92
|
+
...next
|
|
93
|
+
};
|
|
94
|
+
for (let listener of listeners) listener();
|
|
95
|
+
}
|
|
96
|
+
};
|
|
97
|
+
return store;
|
|
98
|
+
}
|
|
99
|
+
//#endregion
|
|
100
|
+
//#region src/translate.ts
|
|
449
101
|
function getNestedKey(obj, path, fallback) {
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
if (typeof current === "string") {
|
|
459
|
-
return current;
|
|
460
|
-
}
|
|
461
|
-
return fallback;
|
|
102
|
+
let keys = path.split(".");
|
|
103
|
+
let current = obj;
|
|
104
|
+
for (let key of keys) {
|
|
105
|
+
if (current == null || typeof current !== "object") return fallback;
|
|
106
|
+
current = current[key];
|
|
107
|
+
}
|
|
108
|
+
if (typeof current === "string") return current;
|
|
109
|
+
return fallback;
|
|
462
110
|
}
|
|
463
111
|
function interpolate(template, variables) {
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
return value === void 0 ? match : String(value);
|
|
470
|
-
});
|
|
112
|
+
if (!variables) return template;
|
|
113
|
+
return template.replace(/\{\{(\w+)\}\}/g, (match, key) => {
|
|
114
|
+
let value = variables[key];
|
|
115
|
+
return value === void 0 ? match : String(value);
|
|
116
|
+
});
|
|
471
117
|
}
|
|
472
118
|
function createTranslate(sources) {
|
|
473
|
-
|
|
474
|
-
|
|
475
|
-
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
|
|
479
|
-
|
|
480
|
-
|
|
481
|
-
|
|
482
|
-
|
|
483
|
-
|
|
484
|
-
|
|
485
|
-
|
|
486
|
-
|
|
487
|
-
}
|
|
488
|
-
|
|
489
|
-
// src/translation-store.ts
|
|
119
|
+
let { staticContent, merchantOverrides, designOverrides, externalT } = sources;
|
|
120
|
+
return (key, variables) => {
|
|
121
|
+
if (externalT) {
|
|
122
|
+
let external = externalT(key, variables);
|
|
123
|
+
if (external && external !== key) return external;
|
|
124
|
+
}
|
|
125
|
+
let design = designOverrides && Object.hasOwn(designOverrides, key) ? designOverrides[key] : void 0;
|
|
126
|
+
let override = merchantOverrides ? getNestedKey(merchantOverrides, key) : void 0;
|
|
127
|
+
let staticValue = getNestedKey(staticContent, key);
|
|
128
|
+
return interpolate(design ?? override ?? staticValue ?? key, variables);
|
|
129
|
+
};
|
|
130
|
+
}
|
|
131
|
+
//#endregion
|
|
132
|
+
//#region src/translation-store.ts
|
|
490
133
|
var TranslationStore = class {
|
|
491
|
-
|
|
492
|
-
|
|
493
|
-
|
|
494
|
-
|
|
495
|
-
|
|
496
|
-
|
|
497
|
-
|
|
498
|
-
|
|
499
|
-
|
|
500
|
-
|
|
501
|
-
|
|
502
|
-
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
|
|
507
|
-
|
|
508
|
-
|
|
509
|
-
|
|
510
|
-
|
|
511
|
-
|
|
512
|
-
|
|
513
|
-
|
|
514
|
-
|
|
515
|
-
|
|
516
|
-
|
|
517
|
-
|
|
518
|
-
|
|
519
|
-
} catch (error) {
|
|
520
|
-
console.error("TranslationStore: Listener error", error);
|
|
521
|
-
}
|
|
522
|
-
}
|
|
523
|
-
};
|
|
134
|
+
overrides = {};
|
|
135
|
+
listeners = /* @__PURE__ */ new Set();
|
|
136
|
+
setOverrides = (overrides) => {
|
|
137
|
+
this.overrides = { ...overrides };
|
|
138
|
+
this.emit();
|
|
139
|
+
};
|
|
140
|
+
updateOverrides = (newOverrides) => {
|
|
141
|
+
this.overrides = {
|
|
142
|
+
...this.overrides,
|
|
143
|
+
...newOverrides
|
|
144
|
+
};
|
|
145
|
+
this.emit();
|
|
146
|
+
};
|
|
147
|
+
getSnapshot = () => this.overrides;
|
|
148
|
+
getServerSnapshot = () => this.overrides;
|
|
149
|
+
subscribe = (callback) => {
|
|
150
|
+
this.listeners.add(callback);
|
|
151
|
+
return () => {
|
|
152
|
+
this.listeners.delete(callback);
|
|
153
|
+
};
|
|
154
|
+
};
|
|
155
|
+
emit = () => {
|
|
156
|
+
for (const listener of Array.from(this.listeners)) try {
|
|
157
|
+
listener();
|
|
158
|
+
} catch (error) {
|
|
159
|
+
console.error("TranslationStore: Listener error", error);
|
|
160
|
+
}
|
|
161
|
+
};
|
|
524
162
|
};
|
|
525
|
-
|
|
526
|
-
|
|
163
|
+
const ThemeTextStore = TranslationStore;
|
|
164
|
+
//#endregion
|
|
165
|
+
exports.DEFAULT_REVALIDATE_ENDPOINT = require_seo.DEFAULT_REVALIDATE_ENDPOINT;
|
|
527
166
|
Object.defineProperty(exports, "ThemeTextProvider", {
|
|
528
|
-
|
|
529
|
-
|
|
167
|
+
enumerable: true,
|
|
168
|
+
get: function() {
|
|
169
|
+
return __client_boundary_js.ThemeTextProvider;
|
|
170
|
+
}
|
|
530
171
|
});
|
|
172
|
+
exports.ThemeTextStore = ThemeTextStore;
|
|
531
173
|
Object.defineProperty(exports, "TranslationProvider", {
|
|
532
|
-
|
|
533
|
-
|
|
174
|
+
enumerable: true,
|
|
175
|
+
get: function() {
|
|
176
|
+
return __client_boundary_js.TranslationProvider;
|
|
177
|
+
}
|
|
534
178
|
});
|
|
179
|
+
exports.TranslationStore = TranslationStore;
|
|
535
180
|
Object.defineProperty(exports, "WeaverseNextProvider", {
|
|
536
|
-
|
|
537
|
-
|
|
181
|
+
enumerable: true,
|
|
182
|
+
get: function() {
|
|
183
|
+
return __client_boundary_js.WeaverseNextProvider;
|
|
184
|
+
}
|
|
538
185
|
});
|
|
539
186
|
Object.defineProperty(exports, "WeaverseNextRenderer", {
|
|
540
|
-
|
|
541
|
-
|
|
187
|
+
enumerable: true,
|
|
188
|
+
get: function() {
|
|
189
|
+
return __client_boundary_js.WeaverseNextRenderer;
|
|
190
|
+
}
|
|
542
191
|
});
|
|
543
192
|
Object.defineProperty(exports, "WeaverseNextRootProvider", {
|
|
544
|
-
|
|
545
|
-
|
|
193
|
+
enumerable: true,
|
|
194
|
+
get: function() {
|
|
195
|
+
return __client_boundary_js.WeaverseNextRootProvider;
|
|
196
|
+
}
|
|
546
197
|
});
|
|
547
198
|
Object.defineProperty(exports, "WeaverseNextRuntime", {
|
|
548
|
-
|
|
549
|
-
|
|
199
|
+
enumerable: true,
|
|
200
|
+
get: function() {
|
|
201
|
+
return __client_boundary_js.WeaverseNextRuntime;
|
|
202
|
+
}
|
|
550
203
|
});
|
|
551
204
|
Object.defineProperty(exports, "WeaverseNextStudio", {
|
|
552
|
-
|
|
553
|
-
|
|
205
|
+
enumerable: true,
|
|
206
|
+
get: function() {
|
|
207
|
+
return __client_boundary_js.WeaverseNextStudio;
|
|
208
|
+
}
|
|
554
209
|
});
|
|
555
210
|
Object.defineProperty(exports, "WeaverseNextStudioBridge", {
|
|
556
|
-
|
|
557
|
-
|
|
211
|
+
enumerable: true,
|
|
212
|
+
get: function() {
|
|
213
|
+
return __client_boundary_js.WeaverseNextStudioBridge;
|
|
214
|
+
}
|
|
558
215
|
});
|
|
559
216
|
Object.defineProperty(exports, "WeaverseNextStudioConnect", {
|
|
560
|
-
|
|
561
|
-
|
|
217
|
+
enumerable: true,
|
|
218
|
+
get: function() {
|
|
219
|
+
return __client_boundary_js.WeaverseNextStudioConnect;
|
|
220
|
+
}
|
|
562
221
|
});
|
|
563
222
|
Object.defineProperty(exports, "bindWeaverseNextStudioRuntime", {
|
|
564
|
-
|
|
565
|
-
|
|
223
|
+
enumerable: true,
|
|
224
|
+
get: function() {
|
|
225
|
+
return __client_boundary_js.bindWeaverseNextStudioRuntime;
|
|
226
|
+
}
|
|
566
227
|
});
|
|
228
|
+
exports.buildWeaverseNextRequestInfo = require_seo.buildWeaverseNextRequestInfo;
|
|
229
|
+
exports.buildWeaverseNextRevalidateRouteContext = require_seo.buildWeaverseNextRevalidateRouteContext;
|
|
230
|
+
exports.createTranslate = createTranslate;
|
|
567
231
|
Object.defineProperty(exports, "createWeaverseNextClient", {
|
|
568
|
-
|
|
569
|
-
|
|
232
|
+
enumerable: true,
|
|
233
|
+
get: function() {
|
|
234
|
+
return __client_boundary_js.createWeaverseNextClient;
|
|
235
|
+
}
|
|
570
236
|
});
|
|
571
237
|
Object.defineProperty(exports, "createWeaverseNextRuntime", {
|
|
572
|
-
|
|
573
|
-
|
|
238
|
+
enumerable: true,
|
|
239
|
+
get: function() {
|
|
240
|
+
return __client_boundary_js.createWeaverseNextRuntime;
|
|
241
|
+
}
|
|
574
242
|
});
|
|
243
|
+
exports.createWeaverseNextStudioInternals = createWeaverseNextStudioInternals;
|
|
244
|
+
exports.createWeaverseNextThemeSettingsStore = createWeaverseNextThemeSettingsStore;
|
|
245
|
+
exports.formatWeaverseNextSeoMetadata = require_seo.formatWeaverseNextSeoMetadata;
|
|
246
|
+
exports.generateDataFromSchema = require_seo.generateDataFromSchema;
|
|
247
|
+
exports.getNestedKey = getNestedKey;
|
|
248
|
+
exports.getWeaverseNextSeoMetadata = require_seo.getWeaverseNextSeoMetadata;
|
|
249
|
+
exports.interpolate = interpolate;
|
|
250
|
+
exports.isBrowser = require_seo.isBrowser;
|
|
251
|
+
exports.isIframe = require_seo.isIframe;
|
|
575
252
|
Object.defineProperty(exports, "loadWeaverseNextStudioScript", {
|
|
576
|
-
|
|
577
|
-
|
|
253
|
+
enumerable: true,
|
|
254
|
+
get: function() {
|
|
255
|
+
return __client_boundary_js.loadWeaverseNextStudioScript;
|
|
256
|
+
}
|
|
578
257
|
});
|
|
258
|
+
exports.resolveWeaverseNextStudioScriptSrc = resolveWeaverseNextStudioScriptSrc;
|
|
259
|
+
exports.revalidateWeaverseNextItem = require_seo.revalidateWeaverseNextItem;
|
|
260
|
+
exports.runWeaverseComponentLoaders = require_seo.runWeaverseComponentLoaders;
|
|
579
261
|
Object.defineProperty(exports, "useChildInstances", {
|
|
580
|
-
|
|
581
|
-
|
|
262
|
+
enumerable: true,
|
|
263
|
+
get: function() {
|
|
264
|
+
return __client_boundary_js.useChildInstances;
|
|
265
|
+
}
|
|
582
266
|
});
|
|
583
267
|
Object.defineProperty(exports, "useItemInstance", {
|
|
584
|
-
|
|
585
|
-
|
|
268
|
+
enumerable: true,
|
|
269
|
+
get: function() {
|
|
270
|
+
return __client_boundary_js.useItemInstance;
|
|
271
|
+
}
|
|
586
272
|
});
|
|
587
273
|
Object.defineProperty(exports, "useParentInstance", {
|
|
588
|
-
|
|
589
|
-
|
|
274
|
+
enumerable: true,
|
|
275
|
+
get: function() {
|
|
276
|
+
return __client_boundary_js.useParentInstance;
|
|
277
|
+
}
|
|
590
278
|
});
|
|
591
279
|
Object.defineProperty(exports, "useThemeSettings", {
|
|
592
|
-
|
|
593
|
-
|
|
280
|
+
enumerable: true,
|
|
281
|
+
get: function() {
|
|
282
|
+
return __client_boundary_js.useThemeSettings;
|
|
283
|
+
}
|
|
594
284
|
});
|
|
595
285
|
Object.defineProperty(exports, "useThemeText", {
|
|
596
|
-
|
|
597
|
-
|
|
286
|
+
enumerable: true,
|
|
287
|
+
get: function() {
|
|
288
|
+
return __client_boundary_js.useThemeText;
|
|
289
|
+
}
|
|
598
290
|
});
|
|
599
291
|
Object.defineProperty(exports, "useTranslation", {
|
|
600
|
-
|
|
601
|
-
|
|
292
|
+
enumerable: true,
|
|
293
|
+
get: function() {
|
|
294
|
+
return __client_boundary_js.useTranslation;
|
|
295
|
+
}
|
|
602
296
|
});
|
|
603
297
|
Object.defineProperty(exports, "useWeaverse", {
|
|
604
|
-
|
|
605
|
-
|
|
298
|
+
enumerable: true,
|
|
299
|
+
get: function() {
|
|
300
|
+
return __client_boundary_js.useWeaverse;
|
|
301
|
+
}
|
|
606
302
|
});
|
|
607
303
|
Object.defineProperty(exports, "useWeaverseCommerce", {
|
|
608
|
-
|
|
609
|
-
|
|
304
|
+
enumerable: true,
|
|
305
|
+
get: function() {
|
|
306
|
+
return __client_boundary_js.useWeaverseCommerce;
|
|
307
|
+
}
|
|
610
308
|
});
|
|
611
309
|
Object.defineProperty(exports, "useWeaverseNextStudioInternals", {
|
|
612
|
-
|
|
613
|
-
|
|
310
|
+
enumerable: true,
|
|
311
|
+
get: function() {
|
|
312
|
+
return __client_boundary_js.useWeaverseNextStudioInternals;
|
|
313
|
+
}
|
|
614
314
|
});
|
|
615
315
|
Object.defineProperty(exports, "useWeaversePageData", {
|
|
616
|
-
|
|
617
|
-
|
|
316
|
+
enumerable: true,
|
|
317
|
+
get: function() {
|
|
318
|
+
return __client_boundary_js.useWeaversePageData;
|
|
319
|
+
}
|
|
618
320
|
});
|
|
619
321
|
Object.defineProperty(exports, "useWeaverseRootData", {
|
|
620
|
-
|
|
621
|
-
|
|
322
|
+
enumerable: true,
|
|
323
|
+
get: function() {
|
|
324
|
+
return __client_boundary_js.useWeaverseRootData;
|
|
325
|
+
}
|
|
622
326
|
});
|
|
623
|
-
|
|
624
|
-
|
|
625
|
-
exports.
|
|
626
|
-
|
|
627
|
-
|
|
628
|
-
|
|
629
|
-
|
|
630
|
-
|
|
631
|
-
exports.formatWeaverseNextSeoMetadata = formatWeaverseNextSeoMetadata;
|
|
632
|
-
exports.generateDataFromSchema = generateDataFromSchema;
|
|
633
|
-
exports.getNestedKey = getNestedKey;
|
|
634
|
-
exports.getWeaverseNextSeoMetadata = getWeaverseNextSeoMetadata;
|
|
635
|
-
exports.interpolate = interpolate;
|
|
636
|
-
exports.isBrowser = isBrowser;
|
|
637
|
-
exports.isIframe = isIframe;
|
|
638
|
-
exports.resolveWeaverseNextStudioScriptSrc = resolveWeaverseNextStudioScriptSrc;
|
|
639
|
-
exports.revalidateWeaverseNextItem = revalidateWeaverseNextItem;
|
|
640
|
-
exports.runWeaverseComponentLoaders = runWeaverseComponentLoaders;
|
|
641
|
-
Object.keys(schema).forEach(function (k) {
|
|
642
|
-
if (k !== 'default' && !Object.prototype.hasOwnProperty.call(exports, k)) Object.defineProperty(exports, k, {
|
|
643
|
-
enumerable: true,
|
|
644
|
-
get: function () { return schema[k]; }
|
|
645
|
-
});
|
|
327
|
+
var _weaverse_schema = require("@weaverse/schema");
|
|
328
|
+
Object.keys(_weaverse_schema).forEach(function(k) {
|
|
329
|
+
if (k !== "default" && !Object.prototype.hasOwnProperty.call(exports, k)) Object.defineProperty(exports, k, {
|
|
330
|
+
enumerable: true,
|
|
331
|
+
get: function() {
|
|
332
|
+
return _weaverse_schema[k];
|
|
333
|
+
}
|
|
334
|
+
});
|
|
646
335
|
});
|
|
647
|
-
|
|
336
|
+
|
|
648
337
|
//# sourceMappingURL=index.js.map
|