1
0
mirror of https://github.com/svg/svgo.git synced 2025-07-12 06:41:40 +03:00

chore: improve jsdoc types and match most files (#2108)

This commit is contained in:
Seth Falco
2025-04-29 10:35:11 +01:00
committed by GitHub
parent 71a1254895
commit df87725b19
13 changed files with 264 additions and 226 deletions

View File

@ -1,5 +1,5 @@
import os from 'os';
import fs from 'fs';
import fs from 'fs/promises';
import path from 'path';
import {
VERSION,
@ -35,7 +35,7 @@ const importConfig = async (configFile) => {
*/
const isFile = async (file) => {
try {
const stats = await fs.promises.stat(file);
const stats = await fs.stat(file);
return stats.isFile();
} catch {
return false;

View File

@ -115,7 +115,7 @@
"sax": "^1.4.1"
},
"devDependencies": {
"@eslint/js": "^9.3.0",
"@eslint/js": "^9.25.1",
"@jest/globals": "^29.7.0",
"@rollup/plugin-commonjs": "^25.0.7",
"@rollup/plugin-node-resolve": "^15.2.3",
@ -125,8 +125,9 @@
"@types/jest": "^29.5.12",
"@types/node": "^20.12.11",
"@types/sax": "^1.2.7",
"@types/tar-stream": "^3.1.3",
"cross-env": "^7.0.3",
"eslint": "^9.3.0",
"eslint": "^9.25.1",
"globals": "^14.0.0",
"jest": "^29.7.0",
"pixelmatch": "^7.1.0",

View File

@ -41,7 +41,13 @@ export default [
format: 'cjs',
exports: 'named',
},
external: ['os', 'fs', 'url', 'path', ...Object.keys(PKG.dependencies)],
external: [
'os',
'fs/promises',
'url',
'path',
...Object.keys(PKG.dependencies),
],
onwarn(warning) {
throw Error(warning.toString());
},

View File

@ -13,15 +13,18 @@ const svgFiles = [
path.resolve(__dirname, 'testSvg/test.1.svg'),
];
const tempFolder = 'temp';
const noop = () => {};
/**
* @param {string[]} args
* @returns {Promise<Command>}
*/
function runProgram(args) {
const program = new Command();
svgo(program);
// prevent running process.exit
program.exitOverride(() => {});
// parser skips first two arguments
return program.parseAsync([0, 1, ...args]);
return program.parseAsync(['', '', ...args]);
}
describe('coa', function () {
@ -34,18 +37,10 @@ describe('coa', function () {
await fs.promises.rm(tempFolder, { force: true, recursive: true });
});
const initialConsoleError = global.console.error;
const initialProcessExit = global.process.exit;
function replaceConsoleError() {
global.process.exit = noop;
}
function restoreConsoleError() {
global.console.error = initialConsoleError;
global.process.exit = initialProcessExit;
}
/**
* @param {string} folderPath
* @returns {number}
*/
function calcFolderSvgWeight(folderPath) {
return fs
.readdirSync(folderPath)
@ -120,14 +115,9 @@ describe('coa', function () {
});
it('should throw error when stated in input folder does not exist', async () => {
replaceConsoleError();
try {
await expect(
runProgram(['--input', svgFolderPath + 'temp', '--output', tempFolder]),
).rejects.toThrow(/no such file or directory/);
} finally {
restoreConsoleError();
}
});
describe('stdout', () => {

View File

@ -1,2 +1,3 @@
/* eslint-disable no-undef */
// @ts-expect-error Testing malformed configuration.
export default { plugins };

View File

@ -1 +1,3 @@
export default { plugins }; // eslint-disable-line no-undef
/* eslint-disable no-undef */
// @ts-expect-error Testing malformed configuration.
export default { plugins };

View File

@ -1,32 +1,39 @@
import FS from 'fs';
import PATH from 'path';
import fs from 'fs/promises';
import path from 'path';
import { EOL } from 'os';
import { fileURLToPath } from 'url';
import { optimize } from '../../lib/svgo.js';
const regEOL = new RegExp(EOL, 'g');
/**
* @typedef {import('../../lib/svgo.js').PluginConfig} PluginConfig
* @typedef {import('../../lib/svgo.js').CustomPlugin} CustomPlugin
*/
const regFilename = /^(.*)\.(\d+)\.svg\.txt$/;
const __dirname = PATH.dirname(fileURLToPath(import.meta.url));
const __dirname = path.dirname(fileURLToPath(import.meta.url));
const files = await fs.readdir(__dirname);
describe('plugins tests', function () {
FS.readdirSync(__dirname).forEach(function (file) {
var match = file.match(regFilename),
index,
name;
for (let file of files) {
const match = file.match(regFilename);
let index;
/** @type {any} */
let name;
if (match) {
name = match[1];
index = match[2];
file = PATH.resolve(__dirname, file);
file = path.resolve(__dirname, file);
it(name + '.' + index, function () {
it(name + '.' + index, () => {
return readFile(file).then(function (data) {
// remove description
const items = normalize(data).split(/\s*===\s*/);
const test = items.length === 2 ? items[1] : items[0];
// extract test case
const [original, should, params] = test.split(/\s*@@@\s*/);
/** @type {Exclude<PluginConfig, CustomPlugin>} */
const plugin = {
name,
params: params ? JSON.parse(params) : {},
@ -48,18 +55,21 @@ describe('plugins tests', function () {
});
});
}
});
}
});
/**
* @param {string} file
* @returns {string}
*/
function normalize(file) {
return file.trim().replace(regEOL, '\n');
return file.trim().replaceAll(EOL, '\n');
}
/**
* @param {string} file
* @returns {Promise<string>}
*/
function readFile(file) {
return new Promise(function (resolve, reject) {
FS.readFile(file, 'utf8', function (err, data) {
if (err) return reject(err);
resolve(data);
});
});
return fs.readFile(file, 'utf-8');
}

View File

@ -1,7 +1,7 @@
import { matrixToTransform } from '../../plugins/_transforms.js';
/**
* @typedef {import('../../plugins/_transforms').TransformParams} TransformParams
* @typedef {import('../../plugins/_transforms.js').TransformParams} TransformParams
*/
/** @type {TransformParams} */

View File

@ -200,8 +200,13 @@ const extractTarGz = async (url, baseDir) => {
stream.resume();
next();
});
const response = await fetch(url);
await pipeline(response.body, zlib.createGunzip(), extract);
const { body } = await fetch(url);
if (!body) {
throw Error('No body returned when fetching SVGO Test Suite.');
}
await pipeline(body, zlib.createGunzip(), extract);
};
(async () => {

View File

@ -1,17 +1,18 @@
import FS from 'fs';
import PATH from 'path';
import fs from 'fs';
import path from 'path';
import { fileURLToPath } from 'url';
import { parseSvg } from '../../lib/parser.js';
const __dirname = PATH.dirname(fileURLToPath(import.meta.url));
const __dirname = path.dirname(fileURLToPath(import.meta.url));
describe('svg2js', function () {
describe('working svg', function () {
var filepath = PATH.resolve(__dirname, './test.svg'),
root;
describe('svg2js', () => {
describe('working svg', () => {
const filepath = path.resolve(__dirname, './test.svg');
/** @type {any} */
let root;
beforeAll(function (done) {
FS.readFile(filepath, 'utf8', function (err, data) {
beforeAll((done) => {
fs.readFile(filepath, 'utf8', (err, data) => {
if (err) {
throw err;
}
@ -21,26 +22,26 @@ describe('svg2js', function () {
});
});
describe('root', function () {
it('should exist', function () {
describe('root', () => {
it('should exist', () => {
expect(root).toStrictEqual(expect.anything());
});
it('should be an instance of Object', function () {
it('should be an instance of Object', () => {
expect(root).toBeInstanceOf(Object);
});
it('should have property "children"', function () {
it('should have property "children"', () => {
expect(root).toHaveProperty('children');
});
});
describe('root.children', function () {
it('should be an instance of Array', function () {
describe('root.children', () => {
it('should be an instance of Array', () => {
expect(root.children).toBeInstanceOf(Array);
});
it('should have length 4', function () {
it('should have length 4', () => {
expect(root.children).toHaveLength(4);
});
});
@ -72,7 +73,7 @@ describe('svg2js', function () {
});
});
describe('name', function () {
describe('name', () => {
it('should have property name: "svg"', function () {
expect(root.children[3]).toStrictEqual(
expect.objectContaining({
@ -82,22 +83,22 @@ describe('svg2js', function () {
});
});
describe('children', function () {
it('should exist', function () {
describe('children', () => {
it('should exist', () => {
expect(root.children[3].children).toStrictEqual(expect.anything());
});
it('should be an instance of Array', function () {
it('should be an instance of Array', () => {
expect(root.children[3].children).toBeInstanceOf(Array);
});
it('should eventually have length 3', function () {
it('should eventually have length 3', () => {
expect(root.children[3].children).toHaveLength(3);
});
});
describe('text nodes', function () {
it('should contain preserved whitespace', function () {
describe('text nodes', () => {
it('should contain preserved whitespace', () => {
const textNode = root.children[3].children[1].children[0].children[1];
expect(textNode.children[0].value).toBe(' test ');
});

View File

@ -6,12 +6,18 @@ import { VERSION, optimize, builtinPlugins } from '../../lib/svgo.js';
const __dirname = path.dirname(fileURLToPath(import.meta.url));
const regEOL = new RegExp(EOL, 'g');
/**
* @param {string} file
* @returns {string}
*/
const normalize = (file) => {
return file.trim().replace(regEOL, '\n');
return file.trim().replaceAll(EOL, '\n');
};
/**
* @param {string} file
* @returns {Promise<string[]>}
*/
const parseFixture = async (file) => {
const filepath = path.resolve(__dirname, file);
const content = await fs.readFile(filepath, 'utf-8');

View File

@ -2,12 +2,21 @@
"compilerOptions": {
"noEmit": true,
"module": "node16",
"target": "es2020",
"lib": ["es2020"],
"target": "es2021",
"lib": ["es2021"],
"allowJs": true,
"checkJs": true,
"strict": true,
"resolveJsonModule": true
},
"include": ["lib/**/*.js", "plugins/**/*", "test/cli/**/*"]
"exclude": [
".yarn/",
"coverage/",
"dist/",
"node_modules/",
"rollup.config.js",
"test/browser.js",
"test/regression.js",
"test/svgo.cjs"
]
}

303
yarn.lock
View File

@ -420,16 +420,43 @@ __metadata:
languageName: node
linkType: hard
"@eslint-community/regexpp@npm:^4.6.1":
version: 4.10.0
resolution: "@eslint-community/regexpp@npm:4.10.0"
checksum: 2a6e345429ea8382aaaf3a61f865cae16ed44d31ca917910033c02dc00d505d939f10b81e079fa14d43b51499c640138e153b7e40743c4c094d9df97d4e56f7b
"@eslint-community/regexpp@npm:^4.12.1":
version: 4.12.1
resolution: "@eslint-community/regexpp@npm:4.12.1"
checksum: 0d628680e204bc316d545b4993d3658427ca404ae646ce541fcc65306b8c712c340e5e573e30fb9f85f4855c0c5f6dca9868931f2fcced06417fbe1a0c6cd2d6
languageName: node
linkType: hard
"@eslint/eslintrc@npm:^3.1.0":
version: 3.1.0
resolution: "@eslint/eslintrc@npm:3.1.0"
"@eslint/config-array@npm:^0.20.0":
version: 0.20.0
resolution: "@eslint/config-array@npm:0.20.0"
dependencies:
"@eslint/object-schema": ^2.1.6
debug: ^4.3.1
minimatch: ^3.1.2
checksum: 55824ea31f0502166a6fea97176c9c25089a0354474cdc72a5f739b1cf6925f44f667bf8f4f3a9dabf1112ab0fa671778ca3f96f1499f31ec42caf84cae55005
languageName: node
linkType: hard
"@eslint/config-helpers@npm:^0.2.1":
version: 0.2.1
resolution: "@eslint/config-helpers@npm:0.2.1"
checksum: b463805bc319608436a8b19c94fd533d8196b326c03361db54c0f3ec59d7bd6337c9764bc945ef15df94f50443973241dc265f661b07aceed4938f7d1cf2e822
languageName: node
linkType: hard
"@eslint/core@npm:^0.13.0":
version: 0.13.0
resolution: "@eslint/core@npm:0.13.0"
dependencies:
"@types/json-schema": ^7.0.15
checksum: 4d1a4163ba7f667297ba6e60de82f41d139b01951e2870b1bb609072c3c5df68b0288cc911ce3af0564dfa19bfda23cbf04eebd243ccb4960e0b5f927aa9a723
languageName: node
linkType: hard
"@eslint/eslintrc@npm:^3.3.1":
version: 3.3.1
resolution: "@eslint/eslintrc@npm:3.3.1"
dependencies:
ajv: ^6.12.4
debug: ^4.3.2
@ -440,25 +467,48 @@ __metadata:
js-yaml: ^4.1.0
minimatch: ^3.1.2
strip-json-comments: ^3.1.1
checksum: b0a9bbd98c8b9e0f4d975b042ff9b874dde722b20834ea2ff46551c3de740d4f10f56c449b790ef34d7f82147cbddfc22b004a43cc885dbc2664bb134766b5e4
checksum: 8241f998f0857abf5a615072273b90b1244d75c1c45d217c6a8eb444c6e12bbb5506b4879c14fb262eb72b7d8e3d2f0542da2db1a7f414a12496ebb790fb4d62
languageName: node
linkType: hard
"@eslint/js@npm:9.3.0, @eslint/js@npm:^9.3.0":
version: 9.3.0
resolution: "@eslint/js@npm:9.3.0"
checksum: 5af317c8bcfef660efc17624b825c71bac16770f8866bfdc2922e1fcc2010af96e4f896e91724b81550e5dba6db6983c221b5be9a1294c9e727dee9ada15c9f8
"@eslint/js@npm:9.25.1, @eslint/js@npm:^9.25.1":
version: 9.25.1
resolution: "@eslint/js@npm:9.25.1"
checksum: f5b9c9c40694fbb858fc84ac0f9468ca3f09d8b4935da21dcab3f65c094e8e266a4926ec7bb1e18441440c5ddd722a5f62dabd58096aefbe6b517ed809d8fa8b
languageName: node
linkType: hard
"@humanwhocodes/config-array@npm:^0.13.0":
version: 0.13.0
resolution: "@humanwhocodes/config-array@npm:0.13.0"
"@eslint/object-schema@npm:^2.1.6":
version: 2.1.6
resolution: "@eslint/object-schema@npm:2.1.6"
checksum: e32e565319f6544d36d3fa69a3e163120722d12d666d1a4525c9a6f02e9b54c29d9b1f03139e25d7e759e08dda8da433590bc23c09db8d511162157ef1b86a4c
languageName: node
linkType: hard
"@eslint/plugin-kit@npm:^0.2.8":
version: 0.2.8
resolution: "@eslint/plugin-kit@npm:0.2.8"
dependencies:
"@humanwhocodes/object-schema": ^2.0.3
debug: ^4.3.1
minimatch: ^3.0.5
checksum: eae69ff9134025dd2924f0b430eb324981494be26f0fddd267a33c28711c4db643242cf9fddf7dadb9d16c96b54b2d2c073e60a56477df86e0173149313bd5d6
"@eslint/core": ^0.13.0
levn: ^0.4.1
checksum: b5bd769f3f96cb3bdc4051d9ebd973b30d1cd00a02953ded1eeb74fb5b2af73cf38c20cc76acddc8e74828f0dbf92ba9d725414b3026177935fc4b48784a7fba
languageName: node
linkType: hard
"@humanfs/core@npm:^0.19.1":
version: 0.19.1
resolution: "@humanfs/core@npm:0.19.1"
checksum: 611e0545146f55ddfdd5c20239cfb7911f9d0e28258787c4fc1a1f6214250830c9367aaaeace0096ed90b6739bee1e9c52ad5ba8adaf74ab8b449119303babfe
languageName: node
linkType: hard
"@humanfs/node@npm:^0.16.6":
version: 0.16.6
resolution: "@humanfs/node@npm:0.16.6"
dependencies:
"@humanfs/core": ^0.19.1
"@humanwhocodes/retry": ^0.3.0
checksum: f9cb52bb235f8b9c6fcff43a7e500669a38f8d6ce26593404a9b56365a1644e0ed60c720dc65ff6a696b1f85f3563ab055bb554ec8674f2559085ba840e47710
languageName: node
linkType: hard
@ -469,13 +519,6 @@ __metadata:
languageName: node
linkType: hard
"@humanwhocodes/object-schema@npm:^2.0.3":
version: 2.0.3
resolution: "@humanwhocodes/object-schema@npm:2.0.3"
checksum: d3b78f6c5831888c6ecc899df0d03bcc25d46f3ad26a11d7ea52944dc36a35ef543fad965322174238d677a43d5c694434f6607532cff7077062513ad7022631
languageName: node
linkType: hard
"@humanwhocodes/retry@npm:^0.3.0":
version: 0.3.0
resolution: "@humanwhocodes/retry@npm:0.3.0"
@ -483,6 +526,13 @@ __metadata:
languageName: node
linkType: hard
"@humanwhocodes/retry@npm:^0.4.2":
version: 0.4.2
resolution: "@humanwhocodes/retry@npm:0.4.2"
checksum: 764127449a9f97d807b9c47f898fce8d7e0e8e8438366116b9ddcaacded99b2c285b8eed2cfdd5fdcb68be47728218db949f9618a58c0d3898d9fd14a6d6671e
languageName: node
linkType: hard
"@isaacs/cliui@npm:^8.0.2":
version: 8.0.2
resolution: "@isaacs/cliui@npm:8.0.2"
@ -799,33 +849,6 @@ __metadata:
languageName: node
linkType: hard
"@nodelib/fs.scandir@npm:2.1.5":
version: 2.1.5
resolution: "@nodelib/fs.scandir@npm:2.1.5"
dependencies:
"@nodelib/fs.stat": 2.0.5
run-parallel: ^1.1.9
checksum: a970d595bd23c66c880e0ef1817791432dbb7acbb8d44b7e7d0e7a22f4521260d4a83f7f9fd61d44fda4610105577f8f58a60718105fb38352baed612fd79e59
languageName: node
linkType: hard
"@nodelib/fs.stat@npm:2.0.5":
version: 2.0.5
resolution: "@nodelib/fs.stat@npm:2.0.5"
checksum: 012480b5ca9d97bff9261571dbbec7bbc6033f69cc92908bc1ecfad0792361a5a1994bc48674b9ef76419d056a03efadfce5a6cf6dbc0a36559571a7a483f6f0
languageName: node
linkType: hard
"@nodelib/fs.walk@npm:^1.2.8":
version: 1.2.8
resolution: "@nodelib/fs.walk@npm:1.2.8"
dependencies:
"@nodelib/fs.scandir": 2.1.5
fastq: ^1.6.0
checksum: 190c643f156d8f8f277bf2a6078af1ffde1fd43f498f187c2db24d35b4b4b5785c02c7dc52e356497b9a1b65b13edc996de08de0b961c32844364da02986dc53
languageName: node
linkType: hard
"@npmcli/agent@npm:^2.0.0":
version: 2.2.2
resolution: "@npmcli/agent@npm:2.2.2"
@ -1119,7 +1142,14 @@ __metadata:
languageName: node
linkType: hard
"@types/estree@npm:*, @types/estree@npm:1.0.5, @types/estree@npm:^1.0.0":
"@types/estree@npm:*, @types/estree@npm:^1.0.0, @types/estree@npm:^1.0.6":
version: 1.0.7
resolution: "@types/estree@npm:1.0.7"
checksum: d9312b7075bdd08f3c9e1bb477102f5458aaa42a8eec31a169481ce314ca99ac716645cff4fca81ea65a2294b0276a0de63159d1baca0f8e7b5050a92de950ad
languageName: node
linkType: hard
"@types/estree@npm:1.0.5":
version: 1.0.5
resolution: "@types/estree@npm:1.0.5"
checksum: dd8b5bed28e6213b7acd0fb665a84e693554d850b0df423ac8076cc3ad5823a6bc26b0251d080bdc545af83179ede51dd3f6fa78cad2c46ed1f29624ddf3e41a
@ -1170,6 +1200,13 @@ __metadata:
languageName: node
linkType: hard
"@types/json-schema@npm:^7.0.15":
version: 7.0.15
resolution: "@types/json-schema@npm:7.0.15"
checksum: 97ed0cb44d4070aecea772b7b2e2ed971e10c81ec87dd4ecc160322ffa55ff330dace1793489540e3e318d90942064bb697cc0f8989391797792d919737b3b98
languageName: node
linkType: hard
"@types/node@npm:*, @types/node@npm:^20.12.11":
version: 20.12.11
resolution: "@types/node@npm:20.12.11"
@ -1202,6 +1239,15 @@ __metadata:
languageName: node
linkType: hard
"@types/tar-stream@npm:^3.1.3":
version: 3.1.3
resolution: "@types/tar-stream@npm:3.1.3"
dependencies:
"@types/node": "*"
checksum: 187387748288b35924284afc26cf36b6b966377f5131398bf484c475f7191c50f5e5903c94a7391049b6cdfce174ae2e63f776dea9425d94ddc6bd31ebe386ee
languageName: node
linkType: hard
"@types/yargs-parser@npm:*":
version: 21.0.3
resolution: "@types/yargs-parser@npm:21.0.3"
@ -1234,12 +1280,12 @@ __metadata:
languageName: node
linkType: hard
"acorn@npm:^8.11.3, acorn@npm:^8.8.2":
version: 8.11.3
resolution: "acorn@npm:8.11.3"
"acorn@npm:^8.14.0, acorn@npm:^8.8.2":
version: 8.14.1
resolution: "acorn@npm:8.14.1"
bin:
acorn: bin/acorn
checksum: 76d8e7d559512566b43ab4aadc374f11f563f0a9e21626dd59cb2888444e9445923ae9f3699972767f18af61df89cd89f5eaaf772d1327b055b45cb829b4a88c
checksum: 260d9bb6017a1b6e42d31364687f0258f78eb20210b36ef2baad38fd619d78d4e95ff7dde9b3dbe0d81f137f79a8d651a845363a26e6985997f7b71145dc5e94
languageName: node
linkType: hard
@ -1749,14 +1795,14 @@ __metadata:
languageName: node
linkType: hard
"cross-spawn@npm:^7.0.0, cross-spawn@npm:^7.0.1, cross-spawn@npm:^7.0.2, cross-spawn@npm:^7.0.3":
version: 7.0.3
resolution: "cross-spawn@npm:7.0.3"
"cross-spawn@npm:^7.0.0, cross-spawn@npm:^7.0.1, cross-spawn@npm:^7.0.3, cross-spawn@npm:^7.0.6":
version: 7.0.6
resolution: "cross-spawn@npm:7.0.6"
dependencies:
path-key: ^3.1.0
shebang-command: ^2.0.0
which: ^2.0.1
checksum: 671cc7c7288c3a8406f3c69a3ae2fc85555c04169e9d611def9a675635472614f1c0ed0ef80955d5b6d4e724f6ced67f0ad1bb006c2ea643488fcfef994d7f52
checksum: 8d306efacaf6f3f60e0224c287664093fa9185680b2d195852ba9a863f85d02dcc737094c6e512175f8ee0161f9b87c73c6826034c2422e39de7d6569cf4503b
languageName: node
linkType: hard
@ -2001,13 +2047,13 @@ __metadata:
languageName: node
linkType: hard
"eslint-scope@npm:^8.0.1":
version: 8.0.1
resolution: "eslint-scope@npm:8.0.1"
"eslint-scope@npm:^8.3.0":
version: 8.3.0
resolution: "eslint-scope@npm:8.3.0"
dependencies:
esrecurse: ^4.3.0
estraverse: ^5.2.0
checksum: 67a5a39312dadb8c9a677df0f2e8add8daf15280b08bfe07f898d5347ee2d7cd2a1f5c2760f34e46e8f5f13f7192f47c2c10abe676bfa4173ae5539365551940
checksum: 57a58b6716533e25d527089826c4add89a047aecf75e4a88fee05f113ef5a72b85392b304a69bf670646cc3e068354aec70361b9718c2453949a05fc4d9bfe73
languageName: node
linkType: hard
@ -2018,34 +2064,39 @@ __metadata:
languageName: node
linkType: hard
"eslint-visitor-keys@npm:^4.0.0":
version: 4.0.0
resolution: "eslint-visitor-keys@npm:4.0.0"
checksum: 5c09f89cf29d87cdbfbac38802a880d3c2e65f8cb61c689888346758f1e24a4c7f6caefeac9474dfa52058a99920623599bdb00516976a30134abeba91275aa2
"eslint-visitor-keys@npm:^4.2.0":
version: 4.2.0
resolution: "eslint-visitor-keys@npm:4.2.0"
checksum: 779c604672b570bb4da84cef32f6abb085ac78379779c1122d7879eade8bb38ae715645324597cf23232d03cef06032c9844d25c73625bc282a5bfd30247e5b5
languageName: node
linkType: hard
"eslint@npm:^9.3.0":
version: 9.3.0
resolution: "eslint@npm:9.3.0"
"eslint@npm:^9.25.1":
version: 9.25.1
resolution: "eslint@npm:9.25.1"
dependencies:
"@eslint-community/eslint-utils": ^4.2.0
"@eslint-community/regexpp": ^4.6.1
"@eslint/eslintrc": ^3.1.0
"@eslint/js": 9.3.0
"@humanwhocodes/config-array": ^0.13.0
"@eslint-community/regexpp": ^4.12.1
"@eslint/config-array": ^0.20.0
"@eslint/config-helpers": ^0.2.1
"@eslint/core": ^0.13.0
"@eslint/eslintrc": ^3.3.1
"@eslint/js": 9.25.1
"@eslint/plugin-kit": ^0.2.8
"@humanfs/node": ^0.16.6
"@humanwhocodes/module-importer": ^1.0.1
"@humanwhocodes/retry": ^0.3.0
"@nodelib/fs.walk": ^1.2.8
"@humanwhocodes/retry": ^0.4.2
"@types/estree": ^1.0.6
"@types/json-schema": ^7.0.15
ajv: ^6.12.4
chalk: ^4.0.0
cross-spawn: ^7.0.2
cross-spawn: ^7.0.6
debug: ^4.3.2
escape-string-regexp: ^4.0.0
eslint-scope: ^8.0.1
eslint-visitor-keys: ^4.0.0
espree: ^10.0.1
esquery: ^1.4.2
eslint-scope: ^8.3.0
eslint-visitor-keys: ^4.2.0
espree: ^10.3.0
esquery: ^1.5.0
esutils: ^2.0.2
fast-deep-equal: ^3.1.3
file-entry-cache: ^8.0.0
@ -2054,29 +2105,30 @@ __metadata:
ignore: ^5.2.0
imurmurhash: ^0.1.4
is-glob: ^4.0.0
is-path-inside: ^3.0.3
json-stable-stringify-without-jsonify: ^1.0.1
levn: ^0.4.1
lodash.merge: ^4.6.2
minimatch: ^3.1.2
natural-compare: ^1.4.0
optionator: ^0.9.3
strip-ansi: ^6.0.1
text-table: ^0.2.0
peerDependencies:
jiti: "*"
peerDependenciesMeta:
jiti:
optional: true
bin:
eslint: bin/eslint.js
checksum: c6d1eb8b4b064470a99f0d927b0d2b88f1947d7e871761b43b84e6c9b6464db4f6ebbb868f7196a45d2589978b09919a8807d200e3b1640d0a9cd245c9504707
checksum: 498a9dcb28f7ad154e5ad744a80f31397fe971959c317af710794de3cc3518e59f581d0a1668b9d3872f05dbff55093c23019677a729087d097c19295473eb8b
languageName: node
linkType: hard
"espree@npm:^10.0.1":
version: 10.0.1
resolution: "espree@npm:10.0.1"
"espree@npm:^10.0.1, espree@npm:^10.3.0":
version: 10.3.0
resolution: "espree@npm:10.3.0"
dependencies:
acorn: ^8.11.3
acorn: ^8.14.0
acorn-jsx: ^5.3.2
eslint-visitor-keys: ^4.0.0
checksum: 62c9242a84c6741cebd35ede6574131d0419be7e5559566403e384087d99c4ddb2ced44e32acd44a4c3d8a8a84997cf8d78810c4e46b3fe25a804f1a92dc6b9d
eslint-visitor-keys: ^4.2.0
checksum: 63e8030ff5a98cea7f8b3e3a1487c998665e28d674af08b9b3100ed991670eb3cbb0e308c4548c79e03762753838fbe530c783f17309450d6b47a889fee72bef
languageName: node
linkType: hard
@ -2090,12 +2142,12 @@ __metadata:
languageName: node
linkType: hard
"esquery@npm:^1.4.2":
version: 1.5.0
resolution: "esquery@npm:1.5.0"
"esquery@npm:^1.5.0":
version: 1.6.0
resolution: "esquery@npm:1.6.0"
dependencies:
estraverse: ^5.1.0
checksum: aefb0d2596c230118656cd4ec7532d447333a410a48834d80ea648b1e7b5c9bc9ed8b5e33a89cb04e487b60d622f44cf5713bf4abed7c97343edefdc84a35900
checksum: 08ec4fe446d9ab27186da274d979558557fbdbbd10968fa9758552482720c54152a5640e08b9009e5a30706b66aba510692054d4129d32d0e12e05bbc0b96fb2
languageName: node
linkType: hard
@ -2201,15 +2253,6 @@ __metadata:
languageName: node
linkType: hard
"fastq@npm:^1.6.0":
version: 1.17.1
resolution: "fastq@npm:1.17.1"
dependencies:
reusify: ^1.0.4
checksum: a8c5b26788d5a1763f88bae56a8ddeee579f935a831c5fe7a8268cea5b0a91fbfe705f612209e02d639b881d7b48e461a50da4a10cfaa40da5ca7cc9da098d88
languageName: node
linkType: hard
"fb-watchman@npm:^2.0.0":
version: 2.0.2
resolution: "fb-watchman@npm:2.0.2"
@ -2673,13 +2716,6 @@ __metadata:
languageName: node
linkType: hard
"is-path-inside@npm:^3.0.3":
version: 3.0.3
resolution: "is-path-inside@npm:3.0.3"
checksum: abd50f06186a052b349c15e55b182326f1936c89a78bf6c8f2b707412517c097ce04bc49a0ca221787bc44e1049f51f09a2ffb63d22899051988d3a618ba13e9
languageName: node
linkType: hard
"is-reference@npm:1.2.1":
version: 1.2.1
resolution: "is-reference@npm:1.2.1"
@ -3476,7 +3512,7 @@ __metadata:
languageName: node
linkType: hard
"minimatch@npm:^3.0.4, minimatch@npm:^3.0.5, minimatch@npm:^3.1.1, minimatch@npm:^3.1.2":
"minimatch@npm:^3.0.4, minimatch@npm:^3.1.1, minimatch@npm:^3.1.2":
version: 3.1.2
resolution: "minimatch@npm:3.1.2"
dependencies:
@ -3977,13 +4013,6 @@ __metadata:
languageName: node
linkType: hard
"queue-microtask@npm:^1.2.2":
version: 1.2.3
resolution: "queue-microtask@npm:1.2.3"
checksum: b676f8c040cdc5b12723ad2f91414d267605b26419d5c821ff03befa817ddd10e238d22b25d604920340fd73efd8ba795465a0377c4adf45a4a41e4234e42dc4
languageName: node
linkType: hard
"queue-tick@npm:^1.0.1":
version: 1.0.1
resolution: "queue-tick@npm:1.0.1"
@ -4077,13 +4106,6 @@ __metadata:
languageName: node
linkType: hard
"reusify@npm:^1.0.4":
version: 1.0.4
resolution: "reusify@npm:1.0.4"
checksum: c3076ebcc22a6bc252cb0b9c77561795256c22b757f40c0d8110b1300723f15ec0fc8685e8d4ea6d7666f36c79ccc793b1939c748bf36f18f542744a4e379fcc
languageName: node
linkType: hard
"rimraf@npm:^5.0.7":
version: 5.0.7
resolution: "rimraf@npm:5.0.7"
@ -4158,15 +4180,6 @@ __metadata:
languageName: node
linkType: hard
"run-parallel@npm:^1.1.9":
version: 1.2.0
resolution: "run-parallel@npm:1.2.0"
dependencies:
queue-microtask: ^1.2.2
checksum: cb4f97ad25a75ebc11a8ef4e33bb962f8af8516bb2001082ceabd8902e15b98f4b84b4f8a9b222e5d57fc3bd1379c483886ed4619367a7680dad65316993021d
languageName: node
linkType: hard
"safe-buffer@npm:^5.1.0":
version: 5.2.1
resolution: "safe-buffer@npm:5.2.1"
@ -4490,7 +4503,7 @@ __metadata:
version: 0.0.0-use.local
resolution: "svgo@workspace:."
dependencies:
"@eslint/js": ^9.3.0
"@eslint/js": ^9.25.1
"@jest/globals": ^29.7.0
"@rollup/plugin-commonjs": ^25.0.7
"@rollup/plugin-node-resolve": ^15.2.3
@ -4500,13 +4513,14 @@ __metadata:
"@types/jest": ^29.5.12
"@types/node": ^20.12.11
"@types/sax": ^1.2.7
"@types/tar-stream": ^3.1.3
commander: ^11.1.0
cross-env: ^7.0.3
css-select: ^5.1.0
css-tree: ^3.0.1
css-what: ^6.1.0
csso: ^5.0.5
eslint: ^9.3.0
eslint: ^9.25.1
globals: ^14.0.0
jest: ^29.7.0
picocolors: ^1.1.1
@ -4574,13 +4588,6 @@ __metadata:
languageName: node
linkType: hard
"text-table@npm:^0.2.0":
version: 0.2.0
resolution: "text-table@npm:0.2.0"
checksum: b6937a38c80c7f84d9c11dd75e49d5c44f71d95e810a3250bd1f1797fc7117c57698204adf676b71497acc205d769d65c16ae8fa10afad832ae1322630aef10a
languageName: node
linkType: hard
"tmpl@npm:1.0.5":
version: 1.0.5
resolution: "tmpl@npm:1.0.5"