@tanstack/start-plugin-core 1.166.12 → 1.166.14

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 (87) hide show
  1. package/dist/esm/build-sitemap.js +94 -123
  2. package/dist/esm/build-sitemap.js.map +1 -1
  3. package/dist/esm/constants.js +15 -20
  4. package/dist/esm/constants.js.map +1 -1
  5. package/dist/esm/dev-server-plugin/dev-styles.js +137 -150
  6. package/dist/esm/dev-server-plugin/dev-styles.js.map +1 -1
  7. package/dist/esm/dev-server-plugin/extract-html-scripts.js +16 -15
  8. package/dist/esm/dev-server-plugin/extract-html-scripts.js.map +1 -1
  9. package/dist/esm/dev-server-plugin/plugin.js +125 -195
  10. package/dist/esm/dev-server-plugin/plugin.js.map +1 -1
  11. package/dist/esm/import-protection-plugin/ast.js +6 -5
  12. package/dist/esm/import-protection-plugin/ast.js.map +1 -1
  13. package/dist/esm/import-protection-plugin/constants.js +20 -22
  14. package/dist/esm/import-protection-plugin/constants.js.map +1 -1
  15. package/dist/esm/import-protection-plugin/defaults.js +35 -25
  16. package/dist/esm/import-protection-plugin/defaults.js.map +1 -1
  17. package/dist/esm/import-protection-plugin/extensionlessAbsoluteIdResolver.js +93 -92
  18. package/dist/esm/import-protection-plugin/extensionlessAbsoluteIdResolver.js.map +1 -1
  19. package/dist/esm/import-protection-plugin/matchers.js +23 -24
  20. package/dist/esm/import-protection-plugin/matchers.js.map +1 -1
  21. package/dist/esm/import-protection-plugin/plugin.js +1045 -1361
  22. package/dist/esm/import-protection-plugin/plugin.js.map +1 -1
  23. package/dist/esm/import-protection-plugin/postCompileUsage.js +58 -55
  24. package/dist/esm/import-protection-plugin/postCompileUsage.js.map +1 -1
  25. package/dist/esm/import-protection-plugin/rewriteDeniedImports.js +187 -259
  26. package/dist/esm/import-protection-plugin/rewriteDeniedImports.js.map +1 -1
  27. package/dist/esm/import-protection-plugin/sourceLocation.js +238 -248
  28. package/dist/esm/import-protection-plugin/sourceLocation.js.map +1 -1
  29. package/dist/esm/import-protection-plugin/trace.js +173 -184
  30. package/dist/esm/import-protection-plugin/trace.js.map +1 -1
  31. package/dist/esm/import-protection-plugin/utils.js +132 -111
  32. package/dist/esm/import-protection-plugin/utils.js.map +1 -1
  33. package/dist/esm/import-protection-plugin/virtualModules.js +216 -196
  34. package/dist/esm/import-protection-plugin/virtualModules.js.map +1 -1
  35. package/dist/esm/index.js +2 -7
  36. package/dist/esm/load-env-plugin/plugin.js +12 -11
  37. package/dist/esm/load-env-plugin/plugin.js.map +1 -1
  38. package/dist/esm/output-directory.js +10 -10
  39. package/dist/esm/output-directory.js.map +1 -1
  40. package/dist/esm/plugin.js +275 -355
  41. package/dist/esm/plugin.js.map +1 -1
  42. package/dist/esm/post-server-build.js +39 -53
  43. package/dist/esm/post-server-build.js.map +1 -1
  44. package/dist/esm/prerender.js +177 -239
  45. package/dist/esm/prerender.js.map +1 -1
  46. package/dist/esm/preview-server-plugin/plugin.js +41 -44
  47. package/dist/esm/preview-server-plugin/plugin.js.map +1 -1
  48. package/dist/esm/queue.js +115 -126
  49. package/dist/esm/queue.js.map +1 -1
  50. package/dist/esm/resolve-entries.js +31 -32
  51. package/dist/esm/resolve-entries.js.map +1 -1
  52. package/dist/esm/schema.js +156 -179
  53. package/dist/esm/schema.js.map +1 -1
  54. package/dist/esm/start-compiler-plugin/compiler.js +655 -812
  55. package/dist/esm/start-compiler-plugin/compiler.js.map +1 -1
  56. package/dist/esm/start-compiler-plugin/handleClientOnlyJSX.js +25 -8
  57. package/dist/esm/start-compiler-plugin/handleClientOnlyJSX.js.map +1 -1
  58. package/dist/esm/start-compiler-plugin/handleCreateIsomorphicFn.js +22 -19
  59. package/dist/esm/start-compiler-plugin/handleCreateIsomorphicFn.js.map +1 -1
  60. package/dist/esm/start-compiler-plugin/handleCreateMiddleware.js +20 -22
  61. package/dist/esm/start-compiler-plugin/handleCreateMiddleware.js.map +1 -1
  62. package/dist/esm/start-compiler-plugin/handleCreateServerFn.js +187 -255
  63. package/dist/esm/start-compiler-plugin/handleCreateServerFn.js.map +1 -1
  64. package/dist/esm/start-compiler-plugin/handleEnvOnly.js +23 -33
  65. package/dist/esm/start-compiler-plugin/handleEnvOnly.js.map +1 -1
  66. package/dist/esm/start-compiler-plugin/plugin.js +247 -291
  67. package/dist/esm/start-compiler-plugin/plugin.js.map +1 -1
  68. package/dist/esm/start-compiler-plugin/utils.js +27 -27
  69. package/dist/esm/start-compiler-plugin/utils.js.map +1 -1
  70. package/dist/esm/start-manifest-plugin/manifestBuilder.js +272 -378
  71. package/dist/esm/start-manifest-plugin/manifestBuilder.js.map +1 -1
  72. package/dist/esm/start-manifest-plugin/plugin.js +35 -44
  73. package/dist/esm/start-manifest-plugin/plugin.js.map +1 -1
  74. package/dist/esm/start-router-plugin/constants.js +6 -5
  75. package/dist/esm/start-router-plugin/constants.js.map +1 -1
  76. package/dist/esm/start-router-plugin/generator-plugins/prerender-routes-plugin.js +24 -19
  77. package/dist/esm/start-router-plugin/generator-plugins/prerender-routes-plugin.js.map +1 -1
  78. package/dist/esm/start-router-plugin/generator-plugins/routes-manifest-plugin.js +28 -29
  79. package/dist/esm/start-router-plugin/generator-plugins/routes-manifest-plugin.js.map +1 -1
  80. package/dist/esm/start-router-plugin/plugin.js +146 -199
  81. package/dist/esm/start-router-plugin/plugin.js.map +1 -1
  82. package/dist/esm/start-router-plugin/pruneServerOnlySubtrees.js +32 -31
  83. package/dist/esm/start-router-plugin/pruneServerOnlySubtrees.js.map +1 -1
  84. package/dist/esm/utils.js +14 -14
  85. package/dist/esm/utils.js.map +1 -1
  86. package/package.json +7 -7
  87. package/dist/esm/index.js.map +0 -1
