@backstage/cli 0.26.11 → 0.27.0-next.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 (48) hide show
  1. package/CHANGELOG.md +35 -0
  2. package/config/eslint-factory.js +1 -0
  3. package/dist/cjs/Lockfile-B4mqBkH6.cjs.js +86 -0
  4. package/dist/cjs/{build-DwlXzIpR.cjs.js → build-D5DoFqm6.cjs.js} +8 -13
  5. package/dist/cjs/{buildBackend-CrncxAY5.cjs.js → buildBackend-UK6nC6VL.cjs.js} +17 -41
  6. package/dist/cjs/{buildWorkspace-D95Cv1QN.cjs.js → buildWorkspace-Z-hpJt9g.cjs.js} +4 -4
  7. package/dist/cjs/{bump-b90k9Vrg.cjs.js → bump-Qc4jNLOA.cjs.js} +7 -84
  8. package/dist/cjs/{clean-Bev614vS.cjs.js → clean-CB6dTqaG.cjs.js} +2 -2
  9. package/dist/cjs/{clean-Cn9pRgoI.cjs.js → clean-DlsJGDLw.cjs.js} +2 -2
  10. package/dist/cjs/{codeowners-C_BzEYI6.cjs.js → codeowners-0MT7UP_S.cjs.js} +2 -2
  11. package/dist/cjs/{config-EizsMYjy.cjs.js → config-B1bkp-HP.cjs.js} +43 -35
  12. package/dist/cjs/{createDistWorkspace-CqCdLqOV.cjs.js → createDistWorkspace-0v54ePDJ.cjs.js} +3 -3
  13. package/dist/cjs/{createPlugin-Dp_zJ1vU.cjs.js → createPlugin-CUOGhq6P.cjs.js} +6 -6
  14. package/dist/cjs/{diff-SflPPir6.cjs.js → diff-BaiaASdN.cjs.js} +2 -2
  15. package/dist/cjs/{docs-B0MlNQaZ.cjs.js → docs-D8vejOxE.cjs.js} +3 -3
  16. package/dist/cjs/{fix-BoMIpogO.cjs.js → fix-C7T4cvOB.cjs.js} +2 -2
  17. package/dist/cjs/{index-Do6EL2Yb.cjs.js → index-1VtfY6wb.cjs.js} +4 -4
  18. package/dist/cjs/{index-D6bTzT6C.cjs.js → index-B8Ebu0mP.cjs.js} +19 -15
  19. package/dist/cjs/{index-7vT98W4X.cjs.js → index-BAcLy7dK.cjs.js} +47 -47
  20. package/dist/cjs/{index-nl4fBJN1.cjs.js → index-Bu7Vqly9.cjs.js} +49 -63
  21. package/dist/cjs/{index-JoytU5ZM.cjs.js → index-F8W-9gIc.cjs.js} +2 -2
  22. package/dist/cjs/{info-BRPLyhql.cjs.js → info-D_IhL0i0.cjs.js} +4 -4
  23. package/dist/cjs/{install-DBTY3GMv.cjs.js → install-DGaf_UuL.cjs.js} +5 -5
  24. package/dist/cjs/{lint-DmKqylEy.cjs.js → lint-CRqMLZJ5.cjs.js} +2 -2
  25. package/dist/cjs/lint-Dkx_fBkS.cjs.js +10 -0
  26. package/dist/cjs/{lint-6Ua9puez.cjs.js → lint-EJvdRB7_.cjs.js} +2 -2
  27. package/dist/cjs/{list-deprecations-DNYfBnHZ.cjs.js → list-deprecations-COfvNjrB.cjs.js} +2 -2
  28. package/dist/cjs/{packageDetection-DlDcN5Ll.cjs.js → moduleFederation-CQZbFAit.cjs.js} +94 -25
  29. package/dist/cjs/{new-WebKpNSz.cjs.js → new-DB_oe66E.cjs.js} +6 -6
  30. package/dist/cjs/{pack-5if7U6_6.cjs.js → pack-BcxxlYor.cjs.js} +2 -2
  31. package/dist/cjs/{packageExports-Ddqkury2.cjs.js → packageExports-FpoAU1Be.cjs.js} +3 -3
  32. package/dist/cjs/{packageLintConfigs-CrhcoEVX.cjs.js → packageLintConfigs-D7LMvTow.cjs.js} +3 -3
  33. package/dist/cjs/{packageRole-CBF_rIK0.cjs.js → packageRole-BeuvccV9.cjs.js} +2 -2
  34. package/dist/cjs/{packages-RRALGdRj.cjs.js → packages-DPPEGYIi.cjs.js} +3 -3
  35. package/dist/cjs/{print-Caq1MMDY.cjs.js → print-DuJqsJ2y.cjs.js} +3 -3
  36. package/dist/cjs/{role-DNHddFRX.cjs.js → role-DAaP4LE5.cjs.js} +2 -2
  37. package/dist/cjs/{run-Dyr28990.cjs.js → run-CPcG7YxR.cjs.js} +2 -2
  38. package/dist/cjs/{schema-CXKpYRvf.cjs.js → schema-CR794PHv.cjs.js} +3 -3
  39. package/dist/cjs/{tasks-CMO3PrbZ.cjs.js → tasks-4L8FqWEM.cjs.js} +2 -2
  40. package/dist/cjs/{test-CTXtMelk.cjs.js → test-303IpaqN.cjs.js} +3 -3
  41. package/dist/cjs/{test-CyF0ge7_.cjs.js → test-y8AV0JOP.cjs.js} +3 -3
  42. package/dist/cjs/{validate-CPunUthn.cjs.js → validate-DZJIL6CK.cjs.js} +3 -3
  43. package/dist/index.cjs.js +1 -1
  44. package/package.json +10 -10
  45. package/templates/default-backend-plugin/package.json.hbs +0 -1
  46. package/templates/default-backend-plugin/src/service/router.ts +2 -3
  47. package/dist/cjs/Lockfile-BndFvzHc.cjs.js +0 -221
  48. package/dist/cjs/lint-CCzUmZcU.cjs.js +0 -112
