🚀 Big News: Socket Acquires Coana to Bring Reachability Analysis to Every Appsec Team.Learn more
Socket
Sign inDemoInstall
Socket

@eslint/config-array

Package Overview
Dependencies
Maintainers
2
Versions
9
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@eslint/config-array - npm Package Compare versions

Comparing version

to
0.20.0

89

dist/esm/index.js

@@ -394,2 +394,81 @@ // @ts-self-types="./index.d.ts"

/**
* Normalizes a pattern by removing the leading "./" if present.
* @param {string} pattern The pattern to normalize.
* @returns {string} The normalized pattern.
*/
function normalizePattern(pattern) {
if (isString(pattern)) {
if (pattern.startsWith("./")) {
return pattern.slice(2);
}
if (pattern.startsWith("!./")) {
return `!${pattern.slice(3)}`;
}
}
return pattern;
}
/**
* Checks if a given pattern requires normalization.
* @param {any} pattern The pattern to check.
* @returns {boolean} True if the pattern needs normalization, false otherwise.
*
*/
function needsPatternNormalization(pattern) {
return (
isString(pattern) &&
(pattern.startsWith("./") || pattern.startsWith("!./"))
);
}
/**
* Normalizes `files` and `ignores` patterns in a config by removing "./" prefixes.
* @param {Object} config The config object to normalize patterns in.
* @returns {Object} The normalized config object.
*/
function normalizeConfigPatterns(config) {
if (!config) {
return config;
}
let needsNormalization = false;
if (Array.isArray(config.files)) {
needsNormalization = config.files.some(pattern => {
if (Array.isArray(pattern)) {
return pattern.some(needsPatternNormalization);
}
return needsPatternNormalization(pattern);
});
}
if (!needsNormalization && Array.isArray(config.ignores)) {
needsNormalization = config.ignores.some(needsPatternNormalization);
}
if (!needsNormalization) {
return config;
}
const newConfig = { ...config };
if (Array.isArray(newConfig.files)) {
newConfig.files = newConfig.files.map(pattern => {
if (Array.isArray(pattern)) {
return pattern.map(normalizePattern);
}
return normalizePattern(pattern);
});
}
if (Array.isArray(newConfig.ignores)) {
newConfig.ignores = newConfig.ignores.map(normalizePattern);
}
return newConfig;
}
/**
* Normalizes a `ConfigArray` by flattening it and executing any functions

@@ -444,3 +523,3 @@ * that are found inside.

for await (const config of asyncIterable) {
configs.push(config);
configs.push(normalizeConfigPatterns(config));
}

@@ -496,3 +575,9 @@

return [...flatTraverse(items)];
const configs = [];
for (const config of flatTraverse(items)) {
configs.push(normalizeConfigPatterns(config));
}
return configs;
}

@@ -499,0 +584,0 @@

2

package.json
{
"name": "@eslint/config-array",
"version": "0.19.2",
"version": "0.20.0",
"description": "General purpose glob-based configuration matching.",

@@ -5,0 +5,0 @@ "author": "Nicholas C. Zakas",

@@ -352,5 +352,5 @@ # Config Array

<p><a href="https://automattic.com"><img src="https://images.opencollective.com/automattic/d0ef3e1/logo.png" alt="Automattic" height="128"></a> <a href="https://www.airbnb.com/"><img src="https://images.opencollective.com/airbnb/d327d66/logo.png" alt="Airbnb" height="128"></a></p><h3>Gold Sponsors</h3>
<p><a href="https://qlty.sh/"><img src="https://images.opencollective.com/qltysh/33d157d/logo.png" alt="Qlty Software" height="96"></a> <a href="https://trunk.io/"><img src="https://images.opencollective.com/trunkio/fb92d60/avatar.png" alt="trunk.io" height="96"></a></p><h3>Silver Sponsors</h3>
<p><a href="https://www.serptriumph.com/"><img src="https://images.opencollective.com/serp-triumph5/fea3074/logo.png" alt="SERP Triumph" height="64"></a> <a href="https://www.jetbrains.com/"><img src="https://images.opencollective.com/jetbrains/fe76f99/logo.png" alt="JetBrains" height="64"></a> <a href="https://liftoff.io/"><img src="https://images.opencollective.com/liftoff/5c4fa84/logo.png" alt="Liftoff" height="64"></a> <a href="https://americanexpress.io"><img src="https://avatars.githubusercontent.com/u/3853301" alt="American Express" height="64"></a></p><h3>Bronze Sponsors</h3>
<p><a href="https://cybozu.co.jp/"><img src="https://images.opencollective.com/cybozu/933e46d/logo.png" alt="Cybozu" height="32"></a> <a href="https://www.crosswordsolver.org/anagram-solver/"><img src="https://images.opencollective.com/anagram-solver/2666271/logo.png" alt="Anagram Solver" height="32"></a> <a href="https://icons8.com/"><img src="https://images.opencollective.com/icons8/7fa1641/logo.png" alt="Icons8" height="32"></a> <a href="https://discord.com"><img src="https://images.opencollective.com/discordapp/f9645d9/logo.png" alt="Discord" height="32"></a> <a href="https://www.gitbook.com"><img src="https://avatars.githubusercontent.com/u/7111340" alt="GitBook" height="32"></a> <a href="https://nolebase.ayaka.io"><img src="https://avatars.githubusercontent.com/u/11081491" alt="Neko" height="32"></a> <a href="https://nx.dev"><img src="https://avatars.githubusercontent.com/u/23692104" alt="Nx" height="32"></a> <a href="https://opensource.mercedes-benz.com/"><img src="https://avatars.githubusercontent.com/u/34240465" alt="Mercedes-Benz Group" height="32"></a> <a href="https://herocoders.com"><img src="https://avatars.githubusercontent.com/u/37549774" alt="HeroCoders" height="32"></a></p>
<p><a href="https://qlty.sh/"><img src="https://images.opencollective.com/qltysh/33d157d/logo.png" alt="Qlty Software" height="96"></a> <a href="https://trunk.io/"><img src="https://images.opencollective.com/trunkio/fb92d60/avatar.png" alt="trunk.io" height="96"></a> <a href="https://shopify.engineering/"><img src="https://avatars.githubusercontent.com/u/8085" alt="Shopify" height="96"></a></p><h3>Silver Sponsors</h3>
<p><a href="https://vite.dev/"><img src="https://images.opencollective.com/vite/e6d15e1/logo.png" alt="Vite" height="64"></a> <a href="https://liftoff.io/"><img src="https://images.opencollective.com/liftoff/5c4fa84/logo.png" alt="Liftoff" height="64"></a> <a href="https://stackblitz.com"><img src="https://avatars.githubusercontent.com/u/28635252" alt="StackBlitz" height="64"></a></p><h3>Bronze Sponsors</h3>
<p><a href="https://cybozu.co.jp/"><img src="https://images.opencollective.com/cybozu/933e46d/logo.png" alt="Cybozu" height="32"></a> <a href="https://www.crosswordsolver.org/anagram-solver/"><img src="https://images.opencollective.com/anagram-solver/2666271/logo.png" alt="Anagram Solver" height="32"></a> <a href="https://icons8.com/"><img src="https://images.opencollective.com/icons8/7fa1641/logo.png" alt="Icons8" height="32"></a> <a href="https://discord.com"><img src="https://images.opencollective.com/discordapp/f9645d9/logo.png" alt="Discord" height="32"></a> <a href="https://www.gitbook.com"><img src="https://avatars.githubusercontent.com/u/7111340" alt="GitBook" height="32"></a> <a href="https://nolebase.ayaka.io"><img src="https://avatars.githubusercontent.com/u/11081491" alt="Neko" height="32"></a> <a href="https://nx.dev"><img src="https://avatars.githubusercontent.com/u/23692104" alt="Nx" height="32"></a> <a href="https://opensource.mercedes-benz.com/"><img src="https://avatars.githubusercontent.com/u/34240465" alt="Mercedes-Benz Group" height="32"></a> <a href="https://herocoders.com"><img src="https://avatars.githubusercontent.com/u/37549774" alt="HeroCoders" height="32"></a> <a href="https://www.lambdatest.com"><img src="https://avatars.githubusercontent.com/u/171592363" alt="LambdaTest" height="32"></a></p>
<h3>Technology Sponsors</h3>

@@ -357,0 +357,0 @@ Technology sponsors allow us to use their products and services for free as part of a contribution to the open source ecosystem and our work.

Sorry, the diff of this file is not supported yet