one 1.25.7 → 1.25.8

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 (85) hide show
  1. package/dist/cjs/cli/prebuild.cjs +2 -0
  2. package/dist/cjs/cli/prebuild.native.js +2 -0
  3. package/dist/cjs/cli/prebuild.native.js.map +1 -1
  4. package/dist/cjs/cli/prebuild.test.cjs +45 -0
  5. package/dist/cjs/cli/prebuild.test.native.js +54 -0
  6. package/dist/cjs/cli/prebuild.test.native.js.map +1 -0
  7. package/dist/cjs/createHandleRequest.cjs +5 -1
  8. package/dist/cjs/createHandleRequest.native.js +5 -1
  9. package/dist/cjs/createHandleRequest.native.js.map +1 -1
  10. package/dist/cjs/createHandleRequest.test.cjs +59 -1
  11. package/dist/cjs/createHandleRequest.test.native.js +70 -0
  12. package/dist/cjs/createHandleRequest.test.native.js.map +1 -1
  13. package/dist/cjs/server/oneServe.cjs +0 -2
  14. package/dist/cjs/server/oneServe.native.js +0 -2
  15. package/dist/cjs/server/oneServe.native.js.map +1 -1
  16. package/dist/cjs/server/workerHandler.cjs +1 -1
  17. package/dist/cjs/server/workerHandler.native.js +1 -1
  18. package/dist/cjs/server/workerHandler.native.js.map +1 -1
  19. package/dist/cjs/server/workerHandler.test.cjs +117 -0
  20. package/dist/cjs/server/workerHandler.test.native.js +137 -0
  21. package/dist/cjs/server/workerHandler.test.native.js.map +1 -0
  22. package/dist/cjs/views/ScrollBehavior.cjs +10 -6
  23. package/dist/cjs/views/ScrollBehavior.native.js +10 -6
  24. package/dist/cjs/views/ScrollBehavior.native.js.map +1 -1
  25. package/dist/cjs/views/ScrollBehavior.test.cjs +132 -0
  26. package/dist/cjs/views/ScrollBehavior.test.native.js +184 -0
  27. package/dist/cjs/views/ScrollBehavior.test.native.js.map +1 -0
  28. package/dist/esm/cli/prebuild.mjs +2 -0
  29. package/dist/esm/cli/prebuild.mjs.map +1 -1
  30. package/dist/esm/cli/prebuild.native.js +2 -0
  31. package/dist/esm/cli/prebuild.native.js.map +1 -1
  32. package/dist/esm/cli/prebuild.test.mjs +46 -0
  33. package/dist/esm/cli/prebuild.test.mjs.map +1 -0
  34. package/dist/esm/cli/prebuild.test.native.js +52 -0
  35. package/dist/esm/cli/prebuild.test.native.js.map +1 -0
  36. package/dist/esm/createHandleRequest.mjs +5 -2
  37. package/dist/esm/createHandleRequest.mjs.map +1 -1
  38. package/dist/esm/createHandleRequest.native.js +5 -2
  39. package/dist/esm/createHandleRequest.native.js.map +1 -1
  40. package/dist/esm/createHandleRequest.test.mjs +59 -1
  41. package/dist/esm/createHandleRequest.test.mjs.map +1 -1
  42. package/dist/esm/createHandleRequest.test.native.js +70 -0
  43. package/dist/esm/createHandleRequest.test.native.js.map +1 -1
  44. package/dist/esm/server/oneServe.mjs +0 -2
  45. package/dist/esm/server/oneServe.mjs.map +1 -1
  46. package/dist/esm/server/oneServe.native.js +0 -2
  47. package/dist/esm/server/oneServe.native.js.map +1 -1
  48. package/dist/esm/server/workerHandler.mjs +2 -2
  49. package/dist/esm/server/workerHandler.mjs.map +1 -1
  50. package/dist/esm/server/workerHandler.native.js +2 -2
  51. package/dist/esm/server/workerHandler.native.js.map +1 -1
  52. package/dist/esm/server/workerHandler.test.mjs +118 -0
  53. package/dist/esm/server/workerHandler.test.mjs.map +1 -0
  54. package/dist/esm/server/workerHandler.test.native.js +135 -0
  55. package/dist/esm/server/workerHandler.test.native.js.map +1 -0
  56. package/dist/esm/views/ScrollBehavior.mjs +10 -6
  57. package/dist/esm/views/ScrollBehavior.mjs.map +1 -1
  58. package/dist/esm/views/ScrollBehavior.native.js +10 -6
  59. package/dist/esm/views/ScrollBehavior.native.js.map +1 -1
  60. package/dist/esm/views/ScrollBehavior.test.mjs +109 -0
  61. package/dist/esm/views/ScrollBehavior.test.mjs.map +1 -0
  62. package/dist/esm/views/ScrollBehavior.test.native.js +158 -0
  63. package/dist/esm/views/ScrollBehavior.test.native.js.map +1 -0
  64. package/package.json +9 -9
  65. package/src/cli/prebuild.test.ts +48 -0
  66. package/src/cli/prebuild.ts +3 -0
  67. package/src/createHandleRequest.test.ts +55 -1
  68. package/src/createHandleRequest.ts +8 -1
  69. package/src/server/oneServe.ts +0 -2
  70. package/src/server/workerHandler.test.ts +125 -0
  71. package/src/server/workerHandler.ts +3 -2
  72. package/src/views/ScrollBehavior.test.tsx +137 -0
  73. package/src/views/ScrollBehavior.tsx +18 -8
  74. package/types/cli/prebuild.d.ts.map +1 -1
  75. package/types/cli/prebuild.test.d.ts +2 -0
  76. package/types/cli/prebuild.test.d.ts.map +1 -0
  77. package/types/createHandleRequest.d.ts +1 -0
  78. package/types/createHandleRequest.d.ts.map +1 -1
  79. package/types/server/oneServe.d.ts.map +1 -1
  80. package/types/server/workerHandler.d.ts.map +1 -1
  81. package/types/server/workerHandler.test.d.ts +2 -0
  82. package/types/server/workerHandler.test.d.ts.map +1 -0
  83. package/types/views/ScrollBehavior.d.ts.map +1 -1
  84. package/types/views/ScrollBehavior.test.d.ts +2 -0
  85. package/types/views/ScrollBehavior.test.d.ts.map +1 -0
