@common-stack/rollup-vite-utils 8.2.2-alpha.1 → 8.2.4-alpha.1

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 (46) hide show
  1. package/lib/default-config.json.cjs +2 -2
  2. package/lib/default-config.json.js +2 -2
  3. package/lib/index.cjs +1 -1
  4. package/lib/index.js +1 -1
  5. package/lib/rollup/modifyLibFiles/handleComponentOrDialog.cjs +75 -7
  6. package/lib/rollup/modifyLibFiles/handleComponentOrDialog.cjs.map +1 -1
  7. package/lib/rollup/modifyLibFiles/handleComponentOrDialog.js +75 -7
  8. package/lib/rollup/modifyLibFiles/handleComponentOrDialog.js.map +1 -1
  9. package/lib/rollup/rollupPluginModifyLibFiles.cjs +1 -0
  10. package/lib/rollup/rollupPluginModifyLibFiles.cjs.map +1 -1
  11. package/lib/rollup/rollupPluginModifyLibFiles.js +1 -0
  12. package/lib/rollup/rollupPluginModifyLibFiles.js.map +1 -1
  13. package/lib/utils/utils.cjs +77 -6
  14. package/lib/utils/utils.cjs.map +1 -1
  15. package/lib/utils/utils.d.ts +31 -0
  16. package/lib/utils/utils.js +77 -6
  17. package/lib/utils/utils.js.map +1 -1
  18. package/lib/vite-wrappers/__tests__/json-wrappers-null-routes.test.d.ts +1 -0
  19. package/lib/vite-wrappers/__tests__/wrapper-clientaction.test.d.ts +1 -0
  20. package/lib/vite-wrappers/__tests__/wrapper-clientonly.test.d.ts +1 -0
  21. package/lib/vite-wrappers/generateRoutesFile.cjs +127 -0
  22. package/lib/vite-wrappers/generateRoutesFile.cjs.map +1 -0
  23. package/lib/vite-wrappers/generateRoutesFile.d.ts +13 -0
  24. package/lib/vite-wrappers/generateRoutesFile.js +127 -0
  25. package/lib/vite-wrappers/generateRoutesFile.js.map +1 -0
  26. package/lib/vite-wrappers/generators/clientLoaderGenerator.cjs +119 -17
  27. package/lib/vite-wrappers/generators/clientLoaderGenerator.cjs.map +1 -1
  28. package/lib/vite-wrappers/generators/clientLoaderGenerator.d.ts +5 -4
  29. package/lib/vite-wrappers/generators/clientLoaderGenerator.js +119 -17
  30. package/lib/vite-wrappers/generators/clientLoaderGenerator.js.map +1 -1
  31. package/lib/vite-wrappers/generators/loaderGenerator.cjs +4 -4
  32. package/lib/vite-wrappers/generators/loaderGenerator.cjs.map +1 -1
  33. package/lib/vite-wrappers/generators/loaderGenerator.d.ts +1 -3
  34. package/lib/vite-wrappers/generators/loaderGenerator.js +4 -4
  35. package/lib/vite-wrappers/generators/loaderGenerator.js.map +1 -1
  36. package/lib/vite-wrappers/json-wrappers.cjs +306 -26
  37. package/lib/vite-wrappers/json-wrappers.cjs.map +1 -1
  38. package/lib/vite-wrappers/json-wrappers.d.ts +9 -0
  39. package/lib/vite-wrappers/json-wrappers.js +306 -26
  40. package/lib/vite-wrappers/json-wrappers.js.map +1 -1
  41. package/lib/vite-wrappers/wrapperComponent.cjs +78 -36
  42. package/lib/vite-wrappers/wrapperComponent.cjs.map +1 -1
  43. package/lib/vite-wrappers/wrapperComponent.js +78 -36
  44. package/lib/vite-wrappers/wrapperComponent.js.map +1 -1
  45. package/package.json +8 -4
  46. package/schemas/server-config.schema.json +69 -0