@@ -3,9 +3,9 @@
3
3
  var fs = require('fs-extra');
4
4
  var path = require('path');
5
5
  var cliNode = require('@backstage/cli-node');
6
- var run = require('./run-Dyr28990.cjs.js');
6
+ var run = require('./run-CPcG7YxR.cjs.js');
7
7
  require('child_process');
8
- require('./index-7vT98W4X.cjs.js');
8
+ require('./index-BAcLy7dK.cjs.js');
9
9
  require('commander');
10
10
  require('chalk');
11
11
  require('semver');
@@ -78,4 +78,4 @@ async function command() {
78
78
  }
79
79
 
80
80
  exports.command = command;
81
- //# sourceMappingURL=packageLintConfigs-CrhcoEVX.cjs.js.map
81
+ //# sourceMappingURL=packageLintConfigs-D7LMvTow.cjs.js.map
@@ -4,7 +4,7 @@ var fs = require('fs-extra');
4
4
  var path = require('path');
5
5
  var getPackages = require('@manypkg/get-packages');
6
6
  var cliNode = require('@backstage/cli-node');
7
- var index = require('./index-7vT98W4X.cjs.js');
7
+ var index = require('./index-BAcLy7dK.cjs.js');
8
8
  require('commander');
9
9
  require('chalk');
10
10
  require('semver');
@@ -55,4 +55,4 @@ var packageRole = async () => {
55
55
  };
56
56
 
57
57
  exports.default = packageRole;
58
- //# sourceMappingURL=packageRole-CBF_rIK0.cjs.js.map
58
+ //# sourceMappingURL=packageRole-BeuvccV9.cjs.js.map
@@ -2,9 +2,9 @@
2
2
 
3
3
  var minimatch = require('minimatch');
4
4
  var getPackages = require('@manypkg/get-packages');
5
- var index = require('./index-7vT98W4X.cjs.js');
5
+ var index = require('./index-BAcLy7dK.cjs.js');
6
6
  var yarn = require('./yarn-Ukl9MOS0.cjs.js');
7
- var run = require('./run-Dyr28990.cjs.js');
7
+ var run = require('./run-CPcG7YxR.cjs.js');
8
8
 
