Skip to content

Commit 6795e82

Browse files
authoredMar 18, 2023
refactor(deps): upgrade to latest glob, rimraf and minimatch (#4040)
Upgrade to the latest `glob`, `rimraf` and `minimatch` versions and do minor refactoring. Also remove `mkdirp`, since it is no longer needed.
1 parent 07c4397 commit 6795e82

26 files changed

+5093
-3427
lines changed
 

‎e2e/package-lock.json

+1,309-1,171
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

‎e2e/package.json

-1
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,6 @@
3434
"karma-mocha": "2.0.1",
3535
"karma-sourcemap-loader": "0.4.0",
3636
"karma-webpack": "5.0.0",
37-
"load-grunt-tasks": "5.1.0",
3837
"mocha": "10.2.0",
3938
"mutation-testing-metrics": "1.7.14",
4039
"mutation-testing-report-schema": "1.7.14",

‎e2e/test/in-place/verify/verify.js

+2-4
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
import { promises as fsPromises } from 'fs';
22
import path from 'path';
3-
import { promisify } from 'util';
43
import { fileURLToPath, URL } from 'url';
54

65
import chai from 'chai';
@@ -13,7 +12,6 @@ import { expectMetricsJsonToMatchSnapshot } from '../../../helpers.js';
1312

1413
chai.use(chaiAsPromised);
1514
const expect = chai.expect;
16-
const rm = promisify(rimraf);
1715

1816
const rootResolve = path.resolve.bind(path, fileURLToPath(new URL('..', import.meta.url)));
1917

@@ -29,8 +27,8 @@ describe('in place', () => {
2927
originalAddJSContent = await readAddJS();
3028
});
3129
afterEach(async () => {
32-
await rm(rootResolve('reports'));
33-
await rm(rootResolve('.lock'));
30+
await rimraf(rootResolve('reports'));
31+
await rimraf(rootResolve('.lock'));
3432
});
3533
it('should reset files after a successful run', async () => {
3634
execaSync('stryker', ['run']);

‎e2e/test/mono-schema/verify/verify.js

+12-2
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ describe('The Stryker meta schema', () => {
3737
});
3838
it('should invalidate an invalid schema', async () => {
3939
expect(validator(invalid)).false;
40-
expect(validator.errors).deep.eq(expectedErrors);
40+
expect(validator.errors.sort(orderByInstancePath)).deep.eq(expectedErrors);
4141
});
4242
const expectedErrors = [
4343
{
@@ -94,5 +94,15 @@ describe('The Stryker meta schema', () => {
9494
},
9595
message: 'must be object',
9696
},
97-
];
97+
].sort(orderByInstancePath);
98+
99+
/**
100+
*
101+
* @param {import('ajv').ErrorObject} a
102+
* @param {import('ajv').ErrorObject} b
103+
* @returns {number}
104+
*/
105+
function orderByInstancePath(a, b) {
106+
return a.instancePath.localeCompare(b.instancePath);
107+
}
98108
});

‎e2e/test/typescript-project-references/package.json

+2-2
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
"description": "A module to perform an integration test",
66
"main": "index.js",
77
"scripts": {
8-
"clean": "rimraf dist",
8+
"clean": "rimraf dist .stryker-tmp reports",
99
"prebuild": "npm run clean",
1010
"build": "tsc -b tsconfig.json",
1111
"pretest:unit": "npm run build",
@@ -16,7 +16,7 @@
1616
},
1717
"mocha": {
1818
"spec": [
19-
"test/**/*.js"
19+
"dist/test/*.js"
2020
]
2121
},
2222
"author": "",

‎e2e/test/typescript-project-references/src/core/tsconfig.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"extends": "../../tsconfig.settings",
33
"compilerOptions": {
4-
"outDir": "../dist/src"
4+
"outDir": "../../dist/core"
55
},
66
"references": [
77
{ "path": "../utils" }

‎e2e/test/typescript-project-references/src/core/tsconfig.tsbuildinfo

-1
This file was deleted.

‎e2e/test/typescript-project-references/test/job.spec.ts ‎e2e/test/typescript-project-references/src/test/job.spec.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { expect } from 'chai';
2-
import {start} from '../src/core/job';
2+
import {start} from '../core/job';
33

44
describe(start.name, () => {
55
it('should format a correct message', () => {
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
{
2+
"extends": "../../tsconfig.settings",
3+
"compilerOptions": {
4+
"outDir": "../../dist/test",
5+
"types": ["mocha"]
6+
},
7+
"references": [
8+
{ "path": "../core" }
9+
]
10+
}
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"extends": "../../tsconfig.settings",
33
"compilerOptions": {
4-
"outDir": "../dist/utils",
4+
"outDir": "../../dist/utils",
55
}
66
}

‎e2e/test/typescript-project-references/src/utils/tsconfig.tsbuildinfo

-1
This file was deleted.

‎e2e/test/typescript-project-references/stryker.conf.json

-1
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@
77
"coverageAnalysis": "perTest",
88
"reporters": ["json", "html", "progress", "clear-text"],
99
"checkers": ["typescript"],
10-
"tsconfigFile": "src/core/tsconfig.json",
1110
"fileLogLevel": "warn",
1211
"buildCommand": "npm run build",
1312
"plugins": [
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,8 @@
11
{
2-
"include": ["src/core", "src/utils", "test"]
2+
"files": [],
3+
"references": [
4+
{ "path": "src/core" },
5+
{ "path": "src/utils" },
6+
{ "path": "src/test" }
7+
]
38
}
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,19 @@
11
{
22
"compilerOptions": {
33
"strict": true,
4-
"target": "es5",
4+
"target": "es2019",
55
"moduleResolution": "node",
66
"module": "commonjs",
7+
"lib": ["es2019"],
78
"composite": true,
89
"declaration": true,
910
"declarationMap": true,
1011

1112
// These settings should be overridden by the typescript checker
1213
"noUnusedLocals": true,
1314
"noUnusedParameters": true,
15+
"skipLibCheck": true,
1416

15-
"types": []
17+
"types": ["node"]
1618
}
1719
}

‎helpers/bootstrap-local-dependencies.js

+15-28
Original file line numberDiff line numberDiff line change
@@ -1,27 +1,11 @@
11
// @ts-check
22
import { LocalInstaller, progress } from 'install-local';
33
import fs from 'fs';
4-
import glob from 'glob';
54
import path from 'path';
65

7-
console.log('starting installation of local dependencies');
6+
import { glob } from 'glob';
87

9-
/**
10-
* @param {string} pattern
11-
* @param {glob.IOptions} options
12-
* @returns {Promise<string[]>}
13-
*/
14-
function globAsPromised(pattern, options) {
15-
return new Promise((res, rej) => {
16-
glob(pattern, options, (err, matches) => {
17-
if (err) {
18-
rej(err);
19-
} else {
20-
res(matches);
21-
}
22-
});
23-
});
24-
}
8+
console.log('starting installation of local dependencies');
259

2610
/**
2711
* @typedef Package
@@ -37,23 +21,26 @@ function globAsPromised(pattern, options) {
3721
*/
3822
export async function bootstrapLocalDependencies(directory, packageJsonGlobs = ['package.json', 'test/*/package.json']) {
3923
console.log(`bootstrap ${path.resolve(directory)} (using ${packageJsonGlobs.join(',')})`);
40-
const files = (await Promise.all(packageJsonGlobs.map((globPattern) => globAsPromised(globPattern, { cwd: path.resolve(directory) })))).flat();
41-
const packages = await Promise.all(files.map(fileName => fs.promises.readFile(fileName, 'utf-8')
42-
.then((rawContent) => {
43-
/**
44-
* @type {Package}
45-
*/
46-
const content = JSON.parse(rawContent);
47-
return { dir: path.dirname(fileName), content };
48-
})));
24+
const files = (await Promise.all(packageJsonGlobs.map((globPattern) => glob(globPattern, { cwd: path.resolve(directory) })))).flat();
25+
const packages = await Promise.all(
26+
files.map((fileName) =>
27+
fs.promises.readFile(fileName, 'utf-8').then((rawContent) => {
28+
/**
29+
* @type {Package}
30+
*/
31+
const content = JSON.parse(rawContent);
32+
return { dir: path.dirname(fileName), content };
33+
})
34+
)
35+
);
4936
/**
5037
* @type {import('install-local').ListByPackage}
5138
*/
5239
const sourcesByTarget = {};
5340
for (const pkg of packages) {
5441
const localDeps = pkg.content.localDependencies;
5542
if (localDeps) {
56-
sourcesByTarget[path.resolve(pkg.dir)] = Object.keys(localDeps).map(key => path.resolve(pkg.dir, localDeps[key]));
43+
sourcesByTarget[path.resolve(pkg.dir)] = Object.keys(localDeps).map((key) => path.resolve(pkg.dir, localDeps[key]));
5744
}
5845
}
5946
const localInstaller = new LocalInstaller(sourcesByTarget);

‎package-lock.json

+3,486-1,793
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

‎package.json

+4-8
Original file line numberDiff line numberDiff line change
@@ -6,15 +6,11 @@
66
"@types/chai": "4.3.4",
77
"@types/chai-as-promised": "7.1.5",
88
"@types/chai-jest-snapshot": "1.3.6",
9-
"@types/glob": "8.1.0",
109
"@types/istanbul": "0.4.30",
1110
"@types/karma": "6.3.3",
1211
"@types/lodash": "4.14.191",
13-
"@types/minimatch": "5.1.2",
14-
"@types/mkdirp": "1.0.2",
1512
"@types/mocha": "10.0.1",
1613
"@types/node": "18.15.3",
17-
"@types/rimraf": "3.0.2",
1814
"@types/sinon": "10.0.13",
1915
"@types/sinon-chai": "3.2.9",
2016
"@types/source-map-support": "0.5.6",
@@ -32,16 +28,16 @@
3228
"eslint-plugin-prettier": "4.2.1",
3329
"eslint-plugin-unicorn": "46.0.0",
3430
"execa": "7.1.1",
35-
"glob": "8.1.0",
31+
"glob": "9.3.0",
3632
"install-local": "3.0.1",
3733
"jasmine": "4.6.0",
3834
"jasmine-core": "4.6.0",
3935
"json-schema-to-typescript": "12.0.0",
4036
"lerna": "6.5.1",
41-
"minimatch": "5.1.6",
37+
"minimatch": "7.4.2",
4238
"mocha": "10.2.0",
4339
"prettier": "2.8.4",
44-
"rimraf": "3.0.2",
40+
"rimraf": "4.4.0",
4541
"sinon": "15.0.2",
4642
"sinon-chai": "3.7.0",
4743
"source-map-support": "0.5.21",
@@ -52,7 +48,7 @@
5248
"postinstall": "lerna bootstrap",
5349
"lint": "eslint . --resolve-plugins-relative-to . --ext .ts,.js",
5450
"lint:fix": "npm run lint -- --fix",
55-
"clean": "rimraf \"packages/*/{.nyc_output,reports,coverage,src-generated,*.tsbuildinfo,.stryker-tmp,dist,testResources/tmp}\" \"packages/core/schema/stryker-schema.json\"",
51+
"clean": "rimraf --glob \"packages/*/{.nyc_output,reports,coverage,src-generated,*.tsbuildinfo,.stryker-tmp,dist,testResources/tmp}\" \"packages/core/schema/stryker-schema.json\"",
5652
"generate": "node tasks/generate-json-schema-to-ts.js && node tasks/generate-mono-schema.js",
5753
"prebuild": "npm run generate",
5854
"build": "tsc -b && lerna run build",

‎packages/core/package-lock.json

+226-338
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

‎packages/core/package.json

+3-5
Original file line numberDiff line numberDiff line change
@@ -68,19 +68,18 @@
6868
"execa": "~7.1.0",
6969
"file-url": "~4.0.0",
7070
"get-port": "~6.1.0",
71-
"glob": "~8.1.0",
71+
"glob": "~9.3.0",
7272
"inquirer": "~9.1.0",
7373
"lodash.flatmap": "~4.5.0",
7474
"lodash.groupby": "~4.6.0",
7575
"log4js": "~6.9.0",
76-
"minimatch": "~5.1.0",
77-
"mkdirp": "~2.1.0",
76+
"minimatch": "~7.4.2",
7877
"mutation-testing-elements": "1.7.14",
7978
"mutation-testing-metrics": "1.7.14",
8079
"mutation-testing-report-schema": "1.7.14",
8180
"npm-run-path": "~5.1.0",
8281
"progress": "~2.0.0",
83-
"rimraf": "~3.0.0",
82+
"rimraf": "~4.4.0",
8483
"rxjs": "~7.8.0",
8584
"semver": "^7.3.5",
8685
"source-map": "~0.7.3",
@@ -96,7 +95,6 @@
9695
"@types/inquirer": "9.0.3",
9796
"@types/lodash.flatmap": "4.5.7",
9897
"@types/lodash.groupby": "4.6.7",
99-
"@types/minimatch": "5.1.2",
10098
"@types/node": "18.15.3",
10199
"@types/progress": "2.0.5",
102100
"@types/semver": "7.3.13",
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,6 @@
11
import path from 'path';
22
import { createReadStream, createWriteStream, promises as fs } from 'fs';
33

4-
import mkdirp from 'mkdirp';
5-
64
export const reporterUtil = {
75
copyFile(fromFilename: string, toFilename: string): Promise<void> {
86
return new Promise<void>((resolve, reject) => {
@@ -15,10 +13,8 @@ export const reporterUtil = {
1513
});
1614
},
1715

18-
mkdir: mkdirp,
19-
2016
async writeFile(fileName: string, content: string): Promise<void> {
21-
await mkdirp(path.dirname(fileName));
17+
await fs.mkdir(path.dirname(fileName), { recursive: true });
2218
await fs.writeFile(fileName, content, 'utf8');
2319
},
2420
};

‎packages/core/src/utils/file-utils.ts

+1-2
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,11 @@
11
import path from 'path';
22
import fs from 'fs';
3-
import { promisify } from 'util';
43

54
import rimraf from 'rimraf';
65
import { isErrnoException } from '@stryker-mutator/util';
76

87
export const fileUtils = {
9-
deleteDir: promisify(rimraf),
8+
deleteDir: rimraf,
109

1110
async cleanFolder(folderName: string): Promise<string | undefined> {
1211
try {

‎packages/core/test/integration/utils/file-utils.it.spec.ts

+2-6
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,12 @@
11
import os from 'os';
22
import path from 'path';
33
import { promises as fsPromises } from 'fs';
4-
import { promisify } from 'util';
54

6-
import mkdirp from 'mkdirp';
75
import { expect } from 'chai';
8-
import nodeGlob from 'glob';
6+
import { glob } from 'glob';
97

108
import { fileUtils } from '../../../src/utils/file-utils.js';
119

12-
const glob = promisify(nodeGlob);
13-
1410
describe('fileUtils', () => {
1511
describe('moveDirectoryRecursiveSync', () => {
1612
const from = path.resolve(os.tmpdir(), 'moveDirectoryRecursiveSyncFrom');
@@ -95,7 +91,7 @@ describe('fileUtils', () => {
9591
async function writeAll(files: Record<string, string>): Promise<void> {
9692
await Promise.all(
9793
Object.entries(files).map(async ([fileName, fileContent]) => {
98-
await mkdirp(path.dirname(fileName));
94+
await fsPromises.mkdir(path.dirname(fileName), { recursive: true });
9995
await fsPromises.writeFile(fileName, fileContent);
10096
})
10197
);

‎packages/mocha-runner/package-lock.json

-33
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

‎packages/mocha-runner/package.json

-1
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,6 @@
4444
},
4545
"devDependencies": {
4646
"@stryker-mutator/test-helpers": "6.4.1",
47-
"@types/glob": "8.1.0",
4847
"@types/node": "18.15.3"
4948
},
5049
"peerDependencies": {

‎tasks/generate-json-schema-to-ts.js

+4-10
Original file line numberDiff line numberDiff line change
@@ -1,28 +1,22 @@
11
// @ts-check
2-
import fs from 'fs';
2+
import { writeFile, mkdir, readFile } from 'fs/promises';
33
import path from 'path';
4-
5-
import { promisify } from 'util';
64
import { fileURLToPath } from 'url';
75

8-
import glob from 'glob';
6+
import { glob } from 'glob';
97
import { compile } from 'json-schema-to-typescript';
108

11-
const writeFile = promisify(fs.writeFile);
12-
const mkdir = promisify(fs.mkdir);
13-
149
const filename = fileURLToPath(import.meta.url);
1510
const dirname = path.dirname(filename);
1611
const resolveFromParent = path.resolve.bind(path, dirname, '..');
17-
const globAsPromised = promisify(glob);
1812

1913
/**
2014
*
2115
* @param {string} schemaFile
2216
*/
2317
async function generate(schemaFile) {
2418
const parsedFile = path.parse(schemaFile);
25-
const schema = preprocessSchema(JSON.parse(await fs.promises.readFile(schemaFile, 'utf-8')));
19+
const schema = preprocessSchema(JSON.parse(await readFile(schemaFile, 'utf-8')));
2620
const resolveOutputDir = path.resolve.bind(path, parsedFile.dir, '..', 'src-generated');
2721
const outFile = resolveOutputDir(`${parsedFile.name}.ts`);
2822
await mkdir(resolveOutputDir(), { recursive: true });
@@ -52,7 +46,7 @@ async function generate(schemaFile) {
5246
}
5347

5448
async function generateAllSchemas() {
55-
const files = await globAsPromised('packages/!(core)/schema/*.json', { cwd: resolveFromParent() });
49+
const files = await glob('packages/!(core)/schema/*.json', { cwd: resolveFromParent() });
5650
await Promise.all(files.map((fileName) => generate(resolveFromParent(fileName))));
5751
}
5852
generateAllSchemas().catch((err) => {

‎tasks/generate-mono-schema.js

+3-9
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,18 @@
11
// @ts-check
2-
import { writeFile as _writeFile, readFile as _readFile, mkdir as _mkdir } from 'fs';
2+
import { writeFile, readFile, mkdir } from 'fs/promises';
33
import path from 'path';
4-
5-
import { promisify } from 'util';
64
import { fileURLToPath } from 'url';
75

8-
import glob from 'glob';
6+
import { glob } from 'glob';
97

10-
const writeFile = promisify(_writeFile);
11-
const readFile = promisify(_readFile);
12-
const mkdir = promisify(_mkdir);
138
const dirname = path.dirname(fileURLToPath(import.meta.url));
149
const resolveFromParent = path.resolve.bind(path, dirname, '..');
15-
const globAsPromised = promisify(glob);
1610

1711
/**
1812
* Build the mono schema based on all schemas from the plugin as well as the Stryker core schema
1913
*/
2014
async function buildMonoSchema() {
21-
const schemaFiles = await globAsPromised('packages/!(core)/schema/*.json', { cwd: resolveFromParent() });
15+
const schemaFiles = await glob('packages/!(core)/schema/*.json', { cwd: resolveFromParent() });
2216
const allContent = await Promise.all(schemaFiles.map((schemaFile) => readFile(resolveFromParent(schemaFile), 'utf8')));
2317
const allSchemas = allContent.map((content) => JSON.parse(content));
2418
const monoSchema = {

0 commit comments

Comments
 (0)
Please sign in to comment.