one 1.9.8 → 1.9.9
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/useLoader.cjs +34 -2
- package/dist/cjs/useLoader.js +34 -3
- package/dist/cjs/useLoader.js.map +2 -2
- package/dist/cjs/useLoader.native.js +40 -2
- package/dist/cjs/useLoader.native.js.map +1 -1
- package/dist/cjs/useMatches.cjs +10 -0
- package/dist/cjs/useMatches.js +8 -0
- package/dist/cjs/useMatches.js.map +1 -1
- package/dist/cjs/useMatches.native.js +28 -0
- package/dist/cjs/useMatches.native.js.map +1 -1
- package/dist/cjs/utils/cleanUrl.cjs +1 -1
- package/dist/cjs/utils/cleanUrl.js +1 -1
- package/dist/cjs/utils/cleanUrl.js.map +1 -1
- package/dist/cjs/utils/cleanUrl.native.js +1 -1
- package/dist/cjs/utils/cleanUrl.native.js.map +1 -1
- package/dist/cjs/vite/constants.cjs +7 -3
- package/dist/cjs/vite/constants.js +7 -2
- package/dist/cjs/vite/constants.js.map +1 -1
- package/dist/cjs/vite/constants.native.js +7 -3
- package/dist/cjs/vite/constants.native.js.map +1 -1
- package/dist/cjs/vite/plugins/clientTreeShakePlugin.cjs +12 -3
- package/dist/cjs/vite/plugins/clientTreeShakePlugin.js +12 -3
- package/dist/cjs/vite/plugins/clientTreeShakePlugin.js.map +1 -1
- package/dist/cjs/vite/plugins/clientTreeShakePlugin.native.js +11 -3
- package/dist/cjs/vite/plugins/clientTreeShakePlugin.native.js.map +1 -1
- package/dist/cjs/vite/plugins/clientTreeShakePlugin.test.cjs +81 -0
- package/dist/cjs/vite/plugins/clientTreeShakePlugin.test.js +87 -0
- package/dist/cjs/vite/plugins/clientTreeShakePlugin.test.js.map +1 -1
- package/dist/cjs/vite/plugins/clientTreeShakePlugin.test.native.js +87 -0
- package/dist/cjs/vite/plugins/clientTreeShakePlugin.test.native.js.map +1 -1
- package/dist/cjs/vite/replaceLoader.cjs +4 -2
- package/dist/cjs/vite/replaceLoader.js +4 -3
- package/dist/cjs/vite/replaceLoader.js.map +1 -1
- package/dist/cjs/vite/replaceLoader.native.js +3 -1
- package/dist/cjs/vite/replaceLoader.native.js.map +1 -1
- package/dist/esm/useLoader.js +34 -2
- package/dist/esm/useLoader.js.map +2 -2
- package/dist/esm/useLoader.mjs +34 -3
- package/dist/esm/useLoader.mjs.map +1 -1
- package/dist/esm/useLoader.native.js +40 -3
- package/dist/esm/useLoader.native.js.map +1 -1
- package/dist/esm/useMatches.js +8 -0
- package/dist/esm/useMatches.js.map +1 -1
- package/dist/esm/useMatches.mjs +8 -1
- package/dist/esm/useMatches.mjs.map +1 -1
- package/dist/esm/useMatches.native.js +26 -1
- package/dist/esm/useMatches.native.js.map +1 -1
- package/dist/esm/utils/cleanUrl.js +1 -1
- package/dist/esm/utils/cleanUrl.js.map +1 -1
- package/dist/esm/utils/cleanUrl.mjs +1 -1
- package/dist/esm/utils/cleanUrl.mjs.map +1 -1
- package/dist/esm/utils/cleanUrl.native.js +1 -1
- package/dist/esm/utils/cleanUrl.native.js.map +1 -1
- package/dist/esm/vite/constants.js +7 -2
- package/dist/esm/vite/constants.js.map +1 -1
- package/dist/esm/vite/constants.mjs +6 -3
- package/dist/esm/vite/constants.mjs.map +1 -1
- package/dist/esm/vite/constants.native.js +6 -3
- package/dist/esm/vite/constants.native.js.map +1 -1
- package/dist/esm/vite/plugins/clientTreeShakePlugin.js +13 -4
- package/dist/esm/vite/plugins/clientTreeShakePlugin.js.map +1 -1
- package/dist/esm/vite/plugins/clientTreeShakePlugin.mjs +13 -4
- package/dist/esm/vite/plugins/clientTreeShakePlugin.mjs.map +1 -1
- package/dist/esm/vite/plugins/clientTreeShakePlugin.native.js +12 -4
- package/dist/esm/vite/plugins/clientTreeShakePlugin.native.js.map +1 -1
- package/dist/esm/vite/plugins/clientTreeShakePlugin.test.js +87 -0
- package/dist/esm/vite/plugins/clientTreeShakePlugin.test.js.map +1 -1
- package/dist/esm/vite/plugins/clientTreeShakePlugin.test.mjs +81 -0
- package/dist/esm/vite/plugins/clientTreeShakePlugin.test.mjs.map +1 -1
- package/dist/esm/vite/plugins/clientTreeShakePlugin.test.native.js +87 -0
- package/dist/esm/vite/plugins/clientTreeShakePlugin.test.native.js.map +1 -1
- package/dist/esm/vite/replaceLoader.js +4 -3
- package/dist/esm/vite/replaceLoader.js.map +1 -1
- package/dist/esm/vite/replaceLoader.mjs +4 -2
- package/dist/esm/vite/replaceLoader.mjs.map +1 -1
- package/dist/esm/vite/replaceLoader.native.js +3 -1
- package/dist/esm/vite/replaceLoader.native.js.map +1 -1
- package/package.json +9 -9
- package/src/useLoader.ts +69 -0
- package/src/useMatches.ts +13 -2
- package/src/utils/cleanUrl.ts +1 -1
- package/src/vite/constants.ts +4 -0
- package/src/vite/plugins/clientTreeShakePlugin.test.ts +121 -0
- package/src/vite/plugins/clientTreeShakePlugin.ts +13 -3
- package/src/vite/replaceLoader.ts +23 -9
- package/types/useLoader.d.ts +10 -0
- package/types/useLoader.d.ts.map +1 -1
- package/types/useMatches.d.ts +7 -0
- package/types/useMatches.d.ts.map +1 -1
- package/types/vite/constants.d.ts +1 -0
- package/types/vite/constants.d.ts.map +1 -1
- package/types/vite/plugins/clientTreeShakePlugin.d.ts +1 -1
- package/types/vite/plugins/clientTreeShakePlugin.d.ts.map +1 -1
- package/types/vite/replaceLoader.d.ts.map +1 -1
|
@@ -56,11 +56,11 @@ const clientTreeShakePlugin = () => ({
|
|
|
56
56
|
transform: {
|
|
57
57
|
order: "pre",
|
|
58
58
|
async handler(code, id, settings) {
|
|
59
|
-
return this.environment.name === "ssr" || !/\.(js|jsx|ts|tsx)/.test((0, import_node_path.extname)(id)) || /node_modules/.test(id) ? void 0 : await transformTreeShakeClient(code, id);
|
|
59
|
+
return this.environment.name === "ssr" || !/\.(js|jsx|ts|tsx)/.test((0, import_node_path.extname)(id)) || /node_modules/.test(id) ? void 0 : await transformTreeShakeClient(code, id, process.cwd());
|
|
60
60
|
}
|
|
61
61
|
}
|
|
62
62
|
});
|
|
63
|
-
async function transformTreeShakeClient(code, id) {
|
|
63
|
+
async function transformTreeShakeClient(code, id, root) {
|
|
64
64
|
if (!/generateStaticParams|loader/.test(code))
|
|
65
65
|
return;
|
|
66
66
|
let ast;
|
|
@@ -122,7 +122,16 @@ async function transformTreeShakeClient(code, id) {
|
|
|
122
122
|
(0, import_babel_dead_code_elimination.deadCodeElimination)(ast, referenced), restoreTypeImports(ast, typeImports);
|
|
123
123
|
const out = generate(ast, { retainLines: !0 }), codeOut = out.code + `
|
|
124
124
|
|
|
125
|
-
` + removedFunctions.map((key) =>
|
|
125
|
+
` + removedFunctions.map((key) => {
|
|
126
|
+
if (key === "loader") {
|
|
127
|
+
if (root) {
|
|
128
|
+
const routeId = "./" + (0, import_node_path.relative)(root, id).replace(/\\/g, "/").replace(/^app\//, "");
|
|
129
|
+
return (0, import_constants.makeLoaderRouteIdStub)(routeId);
|
|
130
|
+
}
|
|
131
|
+
return import_constants.EMPTY_LOADER_STRING;
|
|
132
|
+
}
|
|
133
|
+
return "export function generateStaticParams() {};";
|
|
134
|
+
}).join(`
|
|
126
135
|
`);
|
|
127
136
|
return console.info(
|
|
128
137
|
` \u{1F9F9} [one] ${(0, import_node_path.relative)(process.cwd(), id)} removed ${removedFunctions.length} server-only exports`
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../src/vite/plugins/clientTreeShakePlugin.ts"],
|
|
4
|
-
"mappings": ";;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,uBAAkC,sBAClC,mBAA0B,yCAC1B,gBAAsB,0BACtB,kBAA0B,wCAE1B,qCAGO,wCAEP,
|
|
4
|
+
"mappings": "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",
|
|
5
5
|
"names": ["BabelTraverse", "BabelGenerate"]
|
|
6
6
|
}
|
|
@@ -94,14 +94,14 @@ var clientTreeShakePlugin = function () {
|
|
|
94
94
|
order: "pre",
|
|
95
95
|
async handler(code, id, settings) {
|
|
96
96
|
if (this.environment.name !== "ssr" && /\.(js|jsx|ts|tsx)/.test((0, import_path.extname)(id)) && !/node_modules/.test(id)) {
|
|
97
|
-
var out = await transformTreeShakeClient(code, id);
|
|
97
|
+
var out = await transformTreeShakeClient(code, id, process.cwd());
|
|
98
98
|
return out;
|
|
99
99
|
}
|
|
100
100
|
}
|
|
101
101
|
}
|
|
102
102
|
};
|
|
103
103
|
};
|
|
104
|
-
async function transformTreeShakeClient(code, id) {
|
|
104
|
+
async function transformTreeShakeClient(code, id, root) {
|
|
105
105
|
if (/generateStaticParams|loader/.test(code)) {
|
|
106
106
|
var ast;
|
|
107
107
|
try {
|
|
@@ -158,7 +158,15 @@ async function transformTreeShakeClient(code, id) {
|
|
|
158
158
|
codeOut = out.code + `
|
|
159
159
|
|
|
160
160
|
` + removedFunctions.map(function (key) {
|
|
161
|
-
|
|
161
|
+
if (key === "loader") {
|
|
162
|
+
if (root) {
|
|
163
|
+
var fromRoot = (0, import_path.relative)(root, id).replace(/\\/g, "/"),
|
|
164
|
+
routeId = "./" + fromRoot.replace(/^app\//, "");
|
|
165
|
+
return (0, import_constants.makeLoaderRouteIdStub)(routeId);
|
|
166
|
+
}
|
|
167
|
+
return import_constants.EMPTY_LOADER_STRING;
|
|
168
|
+
}
|
|
169
|
+
return "export function generateStaticParams() {};";
|
|
162
170
|
}).join(`
|
|
163
171
|
`);
|
|
164
172
|
return console.info(` \u{1F9F9} [one] ${(0, import_path.relative)(process.cwd(), id)} removed ${removedFunctions.length} server-only exports`), {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["__toCommonJS","mod","__copyProps","__defProp","value","clientTreeShakePlugin_exports","__export","clientTreeShakePlugin","transformTreeShakeClient","module","exports","import_path","require","import_generator","__toESM","import_parser","import_traverse","import_babel_dead_code_elimination","import_constants","_instanceof","left","right","Symbol","hasInstance","traverse","default","generate","collectTypeImports","ast","typeImports","ImportDeclaration","path","node","importKind","push","restoreTypeImports","length","existingSources","Set","add","source","_iteratorNormalCompletion","_didIteratorError","_iteratorError","_iterator","iterator","_step","next","done","typeImport","has","program","body","unshift","err","return","name","enforce","applyToEnvironment","env","transform","order","handler","code","id","settings","environment","test","extname","out","parse","sourceType","plugins","error","errorMessage","Error","message","String","console","warn","referenced","findReferencedIdentifiers","errorMessage1","removed","loader","generateStaticParams","ExportNamedDeclaration","declaration","type","functionName","remove","declarations","forEach","declarator","index","get","Array","isArray","errorMessage2","removedFunctions","Object","keys","filter","key","deadCodeElimination"],"sources":["../../../../src/vite/plugins/clientTreeShakePlugin.ts"],"sourcesContent":[null],"mappings":"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
|
|
1
|
+
{"version":3,"names":["__toCommonJS","mod","__copyProps","__defProp","value","clientTreeShakePlugin_exports","__export","clientTreeShakePlugin","transformTreeShakeClient","module","exports","import_path","require","import_generator","__toESM","import_parser","import_traverse","import_babel_dead_code_elimination","import_constants","_instanceof","left","right","Symbol","hasInstance","traverse","default","generate","collectTypeImports","ast","typeImports","ImportDeclaration","path","node","importKind","push","restoreTypeImports","length","existingSources","Set","add","source","_iteratorNormalCompletion","_didIteratorError","_iteratorError","_iterator","iterator","_step","next","done","typeImport","has","program","body","unshift","err","return","name","enforce","applyToEnvironment","env","transform","order","handler","code","id","settings","environment","test","extname","out","process","cwd","root","parse","sourceType","plugins","error","errorMessage","Error","message","String","console","warn","referenced","findReferencedIdentifiers","errorMessage1","removed","loader","generateStaticParams","ExportNamedDeclaration","declaration","type","functionName","remove","declarations","forEach","declarator","index","get","Array","isArray","errorMessage2","removedFunctions","Object","keys","filter","key","deadCodeElimination","retainLines","codeOut","map","fromRoot","relative","replace","routeId","makeLoaderRouteIdStub"],"sources":["../../../../src/vite/plugins/clientTreeShakePlugin.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
|
@@ -90,6 +90,87 @@ export default function Page() {
|
|
|
90
90
|
}
|
|
91
91
|
`, "/app/index.tsx");
|
|
92
92
|
(0, import_vitest.expect)(result).toBeUndefined();
|
|
93
|
+
}), (0, import_vitest.it)("should embed routeId in loader stub when root is provided", async () => {
|
|
94
|
+
const result = await (0, import_clientTreeShakePlugin.transformTreeShakeClient)(`
|
|
95
|
+
import { serverOnlyModule } from 'server-only-pkg'
|
|
96
|
+
import { useLoader } from 'one'
|
|
97
|
+
|
|
98
|
+
export async function loader() {
|
|
99
|
+
return serverOnlyModule()
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
export default function Layout() {
|
|
103
|
+
const data = useLoader(loader)
|
|
104
|
+
return data
|
|
105
|
+
}
|
|
106
|
+
`, "/project/app/_layout.tsx", "/project");
|
|
107
|
+
(0, import_vitest.expect)(result).toBeDefined(), (0, import_vitest.expect)(result.code).toContain('export function loader() {return "./_layout.tsx"}'), (0, import_vitest.expect)(result.code).not.toContain("__vxrn__loader__");
|
|
108
|
+
}), (0, import_vitest.it)("should embed routeId with render mode suffix in loader stub", async () => {
|
|
109
|
+
const result = await (0, import_clientTreeShakePlugin.transformTreeShakeClient)(`
|
|
110
|
+
import { serverOnlyModule } from 'server-only-pkg'
|
|
111
|
+
import { useLoader } from 'one'
|
|
112
|
+
|
|
113
|
+
export async function loader() {
|
|
114
|
+
return serverOnlyModule()
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
export default function Layout() {
|
|
118
|
+
const data = useLoader(loader)
|
|
119
|
+
return data
|
|
120
|
+
}
|
|
121
|
+
`, "/project/app/user+ssr.tsx", "/project");
|
|
122
|
+
(0, import_vitest.expect)(result).toBeDefined(), (0, import_vitest.expect)(result.code).toContain('export function loader() {return "./user+ssr.tsx"}');
|
|
123
|
+
}), (0, import_vitest.it)("should fall back to __vxrn__loader__ stub when no root provided", async () => {
|
|
124
|
+
const result = await (0, import_clientTreeShakePlugin.transformTreeShakeClient)(`
|
|
125
|
+
import { serverOnlyModule } from 'server-only-pkg'
|
|
126
|
+
import { useLoader } from 'one'
|
|
127
|
+
|
|
128
|
+
export async function loader() {
|
|
129
|
+
return serverOnlyModule()
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
export default function Page() {
|
|
133
|
+
const data = useLoader(loader)
|
|
134
|
+
return data
|
|
135
|
+
}
|
|
136
|
+
`, "/app/index.tsx");
|
|
137
|
+
(0, import_vitest.expect)(result).toBeDefined(), (0, import_vitest.expect)(result.code).toContain("__vxrn__loader__");
|
|
138
|
+
}), (0, import_vitest.it)("should not transform route file when loader is imported (no inline declaration)", async () => {
|
|
139
|
+
const result = await (0, import_clientTreeShakePlugin.transformTreeShakeClient)(`
|
|
140
|
+
import { loader } from './loaders/my-loader'
|
|
141
|
+
import { useLoader } from 'one'
|
|
142
|
+
|
|
143
|
+
export { loader }
|
|
144
|
+
|
|
145
|
+
export default function Layout() {
|
|
146
|
+
const data = useLoader(loader)
|
|
147
|
+
return data
|
|
148
|
+
}
|
|
149
|
+
`, "/project/app/_layout.tsx", "/project");
|
|
150
|
+
(0, import_vitest.expect)(result).toBeUndefined();
|
|
151
|
+
}), (0, import_vitest.it)("should tree-shake server imports from source file where loader is defined", async () => {
|
|
152
|
+
const result = await (0, import_clientTreeShakePlugin.transformTreeShakeClient)(`
|
|
153
|
+
import { db } from 'server-only-db'
|
|
154
|
+
|
|
155
|
+
export async function loader() {
|
|
156
|
+
return db.query('SELECT * FROM users')
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
export function helperUsedByClient() {
|
|
160
|
+
return 'hello'
|
|
161
|
+
}
|
|
162
|
+
`, "/project/app/loaders/my-loader.ts", "/project");
|
|
163
|
+
(0, import_vitest.expect)(result).toBeDefined(), (0, import_vitest.expect)(result.code).not.toContain("server-only-db"), (0, import_vitest.expect)(result.code).toContain("helperUsedByClient"), (0, import_vitest.expect)(result.code).toContain('export function loader() {return "./loaders/my-loader.ts"}');
|
|
164
|
+
}), (0, import_vitest.it)("should not transform re-export from source syntax", async () => {
|
|
165
|
+
const result = await (0, import_clientTreeShakePlugin.transformTreeShakeClient)(`
|
|
166
|
+
export { loader } from './loaders/shared-loader'
|
|
167
|
+
import { useLoader } from 'one'
|
|
168
|
+
|
|
169
|
+
export default function Page() {
|
|
170
|
+
return 'hello'
|
|
171
|
+
}
|
|
172
|
+
`, "/project/app/page.tsx", "/project");
|
|
173
|
+
(0, import_vitest.expect)(result).toBeUndefined();
|
|
93
174
|
}), (0, import_vitest.it)("should preserve type-only imports during tree shaking", async () => {
|
|
94
175
|
const result = await (0, import_clientTreeShakePlugin.transformTreeShakeClient)(`
|
|
95
176
|
import type { SomeType } from 'types-pkg'
|
|
@@ -89,6 +89,93 @@ export default function Page() {
|
|
|
89
89
|
}
|
|
90
90
|
`, "/app/index.tsx");
|
|
91
91
|
(0, import_vitest.expect)(result).toBeUndefined();
|
|
92
|
+
}), (0, import_vitest.it)("should embed routeId in loader stub when root is provided", async () => {
|
|
93
|
+
const result = await (0, import_clientTreeShakePlugin.transformTreeShakeClient)(`
|
|
94
|
+
import { serverOnlyModule } from 'server-only-pkg'
|
|
95
|
+
import { useLoader } from 'one'
|
|
96
|
+
|
|
97
|
+
export async function loader() {
|
|
98
|
+
return serverOnlyModule()
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
export default function Layout() {
|
|
102
|
+
const data = useLoader(loader)
|
|
103
|
+
return data
|
|
104
|
+
}
|
|
105
|
+
`, "/project/app/_layout.tsx", "/project");
|
|
106
|
+
(0, import_vitest.expect)(result).toBeDefined(), (0, import_vitest.expect)(result.code).toContain('export function loader() {return "./_layout.tsx"}'), (0, import_vitest.expect)(result.code).not.toContain("__vxrn__loader__");
|
|
107
|
+
}), (0, import_vitest.it)("should embed routeId with render mode suffix in loader stub", async () => {
|
|
108
|
+
const result = await (0, import_clientTreeShakePlugin.transformTreeShakeClient)(`
|
|
109
|
+
import { serverOnlyModule } from 'server-only-pkg'
|
|
110
|
+
import { useLoader } from 'one'
|
|
111
|
+
|
|
112
|
+
export async function loader() {
|
|
113
|
+
return serverOnlyModule()
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
export default function Layout() {
|
|
117
|
+
const data = useLoader(loader)
|
|
118
|
+
return data
|
|
119
|
+
}
|
|
120
|
+
`, "/project/app/user+ssr.tsx", "/project");
|
|
121
|
+
(0, import_vitest.expect)(result).toBeDefined(), (0, import_vitest.expect)(result.code).toContain('export function loader() {return "./user+ssr.tsx"}');
|
|
122
|
+
}), (0, import_vitest.it)("should fall back to __vxrn__loader__ stub when no root provided", async () => {
|
|
123
|
+
const result = await (0, import_clientTreeShakePlugin.transformTreeShakeClient)(`
|
|
124
|
+
import { serverOnlyModule } from 'server-only-pkg'
|
|
125
|
+
import { useLoader } from 'one'
|
|
126
|
+
|
|
127
|
+
export async function loader() {
|
|
128
|
+
return serverOnlyModule()
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
export default function Page() {
|
|
132
|
+
const data = useLoader(loader)
|
|
133
|
+
return data
|
|
134
|
+
}
|
|
135
|
+
`, "/app/index.tsx");
|
|
136
|
+
(0, import_vitest.expect)(result).toBeDefined(), (0, import_vitest.expect)(result.code).toContain("__vxrn__loader__");
|
|
137
|
+
}), (0, import_vitest.it)("should not transform route file when loader is imported (no inline declaration)", async () => {
|
|
138
|
+
const result = await (0, import_clientTreeShakePlugin.transformTreeShakeClient)(`
|
|
139
|
+
import { loader } from './loaders/my-loader'
|
|
140
|
+
import { useLoader } from 'one'
|
|
141
|
+
|
|
142
|
+
export { loader }
|
|
143
|
+
|
|
144
|
+
export default function Layout() {
|
|
145
|
+
const data = useLoader(loader)
|
|
146
|
+
return data
|
|
147
|
+
}
|
|
148
|
+
`, "/project/app/_layout.tsx", "/project");
|
|
149
|
+
(0, import_vitest.expect)(result).toBeUndefined();
|
|
150
|
+
}), (0, import_vitest.it)("should tree-shake server imports from source file where loader is defined", async () => {
|
|
151
|
+
const result = await (0, import_clientTreeShakePlugin.transformTreeShakeClient)(
|
|
152
|
+
`
|
|
153
|
+
import { db } from 'server-only-db'
|
|
154
|
+
|
|
155
|
+
export async function loader() {
|
|
156
|
+
return db.query('SELECT * FROM users')
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
export function helperUsedByClient() {
|
|
160
|
+
return 'hello'
|
|
161
|
+
}
|
|
162
|
+
`,
|
|
163
|
+
"/project/app/loaders/my-loader.ts",
|
|
164
|
+
"/project"
|
|
165
|
+
);
|
|
166
|
+
(0, import_vitest.expect)(result).toBeDefined(), (0, import_vitest.expect)(result.code).not.toContain("server-only-db"), (0, import_vitest.expect)(result.code).toContain("helperUsedByClient"), (0, import_vitest.expect)(result.code).toContain(
|
|
167
|
+
'export function loader() {return "./loaders/my-loader.ts"}'
|
|
168
|
+
);
|
|
169
|
+
}), (0, import_vitest.it)("should not transform re-export from source syntax", async () => {
|
|
170
|
+
const result = await (0, import_clientTreeShakePlugin.transformTreeShakeClient)(`
|
|
171
|
+
export { loader } from './loaders/shared-loader'
|
|
172
|
+
import { useLoader } from 'one'
|
|
173
|
+
|
|
174
|
+
export default function Page() {
|
|
175
|
+
return 'hello'
|
|
176
|
+
}
|
|
177
|
+
`, "/project/app/page.tsx", "/project");
|
|
178
|
+
(0, import_vitest.expect)(result).toBeUndefined();
|
|
92
179
|
}), (0, import_vitest.it)("should preserve type-only imports during tree shaking", async () => {
|
|
93
180
|
const result = await (0, import_clientTreeShakePlugin.transformTreeShakeClient)(`
|
|
94
181
|
import type { SomeType } from 'types-pkg'
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../src/vite/plugins/clientTreeShakePlugin.test.ts"],
|
|
4
|
-
"mappings": "AAAA,oBAAqC,mBACrC,+BAAyC;AAAA,IAEzC,wBAAS,yBAAyB,MAAM;AACtC,8BAAS,4BAA4B,MAAM;AACzC,0BAAG,+CAA+C,YAAY;AAe5D,YAAM,SAAS,UAAM,uDAdR;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAcuC,gBAAgB;AACpE,gCAAO,MAAM,EAAE,YAAY,OAE3B,sBAAO,OAAQ,IAAI,EAAE,IAAI,UAAU,iBAAiB,OAEpD,sBAAO,OAAQ,IAAI,EAAE,UAAU,cAAc,OAC7C,sBAAO,OAAQ,IAAI,EAAE,UAAU,KAAK;AAAA,IACtC,CAAC,OAED,kBAAG,mDAAmD,YAAY;AAehE,YAAM,SAAS,UAAM,uDAdR;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAcuC,gBAAgB;AACpE,gCAAO,MAAM,EAAE,YAAY,OAE3B,sBAAO,OAAQ,IAAI,EAAE,IAAI,UAAU,iBAAiB;AAAA,IACtD,CAAC,OAED,kBAAG,yDAAyD,YAAY;AAetE,YAAM,SAAS,UAAM,uDAdR;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAcuC,gBAAgB;AACpE,gCAAO,MAAM,EAAE,YAAY,OAE3B,sBAAO,OAAQ,IAAI,EAAE,IAAI,UAAU,iBAAiB;AAAA,IACtD,CAAC,OAED,kBAAG,qEAAqE,YAAY;AAgBlF,YAAM,SAAS,UAAM,uDAfR;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAeuC,gBAAgB;AACpE,gCAAO,MAAM,EAAE,YAAY,OAE3B,sBAAO,OAAQ,IAAI,EAAE,IAAI,UAAU,iBAAiB,OAEpD,sBAAO,OAAQ,IAAI,EAAE,UAAU,YAAY;AAAA,IAC7C,CAAC,OAED,kBAAG,sDAAsD,YAAY;AAanE,YAAM,SAAS,UAAM,uDAZR;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAYuC,iBAAiB;AACrE,gCAAO,MAAM,EAAE,YAAY,OAC3B,sBAAO,OAAQ,IAAI,EAAE,IAAI,UAAU,iBAAiB;AAAA,IACtD,CAAC,OAED,kBAAG,qEAAqE,YAAY;AAQlF,YAAM,SAAS,UAAM,uDAPR;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAOuC,gBAAgB;AACpE,gCAAO,MAAM,EAAE,cAAc;AAAA,IAC/B,CAAC,OAED,kBAAG,yDAAyD,YAAY;AAgBtE,YAAM,SAAS,UAAM,uDAfR;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAeuC,gBAAgB;AACpE,gCAAO,MAAM,EAAE,YAAY,OAE3B,sBAAO,OAAQ,IAAI,EAAE,UAAU,WAAW,OAE1C,sBAAO,OAAQ,IAAI,EAAE,IAAI,UAAU,iBAAiB;AAAA,IACtD,CAAC,OAED,kBAAG,8DAA8D,YAAY;AAgB3E,YAAM,SAAS,UAAM,uDAfR;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAeuC,gBAAgB;AACpE,gCAAO,MAAM,EAAE,YAAY,OAE3B,sBAAO,OAAQ,IAAI,EAAE,UAAU,iBAAiB,OAEhD,sBAAO,OAAQ,IAAI,EAAE,IAAI,UAAU,gBAAgB;AAAA,IACrD,CAAC;AAAA,EACH,CAAC;AACH,CAAC;",
|
|
4
|
+
"mappings": "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",
|
|
5
5
|
"names": []
|
|
6
6
|
}
|
|
@@ -98,6 +98,93 @@ export default function Page() {
|
|
|
98
98
|
`,
|
|
99
99
|
result = await (0, import_clientTreeShakePlugin.transformTreeShakeClient)(code, "/app/index.tsx");
|
|
100
100
|
(0, import_vitest.expect)(result).toBeUndefined();
|
|
101
|
+
}), (0, import_vitest.it)("should embed routeId in loader stub when root is provided", async function () {
|
|
102
|
+
var code = `
|
|
103
|
+
import { serverOnlyModule } from 'server-only-pkg'
|
|
104
|
+
import { useLoader } from 'one'
|
|
105
|
+
|
|
106
|
+
export async function loader() {
|
|
107
|
+
return serverOnlyModule()
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
export default function Layout() {
|
|
111
|
+
const data = useLoader(loader)
|
|
112
|
+
return data
|
|
113
|
+
}
|
|
114
|
+
`,
|
|
115
|
+
result = await (0, import_clientTreeShakePlugin.transformTreeShakeClient)(code, "/project/app/_layout.tsx", "/project");
|
|
116
|
+
(0, import_vitest.expect)(result).toBeDefined(), (0, import_vitest.expect)(result.code).toContain('export function loader() {return "./_layout.tsx"}'), (0, import_vitest.expect)(result.code).not.toContain("__vxrn__loader__");
|
|
117
|
+
}), (0, import_vitest.it)("should embed routeId with render mode suffix in loader stub", async function () {
|
|
118
|
+
var code = `
|
|
119
|
+
import { serverOnlyModule } from 'server-only-pkg'
|
|
120
|
+
import { useLoader } from 'one'
|
|
121
|
+
|
|
122
|
+
export async function loader() {
|
|
123
|
+
return serverOnlyModule()
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
export default function Layout() {
|
|
127
|
+
const data = useLoader(loader)
|
|
128
|
+
return data
|
|
129
|
+
}
|
|
130
|
+
`,
|
|
131
|
+
result = await (0, import_clientTreeShakePlugin.transformTreeShakeClient)(code, "/project/app/user+ssr.tsx", "/project");
|
|
132
|
+
(0, import_vitest.expect)(result).toBeDefined(), (0, import_vitest.expect)(result.code).toContain('export function loader() {return "./user+ssr.tsx"}');
|
|
133
|
+
}), (0, import_vitest.it)("should fall back to __vxrn__loader__ stub when no root provided", async function () {
|
|
134
|
+
var code = `
|
|
135
|
+
import { serverOnlyModule } from 'server-only-pkg'
|
|
136
|
+
import { useLoader } from 'one'
|
|
137
|
+
|
|
138
|
+
export async function loader() {
|
|
139
|
+
return serverOnlyModule()
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
export default function Page() {
|
|
143
|
+
const data = useLoader(loader)
|
|
144
|
+
return data
|
|
145
|
+
}
|
|
146
|
+
`,
|
|
147
|
+
result = await (0, import_clientTreeShakePlugin.transformTreeShakeClient)(code, "/app/index.tsx");
|
|
148
|
+
(0, import_vitest.expect)(result).toBeDefined(), (0, import_vitest.expect)(result.code).toContain("__vxrn__loader__");
|
|
149
|
+
}), (0, import_vitest.it)("should not transform route file when loader is imported (no inline declaration)", async function () {
|
|
150
|
+
var code = `
|
|
151
|
+
import { loader } from './loaders/my-loader'
|
|
152
|
+
import { useLoader } from 'one'
|
|
153
|
+
|
|
154
|
+
export { loader }
|
|
155
|
+
|
|
156
|
+
export default function Layout() {
|
|
157
|
+
const data = useLoader(loader)
|
|
158
|
+
return data
|
|
159
|
+
}
|
|
160
|
+
`,
|
|
161
|
+
result = await (0, import_clientTreeShakePlugin.transformTreeShakeClient)(code, "/project/app/_layout.tsx", "/project");
|
|
162
|
+
(0, import_vitest.expect)(result).toBeUndefined();
|
|
163
|
+
}), (0, import_vitest.it)("should tree-shake server imports from source file where loader is defined", async function () {
|
|
164
|
+
var sourceCode = `
|
|
165
|
+
import { db } from 'server-only-db'
|
|
166
|
+
|
|
167
|
+
export async function loader() {
|
|
168
|
+
return db.query('SELECT * FROM users')
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
export function helperUsedByClient() {
|
|
172
|
+
return 'hello'
|
|
173
|
+
}
|
|
174
|
+
`,
|
|
175
|
+
result = await (0, import_clientTreeShakePlugin.transformTreeShakeClient)(sourceCode, "/project/app/loaders/my-loader.ts", "/project");
|
|
176
|
+
(0, import_vitest.expect)(result).toBeDefined(), (0, import_vitest.expect)(result.code).not.toContain("server-only-db"), (0, import_vitest.expect)(result.code).toContain("helperUsedByClient"), (0, import_vitest.expect)(result.code).toContain('export function loader() {return "./loaders/my-loader.ts"}');
|
|
177
|
+
}), (0, import_vitest.it)("should not transform re-export from source syntax", async function () {
|
|
178
|
+
var code = `
|
|
179
|
+
export { loader } from './loaders/shared-loader'
|
|
180
|
+
import { useLoader } from 'one'
|
|
181
|
+
|
|
182
|
+
export default function Page() {
|
|
183
|
+
return 'hello'
|
|
184
|
+
}
|
|
185
|
+
`,
|
|
186
|
+
result = await (0, import_clientTreeShakePlugin.transformTreeShakeClient)(code, "/project/app/page.tsx", "/project");
|
|
187
|
+
(0, import_vitest.expect)(result).toBeUndefined();
|
|
101
188
|
}), (0, import_vitest.it)("should preserve type-only imports during tree shaking", async function () {
|
|
102
189
|
var code = `
|
|
103
190
|
import type { SomeType } from 'types-pkg'
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["import_vitest","require","import_clientTreeShakePlugin","describe","it","code","result","transformTreeShakeClient","expect","toBeDefined","not","toContain","toBeUndefined"],"sources":["../../../../src/vite/plugins/clientTreeShakePlugin.test.ts"],"sourcesContent":[null],"mappings":"AAAA;;AACyC,IAEzCA,aAAA,GAAAC,OAAA,CAAS;EAAAC,4BAA+B,GAAAD,OAAA;AACtC,IAAAD,aAAA,CAAAG,QAAA,yBAAS,cAAkC;EACzC,IAAAH,aAAA,CAAAG,QAAG;IAeD,IAAAH,aAAe,CAAAI,EAAA,+CAAM,oBAdR;MAAA,IAAAC,IAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAeb;QAAAC,MAAA,aAAAJ,4BAAe,CAAAK,wBAEf,EAAAF,IAAO,kBAAkB;MAI1B,IAAAL,aAED,CAAAQ,MAAG,EAAAF,MAAA,EAAAG,WAAA,QAAAT,aAAA,CAAAQ,MAAA,EAAmDF,MAAA,CAAAD,IAAA,CAAY,CAAAK,GAAA,CAAAC,SAAA,yBAAAX,aAAA,CAAAQ,MAAA,EAAAF,MAAA,CAAAD,IAAA,EAAAM,SAAA,sBAAAX,aAAA,CAAAQ,MAAA,EAAAF,MAAA,CAAAD,IAAA,EAAAM,SAAA;IAehE,QAAMX,aAAS,CAAAI,EAAA,mDAAM,oBAdR;MAAA,IAAAC,IAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAeb;QAAAC,MAAA,aAAAJ,4BAAe,CAAAK,wBAEf,EAAAF,IAAO,kBAAkB;MAC1B,IAAAL,aAED,CAAAQ,MAAG,EAAAF,MAAA,EAAAG,WAAA,QAAAT,aAAA,CAAAQ,MAAA,EAAAF,MAAyD,CAAAD,IAAA,EAAAK,GAAA,CAAAC,SAAY;IAetE,QAAMX,aAAS,CAAAI,EAAA,yDAAM,EAdR;MAAA,IAAAC,IAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAeb;QAAAC,MAAA,aAAAJ,4BAAe,CAAAK,wBAEf,EAAAF,IAAO,kBAAkB;MAC1B,IAAAL,aAED,CAAAQ,MAAG,EAAAF,MAAA,EAAAG,WAAA,QAAAT,aAAA,CAAAQ,MAAA,EAAAF,MAAA,CAAAD,IAAA,EAAAK,GAAA,CAAAC,SAAqE,kBAAY;IAgBlF,QAAMX,aAAS,CAAAI,EAAA,qEAfF;MAAA,IAAAC,IAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAgBb;QAAAC,MAAA,aAAAJ,4BAAe,CAAAK,wBAEf,EAAAF,IAAO,kBAAkB;MAG1B,IAAAL,aAED,CAAAQ,MAAG,EAAAF,MAAA,EAAAG,WAAA,QAAAT,aAAA,CAAAQ,MAAA,EAAAF,MAAsD,CAAAD,IAAA,EAAAK,GAAY,CAAAC,SAAA,yBAAAX,aAAA,CAAAQ,MAAA,EAAAF,MAAA,CAAAD,IAAA,EAAAM,SAAA;IAanE,QAAMX,aAAS,CAAAI,EAAA,sDAAM,oBAZR;MAAA,IAAAC,IAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAab;QAAAC,MAAA,aAAAJ,4BAAe,CAAAK,wBACf,EAAAF,IAAO,mBAAkB;MAC1B,IAAAL,aAED,CAAAQ,MAAG,EAAAF,MAAA,EAAAG,WAAA,QAAAT,aAAA,CAAAQ,MAAA,EAAAF,MAAA,CAAAD,IAAA,EAAAK,GAAA,CAAAC,SAAqE,kBAAY;IAQlF,QAAMX,aAAS,CAAAI,EAAA,qEAPF;MAAA,IAAAC,IAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAQb;QAAAC,MAAA,aAAAJ,4BAAe,CAAAK,wBAAc,EAAAF,IAAA;MAC9B,IAAAL,aAED,CAAAQ,MAAG,EAAAF,MAAA,EAAAM,aAAA;
|
|
1
|
+
{"version":3,"names":["import_vitest","require","import_clientTreeShakePlugin","describe","it","code","result","transformTreeShakeClient","expect","toBeDefined","not","toContain","toBeUndefined","sourceCode"],"sources":["../../../../src/vite/plugins/clientTreeShakePlugin.test.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
|
@@ -23,15 +23,17 @@ __export(replaceLoader_exports, {
|
|
|
23
23
|
replaceLoader: () => replaceLoader
|
|
24
24
|
});
|
|
25
25
|
module.exports = __toCommonJS(replaceLoader_exports);
|
|
26
|
+
const routeIdReturnRegex = /return\s*"\.\/[^"]+"/;
|
|
26
27
|
function replaceLoader({
|
|
27
28
|
code,
|
|
28
29
|
loaderData
|
|
29
30
|
}) {
|
|
30
|
-
const stringifiedData = JSON.stringify(loaderData)
|
|
31
|
+
const stringifiedData = JSON.stringify(loaderData),
|
|
32
|
+
safeData = stringifiedData.replace(/\$/g, "$$$$");
|
|
31
33
|
return code.includes("__vxrn__loader__") ? code.replace(/["']__vxrn__loader__['"]/,
|
|
32
34
|
// make sure this ' ' is added in front,
|
|
33
35
|
// minifiers will do `return"something"
|
|
34
36
|
// but if its null then it becomes returnnull
|
|
35
|
-
" " +
|
|
37
|
+
" " + safeData) : routeIdReturnRegex.test(code) ? code.replace(routeIdReturnRegex, "return " + safeData) : code + `
|
|
36
38
|
export const loader = () => (${stringifiedData})`;
|
|
37
39
|
}
|
|
@@ -17,18 +17,19 @@ __export(replaceLoader_exports, {
|
|
|
17
17
|
replaceLoader: () => replaceLoader
|
|
18
18
|
});
|
|
19
19
|
module.exports = __toCommonJS(replaceLoader_exports);
|
|
20
|
+
const routeIdReturnRegex = /return\s*"\.\/[^"]+"/;
|
|
20
21
|
function replaceLoader({
|
|
21
22
|
code,
|
|
22
23
|
loaderData
|
|
23
24
|
}) {
|
|
24
|
-
const stringifiedData = JSON.stringify(loaderData);
|
|
25
|
+
const stringifiedData = JSON.stringify(loaderData), safeData = stringifiedData.replace(/\$/g, "$$$$");
|
|
25
26
|
return code.includes("__vxrn__loader__") ? code.replace(
|
|
26
27
|
/["']__vxrn__loader__['"]/,
|
|
27
28
|
// make sure this ' ' is added in front,
|
|
28
29
|
// minifiers will do `return"something"
|
|
29
30
|
// but if its null then it becomes returnnull
|
|
30
|
-
" " +
|
|
31
|
-
) : code + `
|
|
31
|
+
" " + safeData
|
|
32
|
+
) : routeIdReturnRegex.test(code) ? code.replace(routeIdReturnRegex, "return " + safeData) : code + `
|
|
32
33
|
export const loader = () => (${stringifiedData})`;
|
|
33
34
|
}
|
|
34
35
|
//# sourceMappingURL=replaceLoader.js.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/vite/replaceLoader.ts"],
|
|
4
|
-
"mappings": ";;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;
|
|
4
|
+
"mappings": ";;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA,MAAM,qBAAqB;AAEpB,SAAS,cAAc;AAAA,EAC5B;AAAA,EACA;AACF,GAGG;AACD,QAAM,kBAAkB,KAAK,UAAU,UAAU,GAC3C,WAAW,gBAAgB,QAAQ,OAAO,MAAM;AAuBtD,SAnBM,KAAK,SAAS,kBAAkB,IAC3B,KAAK;AAAA,IACV;AAAA;AAAA;AAAA;AAAA,IAIA,MAAM;AAAA,EACR,IAKE,mBAAmB,KAAK,IAAI,IACvB,KAAK,QAAQ,oBAAoB,YAAY,QAAQ,IAGvD,OAAO;AAAA,+BAAkC,eAAe;AAInE;",
|
|
5
5
|
"names": []
|
|
6
6
|
}
|
|
@@ -25,18 +25,20 @@ __export(replaceLoader_exports, {
|
|
|
25
25
|
replaceLoader: () => replaceLoader
|
|
26
26
|
});
|
|
27
27
|
module.exports = __toCommonJS(replaceLoader_exports);
|
|
28
|
+
var routeIdReturnRegex = /return\s*"\.\/[^"]+"/;
|
|
28
29
|
function replaceLoader(param) {
|
|
29
30
|
var {
|
|
30
31
|
code,
|
|
31
32
|
loaderData
|
|
32
33
|
} = param,
|
|
33
34
|
stringifiedData = JSON.stringify(loaderData),
|
|
35
|
+
safeData = stringifiedData.replace(/\$/g, "$$$$"),
|
|
34
36
|
out = function () {
|
|
35
37
|
return code.includes("__vxrn__loader__") ? code.replace(/["']__vxrn__loader__['"]/,
|
|
36
38
|
// make sure this ' ' is added in front,
|
|
37
39
|
// minifiers will do `return"something"
|
|
38
40
|
// but if its null then it becomes returnnull
|
|
39
|
-
" " +
|
|
41
|
+
" " + safeData) : routeIdReturnRegex.test(code) ? code.replace(routeIdReturnRegex, "return " + safeData) : code + `
|
|
40
42
|
export const loader = () => (${stringifiedData})`;
|
|
41
43
|
}();
|
|
42
44
|
return out;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["__toCommonJS","mod","__copyProps","__defProp","value","replaceLoader_exports","__export","replaceLoader","module","exports","param","code","loaderData","stringifiedData","JSON","stringify","out","includes","
|
|
1
|
+
{"version":3,"names":["__toCommonJS","mod","__copyProps","__defProp","value","replaceLoader_exports","__export","replaceLoader","module","exports","routeIdReturnRegex","param","code","loaderData","stringifiedData","JSON","stringify","safeData","replace","out","includes","test"],"sources":["../../../src/vite/replaceLoader.ts"],"sourcesContent":[null],"mappings":";;;;;;;;;;;;;;;;;;;AAAA,IAAAA,YAAA,GAAAC,GAAA,IAAAC,WAAA,CAAAC,SAAA;EAAAC,KAAA;AAAA,IAAAH,GAAA;AAAA,IAAAI,qBAAA;AAAAC,QAAA,CAAAD,qBAAA;EAAAE,aAAA,EAAAA,CAAA,KAAAA;AAAA;AAGAC,MAAM,CAAAC,OAAA,GAAAT,YAAqB,CAAAK,qBAAA;AAEpB,IAAAK,kBAAS,GAAc;AAAA,SAC5BH,cAAAI,KAAA;EACA;MAAAC,IAAA;MAAAC;IAAA,IAAAF,KAAA;IAAAG,eAAA,GAAAC,IAAA,CAAAC,SAAA,CAAAH,UAAA;IAAAI,QAAA,GAAAH,eAAA,CAAAI,OAAA;IAAAC,GAAA;MAIC,OAAAP,IAAA,CAAAQ,QAAA,uBAAAR,IAAA,CAAAM,OAAA,CACD,0BAA6B;MAwB7B;MAjBM;MAAA;MAAA,MAAAD,QAAA,IAAAP,kBAAA,CAAAW,IAAA,CAAAT,IAAA,IAAAA,IAAA,CAAAM,OAAA,CAAAR,kBAAA,cAAAO,QAAA,IAAAL,IAAA;AAAA,+BAIME,eAAA;IACR,GAKE;EAIU,OAAAK,GAAA;AAIlB","ignoreList":[]}
|
package/dist/esm/useLoader.js
CHANGED
|
@@ -4,6 +4,7 @@ import { useParams, usePathname } from "./hooks";
|
|
|
4
4
|
import { findNearestNotFoundRoute, setNotFoundState } from "./notFoundState";
|
|
5
5
|
import { router } from "./router/imperative-api";
|
|
6
6
|
import { preloadedLoaderData, preloadingLoader, routeNode } from "./router/router";
|
|
7
|
+
import { subscribeToClientMatches, getClientMatchesSnapshot, updateMatchLoaderData } from "./useMatches";
|
|
7
8
|
import { getLoaderPath } from "./utils/cleanUrl";
|
|
8
9
|
import { dynamicImport } from "./utils/dynamicImport";
|
|
9
10
|
import { weakKey } from "./utils/weakKey";
|
|
@@ -102,7 +103,9 @@ async function refetchLoader(pathname2) {
|
|
|
102
103
|
state: "idle",
|
|
103
104
|
timestamp: Date.now(),
|
|
104
105
|
hasLoadedOnce: !0
|
|
105
|
-
})
|
|
106
|
+
});
|
|
107
|
+
const currentMatches = getClientMatchesSnapshot(), pageMatch = currentMatches[currentMatches.length - 1];
|
|
108
|
+
pageMatch && pageMatch.pathname === pathname2 && updateMatchLoaderData(pageMatch.routeId, result2), recordLoaderTiming?.({
|
|
106
109
|
path: pathname2,
|
|
107
110
|
startTime: startTime2,
|
|
108
111
|
moduleLoadTime: moduleLoadTime2,
|
|
@@ -125,6 +128,12 @@ async function refetchLoader(pathname2) {
|
|
|
125
128
|
}
|
|
126
129
|
}
|
|
127
130
|
process.env.NODE_ENV === "development" && typeof window < "u" && (window.__oneRefetchLoader = refetchLoader);
|
|
131
|
+
async function refetchMatchLoader(routeId, currentPath2) {
|
|
132
|
+
const cacheBust = `${Date.now()}`, loaderJSUrl2 = getLoaderPath(currentPath2, !0, cacheBust), module2 = await dynamicImport(loaderJSUrl2)?.catch(() => null);
|
|
133
|
+
if (!module2?.loader) return;
|
|
134
|
+
const result2 = await module2.loader();
|
|
135
|
+
result2?.__oneRedirect || result2?.__oneError || updateMatchLoaderData(routeId, result2);
|
|
136
|
+
}
|
|
128
137
|
function useLoaderState(loader) {
|
|
129
138
|
const {
|
|
130
139
|
loaderProps: loaderPropsFromServerContext,
|
|
@@ -139,11 +148,33 @@ function useLoaderState(loader) {
|
|
|
139
148
|
}
|
|
140
149
|
), refetch: async () => {
|
|
141
150
|
}, state: "idle" };
|
|
142
|
-
const
|
|
151
|
+
const matchRouteId = loader ? (() => {
|
|
152
|
+
const result2 = loader();
|
|
153
|
+
return typeof result2 == "string" && result2.startsWith("./") ? result2 : null;
|
|
154
|
+
})() : null, clientMatches = useSyncExternalStore(
|
|
155
|
+
subscribeToClientMatches,
|
|
156
|
+
getClientMatchesSnapshot,
|
|
157
|
+
getClientMatchesSnapshot
|
|
158
|
+
), serverContextPath = loaderPropsFromServerContext?.path, preloadedData = serverContextPath === currentPath ? loaderDataFromServerContext : void 0, loaderStateEntry = useSyncExternalStore(
|
|
143
159
|
subscribe,
|
|
144
160
|
() => getLoaderState(currentPath, preloadedData),
|
|
145
161
|
() => getLoaderState(currentPath, preloadedData)
|
|
146
162
|
), refetch = useCallback(() => refetchLoader(currentPath), [currentPath]);
|
|
163
|
+
if (matchRouteId) {
|
|
164
|
+
const match = clientMatches.find((m) => m.routeId === matchRouteId);
|
|
165
|
+
if (match && match.loaderData != null)
|
|
166
|
+
return {
|
|
167
|
+
data: match.loaderData,
|
|
168
|
+
// refetch updates both loaderState (for useLoaderState() consumers without a loader)
|
|
169
|
+
// and the match entry (for this component and useMatches consumers)
|
|
170
|
+
refetch: async () => {
|
|
171
|
+
await refetchLoader(currentPath);
|
|
172
|
+
const fresh = loaderState[currentPath];
|
|
173
|
+
fresh?.data != null && updateMatchLoaderData(matchRouteId, fresh.data);
|
|
174
|
+
},
|
|
175
|
+
state: loaderStateEntry.state
|
|
176
|
+
};
|
|
177
|
+
}
|
|
147
178
|
if (!loader)
|
|
148
179
|
return {
|
|
149
180
|
refetch,
|
|
@@ -287,6 +318,7 @@ function useAsyncFn(val, props) {
|
|
|
287
318
|
export {
|
|
288
319
|
getLoaderTimingHistory,
|
|
289
320
|
refetchLoader,
|
|
321
|
+
refetchMatchLoader,
|
|
290
322
|
resetLoaderState,
|
|
291
323
|
useLoader,
|
|
292
324
|
useLoaderState
|