@farm.js/core 0.1.0-beta.54 → 0.1.0-beta.56

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.
Files changed (67) hide show
  1. package/dist/{chunk-427JQ6OZ.mjs → chunk-5T2XATMK.mjs} +58 -11
  2. package/dist/chunk-5T2XATMK.mjs.map +1 -0
  3. package/dist/{chunk-J34JCW6R.mjs → chunk-FOEPWRHM.mjs} +2 -2
  4. package/dist/{chunk-BDHDDITP.mjs → chunk-FPLRESQA.mjs} +30 -18
  5. package/dist/chunk-FPLRESQA.mjs.map +1 -0
  6. package/dist/{chunk-JECGLPIS.mjs → chunk-PYIVNTDI.mjs} +4 -4
  7. package/dist/{chunk-GPHLXAFT.mjs → chunk-UH5R4J5M.mjs} +2 -2
  8. package/dist/{chunk-ENPB4CSY.mjs → chunk-XLQVJDK2.mjs} +2 -2
  9. package/dist/{chunk-ENPB4CSY.mjs.map → chunk-XLQVJDK2.mjs.map} +1 -1
  10. package/dist/{chunk-GVQ54ERX.mjs → chunk-YPKCFGA7.mjs} +9 -3
  11. package/dist/chunk-YPKCFGA7.mjs.map +1 -0
  12. package/dist/{chunk-PGZVE6P7.mjs → chunk-ZOQLQAUG.mjs} +2 -2
  13. package/dist/client/lifecycle.mjs +2 -2
  14. package/dist/client-plugins.cjs +1 -1
  15. package/dist/client-plugins.cjs.map +1 -1
  16. package/dist/client-plugins.mjs +2 -2
  17. package/dist/client.cjs +76 -23
  18. package/dist/client.cjs.map +1 -1
  19. package/dist/client.d.mts +2 -5
  20. package/dist/client.d.ts +2 -5
  21. package/dist/client.mjs +11 -11
  22. package/dist/index.cjs +85 -24
  23. package/dist/index.cjs.map +1 -1
  24. package/dist/index.d.mts +1 -1
  25. package/dist/index.d.ts +1 -1
  26. package/dist/index.mjs +17 -17
  27. package/dist/internal/build-runtime.cjs +8 -2
  28. package/dist/internal/build-runtime.cjs.map +1 -1
  29. package/dist/internal/build-runtime.mjs +3 -3
  30. package/dist/internal/client-runtime.cjs +1 -1
  31. package/dist/internal/client-runtime.cjs.map +1 -1
  32. package/dist/internal/client-runtime.mjs +2 -2
  33. package/dist/navigation.cjs +74 -20
  34. package/dist/navigation.cjs.map +1 -1
  35. package/dist/navigation.mjs +4 -4
  36. package/dist/plugin.cjs +1 -1
  37. package/dist/plugin.cjs.map +1 -1
  38. package/dist/plugin.mjs +2 -2
  39. package/dist/query/client.cjs +105 -11
  40. package/dist/query/client.cjs.map +1 -1
  41. package/dist/query/client.mjs +18 -11
  42. package/dist/query/client.mjs.map +1 -1
  43. package/dist/renderer-client.cjs +56 -12
  44. package/dist/renderer-client.cjs.map +1 -1
  45. package/dist/renderer-client.d.mts +1 -1
  46. package/dist/renderer-client.d.ts +1 -1
  47. package/dist/renderer-client.mjs +12 -11
  48. package/dist/renderer-client.mjs.map +1 -1
  49. package/dist/server.cjs +1 -1
  50. package/dist/server.cjs.map +1 -1
  51. package/dist/server.mjs +2 -2
  52. package/dist/{spa-router-BD7iUG-C.d.mts → spa-router-BV71GGW0.d.mts} +4 -3
  53. package/dist/{spa-router-swFKTqwR.d.ts → spa-router-BylM6JXm.d.ts} +4 -3
  54. package/dist/version.cjs +1 -1
  55. package/dist/version.cjs.map +1 -1
  56. package/dist/version.mjs +1 -1
  57. package/dist/vite.cjs +1 -1
  58. package/dist/vite.cjs.map +1 -1
  59. package/dist/vite.mjs +2 -2
  60. package/package.json +1 -1
  61. package/dist/chunk-427JQ6OZ.mjs.map +0 -1
  62. package/dist/chunk-BDHDDITP.mjs.map +0 -1
  63. package/dist/chunk-GVQ54ERX.mjs.map +0 -1
  64. /package/dist/{chunk-J34JCW6R.mjs.map → chunk-FOEPWRHM.mjs.map} +0 -0
  65. /package/dist/{chunk-JECGLPIS.mjs.map → chunk-PYIVNTDI.mjs.map} +0 -0
  66. /package/dist/{chunk-GPHLXAFT.mjs.map → chunk-UH5R4J5M.mjs.map} +0 -0
  67. /package/dist/{chunk-PGZVE6P7.mjs.map → chunk-ZOQLQAUG.mjs.map} +0 -0
@@ -429,6 +429,35 @@ function rejectPendingDeferred(controllers, message) {
429
429
  }
430
430
  __name(rejectPendingDeferred, "rejectPendingDeferred");
431
431
 
