beachball 2.63.1 → 2.64.0

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 (58) hide show
  1. package/README.md +43 -24
  2. package/lib/changefile/getChangedPackages.d.ts +11 -1
  3. package/lib/changefile/getChangedPackages.d.ts.map +1 -1
  4. package/lib/changefile/getChangedPackages.js +8 -2
  5. package/lib/changefile/getChangedPackages.js.map +1 -1
  6. package/lib/changefile/promptForChange.d.ts.map +1 -1
  7. package/lib/changefile/promptForChange.js +23 -0
  8. package/lib/changefile/promptForChange.js.map +1 -1
  9. package/lib/cli.js +17 -0
  10. package/lib/cli.js.map +1 -1
  11. package/lib/commands/configGet.d.ts +11 -0
  12. package/lib/commands/configGet.d.ts.map +1 -0
  13. package/lib/commands/configGet.js +196 -0
  14. package/lib/commands/configGet.js.map +1 -0
  15. package/lib/commands/configList.d.ts +8 -0
  16. package/lib/commands/configList.d.ts.map +1 -0
  17. package/lib/commands/configList.js +35 -0
  18. package/lib/commands/configList.js.map +1 -0
  19. package/lib/help.d.ts.map +1 -1
  20. package/lib/help.js +12 -1
  21. package/lib/help.js.map +1 -1
  22. package/lib/logging/formatValue.d.ts +17 -0
  23. package/lib/logging/formatValue.d.ts.map +1 -0
  24. package/lib/logging/formatValue.js +66 -0
  25. package/lib/logging/formatValue.js.map +1 -0
  26. package/lib/monorepo/getPackageGraph.d.ts +24 -4
  27. package/lib/monorepo/getPackageGraph.d.ts.map +1 -1
  28. package/lib/monorepo/getPackageGraph.js +50 -11
  29. package/lib/monorepo/getPackageGraph.js.map +1 -1
  30. package/lib/options/getCliOptions.d.ts.map +1 -1
  31. package/lib/options/getCliOptions.js +9 -2
  32. package/lib/options/getCliOptions.js.map +1 -1
  33. package/lib/packageManager/packPackage.d.ts +11 -5
  34. package/lib/packageManager/packPackage.d.ts.map +1 -1
  35. package/lib/packageManager/packPackage.js +27 -5
  36. package/lib/packageManager/packPackage.js.map +1 -1
  37. package/lib/publish/getPackageGraphLayers.d.ts +30 -0
  38. package/lib/publish/getPackageGraphLayers.d.ts.map +1 -0
  39. package/lib/publish/getPackageGraphLayers.js +99 -0
  40. package/lib/publish/getPackageGraphLayers.js.map +1 -0
  41. package/lib/publish/getPackagesToPublish.d.ts +0 -2
  42. package/lib/publish/getPackagesToPublish.d.ts.map +1 -1
  43. package/lib/publish/getPackagesToPublish.js +1 -5
  44. package/lib/publish/getPackagesToPublish.js.map +1 -1
  45. package/lib/publish/publishToRegistry.d.ts.map +1 -1
  46. package/lib/publish/publishToRegistry.js +14 -3
  47. package/lib/publish/publishToRegistry.js.map +1 -1
  48. package/lib/types/BeachballOptions.d.ts +13 -0
  49. package/lib/types/BeachballOptions.d.ts.map +1 -1
  50. package/package.json +3 -3
  51. package/lib/monorepo/getPackageDependencyGraph.d.ts +0 -7
  52. package/lib/monorepo/getPackageDependencyGraph.d.ts.map +0 -1
  53. package/lib/monorepo/getPackageDependencyGraph.js +0 -34
  54. package/lib/monorepo/getPackageDependencyGraph.js.map +0 -1
  55. package/lib/publish/toposortPackages.d.ts +0 -9
  56. package/lib/publish/toposortPackages.d.ts.map +0 -1
  57. package/lib/publish/toposortPackages.js +0 -25
  58. package/lib/publish/toposortPackages.js.map +0 -1
package/lib/help.js CHANGED
@@ -32,8 +32,10 @@ Commands:
32
32
  pushes changelogs back into the default branch
33
33
  sync - synchronize published versions of packages from the registry with
34
34
  local package.json versions
35
+ config get <name> - get the value of a config setting (with any overrides)
36
+ config list - list all config settings (with any overrides)
35
37
 
36
- Options supported by all commands:
38
+ Options supported by all commands except 'config':
37
39
 
38
40
  --branch, -b - target branch from remote (default: git config init.defaultBranch)
39
41
  --change-dir - name of the directory to store change files (default: change)
@@ -88,6 +90,15 @@ Options supported by all commands:
88
90
  --tag, -t - sync to the specified npm dist-tag (default: 'latest')
89
91
  --force - use the version from the registry even if it's older than local
90
92
 