@@ -0,0 +1,135 @@
1
+ import { afterEach, describe, expect, it, vi } from "vitest";
2
+ import { createWorkerHandler } from "./workerHandler.native.js";
3
+ function _instanceof(left, right) {
4
+ if (right != null && typeof Symbol !== "undefined" && right[Symbol.hasInstance]) {
5
+ return !!right[Symbol.hasInstance](left);
6
+ } else {
7
+ return left instanceof right;
8
+ }
9
+ }
10
+ var pageRoute = {
11
+ file: "app/some-page.tsx",
12
+ page: "/some-page",
13
+ namedRegex: "^/some-page(?:/)?$",
14
+ urlPath: "/some-page",
15
+ urlCleanPath: "/some-page",
16
+ routeKeys: {},
17
+ type: "ssr",
18
+ middlewares: []
19
+ };
20
+ var apiRoute = {
21
+ file: "app/api/status+api.ts",
22
+ page: "/api/status",
23
+ namedRegex: "^/api/status(?:/)?$",
24
+ urlPath: "/api/status",
25
+ urlCleanPath: "/api/status",
26
+ routeKeys: {},
27
+ type: "api",
28
+ middlewares: []
29
+ };
30
+ var buildInfo = {
31
+ constants: {
32
+ CACHE_KEY: "test"
33
+ },
34
+ routeToBuildInfo: {
35
+ [pageRoute.file]: {
36
+ type: "ssr",
37
+ path: pageRoute.page,
38
+ routeFile: pageRoute.file,
39
+ middlewares: [],
40
+ preloadPath: "",
41
+ cssPreloadPath: "",
42
+ loaderPath: "",
43
+ cleanPath: pageRoute.page,
44
+ htmlPath: "",
45
+ clientJsPath: "",
46
+ serverJsPath: "",
47
+ params: {},
48
+ preloads: [],
49
+ css: [],
50
+ layoutCSS: []
51
+ }
52
+ },
53
+ pathToRoute: {},
54
+ routeMap: {},
55
+ manifest: {
56
+ pageRoutes: [pageRoute],
57
+ apiRoutes: [apiRoute],
58
+ allRoutes: [pageRoute, apiRoute]
59
+ },
60
+ preloads: {},
61
+ cssPreloads: {},
62
+ loaders: {}
63
+ };
64
+ var lazyRoutes = {
65
+ serverEntry: async function () {
66
+ return {
67
+ default: {
68
+ render: function () {
69
+ return "<html></html>";
70
+ }
71
+ }
72
+ };
73
+ },
74
+ pages: {
75
+ [pageRoute.file]: async function () {
76
+ return {};
77
+ }
78
+ },
79
+ api: {
80
+ [apiRoute.page]: async function () {
81
+ return {
82
+ HEAD: function () {
83
+ return new Response(null, {
84
+ status: 204
85
+ });
86
+ }
87
+ };
88
+ }
89
+ },
90
+ middlewares: {}
91
+ };
92
+ function createHandler() {
93
+ vi.stubEnv("ONE_BUFFERED_SSR", "1");
94
+ return createWorkerHandler({
95
+ oneOptions: {
96
+ web: {
97
+ defaultRenderMode: "ssr"
98
+ }
99
+ },
100
+ buildInfo,
101
+ lazyRoutes
102
+ }).handleRequest;
103
+ }
104
+ afterEach(function () {
105
+ vi.unstubAllEnvs();
106
+ });
107
+ describe("createWorkerHandler", function () {
108
+ it("answers HEAD page requests exactly like GET", async function () {
109
+ var handleRequest = createHandler();
110
+ var get = await handleRequest(new Request("https://example.com/some-page"));
111
+ var head = await handleRequest(new Request("https://example.com/some-page", {
112
+ method: "HEAD"
113
+ }));
114
+ if (!_instanceof(get, Response) || !_instanceof(head, Response)) {
115
+ throw new Error("expected both GET and HEAD to return a Response");
116
+ }
117
+ expect(get.status).toBe(200);
118
+ expect(head.status).toBe(get.status);
119
+ expect(head.headers.get("content-type")).toBe(get.headers.get("content-type"));
120
+ });
121
+ it("does not route POST requests to page handlers", async function () {
122
+ var response = await createHandler()(new Request("https://example.com/some-page", {
123
+ method: "POST"
124
+ }));
125
+ expect(response).toBeNull();
126
+ });
127
+ it("continues routing HEAD requests to API handlers", async function () {
128
+ var response = await createHandler()(new Request("https://example.com/api/status", {
129
+ method: "HEAD"
130
+ }));
131
+ expect(response).toBeInstanceOf(Response);
132
+ expect(response === null || response === void 0 ? void 0 : response.status).toBe(204);
133
+ });
134
+ });
135
+ //# sourceMappingURL=workerHandler.test.native.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["afterEach","describe","expect","it","vi","createWorkerHandler","_instanceof","left","right","Symbol","hasInstance","pageRoute","file","page","namedRegex","urlPath","urlCleanPath","routeKeys","type","middlewares","apiRoute","buildInfo","constants","CACHE_KEY","routeToBuildInfo","path","routeFile","preloadPath","cssPreloadPath","loaderPath","cleanPath","htmlPath","clientJsPath","serverJsPath","params","preloads","css","layoutCSS","pathToRoute","routeMap","manifest","pageRoutes","apiRoutes","allRoutes","cssPreloads","loaders","lazyRoutes","serverEntry","default","render","pages","api","HEAD","Response","status","createHandler","stubEnv","oneOptions","web","defaultRenderMode","handleRequest"],"sources":["../../../src/server/workerHandler.test.ts"],"sourcesContent":[null],"mappings":"AAAA,SAASA,SAAA,EAAWC,QAAA,EAAUC,MAAA,EAAQC,EAAA,EAAIC,EAAA,QAAU;AAEpD,SAASC,mBAAA,QAA4C;AAErD,SAAMC,WAAYA,CAAAC,IAAA,EAAAC,KAAA;EAChB,IAAAA,KAAM,mBAAAC,MAAA,oBAAAD,KAAA,CAAAC,MAAA,CAAAC,WAAA;IACN,OAAM,EAAAF,KAAA,CAAAC,MAAA,CAAAC,WAAA,EAAAH,IAAA;EACN;IACA,OAASA,IAAA,YAAAC,KAAA;EACT;AAAc;AACF,IACZG,SAAM;EACNC,IAAA,qBAAc;EAChBC,IAAA;EAEAC,UAAM,sBAAW;EACfC,OAAM;EACNC,YAAM;EACNC,SAAA,GAAY;EACZC,IAAA,OAAS;EACTC,WAAA;AAAc;AACF,IACZC,QAAM;EACNR,IAAA,yBAAc;EAChBC,IAAA;EAEAC,UAAM,uBAAY;EAChBC,OAAA,eAAa;EACbC,YAAA,eAAkB;EAAAC,SACf,IAAU;EAAOC,IAChB,OAAM;EAAAC,WACA;AAAU;AACK,IAAAE,SACrB;EAAcC,SACd;IAAaC,SACb;EAAgB;EACJC,gBACD;IAAU,CAAAb,SACrB,CAAAC,IAAU;MACVM,IAAA;MACAO,IAAA,EAAAd,SAAc,CAAAE,IAAA;MACda,SAAS,EAAAf,SAAA,CAAAC,IAAA;MACTO,WAAW;MACXQ,WAAM;MACNC,cAAY;MACdC,UAAA;MACFC,SAAA,EAAAnB,SAAA,CAAAE,IAAA;MACAkB,QAAA,EAAc;MACdC,YAAW;MACXC,YAAU;MACRC,MAAA,IAAY;MACZC,QAAA,EAAY;MACZC,GAAA;MACFC,SAAA;IACA;EACA;EACAC,WAAU;EACZC,QAAA;EAEAC,QAAM;IACJC,UAAA,EAAa,CACX9B,SAAS;IAET+B,SAAA,GACFtB,QAAA,CACA;IACEuB,SAAC,EAAU,CACbhC,SAAA,EACAS,QAAK;EAC2B;EACkBe,QAChD;EACFS,WAAA;EACAC,OAAA;AACF;AAEA,IAAAC,UAAS;EACPC,WAAW,iBAAAA,CAAA;IACX,OAAO;MACLC,OAAA;QACAC,MAAA,WAAAA,CAAA;UACA;QACC;MACL;IAEA;EACE;EACDC,KAAA;IAED,CAAAvC,SAAS,CAAAC,IAAA,qBAA6B;MACjC;IACD;EACA;EACAuC,GAAA;IAAmB,CAAA/B,QACb,CAAAP,IAAQ;MACd;QAEIuC,IAAE,WAAAA,CAAA,EAAe;UACnB,OAAU,IAAAC,QAAM;YAClBC,MAAA;UAIA,CAAO;QACP;MACA;IACD;EAED;EACEnC,WAAM;AAA+B;AAC4B,SACjEoC,cAAA;EAEAnD,EAAA,CAAAoD,OAAO,mBAAmB;EAC5B,OAACnD,mBAAA;IAEDoD,UAAG;MACDC,GAAA,EAAM;QACJC,iBAAY;MACd;IAEA;IACAtC,SAAO;IACRyB;EACF,GAAAc,aAAA","ignoreList":[]}
@@ -5,7 +5,6 @@ const KEY = "one-sr";
5
5
  const GROUP_KEY = "one-sr-groups";