@@ -1,404 +1,298 @@
1
- import { joinURL } from "ufo";
2
1
  import { rootRouteId } from "@tanstack/router-core";
2
+ import { joinURL } from "ufo";
3
3
  import { tsrSplit } from "@tanstack/router-plugin";
4
- const ROUTER_MANAGED_MODE = 1;
5
- const NON_ROUTE_DYNAMIC_MODE = 2;
6
- const VISITING_CHUNK = 1;
4
+ //#region src/start-manifest-plugin/manifestBuilder.ts
5
+ var ROUTER_MANAGED_MODE = 1;
6
+ var NON_ROUTE_DYNAMIC_MODE = 2;
7
+ var VISITING_CHUNK = 1;
7
8
  function appendUniqueStrings(target, source) {
8
- if (source.length === 0) {
9
- return target;
10
- }
11
- if (!target || target.length === 0) {
12
- return source;
13
- }
14
- const seen = new Set(target);
15
- let result;
16
- for (const value of source) {
17
- if (seen.has(value)) {
18
- continue;
19
- }
20
- seen.add(value);
21
- if (!result) {
22
- result = target.slice();
23
- }
24
- result.push(value);
25
- }
26
- return result ?? target;
9
+ if (source.length === 0) return target;
10
+ if (!target || target.length === 0) return source;
11
+ const seen = new Set(target);
12
+ let result;
13
+ for (const value of source) {
14
+ if (seen.has(value)) continue;
15
+ seen.add(value);
16
+ if (!result) result = target.slice();
17
+ result.push(value);
18
+ }
19
+ return result ?? target;
27
20
  }
28
21
  function appendUniqueAssets(target, source) {
29
- if (source.length === 0) {
30
- return target;
31
- }
32
- if (!target || target.length === 0) {
33
- return source;
34
- }
35
- const seen = new Set(target.map(getAssetIdentity));
36
- let result;
37
- for (const asset of source) {
38
- const identity = getAssetIdentity(asset);
39
- if (seen.has(identity)) {
40
- continue;
41
- }
42
- seen.add(identity);
43
- if (!result) {
44
- result = target.slice();
45
- }
46
- result.push(asset);
47
- }
48
- return result ?? target;
22
+ if (source.length === 0) return target;
23
+ if (!target || target.length === 0) return source;
24
+ const seen = new Set(target.map(getAssetIdentity));
25
+ let result;
26
+ for (const asset of source) {
27
+ const identity = getAssetIdentity(asset);
28
+ if (seen.has(identity)) continue;
29
+ seen.add(identity);
30
+ if (!result) result = target.slice();
31
+ result.push(asset);
32
+ }
33
+ return result ?? target;
49
34
  }
