Socket
Socket
Sign inDemoInstall

eslint-plugin-diff

Package Overview
Dependencies
Maintainers
1
Versions
46
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

eslint-plugin-diff - npm Package Compare versions

Comparing version 2.0.1 to 2.0.2-0

dist/ci.js

2

dist/git.js

@@ -1,1 +0,1 @@

var e=this&&this.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r);var n=Object.getOwnPropertyDescriptor(t,r);n&&!("get"in n?!t.__esModule:n.writable||n.configurable)||(n={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,i,n)}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),t=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),r=this&&this.__importStar||function(r){if(r&&r.__esModule)return r;var i={};if(null!=r)for(var n in r)"default"!==n&&Object.prototype.hasOwnProperty.call(r,n)&&e(i,r,n);return t(i,r),i};Object.defineProperty(exports,"__esModule",{value:!0}),exports.hasCleanIndex=exports.getUntrackedFileList=exports.getRangesForDiff=exports.getDiffForFile=exports.getDiffFileList=void 0;const i=r(require("child_process")),n=require("path"),o=require("./Range");exports.getDiffForFile=(e,t=!1)=>{const r=["diff","--diff-algorithm=histogram","--diff-filter=ACM","--find-renames=100%","--no-ext-diff","--relative",t&&"--staged","--unified=0",process.env.ESLINT_PLUGIN_DIFF_COMMIT??"HEAD","--",(0,n.resolve)(e)].reduce(((e,t)=>"string"==typeof t?[...e,t]:e),[]);return i.execFileSync("git",r,s).toString()};exports.getDiffFileList=(e=!1)=>{const t=["diff","--diff-algorithm=histogram","--diff-filter=ACM","--find-renames=100%","--name-only","--no-ext-diff","--relative",e&&"--staged",process.env.ESLINT_PLUGIN_DIFF_COMMIT??"HEAD"].reduce(((e,t)=>"string"==typeof t?[...e,t]:e),[]);return i.execFileSync("git",t,s).toString().trim().split("\n").map((e=>(0,n.resolve)(e)))};exports.hasCleanIndex=e=>{const t=["diff","--no-ext-diff","--quiet","--relative","--unified=0","--",(0,n.resolve)(e)];let r=!0;try{i.execFileSync("git",t,s).toString()}catch(e){r=!1}return r};const s={maxBuffer:104857600};exports.getUntrackedFileList=(e=!1)=>{if(e)return[];return i.execFileSync("git",["ls-files","--exclude-standard","--others"],s).toString().trim().split("\n").map((e=>(0,n.resolve)(e)))};exports.getRangesForDiff=e=>e.split("\n").reduce(((e,t)=>{if(!/^@@ [^@]* @@/u.exec(t))return e;const r=(e=>{const t=/^@@ .* \+(?<start>\d+)(?<linesCountDelimiter>,(?<linesCount>\d+))? @@/u.exec(e);if(null===t)throw Error(`Couldn't match regex with line '${e}'`);const r={start:"0",linesCountDelimiter:",0",linesCount:"0",...t.groups},i=r.linesCountDelimiter&&r.linesCount?parseInt(r.linesCount):1,n=0!==i,s=parseInt(r.start),l=s+i;return n?new o.Range(s,l):null})(t);return null===r?e:[...e,r]}),[]);
var e=this&&this.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r);var n=Object.getOwnPropertyDescriptor(t,r);n&&!("get"in n?!t.__esModule:n.writable||n.configurable)||(n={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,i,n)}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),t=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),r=this&&this.__importStar||function(r){if(r&&r.__esModule)return r;var i={};if(null!=r)for(var n in r)"default"!==n&&Object.prototype.hasOwnProperty.call(r,n)&&e(i,r,n);return t(i,r),i};Object.defineProperty(exports,"__esModule",{value:!0}),exports.hasCleanIndex=exports.getUntrackedFileList=exports.getRangesForDiff=exports.getDiffForFile=exports.getDiffFileList=exports.fetchFromOrigin=void 0;const i=r(require("child_process")),n=require("path"),o=require("./Range"),s={maxBuffer:104857600};exports.getDiffForFile=(e,t=!1)=>{const r=["diff","--diff-algorithm=histogram","--diff-filter=ACM","--find-renames=100%","--no-ext-diff","--relative",t&&"--staged","--unified=0",process.env.ESLINT_PLUGIN_DIFF_COMMIT??"HEAD","--",(0,n.resolve)(e)].reduce(((e,t)=>"string"==typeof t?[...e,t]:e),[]);return i.execFileSync("git",r,s).toString()};exports.getDiffFileList=(e=!1)=>{const t=["diff","--diff-algorithm=histogram","--diff-filter=ACM","--find-renames=100%","--name-only","--no-ext-diff","--relative",e&&"--staged",process.env.ESLINT_PLUGIN_DIFF_COMMIT??"HEAD","--"].reduce(((e,t)=>"string"==typeof t?[...e,t]:e),[]);return i.execFileSync("git",t,s).toString().trim().split("\n").map((e=>(0,n.resolve)(e)))};exports.hasCleanIndex=e=>{const t=["diff","--no-ext-diff","--quiet","--relative","--unified=0","--",(0,n.resolve)(e)];try{i.execFileSync("git",t,s)}catch(e){return!1}return!0};exports.fetchFromOrigin=e=>{const t=["fetch","--quiet","origin",e];i.execFileSync("git",t,s)};exports.getUntrackedFileList=(e=!1)=>{if(e)return[];return i.execFileSync("git",["ls-files","--exclude-standard","--others"],s).toString().trim().split("\n").map((e=>(0,n.resolve)(e)))};exports.getRangesForDiff=e=>e.split("\n").reduce(((e,t)=>{if(!/^@@ [^@]* @@/u.exec(t))return e;const r=(e=>{const t=/^@@ .* \+(?<start>\d+)(?<linesCountDelimiter>,(?<linesCount>\d+))? @@/u.exec(e);if(null===t)throw Error(`Couldn't match regex with line '${e}'`);const r={start:"0",linesCountDelimiter:",0",linesCount:"0",...t.groups},i=r.linesCountDelimiter&&r.linesCount?parseInt(r.linesCount):1,n=0!==i,s=parseInt(r.start),l=s+i;return n?new o.Range(s,l):null})(t);return null===r?e:[...e,r]}),[]);