432
+ // src/client/history-sync.ts
433
+ var FARM_HISTORY_CHANGE_EVENT = "farm:historychange";
434
+ function notifyHistoryChange(kind) {
435
+ if (typeof window === "undefined") return;
436
+ setTimeout(() => {
437
+ if (kind === "url-search" && !getInstalledFarmSPARouter()) {
438
+ window.dispatchEvent(new PopStateEvent("popstate"));
439
+ return;
440
+ }
441
+ window.dispatchEvent(
442
+ new CustomEvent(FARM_HISTORY_CHANGE_EVENT, {
443
+ detail: { kind }
444
+ })
445
+ );
446
+ }, 0);
447
+ }
448
+ __name(notifyHistoryChange, "notifyHistoryChange");
449
+ function subscribeHistoryChange(listener) {
450
+ if (typeof window === "undefined") return () => {
451
+ };
452
+ window.addEventListener("popstate", listener);
453
+ window.addEventListener(FARM_HISTORY_CHANGE_EVENT, listener);
454
+ return () => {
455
+ window.removeEventListener("popstate", listener);
456
+ window.removeEventListener(FARM_HISTORY_CHANGE_EVENT, listener);
457
+ };
458
+ }
459
+ __name(subscribeHistoryChange, "subscribeHistoryChange");
460
+
432
461
  // src/deployment.ts
433
462
  var FARM_DEPLOYMENT_ID_HEADER = "x-farm-deployment-id";
434
463
  var FARM_DEPLOYMENT_MISMATCH_HEADER = "x-farm-deployment-mismatch";
@@ -635,6 +664,16 @@ var _SPARouter = class _SPARouter {
635
664
  this.navigationListeners = /* @__PURE__ */ new Set();
636
665
  this.navigationState = IDLE_NAVIGATION_STATE;
637
666
  this.scrollElements = /* @__PURE__ */ new Map();
667
+ this.onPopState = /* @__PURE__ */ __name((event) => {
668
+ void this.handlePopState(event);
669
+ }, "onPopState");
670
+ this.onBeforeUnload = /* @__PURE__ */ __name((event) => {
671
+ if (this.blockers.size > 0) {
672
+ event.preventDefault();
673
+ event.returnValue = "";
674
+ }
675
+ this.saveScrollPosition(window.location.pathname);
676
+ }, "onBeforeUnload");
638
677
  this.options = {
639
678
  prefetchTimeout: options.prefetchTimeout ?? 100,
640
679
  cacheMaxAge: options.cacheMaxAge ?? 3e4,
@@ -644,16 +683,16 @@ var _SPARouter = class _SPARouter {
644
683
  deploymentId: options.deploymentId ?? readBrowserDeploymentId()
645
684
  };
646
685
  if (typeof window !== "undefined") {
647
- window.addEventListener("popstate", this.handlePopState.bind(this));
648
- window.addEventListener("beforeunload", (event) => {
649
- if (this.blockers.size > 0) {
650
- event.preventDefault();
651
- event.returnValue = "";
652
- }
653
- this.saveScrollPosition(window.location.pathname);
654
- });
686
+ window.addEventListener("popstate", this.onPopState);
687
+ window.addEventListener("beforeunload", this.onBeforeUnload);
655
688
  }
656
689
  }
690
+ /** Remove global listeners. Intended for tests and teardown. */
691
+ destroy() {
692
+ if (typeof window === "undefined") return;
693
+ window.removeEventListener("popstate", this.onPopState);
694
+ window.removeEventListener("beforeunload", this.onBeforeUnload);
695
+ }
657
696
  /**
658
697
  * Set the navigation handler that updates React
659
698
  */
@@ -1047,7 +1086,7 @@ var _SPARouter = class _SPARouter {
1047
1086
  } else {
1048
1087
  window.history.pushState(nextState, "", url);
1049
1088
  }
1050
- window.dispatchEvent(new PopStateEvent("popstate", { state: nextState }));
1089
+ notifyHistoryChange("page-state");
1051
1090
  }
1052
1091
  /**
1053
1092
  * Save scroll position for a path
@@ -1116,11 +1155,16 @@ function dispatchDeploymentMismatch(error) {
1116
1155
  window.dispatchEvent(new CustomEvent("farm:deployment-mismatch", { detail: error }));
1117
1156
  }
1118
1157
  __name(dispatchDeploymentMismatch, "dispatchDeploymentMismatch");
1158
+ function getInstalledFarmSPARouter() {
1159
+ if (typeof window === "undefined") return void 0;
1160
+ return window.__FARM_SPA_ROUTER__;
1161
+ }
1162
+ __name(getInstalledFarmSPARouter, "getInstalledFarmSPARouter");
1119
1163
  function getRouter() {
1120
1164
  if (typeof window === "undefined") {
1121
1165
  return new SPARouter();
1122
1166
  }
1123
- const installedRouter = window.__FARM_SPA_ROUTER__;
1167
+ const installedRouter = getInstalledFarmSPARouter();
1124
1168
  if (installedRouter) {
1125
1169
  routerInstance = installedRouter;
1126
1170
  return installedRouter;
@@ -2413,11 +2457,11 @@ function createRendererRouter(options = {}) {
2413
2457
  listener();
2414
2458
  }, "notify");
2415
2459
  const unsubscribeNavigation = router.subscribeNavigation(notify);
2416
- window.addEventListener("popstate", notify);
2460
+ const unsubscribeHistory = subscribeHistoryChange(notify);
2417
2461
  read();
2418
2462
  return () => {
2419
2463
  unsubscribeNavigation();
2420
- window.removeEventListener("popstate", notify);
2464
+ unsubscribeHistory();
2421
2465
  };
2422
2466
  },
2423
2467
  push(href, navigateOptions) {