50
35
  function getAssetIdentity(asset) {
51
- if (asset.tag === "link" || asset.tag === "script") {
52
- const attrs = asset.attrs ?? {};
53
- return [
54
- asset.tag,
55
- "href" in attrs ? String(attrs.href) : "",
56
- "src" in attrs ? String(attrs.src) : "",
57
- "rel" in attrs ? String(attrs.rel) : "",
58
- "type" in attrs ? String(attrs.type) : "",
59
- asset.children ?? ""
60
- ].join("|");
61
- }
62
- return JSON.stringify(asset);
36
+ if (asset.tag === "link" || asset.tag === "script") {
37
+ const attrs = asset.attrs ?? {};
38
+ return [
39
+ asset.tag,
40
+ "href" in attrs ? String(attrs.href) : "",
41
+ "src" in attrs ? String(attrs.src) : "",
42
+ "rel" in attrs ? String(attrs.rel) : "",
43
+ "type" in attrs ? String(attrs.type) : "",
44
+ asset.children ?? ""
45
+ ].join("|");
46
+ }
47
+ return JSON.stringify(asset);
63
48
  }
64
49
  function mergeRouteChunkData(options) {
65
- const chunkAssets = options.getChunkCssAssets(options.chunk);
66
- const chunkPreloads = options.getChunkPreloads(options.chunk);
67
- options.route.assets = appendUniqueAssets(options.route.assets, chunkAssets);
68
- options.route.preloads = appendUniqueStrings(
69
- options.route.preloads,
70
- chunkPreloads
71
- );
50
+ const chunkAssets = options.getChunkCssAssets(options.chunk);
51
+ const chunkPreloads = options.getChunkPreloads(options.chunk);
52
+ options.route.assets = appendUniqueAssets(options.route.assets, chunkAssets);
53
+ options.route.preloads = appendUniqueStrings(options.route.preloads, chunkPreloads);
72
54
  }
73
55
  function buildStartManifest(options) {
74
- const scannedChunks = scanClientChunks(options.clientBundle);
75
- const hashedCssFiles = collectDynamicImportCss(
76
- scannedChunks.routeEntryChunks,
77
- scannedChunks.chunksByFileName,
78
- scannedChunks.entryChunk
79
- );
80
- const assetResolvers = createManifestAssetResolvers({
81
- basePath: options.basePath,
82
- hashedCssFiles
83
- });
84
- const routes = buildRouteManifestRoutes({
85
- routeTreeRoutes: options.routeTreeRoutes,
86
- routeChunksByFilePath: scannedChunks.routeChunksByFilePath,
87
- chunksByFileName: scannedChunks.chunksByFileName,
88
- entryChunk: scannedChunks.entryChunk,
89
- assetResolvers
90
- });
91
- dedupeNestedRoutePreloads(routes[rootRouteId], routes);
92
- for (const routeId of Object.keys(routes)) {
93
- const route = routes[routeId];
94
- const hasAssets = route.assets && route.assets.length > 0;
95
- const hasPreloads = route.preloads && route.preloads.length > 0;
96
- if (!hasAssets && !hasPreloads) {
97
- delete routes[routeId];
98
- }
99
- }
100
- return {
101
- routes,
102
- clientEntry: assetResolvers.getAssetPath(scannedChunks.entryChunk.fileName)
103
- };
56
+ const scannedChunks = scanClientChunks(options.clientBundle);
57
+ const hashedCssFiles = collectDynamicImportCss(scannedChunks.routeEntryChunks, scannedChunks.chunksByFileName, scannedChunks.entryChunk);
58
+ const assetResolvers = createManifestAssetResolvers({
59
+ basePath: options.basePath,
60
+ hashedCssFiles
61
+ });
62
+ const routes = buildRouteManifestRoutes({
63
+ routeTreeRoutes: options.routeTreeRoutes,
64
+ routeChunksByFilePath: scannedChunks.routeChunksByFilePath,
65
+ chunksByFileName: scannedChunks.chunksByFileName,
66
+ entryChunk: scannedChunks.entryChunk,
67
+ assetResolvers
68
+ });
69
+ dedupeNestedRoutePreloads(routes[rootRouteId], routes);
70
+ for (const routeId of Object.keys(routes)) {
71
+ const route = routes[routeId];
72
+ const hasAssets = route.assets && route.assets.length > 0;
73
+ const hasPreloads = route.preloads && route.preloads.length > 0;
74
+ if (!hasAssets && !hasPreloads) delete routes[routeId];
75
+ }
76
+ return {
77
+ routes,
78
+ clientEntry: assetResolvers.getAssetPath(scannedChunks.entryChunk.fileName)
79
+ };
104
80
  }
