@weaverse/hydrogen 5.15.0 → 5.15.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.js +72 -15
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +72 -15
- package/dist/index.mjs.map +1 -1
- package/package.json +2 -2
package/dist/index.js
CHANGED
|
@@ -529,8 +529,8 @@ function getQueriesFromSearch(search) {
|
|
|
529
529
|
}
|
|
530
530
|
return queries;
|
|
531
531
|
}
|
|
532
|
-
function
|
|
533
|
-
if (!
|
|
532
|
+
function normalizeRequestInfo(params, browserLocation = getBrowserLocation()) {
|
|
533
|
+
if (!browserLocation) {
|
|
534
534
|
return params;
|
|
535
535
|
}
|
|
536
536
|
let { pathname, search } = browserLocation;
|
|
@@ -547,6 +547,27 @@ function normalizeDesignModeRequestInfo(params, browserLocation = getBrowserLoca
|
|
|
547
547
|
}
|
|
548
548
|
};
|
|
549
549
|
}
|
|
550
|
+
|
|
551
|
+
// src/utils/sync-reused-instance.ts
|
|
552
|
+
function syncReusedInstance(weaverse, params) {
|
|
553
|
+
weaverse.requestInfo = params.requestInfo;
|
|
554
|
+
weaverse.internal = params.internal;
|
|
555
|
+
let dataChanged = JSON.stringify(weaverse.data) !== JSON.stringify(params.data);
|
|
556
|
+
let contextChanged = JSON.stringify(weaverse.dataContext ?? null) !== JSON.stringify(params.dataContext ?? null);
|
|
557
|
+
if (contextChanged) {
|
|
558
|
+
weaverse.dataContext = params.dataContext ?? null;
|
|
559
|
+
}
|
|
560
|
+
if (dataChanged) {
|
|
561
|
+
weaverse.setProjectData(params.data);
|
|
562
|
+
} else if (contextChanged) {
|
|
563
|
+
for (const { id } of params.data?.items || []) {
|
|
564
|
+
weaverse.itemInstances.get(id)?.setData({});
|
|
565
|
+
}
|
|
566
|
+
}
|
|
567
|
+
if (dataChanged || contextChanged) {
|
|
568
|
+
weaverse.triggerUpdate();
|
|
569
|
+
}
|
|
570
|
+
}
|
|
550
571
|
var ThemeSettingsStore = class {
|
|
551
572
|
settings = {};
|
|
552
573
|
schema;
|
|
@@ -651,6 +672,24 @@ function useThemeSettingsStore() {
|
|
|
651
672
|
}
|
|
652
673
|
|
|
653
674
|
// src/utils/use-studio.ts
|
|
675
|
+
var STUDIO_READY_POLL_MS = 50;
|
|
676
|
+
var STUDIO_READY_TIMEOUT_MS = 5e3;
|
|
677
|
+
function waitForStudio() {
|
|
678
|
+
return new Promise((resolve) => {
|
|
679
|
+
let startedAt = Date.now();
|
|
680
|
+
function check() {
|
|
681
|
+
if (hasWeaverseStudio(window)) {
|
|
682
|
+
return resolve(window.weaverseStudio);
|
|
683
|
+
}
|
|
684
|
+
if (Date.now() - startedAt >= STUDIO_READY_TIMEOUT_MS) {
|
|
685
|
+
console.warn("[Weaverse] Studio script did not initialize in time");
|
|
686
|
+
return resolve(null);
|
|
687
|
+
}
|
|
688
|
+
setTimeout(check, STUDIO_READY_POLL_MS);
|
|
689
|
+
}
|
|
690
|
+
check();
|
|
691
|
+
});
|
|
692
|
+
}
|
|
654
693
|
function useStudio(weaverse) {
|
|
655
694
|
let { revalidate } = reactRouter.useRevalidator();
|
|
656
695
|
let navigation = reactRouter.useNavigation();
|
|
@@ -680,11 +719,7 @@ function useStudio(weaverse) {
|
|
|
680
719
|
themeTextStore
|
|
681
720
|
};
|
|
682
721
|
let studioSrc = `${weaverseHost}/static/studio/hydrogen/index.js?v=${weaverseVersion}`;
|
|
683
|
-
react.loadScript(studioSrc).then(() =>
|
|
684
|
-
if (hasWeaverseStudio(window)) {
|
|
685
|
-
window.weaverseStudio.init(weaverse);
|
|
686
|
-
}
|
|
687
|
-
}).catch(console.error);
|
|
722
|
+
react.loadScript(studioSrc).then(waitForStudio).then((studio) => studio?.init(weaverse)).catch(console.error);
|
|
688
723
|
}
|
|
689
724
|
}
|
|
690
725
|
}, [pathname, search, navigation.state]);
|
|
@@ -866,19 +901,20 @@ var WeaverseHydrogen = class extends react.Weaverse {
|
|
|
866
901
|
};
|
|
867
902
|
};
|
|
868
903
|
function createWeaverseInstance(params) {
|
|
869
|
-
const normalizedParams =
|
|
904
|
+
const normalizedParams = normalizeRequestInfo(params);
|
|
870
905
|
if (react.isBrowser) {
|
|
871
906
|
window.__weaverses = window.__weaverses || {};
|
|
872
|
-
|
|
873
|
-
|
|
874
|
-
|
|
875
|
-
|
|
876
|
-
|
|
877
|
-
if (weaverse?.isDesignMode) {
|
|
907
|
+
const existing = window.__weaverses[normalizedParams.pageId];
|
|
908
|
+
const isReused = existing?.requestInfo?.pathname === normalizedParams.requestInfo.pathname && existing?.requestInfo?.search === normalizedParams.requestInfo.search;
|
|
909
|
+
const weaverse = isReused ? existing : new WeaverseHydrogen(normalizedParams);
|
|
910
|
+
window.__weaverses[normalizedParams.pageId] = weaverse;
|
|
911
|
+
if (weaverse.isDesignMode) {
|
|
878
912
|
weaverse.requestInfo = normalizedParams.requestInfo;
|
|
879
913
|
if (hasWeaverseStudio(window)) {
|
|
880
914
|
window.weaverseStudio.refreshStudio(normalizedParams);
|
|
881
915
|
}
|
|
916
|
+
} else if (isReused) {
|
|
917
|
+
syncReusedInstance(weaverse, normalizedParams);
|
|
882
918
|
}
|
|
883
919
|
return weaverse;
|
|
884
920
|
}
|
|
@@ -994,6 +1030,25 @@ function useThemeSettings() {
|
|
|
994
1030
|
);
|
|
995
1031
|
return settings;
|
|
996
1032
|
}
|
|
1033
|
+
|
|
1034
|
+
// src/utils/normalize-page-url.ts
|
|
1035
|
+
var KEPT_PARAM_RE = /^(?:__revisionId|isDesignMode|weaverse)/;
|
|
1036
|
+
function normalizePageUrl(url) {
|
|
1037
|
+
let parsed;
|
|
1038
|
+
try {
|
|
1039
|
+
parsed = new URL(url);
|
|
1040
|
+
} catch {
|
|
1041
|
+
return url;
|
|
1042
|
+
}
|
|
1043
|
+
const kept = [...parsed.searchParams].filter(
|
|
1044
|
+
([key]) => KEPT_PARAM_RE.test(key)
|
|
1045
|
+
);
|
|
1046
|
+
kept.sort(([a], [b]) => a.localeCompare(b));
|
|
1047
|
+
const search = new URLSearchParams(kept).toString();
|
|
1048
|
+
return `${parsed.origin}${parsed.pathname}${search ? `?${search}` : ""}`;
|
|
1049
|
+
}
|
|
1050
|
+
|
|
1051
|
+
// src/weaverse-client.ts
|
|
997
1052
|
var CACHE_DURATIONS = {
|
|
998
1053
|
/** Short browser freshness for content that can change in Builder */
|
|
999
1054
|
SHORT: 60,
|
|
@@ -1661,7 +1716,9 @@ var WeaverseClient = class {
|
|
|
1661
1716
|
projectId: effectiveProjectId,
|
|
1662
1717
|
// Use effective (potentially overridden) projectId
|
|
1663
1718
|
params: pageLoadParams,
|
|
1664
|
-
|
|
1719
|
+
// Stripped to pathname + Weaverse params — tracking params would
|
|
1720
|
+
// fragment the subrequest cache key (see normalizePageUrl).
|
|
1721
|
+
url: normalizePageUrl(request.url)
|
|
1665
1722
|
};
|
|
1666
1723
|
const reqInit = {
|
|
1667
1724
|
method: "POST",
|