6
6
  const getState = () => JSON.parse(sessionStorage.getItem(KEY) || "{}");
7
7
  const getGroupState = () => JSON.parse(sessionStorage.getItem(GROUP_KEY) || "{}");
8
- let isFirstLoad = true;
9
8
  let activeGroups = /* @__PURE__ */new Set();
10
9
  function registerScrollGroup(groupId) {
11
10
  activeGroups.add(groupId);
@@ -16,7 +15,7 @@ function registerScrollGroup(groupId) {
16
15
  function getGroupKey(pathname) {
17
16
  let longestMatch = null;
18
17
  for (const group of activeGroups) {
19
- if (pathname.startsWith(group) && (!longestMatch || group.length > longestMatch.length)) {
18
+ if ((pathname === group || pathname.startsWith(`${group}/`)) && (!longestMatch || group.length > longestMatch.length)) {
20
19
  longestMatch = group;
21
20
  }
22
21
  }
@@ -72,6 +71,9 @@ function configure(props) {
72
71
  return;
73
72
  }
74
73
  disable?.();
74
+ const initialLocation = `${window.location.pathname}${window.location.search}${window.location.hash}`;
75
+ let isFirstStateChange = true;
76
+ previousPathname = window.location.pathname;
75
77
  const popStateController = new AbortController();
76
78
  window.addEventListener("popstate", () => {
77
79
  didPop = true;
@@ -85,10 +87,12 @@ function configure(props) {
85
87
  }
86
88
  });
87
89
  const disposeOnRootState = subscribeToRootState(state => {
88
- if (isFirstLoad) {
89
- isFirstLoad = false;
90
- previousPathname = window.location.pathname;
91
- return;
90
+ if (isFirstStateChange) {
91
+ isFirstStateChange = false;
92
+ const currentLocation = `${window.location.pathname}${window.location.search}${window.location.hash}`;
93
+ if (currentLocation === initialLocation) {
94
+ return;
95
+ }
92
96
  }
93
97
  if (state.linkOptions?.scroll === false) {
94
98
  return;
@@ -1 +1 @@
1
- {"version":3,"names":["useEffect","setLastAction","subscribeToLoadingState","subscribeToRootState","KEY","GROUP_KEY","getState","JSON","parse","sessionStorage","getItem","getGroupState","isFirstLoad","activeGroups","Set","registerScrollGroup","groupId","add","delete","getGroupKey","pathname","longestMatch","group","startsWith","length","restorePosition","positions","saved","window","location","setTimeout","scrollTo","error","console","removeItem","restoreGroupPosition","didPop","previousPathname","rememberScrollPosition","state","scrollY","setItem","stringify","groupKey","groupState","disable","configure","props","addEventListener","popStateController","AbortController","signal","disposeOnLoadState","disposeOnRootState","linkOptions","scroll","hash","currentPathname","scrollToHash","prevGroup","currentGroup","scrollGroup","abort","id","slice","el","document","getElementById","scrollIntoView","behavior","ScrollBehavior","process","env","VITE_ENVIRONMENT"],"sources":["../../../src/views/ScrollBehavior.tsx"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["useEffect","setLastAction","subscribeToLoadingState","subscribeToRootState","KEY","GROUP_KEY","getState","JSON","parse","sessionStorage","getItem","getGroupState","activeGroups","Set","registerScrollGroup","groupId","add","delete","getGroupKey","pathname","longestMatch","group","startsWith","length","restorePosition","positions","saved","window","location","setTimeout","scrollTo","error","console","removeItem","restoreGroupPosition","didPop","previousPathname","rememberScrollPosition","state","scrollY","setItem","stringify","groupKey","groupState","disable","configure","props","addEventListener","initialLocation","search","hash","isFirstStateChange","popStateController","AbortController","signal","disposeOnLoadState","disposeOnRootState","currentLocation","linkOptions","scroll","currentPathname","scrollToHash","prevGroup","currentGroup","scrollGroup","abort","id","slice","el","document","getElementById","scrollIntoView","behavior","ScrollBehavior","process","env","VITE_ENVIRONMENT"],"sources":["../../../src/views/ScrollBehavior.tsx"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
@@ -9,7 +9,6 @@ var getState = function () {
9
9
  var getGroupState = function () {
10
10
  return JSON.parse(sessionStorage.getItem(GROUP_KEY) || "{}");
11
11
  };
12
- var isFirstLoad = true;
13
12
  var activeGroups = /* @__PURE__ */new Set();
14
13
  function registerScrollGroup(groupId) {
15
14
  activeGroups.add(groupId);
@@ -25,7 +24,7 @@ function getGroupKey(pathname) {
25
24
  try {
26
25
  for (var _iterator = activeGroups[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
27
26
  var group = _step.value;
28
- if (pathname.startsWith(group) && (!longestMatch || group.length > longestMatch.length)) {
27
+ if ((pathname === group || pathname.startsWith(`${group}/`)) && (!longestMatch || group.length > longestMatch.length)) {
29
28
  longestMatch = group;
30
29
  }
31
30
  }
@@ -95,6 +94,9 @@ function configure(props) {
95
94
  return;
96
95
  }
97
96
  disable === null || disable === void 0 ? void 0 : disable();
97
+ var initialLocation = `${window.location.pathname}${window.location.search}${window.location.hash}`;
98
+ var isFirstStateChange = true;
99
+ previousPathname = window.location.pathname;
98
100
  var popStateController = new AbortController();
99
101
  window.addEventListener("popstate", function () {
100
102
  didPop = true;
@@ -109,10 +111,12 @@ function configure(props) {
109
111
  });
110
112
  var disposeOnRootState = subscribeToRootState(function (state) {
111
113
  var _state_linkOptions;
112
- if (isFirstLoad) {
113
- isFirstLoad = false;
114
- previousPathname = window.location.pathname;
115
- return;
114
+ if (isFirstStateChange) {
115
+ isFirstStateChange = false;
116
+ var currentLocation = `${window.location.pathname}${window.location.search}${window.location.hash}`;
117
+ if (currentLocation === initialLocation) {
118
+ return;
119
+ }
116
120
  }
117
121
  if (((_state_linkOptions = state.linkOptions) === null || _state_linkOptions === void 0 ? void 0 : _state_linkOptions.scroll) === false) {
118
122
  return;
@@ -1 +1 @@
1
- {"version":3,"names":["useEffect","setLastAction","subscribeToLoadingState","subscribeToRootState","KEY","GROUP_KEY","getState","JSON","parse","sessionStorage","getItem","getGroupState","isFirstLoad","activeGroups","Set","registerScrollGroup","groupId","add","delete","getGroupKey","pathname","longestMatch","_iteratorNormalCompletion","_didIteratorError","_iteratorError","_iterator","Symbol","iterator","_step","next","done","group","value","startsWith","length","err","return","restorePosition","positions","saved","window","location","setTimeout","scrollTo","error","console","removeItem","restoreGroupPosition","didPop","previousPathname","rememberScrollPosition","state","scrollY","setItem","stringify","groupKey","groupState","disable","configure","props","addEventListener","popStateController","AbortController","signal","disposeOnLoadState","disposeOnRootState","_state_linkOptions","linkOptions","scroll","hash","currentPathname","scrollToHash","_state_linkOptions1","prevGroup","currentGroup","scrollGroup","abort"],"sources":["../../../src/views/ScrollBehavior.tsx"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["useEffect","setLastAction","subscribeToLoadingState","subscribeToRootState","KEY","GROUP_KEY","getState","JSON","parse","sessionStorage","getItem","getGroupState","activeGroups","Set","registerScrollGroup","groupId","add","delete","getGroupKey","pathname","longestMatch","_iteratorNormalCompletion","_didIteratorError","_iteratorError","_iterator","Symbol","iterator","_step","next","done","group","value","startsWith","length","err","return","restorePosition","positions","saved","window","location","setTimeout","scrollTo","error","console","removeItem","restoreGroupPosition","didPop","previousPathname","rememberScrollPosition","state","scrollY","setItem","stringify","groupKey","groupState","disable","configure","props","addEventListener","initialLocation","search","hash","isFirstStateChange","popStateController","AbortController","signal","disposeOnLoadState","disposeOnRootState","_state_linkOptions","currentLocation","linkOptions","scroll","currentPathname","scrollToHash","_state_linkOptions1","prevGroup","currentGroup","scrollGroup","abort"],"sources":["../../../src/views/ScrollBehavior.tsx"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,109 @@
1
+ import TestRenderer, { act } from "react-test-renderer";
2
+ import { afterEach, beforeEach, describe, expect, it, vi } from "vitest";
3
+ import { registerScrollGroup, ScrollBehavior } from "./ScrollBehavior.mjs";
4
+ import { jsx } from "react/jsx-runtime";
5
+ const subscriptions = vi.hoisted(() => ({
6
+ loading: void 0,
7
+ root: void 0
8
+ }));
9
+ vi.mock("../router/lastAction", () => ({
10
+ setLastAction: vi.fn()
11
+ }));
12
+ vi.mock("../router/router", () => ({
13
+ subscribeToLoadingState: subscriber => {
14
+ subscriptions.loading = subscriber;
15
+ return () => {
16
+ subscriptions.loading = void 0;
17
+ };
18
+ },
19
+ subscribeToRootState: subscriber => {
20
+ subscriptions.root = subscriber;
21
+ return () => {
22
+ subscriptions.root = void 0;
23
+ };
24
+ }
25
+ }));
26
+ globalThis.IS_REACT_ACT_ENVIRONMENT = true;
27
+ let renderer;
28
+ let location;
29
+ let scrollTo;
30
+ beforeEach(() => {
31
+ process.env.VITE_ENVIRONMENT = "client";
32
+ location = {
33
+ pathname: "/",
34
+ search: "",
35
+ hash: ""
36
+ };
37
+ scrollTo = vi.fn();
38
+ const windowMock = Object.assign(new EventTarget(), {
39
+ location,
40
+ scrollTo,
41
+ scrollY: 500
42
+ });
43
+ const storage = /* @__PURE__ */new Map();
44
+ vi.stubGlobal("window", windowMock);
45
+ vi.stubGlobal("document", {
46
+ getElementById: vi.fn()
47
+ });
48
+ vi.stubGlobal("sessionStorage", {
49
+ getItem: key => storage.get(key) ?? null,
50
+ setItem: (key, value) => storage.set(key, value),
51
+ removeItem: key => storage.delete(key)
52
+ });
53
+ act(() => {
54
+ renderer = TestRenderer.create(/* @__PURE__ */jsx(ScrollBehavior, {}));
55
+ });
56
+ });
57
+ afterEach(() => {
58
+ act(() => renderer?.unmount());
59
+ renderer = void 0;
60
+ vi.useRealTimers();
61
+ vi.unstubAllGlobals();
62
+ delete process.env.VITE_ENVIRONMENT;
63
+ });
64
+ describe("ScrollBehavior initial navigation", () => {
65
+ it("does not scroll when the navigator publishes its initial state after mount", () => {
66
+ act(() => subscriptions.root?.({}));
67
+ expect(scrollTo).not.toHaveBeenCalled();
68
+ });
69
+ it("scrolls to the top when the first state notification is a real navigation", () => {
70
+ location.pathname = "/compat/react-native-gesture-handler";
71
+ act(() => subscriptions.root?.({}));
72
+ expect(scrollTo).toHaveBeenCalledWith(0, 0);
73
+ });
74
+ it("handles a query change as a first navigation", () => {
75
+ location.search = "?platform=ios";
76
+ act(() => subscriptions.root?.({}));
77
+ expect(scrollTo).toHaveBeenCalledWith(0, 0);
78
+ });
79
+ });
80
+ describe("ScrollBehavior groups", () => {
81
+ it("preserves position between routes in the same group", () => {
82
+ vi.useFakeTimers();
83
+ const unregister = registerScrollGroup("/compat/react-native-gesture-handler");
84
+ act(() => subscriptions.root?.({}));
85
+ location.pathname = "/compat/react-native-gesture-handler";
86
+ act(() => subscriptions.root?.({}));
87
+ scrollTo.mockClear();
88
+ act(() => subscriptions.loading?.("loading"));
89
+ location.pathname = "/compat/react-native-gesture-handler/pan-gesture";
90
+ act(() => subscriptions.root?.({}));
91
+ vi.runAllTimers();
92
+ expect(scrollTo).toHaveBeenCalledWith(0, 500);
93
+ unregister();
94
+ vi.useRealTimers();
95
+ });
96
+ it("does not match a different route whose slug has the same prefix", () => {
97
+ const unregister = registerScrollGroup("/compat/react-native");
98
+ act(() => subscriptions.root?.({}));
99
+ location.pathname = "/compat/react-native/core";
100
+ act(() => subscriptions.root?.({}));
101
+ scrollTo.mockClear();
102
+ act(() => subscriptions.loading?.("loading"));
103
+ location.pathname = "/compat/react-native-gesture-handler";
104
+ act(() => subscriptions.root?.({}));
105
+ expect(scrollTo).toHaveBeenCalledWith(0, 0);
106
+ unregister();
107
+ });
108
+ });
109
+ //# sourceMappingURL=ScrollBehavior.test.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["TestRenderer","act","afterEach","beforeEach","describe","expect","it","vi","registerScrollGroup","ScrollBehavior","jsx","subscriptions","hoisted","loading","root","mock","setLastAction","fn","subscribeToLoadingState","subscriber","subscribeToRootState","globalThis","IS_REACT_ACT_ENVIRONMENT","renderer","location","scrollTo","process","env","VITE_ENVIRONMENT","pathname","search","hash","windowMock","Object","assign","EventTarget","scrollY","storage","Map","stubGlobal","getElementById","getItem","key","get","setItem","value","set","removeItem","delete","create","unmount","useRealTimers","unstubAllGlobals","not","toHaveBeenCalled","toHaveBeenCalledWith","useFakeTimers","unregister","mockClear","runAllTimers"],"sources":["../../../src/views/ScrollBehavior.test.tsx"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,158 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import React from "react";
3
+ import TestRenderer, { act } from "react-test-renderer";
4
+ import { afterEach, beforeEach, describe, expect, it, vi } from "vitest";
5
+ import { registerScrollGroup, ScrollBehavior } from "./ScrollBehavior.native.js";
6
+ var subscriptions = vi.hoisted(function () {
7
+ return {
8
+ loading: void 0,
9
+ root: void 0
10
+ };
11
+ });
12
+ vi.mock("../router/lastAction", function () {
13
+ return {
14
+ setLastAction: vi.fn()
15
+ };
16
+ });
17
+ vi.mock("../router/router", function () {
18
+ return {
19
+ subscribeToLoadingState: function (subscriber) {
20
+ subscriptions.loading = subscriber;
21
+ return function () {
22
+ subscriptions.loading = void 0;
23
+ };
24
+ },
25
+ subscribeToRootState: function (subscriber) {
26
+ subscriptions.root = subscriber;
27
+ return function () {
28
+ subscriptions.root = void 0;
29
+ };
30
+ }
31
+ };
32
+ });
33
+ globalThis.IS_REACT_ACT_ENVIRONMENT = true;
34
+ var renderer;
35
+ var location;
36
+ var scrollTo;
37
+ beforeEach(function () {
38
+ process.env.VITE_ENVIRONMENT = "client";
39
+ location = {
40
+ pathname: "/",
41
+ search: "",
42
+ hash: ""
43
+ };
44
+ scrollTo = vi.fn();
45
+ var windowMock = Object.assign(new EventTarget(), {
46
+ location,
47
+ scrollTo,
48
+ scrollY: 500
49
+ });
50
+ var storage = /* @__PURE__ */new Map();
51
+ vi.stubGlobal("window", windowMock);
52
+ vi.stubGlobal("document", {
53
+ getElementById: vi.fn()
54
+ });
55
+ vi.stubGlobal("sessionStorage", {
56
+ getItem: function (key) {
57
+ var _storage_get;
58
+ return (_storage_get = storage.get(key)) !== null && _storage_get !== void 0 ? _storage_get : null;
59
+ },
60
+ setItem: function (key, value) {
61
+ return storage.set(key, value);
62
+ },
63
+ removeItem: function (key) {
64
+ return storage.delete(key);
65
+ }
66
+ });
67
+ act(function () {
68
+ renderer = TestRenderer.create(/* @__PURE__ */_jsx(ScrollBehavior, {}));
69
+ });
70
+ });
71
+ afterEach(function () {
72
+ act(function () {
73
+ return renderer === null || renderer === void 0 ? void 0 : renderer.unmount();
74
+ });
75
+ renderer = void 0;
76
+ vi.useRealTimers();
77
+ vi.unstubAllGlobals();
78
+ delete process.env.VITE_ENVIRONMENT;
79
+ });
80
+ describe("ScrollBehavior initial navigation", function () {
81
+ it("does not scroll when the navigator publishes its initial state after mount", function () {
82
+ act(function () {
83
+ var _subscriptions_root;
84
+ return (_subscriptions_root = subscriptions.root) === null || _subscriptions_root === void 0 ? void 0 : _subscriptions_root.call(subscriptions, {});
85
+ });
86
+ expect(scrollTo).not.toHaveBeenCalled();
87
+ });
88
+ it("scrolls to the top when the first state notification is a real navigation", function () {
89
+ location.pathname = "/compat/react-native-gesture-handler";
90
+ act(function () {
91
+ var _subscriptions_root;
92
+ return (_subscriptions_root = subscriptions.root) === null || _subscriptions_root === void 0 ? void 0 : _subscriptions_root.call(subscriptions, {});
93
+ });
94
+ expect(scrollTo).toHaveBeenCalledWith(0, 0);
95
+ });
96
+ it("handles a query change as a first navigation", function () {
97
+ location.search = "?platform=ios";
98
+ act(function () {
99
+ var _subscriptions_root;
100
+ return (_subscriptions_root = subscriptions.root) === null || _subscriptions_root === void 0 ? void 0 : _subscriptions_root.call(subscriptions, {});
101
+ });
102
+ expect(scrollTo).toHaveBeenCalledWith(0, 0);
103
+ });
104
+ });
105
+ describe("ScrollBehavior groups", function () {
106
+ it("preserves position between routes in the same group", function () {
107
+ vi.useFakeTimers();
108
+ var unregister = registerScrollGroup("/compat/react-native-gesture-handler");
109
+ act(function () {
110
+ var _subscriptions_root;
111
+ return (_subscriptions_root = subscriptions.root) === null || _subscriptions_root === void 0 ? void 0 : _subscriptions_root.call(subscriptions, {});
112
+ });
113
+ location.pathname = "/compat/react-native-gesture-handler";
114
+ act(function () {
115
+ var _subscriptions_root;
116
+ return (_subscriptions_root = subscriptions.root) === null || _subscriptions_root === void 0 ? void 0 : _subscriptions_root.call(subscriptions, {});
117
+ });
118
+ scrollTo.mockClear();
119
+ act(function () {
120
+ var _subscriptions_loading;
121
+ return (_subscriptions_loading = subscriptions.loading) === null || _subscriptions_loading === void 0 ? void 0 : _subscriptions_loading.call(subscriptions, "loading");
122
+ });
123
+ location.pathname = "/compat/react-native-gesture-handler/pan-gesture";
124
+ act(function () {
125
+ var _subscriptions_root;
126
+ return (_subscriptions_root = subscriptions.root) === null || _subscriptions_root === void 0 ? void 0 : _subscriptions_root.call(subscriptions, {});
127
+ });
128
+ vi.runAllTimers();
129
+ expect(scrollTo).toHaveBeenCalledWith(0, 500);
130
+ unregister();
131
+ vi.useRealTimers();
132
+ });
133
+ it("does not match a different route whose slug has the same prefix", function () {
134
+ var unregister = registerScrollGroup("/compat/react-native");
135
+ act(function () {
136
+ var _subscriptions_root;
137
+ return (_subscriptions_root = subscriptions.root) === null || _subscriptions_root === void 0 ? void 0 : _subscriptions_root.call(subscriptions, {});
138
+ });
139
+ location.pathname = "/compat/react-native/core";
140
+ act(function () {
141
+ var _subscriptions_root;
142
+ return (_subscriptions_root = subscriptions.root) === null || _subscriptions_root === void 0 ? void 0 : _subscriptions_root.call(subscriptions, {});
143
+ });
144
+ scrollTo.mockClear();
145
+ act(function () {
146
+ var _subscriptions_loading;
147
+ return (_subscriptions_loading = subscriptions.loading) === null || _subscriptions_loading === void 0 ? void 0 : _subscriptions_loading.call(subscriptions, "loading");
148
+ });
149
+ location.pathname = "/compat/react-native-gesture-handler";
150
+ act(function () {
151
+ var _subscriptions_root;
152
+ return (_subscriptions_root = subscriptions.root) === null || _subscriptions_root === void 0 ? void 0 : _subscriptions_root.call(subscriptions, {});
153
+ });
154
+ expect(scrollTo).toHaveBeenCalledWith(0, 0);
155
+ unregister();
156
+ });
157
+ });
158
+ //# sourceMappingURL=ScrollBehavior.test.native.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["jsx","_jsx","React","TestRenderer","act","afterEach","beforeEach","describe","expect","it","vi","registerScrollGroup","ScrollBehavior","subscriptions","hoisted","loading","root","mock","setLastAction","fn","subscribeToLoadingState","subscriber","subscribeToRootState","globalThis","IS_REACT_ACT_ENVIRONMENT","renderer","location","scrollTo","process","env","VITE_ENVIRONMENT","pathname","search","hash","windowMock","Object","assign","EventTarget","scrollY","storage","Map","stubGlobal","getElementById","getItem","key","_storage_get","get","setItem","value","set","removeItem","delete","create","unmount","useRealTimers","unstubAllGlobals","_subscriptions_root","call","not","toHaveBeenCalled","toHaveBeenCalledWith"],"sources":["../../../src/views/ScrollBehavior.test.tsx"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "one",
3
- "version": "1.25.7",
3
+ "version": "1.25.8",
4
4
  "license": "BSD-3-Clause",
5
5
  "sideEffects": [
6
6
  "setup.mjs",
@@ -193,18 +193,18 @@
193
193
  "@cloudflare/vite-plugin": "^1.33.1",
194
194
  "@swc/core": "^1.14.0",
195
195
  "@ungap/structured-clone": "^1.2.0",
196
- "@vxrn/color-scheme": "1.25.7",
197
- "@vxrn/compiler": "1.25.7",
198
- "@vxrn/resolve": "1.25.7",
199
- "@vxrn/tslib-lite": "1.25.7",
200
- "@vxrn/use-isomorphic-layout-effect": "1.25.7",
201
- "@vxrn/vite-plugin-metro": "1.25.7",
196
+ "@vxrn/color-scheme": "1.25.8",
197
+ "@vxrn/compiler": "1.25.8",
198
+ "@vxrn/resolve": "1.25.8",
199
+ "@vxrn/tslib-lite": "1.25.8",
200
+ "@vxrn/use-isomorphic-layout-effect": "1.25.8",
201
+ "@vxrn/vite-plugin-metro": "1.25.8",
202
202
  "babel-dead-code-elimination": "1.0.10",
203
203
  "babel-plugin-module-resolver": "^5.0.2",
204
204
  "babel-preset-expo": "~57.0.5",
205
205
  "citty": "^0.1.6",
206
206
  "core-js": "^3.38.1",
207
- "create-vxrn": "1.25.7",
207
+ "create-vxrn": "1.25.8",
208
208
  "escape-string-regexp": "^5.0.0",
209
209
  "expo-linking": "~57.0.5",
210
210
  "expo-modules-core": "~57.0.10",
@@ -224,7 +224,7 @@
224
224
  "tsconfig-paths": "^4",
225
225
  "use-latest-callback": "^0.2.3",
226
226
  "vite": "^8.2.2",
227
- "vxrn": "1.25.7",
227
+ "vxrn": "1.25.8",
228
228
  "web-streams-polyfill": "^4.3.0",
229
229
  "ws": "^8.21.0",
230
230
  "xxhashjs": "^0.2.2"