@backstage/cli 0.26.11 → 0.27.0-next.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.
- package/CHANGELOG.md +52 -0
- package/config/eslint-factory.js +1 -0
- package/dist/cjs/Lockfile-B4mqBkH6.cjs.js +86 -0
- package/dist/cjs/{build-DwlXzIpR.cjs.js → build-CKbg8vDy.cjs.js} +8 -13
- package/dist/cjs/{buildBackend-CrncxAY5.cjs.js → buildBackend-CKvZxnhd.cjs.js} +17 -41
- package/dist/cjs/{buildWorkspace-D95Cv1QN.cjs.js → buildWorkspace-Bgal1pOb.cjs.js} +4 -4
- package/dist/cjs/{bump-b90k9Vrg.cjs.js → bump-CiNV2fUk.cjs.js} +7 -84
- package/dist/cjs/{clean-Bev614vS.cjs.js → clean-DWLquyLr.cjs.js} +2 -2
- package/dist/cjs/{clean-Cn9pRgoI.cjs.js → clean-zL7jVsU5.cjs.js} +2 -2
- package/dist/cjs/{codeowners-C_BzEYI6.cjs.js → codeowners-BrkuyJ8l.cjs.js} +2 -2
- package/dist/cjs/{config-EizsMYjy.cjs.js → config-OxHvAWIF.cjs.js} +43 -35
- package/dist/cjs/{createDistWorkspace-CqCdLqOV.cjs.js → createDistWorkspace-DwyDvZfi.cjs.js} +3 -3
- package/dist/cjs/{createPlugin-Dp_zJ1vU.cjs.js → createPlugin-Ck9TOlnh.cjs.js} +6 -6
- package/dist/cjs/{diff-SflPPir6.cjs.js → diff-Dm8uwN3O.cjs.js} +2 -2
- package/dist/cjs/{docs-B0MlNQaZ.cjs.js → docs-DiVm3Jyl.cjs.js} +3 -3
- package/dist/cjs/{fix-BoMIpogO.cjs.js → fix-D7YmpV2S.cjs.js} +2 -2
- package/dist/cjs/{index-D6bTzT6C.cjs.js → index-0ipl86K1.cjs.js} +19 -15
- package/dist/cjs/{index-Do6EL2Yb.cjs.js → index-Bv4-PI5M.cjs.js} +4 -4
- package/dist/cjs/{index-JoytU5ZM.cjs.js → index-D18yXEOi.cjs.js} +2 -2
- package/dist/cjs/{index-nl4fBJN1.cjs.js → index-LFa1qFkm.cjs.js} +49 -63
- package/dist/cjs/{index-7vT98W4X.cjs.js → index-bOEMttRt.cjs.js} +47 -47
- package/dist/cjs/{info-BRPLyhql.cjs.js → info-D2kXSViM.cjs.js} +4 -4
- package/dist/cjs/{install-DBTY3GMv.cjs.js → install-Bps4yUpK.cjs.js} +5 -5
- package/dist/cjs/lint-Dkx_fBkS.cjs.js +10 -0
- package/dist/cjs/{lint-6Ua9puez.cjs.js → lint-lreWPKDb.cjs.js} +2 -2
- package/dist/cjs/{lint-DmKqylEy.cjs.js → lint-sP18LtkH.cjs.js} +2 -2
- package/dist/cjs/{list-deprecations-DNYfBnHZ.cjs.js → list-deprecations-DarYxnzb.cjs.js} +2 -2
- package/dist/cjs/{packageDetection-DlDcN5Ll.cjs.js → moduleFederation-Ds12A1ny.cjs.js} +94 -25
- package/dist/cjs/{new-WebKpNSz.cjs.js → new-D72AQ8YF.cjs.js} +6 -6
- package/dist/cjs/{pack-5if7U6_6.cjs.js → pack-BFAsZEaP.cjs.js} +2 -2
- package/dist/cjs/{packageExports-Ddqkury2.cjs.js → packageExports-CKvYT5Dd.cjs.js} +3 -3
- package/dist/cjs/{packageLintConfigs-CrhcoEVX.cjs.js → packageLintConfigs-BJUnt71U.cjs.js} +3 -3
- package/dist/cjs/{packageRole-CBF_rIK0.cjs.js → packageRole-BCFLf-ng.cjs.js} +2 -2
- package/dist/cjs/{packages-RRALGdRj.cjs.js → packages-tE0j2nFD.cjs.js} +3 -3
- package/dist/cjs/{print-Caq1MMDY.cjs.js → print-CE1QTUoS.cjs.js} +3 -3
- package/dist/cjs/{role-DNHddFRX.cjs.js → role-5g8jmQmw.cjs.js} +2 -2
- package/dist/cjs/{run-Dyr28990.cjs.js → run-D3KP0xX6.cjs.js} +2 -2
- package/dist/cjs/{schema-CXKpYRvf.cjs.js → schema-DhYVPVv8.cjs.js} +3 -3
- package/dist/cjs/{tasks-CMO3PrbZ.cjs.js → tasks-CFmZJX_z.cjs.js} +2 -2
- package/dist/cjs/{test-CyF0ge7_.cjs.js → test-BqJnIwQq.cjs.js} +3 -3
- package/dist/cjs/{test-CTXtMelk.cjs.js → test-CBw6il53.cjs.js} +3 -3
- package/dist/cjs/{validate-CPunUthn.cjs.js → validate-CebIxFrQ.cjs.js} +3 -3
- package/dist/index.cjs.js +1 -1
- package/package.json +10 -10
- package/templates/default-backend-plugin/package.json.hbs +0 -1
- package/templates/default-backend-plugin/src/service/router.ts +2 -3
- package/dist/cjs/Lockfile-BndFvzHc.cjs.js +0 -221
- package/dist/cjs/lint-CCzUmZcU.cjs.js +0 -112
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
3
|
var productionPack = require('./productionPack-BWU8WkGs.cjs.js');
|
|
4
|
-
var index = require('./index-
|
|
4
|
+
var index = require('./index-bOEMttRt.cjs.js');
|
|
5
5
|
var fs = require('fs-extra');
|
|
6
6
|
var publishing = require('./publishing-DQtsKTbc.cjs.js');
|
|
7
7
|
require('npm-packlist');
|
|
@@ -30,4 +30,4 @@ const post = async () => {
|
|
|
30
30
|
|
|
31
31
|
exports.post = post;
|
|
32
32
|
exports.pre = pre;
|
|
33
|
-
//# sourceMappingURL=pack-
|
|
33
|
+
//# sourceMappingURL=pack-BFAsZEaP.cjs.js.map
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var fix = require('./fix-
|
|
3
|
+
var fix = require('./fix-D7YmpV2S.cjs.js');
|
|
4
4
|
require('@backstage/cli-node');
|
|
5
5
|
require('fs-extra');
|
|
6
6
|
require('path');
|
|
7
|
-
require('./index-
|
|
7
|
+
require('./index-bOEMttRt.cjs.js');
|
|
8
8
|
require('commander');
|
|
9
9
|
require('chalk');
|
|
10
10
|
require('semver');
|
|
@@ -24,4 +24,4 @@ async function command() {
|
|
|
24
24
|
}
|
|
25
25
|
|
|
26
26
|
exports.command = command;
|
|
27
|
-
//# sourceMappingURL=packageExports-
|
|
27
|
+
//# sourceMappingURL=packageExports-CKvYT5Dd.cjs.js.map
|
|
@@ -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-
|
|
6
|
+
var run = require('./run-D3KP0xX6.cjs.js');
|
|
7
7
|
require('child_process');
|
|
8
|
-
require('./index-
|
|
8
|
+
require('./index-bOEMttRt.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-
|
|
81
|
+
//# sourceMappingURL=packageLintConfigs-BJUnt71U.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-
|
|
7
|
+
var index = require('./index-bOEMttRt.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-
|
|
58
|
+
//# sourceMappingURL=packageRole-BCFLf-ng.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-
|
|
5
|
+
var index = require('./index-bOEMttRt.cjs.js');
|
|
6
6
|
var yarn = require('./yarn-Ukl9MOS0.cjs.js');
|
|
7
|
-
var run = require('./run-
|
|
7
|
+
var run = require('./run-D3KP0xX6.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-
|
|
75
|
+
//# sourceMappingURL=packages-tE0j2nFD.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-
|
|
5
|
+
var config = require('./config-OxHvAWIF.cjs.js');
|
|
6
6
|
require('@backstage/config-loader');
|
|
7
|
-
require('./index-
|
|
7
|
+
require('./index-bOEMttRt.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-
|
|
61
|
+
//# sourceMappingURL=print-CE1QTUoS.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-
|
|
4
|
+
var index = require('./index-bOEMttRt.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-
|
|
24
|
+
//# sourceMappingURL=role-5g8jmQmw.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-
|
|
4
|
+
var index = require('./index-bOEMttRt.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-
|
|
81
|
+
//# sourceMappingURL=run-D3KP0xX6.cjs.js.map
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
3
|
var yaml = require('yaml');
|
|
4
|
-
var config = require('./config-
|
|
4
|
+
var config = require('./config-OxHvAWIF.cjs.js');
|
|
5
5
|
var configLoader = require('@backstage/config-loader');
|
|
6
6
|
require('@backstage/config');
|
|
7
|
-
require('./index-
|
|
7
|
+
require('./index-bOEMttRt.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-
|
|
45
|
+
//# sourceMappingURL=schema-DhYVPVv8.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-
|
|
12
|
+
var index = require('./index-bOEMttRt.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-
|
|
188
|
+
//# sourceMappingURL=tasks-CFmZJX_z.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-
|
|
6
|
-
var run = require('./run-
|
|
5
|
+
var index = require('./index-bOEMttRt.cjs.js');
|
|
6
|
+
var run = require('./run-D3KP0xX6.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-
|
|
126
|
+
//# sourceMappingURL=test-BqJnIwQq.cjs.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var index = require('./index-
|
|
4
|
-
var run = require('./run-
|
|
3
|
+
var index = require('./index-bOEMttRt.cjs.js');
|
|
4
|
+
var run = require('./run-D3KP0xX6.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-
|
|
59
|
+
//# sourceMappingURL=test-CBw6il53.cjs.js.map
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var config = require('./config-
|
|
3
|
+
var config = require('./config-OxHvAWIF.cjs.js');
|
|
4
4
|
require('@backstage/config-loader');
|
|
5
5
|
require('@backstage/config');
|
|
6
|
-
require('./index-
|
|
6
|
+
require('./index-bOEMttRt.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-
|
|
28
|
+
//# sourceMappingURL=validate-CebIxFrQ.cjs.js.map
|
package/dist/index.cjs.js
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@backstage/cli",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.27.0-next.1",
|
|
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.
|
|
49
|
+
"@backstage/config-loader": "^1.9.0-next.1",
|
|
50
50
|
"@backstage/errors": "^1.2.4",
|
|
51
51
|
"@backstage/eslint-plugin": "^0.1.8",
|
|
52
|
-
"@backstage/integration": "^1.
|
|
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.
|
|
160
|
-
"@backstage/backend-plugin-api": "^0.7.
|
|
161
|
-
"@backstage/backend-test-utils": "^0.4.
|
|
159
|
+
"@backstage/backend-common": "^0.23.4-next.1",
|
|
160
|
+
"@backstage/backend-plugin-api": "^0.7.1-next.1",
|
|
161
|
+
"@backstage/backend-test-utils": "^0.4.5-next.1",
|
|
162
162
|
"@backstage/config": "^1.2.0",
|
|
163
|
-
"@backstage/core-app-api": "^1.14.0",
|
|
164
|
-
"@backstage/core-components": "^0.14.
|
|
163
|
+
"@backstage/core-app-api": "^1.14.2-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.
|
|
167
|
-
"@backstage/test-utils": "^1.5.
|
|
166
|
+
"@backstage/dev-utils": "^1.0.37-next.1",
|
|
167
|
+
"@backstage/test-utils": "^1.5.10-next.1",
|
|
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:
|
|
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
|