@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 CHANGED
@@ -1,13 +1,19 @@
1
1
  # checkdigit/eslint-plugin
2
2
 
3
- [![MIT License](https://img.shields.io/apm/l/atomic-design-ui.svg?)](https://github.com/checkdigit/eslint-plugin/blob/master/LICENSE.txt)
3
+ [![MIT License](https://img.shields.io/github/license/checkdigit/typescript-config)](https://github.com/checkdigit/eslint-plugin/blob/master/LICENSE.txt)
4
4
  [![David](https://status.david-dm.org/gh/checkdigit/eslint-plugin.svg)](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
- * `no-card-numbers`
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
 
@@ -0,0 +1,3 @@
1
+ import type { Rule } from 'eslint';
2
+ declare const _default: Rule.RuleModule;
3
+ export default _default;
package/dist/index.d.ts CHANGED
@@ -1,19 +1,21 @@
1
- export declare const rules: {
2
- 'no-card-numbers': {
3
- meta: {
4
- type: string;
5
- docs: {
6
- description: string;
7
- url: string;
8
- };
9
- messages: {
10
- CARD_NUMBER_FOUND: string;
11
- CARD_NUMBERS_FOUND: string;
12
- };
13
- };
14
- create(context: import("eslint").Rule.RuleContext): {
15
- Literal(node: import("estree").Literal): void;
16
- TemplateElement(node: import("estree").TemplateElement): void;
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";Object.defineProperty(exports,"__esModule",{value:!0});const e=/\d{15,19}/gm,t=["4111111111111111","111111111111111","000000000000000","0000000000000000","00000000000000000","000000000000000000","0000000000000000000"];function r(r,n,o,a){const s=r.match(e);if(null===s)return;const d=s.filter((e=>e.split("").reverse().map((e=>parseInt(e,10))).reduce(((e,t,r)=>(r%2==1&&(t*=2)>9&&(t=t%10+1),e+t)),0)%10==0&&-1===t.indexOf(e)));1===d.length?void 0!==o?n.report({messageId:"CARD_NUMBER_FOUND",data:{number:d[0]},node:o}):void 0!==a&&n.report({messageId:"CARD_NUMBER_FOUND",data:{number:d[0]},loc:{start:a.start,end:a.end}}):d.length>1&&(void 0!==o?n.report({messageId:"CARD_NUMBERS_FOUND",data:{number:s.join(", ")},node:o}):void 0!==a&&n.report({messageId:"CARD_NUMBERS_FOUND",data:{number:s.join(", ")},loc:{start:a.start,end:a.end}}))}const n={"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&&r(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;r(t.value+"",e,t)},TemplateElement(t){if(!t.value)return;r(t.value.cooked+"",e,t)}})}};exports.rules=n;
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
- import type { Literal, TemplateElement } from 'estree';
3
- declare const _default: {
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": "2.0.1",
4
- "description": "eslint plugin for appending file path as a comment at the top of a file",
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": ">=7"
33
+ "eslint": ">=8"
32
34
  },
33
35
  "devDependencies": {
34
36
  "@checkdigit/prettier-config": "^1.0.2",
35
- "@checkdigit/publish": "^1.0.19",
36
- "@checkdigit/typescript-config": "^2.1.0",
37
- "@types/eslint": "^7.2.11",
38
- "@types/jest": "^26.0.23",
39
- "@types/node": "^15.6.1",
40
- "eslint": "^7.27.0",
41
- "jest": "^27.0.1",
42
- "prettier": "^2.3.0",
43
- "ts-jest": "^27.0.0",
44
- "typescript": "^4.3.2"
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,