@mercurjs/dashboard-sdk 2.0.0-canary.71 → 2.0.0-canary.73

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.cjs CHANGED
@@ -257,7 +257,7 @@ function buildRouteTree(results) {
257
257
  }
258
258
  return Array.from(routeMap.values());
259
259
  }
260
- function generateRoutes({ srcDir, pluginDirs }) {
260
+ function generateRoutes({ srcDir, pluginExtensions }) {
261
261
  const pagesDir = import_path.default.join(srcDir, "pages");
262
262
  let index = 0;
263
263
  const results = [];
@@ -268,25 +268,27 @@ function generateRoutes({ srcDir, pluginDirs }) {
268
268
  index++;
269
269
  }
270
270
  }
271
- for (const pluginDir of pluginDirs) {
272
- for (const file of crawlPages(pluginDir)) {
273
- const result = parseFile(file, pluginDir, index);
274
- if (result) {
275
- results.push(result);
276
- index++;
277
- }
278
- }
279
- }
280
- if (results.length === 0) {
271
+ const pluginImports = pluginExtensions.map(
272
+ (ext, i) => `import * as __pluginRaw${i} from "${normalizePath(ext)}"`
273
+ );
274
+ const pluginUnwraps = pluginExtensions.map(
275
+ (_, i) => `const __plugin${i} = __pluginRaw${i}.default ?? __pluginRaw${i}`
276
+ );
277
+ const pluginSpreads = pluginExtensions.map(
278
+ (_, i) => ` ...(__plugin${i}.routeModule?.routes ?? [])`
279
+ );
280
+ const routeTree = buildRouteTree(results);
281
+ const appImports = routeTree.flatMap((r) => r.imports);
282
+ const appRoutes = routeTree.map((r) => formatRoute(r.route));
283
+ const allImports = [...appImports, ...pluginImports, ...pluginUnwraps];
284
+ const allRoutes = [...appRoutes, ...pluginSpreads];
285
+ if (allImports.length === 0 && allRoutes.length === 0) {
281
286
  return `export const customRoutes = []`;
282
287
  }
283
- const routeTree = buildRouteTree(results);
284
- const imports = routeTree.flatMap((result) => result.imports);
285
- const routes = routeTree.map((result) => formatRoute(result.route));
286
- return `${imports.join("\n")}
288
+ return `${allImports.join("\n")}
287
289
 
288
290
  export const customRoutes = [
289
- ${routes.join(",\n")}
291
+ ${allRoutes.join(",\n")}
290
292
  ]`;
291
293
  }
292
294
 
@@ -394,7 +396,7 @@ function parseFile2(file, pagesDir, index) {
394
396
  menuItem: generateMenuItem(config, file, pagesDir, index)
395
397
  };
396
398
  }
397
- function generateMenuItems({ srcDir, pluginDirs }) {
399
+ function generateMenuItems({ srcDir, pluginExtensions }) {
398
400
  const pagesDir = import_path2.default.join(srcDir, "pages");
399
401
  let index = 0;
400
402
  const results = [];
@@ -405,25 +407,27 @@ function generateMenuItems({ srcDir, pluginDirs }) {
405
407
  index++;
406
408
  }
407
409
  }
408
- for (const pluginDir of pluginDirs) {
409
- for (const file of crawlPages2(pluginDir)) {
410
- const result = parseFile2(file, pluginDir, index);
411
- if (result) {
412
- results.push(result);
413
- index++;
414
- }
415
- }
416
- }
417
- if (results.length === 0) {
410
+ const pluginImports = pluginExtensions.map(
411
+ (ext, i) => `import * as __pluginRaw${i} from "${normalizePath(ext)}"`
412
+ );
413
+ const pluginUnwraps = pluginExtensions.map(
414
+ (_, i) => `const __plugin${i} = __pluginRaw${i}.default ?? __pluginRaw${i}`
415
+ );
416
+ const pluginSpreads = pluginExtensions.map(
417
+ (_, i) => ` ...(__plugin${i}.menuItemModule?.menuItems ?? [])`
418
+ );
419
+ const appImports = results.map((r) => r.import);
420
+ const appMenuItems = results.map((r) => formatMenuItem(r.menuItem));
421
+ const allImports = [...appImports, ...pluginImports, ...pluginUnwraps];
422
+ const allMenuItems = [...appMenuItems, ...pluginSpreads];
423
+ if (allImports.length === 0 && allMenuItems.length === 0) {
418
424
  return `export default { menuItems: [] }`;
419
425
  }
420
- const imports = results.map((r) => r.import);
421
- const menuItems = results.map((r) => formatMenuItem(r.menuItem));
422
- return `${imports.join("\n")}
426
+ return `${allImports.join("\n")}
423
427
 
424
428
  export default {
425
429
  menuItems: [
426
- ${menuItems.join(",\n")}
430
+ ${allMenuItems.join(",\n")}
427
431
  ]
428
432
  }`;
429
433
  }
@@ -552,9 +556,9 @@ function resolvePluginRoot(resolve, configDir, nodeModulesRoot) {
552
556
  return null;
553
557
  }
554
558
  }