93
+ 'config get <name>' options:
94
+
95
+ --package, -p - get the effective value for specific package(s)
96
+ (can be specified multiple times)
97
+
98
+ 'config list' options:
99
+
100
+ (no additional options)
101
+
91
102
  `);
92
103
  }
93
104
  exports.showHelp = showHelp;
package/lib/help.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"help.js","sourceRoot":"","sources":["../src/help.ts"],"names":[],"mappings":";;;;;;AAAA,gDAAwB;AAExB,gDAA6C;AAE7C,SAAgB,WAAW;IACzB,MAAM,WAAW,GAAG,IAAA,mBAAQ,EAAc,cAAI,CAAC,OAAO,CAAC,SAAS,EAAE,iBAAiB,CAAC,CAAC,CAAC;IACtF,OAAO,CAAC,GAAG,CAAC,cAAc,WAAW,CAAC,OAAO,sCAAsC,CAAC,CAAC;AACvF,CAAC;AAHD,kCAGC;AAED,SAAgB,QAAQ;IACtB,WAAW,EAAE,CAAC;IAEd,OAAO,CAAC,GAAG,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA2Eb,CAAC,CAAC;AACH,CAAC;AA/ED,4BA+EC"}
1
+ {"version":3,"file":"help.js","sourceRoot":"","sources":["../src/help.ts"],"names":[],"mappings":";;;;;;AAAA,gDAAwB;AAExB,gDAA6C;AAE7C,SAAgB,WAAW;IACzB,MAAM,WAAW,GAAG,IAAA,mBAAQ,EAAc,cAAI,CAAC,OAAO,CAAC,SAAS,EAAE,iBAAiB,CAAC,CAAC,CAAC;IACtF,OAAO,CAAC,GAAG,CAAC,cAAc,WAAW,CAAC,OAAO,sCAAsC,CAAC,CAAC;AACvF,CAAC;AAHD,kCAGC;AAED,SAAgB,QAAQ;IACtB,WAAW,EAAE,CAAC;IAEd,OAAO,CAAC,GAAG,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAsFb,CAAC,CAAC;AACH,CAAC;AA1FD,4BA0FC"}
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Format a value for display. Uses YAML-like formatting (though it may not be valid YAML):
3
+ * - Objects use `key: value` on separate lines, no braces, no quotes around keys
4
+ * - Arrays use `[val, val]` on a single line if they fit within `maxWidth`,
5
+ * otherwise use `- item` list syntax
6
+ * - Strings are quoted, other primitives are printed as-is
7
+ * - Functions are displayed as `(Function)`
8
+ *
9
+ * The returned string is indented to the given `level` (each level = 2 spaces).
10
+ */
11
+ export declare function formatValue(value: unknown, options?: {
12
+ /** Current nesting level (each level = 2 spaces of indentation) */
13
+ level?: number;
14
+ /** Character width limit before arrays go to multiple lines (default 80) */
15
+ maxWidth?: number;
16
+ }): string;
17
+ //# sourceMappingURL=formatValue.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"formatValue.d.ts","sourceRoot":"","sources":["../../src/logging/formatValue.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,wBAAgB,WAAW,CACzB,KAAK,EAAE,OAAO,EACd,OAAO,CAAC,EAAE;IACR,mEAAmE;IACnE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,4EAA4E;IAC5E,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,GACA,MAAM,CAyDR"}
@@ -0,0 +1,66 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.formatValue = void 0;
4
+ /**
5
+ * Format a value for display. Uses YAML-like formatting (though it may not be valid YAML):
6
+ * - Objects use `key: value` on separate lines, no braces, no quotes around keys
7
+ * - Arrays use `[val, val]` on a single line if they fit within `maxWidth`,
8
+ * otherwise use `- item` list syntax
9
+ * - Strings are quoted, other primitives are printed as-is
10
+ * - Functions are displayed as `(Function)`
11
+ *
12
+ * The returned string is indented to the given `level` (each level = 2 spaces).
13
+ */
14
+ function formatValue(value, options) {
15
+ const { level = 0, maxWidth = 80 } = options || {};
16
+ const pad = ' '.repeat(level * 2);
17
+ if (value === undefined)
18
+ return `${pad}undefined`;
19
+ if (typeof value === 'function')
20
+ return `${pad}(Function)`;
21
+ // Leaf values — use JSON.stringify for strings/numbers/booleans
22
+ if (value === null || typeof value !== 'object') {
23
+ return `${pad}${JSON.stringify(value)}`;
24
+ }
25
+ const childLevel = level + 1;
26
+ if (Array.isArray(value)) {
27
+ if (value.length === 0)
28
+ return `${pad}[]`;
29
+ // Items are formatted at level 0 (no padding) since the array handles positioning
30
+ const items = value.map(v => formatValue(v, { level: 0, maxWidth }));
31
+ // Try single-line format first
32
+ // This isn't the most efficient, but it probably doesn't matter in expected usage.
33
+ const singleLine = `[${items.join(', ')}]`;
34
+ if (level * 2 + singleLine.length <= maxWidth && !singleLine.includes('\n')) {
35
+ return `${pad}${singleLine}`;
36
+ }
37
+ // Multi-line: YAML-like list with "- " prefix.
38
+ // Continuation lines are indented by 2 to align with the content after "- ".
39
+ return items.map(item => `${pad}- ${item.replace(/\n/g, `\n${pad} `)}`).join('\n');
40
+ }
41
+ // Make sure it's a plain object
42
+ if (value.constructor && value.constructor.name !== 'Object') {
43
+ return `${pad}(${value.constructor.name})`;
44
+ }
45
+ // Objects: YAML-like key: value on separate lines
46
+ const entries = Object.entries(value);
47
+ if (entries.length === 0)
48
+ return `${pad}{}`;
49
+ return entries
50
+ .map(([k, v]) => {
51
+ const formattedValue = formatValue(v, { level: childLevel, maxWidth });
52
+ const trimmedValue = formattedValue.trimStart();
53
+ // If the value is a longer array or a structured type, place it on the next line (already padded)
54
+ const isStructured = Array.isArray(v)
55
+ ? !trimmedValue.startsWith('[')
56
+ : !!v && typeof v === 'object' && trimmedValue !== '{}';
57
+ if (isStructured) {
58
+ return `${pad}${k}:\n${formattedValue}`;
59
+ }
60
+ // Inline value — strip the child padding since it goes after "key: "
61
+ return `${pad}${k}: ${trimmedValue}`;
62
+ })
63
+ .join('\n');
64
+ }
65
+ exports.formatValue = formatValue;
66
+ //# sourceMappingURL=formatValue.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"formatValue.js","sourceRoot":"","sources":["../../src/logging/formatValue.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,26 @@
1
+ import { PGraph } from 'p-graph';
1
2
  import type { PackageInfo, PackageInfos } from '../types/PackageInfo';
2
- import pGraph from 'p-graph';
3
- type PGraph = ReturnType<typeof pGraph>;
4
- export declare function getPackageGraph(affectedPackages: string[], packageInfos: PackageInfos, runHook: (packageInfo: PackageInfo) => Promise<void>): PGraph;
5
- export {};
3
+ /**
4
+ * Get a PGraph of `affectedPackages` which will run a function in dependency topological order.
5
+ * Note that this version only considers dependencies listed directly in the graph (see comment
6
+ * on `getPackageGraphLayers` for why this might matter).
7
+ * @param affectedPackages Packages to include
8
+ * @param packageInfos All packages in the repo
9
+ * @param runHook Function to run for each package
10
+ * @returns The graph ready to run
11
+ */
12
+ export declare function getPackageGraph(affectedPackages: string[], packageInfos: PackageInfos, runHook: (packageInfo: PackageInfo) => void | Promise<void>): PGraph;
13
+ /**
14
+ * Get the graph of non-dev dependencies within the repo.
15
+ * Dev dependencies can be omitted since they don't impact publishing or installation.
16
+ *
17
+ * @returns Each element is a tuple of `[dependency, dependent]` where `dependent` depends on `dependency`.
18
+ * These are the edges of the dependency graph.
19
+ */
20
+ export declare function _getPackageDependencyGraph(packages: string[], packageInfos: PackageInfos): [string, string][];
21
+ /**
22
+ * Call {@link getPackageDependencies} with consistent options: ignore dev deps,
23
+ * include deps of all other types if included in `packageSet`.
24
+ */
25
+ export declare function getPackageDependenciesWrapper(packageInfo: PackageInfos[string], packageSet: Set<string>): string[];
6
26
  //# sourceMappingURL=getPackageGraph.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"getPackageGraph.d.ts","sourceRoot":"","sources":["../../src/monorepo/getPackageGraph.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACtE,OAAO,MAA8B,MAAM,SAAS,CAAC;AAIrD,KAAK,MAAM,GAAG,UAAU,CAAC,OAAO,MAAM,CAAC,CAAC;AAExC,wBAAgB,eAAe,CAC7B,gBAAgB,EAAE,MAAM,EAAE,EAC1B,YAAY,EAAE,YAAY,EAC1B,OAAO,EAAE,CAAC,WAAW,EAAE,WAAW,KAAK,OAAO,CAAC,IAAI,CAAC,GACnD,MAAM,CAWR"}
1
+ {"version":3,"file":"getPackageGraph.d.ts","sourceRoot":"","sources":["../../src/monorepo/getPackageGraph.ts"],"names":[],"mappings":"AAAA,OAAO,EAAsB,MAAM,EAAE,MAAM,SAAS,CAAC;AAErD,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAEtE;;;;;;;;GAQG;AACH,wBAAgB,eAAe,CAC7B,gBAAgB,EAAE,MAAM,EAAE,EAC1B,YAAY,EAAE,YAAY,EAC1B,OAAO,EAAE,CAAC,WAAW,EAAE,WAAW,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,GAC1D,MAAM,CAUR;AAED;;;;;;GAMG;AACH,wBAAgB,0BAA0B,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE,YAAY,EAAE,YAAY,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAmB7G;AAED;;;GAGG;AACH,wBAAgB,6BAA6B,CAAC,WAAW,EAAE,YAAY,CAAC,MAAM,CAAC,EAAE,UAAU,EAAE,GAAG,CAAC,MAAM,CAAC,GAAG,MAAM,EAAE,CAMlH"}
@@ -1,11 +1,17 @@
1
1
  "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
2
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.getPackageGraph = void 0;
7
- const p_graph_1 = __importDefault(require("p-graph"));
8
- const getPackageDependencyGraph_1 = require("./getPackageDependencyGraph");
3
+ exports.getPackageDependenciesWrapper = exports._getPackageDependencyGraph = exports.getPackageGraph = void 0;
4
+ const p_graph_1 = require("p-graph");
5
+ const workspace_tools_1 = require("workspace-tools");
6
+ /**
7
+ * Get a PGraph of `affectedPackages` which will run a function in dependency topological order.
8
+ * Note that this version only considers dependencies listed directly in the graph (see comment
9
+ * on `getPackageGraphLayers` for why this might matter).
10
+ * @param affectedPackages Packages to include
11
+ * @param packageInfos All packages in the repo
12
+ * @param runHook Function to run for each package
13
+ * @returns The graph ready to run
14
+ */
9
15
  function getPackageGraph(affectedPackages, packageInfos, runHook) {
10
16
  const nodeMap = new Map();
11
17
  for (const packageToBump of affectedPackages) {
@@ -13,12 +19,45 @@ function getPackageGraph(affectedPackages, packageInfos, runHook) {
13
19
  run: async () => await runHook(packageInfos[packageToBump]),
14
20
  });
15
21
  }
16
- const dependencyGraph = (0, getPackageDependencyGraph_1.getPackageDependencyGraph)(affectedPackages, packageInfos);
17
- const filteredDependencyGraph = filterDependencyGraph(dependencyGraph);
18
- return (0, p_graph_1.default)(nodeMap, filteredDependencyGraph);
22
+ const dependencyGraph = _getPackageDependencyGraph(affectedPackages, packageInfos);
23
+ return new p_graph_1.PGraph(nodeMap, dependencyGraph);
19
24
  }
20
25
  exports.getPackageGraph = getPackageGraph;
21
- function filterDependencyGraph(dependencyGraph) {
22
- return dependencyGraph.filter(([dep]) => dep !== undefined);
26
+ /**
27
+ * Get the graph of non-dev dependencies within the repo.
28
+ * Dev dependencies can be omitted since they don't impact publishing or installation.
29
+ *
30
+ * @returns Each element is a tuple of `[dependency, dependent]` where `dependent` depends on `dependency`.
31
+ * These are the edges of the dependency graph.
32
+ */
33
+ function _getPackageDependencyGraph(packages, packageInfos) {
34
+ const packageSet = new Set(packages);
35
+ const dependencyGraph = [];
36
+ for (const pkgName of packageSet) {
37
+ const info = packageInfos[pkgName];
38
+ if (!info) {
39
+ throw new Error(`Package info is missing for ${pkgName}.`);
40
+ }
41
+ const allDeps = getPackageDependenciesWrapper(info, packageSet);
42
+ if (allDeps.length) {
43
+ for (const depPkgName of allDeps) {
44
+ dependencyGraph.push([depPkgName, pkgName]);
45
+ }
46
+ }
47
+ }
48
+ return dependencyGraph;
49
+ }
50
+ exports._getPackageDependencyGraph = _getPackageDependencyGraph;
51
+ /**
52
+ * Call {@link getPackageDependencies} with consistent options: ignore dev deps,
53
+ * include deps of all other types if included in `packageSet`.
54
+ */
55
+ function getPackageDependenciesWrapper(packageInfo, packageSet) {
56
+ return (0, workspace_tools_1.getPackageDependencies)(packageInfo, packageSet, {
57
+ withDevDependencies: false,
58
+ withPeerDependencies: true,
59
+ withOptionalDependencies: true,
60
+ });
23
61
  }
62
+ exports.getPackageDependenciesWrapper = getPackageDependenciesWrapper;
24
63
  //# sourceMappingURL=getPackageGraph.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"getPackageGraph.js","sourceRoot":"","sources":["../../src/monorepo/getPackageGraph.ts"],"names":[],"mappings":";;;;;;AACA,sDAAqD;AACrD,2EAAwE;AAKxE,SAAgB,eAAe,CAC7B,gBAA0B,EAC1B,YAA0B,EAC1B,OAAoD;IAEpD,MAAM,OAAO,GAAkB,IAAI,GAAG,EAAE,CAAC;IACzC,KAAK,MAAM,aAAa,IAAI,gBAAgB,EAAE;QAC5C,OAAO,CAAC,GAAG,CAAC,aAAa,EAAE;YACzB,GAAG,EAAE,KAAK,IAAI,EAAE,CAAC,MAAM,OAAO,CAAC,YAAY,CAAC,aAAa,CAAC,CAAC;SAC5D,CAAC,CAAC;KACJ;IAED,MAAM,eAAe,GAAmC,IAAA,qDAAyB,EAAC,gBAAgB,EAAE,YAAY,CAAC,CAAC;IAClH,MAAM,uBAAuB,GAAG,qBAAqB,CAAC,eAAe,CAAC,CAAC;IACvE,OAAO,IAAA,iBAAM,EAAC,OAAO,EAAE,uBAAuB,CAAC,CAAC;AAClD,CAAC;AAfD,0CAeC;AAED,SAAS,qBAAqB,CAAC,eAA+C;IAC5E,OAAO,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,KAAK,SAAS,CAAuB,CAAC;AACpF,CAAC"}
1
+ {"version":3,"file":"getPackageGraph.js","sourceRoot":"","sources":["../../src/monorepo/getPackageGraph.ts"],"names":[],"mappings":";;;AAAA,qCAAqD;AACrD,qDAAyD;AAGzD;;;;;;;;GAQG;AACH,SAAgB,eAAe,CAC7B,gBAA0B,EAC1B,YAA0B,EAC1B,OAA2D;IAE3D,MAAM,OAAO,GAAkB,IAAI,GAAG,EAAE,CAAC;IACzC,KAAK,MAAM,aAAa,IAAI,gBAAgB,EAAE;QAC5C,OAAO,CAAC,GAAG,CAAC,aAAa,EAAE;YACzB,GAAG,EAAE,KAAK,IAAI,EAAE,CAAC,MAAM,OAAO,CAAC,YAAY,CAAC,aAAa,CAAC,CAAC;SAC5D,CAAC,CAAC;KACJ;IAED,MAAM,eAAe,GAAG,0BAA0B,CAAC,gBAAgB,EAAE,YAAY,CAAC,CAAC;IACnF,OAAO,IAAI,gBAAM,CAAC,OAAO,EAAE,eAAe,CAAC,CAAC;AAC9C,CAAC;AAdD,0CAcC;AAED;;;;;;GAMG;AACH,SAAgB,0BAA0B,CAAC,QAAkB,EAAE,YAA0B;IACvF,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAC;IACrC,MAAM,eAAe,GAAuB,EAAE,CAAC;IAE/C,KAAK,MAAM,OAAO,IAAI,UAAU,EAAE;QAChC,MAAM,IAAI,GAAG,YAAY,CAAC,OAAO,CAAC,CAAC;QACnC,IAAI,CAAC,IAAI,EAAE;YACT,MAAM,IAAI,KAAK,CAAC,+BAA+B,OAAO,GAAG,CAAC,CAAC;SAC5D;QAED,MAAM,OAAO,GAAG,6BAA6B,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;QAChE,IAAI,OAAO,CAAC,MAAM,EAAE;YAClB,KAAK,MAAM,UAAU,IAAI,OAAO,EAAE;gBAChC,eAAe,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC,CAAC;aAC7C;SACF;KACF;IAED,OAAO,eAAe,CAAC;AACzB,CAAC;AAnBD,gEAmBC;AAED;;;GAGG;AACH,SAAgB,6BAA6B,CAAC,WAAiC,EAAE,UAAuB;IACtG,OAAO,IAAA,wCAAsB,EAAC,WAAW,EAAE,UAAU,EAAE;QACrD,mBAAmB,EAAE,KAAK;QAC1B,oBAAoB,EAAE,IAAI;QAC1B,wBAAwB,EAAE,IAAI;KAC/B,CAAC,CAAC;AACL,CAAC;AAND,sEAMC"}
@@ -1 +1 @@
1
- {"version":3,"file":"getCliOptions.d.ts","sourceRoot":"","sources":["../../src/options/getCliOptions.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAc,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAI3E,MAAM,WAAW,WAAW;IAC1B,oFAAoF;IACpF,IAAI,EAAE,MAAM,EAAE,CAAC;IACf;;;;;OAKG;IACH,GAAG,EAAE,MAAM,CAAC;CACb;AAyGD;;GAEG;AACH,wBAAgB,aAAa,CAAC,WAAW,EAAE,WAAW,GAAG,aAAa,CAAC,YAAY,CAAC,CAAC;AACrF,yCAAyC;AACzC,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,aAAa,CAAC,YAAY,CAAC,CAAC"}
1
+ {"version":3,"file":"getCliOptions.d.ts","sourceRoot":"","sources":["../../src/options/getCliOptions.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAc,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAI3E,MAAM,WAAW,WAAW;IAC1B,oFAAoF;IACpF,IAAI,EAAE,MAAM,EAAE,CAAC;IACf;;;;;OAKG;IACH,GAAG,EAAE,MAAM,CAAC;CACb;AA0GD;;GAEG;AACH,wBAAgB,aAAa,CAAC,WAAW,EAAE,WAAW,GAAG,aAAa,CAAC,YAAY,CAAC,CAAC;AACrF,yCAAyC;AACzC,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,aAAa,CAAC,YAAY,CAAC,CAAC"}
@@ -59,7 +59,7 @@ const allKeysOfType = () => (
59
59
  // to the appropriate array above.
60
60
  const knownOptions = allKeysOfType()(...arrayOptions, ...booleanOptions, ...numberOptions, ...stringOptions,
61
61
  // these options are filled in below, not respected from the command line
62
- 'path', 'command');
62
+ 'path', 'command', '_extraPositionalArgs');
63
63
  const parserOptions = {
64
64
  configuration: {
65
65
  'boolean-negation': true,
@@ -115,7 +115,7 @@ function getCliOptions(processOrArgv) {
115
115
  catch {
116
116
  // use the provided cwd
117
117
  }
118
- if (positionalArgs.length > 1) {
118
+ if (positionalArgs.length > 1 && String(positionalArgs[0]) !== 'config') {
119
119
  throw new Error(`Only one positional argument (the command) is allowed. Received: ${positionalArgs.join(' ')}`);
120
120
  }
121
121
  const cliOptions = {
@@ -123,6 +123,9 @@ function getCliOptions(processOrArgv) {
123
123
  command: positionalArgs.length ? String(positionalArgs[0]) : 'change',
124
124
  path: cwd,
125
125
  };
126
+ // Save extra positional args for commands that support subcommands (e.g. 'config get <name>')
127
+ // (yargs-parser doesn't support positional arguments directly)
128
+ const extraPositionalArgs = positionalArgs.length > 1 ? positionalArgs.slice(1).map(String) : undefined;
126
129
  const branchArg = args.branch;
127
130
  if (branchArg) {
128
131
  // TODO: This logic assumes the first segment of any branch name with a slash must be the remote,
@@ -160,6 +163,10 @@ function getCliOptions(processOrArgv) {
160
163
  cliOptions[key] = false;
161
164
  }
162
165
  }
166
+ // Set extra positional args after the validation loop (it's an internal array, not from CLI parsing)
167
+ if (extraPositionalArgs) {
168
+ cliOptions._extraPositionalArgs = extraPositionalArgs;
169
+ }
163
170
  return cliOptions;
164
171
  }
165
172
  exports.getCliOptions = getCliOptions;
@@ -1 +1 @@
1
- {"version":3,"file":"getCliOptions.js","sourceRoot":"","sources":["../../src/options/getCliOptions.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"getCliOptions.js","sourceRoot":"","sources":["../../src/options/getCliOptions.ts"],"names":[],"mappings":"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"}
@@ -2,13 +2,19 @@ import type { PackageInfo } from '../types/PackageInfo';
2
2
  import type { BeachballOptions } from '../types/BeachballOptions';
3
3
  /**
4
4
  * Attempts to pack the package and move the tgz to `options.packPath`.
5
- * The packed filename will be prefixed with a number.
5
+ * Depending on `packInfo.packStyle`, either the filename will be prefixed with a number,
6
+ * or it will be put in a numbered folder.
6
7
  * @returns true if successful, false if not.
7
8
  */
8
9
  export declare function packPackage(packageInfo: PackageInfo, options: Required<Pick<BeachballOptions, 'packToPath'>> & Pick<BeachballOptions, 'verbose'> & {
9
- /** Index of this package in the topologically-sorted list to publish */
10
- index: number;
11
- /** Total number of packages to publish */
12
- total: number;
10
+ packInfo: {
11
+ /** Index of this package in the topologically-sorted list to publish */
12
+ index: number;
13
+ /** Total number of packages to publish */
14
+ total: number;
15
+ } | {
16
+ /** Array of layers of package names returned by `getPackageGraphLayers` */
17
+ layers: string[][];
18
+ };
13
19
  }): Promise<boolean>;
14
20
  //# sourceMappingURL=packPackage.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"packPackage.d.ts","sourceRoot":"","sources":["../../src/packageManager/packPackage.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAIlE;;;;GAIG;AACH,wBAAsB,WAAW,CAC/B,WAAW,EAAE,WAAW,EACxB,OAAO,EAAE,QAAQ,CAAC,IAAI,CAAC,gBAAgB,EAAE,YAAY,CAAC,CAAC,GACrD,IAAI,CAAC,gBAAgB,EAAE,SAAS,CAAC,GAAG;IAClC,wEAAwE;IACxE,KAAK,EAAE,MAAM,CAAC;IACd,0CAA0C;IAC1C,KAAK,EAAE,MAAM,CAAC;CACf,GACF,OAAO,CAAC,OAAO,CAAC,CAmDlB"}
1
+ {"version":3,"file":"packPackage.d.ts","sourceRoot":"","sources":["../../src/packageManager/packPackage.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAIlE;;;;;GAKG;AACH,wBAAsB,WAAW,CAC/B,WAAW,EAAE,WAAW,EACxB,OAAO,EAAE,QAAQ,CAAC,IAAI,CAAC,gBAAgB,EAAE,YAAY,CAAC,CAAC,GACrD,IAAI,CAAC,gBAAgB,EAAE,SAAS,CAAC,GAAG;IAClC,QAAQ,EACJ;QACE,wEAAwE;QACxE,KAAK,EAAE,MAAM,CAAC;QACd,0CAA0C;QAC1C,KAAK,EAAE,MAAM,CAAC;KACf,GACD;QACE,2EAA2E;QAC3E,MAAM,EAAE,MAAM,EAAE,EAAE,CAAC;KACpB,CAAC;CACP,GACF,OAAO,CAAC,OAAO,CAAC,CAiElB"}
@@ -10,11 +10,12 @@ const npm_1 = require("./npm");
10
10
  const npmArgs_1 = require("./npmArgs");
11
11
  /**
12
12
  * Attempts to pack the package and move the tgz to `options.packPath`.
13
- * The packed filename will be prefixed with a number.
13
+ * Depending on `packInfo.packStyle`, either the filename will be prefixed with a number,
14
+ * or it will be put in a numbered folder.
14
15
  * @returns true if successful, false if not.
15
16
  */
16
17
  async function packPackage(packageInfo, options) {
17
- const { packToPath, verbose, index, total } = options;
18
+ const { packToPath, verbose, packInfo } = options;
18
19
  const packArgs = ['pack', ...(0, npmArgs_1.getNpmLogLevelArgs)(verbose)];
19
20
  const packageRoot = path_1.default.dirname(packageInfo.packageJsonPath);
20
21
  const packageSpec = `${packageInfo.name}@${packageInfo.version}`;
@@ -35,15 +36,29 @@ async function packPackage(packageInfo, options) {
35
36
  return false;
36
37
  }
37
38
  // Prepend a numeric prefix to the pack file (0-padded so basic sorting works).
39
+ // Or for packStyle: "layer", put the pack file in a subfolder for its dependency tree layer.
38
40
  // The prefix isn't strictly needed for single packages, but use it for consistency in case of a
39
41
  // monorepo which usually publishes multiple packages but sometimes only one has changed.
40
- const packPrefix = String(index + 1).padStart(String(total).length, '0') + '-';
41
- const finalPackFilePath = path_1.default.join(packToPath, packPrefix + packFile);
42
+ let finalPackFilePath;
43
+ if ('layers' in packInfo) {
44
+ const { layers } = packInfo;
45
+ const packageLayer = layers.findIndex(layer => layer.includes(packageInfo.name));
46
+ if (packageLayer === -1) {
47
+ console.error(`Internal error: package ${packageInfo.name} not found in order of packages to publish\n`);
48
+ return false;
49
+ }
50
+ const layerDir = makePrefix({ num: packageLayer, total: layers.length });
51
+ finalPackFilePath = path_1.default.join(packToPath, layerDir, packFile);
52
+ }
53
+ else {
54
+ const packPrefix = makePrefix({ num: packInfo.index, total: packInfo.total });
55
+ finalPackFilePath = path_1.default.join(packToPath, `${packPrefix}-${packFile}`);
56
+ }
42
57
  try {
43
58
  if (fs_1.default.existsSync(finalPackFilePath)) {
44
59
  throw new Error('Target path already exists');
45
60
  }
46
- fs_1.default.mkdirSync(packToPath, { recursive: true });
61
+ fs_1.default.mkdirSync(path_1.default.dirname(finalPackFilePath), { recursive: true });
47
62
  fs_1.default.renameSync(packFilePath, finalPackFilePath);
48
63
  }
49
64
  catch (err) {
@@ -61,4 +76,11 @@ async function packPackage(packageInfo, options) {
61
76
  return true;
62
77
  }
63
78
  exports.packPackage = packPackage;
79
+ /**
80
+ * Convert `num` from 0- to 1-indexed and pad with leading zeros based on the total.
81
+ */
82
+ function makePrefix(params) {
83
+ const { num, total } = params;
84
+ return String(num + 1).padStart(String(total).length, '0');
85
+ }
64
86
  //# sourceMappingURL=packPackage.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"packPackage.js","sourceRoot":"","sources":["../../src/packageManager/packPackage.ts"],"names":[],"mappings":";;;;;;AAAA,4CAAoB;AACpB,gDAAwB;AAGxB,+BAA4B;AAC5B,uCAA+C;AAE/C;;;;GAIG;AACI,KAAK,UAAU,WAAW,CAC/B,WAAwB,EACxB,OAMG;IAEH,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,OAAO,CAAC;IAEtD,MAAM,QAAQ,GAAG,CAAC,MAAM,EAAE,GAAG,IAAA,4BAAkB,EAAC,OAAO,CAAC,CAAC,CAAC;IAE1D,MAAM,WAAW,GAAG,cAAI,CAAC,OAAO,CAAC,WAAW,CAAC,eAAe,CAAC,CAAC;IAC9D,MAAM,WAAW,GAAG,GAAG,WAAW,CAAC,IAAI,IAAI,WAAW,CAAC,OAAO,EAAE,CAAC;IACjE,OAAO,CAAC,GAAG,CAAC,aAAa,WAAW,EAAE,CAAC,CAAC;IACxC,OAAO,CAAC,GAAG,CAAC,WAAW,WAAW,KAAK,CAAC,CAAC;IAEzC,wCAAwC;IACxC,MAAM,MAAM,GAAG,MAAM,IAAA,SAAG,EAAC,QAAQ,EAAE,EAAE,GAAG,EAAE,WAAW,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC;IACpE,4FAA4F;IAC5F,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,GAAG,IAAI,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC;IAEvC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE;QACnB,OAAO,CAAC,KAAK,CAAC,WAAW,WAAW,mCAAmC,CAAC,CAAC;QACzE,OAAO,KAAK,CAAC;KACd;IAED,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC;IAC9D,MAAM,YAAY,GAAG,cAAI,CAAC,IAAI,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;IACtD,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,YAAE,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE;QAC9D,OAAO,CAAC,KAAK,CAAC,uBAAuB,WAAW,oDAAoD,CAAC,CAAC;QACtG,OAAO,KAAK,CAAC;KACd;IAED,+EAA+E;IAC/E,gGAAgG;IAChG,yFAAyF;IACzF,MAAM,UAAU,GAAG,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,GAAG,CAAC;IAC/E,MAAM,iBAAiB,GAAG,cAAI,CAAC,IAAI,CAAC,UAAU,EAAE,UAAU,GAAG,QAAQ,CAAC,CAAC;IACvE,IAAI;QACF,IAAI,YAAE,CAAC,UAAU,CAAC,iBAAiB,CAAC,EAAE;YACpC,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;SAC/C;QACD,YAAE,CAAC,SAAS,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC9C,YAAE,CAAC,UAAU,CAAC,YAAY,EAAE,iBAAiB,CAAC,CAAC;KAChD;IAAC,OAAO,GAAG,EAAE;QACZ,OAAO,CAAC,KAAK,CAAC,kBAAkB,YAAY,OAAO,iBAAiB,KAAK,GAAG,IAAI,CAAC,CAAC;QAClF,IAAI;YACF,0DAA0D;YAC1D,YAAE,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;SACzB;QAAC,MAAM;YACN,SAAS;SACV;QACD,OAAO,KAAK,CAAC;KACd;IAED,OAAO,CAAC,GAAG,CAAC,UAAU,WAAW,OAAO,iBAAiB,EAAE,CAAC,CAAC;IAC7D,OAAO,IAAI,CAAC;AACd,CAAC;AA5DD,kCA4DC"}
1
+ {"version":3,"file":"packPackage.js","sourceRoot":"","sources":["../../src/packageManager/packPackage.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,30 @@
1
+ import type { BeachballOptions } from '../types/BeachballOptions';
2
+ import type { PublishBumpInfo } from '../types/BumpInfo';
3
+ /**
4
+ * Given the packages to publish and the full map of packages in the repo, organize the packages into
5
+ * graph layers that can be published in parallel. The first layer will be packages with no deps
6
+ * on other published packages, and the last layer will be root packages that depend on all others.
7
+ *
8
+ * If possible, layers are computed based on only the set of published packages. This should be safe
9
+ * with beachball's default behaviors, but layers will be computed over the full graph under any of
10
+ * the following conditions which might cause missing edges. (Not 100% sure this is necessary, but
11
+ * not sure how to disprove it either...)
12
+ * - `bumpDeps` is false
13
+ * - `scope` is set
14
+ * - There are `newPackages`
15
+ * - Any change has `dependentChangeType` set to "none"
16
+ *
17
+ * Currently, there's only VERY basic cycle handling: all cycles are grouped together on a final
18
+ * layer, regardless of any interdependencies. The `toposort` package previously used by beachball
19
+ * doesn't handle cycles at all, so this should be fine for now. (Tarjan's strongly connected
20
+ * components algorithm could be used to break cycles into more layers if needed in the future.)
21
+ *
22
+ * @returns An array of layers, where each layer is an array of package names that can be
23
+ * published in parallel.
24
+ */
25
+ export declare function getPackageGraphLayers(params: {
26
+ packagesToPublish: string[];
27
+ bumpInfo: Pick<PublishBumpInfo, 'changeFileChangeInfos' | 'packageInfos' | 'newPackages'>;
28
+ options: Pick<BeachballOptions, 'bumpDeps' | 'scope'>;
29
+ }): string[][];
30
+ //# sourceMappingURL=getPackageGraphLayers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getPackageGraphLayers.d.ts","sourceRoot":"","sources":["../../src/publish/getPackageGraphLayers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAClE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAIzD;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE;IAC5C,iBAAiB,EAAE,MAAM,EAAE,CAAC;IAC5B,QAAQ,EAAE,IAAI,CAAC,eAAe,EAAE,uBAAuB,GAAG,cAAc,GAAG,aAAa,CAAC,CAAC;IAC1F,OAAO,EAAE,IAAI,CAAC,gBAAgB,EAAE,UAAU,GAAG,OAAO,CAAC,CAAC;CACvD,GAAG,MAAM,EAAE,EAAE,CAkFb"}
@@ -0,0 +1,99 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getPackageGraphLayers = void 0;
4
+ const getPackageGraph_1 = require("../monorepo/getPackageGraph");
5
+ const bulletedList_1 = require("../logging/bulletedList");
6
+ /**
7
+ * Given the packages to publish and the full map of packages in the repo, organize the packages into
8
+ * graph layers that can be published in parallel. The first layer will be packages with no deps
9
+ * on other published packages, and the last layer will be root packages that depend on all others.
10
+ *
11
+ * If possible, layers are computed based on only the set of published packages. This should be safe
12
+ * with beachball's default behaviors, but layers will be computed over the full graph under any of
13
+ * the following conditions which might cause missing edges. (Not 100% sure this is necessary, but
14
+ * not sure how to disprove it either...)
15
+ * - `bumpDeps` is false
16
+ * - `scope` is set
17
+ * - There are `newPackages`
18
+ * - Any change has `dependentChangeType` set to "none"
19
+ *
20
+ * Currently, there's only VERY basic cycle handling: all cycles are grouped together on a final
21
+ * layer, regardless of any interdependencies. The `toposort` package previously used by beachball
22
+ * doesn't handle cycles at all, so this should be fine for now. (Tarjan's strongly connected
23
+ * components algorithm could be used to break cycles into more layers if needed in the future.)
24
+ *
25
+ * @returns An array of layers, where each layer is an array of package names that can be
26
+ * published in parallel.
27
+ */
28
+ function getPackageGraphLayers(params) {
29
+ const { packagesToPublish, bumpInfo, options } = params;
30
+ const { packageInfos, changeFileChangeInfos } = bumpInfo;
31
+ if (packagesToPublish.length === 0) {
32
+ return [];
33
+ }
34
+ // See function comment for explanation
35
+ const canConsiderPublishedOnly = options.bumpDeps &&
36
+ !options.scope &&
37
+ !bumpInfo.newPackages?.length &&
38
+ !changeFileChangeInfos.some(change => change.change.dependentChangeType === 'none');
39
+ const packagesToConsider = canConsiderPublishedOnly ? packagesToPublish : Object.keys(packageInfos);
40
+ const packagesToConsiderSet = new Set(packagesToConsider);
41
+ // Build internal dependency graph for packagesToConsider
42
+ const dependentsOf = new Map();
43
+ const inDegree = new Map();
44
+ for (const pkgName of packagesToConsider) {
45
+ // Get dependencies of this package, filtered to packagesToConsiderSet.
46
+ // Ignore dev deps since they're not installed by consumers and can't cause ordering issues.
47
+ const deps = (0, getPackageGraph_1.getPackageDependenciesWrapper)(packageInfos[pkgName], packagesToConsiderSet);
48
+ inDegree.set(pkgName, deps.length);
49
+ for (const dep of deps) {
50
+ let list = dependentsOf.get(dep);
51
+ if (!list) {
52
+ list = [];
53
+ dependentsOf.set(dep, list);
54
+ }
55
+ list.push(pkgName);
56
+ }
57
+ }
58
+ // Kahn's algorithm: extract layers in BFS order
59
+ const placed = new Set();
60
+ const layers = [];
61
+ // Seed with all packages that have no in-repo dependencies
62
+ let currentLayer = packagesToConsider.filter(pkg => (inDegree.get(pkg) ?? 0) === 0);
63
+ while (currentLayer.length > 0) {
64
+ // Filter this layer to only packages being published
65
+ const publishLayer = canConsiderPublishedOnly
66
+ ? currentLayer
67
+ : currentLayer.filter(pkg => packagesToPublish.includes(pkg));
68
+ if (publishLayer.length > 0) {
69
+ layers.push(publishLayer);
70
+ }
71
+ // Mark placed and compute next layer
72
+ const nextLayer = [];
73
+ for (const pkg of currentLayer) {
74
+ placed.add(pkg);
75
+ for (const dependent of dependentsOf.get(pkg) ?? []) {
76
+ const newDegree = (inDegree.get(dependent) ?? 1) - 1;
77
+ inDegree.set(dependent, newDegree);
78
+ if (newDegree === 0) {
79
+ nextLayer.push(dependent);
80
+ }
81
+ }
82
+ }
83
+ currentLayer = nextLayer;
84
+ }
85
+ // Handle cycles: any remaining packages not yet placed
86
+ const cyclic = packagesToPublish.filter(pkg => !placed.has(pkg));
87
+ if (cyclic.length > 0) {
88
+ console.warn([
89
+ 'Circular dependencies detected among the following packages:',
90
+ (0, bulletedList_1.bulletedList)(cyclic),
91
+ 'If these packages have any interdependencies, publishing order MAY BE INCORRECT.',
92
+ '',
93
+ ].join('\n'));
94
+ layers.push(cyclic);
95
+ }
96
+ return layers;
97
+ }
98
+ exports.getPackageGraphLayers = getPackageGraphLayers;
99
+ //# sourceMappingURL=getPackageGraphLayers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getPackageGraphLayers.js","sourceRoot":"","sources":["../../src/publish/getPackageGraphLayers.ts"],"names":[],"mappings":"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"}
@@ -5,8 +5,6 @@ import type { PublishBumpInfo } from '../types/BumpInfo';
5
5
  * out of scope, have change type "none", or have no calculated change type (unless they're new).
6
6
  */
7
7
  export declare function getPackagesToPublish(bumpInfo: Pick<PublishBumpInfo, 'modifiedPackages' | 'newPackages' | 'packageInfos' | 'calculatedChangeTypes' | 'scopedPackages'>, params?: {
8
- /** If true, topologically sort the package names based on the dependency graph (may be slow) */
9
- toposort?: boolean;
10
8
  /** If true, log skipped packages and reasons */
11
9
  logSkipped?: boolean;
12
10
  }): string[];
@@ -1 +1 @@
1
- {"version":3,"file":"getPackagesToPublish.d.ts","sourceRoot":"","sources":["../../src/publish/getPackagesToPublish.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAGzD;;;;GAIG;AACH,wBAAgB,oBAAoB,CAClC,QAAQ,EAAE,IAAI,CACZ,eAAe,EACf,kBAAkB,GAAG,aAAa,GAAG,cAAc,GAAG,uBAAuB,GAAG,gBAAgB,CACjG,EACD,MAAM,CAAC,EAAE;IACP,gGAAgG;IAChG,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,gDAAgD;IAChD,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB,GACA,MAAM,EAAE,CAsCV"}
1
+ {"version":3,"file":"getPackagesToPublish.d.ts","sourceRoot":"","sources":["../../src/publish/getPackagesToPublish.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEzD;;;;GAIG;AACH,wBAAgB,oBAAoB,CAClC,QAAQ,EAAE,IAAI,CACZ,eAAe,EACf,kBAAkB,GAAG,aAAa,GAAG,cAAc,GAAG,uBAAuB,GAAG,gBAAgB,CACjG,EACD,MAAM,CAAC,EAAE;IACP,gDAAgD;IAChD,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB,GACA,MAAM,EAAE,CAmCV"}
@@ -2,7 +2,6 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.getPackagesToPublish = void 0;
4
4
  const bulletedList_1 = require("../logging/bulletedList");
5
- const toposortPackages_1 = require("./toposortPackages");
6
5
  /**
7
6
  * Determine which of the modified/new packages in bump info should actually be published
8
7
  * (based only on the bump info, not the registry). Removes packages that are private,
@@ -10,10 +9,7 @@ const toposortPackages_1 = require("./toposortPackages");
10
9
  */
11
10
  function getPackagesToPublish(bumpInfo, params) {
12
11
  const { modifiedPackages, newPackages, packageInfos, calculatedChangeTypes, scopedPackages } = bumpInfo;
13
- let packages = [...modifiedPackages, ...(newPackages || [])];
14
- if (params?.toposort) {
15
- packages = (0, toposortPackages_1.toposortPackages)(packages, packageInfos);
16
- }
12
+ const packages = [...modifiedPackages, ...(newPackages || [])];
17
13
  const packagesToPublish = [];
18
14
  const skippedPackageReasons = [];
19
15
  for (const pkg of packages) {
@@ -1 +1 @@
1
- {"version":3,"file":"getPackagesToPublish.js","sourceRoot":"","sources":["../../src/publish/getPackagesToPublish.ts"],"names":[],"mappings":";;;AAAA,0DAAuD;AAEvD,yDAAsD;AAEtD;;;;GAIG;AACH,SAAgB,oBAAoB,CAClC,QAGC,EACD,MAKC;IAED,MAAM,EAAE,gBAAgB,EAAE,WAAW,EAAE,YAAY,EAAE,qBAAqB,EAAE,cAAc,EAAE,GAAG,QAAQ,CAAC;IAExG,IAAI,QAAQ,GAAG,CAAC,GAAG,gBAAgB,EAAE,GAAG,CAAC,WAAW,IAAI,EAAE,CAAC,CAAC,CAAC;IAC7D,IAAI,MAAM,EAAE,QAAQ,EAAE;QACpB,QAAQ,GAAG,IAAA,mCAAgB,EAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;KACrD;IACD,MAAM,iBAAiB,GAAa,EAAE,CAAC;IACvC,MAAM,qBAAqB,GAAa,EAAE,CAAC;IAE3C,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE;QAC1B,MAAM,WAAW,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC;QACtC,MAAM,UAAU,GAAG,qBAAqB,CAAC,GAAG,CAAC,CAAC;QAE9C,IAAI,UAAU,GAAG,EAAE,CAAC;QACpB,IAAI,UAAU,KAAK,MAAM,EAAE;YACzB,UAAU,GAAG,sBAAsB,CAAC;SACrC;aAAM,IAAI,WAAW,CAAC,OAAO,EAAE;YAC9B,UAAU,GAAG,YAAY,CAAC;SAC3B;aAAM,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;YACnC,UAAU,GAAG,iBAAiB,CAAC;SAChC;aAAM,IAAI,CAAC,UAAU,IAAI,CAAC,WAAW,EAAE,QAAQ,CAAC,GAAG,CAAC,EAAE;YACrD,UAAU,GAAG,2CAA2C,CAAC;SAC1D;QAED,IAAI,UAAU,EAAE;YACd,qBAAqB,CAAC,IAAI,CAAC,GAAG,GAAG,IAAI,UAAU,EAAE,CAAC,CAAC;SACpD;aAAM;YACL,iBAAiB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;SAC7B;KACF;IAED,sDAAsD;IACtD,IAAI,qBAAqB,CAAC,MAAM,IAAI,MAAM,EAAE,UAAU,EAAE;QACtD,OAAO,CAAC,GAAG,CAAC,gDAAgD,IAAA,2BAAY,EAAC,qBAAqB,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,CAAC;KAC7G;IAED,OAAO,iBAAiB,CAAC;AAC3B,CAAC;AAjDD,oDAiDC"}
1
+ {"version":3,"file":"getPackagesToPublish.js","sourceRoot":"","sources":["../../src/publish/getPackagesToPublish.ts"],"names":[],"mappings":";;;AAAA,0DAAuD;AAGvD;;;;GAIG;AACH,SAAgB,oBAAoB,CAClC,QAGC,EACD,MAGC;IAED,MAAM,EAAE,gBAAgB,EAAE,WAAW,EAAE,YAAY,EAAE,qBAAqB,EAAE,cAAc,EAAE,GAAG,QAAQ,CAAC;IAExG,MAAM,QAAQ,GAAG,CAAC,GAAG,gBAAgB,EAAE,GAAG,CAAC,WAAW,IAAI,EAAE,CAAC,CAAC,CAAC;IAC/D,MAAM,iBAAiB,GAAa,EAAE,CAAC;IACvC,MAAM,qBAAqB,GAAa,EAAE,CAAC;IAE3C,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE;QAC1B,MAAM,WAAW,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC;QACtC,MAAM,UAAU,GAAG,qBAAqB,CAAC,GAAG,CAAC,CAAC;QAE9C,IAAI,UAAU,GAAG,EAAE,CAAC;QACpB,IAAI,UAAU,KAAK,MAAM,EAAE;YACzB,UAAU,GAAG,sBAAsB,CAAC;SACrC;aAAM,IAAI,WAAW,CAAC,OAAO,EAAE;YAC9B,UAAU,GAAG,YAAY,CAAC;SAC3B;aAAM,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;YACnC,UAAU,GAAG,iBAAiB,CAAC;SAChC;aAAM,IAAI,CAAC,UAAU,IAAI,CAAC,WAAW,EAAE,QAAQ,CAAC,GAAG,CAAC,EAAE;YACrD,UAAU,GAAG,2CAA2C,CAAC;SAC1D;QAED,IAAI,UAAU,EAAE;YACd,qBAAqB,CAAC,IAAI,CAAC,GAAG,GAAG,IAAI,UAAU,EAAE,CAAC,CAAC;SACpD;aAAM;YACL,iBAAiB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;SAC7B;KACF;IAED,sDAAsD;IACtD,IAAI,qBAAqB,CAAC,MAAM,IAAI,MAAM,EAAE,UAAU,EAAE;QACtD,OAAO,CAAC,GAAG,CAAC,gDAAgD,IAAA,2BAAY,EAAC,qBAAqB,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,CAAC;KAC7G;IAED,OAAO,iBAAiB,CAAC;AAC3B,CAAC;AA5CD,oDA4CC"}
@@ -1 +1 @@
1
- {"version":3,"file":"publishToRegistry.d.ts","sourceRoot":"","sources":["../../src/publish/publishToRegistry.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACzD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAclE;;;;;GAKG;AACH,wBAAsB,iBAAiB,CAAC,QAAQ,EAAE,eAAe,EAAE,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAoG3G"}
1
+ {"version":3,"file":"publishToRegistry.d.ts","sourceRoot":"","sources":["../../src/publish/publishToRegistry.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACzD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAelE;;;;;GAKG;AACH,wBAAsB,iBAAiB,CAAC,QAAQ,EAAE,eAAe,EAAE,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CA8G3G"}