@weaverse/next 0.1.0-alpha.9 → 1.0.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/README.md +155 -73
- package/dist/{chunk-6PMZ77RA.mjs → chunk-LH6AAEIK.mjs} +115 -8
- package/dist/chunk-LH6AAEIK.mjs.map +1 -0
- package/dist/index.js +180 -32
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +86 -47
- package/dist/index.mjs.map +1 -1
- package/dist/server.js +321 -91
- package/dist/server.js.map +1 -1
- package/dist/server.mjs +205 -28
- package/dist/server.mjs.map +1 -1
- package/dist/types/client.d.ts +16 -0
- package/dist/types/client.d.ts.map +1 -0
- package/dist/types/hooks.d.ts +20 -0
- package/dist/types/hooks.d.ts.map +1 -0
- package/dist/types/index.d.ts +34 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/item.d.ts +60 -0
- package/dist/types/item.d.ts.map +1 -0
- package/dist/types/loader.d.ts +25 -0
- package/dist/types/loader.d.ts.map +1 -0
- package/dist/types/main.d.ts +11 -0
- package/dist/types/main.d.ts.map +1 -0
- package/dist/types/provider.d.ts +82 -0
- package/dist/types/provider.d.ts.map +1 -0
- package/dist/types/registry.d.ts +15 -0
- package/dist/types/registry.d.ts.map +1 -0
- package/dist/types/renderer.d.ts +21 -0
- package/dist/types/renderer.d.ts.map +1 -0
- package/dist/types/request-info.d.ts +19 -0
- package/dist/types/request-info.d.ts.map +1 -0
- package/dist/types/revalidate-item.d.ts +82 -0
- package/dist/types/revalidate-item.d.ts.map +1 -0
- package/dist/types/root-provider.d.ts +62 -0
- package/dist/types/root-provider.d.ts.map +1 -0
- package/dist/types/runtime.d.ts +113 -0
- package/dist/types/runtime.d.ts.map +1 -0
- package/dist/types/seo.d.ts +55 -0
- package/dist/types/seo.d.ts.map +1 -0
- package/dist/types/server/configs.d.ts +27 -0
- package/dist/types/server/configs.d.ts.map +1 -0
- package/dist/types/server/normalize-page-url.d.ts +19 -0
- package/dist/types/server/normalize-page-url.d.ts.map +1 -0
- package/dist/types/server/revalidate-handler.d.ts +55 -0
- package/dist/types/server/revalidate-handler.d.ts.map +1 -0
- package/dist/types/server/server-client.d.ts +21 -0
- package/dist/types/server/server-client.d.ts.map +1 -0
- package/dist/types/server.d.ts +19 -0
- package/dist/types/server.d.ts.map +1 -0
- package/dist/types/studio-bridge.d.ts +16 -0
- package/dist/types/studio-bridge.d.ts.map +1 -0
- package/dist/types/studio-connect.d.ts +27 -0
- package/dist/types/studio-connect.d.ts.map +1 -0
- package/dist/types/studio-router.d.ts +50 -0
- package/dist/types/studio-router.d.ts.map +1 -0
- package/dist/types/studio-script-src.d.ts +12 -0
- package/dist/types/studio-script-src.d.ts.map +1 -0
- package/dist/types/theme-settings-store.d.ts +18 -0
- package/dist/types/theme-settings-store.d.ts.map +1 -0
- package/dist/types/translation-context.d.ts +156 -0
- package/dist/types/translation-context.d.ts.map +1 -0
- package/dist/types/translation-store.d.ts +44 -0
- package/dist/types/translation-store.d.ts.map +1 -0
- package/dist/types/types.d.ts +665 -0
- package/dist/types/types.d.ts.map +1 -0
- package/dist/types/use-weaverse-next-studio.d.ts +34 -0
- package/dist/types/use-weaverse-next-studio.d.ts.map +1 -0
- package/dist/types/utils.d.ts +12 -0
- package/dist/types/utils.d.ts.map +1 -0
- package/package.json +12 -8
- package/src/client.ts +102 -0
- package/src/hooks.ts +50 -0
- package/src/index.ts +153 -0
- package/src/item.ts +167 -0
- package/src/loader.ts +135 -0
- package/src/main.tsx +45 -0
- package/src/provider.tsx +225 -0
- package/src/registry.ts +63 -0
- package/src/renderer.tsx +100 -0
- package/src/request-info.ts +124 -0
- package/src/revalidate-item.ts +211 -0
- package/src/root-provider.tsx +182 -0
- package/src/runtime.ts +555 -0
- package/src/seo.ts +157 -0
- package/src/server/configs.ts +178 -0
- package/src/server/normalize-page-url.ts +73 -0
- package/src/server/revalidate-handler.ts +357 -0
- package/src/server/server-client.ts +728 -0
- package/src/server.ts +67 -0
- package/src/studio-bridge.tsx +82 -0
- package/src/studio-connect.tsx +88 -0
- package/src/studio-router.ts +85 -0
- package/src/studio-script-src.ts +128 -0
- package/src/theme-settings-store.ts +47 -0
- package/src/translation-context.tsx +299 -0
- package/src/translation-store.ts +69 -0
- package/src/types.ts +753 -0
- package/src/use-weaverse-next-studio.tsx +106 -0
- package/src/utils.ts +37 -0
- package/dist/chunk-6PMZ77RA.mjs.map +0 -1
- package/dist/index.d.mts +0 -580
- package/dist/index.d.ts +0 -580
- package/dist/seo-Dos9t22_.d.mts +0 -477
- package/dist/seo-Dos9t22_.d.ts +0 -477
- package/dist/server.d.mts +0 -99
- package/dist/server.d.ts +0 -99
package/dist/index.mjs
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { buildWeaverseNextRequestInfo, generateDataFromSchema } from './chunk-
|
|
2
|
-
export { buildWeaverseNextRequestInfo, formatWeaverseNextSeoMetadata, getWeaverseNextSeoMetadata, runWeaverseComponentLoaders } from './chunk-
|
|
1
|
+
import { buildWeaverseNextRequestInfo, DEFAULT_REVALIDATE_ENDPOINT, revalidateWeaverseNextItem, generateDataFromSchema } from './chunk-LH6AAEIK.mjs';
|
|
2
|
+
export { DEFAULT_REVALIDATE_ENDPOINT, buildWeaverseNextRequestInfo, buildWeaverseNextRevalidateRouteContext, formatWeaverseNextSeoMetadata, generateDataFromSchema, getWeaverseNextSeoMetadata, revalidateWeaverseNextItem, runWeaverseComponentLoaders } from './chunk-LH6AAEIK.mjs';
|
|
3
3
|
import { WeaverseRoot, Weaverse, WeaverseItemStore, useSafeExternalStore } from '@weaverse/react';
|
|
4
4
|
export { isBrowser, isIframe, useChildInstances, useItemInstance, useParentInstance, useWeaverse } from '@weaverse/react';
|
|
5
5
|
import { createSchema } from '@weaverse/schema';
|
|
6
|
-
export
|
|
6
|
+
export * from '@weaverse/schema';
|
|
7
7
|
import { jsxs, Fragment, jsx } from 'react/jsx-runtime';
|
|
8
8
|
import { createContext, memo, useContext, useMemo, useEffect, useLayoutEffect, useRef, useSyncExternalStore } from 'react';
|
|
9
9
|
import { useRouter } from 'next/navigation';
|
|
@@ -35,6 +35,7 @@ var WeaverseNextItem = class extends WeaverseItemStore {
|
|
|
35
35
|
_cachedSnapshot = null;
|
|
36
36
|
_snapshotStoreRef = null;
|
|
37
37
|
_snapshotTranslationRef = null;
|
|
38
|
+
/** Create an item store from serialized component data and its runtime. */
|
|
38
39
|
constructor(initialData, weaverse) {
|
|
39
40
|
super(initialData, weaverse);
|
|
40
41
|
let schemaData = generateDataFromSchema(this.Element?.schema);
|
|
@@ -43,15 +44,31 @@ var WeaverseNextItem = class extends WeaverseItemStore {
|
|
|
43
44
|
/**
|
|
44
45
|
* Flatten nested `data` on updates exactly like the constructor does. Core's
|
|
45
46
|
* `initProject()` calls `setData(item)` when a new runtime serves a page
|
|
46
|
-
* whose item instances already exist (e.g. locale/client navigation)
|
|
47
|
-
*
|
|
48
|
-
*
|
|
49
|
-
*
|
|
50
|
-
*
|
|
51
|
-
*
|
|
47
|
+
* whose item instances already exist (e.g. locale/client navigation).
|
|
48
|
+
*
|
|
49
|
+
* A complete serialized item (it carries `id` and `type`; core's
|
|
50
|
+
* `initProject()` always passes one) replaces the store the way the
|
|
51
|
+
* constructor builds it: the schema defaults of the item's own `type` — the
|
|
52
|
+
* Builder can replace a section in place, keeping its id — then the item's
|
|
53
|
+
* settings. A payload omits a setting — or the whole optional `data` — when
|
|
54
|
+
* its value equals the schema default, so merging into the previous store
|
|
55
|
+
* would keep the previous locale's value visible. Partial updates still
|
|
56
|
+
* merge. Either way the `_store` ref changes, which invalidates the memoized
|
|
57
|
+
* snapshot below. The subscriber emit is queued instead of fired when a
|
|
58
|
+
* render-phase deferral is active (see `collectDeferredItemUpdates`).
|
|
52
59
|
*/
|
|
53
60
|
setData = (update) => {
|
|
54
|
-
|
|
61
|
+
if ("id" in update && "type" in update) {
|
|
62
|
+
let { data, type } = update;
|
|
63
|
+
let schema = this.weaverse.elementRegistry.get(type)?.schema;
|
|
64
|
+
this._store = {
|
|
65
|
+
...generateDataFromSchema(schema),
|
|
66
|
+
...data === void 0 ? {} : { data },
|
|
67
|
+
...flattenItemData(update)
|
|
68
|
+
};
|
|
69
|
+
} else {
|
|
70
|
+
this.data = flattenItemData(update);
|
|
71
|
+
}
|
|
55
72
|
if (deferredItemUpdates) {
|
|
56
73
|
deferredItemUpdates.add(this);
|
|
57
74
|
} else {
|
|
@@ -300,18 +317,24 @@ var useThemeText = useTranslation;
|
|
|
300
317
|
|
|
301
318
|
// src/translation-store.ts
|
|
302
319
|
var TranslationStore = class {
|
|
320
|
+
/** Current flat translation overrides keyed by dot path. */
|
|
303
321
|
overrides = {};
|
|
304
322
|
listeners = /* @__PURE__ */ new Set();
|
|
323
|
+
/** Replace every override and notify subscribers. */
|
|
305
324
|
setOverrides = (overrides) => {
|
|
306
325
|
this.overrides = { ...overrides };
|
|
307
326
|
this.emit();
|
|
308
327
|
};
|
|
328
|
+
/** Merge changed overrides into the current values and notify subscribers. */
|
|
309
329
|
updateOverrides = (newOverrides) => {
|
|
310
330
|
this.overrides = { ...this.overrides, ...newOverrides };
|
|
311
331
|
this.emit();
|
|
312
332
|
};
|
|
333
|
+
/** Return the current client-side override snapshot. */
|
|
313
334
|
getSnapshot = () => this.overrides;
|
|
335
|
+
/** Return the override snapshot used during server rendering. */
|
|
314
336
|
getServerSnapshot = () => this.overrides;
|
|
337
|
+
/** Subscribe to override changes and return an unsubscribe function. */
|
|
315
338
|
subscribe = (callback) => {
|
|
316
339
|
this.listeners.add(callback);
|
|
317
340
|
return () => {
|
|
@@ -502,6 +525,12 @@ function getConfigString(configs, key) {
|
|
|
502
525
|
let value = configs?.[key];
|
|
503
526
|
return typeof value === "string" ? value : void 0;
|
|
504
527
|
}
|
|
528
|
+
function resolveModeFlag(config, key) {
|
|
529
|
+
return config.client?.requestContext?.[key] === true || config.data.configs?.[key] === true;
|
|
530
|
+
}
|
|
531
|
+
function resolveSectionType(config) {
|
|
532
|
+
return config.client?.requestContext?.sectionType || getConfigString(config.data.configs, "sectionType") || void 0;
|
|
533
|
+
}
|
|
505
534
|
function getRecordString(record, key) {
|
|
506
535
|
let value = record?.[key];
|
|
507
536
|
return typeof value === "string" ? value : void 0;
|
|
@@ -538,12 +567,30 @@ function registerRuntime(runtime) {
|
|
|
538
567
|
runtimeWindow.__weaverses[runtime.pageId] = runtime;
|
|
539
568
|
runtimeWindow.__weaverse = runtime;
|
|
540
569
|
}
|
|
570
|
+
function rebindPageItemsToRuntime(runtime) {
|
|
571
|
+
let items = runtime.data?.items;
|
|
572
|
+
if (!items) {
|
|
573
|
+
return;
|
|
574
|
+
}
|
|
575
|
+
for (let { id } of items) {
|
|
576
|
+
let instance = runtime.itemInstances.get(id);
|
|
577
|
+
if (instance && instance.weaverse !== runtime) {
|
|
578
|
+
instance.weaverse = runtime;
|
|
579
|
+
}
|
|
580
|
+
}
|
|
581
|
+
}
|
|
541
582
|
var WeaverseNextRuntime = class extends Weaverse {
|
|
583
|
+
/** Stable ID of the page owned by this runtime. */
|
|
542
584
|
pageId;
|
|
585
|
+
/** Mutable callbacks and stores consumed by the Studio bridge. */
|
|
543
586
|
internal;
|
|
587
|
+
/** Path, query, and locale metadata for Studio navigation. */
|
|
544
588
|
requestInfo;
|
|
589
|
+
/** Whether this runtime renders a component preview. */
|
|
545
590
|
isPreviewMode;
|
|
591
|
+
/** Whether this runtime renders a saved revision. */
|
|
546
592
|
isRevisionPreview;
|
|
593
|
+
/** Component type rendered in section preview mode. */
|
|
547
594
|
sectionType;
|
|
548
595
|
// ─── Item-level translation sidecar (design mode only) ─────────────
|
|
549
596
|
/**
|
|
@@ -552,7 +599,9 @@ var WeaverseNextRuntime = class extends Weaverse {
|
|
|
552
599
|
* components, so translations render without mutating the base `_store`.
|
|
553
600
|
*/
|
|
554
601
|
translationMap = {};
|
|
602
|
+
/** Locale associated with the item-level translation sidecar. */
|
|
555
603
|
translationLocale = String();
|
|
604
|
+
/** Weaverse language ID used when saving translation changes. */
|
|
556
605
|
translationLanguageId = String();
|
|
557
606
|
/**
|
|
558
607
|
* Fresh page data captured while React was rendering. Runtime reuse happens
|
|
@@ -570,27 +619,32 @@ var WeaverseNextRuntime = class extends Weaverse {
|
|
|
570
619
|
* deferred to `flushRenderPhaseUpdates()`.
|
|
571
620
|
*/
|
|
572
621
|
pendingItemUpdates = [];
|
|
622
|
+
/** Create a browser runtime from a loaded page and its request context. */
|
|
573
623
|
constructor(config) {
|
|
574
624
|
let { client, data } = config;
|
|
575
625
|
let page = getRenderablePage(data);
|
|
576
626
|
let configs = data.configs;
|
|
577
627
|
let requestContext = client?.requestContext;
|
|
628
|
+
let isDesignMode = resolveModeFlag(config, "isDesignMode");
|
|
629
|
+
let isPreviewMode = resolveModeFlag(config, "isPreviewMode");
|
|
630
|
+
let isRevisionPreview = resolveModeFlag(config, "isRevisionPreview");
|
|
631
|
+
let sectionType = resolveSectionType(config);
|
|
578
632
|
let projectId = resolveProjectId(client, data, page.id);
|
|
579
633
|
ensureNextItemConstructor();
|
|
580
634
|
super({
|
|
581
635
|
projectId,
|
|
582
636
|
data: page,
|
|
583
|
-
isDesignMode
|
|
637
|
+
isDesignMode,
|
|
584
638
|
weaverseHost: getConfigString(configs, "weaverseHost"),
|
|
585
639
|
weaverseVersion: getConfigString(configs, "weaverseVersion")
|
|
586
640
|
});
|
|
587
641
|
this.pageId = page.id;
|
|
588
642
|
this.dataContext = resolveDataContext(config);
|
|
589
643
|
this.requestInfo = buildWeaverseNextRequestInfo(requestContext);
|
|
590
|
-
this.isDesignMode =
|
|
591
|
-
this.isPreviewMode =
|
|
592
|
-
this.isRevisionPreview =
|
|
593
|
-
this.sectionType =
|
|
644
|
+
this.isDesignMode = isDesignMode;
|
|
645
|
+
this.isPreviewMode = isPreviewMode;
|
|
646
|
+
this.isRevisionPreview = isRevisionPreview;
|
|
647
|
+
this.sectionType = sectionType;
|
|
594
648
|
let translationStore = config.translationStore ?? new TranslationStore();
|
|
595
649
|
this.internal = {
|
|
596
650
|
merchantOverrides: config.merchantOverrides,
|
|
@@ -722,7 +776,11 @@ function createWeaverseNextRuntime(config) {
|
|
|
722
776
|
let existing = runtimeWindow?.__weaverses?.[page.id];
|
|
723
777
|
let requestKey = getRuntimeKey(page.id, requestInfo);
|
|
724
778
|
if (existing?.__weaverseNextRequestKey === requestKey) {
|
|
725
|
-
let
|
|
779
|
+
let configs = config.data.configs;
|
|
780
|
+
let nextIsDesignMode = resolveModeFlag(config, "isDesignMode");
|
|
781
|
+
let nextIsPreviewMode = resolveModeFlag(config, "isPreviewMode");
|
|
782
|
+
let nextIsRevisionPreview = resolveModeFlag(config, "isRevisionPreview");
|
|
783
|
+
let nextSectionType = resolveSectionType(config);
|
|
726
784
|
if (existing.isDesignMode || nextIsDesignMode) {
|
|
727
785
|
existing.pendingProjectData = void 0;
|
|
728
786
|
} else {
|
|
@@ -733,11 +791,11 @@ function createWeaverseNextRuntime(config) {
|
|
|
733
791
|
existing.requestInfo = requestInfo;
|
|
734
792
|
existing.projectId = resolveProjectId(config.client, config.data, page.id);
|
|
735
793
|
existing.isDesignMode = nextIsDesignMode;
|
|
736
|
-
existing.isPreviewMode =
|
|
737
|
-
existing.isRevisionPreview =
|
|
738
|
-
existing.sectionType =
|
|
739
|
-
existing.weaverseHost = getConfigString(
|
|
740
|
-
existing.weaverseVersion = getConfigString(
|
|
794
|
+
existing.isPreviewMode = nextIsPreviewMode;
|
|
795
|
+
existing.isRevisionPreview = nextIsRevisionPreview;
|
|
796
|
+
existing.sectionType = nextSectionType;
|
|
797
|
+
existing.weaverseHost = getConfigString(configs, "weaverseHost") ?? existing.weaverseHost;
|
|
798
|
+
existing.weaverseVersion = getConfigString(configs, "weaverseVersion") ?? existing.weaverseVersion;
|
|
741
799
|
existing.internal.pageAssignment = config.data.pageAssignment;
|
|
742
800
|
existing.internal.project = config.data.project;
|
|
743
801
|
if (config.navigate) {
|
|
@@ -761,6 +819,7 @@ function createWeaverseNextRuntime(config) {
|
|
|
761
819
|
() => new WeaverseNextRuntime(config)
|
|
762
820
|
);
|
|
763
821
|
runtime.pendingItemUpdates = refreshedItems;
|
|
822
|
+
rebindPageItemsToRuntime(runtime);
|
|
764
823
|
runtime.__weaverseNextRequestKey = requestKey;
|
|
765
824
|
runtime.__weaverseNextLatestData = page;
|
|
766
825
|
registerRuntime(runtime);
|
|
@@ -775,7 +834,10 @@ function bindWeaverseNextStudioRuntime(runtime) {
|
|
|
775
834
|
return false;
|
|
776
835
|
}
|
|
777
836
|
let boundRuntime = runtime;
|
|
778
|
-
|
|
837
|
+
let activeRuntime = studio.weaverse;
|
|
838
|
+
let activeRequestInfo = activeRuntime?.requestInfo;
|
|
839
|
+
let isActiveUrl = !activeRequestInfo || activeRequestInfo.pathname === runtime.requestInfo.pathname && activeRequestInfo.search === runtime.requestInfo.search;
|
|
840
|
+
if (!(boundRuntime.__weaverseNextStudioBound && isActiveUrl)) {
|
|
779
841
|
studio.init?.(runtime);
|
|
780
842
|
boundRuntime.__weaverseNextStudioBound = true;
|
|
781
843
|
return true;
|
|
@@ -787,29 +849,6 @@ function bindWeaverseNextStudioRuntime(runtime) {
|
|
|
787
849
|
});
|
|
788
850
|
return true;
|
|
789
851
|
}
|
|
790
|
-
|
|
791
|
-
// src/revalidate-item.ts
|
|
792
|
-
var DEFAULT_REVALIDATE_ENDPOINT = "/api/weaverse/revalidate";
|
|
793
|
-
async function revalidateWeaverseNextItem(runtime, draftItem, endpoint = DEFAULT_REVALIDATE_ENDPOINT) {
|
|
794
|
-
let instance = runtime.itemInstances.get(draftItem.id);
|
|
795
|
-
if (!instance) {
|
|
796
|
-
throw new Error(
|
|
797
|
-
`[weaverse-next] No live item instance for "${draftItem.id}".`
|
|
798
|
-
);
|
|
799
|
-
}
|
|
800
|
-
let response = await fetch(endpoint, {
|
|
801
|
-
method: "POST",
|
|
802
|
-
headers: { "Content-Type": "application/json" },
|
|
803
|
-
body: JSON.stringify({ draftItem })
|
|
804
|
-
});
|
|
805
|
-
if (!response.ok) {
|
|
806
|
-
throw new Error(
|
|
807
|
-
`[weaverse-next] Revalidate endpoint responded ${response.status}.`
|
|
808
|
-
);
|
|
809
|
-
}
|
|
810
|
-
let { loaderData } = await response.json();
|
|
811
|
-
instance.setData({ loaderData: loaderData ?? null });
|
|
812
|
-
}
|
|
813
852
|
var STUDIO_BIND_RETRY_INTERVAL_MS = 50;
|
|
814
853
|
var STUDIO_BIND_MAX_ATTEMPTS = 100;
|
|
815
854
|
function WeaverseNextStudioBridge(props) {
|
|
@@ -1024,7 +1063,7 @@ function resolveWeaverseNextStudioScriptSrc(context, options = {}) {
|
|
|
1024
1063
|
if (!isTrustedStudioOrigin(origin, storefrontHostname)) {
|
|
1025
1064
|
return null;
|
|
1026
1065
|
}
|
|
1027
|
-
let bundle =
|
|
1066
|
+
let bundle = isPreviewMode || isRevisionPreview ? "preview.js" : "index.js";
|
|
1028
1067
|
let version = last(searchParams, "weaverseVersion");
|
|
1029
1068
|
let url = `${origin}/static/studio/next/${bundle}`;
|
|
1030
1069
|
return version ? `${url}?v=${encodeURIComponent(version)}` : url;
|
|
@@ -1074,6 +1113,6 @@ function WeaverseNextStudioConnect(props) {
|
|
|
1074
1113
|
return null;
|
|
1075
1114
|
}
|
|
1076
1115
|
|
|
1077
|
-
export {
|
|
1116
|
+
export { ThemeTextProvider, ThemeTextStore, TranslationProvider, TranslationStore, WeaverseNextProvider, WeaverseNextRenderer, WeaverseNextRootProvider, WeaverseNextRuntime, WeaverseNextStudio, WeaverseNextStudioBridge, WeaverseNextStudioConnect, bindWeaverseNextStudioRuntime, createTranslate, createWeaverseNextClient, createWeaverseNextRuntime, createWeaverseNextStudioInternals, createWeaverseNextThemeSettingsStore, getNestedKey, interpolate, loadWeaverseNextStudioScript, resolveWeaverseNextStudioScriptSrc, useThemeSettings, useThemeText, useTranslation, useWeaverseCommerce, useWeaverseNextStudioInternals, useWeaversePageData, useWeaverseRootData };
|
|
1078
1117
|
//# sourceMappingURL=index.mjs.map
|
|
1079
1118
|
//# sourceMappingURL=index.mjs.map
|