@weaverse/next 1.0.1 → 1.1.0-beta.0

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.js CHANGED
@@ -1,648 +1,337 @@
1
- 'use strict';
2
-
3
- var schema = require('@weaverse/schema');
4
- var clientBoundary_js = require('./client-boundary.js');
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
- if (!options || typeof options !== "object") {
334
- return true;
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
- return {
340
- navigate: (to, navigateOptions) => {
341
- let scroll = shouldResetScroll(navigateOptions);
342
- if (options.replace) {
343
- router.replace(to, { scroll });
344
- } else {
345
- router.push(to, { scroll });
346
- }
347
- },
348
- revalidate: () => {
349
- router.refresh();
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
- return hostname === "localhost" || hostname === "127.0.0.1" || hostname.endsWith(".localhost");
25
+ return hostname === "localhost" || hostname === "127.0.0.1" || hostname.endsWith(".localhost");
358
26
  }
359
27
  function normalizeOrigin(value) {
360
- if (!value) {
361
- return null;
362
- }
363
- try {
364
- return new URL(value).origin;
365
- } catch {
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
- let parsed;
371
- try {
372
- parsed = new URL(origin);
373
- } catch {
374
- return false;
375
- }
376
- let { hostname, protocol } = parsed;
377
- if (isLoopbackHostname(storefrontHostname) && isLoopbackHostname(hostname)) {
378
- return protocol === "http:" || protocol === "https:";
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
- if (context?.searchParams) {
389
- return new URLSearchParams(context.searchParams);
390
- }
391
- if (context?.url) {
392
- let url = typeof context.url === "string" ? new URL(context.url, "http://localhost") : context.url;
393
- return new URLSearchParams(url.searchParams);
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
- let values = searchParams.getAll(key);
399
- return values.length ? values.at(-1) ?? null : null;
56
+ let values = searchParams.getAll(key);
57
+ return values.length ? values.at(-1) ?? null : null;
400
58
  }
401
59
  function resolveWeaverseNextStudioScriptSrc(context, options = {}) {
402
- let searchParams = toSearchParams(context);
403
- let isDesignMode = context?.isDesignMode ?? last(searchParams, "isDesignMode") === "true";
404
- let isPreviewMode = context?.isPreviewMode ?? last(searchParams, "isPreviewMode") === "true";
405
- let isRevisionPreview = context?.isRevisionPreview ?? Boolean(last(searchParams, "__revisionId"));
406
- if (!(isDesignMode || isPreviewMode || isRevisionPreview)) {
407
- return null;
408
- }
409
- let origin = normalizeOrigin(last(searchParams, "weaverseHost"));
410
- if (!origin) {
411
- return null;
412
- }
413
- let storefrontHostname = options.storefrontHostname ?? "";
414
- if (!isTrustedStudioOrigin(origin, storefrontHostname)) {
415
- return null;
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
- let listeners = /* @__PURE__ */ new Set();
426
- let store = {
427
- publicEnv: options.publicEnv,
428
- schema: options.schema,
429
- settings: { ...options.settings ?? {} },
430
- getServerSnapshot: () => store.settings,
431
- getSnapshot: () => store.settings,
432
- subscribe: (listener) => {
433
- listeners.add(listener);
434
- return () => {
435
- listeners.delete(listener);
436
- };
437
- },
438
- updateThemeSettings: (next) => {
439
- store.settings = { ...store.settings, ...next };
440
- for (let listener of listeners) {
441
- listener();
442
- }
443
- }
444
- };
445
- return store;
446
- }
447
-
448
- // src/translate.ts
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
- let keys = path.split(".");
451
- let current = obj;
452
- for (let key of keys) {
453
- if (current == null || typeof current !== "object") {
454
- return fallback;
455
- }
456
- current = current[key];
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
- if (!variables) {
465
- return template;
466
- }
467
- return template.replace(/\{\{(\w+)\}\}/g, (match, key) => {
468
- let value = variables[key];
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
- let { staticContent, merchantOverrides, designOverrides, externalT } = sources;
474
- return (key, variables) => {
475
- if (externalT) {
476
- let external = externalT(key, variables);
477
- if (external && external !== key) {
478
- return external;
479
- }
480
- }
481
- let design = designOverrides && Object.hasOwn(designOverrides, key) ? designOverrides[key] : void 0;
482
- let override = merchantOverrides ? getNestedKey(merchantOverrides, key) : void 0;
483
- let staticValue = getNestedKey(staticContent, key);
484
- let raw = design ?? override ?? staticValue ?? key;
485
- return interpolate(raw, variables);
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
- /** Current flat translation overrides keyed by dot path. */
492
- overrides = {};
493
- listeners = /* @__PURE__ */ new Set();
494
- /** Replace every override and notify subscribers. */
495
- setOverrides = (overrides) => {
496
- this.overrides = { ...overrides };
497
- this.emit();
498
- };
499
- /** Merge changed overrides into the current values and notify subscribers. */
500
- updateOverrides = (newOverrides) => {
501
- this.overrides = { ...this.overrides, ...newOverrides };
502
- this.emit();
503
- };
504
- /** Return the current client-side override snapshot. */
505
- getSnapshot = () => this.overrides;
506
- /** Return the override snapshot used during server rendering. */
507
- getServerSnapshot = () => this.overrides;
508
- /** Subscribe to override changes and return an unsubscribe function. */
509
- subscribe = (callback) => {
510
- this.listeners.add(callback);
511
- return () => {
512
- this.listeners.delete(callback);
513
- };
514
- };
515
- emit = () => {
516
- for (const listener of Array.from(this.listeners)) {
517
- try {
518
- listener();
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
- var ThemeTextStore = TranslationStore;
526
-
163
+ const ThemeTextStore = TranslationStore;
164
+ //#endregion
165
+ exports.DEFAULT_REVALIDATE_ENDPOINT = require_seo.DEFAULT_REVALIDATE_ENDPOINT;
527
166
  Object.defineProperty(exports, "ThemeTextProvider", {
528
- enumerable: true,
529
- get: function () { return clientBoundary_js.ThemeTextProvider; }
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
- enumerable: true,
533
- get: function () { return clientBoundary_js.TranslationProvider; }
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
- enumerable: true,
537
- get: function () { return clientBoundary_js.WeaverseNextProvider; }
181
+ enumerable: true,
182
+ get: function() {
183
+ return __client_boundary_js.WeaverseNextProvider;
184
+ }
538
185
  });
539
186
  Object.defineProperty(exports, "WeaverseNextRenderer", {
540
- enumerable: true,
541
- get: function () { return clientBoundary_js.WeaverseNextRenderer; }
187
+ enumerable: true,
188
+ get: function() {
189
+ return __client_boundary_js.WeaverseNextRenderer;
190
+ }
542
191
  });
543
192
  Object.defineProperty(exports, "WeaverseNextRootProvider", {
544
- enumerable: true,
545
- get: function () { return clientBoundary_js.WeaverseNextRootProvider; }
193
+ enumerable: true,
194
+ get: function() {
195
+ return __client_boundary_js.WeaverseNextRootProvider;
196
+ }
546
197
  });
547
198
  Object.defineProperty(exports, "WeaverseNextRuntime", {
548
- enumerable: true,
549
- get: function () { return clientBoundary_js.WeaverseNextRuntime; }
199
+ enumerable: true,
200
+ get: function() {
201
+ return __client_boundary_js.WeaverseNextRuntime;
202
+ }
550
203
  });
551
204
  Object.defineProperty(exports, "WeaverseNextStudio", {
552
- enumerable: true,
553
- get: function () { return clientBoundary_js.WeaverseNextStudio; }
205
+ enumerable: true,
206
+ get: function() {
207
+ return __client_boundary_js.WeaverseNextStudio;
208
+ }
554
209
  });
555
210
  Object.defineProperty(exports, "WeaverseNextStudioBridge", {
556
- enumerable: true,
557
- get: function () { return clientBoundary_js.WeaverseNextStudioBridge; }
211
+ enumerable: true,
212
+ get: function() {
213
+ return __client_boundary_js.WeaverseNextStudioBridge;
214
+ }
558
215
  });
559
216
  Object.defineProperty(exports, "WeaverseNextStudioConnect", {
560
- enumerable: true,
561
- get: function () { return clientBoundary_js.WeaverseNextStudioConnect; }
217
+ enumerable: true,
218
+ get: function() {
219
+ return __client_boundary_js.WeaverseNextStudioConnect;
220
+ }
562
221
  });
563
222
  Object.defineProperty(exports, "bindWeaverseNextStudioRuntime", {
564
- enumerable: true,
565
- get: function () { return clientBoundary_js.bindWeaverseNextStudioRuntime; }
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
- enumerable: true,
569
- get: function () { return clientBoundary_js.createWeaverseNextClient; }
232
+ enumerable: true,
233
+ get: function() {
234
+ return __client_boundary_js.createWeaverseNextClient;
235
+ }
570
236
  });
571
237
  Object.defineProperty(exports, "createWeaverseNextRuntime", {
572
- enumerable: true,
573
- get: function () { return clientBoundary_js.createWeaverseNextRuntime; }
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
- enumerable: true,
577
- get: function () { return clientBoundary_js.loadWeaverseNextStudioScript; }
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
- enumerable: true,
581
- get: function () { return clientBoundary_js.useChildInstances; }
262
+ enumerable: true,
263
+ get: function() {
264
+ return __client_boundary_js.useChildInstances;
265
+ }
582
266
  });
583
267
  Object.defineProperty(exports, "useItemInstance", {
584
- enumerable: true,
585
- get: function () { return clientBoundary_js.useItemInstance; }
268
+ enumerable: true,
269
+ get: function() {
270
+ return __client_boundary_js.useItemInstance;
271
+ }
586
272
  });
587
273
  Object.defineProperty(exports, "useParentInstance", {
588
- enumerable: true,
589
- get: function () { return clientBoundary_js.useParentInstance; }
274
+ enumerable: true,
275
+ get: function() {
276
+ return __client_boundary_js.useParentInstance;
277
+ }
590
278
  });
591
279
  Object.defineProperty(exports, "useThemeSettings", {
592
- enumerable: true,
593
- get: function () { return clientBoundary_js.useThemeSettings; }
280
+ enumerable: true,
281
+ get: function() {
282
+ return __client_boundary_js.useThemeSettings;
283
+ }
594
284
  });
595
285
  Object.defineProperty(exports, "useThemeText", {
596
- enumerable: true,
597
- get: function () { return clientBoundary_js.useThemeText; }
286
+ enumerable: true,
287
+ get: function() {
288
+ return __client_boundary_js.useThemeText;
289
+ }
598
290
  });
599
291
  Object.defineProperty(exports, "useTranslation", {
600
- enumerable: true,
601
- get: function () { return clientBoundary_js.useTranslation; }
292
+ enumerable: true,
293
+ get: function() {
294
+ return __client_boundary_js.useTranslation;
295
+ }
602
296
  });
603
297
  Object.defineProperty(exports, "useWeaverse", {
604
- enumerable: true,
605
- get: function () { return clientBoundary_js.useWeaverse; }
298
+ enumerable: true,
299
+ get: function() {
300
+ return __client_boundary_js.useWeaverse;
301
+ }
606
302
  });
607
303
  Object.defineProperty(exports, "useWeaverseCommerce", {
608
- enumerable: true,
609
- get: function () { return clientBoundary_js.useWeaverseCommerce; }
304
+ enumerable: true,
305
+ get: function() {
306
+ return __client_boundary_js.useWeaverseCommerce;
307
+ }
610
308
  });
611
309
  Object.defineProperty(exports, "useWeaverseNextStudioInternals", {
612
- enumerable: true,
613
- get: function () { return clientBoundary_js.useWeaverseNextStudioInternals; }
310
+ enumerable: true,
311
+ get: function() {
312
+ return __client_boundary_js.useWeaverseNextStudioInternals;
313
+ }
614
314
  });
615
315
  Object.defineProperty(exports, "useWeaversePageData", {
616
- enumerable: true,
617
- get: function () { return clientBoundary_js.useWeaversePageData; }
316
+ enumerable: true,
317
+ get: function() {
318
+ return __client_boundary_js.useWeaversePageData;
319
+ }
618
320
  });
619
321
  Object.defineProperty(exports, "useWeaverseRootData", {
620
- enumerable: true,
621
- get: function () { return clientBoundary_js.useWeaverseRootData; }
322
+ enumerable: true,
323
+ get: function() {
324
+ return __client_boundary_js.useWeaverseRootData;
325
+ }
622
326
  });
623
- exports.DEFAULT_REVALIDATE_ENDPOINT = DEFAULT_REVALIDATE_ENDPOINT;
624
- exports.ThemeTextStore = ThemeTextStore;
625
- exports.TranslationStore = TranslationStore;
626
- exports.buildWeaverseNextRequestInfo = buildWeaverseNextRequestInfo;
627
- exports.buildWeaverseNextRevalidateRouteContext = buildWeaverseNextRevalidateRouteContext;
628
- exports.createTranslate = createTranslate;
629
- exports.createWeaverseNextStudioInternals = createWeaverseNextStudioInternals;
630
- exports.createWeaverseNextThemeSettingsStore = createWeaverseNextThemeSettingsStore;
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
- //# sourceMappingURL=index.js.map
336
+
648
337
  //# sourceMappingURL=index.js.map