@@ -1,1 +0,1 @@

Object.defineProperty(exports,"__esModule",{value:!0}),exports.processors=exports.configs=void 0;const s=require("./processors"),o={diff:s.diffConfig,staged:s.stagedConfig};exports.configs=o;const e={diff:s.diff,staged:s.staged};exports.processors=e,module.exports={configs:o,processors:e};
Object.defineProperty(exports,"__esModule",{value:!0}),exports.processors=exports.configs=void 0;const s=require("./processors"),o={ci:s.ciConfig,diff:s.diffConfig,staged:s.stagedConfig};exports.configs=o;const e={ci:s.ci,diff:s.diff,staged:s.staged};exports.processors=e,module.exports={configs:o,processors:e};

@@ -1,1 +0,1 @@

Object.defineProperty(exports,"__esModule",{value:!0}),exports.getUnstagedChangesError=exports.stagedConfig=exports.staged=exports.diffConfig=exports.diff=void 0;const e=require("./git"),s=(e,s)=>(t,r)=>void 0!==process.env.VSCODE_CLI||s.includes(r)||e.includes(r)?[t]:[];function t(e){return[{fatal:!0,message:`${e} has unstaged changes. Please stage or remove the changes.`,severity:2,column:0,line:0,ruleId:null}]}exports.getUnstagedChangesError=t;const r=(s,r=!1)=>(i,o)=>{if(0===i.length)return[];if(s.includes(o))return i.flat();if(r&&!(0,e.hasCleanIndex)(o))return t(o);const n=(0,e.getRangesForDiff)((0,e.getDiffForFile)(o,r));return i.flatMap((e=>e.filter((({fatal:e,line:s})=>{if(!0===e)return!0;const t=n.some((e=>s=>s.isWithinRange(e))(s));return t}))))},i=(t=!1)=>{const i=(0,e.getUntrackedFileList)(t),o=(0,e.getDiffFileList)(t);return{preprocess:s(i,o),postprocess:r(i,t),supportsAutofix:!0}},o=i();exports.diff=o;const n=i(!0);exports.staged=n;exports.diffConfig={plugins:["diff"],overrides:[{files:["*"],processor:"diff/diff"}]};exports.stagedConfig={plugins:["diff"],overrides:[{files:["*"],processor:"diff/staged"}]};
Object.defineProperty(exports,"__esModule",{value:!0}),exports.getUnstagedChangesError=exports.stagedConfig=exports.staged=exports.diffConfig=exports.diff=exports.ciConfig=exports.ci=void 0;const e=require("./ci"),s=require("./git");if(void 0!==process.env.CI){const r=process.env.ESLINT_PLUGIN_DIFF_COMMIT??(0,e.guessBranch)();if(void 0!==r){const e=r.replace(/^origin\//,""),i=`origin/${e}`;(0,s.fetchFromOrigin)(e),process.env.ESLINT_PLUGIN_DIFF_COMMIT=i}}const r=(e,s)=>(r,i)=>void 0!==process.env.VSCODE_CLI||s.includes(i)||e.includes(i)?[r]:[],i=e=>[{fatal:!0,message:`${e} has unstaged changes. Please stage or remove the changes.`,severity:2,column:0,line:0,ruleId:null}];exports.getUnstagedChangesError=i;const o=(e,r=!1)=>(o,t)=>{if(0===o.length)return[];if(e.includes(t))return o.flat();if(r&&!(0,s.hasCleanIndex)(t))return i(t);const n=(0,s.getRangesForDiff)((0,s.getDiffForFile)(t,r));return o.flatMap((e=>e.filter((({fatal:e,line:s})=>{if(!0===e)return!0;const r=n.some((e=>s=>s.isWithinRange(e))(s));return r}))))},t=e=>{const i="staged"===e,t=(0,s.getUntrackedFileList)(i),n=(0,s.getDiffFileList)(i);return{preprocess:r(t,n),postprocess:o(t,i),supportsAutofix:!0}},n=void 0!==process.env.CI?t("ci"):{};exports.ci=n;const f=t("diff");exports.diff=f;const c=t("staged");exports.staged=c;exports.diffConfig={plugins:["diff"],overrides:[{files:["*"],processor:"diff/diff"}]};const d=void 0===process.env.CI?{}:{plugins:["diff"],overrides:[{files:["*"],processor:"diff/ci"}]};exports.ciConfig=d;exports.stagedConfig={plugins:["diff"],overrides:[{files:["*"],processor:"diff/staged"}]};
{
"name": "eslint-plugin-diff",
"version": "2.0.1",
"version": "2.0.2-0",
"description": "Run ESLint on your changes only",

@@ -59,2 +59,3 @@ "keywords": [

"eslint-config-prettier": "^8.5.0",
"eslint-import-resolver-typescript": "^3.3.0",
"eslint-plugin-import": "^2.26.0",

@@ -73,2 +74,3 @@ "eslint-plugin-promise": "^6.0.0",

"ts-jest": "^28.0.4",
"tsd": "^0.22.0",
"typescript": "^4.7.3"

@@ -75,0 +77,0 @@ },

@@ -39,4 +39,8 @@ # eslint-plugin-diff ![](https://img.shields.io/npm/dt/eslint-plugin-diff?style=flat-square&logo=npm&logoColor=white)

Extend your ESLint config with `"plugin:diff/diff"`:
Extend your ESLint config with one of our configs.
#### `"plugin:diff/diff"` (recommended)
Only lint changes
```json

@@ -48,8 +52,31 @@ {

You can also choose `"plugin:diff/staged"` if you prefer to lint only staged
files.
#### `"plugin:diff/ci"`
In a CI-environment, only lint changes. Locally, skip the plugin (i.e. lint everything).
> NOTE: This requires the environment variable `CI` to be defined, which most CI-provides set automatically.
```json
{
"extends": ["plugin:diff/ci"]
}
```
#### `"plugin:diff/staged"`
Only lint the changes you've staged for an upcoming commit.
```json
{
"extends": ["plugin:diff/staged"]
}
```
## Enable the plugin in CI only
If you want to enable the plugin in CI only, you can use extend the config with the the plugin locally, but enable it
## CI Setup
To lint all the changes of a PR, you only have to set
To lint all the changes of a pull-request, you only have to set
`ESLINT_PLUGIN_DIFF_COMMIT` before running ESLint.

@@ -70,3 +97,3 @@

run: npm install
- name: Fetch the base branch
- name: Fetch the base branch, so we can use `git diff`
run: git fetch origin ${{ github.event.pull_request.base.ref }}:${{ github.event.pull_request.base.ref }}

@@ -73,0 +100,0 @@ - name: Run ESLint on your changes only

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