105
81
  function scanClientChunks(clientBundle) {
106
- let entryChunk;
107
- const chunksByFileName = /* @__PURE__ */ new Map();
108
- const routeChunksByFilePath = /* @__PURE__ */ new Map();
109
- const routeEntryChunks = /* @__PURE__ */ new Set();
110
- for (const fileName in clientBundle) {
111
- const bundleEntry = clientBundle[fileName];
112
- if (bundleEntry.type !== "chunk") {
113
- continue;
114
- }
115
- chunksByFileName.set(bundleEntry.fileName, bundleEntry);
116
- if (bundleEntry.isEntry) {
117
- if (entryChunk) {
118
- throw new Error(
119
- `multiple entries detected: ${entryChunk.fileName} ${bundleEntry.fileName}`
120
- );
121
- }
122
- entryChunk = bundleEntry;
123
- }
124
- const routeFilePaths = getRouteFilePathsFromModuleIds(bundleEntry.moduleIds);
125
- if (routeFilePaths.length === 0) {
126
- continue;
127
- }
128
- routeEntryChunks.add(bundleEntry);
129
- for (let i = 0; i < routeFilePaths.length; i++) {
130
- const routeFilePath = routeFilePaths[i];
131
- let chunks = routeChunksByFilePath.get(routeFilePath);
132
- if (chunks === void 0) {
133
- chunks = [];
134
- routeChunksByFilePath.set(routeFilePath, chunks);
135
- }
136
- chunks.push(bundleEntry);
137
- }
138
- }
139
- if (!entryChunk) {
140
- throw new Error("No entry file found");
141
- }
142
- return {
143
- entryChunk,
144
- chunksByFileName,
145
- routeChunksByFilePath,
146
- routeEntryChunks
147
- };
82
+ let entryChunk;
83
+ const chunksByFileName = /* @__PURE__ */ new Map();
84
+ const routeChunksByFilePath = /* @__PURE__ */ new Map();
85
+ const routeEntryChunks = /* @__PURE__ */ new Set();
86
+ for (const fileName in clientBundle) {
87
+ const bundleEntry = clientBundle[fileName];
88
+ if (bundleEntry.type !== "chunk") continue;
89
+ chunksByFileName.set(bundleEntry.fileName, bundleEntry);
90
+ if (bundleEntry.isEntry) {
91
+ if (entryChunk) throw new Error(`multiple entries detected: ${entryChunk.fileName} ${bundleEntry.fileName}`);
92
+ entryChunk = bundleEntry;
93
+ }
94
+ const routeFilePaths = getRouteFilePathsFromModuleIds(bundleEntry.moduleIds);
95
+ if (routeFilePaths.length === 0) continue;
96
+ routeEntryChunks.add(bundleEntry);
97
+ for (let i = 0; i < routeFilePaths.length; i++) {
98
+ const routeFilePath = routeFilePaths[i];
99
+ let chunks = routeChunksByFilePath.get(routeFilePath);
100
+ if (chunks === void 0) {
101
+ chunks = [];
102
+ routeChunksByFilePath.set(routeFilePath, chunks);
103
+ }
104
+ chunks.push(bundleEntry);
105
+ }
106
+ }
107
+ if (!entryChunk) throw new Error("No entry file found");
108
+ return {
109
+ entryChunk,
110
+ chunksByFileName,
111
+ routeChunksByFilePath,
112
+ routeEntryChunks
113
+ };
148
114
  }