@@ -1,4 +1,4 @@
1
- 'use strict';var getRoutes_js=require('@common-stack/client-react/lib/route/get-routes.js'),fs=require('fs'),globAll=require('glob-all'),lodashEs=require('lodash-es'),node_crypto=require('node:crypto'),wrapperComponent=require('./wrapperComponent.cjs'),dialogWrapper=require('./dialog-wrapper.cjs'),iconSwitch=require('./icon-switch.cjs'),componentReplacement=require('./helpers/componentReplacement.cjs');/* eslint-disable jest/require-hook */
1
+ 'use strict';var getRoutes_js=require('@common-stack/client-react/lib/route/get-routes.js'),fs=require('fs'),globAll=require('glob-all'),lodashEs=require('lodash-es'),node_crypto=require('node:crypto'),wrapperComponent=require('./wrapperComponent.cjs'),dialogWrapper=require('./dialog-wrapper.cjs'),generateRoutesFile=require('./generateRoutesFile.cjs'),iconSwitch=require('./icon-switch.cjs'),componentReplacement=require('./helpers/componentReplacement.cjs');/* eslint-disable jest/require-hook */
2
2
  /* eslint-disable array-callback-return */
3
3
  /**
4
4
  * Generates a hash from the source string.
@@ -12,6 +12,31 @@ const getHash = (source, maxLength = 8) => {
12
12
  const hash = node_crypto.createHash('sha256').update(source).digest('hex');
13
13
  return typeof maxLength === 'number' ? hash.slice(0, maxLength) : hash;
14
14
  };
15
+ /**
16
+ * Sanitizes a string to be a valid JavaScript identifier.
17
+ * Converts hyphens to PascalCase and removes invalid characters.
18
+ * @param name - The name to sanitize
19
+ * @returns A valid JavaScript identifier
20
+ */
21
+ const sanitizeComponentName = (name) => {
22
+ // Convert hyphen-case to PascalCase (e.g., "outlet-page" -> "OutletPage")
23
+ return name
24
+ .split('-')
25
+ .map((part) => part.charAt(0).toUpperCase() + part.slice(1))
26
+ .join('');
27
+ };
28
+ /**
29
+ * Generates a standardized component name from route information.
30
+ * This ensures consistency between wrapper file exports and route imports.
31
+ *
32
+ * @param componentBaseName - The base name extracted from the component path
33
+ * @param suffix - The hash suffix for uniqueness
34
+ * @returns The standardized component name
35
+ */
36
+ const generateWrapperComponentName = (componentBaseName, suffix) => {
37
+ const sanitizedName = sanitizeComponentName(componentBaseName);
38
+ return `Wrapped${sanitizedName}_${suffix}Component`;
39
+ };
15
40
  /**
16
41
  * Resolves the directories containing files from specified packages.
17
42
  * Searches for a specific file in the node_modules directories of the provided packages.
@@ -47,6 +72,64 @@ function customizer(objValue, srcValue) {
47
72
  return objValue.concat(srcValue);
48
73
  }
49
74
  }
75
+ /**
76
+ * Merges routes with the same path intelligently:
77
+ * - When a layout route (exact: false) and an index route (exact: true) have the same path,
78
+ * the layout becomes the parent and the index becomes a child with index: true
79
+ * - Otherwise, later routes overwrite earlier ones with the same key
80
+ *
81
+ * @param merged - The accumulated merged routes object
82
+ * @param newRoutes - New routes to merge in
83
+ * @returns The merged routes object
84
+ */
85
+ function mergeRoutesIntelligently(merged, newRoutes) {
86
+ for (const [path, routeConfig] of Object.entries(newRoutes)) {
87
+ const existing = merged[path];
88
+ if (existing) {
89
+ const existingExact = existing.exact !== false; // Default to true if not specified
90
+ const newExact = routeConfig.exact !== false; // Default to true if not specified
91
+ if (!existingExact && newExact) {
92
+ // Existing is a layout (exact: false), new is an index (exact: true)
93
+ // Keep the layout and add the new route as an index child
94
+ // For index routes, relativePath must be empty string for Remix
95
+ if (!existing.routes) {
96
+ existing.routes = [];
97
+ }
98
+ existing.routes.push({
99
+ ...routeConfig,
100
+ path: path, // Keep the absolute path for component lookup
101
+ relativePath: '', // Empty for index routes in Remix
102
+ index: true, // Mark as index route
103
+ });
104
+ console.log(`[mergeRoutesIntelligently] Added index route "${routeConfig.key}" as child of layout "${existing.key}" at path "${path}"`);
105
+ }
106
+ else if (existingExact && !newExact) {
107
+ // Existing is an index (exact: true), new is a layout (exact: false)
108
+ // Replace with layout and add existing as an index child
109
+ const layoutRoute = { ...routeConfig };
110
+ if (!layoutRoute.routes) {
111
+ layoutRoute.routes = [];
112
+ }
113
+ layoutRoute.routes.push({
114
+ ...existing,
115
+ path: path, // Keep the absolute path for component lookup
116
+ relativePath: '', // Empty for index routes in Remix
117
+ index: true, // Mark as index route
118
+ });
119
+ merged[path] = layoutRoute;
120
+ console.log(`[mergeRoutesIntelligently] Made "${routeConfig.key}" the layout and "${existing.key}" an index child at path "${path}"`);
121
+ }
122
+ else {
123
+ // Both have same exact value - later one wins (existing behavior)
124
+ merged[path] = routeConfig;
125
+ }
126
+ }
127
+ else {
128
+ merged[path] = routeConfig;
129
+ }
130
+ }
131
+ return merged;
132
+ }
50
133
  /**
51
134
  * Loads the routes configuration from the specified packages and merges them.
52
135
  * Returns the sorted and merged route configuration.
@@ -56,11 +139,27 @@ function customizer(objValue, srcValue) {
56
139
  */
