@vercel/microfrontends 2.2.0 → 2.2.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.
@@ -187,6 +187,28 @@ import { readFileSync } from "node:fs";
187
187
  import { parse } from "jsonc-parser";
188
188
  import fg from "fast-glob";
189
189
 
190
+ // src/bin/logger.ts
191
+ function debug(...args) {
192
+ if (process.env.MFE_DEBUG) {
193
+ console.log(...args);
194
+ }
195
+ }
196
+ function info(...args) {
197
+ console.log(...args);
198
+ }
199
+ function warn(...args) {
200
+ console.warn(...args);
201
+ }
202
+ function error(...args) {
203
+ console.error(...args);
204
+ }
205
+ var logger = {
206
+ debug,
207
+ info,
208
+ warn,
209
+ error
210
+ };
211
+
190
212
  // src/config/microfrontends/utils/get-config-file-name.ts
191
213
  var DEFAULT_CONFIGURATION_FILENAMES = [
192
214
  "microfrontends.json",
@@ -216,6 +238,10 @@ function findPackageWithMicrofrontendsConfig({
216
238
  customConfigFilename
217
239
  }) {
218
240
  const applicationName = applicationContext.name;
241
+ logger.debug(
242
+ "[MFE Config] Searching repository for configs containing application:",
243
+ applicationName
244
+ );
219
245
  try {
220
246
  const microfrontendsJsonPaths = fg.globSync(
221
247
  `**/{${getPossibleConfigurationFilenames({ customConfigFilename }).join(",")}}`,
@@ -227,6 +253,11 @@ function findPackageWithMicrofrontendsConfig({
227
253
  ignore: ["**/node_modules/**", "**/.git/**"]
228
254
  }
229
255
  );
256
+ logger.debug(
257
+ "[MFE Config] Found",
258
+ microfrontendsJsonPaths.length,
259
+ "config file(s) in repository"
260
+ );
230
261
  const matchingPaths = [];
231
262
  for (const microfrontendsJsonPath of microfrontendsJsonPaths) {
232
263
  try {
@@ -236,12 +267,20 @@ function findPackageWithMicrofrontendsConfig({
236
267
  );
237
268
  const microfrontendsJson = parse(microfrontendsJsonContent);
238
269
  if (microfrontendsJson.applications[applicationName]) {
270
+ logger.debug(
271
+ "[MFE Config] Found application in config:",
272
+ microfrontendsJsonPath
273
+ );
239
274
  matchingPaths.push(microfrontendsJsonPath);
240
275
  } else {
241
276
  for (const [_, app] of Object.entries(
242
277
  microfrontendsJson.applications
243
278
  )) {
244
279
  if (app.packageName === applicationName) {
280
+ logger.debug(
281
+ "[MFE Config] Found application via packageName in config:",
282
+ microfrontendsJsonPath
283
+ );
245
284
  matchingPaths.push(microfrontendsJsonPath);
246
285
  }
247
286
  }
@@ -249,6 +288,10 @@ function findPackageWithMicrofrontendsConfig({
249
288
  } catch (error2) {
250
289
  }
251
290
  }
291
+ logger.debug(
292
+ "[MFE Config] Total matching config files:",
293
+ matchingPaths.length
294
+ );
252
295
  if (matchingPaths.length > 1) {
253
296
  throw new MicrofrontendError(
254
297
  `Found multiple \`microfrontends.json\` files in the repository referencing the application "${applicationName}", but only one is allowed.
@@ -308,30 +351,6 @@ function inferMicrofrontendsLocation(opts) {
308
351
  // src/config/microfrontends/utils/is-monorepo.ts
309
352
  import fs2 from "node:fs";
310
353
  import path2 from "node:path";
311
-
312
- // src/bin/logger.ts
313
- function debug(...args) {
314
- if (process.env.MFE_DEBUG) {
315
- console.log(...args);
316
- }
317
- }
318
- function info(...args) {
319
- console.log(...args);
320
- }
321
- function warn(...args) {
322
- console.warn(...args);
323
- }
324
- function error(...args) {
325
- console.error(...args);
326
- }
327
- var logger = {
328
- debug,
329
- info,
330
- warn,
331
- error
332
- };
333
-
334
- // src/config/microfrontends/utils/is-monorepo.ts
335
354
  function isMonorepo({
336
355
  repositoryRoot
337
356
  }) {
@@ -1071,15 +1090,18 @@ import fs5 from "node:fs";
1071
1090
  import path4 from "node:path";
1072
1091
  function getApplicationContext(opts) {
1073
1092
  if (opts?.appName) {
1093
+ logger.debug("[MFE Config] Application name from appName parameter:", opts.appName);
1074
1094
  return { name: opts.appName };
1075
1095
  }
1076
1096
  if (process.env.VERCEL_PROJECT_NAME) {
1097
+ logger.debug("[MFE Config] Application name from VERCEL_PROJECT_NAME:", process.env.VERCEL_PROJECT_NAME);
1077
1098
  return {
1078
1099
  name: process.env.VERCEL_PROJECT_NAME,
1079
1100
  projectName: process.env.VERCEL_PROJECT_NAME
1080
1101
  };
1081
1102
  }
1082
1103
  if (process.env.NX_TASK_TARGET_PROJECT) {
1104
+ logger.debug("[MFE Config] Application name from NX_TASK_TARGET_PROJECT:", process.env.NX_TASK_TARGET_PROJECT);
1083
1105
  return {
1084
1106
  name: process.env.NX_TASK_TARGET_PROJECT,
1085
1107
  packageJsonName: process.env.NX_TASK_TARGET_PROJECT
@@ -1092,6 +1114,7 @@ function getApplicationContext(opts) {
1092
1114
  );
1093
1115
  const projectJson = JSON.parse(vercelProjectJsonPath);
1094
1116
  if (projectJson.projectName) {
1117
+ logger.debug("[MFE Config] Application name from .vercel/project.json:", projectJson.projectName);
1095
1118
  return {
1096
1119
  name: projectJson.projectName,
1097
1120
  projectName: projectJson.projectName
@@ -1115,6 +1138,7 @@ function getApplicationContext(opts) {
1115
1138
  }
1116
1139
  );
1117
1140
  }
1141
+ logger.debug("[MFE Config] Application name from package.json:", packageJson.name);
1118
1142
  return { name: packageJson.name, packageJsonName: packageJson.name };
1119
1143
  } catch (err) {
1120
1144
  throw MicrofrontendError.handle(err, {
@@ -1486,7 +1510,13 @@ var MicrofrontendsServer = class {
1486
1510
  filePath,
1487
1511
  cookies
1488
1512
  } = {}) {
1513
+ logger.debug("[MFE Config] Starting config inference", {
1514
+ appName,
1515
+ directory: directory || process.cwd(),
1516
+ filePath
1517
+ });
1489
1518
  if (filePath) {
1519
+ logger.debug("[MFE Config] Using explicit filePath:", filePath);
1490
1520
  return MicrofrontendsServer.fromFile({
1491
1521
  filePath,
1492
1522
  cookies
@@ -1494,16 +1524,25 @@ var MicrofrontendsServer = class {
1494
1524
  }
1495
1525
  try {
1496
1526
  const packageRoot = findPackageRoot(directory);
1527
+ logger.debug("[MFE Config] Package root:", packageRoot);
1497
1528
  const applicationContext = getApplicationContext({
1498
1529
  appName,
1499
1530
  packageRoot
1500
1531
  });
1532
+ logger.debug("[MFE Config] Application context:", applicationContext);
1501
1533
  const customConfigFilename = process.env.VC_MICROFRONTENDS_CONFIG_FILE_NAME;
1534
+ if (customConfigFilename) {
1535
+ logger.debug(
1536
+ "[MFE Config] Custom config filename from VC_MICROFRONTENDS_CONFIG_FILE_NAME:",
1537
+ customConfigFilename
1538
+ );
1539
+ }
1502
1540
  const maybeConfig = findConfig({
1503
1541
  dir: packageRoot,
1504
1542
  customConfigFilename
1505
1543
  });
1506
1544
  if (maybeConfig) {
1545
+ logger.debug("[MFE Config] Config found at package root:", maybeConfig);
1507
1546
  return MicrofrontendsServer.fromFile({
1508
1547
  filePath: maybeConfig,
1509
1548
  cookies
@@ -1511,42 +1550,78 @@ var MicrofrontendsServer = class {
1511
1550
  }
1512
1551
  const repositoryRoot = findRepositoryRoot();
1513
1552
  const isMonorepo2 = isMonorepo({ repositoryRoot });
1553
+ logger.debug(
1554
+ "[MFE Config] Repository root:",
1555
+ repositoryRoot,
1556
+ "Is monorepo:",
1557
+ isMonorepo2
1558
+ );
1514
1559
  const configFromEnv = process.env.VC_MICROFRONTENDS_CONFIG;
1515
1560
  if (typeof configFromEnv === "string") {
1561
+ logger.debug(
1562
+ "[MFE Config] Checking VC_MICROFRONTENDS_CONFIG:",
1563
+ configFromEnv
1564
+ );
1516
1565
  const maybeConfigFromEnv = resolve(packageRoot, configFromEnv);
1517
1566
  if (maybeConfigFromEnv) {
1567
+ logger.debug(
1568
+ "[MFE Config] Config loaded from VC_MICROFRONTENDS_CONFIG:",
1569
+ maybeConfigFromEnv
1570
+ );
1518
1571
  return MicrofrontendsServer.fromFile({
1519
1572
  filePath: maybeConfigFromEnv,
1520
1573
  cookies
1521
1574
  });
1522
1575
  }
1523
1576
  } else {
1577
+ const vercelDir = join2(packageRoot, ".vercel");
1578
+ logger.debug(
1579
+ "[MFE Config] Searching for config in .vercel directory:",
1580
+ vercelDir
1581
+ );
1524
1582
  const maybeConfigFromVercel = findConfig({
1525
- dir: join2(packageRoot, ".vercel"),
1583
+ dir: vercelDir,
1526
1584
  customConfigFilename
1527
1585
  });
1528
1586
  if (maybeConfigFromVercel) {
1587
+ logger.debug(
1588
+ "[MFE Config] Config found in .vercel directory:",
1589
+ maybeConfigFromVercel
1590
+ );
1529
1591
  return MicrofrontendsServer.fromFile({
1530
1592
  filePath: maybeConfigFromVercel,
1531
1593
  cookies
1532
1594
  });
1533
1595
  }
1534
1596
  if (isMonorepo2) {
1597
+ logger.debug(
1598
+ "[MFE Config] Inferring microfrontends location in monorepo for application:",
1599
+ applicationContext.name
1600
+ );
1535
1601
  const defaultPackage = inferMicrofrontendsLocation({
1536
1602
  repositoryRoot,
1537
1603
  applicationContext,
1538
1604
  customConfigFilename
1539
1605
  });
1606
+ logger.debug(
1607
+ "[MFE Config] Inferred package location:",
1608
+ defaultPackage
1609
+ );
1540
1610
  const maybeConfigFromDefault = findConfig({
1541
1611
  dir: defaultPackage,
1542
1612
  customConfigFilename
1543
1613
  });
1544
1614
  if (maybeConfigFromDefault) {
1615
+ logger.debug(
1616
+ "[MFE Config] Config found in inferred package:",
1617
+ maybeConfigFromDefault
1618
+ );
1545
1619
  return MicrofrontendsServer.fromFile({
1546
1620
  filePath: maybeConfigFromDefault,
1547
1621
  cookies
1548
1622
  });
1549
1623
  }
1624
+ logger.debug("[MFE Config] No config found in inferred package");
1550
1625
  }
1551
1626
  }
1552
1627
  throw new MicrofrontendError(
@@ -1572,8 +1647,13 @@ var MicrofrontendsServer = class {
1572
1647
  cookies
1573
1648
  }) {
1574
1649
  try {
1650
+ logger.debug("[MFE Config] Reading config from file:", filePath);
1575
1651
  const configJson = fs6.readFileSync(filePath, "utf-8");
1576
1652
  const config = MicrofrontendsServer.validate(configJson);
1653
+ logger.debug(
1654
+ "[MFE Config] Config loaded with applications:",
1655
+ Object.keys(config.applications)
1656
+ );
1577
1657
  return new MicrofrontendsServer({
1578
1658
  config,
1579
1659
  overrides: cookies ? parseOverrides(cookies) : void 0