149
115
  function getRouteFilePathsFromModuleIds(moduleIds) {
150
- let routeFilePaths;
151
- let seenRouteFilePaths;
152
- for (const moduleId of moduleIds) {
153
- const queryIndex = moduleId.indexOf("?");
154
- if (queryIndex < 0) {
155
- continue;
156
- }
157
- const query = moduleId.slice(queryIndex + 1);
158
- if (!query.includes(tsrSplit)) {
159
- continue;
160
- }
161
- if (!new URLSearchParams(query).has(tsrSplit)) {
162
- continue;
163
- }
164
- const routeFilePath = moduleId.slice(0, queryIndex);
165
- if (seenRouteFilePaths?.has(routeFilePath)) {
166
- continue;
167
- }
168
- if (routeFilePaths === void 0) {
169
- routeFilePaths = [];
170
- seenRouteFilePaths = /* @__PURE__ */ new Set();
171
- }
172
- routeFilePaths.push(routeFilePath);
173
- seenRouteFilePaths.add(routeFilePath);
174
- }
175
- return routeFilePaths ?? [];
116
+ let routeFilePaths;
117
+ let seenRouteFilePaths;
118
+ for (const moduleId of moduleIds) {
119
+ const queryIndex = moduleId.indexOf("?");
120
+ if (queryIndex < 0) continue;
121
+ const query = moduleId.slice(queryIndex + 1);
122
+ if (!query.includes(tsrSplit)) continue;
123
+ if (!new URLSearchParams(query).has(tsrSplit)) continue;
124
+ const routeFilePath = moduleId.slice(0, queryIndex);
125
+ if (seenRouteFilePaths?.has(routeFilePath)) continue;
126
+ if (routeFilePaths === void 0) {
127
+ routeFilePaths = [];
128
+ seenRouteFilePaths = /* @__PURE__ */ new Set();
129
+ }
130
+ routeFilePaths.push(routeFilePath);
131
+ seenRouteFilePaths.add(routeFilePath);
132
+ }
133
+ return routeFilePaths ?? [];
176
134
  }
177
135
  function collectDynamicImportCss(routeEntryChunks, chunksByFileName, entryChunk) {
178
- const routerManagedCssFiles = /* @__PURE__ */ new Set();
179
- const nonRouteDynamicCssFiles = /* @__PURE__ */ new Set();
180
- const hashedCssFiles = /* @__PURE__ */ new Set();
181
- const visitedByChunk = /* @__PURE__ */ new Map();
182
- const chunkStack = [];
183
- const modeStack = [];
184
- for (const routeEntryChunk of routeEntryChunks) {
185
- chunkStack.push(routeEntryChunk);
186
- modeStack.push(ROUTER_MANAGED_MODE);
187
- }
188
- if (entryChunk) {
189
- chunkStack.push(entryChunk);
190
- modeStack.push(ROUTER_MANAGED_MODE);
191
- }
192
- while (chunkStack.length > 0) {
193
- const chunk = chunkStack.pop();
194
- const mode = modeStack.pop();
195
- const previousMode = visitedByChunk.get(chunk) ?? 0;
196
- if ((previousMode & mode) === mode) {
197
- continue;
198
- }
199
- visitedByChunk.set(chunk, previousMode | mode);
200
- if ((mode & ROUTER_MANAGED_MODE) !== 0) {
201
- for (const cssFile of chunk.viteMetadata?.importedCss ?? []) {
202
- routerManagedCssFiles.add(cssFile);
203
- }
204
- }
205
- if ((mode & NON_ROUTE_DYNAMIC_MODE) !== 0) {
206
- for (const cssFile of chunk.viteMetadata?.importedCss ?? []) {
207
- nonRouteDynamicCssFiles.add(cssFile);
208
- }
209
- }
210
- for (let i = 0; i < chunk.imports.length; i++) {
211
- const importedChunk = chunksByFileName.get(chunk.imports[i]);
212
- if (importedChunk) {
213
- chunkStack.push(importedChunk);
214
- modeStack.push(mode);
215
- }
216
- }
217
- for (let i = 0; i < chunk.dynamicImports.length; i++) {
218
- const dynamicImportedChunk = chunksByFileName.get(
219
- chunk.dynamicImports[i]
220
- );
221
- if (dynamicImportedChunk) {
222
- chunkStack.push(dynamicImportedChunk);
223
- modeStack.push(
224
- (mode & NON_ROUTE_DYNAMIC_MODE) !== 0 || !routeEntryChunks.has(dynamicImportedChunk) ? NON_ROUTE_DYNAMIC_MODE : ROUTER_MANAGED_MODE
225
- );
226
- }
227
- }
228
- }
229
- for (const cssFile of routerManagedCssFiles) {
230
- if (nonRouteDynamicCssFiles.has(cssFile)) {
231
- hashedCssFiles.add(cssFile);
232
- }
233
- }
234
- return hashedCssFiles;
136
+ const routerManagedCssFiles = /* @__PURE__ */ new Set();
137
+ const nonRouteDynamicCssFiles = /* @__PURE__ */ new Set();
138
+ const hashedCssFiles = /* @__PURE__ */ new Set();
139
+ const visitedByChunk = /* @__PURE__ */ new Map();
140
+ const chunkStack = [];
141
+ const modeStack = [];
142
+ for (const routeEntryChunk of routeEntryChunks) {
143
+ chunkStack.push(routeEntryChunk);
144
+ modeStack.push(ROUTER_MANAGED_MODE);
145
+ }
146
+ if (entryChunk) {
147
+ chunkStack.push(entryChunk);
148
+ modeStack.push(ROUTER_MANAGED_MODE);
149
+ }
150
+ while (chunkStack.length > 0) {
151
+ const chunk = chunkStack.pop();
152
+ const mode = modeStack.pop();
153
+ const previousMode = visitedByChunk.get(chunk) ?? 0;
154
+ if ((previousMode & mode) === mode) continue;
155
+ visitedByChunk.set(chunk, previousMode | mode);
156
+ if ((mode & ROUTER_MANAGED_MODE) !== 0) for (const cssFile of chunk.viteMetadata?.importedCss ?? []) routerManagedCssFiles.add(cssFile);
157
+ if ((mode & NON_ROUTE_DYNAMIC_MODE) !== 0) for (const cssFile of chunk.viteMetadata?.importedCss ?? []) nonRouteDynamicCssFiles.add(cssFile);
158
+ for (let i = 0; i < chunk.imports.length; i++) {
159
+ const importedChunk = chunksByFileName.get(chunk.imports[i]);
160
+ if (importedChunk) {
161
+ chunkStack.push(importedChunk);
162
+ modeStack.push(mode);
163
+ }
164
+ }
165
+ for (let i = 0; i < chunk.dynamicImports.length; i++) {
166
+ const dynamicImportedChunk = chunksByFileName.get(chunk.dynamicImports[i]);
167
+ if (dynamicImportedChunk) {
168
+ chunkStack.push(dynamicImportedChunk);
169
+ modeStack.push((mode & NON_ROUTE_DYNAMIC_MODE) !== 0 || !routeEntryChunks.has(dynamicImportedChunk) ? NON_ROUTE_DYNAMIC_MODE : ROUTER_MANAGED_MODE);
170
+ }
171
+ }
172
+ }
173
+ for (const cssFile of routerManagedCssFiles) if (nonRouteDynamicCssFiles.has(cssFile)) hashedCssFiles.add(cssFile);
174
+ return hashedCssFiles;
235
175
  }