57
140
  function loadRoutesConfig(options) {
58
141
  const fileName = options.routesFileName || 'route.json';
142
+ const isSPAOnly = !!options.settings?.runSPAOnly;
59
143
  const directories = resolvePathsUsingPackages(options.packages, fileName, options.rootPath);
60
144
  let content = [];
61
145
  directories.forEach((dir) => {
62
146
  const fileContent = String(fs.readFileSync(dir));
63
- const parsedContent = JSON.parse(fileContent);
147
+ let parsedContent = JSON.parse(fileContent);
148
+ // Filter and transform routes for SPA mode before merging
149
+ if (isSPAOnly && parsedContent.length > 0) {
150
+ parsedContent = parsedContent
151
+ // Filter out routes that should be excluded in SPA mode
152
+ .filter((routeEntry) => {
153
+ const routeKey = Object.keys(routeEntry)[0];
154
+ const routeConfig = routeEntry[routeKey];
155
+ // Exclude routes marked with spaExclude or isResourceRoute
156
+ if (routeConfig.spaExclude || routeConfig.isResourceRoute) {
157
+ console.log(`[SPA Mode] Excluding route: ${routeKey} (spaExclude: ${routeConfig.spaExclude}, isResourceRoute: ${routeConfig.isResourceRoute})`);
158
+ return false;
159
+ }
160
+ return true;
161
+ });
162
+ }
64
163
  if (options.settings?.overrideRoutes && parsedContent.length > 0) {
65
164
  const routeOverrides = Array.isArray(options.settings.overrideRoutes)
66
165
  ? options.settings.overrideRoutes
@@ -87,7 +186,11 @@ function loadRoutesConfig(options) {
87
186
  content = mergedContent;
88
187
  }
89
188
  });
90
- const result = content.length ? getRoutes_js.getSortedRoutes('/', Object.assign({}, ...content)) : null;
189
+ // Use intelligent merge that handles layout/index route conflicts
190
+ const mergedRoutes = content.reduce((acc, routeEntry) => {
191
+ return mergeRoutesIntelligently(acc, routeEntry);
192
+ }, {});
193
+ const result = Object.keys(mergedRoutes).length ? getRoutes_js.getSortedRoutes('/', mergedRoutes) : null;
91
194
  return result;
92
195
  }
93
196
  // Global variables to store dialog paths, icon names, and icon files.
@@ -95,6 +198,7 @@ let dialogPaths = [];
95
198
  let iconNames = [];
96
199
  let iconSvgPaths = [];
97
200
  const iconFiles = [];
201
+ let routeConfigItems = []; // Collect route config during defineRoute
98
202
  /**
99
203
  * Updates the routes.json files with overridden routes if specified in settings.
100
204
  * This directly modifies the source JSON files to replace old routes with new routes.
@@ -134,7 +238,10 @@ const addIconFile = (icon) => (!iconFiles.includes(icon) ? iconFiles.push(icon)
134
238
  * @param paths - The paths configuration for various modules and components.
135
239
  */
136
240
  function defineRoute(routeFn, jsonRoute, { metaJson, settings, paths }) {
137
- const { routes = null, relativePath: path, componentPath, clientOnly, dialogPath, isResourceRoute, auth = 'optional', hasServerCode = false, hasLoader = false, hasAction = false, hasClientLoader = false, hasClientAction = false, hasComponent = false, hasErrorBoundary = false, hasLinks = false, hasMeta = false, hasHydrateFallback = false, hasShouldRevalidate = false, queryParamsGenerator = false, hasHandle = false, hasHeaders = false, wrapperPaths = [], middlewares = [], authority = [], authorityConfig = {}, extraPermissions = [], extraParams = {}, extraIcons = [], extraLinks = [], extraProps = {}, loaderReturnInfo = {}, queries = {}, clientMiddlewares = [], configurations = [], resourceUri, icon, ...rest } = jsonRoute;
241
+ const { routes = null, relativePath: path, componentPath, spaComponentPath, clientOnly, dialogPath, isResourceRoute, auth = 'optional', hasServerCode = false, hasLoader = false, hasAction = false, hasClientLoader = false, hasClientAction = false, hasComponent = false, hasSPAComponent = false, hasErrorBoundary = false, hasLinks = false, hasMeta = false, hasHydrateFallback = false, hasShouldRevalidate = false, queryParamsGenerator = false, hasHandle = false, hasHeaders = false, fallbackServerComponentPath, wrapperPaths = [], middlewares = [], authority = [], authorityConfig = {}, extraPermissions = [], extraParams = {}, extraIcons = [], extraLinks = [], extraProps = {}, loaderReturnInfo = {}, queries = {}, clientMiddlewares = [], configurations = [], resourceUri, icon, ...rest } = jsonRoute;
242
+ // Determine which component path to use based on SPA mode
243
+ const isSPAOnly = !!settings.runSPAOnly;
244
+ const effectiveComponentPath = isSPAOnly && spaComponentPath ? spaComponentPath : componentPath;
138
245
  // Handle icons
139
246
  if (icon) {
140
247
  if (typeof icon === 'object') {
@@ -168,54 +275,105 @@ function defineRoute(routeFn, jsonRoute, { metaJson, settings, paths }) {
168
275
  dialogWrapper.dialogWrapperUtility(dialogPath, { path: rest.path });
169
276
  dialogPaths.push(dialogPath);
170
277
  }
171
- else if (componentPath) {
278
+ else if (effectiveComponentPath) {
279
+ // In SPA mode, we generate wrappers but disable all server-side features
280
+ // The wrapper generation will skip loader/action/middleware exports
281
+ // Routes are only skipped if they ONLY contain server-side code (no component)
172
282
  if (clientOnly) {
173
283
  wrapperPaths.push('$clientOnlyWrapper'); // Add a placeholder for client-only wrapper
174
284
  }
175
- if (authority.length > 0) {
285
+ if (authority.length > 0 && !isSPAOnly) {
176
286
  wrapperPaths.push('$configPermissionWrapper'); // Add a placeholder for permission wrapper
177
287
  }
178
288
  const requireAuth = !!auth;
179
289
  const replacementPath = componentReplacement.getComponentReplacementPath(jsonRoute.key, settings);
290
+ // Determine if middleware conditions exist that would normally require a loader
291
+ const hasMiddlewareConditions = requireAuth ||
292
+ middlewares.length > 0 ||
293
+ authority.length > 0 ||
294
+ configurations.length > 0 ||
295
+ extraPermissions.length > 0;
296
+ // Apply server-side middleware only if not in SPA mode and not disabled
297
+ const shouldApplyServerMiddleware = !isSPAOnly && !settings.disableMiddleware;
298
+ // In SPA mode, we still need client-side middleware for permissions, configurations, authority
299
+ // These will be resolved in the clientLoader middleware instead of server loader
300
+ const hasClientMiddlewareConditions = authority.length > 0 || configurations.length > 0 || extraPermissions.length > 0;
301
+ const hasMiddleware = shouldApplyServerMiddleware
302
+ ? hasMiddlewareConditions
303
+ : isSPAOnly && hasClientMiddlewareConditions;
304
+ const hasQueries = Object.keys(queries ?? {}).length > 0;
305
+ // Calculate componentName for consistency between wrapper file and routes.tsx
306
+ const suffix = getHash(rest.path || '/');
307
+ const componentBaseName = (replacementPath || effectiveComponentPath).split('/').pop()?.replace('.js', '') || 'Component';
308
+ const componentName = generateWrapperComponentName(componentBaseName, suffix);
180
309
  const options = {
181
310
  authStrategy: requireAuth ? auth : null,
182
- requireAuth,
311
+ // In SPA mode, requireAuth is used for spaAuthMiddleware in clientLoader
312
+ // In SSR mode, requireAuth is used for authMiddleware in server loader
313
+ requireAuth: (shouldApplyServerMiddleware || isSPAOnly) && requireAuth,
183
314
  isResourceRoute,
184
- hasLoader: settings.disableLoader !== true && hasLoader,
185
- hasAction: settings.disableAction !== true && hasAction,
315
+ hasLoader: !isSPAOnly && settings.disableLoader !== true && hasLoader,
316
+ hasMiddleware,
317
+ hasQueries,
318
+ hasAction: !isSPAOnly && settings.disableAction !== true && hasAction,
319
+ // In SPA mode, clientLoader is essential for data fetching - keep it enabled
186
320
  hasClientLoader: settings.disableClientLoader !== true && hasClientLoader,
187
321
  hasComponent,
188
- hasServerCode,
189
- hasErrorBoundary: settings.disableErrorBoundary !== true && hasErrorBoundary,
322
+ hasSPAComponent,
323
+ hasServerCode: !isSPAOnly && hasServerCode,
324
+ hasErrorBoundary: !isSPAOnly && settings.disableErrorBoundary !== true && hasErrorBoundary,
190
325
  hasLinks: settings.disableLinks !== true && hasLinks,
191
326
  hasMeta: settings.disableMeta !== true && hasMeta,
192
- hasHydrateFallback: settings.disableHydrateFallback !== true && hasHydrateFallback,
193
- hasShouldRevalidate: settings.disableShouldRevalidate !== true && hasShouldRevalidate,
327
+ // In SPA mode, HydrateFallback is ONLY allowed on the Remix root route (root.tsx)
328
+ // The wrappers we generate are CHILD routes, so we must disable HydrateFallback in SPA mode
329
+ hasHydrateFallback: !isSPAOnly && settings.disableHydrateFallback !== true && hasHydrateFallback,
330
+ hasShouldRevalidate: !isSPAOnly && hasShouldRevalidate,
194
331
  hasHandle: settings.disableHandle !== true && hasHandle,
195
- hasHeaders: settings.disableHeaders !== true && hasHeaders,
196
- hasClientAction: settings.disableClientAction !== true && hasClientAction,
332
+ hasHeaders: !isSPAOnly && settings.disableHeaders !== true && hasHeaders,
333
+ hasClientAction: !isSPAOnly && settings.disableClientAction !== true && hasClientAction,
197
334
  queryParamsGenerator,
198
335
  loaderReturnInfo,
199
- suffix: getHash(rest.path || '/'),
200
- middlewares,
201
- authority,
202
- authorityConfig,
203
- componentPath: replacementPath || componentPath,
336
+ suffix,
337
+ componentName,
338
+ // Server-side middlewares only apply when not in SPA mode
339
+ middlewares: shouldApplyServerMiddleware && middlewares ? middlewares : [],
340
+ // Authority, configurations, and extraPermissions are needed for both server and client middleware
341
+ // In SPA mode, these will be resolved via clientLoader middleware
342
+ authority: (shouldApplyServerMiddleware || isSPAOnly) && authority ? authority : [],
343
+ authorityConfig: (shouldApplyServerMiddleware || isSPAOnly) && authorityConfig ? authorityConfig : {},
344
+ componentPath: replacementPath || effectiveComponentPath,
345
+ fallbackServerComponentPath,
204
346
  extraLinks,
205
- extraPermissions,
347
+ extraPermissions: (shouldApplyServerMiddleware || isSPAOnly) && extraPermissions ? extraPermissions : [],
206
348
  extraParams,
207
349
  extraProps: settings.disableExtraProps !== true ? extraProps : {},
208
350
  queries,
209
- clientMiddlewares: settings.disableClientMiddlewares !== true ? clientMiddlewares : [],
351
+ clientMiddlewares: settings.disableClientMiddlewares !== true && clientMiddlewares ? clientMiddlewares : [],
210
352
  resourceUri,
211
- configurations,
353
+ configurations: (shouldApplyServerMiddleware || isSPAOnly) && configurations ? configurations : [],
212
354
  settings,
213
355
  paths,
214
356
  extraIcons,
215
357
  _useFutureCommonPackage: settings._useFutureCommonPackage,
216
358
  };
217
- const file = wrapperComponent.wrapRouteComponent(componentPath, wrapperPaths, metaJson, options);
218
- const opts = { ...rest, id: rest.path };
359
+ const file = wrapperComponent.wrapRouteComponent(effectiveComponentPath, wrapperPaths, metaJson, options);
360
+ // For index routes, use the key as the ID to avoid duplicate route IDs
361
+ // When a route has index: true, its relativePath is '' but we need a unique ID
362
+ const isIndexRoute = jsonRoute.index === true;
363
+ const routeId = isIndexRoute ? `${rest.path || '/'}/index:${rest.key}` : rest.path;
364
+ const opts = { ...rest, id: routeId };
365
+ // Collect route config for SPA mode using the absolute path from jsonRoute
366
+ if (isSPAOnly && !jsonRoute.hideInMenu) {
367
+ routeConfigItems.push({
368
+ key: jsonRoute.key,
369
+ name: jsonRoute.name,
370
+ path: jsonRoute.path, // Use the absolute path
371
+ tab: jsonRoute.tab || jsonRoute.name,
372
+ icon: icon,
373
+ priority: jsonRoute.priority || 0,
374
+ breadcrumbName: jsonRoute.name,
375
+ });
376
+ }
219
377
  if (routes) {
220
378
  routeFn(path, file, opts, () => {
221
379
  routes.forEach((c) => defineRoute(routeFn, c, { metaJson, settings, paths }));
@@ -236,13 +394,20 @@ function defineRoute(routeFn, jsonRoute, { metaJson, settings, paths }) {
236
394
  */
237
395
  function defineRoutesConfig(routeFn, options, metaJson = null) {
238
396
  const jsonRoute = loadRoutesConfig(options);
397
+ console.log('Loaded Routes Configuration:', JSON.stringify(jsonRoute, null, 2));
239
398
  const settings = options.settings || {};
240
399
  const paths = options.paths || {};
241
400
  const iconsRepository = options.iconsRepository || {};
401
+ // Handle null or empty routes
402
+ if (!jsonRoute || !Array.isArray(jsonRoute) || jsonRoute.length === 0) {
403
+ console.warn('[defineRoutesConfig] No routes found or routes is null/empty');
404
+ return;
405
+ }
242
406
  // Reset dialog paths and icon-related variables
243
407
  dialogPaths = [];
244
408
  iconNames = [];
245
409
  iconSvgPaths = [];
410
+ routeConfigItems = []; // Reset route config items
246
411
  // Define each route
247
412
  jsonRoute.forEach((item) => {
248
413
  defineRoute(routeFn, item, { metaJson, settings, paths });
@@ -250,4 +415,119 @@ function defineRoutesConfig(routeFn, options, metaJson = null) {
250
415
  // Write the dialogs and icons configuration
251
416
  dialogWrapper.writeDialogsSwitch(dialogPaths);
252
417
  iconSwitch.writeIconsSwitch(iconNames, iconSvgPaths, iconFiles, iconsRepository);
253
- }exports.defineRoutesConfig=defineRoutesConfig;exports.getHash=getHash;exports.loadRoutesConfig=loadRoutesConfig;exports.resolvePathsUsingPackages=resolvePathsUsingPackages;//# sourceMappingURL=json-wrappers.cjs.map
418
+ // Always generate routes-config.json for menu generation (both SPA and SSR modes)
419
+ const outputDir = settings.outputDir || `${options.rootPath}/app`;
420
+ generateRoutesConfigJson(jsonRoute, outputDir);
421
+ // Generate routes.tsx file for runSPAOnly mode
422
+ if (settings.runSPAOnly) {
423
+ // Use settings.outputDir if provided, otherwise fall back to rootPath/app
424
+ const outputPath = settings.outputDir
425
+ ? `${settings.outputDir}/routes.tsx`
426
+ : `${options.rootPath}/app/routes.tsx`;
427
+ settings.layoutImport || `import { DashboardLayout } from '../src/layouts';`;
428
+ settings.layoutComponent || 'DashboardLayout';
429
+ // Collect components and menu items from generated wrappers
430
+ const components = new Map();
431
+ const menuItems = [];
432
+ const icons = new Set();
433
+ function processRoute(route, parentPath = '') {
434
+ // Use the absolute path from route.path for component lookups
435
+ const fullPath = route.path || '';
436
+ if (route.componentPath && route.hasComponent) {
437
+ const suffix = getHash(route.path || '/');
438
+ // In SPA mode, use spaComponentPath if available, otherwise fall back to componentPath
439
+ const effectiveComponentPath = route.spaComponentPath || route.componentPath;
440
+ const componentBaseName = effectiveComponentPath.split('/').pop()?.replace('.js', '') || 'Component';
441
+ const wrapperFileName = `Wrapped${componentBaseName}-${suffix}.tsx`;
442
+ const componentName = generateWrapperComponentName(componentBaseName, suffix);
443
+ // Store with absolute path for component lookup
444
+ components.set(fullPath, {
445
+ wrapperPath: `./${wrapperFileName}`,
446
+ componentName,
447
+ isLayoutComponent: route.isLayoutComponent,
448
+ });
449
+ if (!route.hideInMenu) {
450
+ menuItems.push({
451
+ key: route.key,
452
+ name: route.name,
453
+ path: fullPath,
454
+ tab: route.tab || route.name,
455
+ icon: route.icon,
456
+ priority: route.priority || 0,
457
+ });
458
+ }
459
+ if (route.icon) {
460
+ if (typeof route.icon === 'string')
461
+ icons.add(route.icon);
462
+ else if (route.icon?.name)
463
+ icons.add(route.icon.name);
464
+ }
465
+ }
466
+ if (route.routes) {
467
+ route.routes.forEach((childRoute) => processRoute(childRoute, fullPath));
468
+ }
469
+ }
470
+ jsonRoute.forEach((route) => processRoute(route));
471
+ // Use the collected routeConfigItems from defineRoute instead of menuItems
472
+ routeConfigItems.sort((a, b) => (b.priority || 0) - (a.priority || 0));
473
+ const routeConfig = { routes: routeConfigItems };
474
+ generateRoutesFile.writeClientRoutesFile(outputPath, components, routeConfig, icons, jsonRoute);
475
+ }
476
+ }
477
+ /**
478
+ * Generates routes-config.json file for menu generation.
479
+ * This file is used by both SPA and SSR modes to build navigation menus.
480
+ * Preserves the route hierarchy exactly as provided by getSortedRoutes.
481
+ *
482
+ * @param jsonRoute - The sorted routes configuration from getSortedRoutes
483
+ * @param outputDir - The directory where routes-config.json will be written
484
+ */
485
+ function generateRoutesConfigJson(jsonRoute, outputDir) {
486
+ /**
487
+ * Recursively cleans route objects, keeping only menu-relevant fields
488
+ * and preserving the nested routes hierarchy.
489
+ */
490
+ function cleanRoute(route) {
491
+ // Skip routes without a component
492
+ if (!route.componentPath || !route.hasComponent) {
493
+ return null;
494
+ }
495
+ const cleaned = {
496
+ key: route.key,
497
+ name: route.name,
498
+ path: route.path,
499
+ priority: route.priority || 0,
500
+ hideInMenu: route.hideInMenu || false,
501
+ };
502
+ // Include optional fields only if they exist
503
+ if (route.tab)
504
+ cleaned.tab = route.tab;
505
+ if (route.icon)
506
+ cleaned.icon = route.icon;
507
+ if (route.componentPath)
508
+ cleaned.componentPath = route.componentPath;
509
+ if (route.index)
510
+ cleaned.index = route.index;
511
+ // Recursively process child routes, preserving hierarchy
512
+ if (route.routes && Array.isArray(route.routes) && route.routes.length > 0) {
513
+ const cleanedChildren = route.routes.map(cleanRoute).filter(Boolean);
514
+ if (cleanedChildren.length > 0) {
515
+ cleaned.routes = cleanedChildren;
516
+ }
517
+ }
518
+ return cleaned;
519
+ }
520
+ // Process all routes, preserving hierarchy
521
+ const cleanedRoutes = jsonRoute.map(cleanRoute).filter(Boolean);
522
+ const config = {
523
+ routes: cleanedRoutes,
524
+ generated: new Date().toISOString(),
525
+ };
526
+ // Ensure output directory exists
527
+ if (!fs.existsSync(outputDir)) {
528
+ fs.mkdirSync(outputDir, { recursive: true });
529
+ }
530
+ const configPath = `${outputDir}/routes-config.json`;
531
+ fs.writeFileSync(configPath, JSON.stringify(config, null, 2), 'utf8');
532
+ console.log(`[generateRoutesConfigJson] Generated routes-config.json at ${configPath}`);
533
+ }exports.defineRoutesConfig=defineRoutesConfig;exports.generateWrapperComponentName=generateWrapperComponentName;exports.getHash=getHash;exports.loadRoutesConfig=loadRoutesConfig;exports.resolvePathsUsingPackages=resolvePathsUsingPackages;//# sourceMappingURL=json-wrappers.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"json-wrappers.cjs","sources":["../../src/vite-wrappers/json-wrappers.ts"],"sourcesContent":[null],"names":["createHash","getRootPath","isArray","mergeWith","getSortedRoutes","dialogWrapperUtility","getComponentReplacementPath","wrapRouteComponent","writeDialogsSwitch","writeIconsSwitch"],"mappings":"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"}
1
+ {"version":3,"file":"json-wrappers.cjs","sources":["../../src/vite-wrappers/json-wrappers.ts"],"sourcesContent":[null],"names":["createHash","getRootPath","isArray","mergeWith","getSortedRoutes","dialogWrapperUtility","getComponentReplacementPath","wrapRouteComponent","writeDialogsSwitch","writeIconsSwitch","writeClientRoutesFile"],"mappings":"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"}
@@ -7,6 +7,15 @@
7
7
  * @returns A substring of the generated SHA256 hash.
8
8
  */
9
9
  export declare const getHash: (source: string, maxLength?: number) => string;
10
+ /**
11
+ * Generates a standardized component name from route information.
12
+ * This ensures consistency between wrapper file exports and route imports.
13
+ *
14
+ * @param componentBaseName - The base name extracted from the component path
15
+ * @param suffix - The hash suffix for uniqueness
16
+ * @returns The standardized component name
17
+ */
18
+ export declare const generateWrapperComponentName: (componentBaseName: string, suffix: string) => string;
10
19
  /**
11
20
  * Resolves the directories containing files from specified packages.
12
21
  * Searches for a specific file in the node_modules directories of the provided packages.