Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

npm-groovy-lint

Package Overview
Dependencies
Maintainers
1
Versions
204
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

npm-groovy-lint - npm Package Compare versions

Comparing version 11.1.1 to 11.1.2-beta202310250645.0

lib/java/slf4j-api-2.0.9.jar

73

lib/codenarc-caller.js

@@ -5,2 +5,3 @@ // Call CodeNarc by server or java

const debug = require("debug")("npm-groovy-lint");
const trace = require("debug")("npm-groovy-lint-trace");
const { JavaCaller } = require("java-caller");

@@ -12,2 +13,6 @@ const optionsDefinition = require("./options");

// Request over IPv4 because Java typically prefers it.
const http = require("http");
axios.defaults.httpAgent = new http.Agent({ family: 4, keepAlive: true });
class CodeNarcCaller {

@@ -90,3 +95,3 @@ "use strict";

};
debug(`CALL CodeNarcServer with ${JSON.stringify(axiosConfig, null, 2)}`);
trace(`CALL CodeNarcServer with ${JSON.stringify(axiosConfig, null, 2)}`);
let response;

@@ -98,5 +103,6 @@ try {

const elapsed = parseInt(performance.now() - startCodeNarc, 10);
debug(`CodeNarcServer call result: (${response.status}) ${elapsed}ms ${JSON.stringify(response.data || {})}`);
debug(`CodeNarcServer call result: (${response.status}) ${elapsed}ms`);
} catch (e) {
// If server not started , start it and try again
debug(`callCodeNarcServer code: ${e.code} error: ${e.message}`);
if (

@@ -185,3 +191,3 @@ (startServerTried === false,

// Start progress bar
debug(`CALL CodeNarcJava with ${scriptArgs.join(" ")}`);
trace(`CALL CodeNarcJava with ${scriptArgs.join(" ")}`);
this.bar = new cliProgress.SingleBar(

@@ -216,3 +222,3 @@ {

// If failure (missing class com.nvuillam.CodeNarcServer for example, it can happen on Linux, let's try the original org.codenarc.CodeNarc class)
debug(`Error calling CodeNarcServer via java: ${JSON.stringify(javaResult)}`);
trace(`Error calling CodeNarcServer via java: ${JSON.stringify(javaResult)}`);
return await this.callCodeNarcJava(true);

@@ -281,2 +287,5 @@ } else {

// Store the process so we can stop it later.
this.codeNarcProcess = javaCallRes.childJavaProcess;
// Poll it until it is ready

@@ -288,2 +297,7 @@ const start = performance.now();

interval = setInterval(() => {
debug(
`pinging CodeNarcServer at ${serverPingUri} notified: ${notified}, serverStatus: ${
this.serverStatus
}, since: ${performance.now() - start}, maxAttemptTimeMs: ${maxAttemptTimeMs}`
);
axios

@@ -302,14 +316,18 @@ .get(serverPingUri)

} else if (notified === false && this.serverStatus === "unknown" && performance.now() - start > maxAttemptTimeMs) {
// Timeout has been reached.
let since = performance.now() - start;
debug(`Ping timeout after ${since}ms status: ${response.status}`);
this.declareServerError({ message: `Timeout after ${since}ms} status: ${response.status}` }, interval);
resolve();
}
})
.catch(e => {
debug(`Ping code: ${e.code} message: ${e.message}`);
let since = performance.now() - start;
if (notified === false && this.serverStatus === "unknown" && since > maxAttemptTimeMs) {
// Timeout has been reached
this.declareServerError(
{
message: "Timeout after " + maxAttemptTimeMs + "\nResponse: " + JSON.stringify(response.toJSON())
},
interval
);
debug(`Ping timeout after ${maxAttemptTimeMs}ms`);
this.declareServerError({ message: `Timeout after ${since}ms error: ${e}` }, interval);
resolve();
}
})
.catch(() => {
// Just do nothing
});

@@ -327,4 +345,17 @@ }, 400);

// Kill CodeNarc process if running.
killCodeNarcProcess() {
if (this.codeNarcProcess) {
this.codeNarcProcess.kill("SIGKILL");
delete this.codeNarcProcess;
return "CodeNarcServer killed";
}
return "";
}
// Stop polling and log error
declareServerError(e, interval) {
// Kill off the process as it is not responding.
this.killCodeNarcProcess();
this.serverStatus = "error";

@@ -340,6 +371,12 @@ if (interval) {

// Kill CodeNarc server by telling it to do so
// Kill CodeNarc server.
async killCodeNarcServer() {
// Try by process first as it's more reliable.
let outputString = this.killCodeNarcProcess();
if (outputString) {
return outputString;
}
// Process kill wasn't possible, so try sending a kill http request.
const serverUri = this.getCodeNarcServerUri() + "/kill";
let outputString = "";
try {

@@ -353,6 +390,8 @@ const response = await axios.post(serverUri, { timeout: 5000 });

} catch (e) {
if (e.stack.includes("connResetException")) {
if (e.stack.includes("connResetException") || e.message.includes("socket hang up")) {
outputString = "CodeNarcServer terminated";
} else {
outputString = "CodeNarcServer was not running";
// This should be ECONNREFUSED.
debug(`CodeNarcServer kill request failed: ${e}`);
outputString = `CodeNarcServer was not running`;
}

@@ -359,0 +398,0 @@ }

@@ -59,6 +59,8 @@ // Shared functions

const baseBefore = (cnPath !== "." && cnPath.startsWith("/")) || cnPath.includes(":/") || cnPath.includes(":\\") ? "" : process.cwd() + "/";
const codeNarcBaseDir = positionalArgs.length > 0 ?
(await getCodeNarcBaseDirFromFiles(positionalArgs)) :
cnPath !== "." ? baseBefore + cnPath.replace(/^"(.*)"$/, "$1") :
process.cwd();
const codeNarcBaseDir =
positionalArgs.length > 0
? await getCodeNarcBaseDirFromFiles(positionalArgs)
: cnPath !== "."
? baseBefore + cnPath.replace(/^"(.*)"$/, "$1")
: process.cwd();
result.codeNarcBaseDir = path.resolve(codeNarcBaseDir);

@@ -148,6 +150,6 @@ result.codenarcArgs.push(`-basedir=${result.codeNarcBaseDir}`);

: result.output.endsWith(".json")
? "json"
: result.output.endsWith(".sarif")
? "sarif"
: result.output;
? "json"
: result.output.endsWith(".sarif")
? "sarif"
: result.output;
result.codenarcArgs.push(`-report=json:stdout`);

@@ -161,7 +163,7 @@ } else if (["html", "xml"].includes(result.output.split(".").pop())) {

: result.output
.split(".")
.pop()
.endsWith("xml")
? "xml"
: "";
.split(".")
.pop()
.endsWith("xml")
? "xml"
: "";
const ext = result.output.split(".").pop();

@@ -189,5 +191,5 @@ result.codenarcArgs.push(`-report=${ext}:${result.output}`);

if (!positionalArgs.every(fileOrDirOrPattern => fs.existsSync(fileOrDirOrPattern) || directoryExists(fileOrDirOrPattern))) {
return process.cwd()
return process.cwd();
}
const folders = positionalArgs.map((fileOrDir) => {
const folders = positionalArgs.map(fileOrDir => {
// Dir

@@ -202,3 +204,3 @@ if (directoryExists(fileOrDir)) {

const baseDirFromFiles = commondir(folders);
return baseDirFromFiles
return baseDirFromFiles;
}

@@ -335,3 +337,3 @@

else if (errItem.line > 0) {
const range = evaluateRangeFromLine(errItem, allLines);
const range = evaluateRangeFromLine(errItem, allLines);
if (range && range.start.character > -1) {

@@ -428,4 +430,4 @@ errItem.range = range;

: Object.keys(ruleOptions).length > 0
? ruleOptions
: ruleFromConfig;
? ruleOptions
: ruleFromConfig;
const ruleDef = buildCodeNarcRule(ruleName, mergedRuleConfig);

@@ -451,4 +453,4 @@ // If rule has been sent as argument, enable it by default

: Object.keys(ruleFromRuleSetsArg).length > 0
? ruleFromRuleSetsArg
: ruleDef;
? ruleFromRuleSetsArg
: ruleDef;
}

@@ -455,0 +457,0 @@ // Add in the list of rules to test , except if it is disabled

@@ -5,2 +5,3 @@ // Imports

const debug = require("debug")("npm-groovy-lint");
const trace = require("debug")("npm-groovy-lint-trace");
const os = require("os");

@@ -139,3 +140,3 @@ const { getNpmGroovyLintRules, getFormattingRulesToAlwaysRun } = require("./groovy-lint-rules.js");

}
debug(`Parsed fixable errors: ${JSON.stringify(this.fixableErrors)}`);
trace(`Parsed fixable errors: ${JSON.stringify(this.fixableErrors)}`);
}

@@ -261,3 +262,3 @@

} else {
debug("GroovyLint: missing replacement variable(s):\n" + strBefore + "\n" + strAfter + "\n" + JSON.stringify(fixableError));
trace(`GroovyLint: missing replacement variable(s):\n${strBefore}\n${strAfter}\n${JSON.stringify(fixableError)}`);
}

@@ -273,3 +274,3 @@ }

} catch (e) {
debug("ERROR: Fix function error: " + e.message + " / " + JSON.stringify(fixableError));
trace(`ERROR: Fix function error: ${e.message} / ${JSON.stringify(fixableError)}`);
throw e;

@@ -276,0 +277,0 @@ }

// Imports
const debug = require("debug")("npm-groovy-lint");
const trace = require("debug")("npm-groovy-lint-trace");
const fs = require("fs-extra");

@@ -142,4 +143,4 @@ const os = require("os");

// Try to catch input from stdin. if found, use it as groovy source
if (this.options._ && this.options._[0] === '-') {
const stdInData = fs.readFileSync(0, 'utf-8');
if (this.options._ && this.options._[0] === "-") {
const stdInData = fs.readFileSync(0, "utf-8");
this.options.source = stdInData;

@@ -149,6 +150,5 @@ this.options._ = [];

if (this.options.format || this.options.fix) {
this.options.output = 'stdout';
this.options.output = "stdout";
}
}
} catch (err) {

@@ -236,3 +236,3 @@ this.status = 2;

- Call CodeNarc java using com.nvuillam.CodeNarcServer (without launching server)
- Call CodeNarc java using org.codenarc.CodeNarc
- Call CodeNarc java using org.codenarc.CodeNarc
*/

@@ -364,3 +364,3 @@ async callCodeNarc() {

lintAgainOptions.output = "none";
debug(`Fix is done, lint again with options ${JSON.stringify(lintAgainOptions)}`);
trace(`Fix is done, lint again with options ${JSON.stringify(lintAgainOptions)}`);
const newLinter = new NpmGroovyLint(lintAgainOptions, {

@@ -476,3 +476,3 @@ parseOptions: false,

// There has been a fatal error before, so there are no results
return ;
return;
}

@@ -483,8 +483,8 @@ const failureLevel =

: this.options.failonerror
? "error"
: this.options.failonwarning
? "warning"
: this.options.failoninfo
? "info"
: "none";
? "error"
: this.options.failonwarning
? "warning"
: this.options.failoninfo
? "info"
: "none";
if (failureLevel === "none") {

@@ -491,0 +491,0 @@ return;

@@ -180,3 +180,3 @@ /**

type: "String",
default: "http://localhost", //"http://" + require("ip").address(),
default: "http://localhost",
description: "If use of CodeNarc server, host where is the CodeNarc server (default: localhost)"

@@ -183,0 +183,0 @@ },

@@ -112,3 +112,3 @@ // Output management

let fileOutputString = c.underline(fileNm) + "\n";
let showFileInOutput = false ;
let showFileInOutput = false;
for (const err of fileErrors) {

@@ -118,3 +118,3 @@ if (!isErrorInLogLevelScope(err.severity, options.loglevel)) {

}
showFileInOutput = true ;
showFileInOutput = true;
let color = "grey";

@@ -155,3 +155,3 @@ switch (err.severity) {

if (showFileInOutput || options.verbose) {
outputString += fileOutputString ;
outputString += fileOutputString;
}

@@ -158,0 +158,0 @@ }

@@ -5,2 +5,3 @@ // Shared functions

const debug = require("debug")("npm-groovy-lint");
const trace = require("debug")("npm-groovy-lint-trace");
const decodeHtml = require("decode-html");

@@ -128,3 +129,3 @@ const fse = require("fs-extra");

function evaluateRangeFromLine(errItem, allLines) {
return getDefaultRange(allLines, errItem)
return getDefaultRange(allLines, errItem);
}

@@ -147,4 +148,4 @@

: varDef.type && varDef.type === "array"
? JSON.parse(value)
: value;
? JSON.parse(value)
: value;
evaluatedVars.push({

@@ -155,3 +156,3 @@ name: varDef.name,

} else {
debug("GroovyLint: Unable to match " + varDef.regex + " in " + msg);
trace(`GroovyLint: Unable to match ${varDef.regex} in ${msg}`);
}

@@ -158,0 +159,0 @@ }

{
"name": "npm-groovy-lint",
"version": "11.1.1",
"version": "11.1.2-beta202310250645.0",
"description": "Lint, format and auto-fix your Groovy / Jenkinsfile / Gradle files",

@@ -8,4 +8,4 @@ "main": "index.js",

"lint:fix": "eslint **/*.js --fix && prettier --write \"./lib/**/*.{js,jsx}\" --tab-width 4 --print-width 150",
"groovy:run-server-from-source": "npm run dev:kill-server && groovy -cp \"lib/java/CodeNarc-3.1.0.jar;lib/java/groovy/lib/groovy-3.0.9.jar;lib/java/groovy/lib/groovy-templates-3.0.9.jar;lib/java/groovy/lib/groovy-xml-3.0.9.jar;lib/java/groovy/lib/groovy-json-3.0.9.jar;lib/java/groovy/lib/groovy-ant-3.0.9.jar;lib/java/groovy/lib/ant-1.10.11.jar;lib/java/groovy/lib/ant-launcher-1.10.11.jar;lib/java/slf4j-api-1.7.9.jar;lib/java/log4j-slf4j-impl-2.18.0.jar;lib/java/log4j-api-2.18.0.jar;lib/java/log4j-core-2.18.0.jar;lib/java/GMetrics-2.1.0.jar\" groovy/src/main/com/nvuillam/CodeNarcServer.groovy --server",
"groovy:build": "npm run dev:kill-server && groovyc -cp \"./lib/java*\" --encoding utf-8 ./groovy/src/main/com/nvuillam/CodeNarcServer.groovy -d ./tmp && cd ./tmp && jar -cvfm ./../lib/java/CodeNarcServer.jar ./../MANIFEST.txt ./com/nvuillam/*.class && cd ..",
"groovy:run-server-from-source": "npm run dev:kill-server && groovy -cp \"lib/java/*\" groovy/src/main/com/nvuillam/CodeNarcServer.groovy --server",
"groovy:build": "npm run dev:kill-server && groovyc -cp \"lib/java/*\" --encoding utf-8 ./groovy/src/main/com/nvuillam/CodeNarcServer.groovy -d ./tmp && cd ./tmp && jar -cvfm ./../lib/java/CodeNarcServer.jar ./../MANIFEST.txt ./com/nvuillam/*.class && cd ..",
"test": "npm run dev:kill-server && mocha \"test/**/*.test.js\"",

@@ -52,3 +52,3 @@ "test:coverage": "nyc npm run test",

"chalk": "^4.1.2",
"cli-progress": "^3.10.0",
"cli-progress": "^3.12.0",
"commondir": "^1.0.1",

@@ -65,3 +65,3 @@ "debug": "^4.1.1",

"js-yaml": "^4.1.0",
"node-sarif-builder": "^2.0.1",
"node-sarif-builder": "^2.0.3",
"optionator": "^0.8.3",

@@ -73,7 +73,7 @@ "semver": "^7.1.3",

"devDependencies": {
"@babel/core": "^7.16.0",
"@babel/eslint-parser": "^7.16.3",
"@babel/core": "^7.23.2",
"@babel/eslint-parser": "^7.22.15",
"diff": "^4.0.2",
"eslint": "^8.2.0",
"mocha": "^10.1.0",
"eslint": "^8.52.0",
"mocha": "^10.2.0",
"nyc": "^15.1.0",

@@ -85,3 +85,3 @@ "prettier": "^1.19.1",

"engines": {
"node": ">=12.0.0"
"node": ">=18.0.0"
},

@@ -88,0 +88,0 @@ "mocha": {

@@ -19,3 +19,3 @@ <!-- markdownlint-disable MD013 MD033 MD034 -->

_**New: The [article about the story of npm-groovy-lint](https://nicolas.vuillamy.fr/a-groovy-journey-to-open-source-during-covid-19-npm-groovy-lint-8d88c7eecebc), and why you should dive in open-source community !**_
***New: The [article about the story of npm-groovy-lint](https://nicolas.vuillamy.fr/a-groovy-journey-to-open-source-during-covid-19-npm-groovy-lint-8d88c7eecebc), and why you should dive in open-source community !***

@@ -27,3 +27,3 @@ Based on [CodeNarc](http://codenarc.github.io/CodeNarc/) , this out of the box package allows to **track groovy errors** and **correct a part of them**

Easy to integrate in a CD/CI process (Jenkins Pipeline,CircleCI...) to lint your groovy or Jenkinsfile at each build :)
Easy to integrate in a CI/CD process (Jenkins Pipeline,CircleCI...) to lint your groovy or Jenkinsfile at each build :)

@@ -50,10 +50,10 @@ You can also use this package in :

|-------------------------|---------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| -o<br/> --output | String | Output format (txt,json,sarif,html,xml), or path to a file with one of these extensions<br/> Default: `txt`<br/> Examples:<br/> - `"txt"`<br/> - `"json"`<br/> - `"./logs/myLintResults.txt"`<br/> - `"./logs/myLintResults.sarif"`<br/> - `"./logs/myLintResults.html"`<br/> - `"./logs/myLintResults.xml"` |
| -o<br/> --output | String | Output format (txt,json,sarif,html,xml), or path to a file with one of these extensions<br/> Default: `txt`<br/> Examples:<br/> - `"txt"`<br/> - `"json"`<br/> - `"./logs/myLintResults.txt"`<br/> - `"./logs/myLintResults.sarif"`<br/> - `"./logs/myLintResults.html"`<br/> - `"./logs/myLintResults.xml"`<br/>Note: HTML and XML are directly from CodeNarc so using these formats will disable many npm-groovy-lint features |
| -l<br/> --loglevel | String | Log level (error,warning or info)<br/>Default: info |
| --failon | String | Defines the error level where CLI will fail (return code = 1). error,warning,info or none. Each failure level includes the more critical ones. |
| -c<br/> --config | String | Custom path to [GroovyLint config file](#Configuration), or preset config `recommended|recommended-jenkinsfile|all`<br/> Default: Browse current directory to find `.groovylintrc.json|js|yml|package.json` config file, or default npm-groovy-lint config if not defined.<br/>Note: command-line arguments have priority on config file properties |
| -c<br/> --config | String | Custom path to [GroovyLint config file](#configuration), or preset config `recommended|recommended-jenkinsfile|all`<br/> Default: Browse current directory to find`.groovylintrc.json|js|yml|package.json` config file, or default npm-groovy-lint config if not defined.<br/>Note: command-line arguments have priority on config file properties |
| --parse | Boolean | Try to compile the source code and return parse errors (since v5.7.0, default to true, use --no-parse to deactivate) |
| --format | Boolean | Format source code |
| --fix | Boolean | Automatically fix problems when possible<br/> See [Autofixable rules](#Autofixable-rules) |
| -x<br/> --fixrules | String | Option for --fix argument: List of rule identifiers to fix (if not specified, all available fixes will be applied). See [Autofixable rules](#Autofixable-rules) <br/> Examples:<br/> - `"SpaceBeforeClosingBrace,SpaceAfterClosingBrace,UnusedImport"`<br/> - `"Indentation"`<br/> |
| --fix | Boolean | Automatically fix problems when possible<br/> See [Auto-fixable rules](#auto-fixable-rules) |
| -x<br/> --fixrules | String | Option for --fix argument: List of rule identifiers to fix (if not specified, all available fixes will be applied). See [Auto-fixable rules](#auto-fixable-rules) <br/> Examples:<br/> - `"SpaceBeforeClosingBrace,SpaceAfterClosingBrace,UnusedImport"`<br/> - `"Indentation"`<br/> |
| --nolintafter | Boolean | When format or fix is called, a new lint is performed after the fixes to update the returned error list. If you just want the updated source code and do not care about the error logs, use this parameter to improve performances |

@@ -143,2 +143,3 @@ | -r<br/> --rulesets | String | [RuleSet file(s)](http://codenarc.github.io/CodeNarc/codenarc-creating-ruleset.html) to use for linting, if you do not want to use recommended rules or .groovylintrc.js defined rules.<br/>If list of comma separated strings corresponding to CodeNarc rules, a RuleSet file will be dynamically generated </br> Examples:<br/> - `"./config/codenarc/RuleSet-Custom.groovy"`<br/> - `"./path/to/my/ruleset/files"`<br/>- `Indentation{"spacesPerIndentLevel":2,"severity":"warning"},UnnecessarySemicolon,UnnecessaryGString` |

```
- If you have issues with v9, install previous version with `npm install -g npm-groovy-lint@8.2.0`

@@ -159,5 +160,5 @@ - Node.js >= 12 is required to run this package. If you can't upgrade, you can use [nvm](https://github.com/nvm-sh/nvm) to have [different node versions on your computer](https://www.sitepoint.com/quick-tip-multiple-versions-node-nvm/)

- Jenkinsfile
- **.groovylintrc.json** _(do not forget the dot at the beginning of the file name)_
- **.groovylintrc.json** *(do not forget the dot at the beginning of the file name)*
*If you are using [VsCode Groovy Lint extension](https://marketplace.visualstudio.com/items?itemName=NicolasVuillamy.vscode-groovy-lint), just use QuickFix* ***Ignore in all files*** _and it will generate groovylintrc.json file_
*If you are using [VsCode Groovy Lint extension](https://marketplace.visualstudio.com/items?itemName=NicolasVuillamy.vscode-groovy-lint), just use QuickFix **Ignore in all files** and it will generate groovylintrc.json file.*

@@ -168,4 +169,4 @@ ### Format

- **rules**: List of rules definition, following format `"RuleSection.RuleName": ruleParameters` or `"RuleName": ruleParameters`
- _RuleName_: any of the **[CodeNarc rules](https://codenarc.github.io/CodeNarc/codenarc-rule-index.html)**
- _ruleParameters_: can be just a severity override ( `"off"`, `"error"`, `"warning"`, `"info"` ) , or a property list :
- *RuleName*: any of the **[CodeNarc rules](https://codenarc.github.io/CodeNarc/codenarc-rule-index.html)**
- *ruleParameters*: can be just a severity override ( `"off"`, `"error"`, `"warning"`, `"info"` ) , or a property list :
- severity : off,error,warning,info

@@ -350,5 +351,5 @@ - enabled : true (default) or false

[Contribute](#Contribute) to add more [rules](http://codenarc.github.io/CodeNarc/codenarc-rule-index.html) fixes :)
[Contribute](#contribute) to add more [rules](http://codenarc.github.io/CodeNarc/codenarc-rule-index.html) fixes :)
## CD/CI
## CI/CD

@@ -455,5 +456,5 @@ ### Mega-Linter

[<img alt="nvuillam" src="https://avatars1.githubusercontent.com/u/17500430?v=4&s=50 width=50">](https://github.com/nvuillam) | [<img alt="Dave Gallant" src="https://avatars2.githubusercontent.com/u/4519234?v=4&s=50 width=50">](https://github.com/davegallant) | [<img alt="warhod" src="https://avatars1.githubusercontent.com/u/1305176?v=4&s=50 width=50">](https://github.com/warhod) | [<img alt="pawelkopka" src="https://avatars1.githubusercontent.com/u/17784034?v=4&s=50 width=50">](https://github.com/pawelkopka) | [<img alt="docwhat" src="https://avatars1.githubusercontent.com/u/40799?v=4&s=50 width=50">](https://github.com/docwhat) | [<img alt="CatSue" src="https://avatars3.githubusercontent.com/u/26134618?v=4&s=50 width=50">](https://github.com/CatSue)
:----------------------------------------------------------------------------------------------------------------------------:|:-----------------------------------------------------------------------------------------------------------------------------------:|:------------------------------------------------------------------------------------------------------------------------:|:---------------------------------------------------------------------------------------------------------------------------------:|:------------------------------------------------------------------------------------------------------------------------:|:------------------------------------------------------------------------------------------------------------------------:
[Nicolas Vuillamy](https://github.com/nvuillam) | [Dave Gallant](https://github.com/davegallant) | [Howard Lo](https://github.com/warhod) | [Pawel Kopka](https://github.com/pawelkopka) | [docwhat](https://github.com/docwhat) | [CatSue](https://github.com/CatSue)
| [<img alt="nvuillam" src="https://avatars1.githubusercontent.com/u/17500430?v=4&s=50 width=50">](https://github.com/nvuillam) | [<img alt="Dave Gallant" src="https://avatars2.githubusercontent.com/u/4519234?v=4&s=50 width=50">](https://github.com/davegallant) | [<img alt="warhod" src="https://avatars1.githubusercontent.com/u/1305176?v=4&s=50 width=50">](https://github.com/warhod) | [<img alt="pawelkopka" src="https://avatars1.githubusercontent.com/u/17784034?v=4&s=50 width=50">](https://github.com/pawelkopka) | [<img alt="docwhat" src="https://avatars1.githubusercontent.com/u/40799?v=4&s=50 width=50">](https://github.com/docwhat) | [<img alt="CatSue" src="https://avatars3.githubusercontent.com/u/26134618?v=4&s=50 width=50">](https://github.com/CatSue) |
|:-----------------------------------------------------------------------------------------------------------------------------:|:-----------------------------------------------------------------------------------------------------------------------------------:|:------------------------------------------------------------------------------------------------------------------------:|:---------------------------------------------------------------------------------------------------------------------------------:|:------------------------------------------------------------------------------------------------------------------------:|:-------------------------------------------------------------------------------------------------------------------------:|
| [Nicolas Vuillamy](https://github.com/nvuillam) | [Dave Gallant](https://github.com/davegallant) | [Howard Lo](https://github.com/warhod) | [Pawel Kopka](https://github.com/pawelkopka) | [docwhat](https://github.com/docwhat) | [CatSue](https://github.com/CatSue) |

@@ -460,0 +461,0 @@ ## Release notes

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc