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