555
- function resolvePluginDirs(plugins, configDir) {
559
+ function resolvePluginExtensions(plugins, configDir) {
556
560
  const nodeModulesRoot = findNodeModulesRoot(configDir);
557
- const dirs = [];
561
+ const extensions = [];
558
562
  const appTypes = ["admin", "vendor"];
559
563
  for (const plugin of plugins) {
560
564
  const resolve = typeof plugin === "string" ? plugin : plugin?.resolve;
@@ -562,13 +566,13 @@ function resolvePluginDirs(plugins, configDir) {
562
566
  const pluginRoot = resolvePluginRoot(resolve, configDir, nodeModulesRoot);
563
567
  if (!pluginRoot) continue;
564
568
  for (const appType of appTypes) {
565
- const extDir = import_path5.default.join(pluginRoot, ".medusa/server/src", appType);
566
- if (import_fs4.default.existsSync(extDir) && import_fs4.default.statSync(extDir).isDirectory()) {
567
- dirs.push(extDir);
569
+ const extFile = import_path5.default.join(pluginRoot, ".medusa/server/src", appType, "index.js");
570
+ if (import_fs4.default.existsSync(extFile)) {
571
+ extensions.push(extFile);
568
572
  }
569
573
  }
570
574
  }
571
- return dirs;
575
+ return extensions;
572
576
  }
573
577
  async function loadMedusaConfig(medusaConfigPath, root) {
574
578
  try {
@@ -587,10 +591,10 @@ async function loadMedusaConfig(medusaConfigPath, root) {
587
591
  }
588
592
  }
589
593
  const plugins = medusaConfig?.plugins ?? [];
590
- const pluginDirs = resolvePluginDirs(plugins, configDir);
591
- return { base, pluginDirs };
594
+ const pluginExtensions = resolvePluginExtensions(plugins, configDir);
595
+ return { base, pluginExtensions };
592
596
  } catch {
593
- return { pluginDirs: [] };
597
+ return { pluginExtensions: [] };
594
598
  }
595
599
  }
596
600
  function mercurDashboardPlugin(pluginConfig) {
@@ -601,7 +605,7 @@ function mercurDashboardPlugin(pluginConfig) {
601
605
  async config(viteConfig) {
602
606
  root = viteConfig.root || process.cwd();
603
607
  const medusaConfigPath = import_path5.default.resolve(root, pluginConfig.medusaConfigPath);
604
- const { base, pluginDirs } = await loadMedusaConfig(medusaConfigPath, root);
608
+ const { base, pluginExtensions } = await loadMedusaConfig(medusaConfigPath, root);
605
609
  const srcDir = import_path5.default.join(root, "src");
606
610
  const backendUrl = pluginConfig.backendUrl ?? "http://localhost:9000";
607
611
  config = {
@@ -610,7 +614,7 @@ function mercurDashboardPlugin(pluginConfig) {
610
614
  base,
611
615
  root,
612
616
  srcDir,
613
- pluginDirs
617
+ pluginExtensions
614
618
  };
615
619
  return {
616
620
  base: config.base,
@@ -619,6 +623,7 @@ function mercurDashboardPlugin(pluginConfig) {
619
623
  "__BASE__": JSON.stringify(config.base || "/")
620
624
  },
621
625
  optimizeDeps: {
626
+ include: pluginExtensions,
622
627
  exclude: ["virtual:mercur/config", "virtual:mercur/routes", "virtual:mercur/components", "virtual:mercur/menu-items", "virtual:mercur/i18n"]
623
628
  }
624
629
  };
package/dist/index.d.cts CHANGED
@@ -21,7 +21,7 @@ interface BuiltMercurConfig extends MercurConfig {
21
21
  base?: string;
22
22
  root: string;
23
23
  srcDir: string;
24
- pluginDirs: string[];
24
+ pluginExtensions: string[];
25
25
  }
26
26
  type RouteConfig = {
27
27
  label: string;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mercurjs/dashboard-sdk",
3
- "version": "2.0.0-canary.71",
3
+ "version": "2.0.0-canary.73",
4
4
  "repository": {
5
5
  "type": "git",
6
6
  "url": "https://github.com/mercurjs/mercur",