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.
Files changed (94) hide show
  1. package/dist/cjs/useLoader.cjs +34 -2
  2. package/dist/cjs/useLoader.js +34 -3
  3. package/dist/cjs/useLoader.js.map +2 -2
  4. package/dist/cjs/useLoader.native.js +40 -2
  5. package/dist/cjs/useLoader.native.js.map +1 -1
  6. package/dist/cjs/useMatches.cjs +10 -0
  7. package/dist/cjs/useMatches.js +8 -0
  8. package/dist/cjs/useMatches.js.map +1 -1
  9. package/dist/cjs/useMatches.native.js +28 -0
  10. package/dist/cjs/useMatches.native.js.map +1 -1
  11. package/dist/cjs/utils/cleanUrl.cjs +1 -1
  12. package/dist/cjs/utils/cleanUrl.js +1 -1
  13. package/dist/cjs/utils/cleanUrl.js.map +1 -1
  14. package/dist/cjs/utils/cleanUrl.native.js +1 -1
  15. package/dist/cjs/utils/cleanUrl.native.js.map +1 -1
  16. package/dist/cjs/vite/constants.cjs +7 -3
  17. package/dist/cjs/vite/constants.js +7 -2
  18. package/dist/cjs/vite/constants.js.map +1 -1
  19. package/dist/cjs/vite/constants.native.js +7 -3
  20. package/dist/cjs/vite/constants.native.js.map +1 -1
  21. package/dist/cjs/vite/plugins/clientTreeShakePlugin.cjs +12 -3
  22. package/dist/cjs/vite/plugins/clientTreeShakePlugin.js +12 -3
  23. package/dist/cjs/vite/plugins/clientTreeShakePlugin.js.map +1 -1
  24. package/dist/cjs/vite/plugins/clientTreeShakePlugin.native.js +11 -3
  25. package/dist/cjs/vite/plugins/clientTreeShakePlugin.native.js.map +1 -1
  26. package/dist/cjs/vite/plugins/clientTreeShakePlugin.test.cjs +81 -0
  27. package/dist/cjs/vite/plugins/clientTreeShakePlugin.test.js +87 -0
  28. package/dist/cjs/vite/plugins/clientTreeShakePlugin.test.js.map +1 -1
  29. package/dist/cjs/vite/plugins/clientTreeShakePlugin.test.native.js +87 -0
  30. package/dist/cjs/vite/plugins/clientTreeShakePlugin.test.native.js.map +1 -1
  31. package/dist/cjs/vite/replaceLoader.cjs +4 -2
  32. package/dist/cjs/vite/replaceLoader.js +4 -3
  33. package/dist/cjs/vite/replaceLoader.js.map +1 -1
  34. package/dist/cjs/vite/replaceLoader.native.js +3 -1
  35. package/dist/cjs/vite/replaceLoader.native.js.map +1 -1
  36. package/dist/esm/useLoader.js +34 -2
  37. package/dist/esm/useLoader.js.map +2 -2
  38. package/dist/esm/useLoader.mjs +34 -3
  39. package/dist/esm/useLoader.mjs.map +1 -1
  40. package/dist/esm/useLoader.native.js +40 -3
  41. package/dist/esm/useLoader.native.js.map +1 -1
  42. package/dist/esm/useMatches.js +8 -0
  43. package/dist/esm/useMatches.js.map +1 -1
  44. package/dist/esm/useMatches.mjs +8 -1
  45. package/dist/esm/useMatches.mjs.map +1 -1
  46. package/dist/esm/useMatches.native.js +26 -1
  47. package/dist/esm/useMatches.native.js.map +1 -1
  48. package/dist/esm/utils/cleanUrl.js +1 -1
  49. package/dist/esm/utils/cleanUrl.js.map +1 -1
  50. package/dist/esm/utils/cleanUrl.mjs +1 -1
  51. package/dist/esm/utils/cleanUrl.mjs.map +1 -1
  52. package/dist/esm/utils/cleanUrl.native.js +1 -1
  53. package/dist/esm/utils/cleanUrl.native.js.map +1 -1
  54. package/dist/esm/vite/constants.js +7 -2
  55. package/dist/esm/vite/constants.js.map +1 -1
  56. package/dist/esm/vite/constants.mjs +6 -3
  57. package/dist/esm/vite/constants.mjs.map +1 -1
  58. package/dist/esm/vite/constants.native.js +6 -3
  59. package/dist/esm/vite/constants.native.js.map +1 -1
  60. package/dist/esm/vite/plugins/clientTreeShakePlugin.js +13 -4
  61. package/dist/esm/vite/plugins/clientTreeShakePlugin.js.map +1 -1
  62. package/dist/esm/vite/plugins/clientTreeShakePlugin.mjs +13 -4
  63. package/dist/esm/vite/plugins/clientTreeShakePlugin.mjs.map +1 -1
  64. package/dist/esm/vite/plugins/clientTreeShakePlugin.native.js +12 -4
  65. package/dist/esm/vite/plugins/clientTreeShakePlugin.native.js.map +1 -1
  66. package/dist/esm/vite/plugins/clientTreeShakePlugin.test.js +87 -0
  67. package/dist/esm/vite/plugins/clientTreeShakePlugin.test.js.map +1 -1
  68. package/dist/esm/vite/plugins/clientTreeShakePlugin.test.mjs +81 -0
  69. package/dist/esm/vite/plugins/clientTreeShakePlugin.test.mjs.map +1 -1
  70. package/dist/esm/vite/plugins/clientTreeShakePlugin.test.native.js +87 -0
  71. package/dist/esm/vite/plugins/clientTreeShakePlugin.test.native.js.map +1 -1
  72. package/dist/esm/vite/replaceLoader.js +4 -3
  73. package/dist/esm/vite/replaceLoader.js.map +1 -1
  74. package/dist/esm/vite/replaceLoader.mjs +4 -2
  75. package/dist/esm/vite/replaceLoader.mjs.map +1 -1
  76. package/dist/esm/vite/replaceLoader.native.js +3 -1
  77. package/dist/esm/vite/replaceLoader.native.js.map +1 -1
  78. package/package.json +9 -9
  79. package/src/useLoader.ts +69 -0
  80. package/src/useMatches.ts +13 -2
  81. package/src/utils/cleanUrl.ts +1 -1
  82. package/src/vite/constants.ts +4 -0
  83. package/src/vite/plugins/clientTreeShakePlugin.test.ts +121 -0
  84. package/src/vite/plugins/clientTreeShakePlugin.ts +13 -3
  85. package/src/vite/replaceLoader.ts +23 -9
  86. package/types/useLoader.d.ts +10 -0
  87. package/types/useLoader.d.ts.map +1 -1
  88. package/types/useMatches.d.ts +7 -0
  89. package/types/useMatches.d.ts.map +1 -1
  90. package/types/vite/constants.d.ts +1 -0
  91. package/types/vite/constants.d.ts.map +1 -1
  92. package/types/vite/plugins/clientTreeShakePlugin.d.ts +1 -1
  93. package/types/vite/plugins/clientTreeShakePlugin.d.ts.map +1 -1
  94. 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) => key === "loader" ? import_constants.EMPTY_LOADER_STRING : "export function generateStaticParams() {};").join(`
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": "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",
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
- return key === "loader" ? import_constants.EMPTY_LOADER_STRING : "export function generateStaticParams() {};";
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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","ignoreList":[]}
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":"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","ignoreList":[]}
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
- " " + stringifiedData.replace(/\$/g, "$$$$")) : code + `
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
- " " + stringifiedData.replace(/\$/g, "$$$$")
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;AAAO,SAAS,cAAc;AAAA,EAC5B;AAAA,EACA;AACF,GAGG;AACD,QAAM,kBAAkB,KAAK,UAAU,UAAU;AAejD,SAZO,KAAK,SAAS,kBAAkB,IAG9B,KAAK;AAAA,IACV;AAAA;AAAA;AAAA;AAAA,IAIA,MAAM,gBAAgB,QAAQ,OAAO,MAAM;AAAA,EAC7C,IARS,OAAO;AAAA,+BAAkC,eAAe;AAYrE;",
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
- " " + stringifiedData.replace(/\$/g, "$$$$")) : code + `
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","replace"],"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;AAAOC,MAAA,CAAAC,OAAS,GAAAT,YAAc,CAAAK,qBAAA;AAAA,SAC5BE,cAAAG,KAAA;EACA;MAAAC,IAAA;MAAAC;IAAA,IAAAF,KAAA;IAAAG,eAAA,GAAAC,IAAA,CAAAC,SAAA,CAAAH,UAAA;IAAAI,GAAA;MAIC,OAAAL,IAAA,CAAAM,QAAA,uBAAAN,IAAA,CAAAO,OAAA,CACD,0BAA6B;MAe7B;MARI;MAAA;MAAA,MAAAL,eAAA,CAAAK,OAAA,mBAAAP,IAAA;AAAA,+BAIsBE,eAAe,GAAM;IAC7C,GARS;EAAO,OAAAG,GAAA;AAYpB","ignoreList":[]}
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":[]}
@@ -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
- }), recordLoaderTiming?.({
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 serverContextPath = loaderPropsFromServerContext?.path, preloadedData = serverContextPath === currentPath ? loaderDataFromServerContext : void 0, loaderStateEntry = useSyncExternalStore(
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