236
176
  function createManifestAssetResolvers(options) {
237
- const assetPathByFileName = /* @__PURE__ */ new Map();
238
- const stylesheetAssetByFileName = /* @__PURE__ */ new Map();
239
- const preloadsByChunk = /* @__PURE__ */ new Map();
240
- const getAssetPath = (fileName) => {
241
- const cachedPath = assetPathByFileName.get(fileName);
242
- if (cachedPath) {
243
- return cachedPath;
244
- }
245
- const assetPath = joinURL(options.basePath, fileName);
246
- assetPathByFileName.set(fileName, assetPath);
247
- return assetPath;
248
- };
249
- const getStylesheetAsset = (cssFile) => {
250
- const cachedAsset = stylesheetAssetByFileName.get(cssFile);
251
- if (cachedAsset) {
252
- return cachedAsset;
253
- }
254
- const href = getAssetPath(cssFile);
255
- const asset = {
256
- tag: "link",
257
- attrs: {
258
- rel: "stylesheet",
259
- href: options.hashedCssFiles?.has(cssFile) ? `${href}#` : href,
260
- type: "text/css"
261
- }
262
- };
263
- stylesheetAssetByFileName.set(cssFile, asset);
264
- return asset;
265
- };
266
- const getChunkPreloads = (chunk) => {
267
- const cachedPreloads = preloadsByChunk.get(chunk);
268
- if (cachedPreloads) {
269
- return cachedPreloads;
270
- }
271
- const preloads = [getAssetPath(chunk.fileName)];
272
- for (let i = 0; i < chunk.imports.length; i++) {
273
- preloads.push(getAssetPath(chunk.imports[i]));
274
- }
275
- preloadsByChunk.set(chunk, preloads);
276
- return preloads;
277
- };
278
- return {
279
- getAssetPath,
280
- getChunkPreloads,
281
- getStylesheetAsset
282
- };
177
+ const assetPathByFileName = /* @__PURE__ */ new Map();
178
+ const stylesheetAssetByFileName = /* @__PURE__ */ new Map();
179
+ const preloadsByChunk = /* @__PURE__ */ new Map();
180
+ const getAssetPath = (fileName) => {
181
+ const cachedPath = assetPathByFileName.get(fileName);
182
+ if (cachedPath) return cachedPath;
183
+ const assetPath = joinURL(options.basePath, fileName);
184
+ assetPathByFileName.set(fileName, assetPath);
185
+ return assetPath;
186
+ };
187
+ const getStylesheetAsset = (cssFile) => {
188
+ const cachedAsset = stylesheetAssetByFileName.get(cssFile);
189
+ if (cachedAsset) return cachedAsset;
190
+ const href = getAssetPath(cssFile);
191
+ const asset = {
192
+ tag: "link",
193
+ attrs: {
194
+ rel: "stylesheet",
195
+ href: options.hashedCssFiles?.has(cssFile) ? `${href}#` : href,
196
+ type: "text/css"
197
+ }
198
+ };
199
+ stylesheetAssetByFileName.set(cssFile, asset);
200
+ return asset;
201
+ };
202
+ const getChunkPreloads = (chunk) => {
203
+ const cachedPreloads = preloadsByChunk.get(chunk);
204
+ if (cachedPreloads) return cachedPreloads;
205
+ const preloads = [getAssetPath(chunk.fileName)];
206
+ for (let i = 0; i < chunk.imports.length; i++) preloads.push(getAssetPath(chunk.imports[i]));
207
+ preloadsByChunk.set(chunk, preloads);
208
+ return preloads;
209
+ };
210
+ return {
211
+ getAssetPath,
212
+ getChunkPreloads,
213
+ getStylesheetAsset
214
+ };
283
215
  }