9
9
  const DEP_TYPES = [
10
10
  "dependencies",
@@ -72,4 +72,4 @@ async function mapDependencies(targetDir, pattern) {
72
72
 
73
73
  exports.fetchPackageInfo = fetchPackageInfo;
74
74
  exports.mapDependencies = mapDependencies;
75
- //# sourceMappingURL=packages-RRALGdRj.cjs.js.map
75
+ //# sourceMappingURL=packages-DPPEGYIi.cjs.js.map
@@ -2,9 +2,9 @@
2
2
 
3
3
  var yaml = require('yaml');
4
4
  var config$1 = require('@backstage/config');
5
- var config = require('./config-EizsMYjy.cjs.js');
5
+ var config = require('./config-B1bkp-HP.cjs.js');
6
6
  require('@backstage/config-loader');
7
- require('./index-7vT98W4X.cjs.js');
7
+ require('./index-BAcLy7dK.cjs.js');
8
8
  require('commander');
9
9
  require('chalk');
10
10
  require('fs-extra');
@@ -58,4 +58,4 @@ function serializeConfigData(appConfigs, schema, visibility) {
58
58
  }
59
59
 
60
60
  exports.default = print;
61
- //# sourceMappingURL=print-Caq1MMDY.cjs.js.map
61
+ //# sourceMappingURL=print-DuJqsJ2y.cjs.js.map
@@ -1,7 +1,7 @@
1
1
  'use strict';
2
2
 
3
3
  var fs = require('fs-extra');
4
- var index = require('./index-7vT98W4X.cjs.js');
4
+ var index = require('./index-BAcLy7dK.cjs.js');
5
5
  var cliNode = require('@backstage/cli-node');
6
6
 
7
7
  function _interopDefaultCompat (e) { return e && typeof e === 'object' && 'default' in e ? e : { default: e }; }
@@ -21,4 +21,4 @@ async function findRoleFromCommand(opts) {
21
21
  }
22
22
 
23
23
  exports.findRoleFromCommand = findRoleFromCommand;
24
- //# sourceMappingURL=role-DNHddFRX.cjs.js.map
24
+ //# sourceMappingURL=role-DAaP4LE5.cjs.js.map
@@ -1,7 +1,7 @@
1
1
  'use strict';
2
2
 
3
3
  var child_process = require('child_process');
4
- var index = require('./index-7vT98W4X.cjs.js');
4
+ var index = require('./index-BAcLy7dK.cjs.js');
5
5
  var util = require('util');
6
6
  var errors = require('@backstage/errors');
7
7
 
@@ -78,4 +78,4 @@ exports.execFile = execFile;
78
78
  exports.run = run;
79
79
  exports.runCheck = runCheck;
80
80
  exports.runPlain = runPlain;
81
- //# sourceMappingURL=run-Dyr28990.cjs.js.map
81
+ //# sourceMappingURL=run-CPcG7YxR.cjs.js.map
@@ -1,10 +1,10 @@
1
1
  'use strict';
2
2
 
3
3
  var yaml = require('yaml');
4
- var config = require('./config-EizsMYjy.cjs.js');
4
+ var config = require('./config-B1bkp-HP.cjs.js');
5
5
  var configLoader = require('@backstage/config-loader');
6
6
  require('@backstage/config');
7
- require('./index-7vT98W4X.cjs.js');
7
+ require('./index-BAcLy7dK.cjs.js');
8
8
  require('commander');
9
9
  require('chalk');
10
10
  require('fs-extra');
@@ -42,4 +42,4 @@ var schema = async (opts) => {
42
42
  };
43
43
 
44
44
  exports.default = schema;
45
- //# sourceMappingURL=schema-CXKpYRvf.cjs.js.map
45
+ //# sourceMappingURL=schema-CR794PHv.cjs.js.map
@@ -9,7 +9,7 @@ var path = require('path');
9
9
  var recursive = require('recursive-readdir');
10
10
  var child_process = require('child_process');
11
11
  var errors = require('@backstage/errors');
12
- var index = require('./index-7vT98W4X.cjs.js');
12
+ var index = require('./index-BAcLy7dK.cjs.js');
13
13
 
14
14
  function _interopDefaultCompat (e) { return e && typeof e === 'object' && 'default' in e ? e : { default: e }; }
15
15
 
@@ -185,4 +185,4 @@ exports.Task = Task;
185
185
  exports.addPackageDependency = addPackageDependency;
186
186
  exports.addToBackend = addToBackend;
187
187
  exports.templatingTask = templatingTask;
188
- //# sourceMappingURL=tasks-CMO3PrbZ.cjs.js.map
188
+ //# sourceMappingURL=tasks-4L8FqWEM.cjs.js.map
@@ -1,7 +1,7 @@
1
1
  'use strict';
2
2
 
3
- var index = require('./index-7vT98W4X.cjs.js');
4
- var run = require('./run-Dyr28990.cjs.js');
3
+ var index = require('./index-BAcLy7dK.cjs.js');
4
+ var run = require('./run-CPcG7YxR.cjs.js');
5
5
  require('commander');
6
6
  require('chalk');
7
7
  require('fs-extra');
@@ -56,4 +56,4 @@ var test = async (_opts, cmd) => {
56
56
  };
57
57
 
58
58
  exports.default = test;
59
- //# sourceMappingURL=test-CTXtMelk.cjs.js.map
59
+ //# sourceMappingURL=test-303IpaqN.cjs.js.map
@@ -2,8 +2,8 @@
2
2
 
3
3
  var os = require('os');
4
4
  var cliNode = require('@backstage/cli-node');
5
- var index = require('./index-7vT98W4X.cjs.js');
6
- var run = require('./run-Dyr28990.cjs.js');
5
+ var index = require('./index-BAcLy7dK.cjs.js');
6
+ var run = require('./run-CPcG7YxR.cjs.js');
7
7
  require('commander');
8
8
  require('chalk');
9
9
  require('fs-extra');
@@ -123,4 +123,4 @@ async function command(opts, cmd) {
123
123
 
124
124
  exports.command = command;
125
125
  exports.createFlagFinder = createFlagFinder;
126
- //# sourceMappingURL=test-CyF0ge7_.cjs.js.map
126
+ //# sourceMappingURL=test-y8AV0JOP.cjs.js.map
@@ -1,9 +1,9 @@
1
1
  'use strict';
2
2
 
3
- var config = require('./config-EizsMYjy.cjs.js');
3
+ var config = require('./config-B1bkp-HP.cjs.js');
4
4
  require('@backstage/config-loader');
5
5
  require('@backstage/config');
6
- require('./index-7vT98W4X.cjs.js');
6
+ require('./index-BAcLy7dK.cjs.js');
7
7
  require('commander');
8
8
  require('chalk');
9
9
  require('fs-extra');
@@ -25,4 +25,4 @@ var validate = async (opts) => {
25
25
  };
26
26
 
27
27
  exports.default = validate;
28
- //# sourceMappingURL=validate-CPunUthn.cjs.js.map
28
+ //# sourceMappingURL=validate-DZJIL6CK.cjs.js.map
package/dist/index.cjs.js CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  require('commander');
4
4
  require('chalk');
5
- require('./cjs/index-7vT98W4X.cjs.js');
5
+ require('./cjs/index-BAcLy7dK.cjs.js');
6
6
  require('fs-extra');
7
7
  require('semver');
8
8
  require('@backstage/cli-common');
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@backstage/cli",
3
- "version": "0.26.11",
3
+ "version": "0.27.0-next.0",
4
4
  "description": "CLI for developing Backstage plugins and apps",
5
5
  "backstage": {
6
6
  "role": "cli"
@@ -46,10 +46,10 @@
46
46
  "@backstage/cli-common": "^0.1.14",
47
47
  "@backstage/cli-node": "^0.2.7",
48
48
  "@backstage/config": "^1.2.0",
49
- "@backstage/config-loader": "^1.8.1",
49
+ "@backstage/config-loader": "^1.8.2-next.0",
50
50
  "@backstage/errors": "^1.2.4",
51
51
  "@backstage/eslint-plugin": "^0.1.8",
52
- "@backstage/integration": "^1.13.0",
52
+ "@backstage/integration": "^1.14.0-next.0",
53
53
  "@backstage/release-manifests": "^0.0.11",
54
54
  "@backstage/types": "^1.1.1",
55
55
  "@manypkg/get-packages": "^1.1.3",
@@ -156,15 +156,15 @@
156
156
  "zod": "^3.22.4"
157
157
  },
158
158
  "devDependencies": {
159
- "@backstage/backend-common": "^0.23.3",
160
- "@backstage/backend-plugin-api": "^0.7.0",
161
- "@backstage/backend-test-utils": "^0.4.4",
159
+ "@backstage/backend-common": "^0.23.4-next.0",
160
+ "@backstage/backend-plugin-api": "^0.7.1-next.0",
161
+ "@backstage/backend-test-utils": "^0.4.5-next.0",
162
162
  "@backstage/config": "^1.2.0",
163
- "@backstage/core-app-api": "^1.14.0",
164
- "@backstage/core-components": "^0.14.9",
163
+ "@backstage/core-app-api": "^1.14.1-next.0",
164
+ "@backstage/core-components": "^0.14.10-next.0",
165
165
  "@backstage/core-plugin-api": "^1.9.3",
166
- "@backstage/dev-utils": "^1.0.35",
167
- "@backstage/test-utils": "^1.5.8",
166
+ "@backstage/dev-utils": "^1.0.36-next.0",
167
+ "@backstage/test-utils": "^1.5.9-next.0",
168
168
  "@backstage/theme": "^0.5.6",
169
169
  "@types/cross-spawn": "^6.0.2",
170
170
  "@types/diff": "^5.0.0",
@@ -31,7 +31,6 @@
31
31
  "@backstage/backend-common": "{{versionQuery '@backstage/backend-common'}}",
32
32
  "@backstage/backend-defaults": "{{versionQuery '@backstage/backend-defaults'}}",
33
33
  "@backstage/backend-plugin-api": "{{versionQuery '@backstage/backend-plugin-api'}}",
34
- "@backstage/config": "{{versionQuery '@backstage/config'}}",
35
34
  "express": "{{versionQuery 'express' '4.17.1'}}",
36
35
  "express-promise-router": "{{versionQuery 'express-promise-router' '4.1.0'}}",
37
36
  "node-fetch": "{{versionQuery 'node-fetch' '2.6.7'}}"
@@ -1,12 +1,11 @@
1
1
  import { MiddlewareFactory } from '@backstage/backend-defaults/rootHttpRouter';
2
- import { LoggerService } from '@backstage/backend-plugin-api';
3
- import { Config } from '@backstage/config';
2
+ import { LoggerService, RootConfigService } from '@backstage/backend-plugin-api';
4
3
  import express from 'express';
5
4
  import Router from 'express-promise-router';
6
5
 
7
6
  export interface RouterOptions {
8
7
  logger: LoggerService;
9
- config: Config;
8
+ config: RootConfigService;
10
9
  }
11
10
 
12
11
  export async function createRouter(
@@ -1,221 +0,0 @@
1
- 'use strict';
2
-
3
- var fs = require('fs-extra');
4
- var semver = require('semver');
5
- var parsers = require('@yarnpkg/parsers');
6
- var lockfile = require('@yarnpkg/lockfile');
7
-
8
- function _interopDefaultCompat (e) { return e && typeof e === 'object' && 'default' in e ? e : { default: e }; }
9
-
10
- var fs__default = /*#__PURE__*/_interopDefaultCompat(fs);
11
- var semver__default = /*#__PURE__*/_interopDefaultCompat(semver);
12
-
13
- const ENTRY_PATTERN = /^((?:@[^/]+\/)?[^@/]+)@(.+)$/;
14
- const NEW_HEADER = `${[
15
- `# This file is generated by running "yarn install" inside your project.
16
- `,
17
- `# Manual changes might be lost - proceed with caution!
18
- `
19
- ].join(``)}
20
- `;
21
- const LEGACY_REGEX = /^(#.*(\r?\n))*?#\s+yarn\s+lockfile\s+v1\r?\n/i;
22
- const SPECIAL_OBJECT_KEYS = [
23
- `__metadata`,
24
- `version`,
25
- `resolution`,
26
- `dependencies`,
27
- `peerDependencies`,
28
- `dependenciesMeta`,
29
- `peerDependenciesMeta`,
30
- `binaries`
31
- ];
32
- class Lockfile {
33
- constructor(packages, data, legacy = false) {
34
- this.packages = packages;
35
- this.data = data;
36
- this.legacy = legacy;
37
- }
38
- static async load(path) {
39
- const lockfileContents = await fs__default.default.readFile(path, "utf8");
40
- return Lockfile.parse(lockfileContents);
41
- }
42
- static parse(content) {
43
- const legacy = LEGACY_REGEX.test(content);
44
- let data;
45
- try {
46
- data = parsers.parseSyml(content);
47
- } catch (err) {
48
- throw new Error(`Failed yarn.lock parse, ${err}`);
49
- }
50
- const packages = /* @__PURE__ */ new Map();
51
- for (const [key, value] of Object.entries(data)) {
52
- if (SPECIAL_OBJECT_KEYS.includes(key)) continue;
53
- const [, name, ranges] = ENTRY_PATTERN.exec(key) ?? [];
54
- if (!name) {
55
- throw new Error(`Failed to parse yarn.lock entry '${key}'`);
56
- }
57
- let queries = packages.get(name);
58
- if (!queries) {
59
- queries = [];
60
- packages.set(name, queries);
61
- }
62
- for (let range of ranges.split(/\s*,\s*/)) {
63
- if (range.startsWith(`${name}@`)) {
64
- range = range.slice(`${name}@`.length);
65
- }
66
- if (range.startsWith("npm:")) {
67
- range = range.slice("npm:".length);
68
- }
69
- queries.push({ range, version: value.version, dataKey: key });
70
- }
71
- }
72
- return new Lockfile(packages, data, legacy);
73
- }
74
- /** Get the entries for a single package in the lockfile */
75
- get(name) {
76
- return this.packages.get(name);
77
- }
78
- /** Returns the name of all packages available in the lockfile */
79
- keys() {
80
- return this.packages.keys();
81
- }
82
- /** Analyzes the lockfile to identify possible actions and warnings for the entries */
83
- analyze(options) {
84
- const { filter, localPackages } = options;
85
- const result = {
86
- invalidRanges: [],
87
- newVersions: [],
88
- newRanges: []
89
- };
90
- for (const [name, allEntries] of this.packages) {
91
- if (filter && !filter(name)) {
92
- continue;
93
- }
94
- const invalid = allEntries.filter(
95
- (e) => !semver__default.default.validRange(e.range) && !e.range.startsWith("workspace:")
96
- );
97
- result.invalidRanges.push(
98
- ...invalid.map(({ range }) => ({ name, range }))
99
- );
100
- const entries = allEntries.filter((e) => semver__default.default.validRange(e.range));
101
- if (entries.length < 2) {
102
- continue;
103
- }
104
- const versions = Array.from(new Set(entries.map((e) => e.version))).map((v) => {
105
- if (v === "0.0.0-use.local") {
106
- const local = localPackages.get(name);
107
- if (!local) {
108
- throw new Error(`No local package found for ${name}`);
109
- }
110
- if (!local.packageJson.version) {
111
- throw new Error(`No version found for local package ${name}`);
112
- }
113
- return {
114
- entryVersion: v,
115
- actualVersion: local.packageJson.version
116
- };
117
- }
118
- return { entryVersion: v, actualVersion: v };
119
- }).sort((v1, v2) => semver__default.default.rcompare(v1.actualVersion, v2.actualVersion));
120
- if (versions.length < 2) {
121
- continue;
122
- }
123
- const acceptedVersions = /* @__PURE__ */ new Set();
124
- for (const { version, range } of entries) {
125
- const acceptedVersion = versions.find(
126
- (v) => semver__default.default.satisfies(v.actualVersion, range)
127
- );
128
- if (!acceptedVersion) {
129
- throw new Error(
130
- `No existing version was accepted for range ${range}, searching through ${versions}, for package ${name}`
131
- );
132
- }
133
- if (acceptedVersion.entryVersion !== version) {
134
- result.newVersions.push({
135
- name,
136
- range,
137
- newVersion: acceptedVersion.entryVersion,
138
- oldVersion: version
139
- });
140
- }
141
- acceptedVersions.add(acceptedVersion.actualVersion);
142
- }
143
- if (acceptedVersions.size === 1) {
144
- continue;
145
- }
146
- const maxVersion = Array.from(acceptedVersions).sort(semver__default.default.rcompare)[0];
147
- const maxEntry = entries.filter((e) => semver__default.default.satisfies(maxVersion, e.range)).map((e) => ({ e, min: semver__default.default.minVersion(e.range) })).filter((p) => p.min).sort((a, b) => semver__default.default.rcompare(a.min, b.min))[0]?.e;
148
- if (!maxEntry) {
149
- throw new Error(
150
- `No entry found that satisfies max version '${maxVersion}'`
151
- );
152
- }
153
- for (const { version, range } of entries) {
154
- if (semver__default.default.satisfies(maxVersion, range)) {
155
- continue;
156
- }
157
- result.newRanges.push({
158
- name,
159
- oldRange: range,
160
- newRange: maxEntry.range,
161
- oldVersion: version,
162
- newVersion: maxVersion
163
- });
164
- }
165
- }
166
- return result;
167
- }
168
- remove(name, range) {
169
- const query = `${name}@${range}`;
170
- const existed = Boolean(this.data[query]);
171
- delete this.data[query];
172
- const newEntries = this.packages.get(name)?.filter((e) => e.range !== range);
173
- if (newEntries) {
174
- this.packages.set(name, newEntries);
175
- }
176
- return existed;
177
- }
178
- /** Modifies the lockfile by bumping packages to the suggested versions */
179
- replaceVersions(results) {
180
- for (const { name, range, oldVersion, newVersion } of results) {
181
- const query = `${name}@${range}`;
182
- const entryData = this.data[query];
183
- if (!entryData) {
184
- throw new Error(`No entry data for ${query}`);
185
- }
186
- if (entryData.version !== oldVersion) {
187
- throw new Error(
188
- `Expected existing version data for ${query} to be ${oldVersion}, was ${entryData.version}`
189
- );
190
- }
191
- const matchingEntry = Object.entries(this.data).find(
192
- ([q, e]) => q.startsWith(`${name}@`) && e.version === newVersion
193
- );
194
- if (!matchingEntry) {
195
- throw new Error(
196
- `No matching entry found for ${name} at version ${newVersion}`
197
- );
198
- }
199
- this.data[query] = matchingEntry[1];
200
- const entry = this.packages.get(name)?.find((e) => e.range === range);
201
- if (!entry) {
202
- throw new Error(`No entry data for ${query}`);
203
- }
204
- if (entry.version !== oldVersion) {
205
- throw new Error(
206
- `Expected existing version data for ${query} to be ${oldVersion}, was ${entryData.version}`
207
- );
208
- }
209
- entry.version = newVersion;
210
- }
211
- }
212
- async save(path) {
213
- await fs__default.default.writeFile(path, this.toString(), "utf8");
214
- }
215
- toString() {
216
- return this.legacy ? lockfile.stringify(this.data) : NEW_HEADER + parsers.stringifySyml(this.data);
217
- }
218
- }
219
-
220
- exports.Lockfile = Lockfile;
221
- //# sourceMappingURL=Lockfile-BndFvzHc.cjs.js.map
@@ -1,112 +0,0 @@
1
- 'use strict';
2
-
3
- var Lockfile = require('./Lockfile-BndFvzHc.cjs.js');
4
- require('minimatch');
5
- require('@manypkg/get-packages');
6
- require('chalk');
7
- require('./yarn-Ukl9MOS0.cjs.js');
8
- require('./run-Dyr28990.cjs.js');
9
- var index = require('./index-7vT98W4X.cjs.js');
10
- var partition = require('lodash/partition');
11
- var cliNode = require('@backstage/cli-node');
12
- require('fs-extra');
13
- require('semver');
14
- require('@yarnpkg/parsers');
15
- require('@yarnpkg/lockfile');
16
- require('@backstage/errors');
17
- require('child_process');
18
- require('util');
19
- require('commander');
20
- require('@backstage/cli-common');
21
-
22
- function _interopDefaultCompat (e) { return e && typeof e === 'object' && 'default' in e ? e : { default: e }; }
23
-
24
- var partition__default = /*#__PURE__*/_interopDefaultCompat(partition);
25
-
26
- const INCLUDED = [/^@backstage\//];
27
- const includedFilter = (name) => INCLUDED.some((pattern) => pattern.test(name));
28
- const FORBID_DUPLICATES = [/^@backstage\/\w+-app-api$/, /^@backstage\/plugin-/];
29
- const ALLOW_DUPLICATES = [
30
- /^@backstage\/core-plugin-api$/,
31
- // Duplicates of libraries are OK
32
- // TODO(Rugvip): Check this using package role instead
33
- /^@backstage\/plugin-.*-react$/,
34
- /^@backstage\/plugin-.*-node$/,
35
- /^@backstage\/plugin-.*-common$/
36
- ];
37
- const forbiddenDuplicatesFilter = (name) => FORBID_DUPLICATES.some((pattern) => pattern.test(name)) && !ALLOW_DUPLICATES.some((pattern) => pattern.test(name));
38
- var lint = async (cmd) => {
39
- const fix = Boolean(cmd.fix);
40
- let success = true;
41
- const lockfilePath = index.paths.resolveTargetRoot("yarn.lock");
42
- const lockfile = await Lockfile.Lockfile.load(lockfilePath);
43
- const result = lockfile.analyze({
44
- filter: includedFilter,
45
- localPackages: cliNode.PackageGraph.fromPackages(
46
- await cliNode.PackageGraph.listTargetPackages()
47
- )
48
- });
49
- logArray(
50
- result.invalidRanges,
51
- "The following packages versions are invalid and can't be analyzed:",
52
- (e) => ` ${e.name} @ ${e.range}`
53
- );
54
- if (fix) {
55
- lockfile.replaceVersions(result.newVersions);
56
- await lockfile.save(lockfilePath);
57
- } else {
58
- const [newVersionsForbidden, newVersionsAllowed] = partition__default.default(
59
- result.newVersions,
60
- ({ name }) => forbiddenDuplicatesFilter(name)
61
- );
62
- if (newVersionsForbidden.length && !fix) {
63
- success = false;
64
- }
65
- logArray(
66
- newVersionsForbidden,
67
- "The following packages must be deduplicated, this can be done automatically with --fix",
68
- (e) => ` ${e.name} @ ${e.range} bumped from ${e.oldVersion} to ${e.newVersion}`
69
- );
70
- logArray(
71
- newVersionsAllowed,
72
- "The following packages can be deduplicated, this can be done automatically with --fix",
73
- (e) => ` ${e.name} @ ${e.range} bumped from ${e.oldVersion} to ${e.newVersion}`
74
- );
75
- }
76
- const [newRangesForbidden, newRangesAllowed] = partition__default.default(
77
- result.newRanges,
78
- ({ name }) => forbiddenDuplicatesFilter(name)
79
- );
80
- if (newRangesForbidden.length) {
81
- success = false;
82
- }
83
- logArray(
84
- newRangesForbidden,
85
- "The following packages must be deduplicated by updating dependencies in package.json",
86
- (e) => ` ${e.name} @ ${e.oldRange} should be changed to ${e.newRange}`
87
- );
88
- logArray(
89
- newRangesAllowed,
90
- "The following packages can be deduplicated by updating dependencies in package.json",
91
- (e) => ` ${e.name} @ ${e.oldRange} should be changed to ${e.newRange}`
92
- );
93
- if (!success) {
94
- throw new Error("Failed versioning check");
95
- }
96
- };
97
- function logArray(arr, header, each) {
98
- if (arr.length === 0) {
99
- return;
100
- }
101
- console.log(header);
102
- console.log();
103
- for (const e of arr) {
104
- console.log(each(e));
105
- }
106
- console.log();
107
- }
108
-
109
- exports.default = lint;
110
- exports.forbiddenDuplicatesFilter = forbiddenDuplicatesFilter;
111
- exports.includedFilter = includedFilter;
112
- //# sourceMappingURL=lint-CCzUmZcU.cjs.js.map