one 1.21.1 → 1.21.3
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/cjs/cli/build.cjs +9 -8
- package/dist/cjs/cli/build.native.js +17 -16
- package/dist/cjs/cli/build.native.js.map +1 -1
- package/dist/cjs/cli/buildPage.cjs +1 -1
- package/dist/cjs/cli/buildPage.native.js +1 -1
- package/dist/cjs/cli/buildPage.native.js.map +1 -1
- package/dist/cjs/daemon/ipc.cjs +21 -3
- package/dist/cjs/daemon/ipc.native.js +21 -3
- package/dist/cjs/daemon/ipc.native.js.map +1 -1
- package/dist/cjs/router/getRoutes.cjs +1 -2
- package/dist/cjs/router/getRoutes.native.js +1 -2
- package/dist/cjs/router/getRoutes.native.js.map +1 -1
- package/dist/cjs/router/hmrImport.native.js +13 -2
- package/dist/cjs/router/hmrImport.native.js.map +1 -1
- package/dist/cjs/router/hmrImport.native.test.cjs +52 -0
- package/dist/cjs/router/hmrImport.native.test.native.js +61 -0
- package/dist/cjs/router/hmrImport.native.test.native.js.map +1 -0
- package/dist/cjs/router/matchers.cjs +7 -0
- package/dist/cjs/router/matchers.native.js +8 -0
- package/dist/cjs/router/matchers.native.js.map +1 -1
- package/dist/cjs/router/routeHmr.cjs +32 -0
- package/dist/cjs/router/routeHmr.native.js +57 -0
- package/dist/cjs/router/routeHmr.native.js.map +1 -0
- package/dist/cjs/router/routeHmr.native.test.cjs +83 -0
- package/dist/cjs/router/routeHmr.native.test.native.js +95 -0
- package/dist/cjs/router/routeHmr.native.test.native.js.map +1 -0
- package/dist/cjs/router/useScreens.cjs +2 -0
- package/dist/cjs/router/useScreens.native.js +2 -0
- package/dist/cjs/router/useScreens.native.js.map +1 -1
- package/dist/cjs/router/useViteRoutes.cjs +7 -17
- package/dist/cjs/router/useViteRoutes.native.js +8 -18
- package/dist/cjs/router/useViteRoutes.native.js.map +1 -1
- package/dist/cjs/router/useViteRoutes.test.cjs +42 -0
- package/dist/cjs/router/useViteRoutes.test.native.js +55 -0
- package/dist/cjs/router/useViteRoutes.test.native.js.map +1 -0
- package/dist/cjs/utils/cleanUrl.cjs +12 -2
- package/dist/cjs/utils/cleanUrl.native.js +15 -3
- package/dist/cjs/utils/cleanUrl.native.js.map +1 -1
- package/dist/cjs/utils/cleanUrl.test.cjs +37 -0
- package/dist/cjs/utils/cleanUrl.test.native.js +37 -0
- package/dist/cjs/utils/cleanUrl.test.native.js.map +1 -1
- package/dist/cjs/vite/plugins/virtualEntryPlugin.cjs +37 -2
- package/dist/cjs/vite/plugins/virtualEntryPlugin.native.js +70 -8
- package/dist/cjs/vite/plugins/virtualEntryPlugin.native.js.map +1 -1
- package/dist/cjs/vite/plugins/virtualEntryPlugin.test.cjs +58 -0
- package/dist/cjs/vite/plugins/virtualEntryPlugin.test.native.js +62 -0
- package/dist/cjs/vite/plugins/virtualEntryPlugin.test.native.js.map +1 -1
- package/dist/esm/cli/build.mjs +9 -8
- package/dist/esm/cli/build.mjs.map +1 -1
- package/dist/esm/cli/build.native.js +17 -16
- package/dist/esm/cli/build.native.js.map +1 -1
- package/dist/esm/cli/buildPage.mjs +2 -2
- package/dist/esm/cli/buildPage.mjs.map +1 -1
- package/dist/esm/cli/buildPage.native.js +2 -2
- package/dist/esm/cli/buildPage.native.js.map +1 -1
- package/dist/esm/daemon/ipc.mjs +21 -3
- package/dist/esm/daemon/ipc.mjs.map +1 -1
- package/dist/esm/daemon/ipc.native.js +21 -3
- package/dist/esm/daemon/ipc.native.js.map +1 -1
- package/dist/esm/getURL.native.test.mjs +1 -1
- package/dist/esm/router/getRoutes.mjs +2 -3
- package/dist/esm/router/getRoutes.mjs.map +1 -1
- package/dist/esm/router/getRoutes.native.js +2 -3
- package/dist/esm/router/getRoutes.native.js.map +1 -1
- package/dist/esm/router/hmrImport.native.js +13 -2
- package/dist/esm/router/hmrImport.native.js.map +1 -1
- package/dist/esm/router/hmrImport.native.test.js +51 -0
- package/dist/esm/router/hmrImport.native.test.js.map +6 -0
- package/dist/esm/router/hmrImport.native.test.mjs +53 -0
- package/dist/esm/router/hmrImport.native.test.mjs.map +1 -0
- package/dist/esm/router/hmrImport.native.test.native.js +59 -0
- package/dist/esm/router/hmrImport.native.test.native.js.map +1 -0
- package/dist/esm/router/matchers.mjs +7 -1
- package/dist/esm/router/matchers.mjs.map +1 -1
- package/dist/esm/router/matchers.native.js +8 -1
- package/dist/esm/router/matchers.native.js.map +1 -1
- package/dist/esm/router/routeHmr.mjs +6 -0
- package/dist/esm/router/routeHmr.mjs.map +1 -0
- package/dist/esm/router/routeHmr.native.js +28 -0
- package/dist/esm/router/routeHmr.native.js.map +1 -0
- package/dist/esm/router/routeHmr.native.test.js +58 -0
- package/dist/esm/router/routeHmr.native.test.js.map +6 -0
- package/dist/esm/router/routeHmr.native.test.mjs +60 -0
- package/dist/esm/router/routeHmr.native.test.mjs.map +1 -0
- package/dist/esm/router/routeHmr.native.test.native.js +69 -0
- package/dist/esm/router/routeHmr.native.test.native.js.map +1 -0
- package/dist/esm/router/useScreens.mjs +1 -0
- package/dist/esm/router/useScreens.mjs.map +1 -1
- package/dist/esm/router/useScreens.native.js +2 -0
- package/dist/esm/router/useScreens.native.js.map +1 -1
- package/dist/esm/router/useViteRoutes.mjs +7 -17
- package/dist/esm/router/useViteRoutes.mjs.map +1 -1
- package/dist/esm/router/useViteRoutes.native.js +8 -18
- package/dist/esm/router/useViteRoutes.native.js.map +1 -1
- package/dist/esm/router/useViteRoutes.test.mjs +43 -0
- package/dist/esm/router/useViteRoutes.test.mjs.map +1 -0
- package/dist/esm/router/useViteRoutes.test.native.js +53 -0
- package/dist/esm/router/useViteRoutes.test.native.js.map +1 -0
- package/dist/esm/utils/cleanUrl.mjs +11 -3
- package/dist/esm/utils/cleanUrl.mjs.map +1 -1
- package/dist/esm/utils/cleanUrl.native.js +14 -4
- package/dist/esm/utils/cleanUrl.native.js.map +1 -1
- package/dist/esm/utils/cleanUrl.test.mjs +38 -1
- package/dist/esm/utils/cleanUrl.test.mjs.map +1 -1
- package/dist/esm/utils/cleanUrl.test.native.js +38 -1
- package/dist/esm/utils/cleanUrl.test.native.js.map +1 -1
- package/dist/esm/vite/plugins/virtualEntryPlugin.mjs +26 -2
- package/dist/esm/vite/plugins/virtualEntryPlugin.mjs.map +1 -1
- package/dist/esm/vite/plugins/virtualEntryPlugin.native.js +59 -8
- package/dist/esm/vite/plugins/virtualEntryPlugin.native.js.map +1 -1
- package/dist/esm/vite/plugins/virtualEntryPlugin.test.mjs +58 -0
- package/dist/esm/vite/plugins/virtualEntryPlugin.test.mjs.map +1 -1
- package/dist/esm/vite/plugins/virtualEntryPlugin.test.native.js +62 -0
- package/dist/esm/vite/plugins/virtualEntryPlugin.test.native.js.map +1 -1
- package/package.json +9 -9
- package/src/cli/build.ts +18 -11
- package/src/cli/buildPage.ts +12 -2
- package/src/daemon/ipc.ts +46 -4
- package/src/router/getRoutes.ts +2 -3
- package/src/router/hmrImport.native.test.ts +55 -0
- package/src/router/hmrImport.native.ts +25 -5
- package/src/router/matchers.ts +10 -0
- package/src/router/routeHmr.native.test.ts +71 -0
- package/src/router/routeHmr.native.ts +37 -0
- package/src/router/routeHmr.ts +8 -0
- package/src/router/useScreens.tsx +12 -0
- package/src/router/useViteRoutes.test.ts +49 -0
- package/src/router/useViteRoutes.tsx +12 -21
- package/src/utils/cleanUrl.test.ts +63 -1
- package/src/utils/cleanUrl.ts +25 -3
- package/src/vite/plugins/virtualEntryPlugin.test.ts +70 -0
- package/src/vite/plugins/virtualEntryPlugin.ts +48 -2
- package/src/vite/types.ts +9 -0
- package/types/cli/build.d.ts.map +1 -1
- package/types/cli/buildPage.d.ts.map +1 -1
- package/types/daemon/ipc.d.ts.map +1 -1
- package/types/router/getRoutes.d.ts.map +1 -1
- package/types/router/hmrImport.native.d.ts +8 -3
- package/types/router/hmrImport.native.d.ts.map +1 -1
- package/types/router/hmrImport.native.test.d.ts +2 -0
- package/types/router/hmrImport.native.test.d.ts.map +1 -0
- package/types/router/matchers.d.ts +2 -0
- package/types/router/matchers.d.ts.map +1 -1
- package/types/router/routeHmr.d.ts +3 -0
- package/types/router/routeHmr.d.ts.map +1 -0
- package/types/router/routeHmr.native.d.ts +6 -0
- package/types/router/routeHmr.native.d.ts.map +1 -0
- package/types/router/routeHmr.native.test.d.ts +2 -0
- package/types/router/routeHmr.native.test.d.ts.map +1 -0
- package/types/router/useScreens.d.ts.map +1 -1
- package/types/router/useViteRoutes.d.ts.map +1 -1
- package/types/router/useViteRoutes.test.d.ts +2 -0
- package/types/router/useViteRoutes.test.d.ts.map +1 -0
- package/types/utils/cleanUrl.d.ts +2 -0
- package/types/utils/cleanUrl.d.ts.map +1 -1
- package/types/vite/plugins/virtualEntryPlugin.d.ts.map +1 -1
- package/types/vite/types.d.ts +8 -0
- package/types/vite/types.d.ts.map +1 -1
|
@@ -169,22 +169,14 @@ function globbedRoutesToRouteContext(paths, routerRoot, options) {
|
|
|
169
169
|
},
|
|
170
170
|
clearFile: function (file) {
|
|
171
171
|
hmrVersion++;
|
|
172
|
-
var normalizedFile = file.replace(
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
delete loadedRoutes[key];
|
|
176
|
-
}
|
|
177
|
-
});
|
|
178
|
-
Object.keys(promises).forEach(function (key) {
|
|
179
|
-
if (key === normalizedFile || key.endsWith(normalizedFile.replace("./", "/"))) {
|
|
180
|
-
delete promises[key];
|
|
181
|
-
}
|
|
182
|
-
});
|
|
183
|
-
Object.keys(preloadedModules).forEach(function (key) {
|
|
184
|
-
if (key.includes(file)) {
|
|
185
|
-
delete preloadedModules[key];
|
|
186
|
-
}
|
|
172
|
+
var normalizedFile = file.replace(/\\/g, "/").replace(/^\//, "");
|
|
173
|
+
var routeId = moduleKeys.find(function (key) {
|
|
174
|
+
return routePaths[key].replace(/\\/g, "/").replace(/^\//, "") === normalizedFile;
|
|
187
175
|
});
|
|
176
|
+
if (!routeId) return;
|
|
177
|
+
delete loadedRoutes[routeId];
|
|
178
|
+
delete promises[routeId];
|
|
179
|
+
delete preloadedModules[routePaths[routeId]];
|
|
188
180
|
},
|
|
189
181
|
getVersion: function () {
|
|
190
182
|
return hmrVersion;
|
|
@@ -208,9 +200,7 @@ function globbedRoutesToRouteContext(paths, routerRoot, options) {
|
|
|
208
200
|
if (!promises[id]) {
|
|
209
201
|
var importPromise;
|
|
210
202
|
if (process.env.NODE_ENV === "development" && hmrVersion > 0 && routePaths[id]) {
|
|
211
|
-
importPromise = hmrImport(routePaths[id])
|
|
212
|
-
return routesSync[id]();
|
|
213
|
-
});
|
|
203
|
+
importPromise = hmrImport(routePaths[id]);
|
|
214
204
|
} else {
|
|
215
205
|
importPromise = routesSync[id]();
|
|
216
206
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["hmrImport","lastVersion","context","useViteRoutes","routes","routerRoot","options","version","_iteratorNormalCompletion","_didIteratorError","_iteratorError","_iterator","Object","keys","preloadedModules","Symbol","iterator","_step","next","done","key","value","err","return","loadRoutes","registerPreloadedRoute","module","getPreloadedModule","getPreloadedModuleKeys","matchDynamicRoute","routePattern","actualPath","routeSegments","split","pathSegments","hasCatchAll","some","s","startsWith","catchAllIdx","findIndex","i","length","i1","routeSeg","pathSeg","endsWith","preloadRouteModules","href","globbed","globalThis","normalizedHref","replace","promises","_loop","routePath","isStaticMatch","isDynamicMatch","includes","push","then","mod","catch","Promise","all","paths","globbedRoutesToRouteContext","routesSync","routePaths","loadedRoutes","clears","forEach","path","_options_routeModes","console","error","loadRouteFunction","pathWithoutRelative","originalPath","slice","routeModes","info","moduleKeys","hmrVersion","window","__oneRouteCache","clear","clearFile","file","normalizedFile","getVersion","resolve","id","clearTimeout","preloadKey","preloaded"],"sources":["../../../src/router/useViteRoutes.tsx"],"sourcesContent":[null],"mappings":"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
|
|
1
|
+
{"version":3,"names":["hmrImport","lastVersion","context","useViteRoutes","routes","routerRoot","options","version","_iteratorNormalCompletion","_didIteratorError","_iteratorError","_iterator","Object","keys","preloadedModules","Symbol","iterator","_step","next","done","key","value","err","return","loadRoutes","registerPreloadedRoute","module","getPreloadedModule","getPreloadedModuleKeys","matchDynamicRoute","routePattern","actualPath","routeSegments","split","pathSegments","hasCatchAll","some","s","startsWith","catchAllIdx","findIndex","i","length","i1","routeSeg","pathSeg","endsWith","preloadRouteModules","href","globbed","globalThis","normalizedHref","replace","promises","_loop","routePath","isStaticMatch","isDynamicMatch","includes","push","then","mod","catch","Promise","all","paths","globbedRoutesToRouteContext","routesSync","routePaths","loadedRoutes","clears","forEach","path","_options_routeModes","console","error","loadRouteFunction","pathWithoutRelative","originalPath","slice","routeModes","info","moduleKeys","hmrVersion","window","__oneRouteCache","clear","clearFile","file","normalizedFile","routeId","find","getVersion","resolve","id","clearTimeout","preloadKey","preloaded"],"sources":["../../../src/router/useViteRoutes.tsx"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { afterEach, describe, expect, it, vi } from "vitest";
|
|
2
|
+
import { globbedRoutesToRouteContext } from "./useViteRoutes.mjs";
|
|
3
|
+
const mocks = vi.hoisted(() => ({
|
|
4
|
+
hmrImport: vi.fn()
|
|
5
|
+
}));
|
|
6
|
+
vi.mock("./hmrImport", () => ({
|
|
7
|
+
hmrImport: mocks.hmrImport
|
|
8
|
+
}));
|
|
9
|
+
const realWindow = globalThis.window;
|
|
10
|
+
afterEach(() => {
|
|
11
|
+
vi.unstubAllEnvs();
|
|
12
|
+
mocks.hmrImport.mockReset();
|
|
13
|
+
globalThis.window = realWindow;
|
|
14
|
+
});
|
|
15
|
+
async function resolveRoute(context) {
|
|
16
|
+
try {
|
|
17
|
+
return context("./index.tsx");
|
|
18
|
+
} catch (pending) {
|
|
19
|
+
await pending;
|
|
20
|
+
return context("./index.tsx");
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
describe("globbedRoutesToRouteContext HMR", () => {
|
|
24
|
+
it("evicts and reloads a route under a custom router root", async () => {
|
|
25
|
+
vi.stubEnv("NODE_ENV", "development");
|
|
26
|
+
globalThis.window = {};
|
|
27
|
+
const initialRoute = {
|
|
28
|
+
default: () => "initial"
|
|
29
|
+
};
|
|
30
|
+
const updatedRoute = {
|
|
31
|
+
default: () => "updated"
|
|
32
|
+
};
|
|
33
|
+
const context = globbedRoutesToRouteContext({
|
|
34
|
+
"/routes/index.tsx": () => Promise.resolve(initialRoute)
|
|
35
|
+
}, "routes");
|
|
36
|
+
await expect(resolveRoute(context)).resolves.toBe(initialRoute);
|
|
37
|
+
mocks.hmrImport.mockResolvedValue(updatedRoute);
|
|
38
|
+
globalThis.window.__oneRouteCache.clearFile("routes/index.tsx");
|
|
39
|
+
await expect(resolveRoute(context)).resolves.toBe(updatedRoute);
|
|
40
|
+
expect(mocks.hmrImport).toHaveBeenCalledWith("/routes/index.tsx");
|
|
41
|
+
});
|
|
42
|
+
});
|
|
43
|
+
//# sourceMappingURL=useViteRoutes.test.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["afterEach","describe","expect","it","vi","globbedRoutesToRouteContext","mocks","hoisted","hmrImport","fn","mock","realWindow","globalThis","window","unstubAllEnvs","mockReset","resolveRoute","context","pending","stubEnv","initialRoute","default","updatedRoute","/routes/index.tsx","Promise","resolve","resolves","toBe","mockResolvedValue","__oneRouteCache","clearFile","toHaveBeenCalledWith"],"sources":["../../../src/router/useViteRoutes.test.ts"],"sourcesContent":[null],"mappings":"AAAA,SAASA,SAAA,EAAWC,QAAA,EAAUC,MAAA,EAAQC,EAAA,EAAIC,EAAA,QAAU;AAUpD,SAASC,2BAAA,QAAmC;AAR5C,MAAMC,KAAA,GAAQF,EAAA,CAAGG,OAAA,CAAQ,OAAO;EAC9BC,SAAA,EAAWJ,EAAA,CAAGK,EAAA,CAAG;AACnB,EAAE;AAEFL,EAAA,CAAGM,IAAA,CAAK,eAAe,OAAO;EAC5BF,SAAA,EAAWF,KAAA,CAAME;AACnB,EAAE;AAIF,MAAMG,UAAA,GAAcC,UAAA,CAAmBC,MAAA;AAEvCb,SAAA,CAAU,MAAM;EACdI,EAAA,CAAGU,aAAA,CAAc;EACjBR,KAAA,CAAME,SAAA,CAAUO,SAAA,CAAU;EACxBH,UAAA,CAAmBC,MAAA,GAASF,UAAA;AAChC,CAAC;AAED,eAAeK,aAAaC,OAAA,EAAyD;EACnF,IAAI;IACF,OAAOA,OAAA,CAAQ,aAAa;EAC9B,SAASC,OAAA,EAAS;IAChB,MAAMA,OAAA;IACN,OAAOD,OAAA,CAAQ,aAAa;EAC9B;AACF;AAEAhB,QAAA,CAAS,mCAAmC,MAAM;EAChDE,EAAA,CAAG,yDAAyD,YAAY;IACtEC,EAAA,CAAGe,OAAA,CAAQ,YAAY,aAAa;IAClCP,UAAA,CAAmBC,MAAA,GAAS,CAAC;IAC/B,MAAMO,YAAA,GAAe;MAAEC,OAAA,EAASA,CAAA,KAAM;IAAU;IAChD,MAAMC,YAAA,GAAe;MAAED,OAAA,EAASA,CAAA,KAAM;IAAU;IAChD,MAAMJ,OAAA,GAAUZ,2BAAA,CACd;MAAE,qBAAqBkB,CAAA,KAAMC,OAAA,CAAQC,OAAA,CAAQL,YAAY;IAAE,GAC3D,QACF;IAEA,MAAMlB,MAAA,CAAOc,YAAA,CAAaC,OAAO,CAAC,EAAES,QAAA,CAASC,IAAA,CAAKP,YAAY;IAE9Dd,KAAA,CAAME,SAAA,CAAUoB,iBAAA,CAAkBN,YAAY;IAC5CV,UAAA,CAAmBC,MAAA,CAAOgB,eAAA,CAAgBC,SAAA,CAAU,kBAAkB;IAExE,MAAM5B,MAAA,CAAOc,YAAA,CAAaC,OAAO,CAAC,EAAES,QAAA,CAASC,IAAA,CAAKL,YAAY;IAC9DpB,MAAA,CAAOI,KAAA,CAAME,SAAS,EAAEuB,oBAAA,CAAqB,mBAAmB;EAClE,CAAC;AACH,CAAC","ignoreList":[]}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import { afterEach, describe, expect, it, vi } from "vitest";
|
|
2
|
+
import { globbedRoutesToRouteContext } from "./useViteRoutes.native.js";
|
|
3
|
+
var mocks = vi.hoisted(function () {
|
|
4
|
+
return {
|
|
5
|
+
hmrImport: vi.fn()
|
|
6
|
+
};
|
|
7
|
+
});
|
|
8
|
+
vi.mock("./hmrImport", function () {
|
|
9
|
+
return {
|
|
10
|
+
hmrImport: mocks.hmrImport
|
|
11
|
+
};
|
|
12
|
+
});
|
|
13
|
+
var realWindow = globalThis.window;
|
|
14
|
+
afterEach(function () {
|
|
15
|
+
vi.unstubAllEnvs();
|
|
16
|
+
mocks.hmrImport.mockReset();
|
|
17
|
+
globalThis.window = realWindow;
|
|
18
|
+
});
|
|
19
|
+
async function resolveRoute(context) {
|
|
20
|
+
try {
|
|
21
|
+
return context("./index.tsx");
|
|
22
|
+
} catch (pending) {
|
|
23
|
+
await pending;
|
|
24
|
+
return context("./index.tsx");
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
describe("globbedRoutesToRouteContext HMR", function () {
|
|
28
|
+
it("evicts and reloads a route under a custom router root", async function () {
|
|
29
|
+
vi.stubEnv("NODE_ENV", "development");
|
|
30
|
+
globalThis.window = {};
|
|
31
|
+
var initialRoute = {
|
|
32
|
+
default: function () {
|
|
33
|
+
return "initial";
|
|
34
|
+
}
|
|
35
|
+
};
|
|
36
|
+
var updatedRoute = {
|
|
37
|
+
default: function () {
|
|
38
|
+
return "updated";
|
|
39
|
+
}
|
|
40
|
+
};
|
|
41
|
+
var context = globbedRoutesToRouteContext({
|
|
42
|
+
"/routes/index.tsx": function () {
|
|
43
|
+
return Promise.resolve(initialRoute);
|
|
44
|
+
}
|
|
45
|
+
}, "routes");
|
|
46
|
+
await expect(resolveRoute(context)).resolves.toBe(initialRoute);
|
|
47
|
+
mocks.hmrImport.mockResolvedValue(updatedRoute);
|
|
48
|
+
globalThis.window.__oneRouteCache.clearFile("routes/index.tsx");
|
|
49
|
+
await expect(resolveRoute(context)).resolves.toBe(updatedRoute);
|
|
50
|
+
expect(mocks.hmrImport).toHaveBeenCalledWith("/routes/index.tsx");
|
|
51
|
+
});
|
|
52
|
+
});
|
|
53
|
+
//# sourceMappingURL=useViteRoutes.test.native.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["afterEach","describe","expect","it","vi","globbedRoutesToRouteContext","mocks","hoisted","hmrImport","fn","mock","realWindow","globalThis","window","unstubAllEnvs","mockReset","resolveRoute","context","pending","stubEnv","initialRoute","default","updatedRoute"],"sources":["../../../src/router/useViteRoutes.test.ts"],"sourcesContent":[null],"mappings":"AAAA,SAASA,SAAA,EAAWC,QAAA,EAAUC,MAAA,EAAQC,EAAA,EAAIC,EAAA,QAAU;AAUpD,SAASC,2BAAA,QAAmC;AAR5C,IAAAC,KAAM,GAAAF,EAAQ,CAAAG,OAAG,aAAe;EAC9B;IACAC,SAAA,EAAAJ,EAAA,CAAAK,EAAA;EAEF,CAAG;AAA2B,EAC5B;AACFL,EAAE,CAAAM,IAAA;EAIF,OAAM;IAENF,SAAU,EAAAF,KAAM,CAAAE;EACd;AACA;AACC,IAACG,UAAmB,GAAAC,UAAS,CAAAC,MAAA;AAChCb,SAAC;EAEDI,EAAA,CAAAU,aAAe;EACbR,KAAI,CAAAE,SAAA,CAAAO,SAAA;EACFH,UAAO,CAAAC,MAAQ,GAAAF,UAAa;AAAA,EAC9B;AACE,eAAMK,aAAAC,OAAA;EACN;IACF,OAAAA,OAAA;EACF,SAAAC,OAAA;IAEA,MAASA,OAAA;IACP,OAAGD,OAAA;EACD;AACC;AACDhB,QAAA,kCAAsC,cAAU;EAChDE,EAAA,wDAAgD;IAChDC,EAAA,CAAAe,OAAM,WAAU;IAAAP,UACZ,CAAAC,MAAA;IAAyD,IAC3DO,YAAA;MACFC,OAAA,WAAAA,CAAA;QAEA,OAAM,SAAO;MAEb;IACE;IAEF,IAAAC,YAAa;MACbD,OAAO,WAAAA,CAAA,EAAe;QACvB;MACF","ignoreList":[]}
|
|
@@ -1,8 +1,16 @@
|
|
|
1
1
|
import { CSS_PRELOAD_JS_POSTFIX, isNative, LOADER_JS_POSTFIX, LOADER_JS_POSTFIX_REGEX, PRELOAD_JS_POSTFIX } from "../constants.mjs";
|
|
2
2
|
import { getURL } from "../getURL.mjs";
|
|
3
3
|
import { removeSearch } from "./removeSearch.mjs";
|
|
4
|
+
function encodeReservedFilenameChars(path) {
|
|
5
|
+
return path.replaceAll("=", "=3d").replace(/[<>:"|?*]/g, char => `=${char.charCodeAt(0).toString(16).padStart(2, "0")}`);
|
|
6
|
+
}
|
|
7
|
+
function decodeReservedFilenameChars(path) {
|
|
8
|
+
return path.replace(/=([0-9a-f]{2})/g, (_match, hexCode) => String.fromCharCode(Number.parseInt(hexCode, 16)));
|
|
9
|
+
}
|
|
4
10
|
function cleanUrl(path) {
|
|
5
|
-
return removeSearch(path).replace(/\/$/, "")
|
|
11
|
+
return encodeReservedFilenameChars(removeSearch(path).replace(/\/$/, "")
|
|
12
|
+
// remove trailing slash before encoding
|
|
13
|
+
).replaceAll("_", "__").replaceAll("/", "_");
|
|
6
14
|
}
|
|
7
15
|
const isClient = typeof window !== "undefined";
|
|
8
16
|
const clientSideURL = isClient ? getURL() : "";
|
|
@@ -21,7 +29,7 @@ function getLoaderPath(currentPath, includeUrl = isNative, cacheBust) {
|
|
|
21
29
|
return `${baseURL}${devPath}/assets/${cleanedUrl}${cacheBustSegment}${LOADER_JS_POSTFIX}`;
|
|
22
30
|
}
|
|
23
31
|
function getPathFromLoaderPath(loaderPath) {
|
|
24
|
-
return loaderPath.replace(LOADER_JS_POSTFIX_REGEX, "").replace(/^(\/_one)?\/assets/, "").replace(/_refetch_\d+_?/, "").replace(/__|_/g, match => match === "__" ? "_" : "/");
|
|
32
|
+
return decodeReservedFilenameChars(loaderPath.replace(LOADER_JS_POSTFIX_REGEX, "").replace(/^(\/_one)?\/assets/, "").replace(/_refetch_\d+_?/, "").replace(/__|_/g, match => match === "__" ? "_" : "/"));
|
|
25
33
|
}
|
|
26
|
-
export { getLoaderPath, getPathFromLoaderPath, getPreloadCSSPath, getPreloadPath };
|
|
34
|
+
export { decodeReservedFilenameChars, encodeReservedFilenameChars, getLoaderPath, getPathFromLoaderPath, getPreloadCSSPath, getPreloadPath };
|
|
27
35
|
//# sourceMappingURL=cleanUrl.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["CSS_PRELOAD_JS_POSTFIX","isNative","LOADER_JS_POSTFIX","LOADER_JS_POSTFIX_REGEX","PRELOAD_JS_POSTFIX","getURL","removeSearch","
|
|
1
|
+
{"version":3,"names":["CSS_PRELOAD_JS_POSTFIX","isNative","LOADER_JS_POSTFIX","LOADER_JS_POSTFIX_REGEX","PRELOAD_JS_POSTFIX","getURL","removeSearch","encodeReservedFilenameChars","path","replaceAll","replace","char","charCodeAt","toString","padStart","decodeReservedFilenameChars","_match","hexCode","String","fromCharCode","Number","parseInt","cleanUrl","isClient","window","clientSideURL","getPreloadPath","currentPath","slice","getPreloadCSSPath","getLoaderPath","includeUrl","cacheBust","baseURL","devPath","process","env","NODE_ENV","currentPathUrl","URL","cleanedUrl","pathname","cacheBustSegment","getPathFromLoaderPath","loaderPath","match"],"sources":["../../../src/utils/cleanUrl.ts"],"sourcesContent":[null],"mappings":"AAAA,SACEA,sBAAA,EACAC,QAAA,EACAC,iBAAA,EACAC,uBAAA,EACAC,kBAAA,QACK;AACP,SAASC,MAAA,QAAc;AACvB,SAASC,YAAA,QAAoB;AAQtB,SAASC,4BAA4BC,IAAA,EAAc;EACxD,OAAOA,IAAA,CACJC,UAAA,CAAW,KAAK,KAAK,EACrBC,OAAA,CACC,cACCC,IAAA,IAAS,IAAIA,IAAA,CAAKC,UAAA,CAAW,CAAC,EAAEC,QAAA,CAAS,EAAE,EAAEC,QAAA,CAAS,GAAG,GAAG,CAAC,EAChE;AACJ;AAEO,SAASC,4BAA4BP,IAAA,EAAc;EACxD,OAAOA,IAAA,CAAKE,OAAA,CAAQ,mBAAmB,CAACM,MAAA,EAAQC,OAAA,KAC9CC,MAAA,CAAOC,YAAA,CAAaC,MAAA,CAAOC,QAAA,CAASJ,OAAA,EAAS,EAAE,CAAC,CAClD;AACF;AAEA,SAASK,SAASd,IAAA,EAAc;EAC9B,OAAOD,2BAAA,CACLD,YAAA,CAAaE,IAAI,EAAEE,OAAA,CAAQ,OAAO,EAAE;EAAA;EACtC,EACGD,UAAA,CAAW,KAAK,IAAI,EACpBA,UAAA,CAAW,KAAK,GAAG;AACxB;AAEA,MAAMc,QAAA,GAAW,OAAOC,MAAA,KAAW;AACnC,MAAMC,aAAA,GAAgBF,QAAA,GAAWlB,MAAA,CAAO,IAAI;AAErC,SAASqB,eAAeC,WAAA,EAAqB;EAClD,OAAO,GAAGF,aAAa,WAAWH,QAAA,CAASK,WAAA,CAAYC,KAAA,CAAM,CAAC,CAAC,CAAC,GAAGxB,kBAAkB;AACvF;AAEO,SAASyB,kBAAkBF,WAAA,EAAqB;EACrD,OAAO,GAAGF,aAAa,WAAWH,QAAA,CAASK,WAAA,CAAYC,KAAA,CAAM,CAAC,CAAC,CAAC,GAAG5B,sBAAsB;AAC3F;AAEO,SAAS8B,cACdH,WAAA,EACAI,UAAA,GAAa9B,QAAA,EACb+B,SAAA,EACA;EACA,MAAMC,OAAA,GAAUF,UAAA,GAAa1B,MAAA,CAAO,IAAI;EACxC,MAAM6B,OAAA,GAAUC,OAAA,CAAQC,GAAA,CAAIC,QAAA,KAAa,gBAAgB,UAAU;EAEnE,MAAMC,cAAA,GAAiB,IAAIC,GAAA,CAAIZ,WAAA,EAAa,oBAAoB;EAEhE,MAAMa,UAAA,GAAalB,QAAA,CAASgB,cAAA,CAAeG,QAAA,CAASb,KAAA,CAAM,CAAC,CAAC;EAC5D,MAAMc,gBAAA,GAAmBV,SAAA,GAAY,YAAYA,SAAS,MAAM;EAEhE,OAAO,GAAGC,OAAO,GAAGC,OAAO,WAAWM,UAAU,GAAGE,gBAAgB,GAAGxC,iBAAiB;AACzF;AAEO,SAASyC,sBAAsBC,UAAA,EAAoB;EACxD,OAAO7B,2BAAA,CACL6B,UAAA,CACGlC,OAAA,CAAQP,uBAAA,EAAyB,EAAE,EACnCO,OAAA,CAAQ,sBAAsB,EAAE,EAChCA,OAAA,CAAQ,kBAAkB,EAAE,EAE5BA,OAAA,CAAQ,SAAUmC,KAAA,IAAWA,KAAA,KAAU,OAAO,MAAM,GAAI,CAC7D;AACF","ignoreList":[]}
|
|
@@ -1,8 +1,18 @@
|
|
|
1
1
|
import { CSS_PRELOAD_JS_POSTFIX, isNative, LOADER_JS_POSTFIX, LOADER_JS_POSTFIX_REGEX, PRELOAD_JS_POSTFIX } from "../constants.native.js";
|
|
2
2
|
import { getURL } from "../getURL.native.js";
|
|
3
3
|
import { removeSearch } from "./removeSearch.native.js";
|
|
4
|
+
function encodeReservedFilenameChars(path) {
|
|
5
|
+
return path.replaceAll("=", "=3d").replace(/[<>:"|?*]/g, function (char) {
|
|
6
|
+
return `=${char.charCodeAt(0).toString(16).padStart(2, "0")}`;
|
|
7
|
+
});
|
|
8
|
+
}
|
|
9
|
+
function decodeReservedFilenameChars(path) {
|
|
10
|
+
return path.replace(/=([0-9a-f]{2})/g, function (_match, hexCode) {
|
|
11
|
+
return String.fromCharCode(Number.parseInt(hexCode, 16));
|
|
12
|
+
});
|
|
13
|
+
}
|
|
4
14
|
function cleanUrl(path) {
|
|
5
|
-
return removeSearch(path).replace(/\/$/, "").replaceAll("_", "__").replaceAll("/", "_");
|
|
15
|
+
return encodeReservedFilenameChars(removeSearch(path).replace(/\/$/, "")).replaceAll("_", "__").replaceAll("/", "_");
|
|
6
16
|
}
|
|
7
17
|
var isClient = typeof window !== "undefined";
|
|
8
18
|
var clientSideURL = isClient ? getURL() : "";
|
|
@@ -23,9 +33,9 @@ function getLoaderPath(currentPath) {
|
|
|
23
33
|
return `${baseURL}${devPath}/assets/${cleanedUrl}${cacheBustSegment}${LOADER_JS_POSTFIX}`;
|
|
24
34
|
}
|
|
25
35
|
function getPathFromLoaderPath(loaderPath) {
|
|
26
|
-
return loaderPath.replace(LOADER_JS_POSTFIX_REGEX, "").replace(/^(\/_one)?\/assets/, "").replace(/_refetch_\d+_?/, "").replace(/__|_/g, function (match) {
|
|
36
|
+
return decodeReservedFilenameChars(loaderPath.replace(LOADER_JS_POSTFIX_REGEX, "").replace(/^(\/_one)?\/assets/, "").replace(/_refetch_\d+_?/, "").replace(/__|_/g, function (match) {
|
|
27
37
|
return match === "__" ? "_" : "/";
|
|
28
|
-
});
|
|
38
|
+
}));
|
|
29
39
|
}
|
|
30
|
-
export { getLoaderPath, getPathFromLoaderPath, getPreloadCSSPath, getPreloadPath };
|
|
40
|
+
export { decodeReservedFilenameChars, encodeReservedFilenameChars, getLoaderPath, getPathFromLoaderPath, getPreloadCSSPath, getPreloadPath };
|
|
31
41
|
//# sourceMappingURL=cleanUrl.native.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["CSS_PRELOAD_JS_POSTFIX","isNative","LOADER_JS_POSTFIX","LOADER_JS_POSTFIX_REGEX","PRELOAD_JS_POSTFIX","getURL","removeSearch","
|
|
1
|
+
{"version":3,"names":["CSS_PRELOAD_JS_POSTFIX","isNative","LOADER_JS_POSTFIX","LOADER_JS_POSTFIX_REGEX","PRELOAD_JS_POSTFIX","getURL","removeSearch","encodeReservedFilenameChars","path","replaceAll","replace","char","charCodeAt","toString","padStart","decodeReservedFilenameChars","_match","hexCode","String","fromCharCode","Number","parseInt","cleanUrl","isClient","window","clientSideURL","getPreloadPath","currentPath","slice","getPreloadCSSPath","getLoaderPath","includeUrl","arguments","length","cacheBust","baseURL","devPath","process","env","NODE_ENV","currentPathUrl","URL","cleanedUrl","pathname","cacheBustSegment","getPathFromLoaderPath","loaderPath","match"],"sources":["../../../src/utils/cleanUrl.ts"],"sourcesContent":[null],"mappings":"AAAA,SAAAA,sBAAA,EAAAC,QAAA,EAAAC,iBAAA,EAAAC,uBAAA,EAAAC,kBAAA;AAAA,SACEC,MAAA;AAAA,SACAC,YAAA;AAAA,SACAC,4BAAAC,IAAA;EACA,OAAAA,IAAA,CAAAC,UAAA,aAAAC,OAAA,yBAAAC,IAAA;IACA,WAAAA,IAAA,CAAAC,UAAA,IAAAC,QAAA,KAAAC,QAAA;EAAA;AAEF;AACA,SAASC,2BAAoBA,CAAAP,IAAA;EAQtB,OAASA,IAAA,CAAAE,OAAA,kBAA4B,YAAcM,MAAA,EAAAC,OAAA;IACxD,OAAOC,MACJ,CAAAC,YAAgB,CAAAC,MAChB,CAAAC,QAAA,CAAAJ,OAAA;EAAA,EACC;AAAA;AAC8D,SAChEK,SAAAd,IAAA;EACJ,OAAAD,2BAAA,CAAAD,YAAA,CAAAE,IAAA,EAAAE,OAAA,aAAAD,UAAA,YAAAA,UAAA;AAEO;AACL,IAAAc,QAAO,GAAK,OAAAC,MAAA;AAAA,IAAQC,aAAA,GAAAF,QAAA,GAAAlB,MAAA;AAAA,SAAoBqB,cAAQA,CAAAC,WACvC;EACT,UAAAF,aAAA,WAAAH,QAAA,CAAAK,WAAA,CAAAC,KAAA,OAAAxB,kBAAA;AACF;AAEA,SAASyB,iBAAuBA,CAAAF,WAAA;EAC9B,OAAO,GAAAF,aAAA,WAAAH,QAAA,CAAAK,WAAA,CAAAC,KAAA,OAAA5B,sBAAA;AAAA;AAC+B,SAAA8B,cAAAH,WAAA;EACtC,IACGI,UAAW,GAAAC,SACX,CAAAC,MAAA,GAAW,KAAKD,SAAG,iBAAAA,SAAA,MAAA/B,QAAA;IAAAiC,SAAA,GAAAF,SAAA,CAAAC,MAAA,OAAAD,SAAA;EACxB,IAAAG,OAAA,GAAAJ,UAAA,GAAA1B,MAAA;EAEA,IAAM+B,OAAA,GAAAC,OAAW,CAAOC,GAAA,CAAAC,QAAW;EACnC,IAAMC,cAAA,GAAgB,IAAAC,GAAA,CAAAd,WAAkB,EAAI;EAErC,IAAAe,UAAS,GAAApB,QAAe,CAAAkB,cAAqB,CAAAG,QAAA,CAAAf,KAAA;EAClD,IAAAgB,gBAAU,GAAaV,SAAA,GAAW,YAASA,SAAY,MAAO,EAAE;EAClE,UAAAC,OAAA,GAAAC,OAAA,WAAAM,UAAA,GAAAE,gBAAA,GAAA1C,iBAAA;AAEO;AACL,SAAO2C,qBAAgBA,CAAAC,UAAW;EACpC,OAAA/B,2BAAA,CAAA+B,UAAA,CAAApC,OAAA,CAAAP,uBAAA,MAAAO,OAAA,2BAAAA,OAAA,uBAAAA,OAAA,oBAAAqC,KAAA;IAEO,OAASA,KAAA,SACd,YACA;EAGA;AACA;AAEA,SAEAhC,2BAAmB,EACnBR,2BAAyB,EAEzBuB,aAAU,EACZe,qBAAA,EAEOhB,iBAAS,EACdH,cAAO","ignoreList":[]}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { describe, expect, it } from "vitest";
|
|
2
|
-
import { getLoaderPath, getPathFromLoaderPath } from "./cleanUrl.mjs";
|
|
2
|
+
import { encodeReservedFilenameChars, getLoaderPath, getPathFromLoaderPath, getPreloadPath } from "./cleanUrl.mjs";
|
|
3
3
|
function roundtrip(path) {
|
|
4
4
|
const loaderPath = getLoaderPath(path, false);
|
|
5
5
|
return getPathFromLoaderPath(loaderPath);
|
|
@@ -63,6 +63,43 @@ describe("getLoaderPath format", () => {
|
|
|
63
63
|
expect(result).toContain("_refetch_12345_");
|
|
64
64
|
});
|
|
65
65
|
});
|
|
66
|
+
describe("NTFS-reserved characters in route-derived names", () => {
|
|
67
|
+
it("roundtrips a root dynamic route pattern", () => {
|
|
68
|
+
expect(roundtrip("/:param")).toBe("/:param");
|
|
69
|
+
});
|
|
70
|
+
it("roundtrips a nested dynamic route pattern", () => {
|
|
71
|
+
expect(roundtrip("/dashboard/:appId")).toBe("/dashboard/:appId");
|
|
72
|
+
});
|
|
73
|
+
it("roundtrips a catch-all pattern", () => {
|
|
74
|
+
expect(roundtrip("/*")).toBe("/*");
|
|
75
|
+
});
|
|
76
|
+
it("roundtrips hostile concrete param values (chars that survive URL parsing raw)", () => {
|
|
77
|
+
expect(roundtrip("/blog/a:b*c")).toBe("/blog/a:b*c");
|
|
78
|
+
});
|
|
79
|
+
it("emits filesystem-legal names for the full reserved set via preload paths", () => {
|
|
80
|
+
expect(getPreloadPath('/blog/a:b*c"d<e>f|g?h')).not.toMatch(/[<>:"|?*]/);
|
|
81
|
+
});
|
|
82
|
+
it("roundtrips literal equals signs (self-escape)", () => {
|
|
83
|
+
expect(roundtrip("/foo=bar")).toBe("/foo=bar");
|
|
84
|
+
});
|
|
85
|
+
it("roundtrips equals followed by hex-looking characters", () => {
|
|
86
|
+
expect(roundtrip("/x=3ay")).toBe("/x=3ay");
|
|
87
|
+
});
|
|
88
|
+
it("emits no NTFS-reserved characters in loader filenames", () => {
|
|
89
|
+
expect(getLoaderPath("/dashboard/:appId", false)).not.toMatch(/[<>:"|?*]/);
|
|
90
|
+
});
|
|
91
|
+
it("emits no NTFS-reserved characters in preload filenames", () => {
|
|
92
|
+
expect(getPreloadPath("/:param")).not.toMatch(/[<>:"|?*]/);
|
|
93
|
+
expect(getPreloadPath("/*")).not.toMatch(/[<>:"|?*]/);
|
|
94
|
+
});
|
|
95
|
+
it("encodeReservedFilenameChars is identity for clean paths", () => {
|
|
96
|
+
expect(encodeReservedFilenameChars("/blog/my-slug.html")).toBe("/blog/my-slug.html");
|
|
97
|
+
});
|
|
98
|
+
it("encodes the html artifact path for non-prerendered dynamic routes", () => {
|
|
99
|
+
expect(encodeReservedFilenameChars("/dashboard/:appId.html")).toBe("/dashboard/=3aappId.html");
|
|
100
|
+
expect(encodeReservedFilenameChars("/*.html")).toBe("/=2a.html");
|
|
101
|
+
});
|
|
102
|
+
});
|
|
66
103
|
describe("getPathFromLoaderPath", () => {
|
|
67
104
|
it("strips /_one/assets prefix", () => {
|
|
68
105
|
expect(getPathFromLoaderPath("/_one/assets/docs_intro_999_vxrn_loader.js")).toBe("/docs/intro");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["describe","expect","it","getLoaderPath","getPathFromLoaderPath","roundtrip","path","loaderPath","toBe","result","toMatch","originalEnv","process","env","NODE_ENV","toContain"],"sources":["../../../src/utils/cleanUrl.test.ts"],"sourcesContent":[null],"mappings":"AAAA,SAASA,QAAA,EAAUC,MAAA,EAAQC,EAAA,QAAU;AACrC,
|
|
1
|
+
{"version":3,"names":["describe","expect","it","encodeReservedFilenameChars","getLoaderPath","getPathFromLoaderPath","getPreloadPath","roundtrip","path","loaderPath","toBe","result","toMatch","originalEnv","process","env","NODE_ENV","toContain","not"],"sources":["../../../src/utils/cleanUrl.test.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { describe, expect, it } from "vitest";
|
|
2
|
-
import { getLoaderPath, getPathFromLoaderPath } from "./cleanUrl.native.js";
|
|
2
|
+
import { encodeReservedFilenameChars, getLoaderPath, getPathFromLoaderPath, getPreloadPath } from "./cleanUrl.native.js";
|
|
3
3
|
function roundtrip(path) {
|
|
4
4
|
var loaderPath = getLoaderPath(path, false);
|
|
5
5
|
return getPathFromLoaderPath(loaderPath);
|
|
@@ -63,6 +63,43 @@ describe("getLoaderPath format", function () {
|
|
|
63
63
|
expect(result).toContain("_refetch_12345_");
|
|
64
64
|
});
|
|
65
65
|
});
|
|
66
|
+
describe("NTFS-reserved characters in route-derived names", function () {
|
|
67
|
+
it("roundtrips a root dynamic route pattern", function () {
|
|
68
|
+
expect(roundtrip("/:param")).toBe("/:param");
|
|
69
|
+
});
|
|
70
|
+
it("roundtrips a nested dynamic route pattern", function () {
|
|
71
|
+
expect(roundtrip("/dashboard/:appId")).toBe("/dashboard/:appId");
|
|
72
|
+
});
|
|
73
|
+
it("roundtrips a catch-all pattern", function () {
|
|
74
|
+
expect(roundtrip("/*")).toBe("/*");
|
|
75
|
+
});
|
|
76
|
+
it("roundtrips hostile concrete param values (chars that survive URL parsing raw)", function () {
|
|
77
|
+
expect(roundtrip("/blog/a:b*c")).toBe("/blog/a:b*c");
|
|
78
|
+
});
|
|
79
|
+
it("emits filesystem-legal names for the full reserved set via preload paths", function () {
|
|
80
|
+
expect(getPreloadPath('/blog/a:b*c"d<e>f|g?h')).not.toMatch(/[<>:"|?*]/);
|
|
81
|
+
});
|
|
82
|
+
it("roundtrips literal equals signs (self-escape)", function () {
|
|
83
|
+
expect(roundtrip("/foo=bar")).toBe("/foo=bar");
|
|
84
|
+
});
|
|
85
|
+
it("roundtrips equals followed by hex-looking characters", function () {
|
|
86
|
+
expect(roundtrip("/x=3ay")).toBe("/x=3ay");
|
|
87
|
+
});
|
|
88
|
+
it("emits no NTFS-reserved characters in loader filenames", function () {
|
|
89
|
+
expect(getLoaderPath("/dashboard/:appId", false)).not.toMatch(/[<>:"|?*]/);
|
|
90
|
+
});
|
|
91
|
+
it("emits no NTFS-reserved characters in preload filenames", function () {
|
|
92
|
+
expect(getPreloadPath("/:param")).not.toMatch(/[<>:"|?*]/);
|
|
93
|
+
expect(getPreloadPath("/*")).not.toMatch(/[<>:"|?*]/);
|
|
94
|
+
});
|
|
95
|
+
it("encodeReservedFilenameChars is identity for clean paths", function () {
|
|
96
|
+
expect(encodeReservedFilenameChars("/blog/my-slug.html")).toBe("/blog/my-slug.html");
|
|
97
|
+
});
|
|
98
|
+
it("encodes the html artifact path for non-prerendered dynamic routes", function () {
|
|
99
|
+
expect(encodeReservedFilenameChars("/dashboard/:appId.html")).toBe("/dashboard/=3aappId.html");
|
|
100
|
+
expect(encodeReservedFilenameChars("/*.html")).toBe("/=2a.html");
|
|
101
|
+
});
|
|
102
|
+
});
|
|
66
103
|
describe("getPathFromLoaderPath", function () {
|
|
67
104
|
it("strips /_one/assets prefix", function () {
|
|
68
105
|
expect(getPathFromLoaderPath("/_one/assets/docs_intro_999_vxrn_loader.js")).toBe("/docs/intro");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["describe","expect","it","getLoaderPath","getPathFromLoaderPath","roundtrip","path","loaderPath","toBe","result","toMatch","originalEnv","process","env","NODE_ENV","toContain"],"sources":["../../../src/utils/cleanUrl.test.ts"],"sourcesContent":[null],"mappings":"AAAA,SAASA,QAAA,EAAUC,MAAA,EAAQC,EAAA,QAAU;AACrC,
|
|
1
|
+
{"version":3,"names":["describe","expect","it","encodeReservedFilenameChars","getLoaderPath","getPathFromLoaderPath","getPreloadPath","roundtrip","path","loaderPath","toBe","result","toMatch","originalEnv","process","env","NODE_ENV","toContain","not"],"sources":["../../../src/utils/cleanUrl.test.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
import { resolve } from "node:path";
|
|
2
2
|
import { pathToFileURL } from "node:url";
|
|
3
3
|
import { configuration } from "@vxrn/compiler";
|
|
4
|
+
import Glob from "fast-glob";
|
|
4
5
|
import { isNativeEnvironment } from "vxrn";
|
|
5
6
|
import { API_ROUTE_GLOB_PATTERN, ROUTE_GLOB_PATTERN, ROUTE_NATIVE_EXCLUSION_GLOB_PATTERNS, ROUTE_WEB_EXCLUSION_GLOB_PATTERNS } from "../../router/glob-patterns.mjs";
|
|
7
|
+
import { matchDirectoryRenderMode, matchFileRenderMode } from "../../router/matchers.mjs";
|
|
6
8
|
import { resolvedVirtualEntryId, resolvedVirtualEntryIdNative, virtualEntryId, virtualEntryIdNative } from "./virtualEntryConstants.mjs";
|
|
7
9
|
function normalizeSetupFile(setupFile) {
|
|
8
10
|
if (!setupFile) return {};
|
|
@@ -88,6 +90,25 @@ function createVirtualEntry(options) {
|
|
|
88
90
|
if (id === resolvedVirtualEntryId) {
|
|
89
91
|
const isNative = isNativeEnvironment(this.environment);
|
|
90
92
|
const isSSR = this.environment.name === "ssr";
|
|
93
|
+
const serverSpaRouteFiles = isSSR ? Glob.sync("**/*.{ts,tsx}", {
|
|
94
|
+
cwd: resolve(viteRoot, options.root),
|
|
95
|
+
ignore: [...ROUTE_WEB_EXCLUSION_GLOB_PATTERNS, ...(options.router?.ignoredRouteFiles || [])]
|
|
96
|
+
}).map(file => file.replaceAll("\\", "/")).filter(file => {
|
|
97
|
+
const parts = file.split("/");
|
|
98
|
+
const filename = parts.at(-1) || "";
|
|
99
|
+
if (filename.startsWith("_layout") || filename.startsWith("_middleware")) {
|
|
100
|
+
return false;
|
|
101
|
+
}
|
|
102
|
+
const fileMode = matchFileRenderMode(filename);
|
|
103
|
+
if (fileMode) return fileMode === "spa";
|
|
104
|
+
let parentMode;
|
|
105
|
+
for (const directory of parts.slice(0, -1)) {
|
|
106
|
+
parentMode = matchDirectoryRenderMode(directory)?.renderMode ?? parentMode;
|
|
107
|
+
}
|
|
108
|
+
return parentMode === "spa";
|
|
109
|
+
}) : [];
|
|
110
|
+
const serverSpaRouteStubs = serverSpaRouteFiles.map(file => `${JSON.stringify(`/${options.root}/${file}`)}: () => Promise.resolve({})`).join(",\n ");
|
|
111
|
+
const webRouteGlobs = [...routeGlobs, ...ROUTE_WEB_EXCLUSION_GLOB_PATTERNS.map(pattern => `!${pattern}`), ...serverSpaRouteFiles.map(file => `!/${options.root}/${file}`)];
|
|
91
112
|
const useStaticImport = isNative || isSSR && isDevMode;
|
|
92
113
|
const setupResult = getSetupFileImport(this.environment.name, setupFiles, useStaticImport, viteRoot);
|
|
93
114
|
const nativewindImport = configuration.enableNativewind ? `import 'react-native-css-interop/dist/runtime/components'` : "";
|
|
@@ -111,10 +132,13 @@ if (typeof window !== 'undefined') {
|
|
|
111
132
|
window.__oneRegisterPreloadedRoute = registerPreloadedRoute
|
|
112
133
|
}
|
|
113
134
|
|
|
114
|
-
// globbing ${JSON.stringify(
|
|
135
|
+
// globbing ${JSON.stringify(webRouteGlobs)}
|
|
115
136
|
export default createApp({
|
|
116
137
|
${setupPromiseArg}
|
|
117
|
-
routes:
|
|
138
|
+
routes: {
|
|
139
|
+
...import.meta.glob(${JSON.stringify(webRouteGlobs)}, { exhaustive: true }),
|
|
140
|
+
${serverSpaRouteStubs}
|
|
141
|
+
},
|
|
118
142
|
routerRoot: ${JSON.stringify(options.root)},
|
|
119
143
|
flags: ${JSON.stringify(options.flags)},
|
|
120
144
|
${linkingArg}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["resolve","pathToFileURL","configuration","isNativeEnvironment","API_ROUTE_GLOB_PATTERN","ROUTE_GLOB_PATTERN","ROUTE_NATIVE_EXCLUSION_GLOB_PATTERNS","ROUTE_WEB_EXCLUSION_GLOB_PATTERNS","resolvedVirtualEntryId","resolvedVirtualEntryIdNative","virtualEntryId","virtualEntryIdNative","normalizeSetupFile","setupFile","client","server","ios","android","native","sf","getSetupFileImport","environmentName","setupFiles","useStaticImport","root","envMap","ssr","key","importStatement","promiseDeclaration","promiseVarName","resolvedSetupFile","href","JSON","stringify","createVirtualEntry","options","routeGlobs","router","ignoredRouteFiles","map","pattern","apiRouteGlobs","viteRoot","isDevMode","name","enforce","configResolved","config","command","resolveId","id","load","isNative","environment","isSSR","setupResult","nativewindImport","enableNativewind","setupPromiseArg","linkingArg","linking","
|
|
1
|
+
{"version":3,"names":["resolve","pathToFileURL","configuration","Glob","isNativeEnvironment","API_ROUTE_GLOB_PATTERN","ROUTE_GLOB_PATTERN","ROUTE_NATIVE_EXCLUSION_GLOB_PATTERNS","ROUTE_WEB_EXCLUSION_GLOB_PATTERNS","matchDirectoryRenderMode","matchFileRenderMode","resolvedVirtualEntryId","resolvedVirtualEntryIdNative","virtualEntryId","virtualEntryIdNative","normalizeSetupFile","setupFile","client","server","ios","android","native","sf","getSetupFileImport","environmentName","setupFiles","useStaticImport","root","envMap","ssr","key","importStatement","promiseDeclaration","promiseVarName","resolvedSetupFile","href","JSON","stringify","createVirtualEntry","options","routeGlobs","router","ignoredRouteFiles","map","pattern","apiRouteGlobs","viteRoot","isDevMode","name","enforce","configResolved","config","command","resolveId","id","load","isNative","environment","isSSR","serverSpaRouteFiles","sync","cwd","ignore","file","replaceAll","filter","parts","split","filename","at","startsWith","fileMode","parentMode","directory","slice","renderMode","serverSpaRouteStubs","join","webRouteGlobs","setupResult","nativewindImport","enableNativewind","setupPromiseArg","linkingArg","linking","flags","p"],"sources":["../../../../src/vite/plugins/virtualEntryPlugin.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|