284
216
  function createChunkCssAssetCollector(options) {
285
- const assetsByChunk = /* @__PURE__ */ new Map();
286
- const stateByChunk = /* @__PURE__ */ new Map();
287
- const getChunkCssAssets = (chunk) => {
288
- const cachedAssets = assetsByChunk.get(chunk);
289
- if (cachedAssets) {
290
- return cachedAssets;
291
- }
292
- if (stateByChunk.get(chunk) === VISITING_CHUNK) {
293
- return [];
294
- }
295
- stateByChunk.set(chunk, VISITING_CHUNK);
296
- const assets = [];
297
- for (const cssFile of chunk.viteMetadata?.importedCss ?? []) {
298
- assets.push(options.getStylesheetAsset(cssFile));
299
- }
300
- for (let i = 0; i < chunk.imports.length; i++) {
301
- const importedChunk = options.chunksByFileName.get(chunk.imports[i]);
302
- if (!importedChunk) {
303
- continue;
304
- }
305
- const importedAssets = getChunkCssAssets(importedChunk);
306
- for (let j = 0; j < importedAssets.length; j++) {
307
- assets.push(importedAssets[j]);
308
- }
309
- }
310
- stateByChunk.delete(chunk);
311
- assetsByChunk.set(chunk, assets);
312
- return assets;
313
- };
314
- return { getChunkCssAssets };
217
+ const assetsByChunk = /* @__PURE__ */ new Map();
218
+ const stateByChunk = /* @__PURE__ */ new Map();
219
+ const getChunkCssAssets = (chunk) => {
220
+ const cachedAssets = assetsByChunk.get(chunk);
221
+ if (cachedAssets) return cachedAssets;
222
+ if (stateByChunk.get(chunk) === VISITING_CHUNK) return [];
223
+ stateByChunk.set(chunk, VISITING_CHUNK);
224
+ const assets = [];
225
+ for (const cssFile of chunk.viteMetadata?.importedCss ?? []) assets.push(options.getStylesheetAsset(cssFile));
226
+ for (let i = 0; i < chunk.imports.length; i++) {
227
+ const importedChunk = options.chunksByFileName.get(chunk.imports[i]);
228
+ if (!importedChunk) continue;
229
+ const importedAssets = getChunkCssAssets(importedChunk);
230
+ for (let j = 0; j < importedAssets.length; j++) assets.push(importedAssets[j]);
231
+ }
232
+ stateByChunk.delete(chunk);
233
+ assetsByChunk.set(chunk, assets);
234
+ return assets;
235
+ };
236
+ return { getChunkCssAssets };
315
237
  }
