@checkdigit/eslint-plugin 2.0.1 → 3.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +8 -2
- package/dist/file-path-comment.d.ts +3 -0
- package/dist/index.d.ts +21 -19
- package/dist/index.js +2 -1
- package/dist/index.js.map +1 -0
- package/dist/no-card-numbers.d.ts +3 -20
- package/package.json +29 -18
package/README.md
CHANGED
|
@@ -1,13 +1,19 @@
|
|
|
1
1
|
# checkdigit/eslint-plugin
|
|
2
2
|
|
|
3
|
-
[](https://github.com/checkdigit/eslint-plugin/blob/master/LICENSE.txt)
|
|
4
4
|
[](https://status.david-dm.org/gh/checkdigit/eslint-plugin.svg)
|
|
5
5
|
|
|
6
6
|
Copyright (c) 2021 [Check Digit, LLC](https://checkdigit.com)
|
|
7
7
|
|
|
8
8
|
## Rules
|
|
9
9
|
|
|
10
|
-
*
|
|
10
|
+
* `@checkdigit/no-card-numbers`
|
|
11
|
+
* `@checkdigit/file-path-comment`
|
|
12
|
+
|
|
13
|
+
## Configurations
|
|
14
|
+
|
|
15
|
+
* `@checkdigit/all`
|
|
16
|
+
* `@checkdigit/recommended`
|
|
11
17
|
|
|
12
18
|
## License
|
|
13
19
|
|
package/dist/index.d.ts
CHANGED
|
@@ -1,19 +1,21 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
};
|
|
1
|
+
declare const _default: {
|
|
2
|
+
rules: {
|
|
3
|
+
'file-path-comment': import("eslint").Rule.RuleModule;
|
|
4
|
+
'no-card-numbers': import("eslint").Rule.RuleModule;
|
|
5
|
+
};
|
|
6
|
+
configs: {
|
|
7
|
+
all: {
|
|
8
|
+
rules: {
|
|
9
|
+
'@checkdigit/no-card-numbers': string;
|
|
10
|
+
'@checkdigit/file-path-comment': string;
|
|
11
|
+
};
|
|
12
|
+
};
|
|
13
|
+
recommended: {
|
|
14
|
+
rules: {
|
|
15
|
+
'@checkdigit/no-card-numbers': string;
|
|
16
|
+
'@checkdigit/file-path-comment': string;
|
|
17
|
+
};
|
|
18
|
+
};
|
|
19
|
+
};
|
|
20
|
+
};
|
|
21
|
+
export default _default;
|
package/dist/index.js
CHANGED
|
@@ -1 +1,2 @@
|
|
|
1
|
-
"use strict";
|
|
1
|
+
"use strict";const e=/\d{15,19}/gmu,t=["4111111111111111","111111111111111","000000000000000","0000000000000000","00000000000000000","000000000000000000","0000000000000000000"];function n(n,r,i,o){const l=n.match(e);if(null===l)return;const s=l.filter((e=>e.split("").reverse().map((e=>parseInt(e,10))).reduce(((e,t,n)=>{let r=t;return n%2==1&&(r*=2,r>9&&(r=r%10+1)),e+r}),0)%10==0&&-1===t.indexOf(e)));1===s.length?void 0!==i?r.report({messageId:"CARD_NUMBER_FOUND",data:{number:s[0]},node:i}):void 0!==o&&r.report({messageId:"CARD_NUMBER_FOUND",data:{number:s[0]},loc:{start:o.start,end:o.end}}):s.length>1&&(void 0!==i?r.report({messageId:"CARD_NUMBERS_FOUND",data:{number:l.join(", ")},node:i}):void 0!==o&&r.report({messageId:"CARD_NUMBERS_FOUND",data:{number:l.join(", ")},loc:{start:o.start,end:o.end}}))}var r={rules:{"file-path-comment":{meta:{type:"suggestion",docs:{description:"Validate that first line of file is a path to the file",url:"https://github.com/checkdigit/eslint-plugin"},fixable:"code"},create(e){const t=e.getSourceCode().getLines()[0],n=e.getFilename().split("src/")[1];if(void 0===n)return{};if(t.startsWith("//")){const r=t.split("// ")[1];n!==r&&e.report({loc:{start:{line:0,column:0},end:{line:0,column:1}},message:"first line is a comment but is not a path to the file",fix:e=>e.replaceTextRange([0,t.length],`// ${n}`)})}else t.startsWith("/*")?e.report({loc:{start:{line:0,column:0},end:{line:0,column:1}},message:"first line cannot be a block comment",fix:e=>e.insertTextBeforeRange([0,0],`// ${n}\n\n`)}):e.report({loc:{start:{line:0,column:0},end:{line:0,column:1}},message:"first line is not a comment with the file path",fix:e=>e.insertTextBeforeRange([0,0],`// ${n}\n\n`)});return{}}},"no-card-numbers":{meta:{type:"problem",docs:{description:"Detects if a luhn passing card number",url:"https://github.com/checkdigit/eslint-plugin"},messages:{CARD_NUMBER_FOUND:'Valid card number: "{{ number }}"',CARD_NUMBERS_FOUND:'Multiple valid card numbers found: "{{ numbers }}"'}},create:e=>(e.getSourceCode().getAllComments().forEach((t=>{void 0!==t.loc&&null!==t.loc&&n(t.value,e,void 0,t.loc)})),{Literal(t){if(void 0===t.value)return;if("string"!=typeof t.value&&"number"!=typeof t.value)return;n(`${t.value}`,e,t)},TemplateElement(t){t.value&&"string"==typeof t.value.cooked&&n(t.value.cooked,e,t)}})}},configs:{all:{rules:{"@checkdigit/no-card-numbers":"error","@checkdigit/file-path-comment":"error"}},recommended:{rules:{"@checkdigit/no-card-numbers":"error","@checkdigit/file-path-comment":"off"}}}};module.exports=r;
|
|
2
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../src/no-card-numbers.ts","../src/index.ts","../src/file-path-comment.ts"],"sourcesContent":[null,null,null],"names":["cardNumberRegex","allowCardNumbers","checkForCardNumbers","value","context","node","loc","matches","match","cardNumbers","filter","split","reverse","map","digit","parseInt","reduce","previousValue","currentValue","index","indexOf","length","undefined","report","messageId","data","number","start","end","join","rules","meta","type","docs","description","url","fixable","create","firstLine","getSourceCode","getLines","expectedPath","getFilename","startsWith","actualComment","line","column","message","fix","fixer","replaceTextRange","insertTextBeforeRange","messages","CARD_NUMBER_FOUND","CARD_NUMBERS_FOUND","getAllComments","forEach","comment","Literal","TemplateElement","cooked","configs","all","recommended"],"mappings":"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"}
|
|
@@ -1,20 +1,3 @@
|
|
|
1
|
-
import type { Rule } from 'eslint';
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
meta: {
|
|
5
|
-
type: string;
|
|
6
|
-
docs: {
|
|
7
|
-
description: string;
|
|
8
|
-
url: string;
|
|
9
|
-
};
|
|
10
|
-
messages: {
|
|
11
|
-
CARD_NUMBER_FOUND: string;
|
|
12
|
-
CARD_NUMBERS_FOUND: string;
|
|
13
|
-
};
|
|
14
|
-
};
|
|
15
|
-
create(context: Rule.RuleContext): {
|
|
16
|
-
Literal(node: Literal): void;
|
|
17
|
-
TemplateElement(node: TemplateElement): void;
|
|
18
|
-
};
|
|
19
|
-
};
|
|
20
|
-
export default _default;
|
|
1
|
+
import type { Rule } from 'eslint';
|
|
2
|
+
declare const _default: Rule.RuleModule;
|
|
3
|
+
export default _default;
|
package/package.json
CHANGED
|
@@ -1,18 +1,20 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@checkdigit/eslint-plugin",
|
|
3
|
-
"version": "
|
|
4
|
-
"description": "
|
|
3
|
+
"version": "3.0.0",
|
|
4
|
+
"description": "Check Digit eslint plugins",
|
|
5
5
|
"prettier": "@checkdigit/prettier-config",
|
|
6
6
|
"main": "dist/index.js",
|
|
7
|
+
"keywords": [
|
|
8
|
+
"eslint",
|
|
9
|
+
"eslintplugin"
|
|
10
|
+
],
|
|
7
11
|
"scripts": {
|
|
8
|
-
"prepublishOnly": "publish",
|
|
9
|
-
"postpublish": "rimraf dist .npmignore",
|
|
10
12
|
"preversion": "npm test",
|
|
11
13
|
"postversion": "git push && git push --tags",
|
|
12
|
-
"test": "tsc --noEmit && jest && npm run prettier",
|
|
14
|
+
"test": "tsc --noEmit && jest && npm run prettier && npm run lint",
|
|
15
|
+
"lint": "eslint -f unix --ext .ts src/**",
|
|
13
16
|
"prettier": "prettier --list-different 'src/**/*.ts'",
|
|
14
|
-
"prettier:fix": "prettier --write 'src/**/*.ts'"
|
|
15
|
-
"build": "tsc"
|
|
17
|
+
"prettier:fix": "prettier --write 'src/**/*.ts'"
|
|
16
18
|
},
|
|
17
19
|
"engines": {
|
|
18
20
|
"node": ">=14"
|
|
@@ -28,20 +30,29 @@
|
|
|
28
30
|
},
|
|
29
31
|
"homepage": "https://github.com/checkdigit/eslint-plugin#readme",
|
|
30
32
|
"peerDependencies": {
|
|
31
|
-
"eslint": ">=
|
|
33
|
+
"eslint": ">=8"
|
|
32
34
|
},
|
|
33
35
|
"devDependencies": {
|
|
34
36
|
"@checkdigit/prettier-config": "^1.0.2",
|
|
35
|
-
"@checkdigit/
|
|
36
|
-
"@
|
|
37
|
-
"@types/
|
|
38
|
-
"@types/
|
|
39
|
-
"@
|
|
40
|
-
"eslint": "^
|
|
41
|
-
"
|
|
42
|
-
"prettier": "^
|
|
43
|
-
"
|
|
44
|
-
"
|
|
37
|
+
"@checkdigit/typescript-config": "^2.2.0",
|
|
38
|
+
"@types/eslint": "^8.2.0",
|
|
39
|
+
"@types/jest": "^27.0.3",
|
|
40
|
+
"@types/node": "^16.11.11",
|
|
41
|
+
"@typescript-eslint/eslint-plugin": "^5.5.0",
|
|
42
|
+
"@typescript-eslint/parser": "^5.5.0",
|
|
43
|
+
"eslint": "^8.3.0",
|
|
44
|
+
"eslint-config-prettier": "^8.3.0",
|
|
45
|
+
"eslint-plugin-deprecate": "^0.7.0",
|
|
46
|
+
"eslint-plugin-eslint-plugin": "^4.0.2",
|
|
47
|
+
"eslint-plugin-import": "^2.25.3",
|
|
48
|
+
"eslint-plugin-no-only-tests": "^2.6.0",
|
|
49
|
+
"eslint-plugin-no-secrets": "^0.8.9",
|
|
50
|
+
"eslint-plugin-node": "^11.1.0",
|
|
51
|
+
"eslint-plugin-sonarjs": "^0.11.0",
|
|
52
|
+
"jest": "^27.4.3",
|
|
53
|
+
"prettier": "^2.5.0",
|
|
54
|
+
"ts-jest": "^27.0.7",
|
|
55
|
+
"typescript": "^4.5.2"
|
|
45
56
|
},
|
|
46
57
|
"jest": {
|
|
47
58
|
"collectCoverage": true,
|