316
238
  function buildRouteManifestRoutes(options) {
317
- const routes = {};
318
- const getChunkCssAssets = createChunkCssAssetCollector({
319
- chunksByFileName: options.chunksByFileName,
320
- getStylesheetAsset: options.assetResolvers.getStylesheetAsset
321
- }).getChunkCssAssets;
322
- for (const [routeId, route] of Object.entries(options.routeTreeRoutes)) {
323
- if (!route.filePath) {
324
- if (routeId === rootRouteId) {
325
- routes[routeId] = route;
326
- continue;
327
- }
328
- throw new Error(`expected filePath to be set for ${routeId}`);
329
- }
330
- const chunks = options.routeChunksByFilePath.get(route.filePath);
331
- if (!chunks) {
332
- routes[routeId] = route;
333
- continue;
334
- }
335
- const existing = routes[routeId];
336
- const targetRoute = routes[routeId] = existing ? existing : { ...route };
337
- for (const chunk of chunks) {
338
- mergeRouteChunkData({
339
- route: targetRoute,
340
- chunk,
341
- getChunkCssAssets,
342
- getChunkPreloads: options.assetResolvers.getChunkPreloads
343
- });
344
- }
345
- }
346
- const rootRoute = routes[rootRouteId] = routes[rootRouteId] || {};
347
- mergeRouteChunkData({
348
- route: rootRoute,
349
- chunk: options.entryChunk,
350
- getChunkCssAssets,
351
- getChunkPreloads: options.assetResolvers.getChunkPreloads
352
- });
353
- return routes;
239
+ const routes = {};
240
+ const getChunkCssAssets = createChunkCssAssetCollector({
241
+ chunksByFileName: options.chunksByFileName,
242
+ getStylesheetAsset: options.assetResolvers.getStylesheetAsset
243
+ }).getChunkCssAssets;
244
+ for (const [routeId, route] of Object.entries(options.routeTreeRoutes)) {
245
+ if (!route.filePath) {
246
+ if (routeId === rootRouteId) {
247
+ routes[routeId] = route;
248
+ continue;
249
+ }
250
+ throw new Error(`expected filePath to be set for ${routeId}`);
251
+ }
252
+ const chunks = options.routeChunksByFilePath.get(route.filePath);
253
+ if (!chunks) {
254
+ routes[routeId] = route;
255
+ continue;
256
+ }
257
+ const existing = routes[routeId];
258
+ const targetRoute = routes[routeId] = existing ? existing : { ...route };
259
+ for (const chunk of chunks) mergeRouteChunkData({
260
+ route: targetRoute,
261
+ chunk,
262
+ getChunkCssAssets,
263
+ getChunkPreloads: options.assetResolvers.getChunkPreloads
264
+ });
265
+ }
266
+ mergeRouteChunkData({
267
+ route: routes[rootRouteId] = routes[rootRouteId] || {},
268
+ chunk: options.entryChunk,
269
+ getChunkCssAssets,
270
+ getChunkPreloads: options.assetResolvers.getChunkPreloads
271
+ });
272
+ return routes;
354
273
  }
355
274
  function dedupeNestedRoutePreloads(route, routesById, seenPreloads = /* @__PURE__ */ new Set()) {
356
- let routePreloads = route.preloads;
357
- if (routePreloads && routePreloads.length > 0) {
358
- let dedupedPreloads;
359
- for (let i = 0; i < routePreloads.length; i++) {
360
- const preload = routePreloads[i];
361
- if (seenPreloads.has(preload)) {
362
- if (dedupedPreloads === void 0) {
363
- dedupedPreloads = routePreloads.slice(0, i);
364
- }
365
- continue;
366
- }
367
- seenPreloads.add(preload);
368
- if (dedupedPreloads) {
369
- dedupedPreloads.push(preload);
370
- }
371
- }
372
- if (dedupedPreloads) {
373
- routePreloads = dedupedPreloads;
374
- route.preloads = dedupedPreloads;
375
- }
376
- }
377
- if (route.children) {
378
- for (const childRouteId of route.children) {
379
- dedupeNestedRoutePreloads(
380
- routesById[childRouteId],
381
- routesById,
382
- seenPreloads
383
- );
384
- }
385
- }
386
- if (routePreloads) {
387
- for (let i = routePreloads.length - 1; i >= 0; i--) {
388
- seenPreloads.delete(routePreloads[i]);
389
- }
390
- }
275
+ let routePreloads = route.preloads;
276
+ if (routePreloads && routePreloads.length > 0) {
277
+ let dedupedPreloads;
278
+ for (let i = 0; i < routePreloads.length; i++) {
279
+ const preload = routePreloads[i];
280
+ if (seenPreloads.has(preload)) {
281
+ if (dedupedPreloads === void 0) dedupedPreloads = routePreloads.slice(0, i);
282
+ continue;
283
+ }
284
+ seenPreloads.add(preload);
285
+ if (dedupedPreloads) dedupedPreloads.push(preload);
286
+ }
287
+ if (dedupedPreloads) {
288
+ routePreloads = dedupedPreloads;
289
+ route.preloads = dedupedPreloads;
290
+ }
291
+ }
292
+ if (route.children) for (const childRouteId of route.children) dedupeNestedRoutePreloads(routesById[childRouteId], routesById, seenPreloads);
293
+ if (routePreloads) for (let i = routePreloads.length - 1; i >= 0; i--) seenPreloads.delete(routePreloads[i]);
391
294
  }
392
- export {
393
- appendUniqueAssets,
394
- appendUniqueStrings,
395
- buildRouteManifestRoutes,
396
- buildStartManifest,
397
- collectDynamicImportCss,
398
- createChunkCssAssetCollector,
399
- createManifestAssetResolvers,
400
- dedupeNestedRoutePreloads,
401
- getRouteFilePathsFromModuleIds,
402
- scanClientChunks
403
- };
404
- //# sourceMappingURL=manifestBuilder.js.map
295
+ //#endregion
296
+ export { buildStartManifest };
297
+
298
+ //# sourceMappingURL=manifestBuilder.js.map