@checkdigit/eslint-plugin 4.0.0-beta.1 → 4.1.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.
Files changed (48) hide show
  1. package/.github/workflows/ci.yml +72 -0
  2. package/.github/workflows/codeql-analysis.yml +31 -0
  3. package/.github/workflows/coverage.yml +46 -0
  4. package/README.md +6 -9
  5. package/SECURITY.md +14 -0
  6. package/dist/index.d.ts +3 -3
  7. package/dist/index.js +2 -38
  8. package/dist/index.js.map +1 -1
  9. package/dist/{pure-functions.d.ts → no-uuid.d.ts} +0 -0
  10. package/package.json +24 -32
  11. package/.eslintrc +0 -76
  12. package/coverage/clover.xml +0 -94
  13. package/coverage/coverage-final.json +0 -4
  14. package/coverage/lcov-report/base.css +0 -224
  15. package/coverage/lcov-report/block-navigation.js +0 -87
  16. package/coverage/lcov-report/favicon.png +0 -0
  17. package/coverage/lcov-report/file-path-comment.ts.html +0 -349
  18. package/coverage/lcov-report/index.html +0 -146
  19. package/coverage/lcov-report/no-card-numbers.ts.html +0 -508
  20. package/coverage/lcov-report/prettify.css +0 -1
  21. package/coverage/lcov-report/prettify.js +0 -2
  22. package/coverage/lcov-report/pure-functions.ts.html +0 -301
  23. package/coverage/lcov-report/sort-arrow-sprite.png +0 -0
  24. package/coverage/lcov-report/sorter.js +0 -196
  25. package/coverage/lcov.info +0 -176
  26. package/dist/file-path-comment.js +0 -86
  27. package/dist/file-path-comment.js.map +0 -1
  28. package/dist/file-path-comment.spec.d.ts +0 -1
  29. package/dist/file-path-comment.spec.js +0 -72
  30. package/dist/file-path-comment.spec.js.map +0 -1
  31. package/dist/no-card-numbers.js +0 -131
  32. package/dist/no-card-numbers.js.map +0 -1
  33. package/dist/no-card-numbers.spec.d.ts +0 -1
  34. package/dist/no-card-numbers.spec.js +0 -104
  35. package/dist/no-card-numbers.spec.js.map +0 -1
  36. package/dist/pure-functions.js +0 -55
  37. package/dist/pure-functions.js.map +0 -1
  38. package/dist/pure-functions.spec.d.ts +0 -1
  39. package/dist/pure-functions.spec.js +0 -90
  40. package/dist/pure-functions.spec.js.map +0 -1
  41. package/src/file-path-comment.spec.ts +0 -71
  42. package/src/file-path-comment.ts +0 -88
  43. package/src/index.ts +0 -35
  44. package/src/no-card-numbers.spec.ts +0 -114
  45. package/src/no-card-numbers.ts +0 -141
  46. package/src/pure-functions.spec.ts +0 -93
  47. package/src/pure-functions.ts +0 -72
  48. package/tsconfig.json +0 -12
@@ -0,0 +1,72 @@
1
+ name: CI
2
+
3
+ on:
4
+ pull_request:
5
+ branches:
6
+ - 'main'
7
+
8
+ env:
9
+ CI: true
10
+
11
+ jobs:
12
+ pullRequestBuild:
13
+ name: Pull Request Build
14
+ runs-on: ubuntu-latest
15
+ strategy:
16
+ matrix:
17
+ node-version: [16.x, 18.x]
18
+ steps:
19
+ - uses: actions/checkout@v3
20
+ - name: Use Node.js ${{ matrix.node-version }}
21
+ uses: actions/setup-node@v3
22
+ with:
23
+ node-version: ${{ matrix.node-version }}
24
+ cache: 'npm'
25
+ - name: Install dependencies
26
+ run: npm ci --ignore-scripts
27
+ env:
28
+ NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
29
+ - name: Audit Signatures
30
+ run: npm audit signatures
31
+ env:
32
+ NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
33
+ - name: Compile
34
+ run: npm run ci:compile
35
+ - name: Check Code Style
36
+ run: npm run ci:style
37
+ - name: Perform Linting
38
+ run: npm run ci:lint
39
+ - name: Run Tests
40
+ run: npm run ci:test
41
+
42
+ branchBuild:
43
+ runs-on: ubuntu-latest
44
+ name: Branch Build
45
+ strategy:
46
+ matrix:
47
+ node-version: [16.x, 18.x]
48
+ steps:
49
+ - uses: actions/checkout@v3
50
+ with:
51
+ ref: ${{ github.event.pull_request.head.sha }}
52
+ - name: Use Node.js ${{ matrix.node-version }}
53
+ uses: actions/setup-node@v3
54
+ with:
55
+ node-version: ${{ matrix.node-version }}
56
+ cache: 'npm'
57
+ - name: Install dependencies
58
+ run: npm ci --ignore-scripts
59
+ env:
60
+ NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
61
+ - name: Audit Signatures
62
+ run: npm audit signatures
63
+ env:
64
+ NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
65
+ - name: Compile
66
+ run: npm run ci:compile
67
+ - name: Check Code Style
68
+ run: npm run ci:style
69
+ - name: Perform Linting
70
+ run: npm run ci:lint
71
+ - name: Run Tests
72
+ run: npm run ci:test
@@ -0,0 +1,31 @@
1
+ name: 'CodeQL'
2
+
3
+ on:
4
+ push:
5
+ branches: ['main']
6
+ pull_request:
7
+ branches: ['main']
8
+ schedule:
9
+ - cron: '44 8 * * 1'
10
+
11
+ jobs:
12
+ analyze:
13
+ name: Analyze
14
+ runs-on: ubuntu-latest
15
+ permissions:
16
+ actions: read
17
+ contents: read
18
+ security-events: write
19
+ strategy:
20
+ fail-fast: false
21
+ matrix:
22
+ language: ['javascript']
23
+ steps:
24
+ - name: Checkout repository
25
+ uses: actions/checkout@v3
26
+ - name: Initialize CodeQL
27
+ uses: github/codeql-action/init@v2
28
+ with:
29
+ languages: ${{ matrix.language }}
30
+ - name: Perform CodeQL Analysis
31
+ uses: github/codeql-action/analyze@v2
@@ -0,0 +1,46 @@
1
+ name: Coverage
2
+
3
+ on:
4
+ pull_request:
5
+ branches:
6
+ - 'main'
7
+
8
+ env:
9
+ CI: true
10
+
11
+ jobs:
12
+ branchBuild:
13
+ runs-on: ubuntu-latest
14
+ name: Branch Build
15
+ strategy:
16
+ matrix:
17
+ node-version: [16.x]
18
+ steps:
19
+ - uses: actions/checkout@v3
20
+ with:
21
+ ref: ${{ github.event.pull_request.head.sha }}
22
+ - name: Use Node.js ${{ matrix.node-version }}
23
+ uses: actions/setup-node@v3
24
+ with:
25
+ node-version: ${{ matrix.node-version }}
26
+ cache: 'npm'
27
+ - name: Install dependencies
28
+ run: npm ci --ignore-scripts
29
+ env:
30
+ NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
31
+ - name: Calculate Code Coverage
32
+ run: npm run ci:coverage
33
+ - name: Create Coverage Report for base branch
34
+ run: |
35
+ mv coverage/lcov.info coverage/lcov_head.info
36
+ git fetch
37
+ git checkout origin/${{ github.event.pull_request.base.ref }}
38
+ npm ci --ignore-scripts && npm run ci:coverage
39
+ env:
40
+ NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
41
+ - name: Post Coverage Report
42
+ uses: checkdigit/github-actions/coverage-reporter@main
43
+ with:
44
+ lcov-file: 'coverage/lcov_head.info'
45
+ lcov-base: 'coverage/lcov.info'
46
+ delete-old-comments: true
package/README.md CHANGED
@@ -1,20 +1,17 @@
1
1
  # checkdigit/eslint-plugin
2
2
 
3
- [![MIT License](https://img.shields.io/github/license/checkdigit/eslint-plugin)](https://github.com/checkdigit/eslint-plugin/blob/master/LICENSE.txt)
4
- [![David](https://status.david-dm.org/gh/checkdigit/eslint-plugin.svg)](https://status.david-dm.org/gh/checkdigit/eslint-plugin.svg)
5
-
6
- Copyright (c) 2021 [Check Digit, LLC](https://checkdigit.com)
3
+ Copyright (c) 2021-2022 [Check Digit, LLC](https://checkdigit.com)
7
4
 
8
5
  ## Rules
9
6
 
10
- * `@checkdigit/no-card-numbers`
11
- * `@checkdigit/file-path-comment`
12
- * `@checkdigit/pure-functions`
7
+ - `@checkdigit/no-card-numbers`
8
+ - `@checkdigit/file-path-comment`
9
+ - `@checkdigit/no-uuid`
13
10
 
14
11
  ## Configurations
15
12
 
16
- * `@checkdigit/all`
17
- * `@checkdigit/recommended`
13
+ - `@checkdigit/all`
14
+ - `@checkdigit/recommended`
18
15
 
19
16
  ## License
20
17
 
package/SECURITY.md ADDED
@@ -0,0 +1,14 @@
1
+ # Security Policy
2
+
3
+ ## Supported Versions
4
+
5
+ These versions of `@checkdigit/eslint-plugin` are currently being supported with security updates.
6
+
7
+ | Version | Supported |
8
+ | ------- | ------------------ |
9
+ | \>= 4.0 | :white_check_mark: |
10
+ | \< 4.0 | :x: |
11
+
12
+ ## Reporting a Vulnerability
13
+
14
+ Please create an issue at https://github.com/checkdigit/eslint-plugin/issues
package/dist/index.d.ts CHANGED
@@ -2,21 +2,21 @@ declare const _default: {
2
2
  rules: {
3
3
  'file-path-comment': import("eslint").Rule.RuleModule;
4
4
  'no-card-numbers': import("eslint").Rule.RuleModule;
5
- 'pure-functions': import("eslint").Rule.RuleModule;
5
+ 'no-uuid': import("eslint").Rule.RuleModule;
6
6
  };
7
7
  configs: {
8
8
  all: {
9
9
  rules: {
10
10
  '@checkdigit/no-card-numbers': string;
11
11
  '@checkdigit/file-path-comment': string;
12
- '@checkdigit/pure-functions': string;
12
+ '@checkdigit/no-uuid': string;
13
13
  };
14
14
  };
15
15
  recommended: {
16
16
  rules: {
17
17
  '@checkdigit/no-card-numbers': string;
18
18
  '@checkdigit/file-path-comment': string;
19
- '@checkdigit/pure-functions': string;
19
+ '@checkdigit/no-uuid': string;
20
20
  };
21
21
  };
22
22
  };
package/dist/index.js CHANGED
@@ -1,38 +1,2 @@
1
- "use strict";
2
- // index.ts
3
- var __importDefault = (this && this.__importDefault) || function (mod) {
4
- return (mod && mod.__esModule) ? mod : { "default": mod };
5
- };
6
- Object.defineProperty(exports, "__esModule", { value: true });
7
- /*
8
- * Copyright (c) 2021 Check Digit, LLC
9
- *
10
- * This code is licensed under the MIT license (see LICENSE.txt for details).
11
- */
12
- const file_path_comment_1 = __importDefault(require("./file-path-comment"));
13
- const no_card_numbers_1 = __importDefault(require("./no-card-numbers"));
14
- const pure_functions_1 = __importDefault(require("./pure-functions"));
15
- exports.default = {
16
- rules: {
17
- 'file-path-comment': file_path_comment_1.default,
18
- 'no-card-numbers': no_card_numbers_1.default,
19
- 'pure-functions': pure_functions_1.default,
20
- },
21
- configs: {
22
- all: {
23
- rules: {
24
- '@checkdigit/no-card-numbers': 'error',
25
- '@checkdigit/file-path-comment': 'error',
26
- '@checkdigit/pure-functions': 'error',
27
- },
28
- },
29
- recommended: {
30
- rules: {
31
- '@checkdigit/no-card-numbers': 'error',
32
- '@checkdigit/file-path-comment': 'off',
33
- '@checkdigit/pure-functions': 'off',
34
- },
35
- },
36
- },
37
- };
38
- //# sourceMappingURL=index.js.map
1
+ "use strict";const e=/\d{15,19}/gmu,t=["4111111111111111","111111111111111","000000000000000","0000000000000000","00000000000000000","000000000000000000","0000000000000000000"];function n(n,o,i,r){const a=n.match(e);if(null===a)return;const s=a.filter((e=>e.split("").reverse().map((e=>parseInt(e,10))).reduce(((e,t,n)=>{let o=t;return n%2==1&&(o*=2,o>9&&(o=o%10+1)),e+o}),0)%10==0&&-1===t.indexOf(e)));1===s.length?void 0!==i?o.report({messageId:"CARD_NUMBER_FOUND",data:{number:s[0]},node:i}):void 0!==r&&o.report({messageId:"CARD_NUMBER_FOUND",data:{number:s[0]},loc:{start:r.start,end:r.end}}):s.length>1&&(void 0!==i?o.report({messageId:"CARD_NUMBERS_FOUND",data:{numbers:a.join(", ")},node:i}):void 0!==r&&o.report({messageId:"CARD_NUMBERS_FOUND",data:{numbers:a.join(", ")},loc:{start:r.start,end:r.end}}))}const o=/[0-9a-fA-F]{8}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{12}/gmu;function i(e,t,n,i){const r=e.match(o);null!==r&&(1===r.length?void 0!==n?t.report({messageId:"UUID_FOUND",data:{uuid:r[0]},node:n}):void 0!==i&&t.report({messageId:"UUID_FOUND",data:{uuid:r[0]},loc:{start:i.start,end:i.end}}):r.length>1&&(void 0!==n?t.report({messageId:"UUIDS_FOUND",data:{uuids:r.join(", ")},node:n}):void 0!==i&&t.report({messageId:"UUIDS_FOUND",data:{uuids:r.join(", ")},loc:{start:i.start,end:i.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 o=t.split("// ")[1];n!==o&&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)}})},"no-uuid":{meta:{type:"problem",docs:{description:"Detects if a string literal contains a UUID",url:"https://github.com/checkdigit/eslint-plugin"},messages:{UUID_FOUND:'UUID found: "{{ uuid }}"',UUIDS_FOUND:'Multiple UUIDs found: "{{ uuids }}"'}},create:e=>(e.getSourceCode().getAllComments().forEach((t=>{void 0!==t.loc&&null!==t.loc&&i(t.value,e,void 0,t.loc)})),{Literal(t){if(void 0===t.value)return;if("string"!=typeof t.value)return;i(`${t.value}`,e,t)},TemplateElement(t){t.value&&"string"==typeof t.value.cooked&&i(t.value.cooked,e,t)}})}},configs:{all:{rules:{"@checkdigit/no-card-numbers":"error","@checkdigit/file-path-comment":"error","@checkdigit/no-uuid":"error"}},recommended:{rules:{"@checkdigit/no-card-numbers":"error","@checkdigit/file-path-comment":"off","@checkdigit/no-uuid":"error"}}}};module.exports=r;
2
+ //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA,WAAW;;;;;AAEX;;;;GAIG;AAEH,4EAAkD;AAClD,wEAA8C;AAC9C,sEAA6C;AAE7C,kBAAe;IACb,KAAK,EAAE;QACL,mBAAmB,EAAE,2BAAe;QACpC,iBAAiB,EAAE,yBAAa;QAChC,gBAAgB,EAAE,wBAAa;KAChC;IACD,OAAO,EAAE;QACP,GAAG,EAAE;YACH,KAAK,EAAE;gBACL,6BAA6B,EAAE,OAAO;gBACtC,+BAA+B,EAAE,OAAO;gBACxC,4BAA4B,EAAE,OAAO;aACtC;SACF;QACD,WAAW,EAAE;YACX,KAAK,EAAE;gBACL,6BAA6B,EAAE,OAAO;gBACtC,+BAA+B,EAAE,KAAK;gBACtC,4BAA4B,EAAE,KAAK;aACpC;SACF;KACF;CACF,CAAC"}
1
+ {"version":3,"file":"index.js","sources":["../src/no-card-numbers.ts","../src/no-uuid.ts","../src/index.ts","../src/file-path-comment.ts"],"sourcesContent":[null,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","numbers","join","uuidRegex","checkForUuid","uuid","uuids","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","UUID_FOUND","UUIDS_FOUND","configs","all","recommended"],"mappings":"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"}
File without changes
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@checkdigit/eslint-plugin",
3
- "version": "4.0.0-beta.1",
3
+ "version": "4.1.0",
4
4
  "description": "Check Digit eslint plugins",
5
5
  "prettier": "@checkdigit/prettier-config",
6
6
  "main": "dist/index.js",
@@ -8,14 +8,6 @@
8
8
  "eslint",
9
9
  "eslintplugin"
10
10
  ],
11
- "scripts": {
12
- "preversion": "npm test",
13
- "postversion": "git push && git push --tags",
14
- "test": "tsc --noEmit && jest && npm run prettier && npm run lint",
15
- "lint": "eslint -f unix --ext .ts src/**",
16
- "prettier": "prettier --list-different 'src/**/*.ts'",
17
- "prettier:fix": "prettier --write 'src/**/*.ts'"
18
- },
19
11
  "engines": {
20
12
  "node": ">=16"
21
13
  },
@@ -33,35 +25,35 @@
33
25
  "eslint": ">=8"
34
26
  },
35
27
  "devDependencies": {
36
- "@checkdigit/prettier-config": "^1.0.2",
37
- "@checkdigit/typescript-config": "^2.2.0",
38
- "@types/eslint": "^8.4.2",
39
- "@types/jest": "^27.5.1",
40
- "@types/node": "^17.0.35",
41
- "@typescript-eslint/eslint-plugin": "^5.26.0",
42
- "@typescript-eslint/parser": "^5.26.0",
43
- "eslint": "^8.16.0",
28
+ "@checkdigit/jest-config": "^2.0.0",
29
+ "@checkdigit/prettier-config": "^3.0.0",
30
+ "@checkdigit/typescript-config": "^3.1.0",
31
+ "@types/eslint": "^8.4.6",
32
+ "@typescript-eslint/eslint-plugin": "^5.39.0",
33
+ "@typescript-eslint/parser": "^5.39.0",
44
34
  "eslint-config-prettier": "^8.5.0",
45
35
  "eslint-plugin-deprecate": "^0.7.0",
46
- "eslint-plugin-eslint-plugin": "^4.2.0",
36
+ "eslint-plugin-eslint-plugin": "^5.0.6",
47
37
  "eslint-plugin-import": "^2.26.0",
48
- "eslint-plugin-no-only-tests": "^2.6.0",
38
+ "eslint-plugin-no-only-tests": "^3.0.0",
49
39
  "eslint-plugin-no-secrets": "^0.8.9",
50
40
  "eslint-plugin-node": "^11.1.0",
51
- "eslint-plugin-sonarjs": "^0.13.0",
52
- "jest": "^28.1.0",
53
- "ts-jest": "^28.0.3"
41
+ "eslint-plugin-sonarjs": "^0.15.0"
42
+ },
43
+ "scripts": {
44
+ "postversion": "git push && git push --tags",
45
+ "lint:fix": "eslint -f unix --ext .ts src --fix",
46
+ "lint": "eslint -f unix --ext .ts src",
47
+ "prettier": "prettier --ignore-path .gitignore --list-different .",
48
+ "prettier:fix": "prettier --ignore-path .gitignore --write .",
49
+ "test": "npm run ci:compile && npm run ci:test && npm run ci:lint && npm run ci:style",
50
+ "ci:compile": "tsc --noEmit",
51
+ "ci:test": "jest --coverage=false",
52
+ "ci:coverage": "jest --coverage=true",
53
+ "ci:lint": "npm run lint",
54
+ "ci:style": "npm run prettier"
54
55
  },
55
56
  "jest": {
56
- "collectCoverage": true,
57
- "preset": "ts-jest",
58
- "testMatch": [
59
- "<rootDir>/src/**/?(*.)spec.ts"
60
- ],
61
- "testPathIgnorePatterns": [
62
- "<rootDir>/build",
63
- "<rootDir>/coverage",
64
- "<rootDir>/node_modules"
65
- ]
57
+ "preset": "@checkdigit/jest-config"
66
58
  }
67
59
  }
package/.eslintrc DELETED
@@ -1,76 +0,0 @@
1
- {
2
- "parser": "@typescript-eslint/parser",
3
- "parserOptions": {
4
- "project": "./tsconfig.json"
5
- },
6
- "plugins": [
7
- "@typescript-eslint",
8
- "sonarjs",
9
- "import",
10
- "no-only-tests",
11
- "no-secrets",
12
- "deprecate",
13
- "eslint-plugin"
14
- ],
15
- "extends": [
16
- "eslint:all",
17
- "plugin:@typescript-eslint/recommended",
18
- "plugin:@typescript-eslint/recommended-requiring-type-checking",
19
- "plugin:eslint-plugin-eslint-plugin/recommended",
20
- "plugin:sonarjs/recommended",
21
- "prettier"
22
- ],
23
- "rules": {
24
- "sort-keys": "off",
25
- "capitalized-comments": "off",
26
- "func-style": ["error", "declaration", { "allowArrowFunctions": true }],
27
- "no-negated-condition": "off",
28
- "multiline-comment-style": "off",
29
- "no-magic-numbers": ["error", { "ignore": [-1, 0, 1, 2, 10, 16, 60] }],
30
- "no-ternary": "off",
31
- "max-params": ["error", 8],
32
- "max-statements": "off",
33
- "consistent-return": "off",
34
- "no-undef": "off",
35
- "init-declarations": "off",
36
- "no-inline-comments": "off",
37
- "line-comment-position": "off",
38
- "prefer-destructuring": "off",
39
- "no-useless-return": "off",
40
- "complexity": "off",
41
- "max-lines": ["error", { "max": 500, "skipBlankLines": true, "skipComments": true }],
42
- "id-length": ["error", { "properties": "never", "exceptions": ["_"] }],
43
- "no-plusplus": "off",
44
- "default-case": "off",
45
- "no-continue": "off",
46
- "callback-return": ["error", ["callback", "cb"]],
47
- "new-cap": ["error", { "capIsNew": false }],
48
- "dot-notation": "off",
49
- "no-undefined": "off",
50
- "one-var": ["error", "never"],
51
- "max-lines-per-function": ["error", 200],
52
- "sonarjs/cognitive-complexity": ["error", 24],
53
- "no-only-tests/no-only-tests": "error",
54
- "curly": "error"
55
- },
56
- "overrides": [
57
- {
58
- "files": ["*.spec.ts", "*.test.ts"],
59
- "rules": {
60
- "no-magic-numbers": "off",
61
- "no-undefined": "off",
62
- "max-lines-per-function": "off",
63
- "sonarjs/no-duplicate-string": "off",
64
- "sonarjs/no-identical-functions": "off",
65
- "sonarjs/cognitive-complexity": "off",
66
- "max-lines": "off",
67
- "no-await-in-loop": "off",
68
- "@typescript-eslint/no-unsafe-call": "off",
69
- "@typescript-eslint/no-unsafe-member-access": "off",
70
- "@typescript-eslint/no-unsafe-assignment": "off",
71
- "@typescript-eslint/no-unsafe-return": "off",
72
- "@typescript-eslint/restrict-template-expressions": "off"
73
- }
74
- }
75
- ]
76
- }
@@ -1,94 +0,0 @@
1
- <?xml version="1.0" encoding="UTF-8"?>
2
- <coverage generated="1653508680277" clover="3.2.0">
3
- <project timestamp="1653508680277" name="All files">
4
- <metrics statements="79" coveredstatements="74" conditionals="38" coveredconditionals="33" methods="16" coveredmethods="16" elements="133" coveredelements="123" complexity="0" loc="79" ncloc="79" packages="1" files="3" classes="3"/>
5
- <file name="file-path-comment.ts" path="/Users/carl/Development/eslint-plugin/src/file-path-comment.ts">
6
- <metrics statements="16" coveredstatements="16" conditionals="6" coveredconditionals="6" methods="4" coveredmethods="4"/>
7
- <line num="11" count="1" type="stmt"/>
8
- <line num="21" count="14" type="stmt"/>
9
- <line num="22" count="14" type="stmt"/>
10
- <line num="24" count="14" type="cond" truecount="1" falsecount="0"/>
11
- <line num="25" count="2" type="stmt"/>
12
- <line num="28" count="12" type="cond" truecount="2" falsecount="0"/>
13
- <line num="29" count="3" type="cond" truecount="2" falsecount="0"/>
14
- <line num="30" count="1" type="stmt"/>
15
- <line num="43" count="1" type="stmt"/>
16
- <line num="47" count="2" type="stmt"/>
17
- <line num="60" count="2" type="stmt"/>
18
- <line num="65" count="9" type="stmt"/>
19
- <line num="66" count="9" type="cond" truecount="1" falsecount="0"/>
20
- <line num="67" count="2" type="stmt"/>
21
- <line num="80" count="2" type="stmt"/>
22
- <line num="86" count="12" type="stmt"/>
23
- </file>
24
- <file name="no-card-numbers.ts" path="/Users/carl/Development/eslint-plugin/src/no-card-numbers.ts">
25
- <metrics statements="44" coveredstatements="40" conditionals="23" coveredconditionals="19" methods="9" coveredmethods="9"/>
26
- <line num="12" count="1" type="stmt"/>
27
- <line num="13" count="1" type="stmt"/>
28
- <line num="14" count="1" type="stmt"/>
29
- <line num="15" count="1" type="stmt"/>
30
- <line num="26" count="18" type="stmt"/>
31
- <line num="30" count="297" type="stmt"/>
32
- <line num="32" count="297" type="stmt"/>
33
- <line num="33" count="297" type="cond" truecount="1" falsecount="0"/>
34
- <line num="34" count="145" type="stmt"/>
35
- <line num="36" count="145" type="cond" truecount="1" falsecount="0"/>
36
- <line num="37" count="22" type="stmt"/>
37
- <line num="40" count="297" type="stmt"/>
38
- <line num="48" count="28" type="stmt"/>
39
- <line num="49" count="28" type="cond" truecount="1" falsecount="0"/>
40
- <line num="50" count="12" type="stmt"/>
41
- <line num="52" count="18" type="cond" truecount="2" falsecount="0"/>
42
- <line num="53" count="16" type="cond" truecount="2" falsecount="0"/>
43
- <line num="54" count="2" type="cond" truecount="2" falsecount="0"/>
44
- <line num="55" count="1" type="stmt"/>
45
- <line num="62" count="1" type="cond" truecount="1" falsecount="0"/>
46
- <line num="63" count="1" type="stmt"/>
47
- <line num="74" count="14" type="cond" truecount="1" falsecount="0"/>
48
- <line num="75" count="2" type="cond" truecount="2" falsecount="0"/>
49
- <line num="76" count="1" type="stmt"/>
50
- <line num="83" count="1" type="cond" truecount="1" falsecount="0"/>
51
- <line num="84" count="1" type="stmt"/>
52
- <line num="98" count="1" type="stmt"/>
53
- <line num="111" count="9" type="stmt"/>
54
- <line num="112" count="9" type="stmt"/>
55
- <line num="114" count="9" type="stmt"/>
56
- <line num="115" count="10" type="cond" truecount="3" falsecount="0"/>
57
- <line num="116" count="10" type="stmt"/>
58
- <line num="119" count="9" type="stmt"/>
59
- <line num="121" count="16" type="cond" truecount="0" falsecount="1"/>
60
- <line num="122" count="0" type="stmt"/>
61
- <line num="124" count="16" type="cond" truecount="2" falsecount="1"/>
62
- <line num="125" count="0" type="stmt"/>
63
- <line num="127" count="16" type="stmt"/>
64
- <line num="128" count="16" type="stmt"/>
65
- <line num="131" count="2" type="cond" truecount="0" falsecount="1"/>
66
- <line num="132" count="0" type="stmt"/>
67
- <line num="134" count="2" type="cond" truecount="0" falsecount="1"/>
68
- <line num="135" count="0" type="stmt"/>
69
- <line num="137" count="2" type="stmt"/>
70
- </file>
71
- <file name="pure-functions.ts" path="/Users/carl/Development/eslint-plugin/src/pure-functions.ts">
72
- <metrics statements="19" coveredstatements="18" conditionals="9" coveredconditionals="8" methods="3" coveredmethods="3"/>
73
- <line num="12" count="1" type="stmt"/>
74
- <line num="14" count="1" type="stmt"/>
75
- <line num="26" count="3" type="stmt"/>
76
- <line num="27" count="3" type="stmt"/>
77
- <line num="30" count="5" type="stmt"/>
78
- <line num="31" count="5" type="stmt"/>
79
- <line num="32" count="5" type="cond" truecount="0" falsecount="1"/>
80
- <line num="33" count="0" type="stmt"/>
81
- <line num="36" count="5" type="stmt"/>
82
- <line num="38" count="5" type="stmt"/>
83
- <line num="39" count="6" type="stmt"/>
84
- <line num="40" count="6" type="stmt"/>
85
- <line num="41" count="12" type="stmt"/>
86
- <line num="42" count="12" type="cond" truecount="1" falsecount="0"/>
87
- <line num="45" count="12" type="stmt"/>
88
- <line num="46" count="12" type="stmt"/>
89
- <line num="47" count="12" type="stmt"/>
90
- <line num="56" count="2" type="stmt"/>
91
- <line num="66" count="3" type="stmt"/>
92
- </file>
93
- </project>
94
- </coverage>
@@ -1,4 +0,0 @@
1
- {"/Users/carl/Development/eslint-plugin/src/file-path-comment.ts": {"path":"/Users/carl/Development/eslint-plugin/src/file-path-comment.ts","statementMap":{"0":{"start":{"line":11,"column":0},"end":{"line":88,"column":21}},"1":{"start":{"line":21,"column":22},"end":{"line":21,"column":69}},"2":{"start":{"line":22,"column":25},"end":{"line":22,"column":63}},"3":{"start":{"line":24,"column":4},"end":{"line":26,"column":null}},"4":{"start":{"line":25,"column":6},"end":{"line":25,"column":16}},"5":{"start":{"line":28,"column":4},"end":{"line":84,"column":null}},"6":{"start":{"line":29,"column":6},"end":{"line":63,"column":null}},"7":{"start":{"line":30,"column":8},"end":{"line":45,"column":11}},"8":{"start":{"line":43,"column":12},"end":{"line":43,"column":81}},"9":{"start":{"line":47,"column":8},"end":{"line":62,"column":11}},"10":{"start":{"line":60,"column":12},"end":{"line":60,"column":81}},"11":{"start":{"line":65,"column":28},"end":{"line":65,"column":53}},"12":{"start":{"line":66,"column":6},"end":{"line":83,"column":null}},"13":{"start":{"line":67,"column":8},"end":{"line":82,"column":11}},"14":{"start":{"line":80,"column":12},"end":{"line":80,"column":87}},"15":{"start":{"line":86,"column":4},"end":{"line":86,"column":14}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":20,"column":2},"end":{"line":20,"column":8}},"loc":{"start":{"line":20,"column":16},"end":{"line":87,"column":3}}},"1":{"name":"(anonymous_1)","decl":{"start":{"line":42,"column":10},"end":{"line":42,"column":13}},"loc":{"start":{"line":42,"column":35},"end":{"line":44,"column":11}}},"2":{"name":"(anonymous_2)","decl":{"start":{"line":59,"column":10},"end":{"line":59,"column":13}},"loc":{"start":{"line":59,"column":35},"end":{"line":61,"column":11}}},"3":{"name":"(anonymous_3)","decl":{"start":{"line":79,"column":10},"end":{"line":79,"column":13}},"loc":{"start":{"line":79,"column":35},"end":{"line":81,"column":11}}}},"branchMap":{"0":{"loc":{"start":{"line":24,"column":4},"end":{"line":26,"column":null}},"type":"if","locations":[{"start":{"line":24,"column":4},"end":{"line":26,"column":null}}]},"1":{"loc":{"start":{"line":28,"column":4},"end":{"line":84,"column":null}},"type":"if","locations":[{"start":{"line":28,"column":4},"end":{"line":84,"column":null}},{"start":{"line":64,"column":11},"end":{"line":84,"column":null}}]},"2":{"loc":{"start":{"line":29,"column":6},"end":{"line":63,"column":null}},"type":"if","locations":[{"start":{"line":29,"column":6},"end":{"line":63,"column":null}},{"start":{"line":46,"column":13},"end":{"line":63,"column":null}}]},"3":{"loc":{"start":{"line":66,"column":6},"end":{"line":83,"column":null}},"type":"if","locations":[{"start":{"line":66,"column":6},"end":{"line":83,"column":null}}]}},"s":{"0":1,"1":14,"2":14,"3":14,"4":2,"5":12,"6":3,"7":1,"8":1,"9":2,"10":2,"11":9,"12":9,"13":2,"14":2,"15":12},"f":{"0":14,"1":1,"2":2,"3":2},"b":{"0":[2],"1":[3,9],"2":[1,2],"3":[2]}}
2
- ,"/Users/carl/Development/eslint-plugin/src/no-card-numbers.ts": {"path":"/Users/carl/Development/eslint-plugin/src/no-card-numbers.ts","statementMap":{"0":{"start":{"line":12,"column":26},"end":{"line":12,"column":45}},"1":{"start":{"line":13,"column":27},"end":{"line":13,"column":47}},"2":{"start":{"line":14,"column":24},"end":{"line":14,"column":38}},"3":{"start":{"line":15,"column":25},"end":{"line":23,"column":2}},"4":{"start":{"line":26,"column":2},"end":{"line":44,"column":4}},"5":{"start":{"line":30,"column":22},"end":{"line":30,"column":41}},"6":{"start":{"line":32,"column":20},"end":{"line":32,"column":32}},"7":{"start":{"line":33,"column":8},"end":{"line":39,"column":null}},"8":{"start":{"line":34,"column":10},"end":{"line":34,"column":21}},"9":{"start":{"line":36,"column":10},"end":{"line":38,"column":null}},"10":{"start":{"line":37,"column":12},"end":{"line":37,"column":37}},"11":{"start":{"line":40,"column":8},"end":{"line":40,"column":37}},"12":{"start":{"line":48,"column":18},"end":{"line":48,"column":46}},"13":{"start":{"line":49,"column":2},"end":{"line":51,"column":null}},"14":{"start":{"line":50,"column":4},"end":{"line":50,"column":11}},"15":{"start":{"line":52,"column":22},"end":{"line":52,"column":107}},"16":{"start":{"line":52,"column":48},"end":{"line":52,"column":106}},"17":{"start":{"line":53,"column":2},"end":{"line":95,"column":null}},"18":{"start":{"line":54,"column":4},"end":{"line":73,"column":null}},"19":{"start":{"line":55,"column":6},"end":{"line":61,"column":9}},"20":{"start":{"line":62,"column":11},"end":{"line":73,"column":null}},"21":{"start":{"line":63,"column":6},"end":{"line":72,"column":9}},"22":{"start":{"line":74,"column":9},"end":{"line":95,"column":null}},"23":{"start":{"line":75,"column":4},"end":{"line":94,"column":null}},"24":{"start":{"line":76,"column":6},"end":{"line":82,"column":9}},"25":{"start":{"line":83,"column":11},"end":{"line":94,"column":null}},"26":{"start":{"line":84,"column":6},"end":{"line":93,"column":9}},"27":{"start":{"line":98,"column":0},"end":{"line":141,"column":21}},"28":{"start":{"line":111,"column":23},"end":{"line":111,"column":46}},"29":{"start":{"line":112,"column":21},"end":{"line":112,"column":48}},"30":{"start":{"line":114,"column":4},"end":{"line":118,"column":7}},"31":{"start":{"line":115,"column":6},"end":{"line":117,"column":null}},"32":{"start":{"line":116,"column":8},"end":{"line":116,"column":76}},"33":{"start":{"line":119,"column":4},"end":{"line":139,"column":6}},"34":{"start":{"line":121,"column":8},"end":{"line":123,"column":null}},"35":{"start":{"line":122,"column":10},"end":{"line":122,"column":17}},"36":{"start":{"line":124,"column":8},"end":{"line":126,"column":null}},"37":{"start":{"line":125,"column":10},"end":{"line":125,"column":17}},"38":{"start":{"line":127,"column":22},"end":{"line":127,"column":37}},"39":{"start":{"line":128,"column":8},"end":{"line":128,"column":50}},"40":{"start":{"line":131,"column":8},"end":{"line":133,"column":null}},"41":{"start":{"line":132,"column":10},"end":{"line":132,"column":17}},"42":{"start":{"line":134,"column":8},"end":{"line":136,"column":null}},"43":{"start":{"line":135,"column":10},"end":{"line":135,"column":17}},"44":{"start":{"line":137,"column":8},"end":{"line":137,"column":62}}},"fnMap":{"0":{"name":"luhnCheck","decl":{"start":{"line":25,"column":9},"end":{"line":25,"column":18}},"loc":{"start":{"line":25,"column":37},"end":{"line":45,"column":1}}},"1":{"name":"(anonymous_1)","decl":{"start":{"line":30,"column":11},"end":{"line":30,"column":12}},"loc":{"start":{"line":30,"column":22},"end":{"line":30,"column":41}}},"2":{"name":"(anonymous_2)","decl":{"start":{"line":31,"column":14},"end":{"line":31,"column":15}},"loc":{"start":{"line":31,"column":53},"end":{"line":41,"column":7}}},"3":{"name":"checkForCardNumbers","decl":{"start":{"line":47,"column":9},"end":{"line":47,"column":28}},"loc":{"start":{"line":47,"column":104},"end":{"line":96,"column":1}}},"4":{"name":"(anonymous_4)","decl":{"start":{"line":52,"column":37},"end":{"line":52,"column":38}},"loc":{"start":{"line":52,"column":48},"end":{"line":52,"column":106}}},"5":{"name":"(anonymous_5)","decl":{"start":{"line":110,"column":2},"end":{"line":110,"column":8}},"loc":{"start":{"line":110,"column":16},"end":{"line":140,"column":3}}},"6":{"name":"(anonymous_6)","decl":{"start":{"line":114,"column":21},"end":{"line":114,"column":22}},"loc":{"start":{"line":114,"column":33},"end":{"line":118,"column":5}}},"7":{"name":"(anonymous_7)","decl":{"start":{"line":120,"column":6},"end":{"line":120,"column":13}},"loc":{"start":{"line":120,"column":18},"end":{"line":129,"column":7}}},"8":{"name":"(anonymous_8)","decl":{"start":{"line":130,"column":6},"end":{"line":130,"column":21}},"loc":{"start":{"line":130,"column":26},"end":{"line":138,"column":7}}}},"branchMap":{"0":{"loc":{"start":{"line":33,"column":8},"end":{"line":39,"column":null}},"type":"if","locations":[{"start":{"line":33,"column":8},"end":{"line":39,"column":null}}]},"1":{"loc":{"start":{"line":36,"column":10},"end":{"line":38,"column":null}},"type":"if","locations":[{"start":{"line":36,"column":10},"end":{"line":38,"column":null}}]},"2":{"loc":{"start":{"line":49,"column":2},"end":{"line":51,"column":null}},"type":"if","locations":[{"start":{"line":49,"column":2},"end":{"line":51,"column":null}}]},"3":{"loc":{"start":{"line":52,"column":48},"end":{"line":52,"column":106}},"type":"binary-expr","locations":[{"start":{"line":52,"column":48},"end":{"line":52,"column":64}},{"start":{"line":52,"column":68},"end":{"line":52,"column":106}}]},"4":{"loc":{"start":{"line":53,"column":2},"end":{"line":95,"column":null}},"type":"if","locations":[{"start":{"line":53,"column":2},"end":{"line":95,"column":null}},{"start":{"line":74,"column":9},"end":{"line":95,"column":null}}]},"5":{"loc":{"start":{"line":54,"column":4},"end":{"line":73,"column":null}},"type":"if","locations":[{"start":{"line":54,"column":4},"end":{"line":73,"column":null}},{"start":{"line":62,"column":11},"end":{"line":73,"column":null}}]},"6":{"loc":{"start":{"line":62,"column":11},"end":{"line":73,"column":null}},"type":"if","locations":[{"start":{"line":62,"column":11},"end":{"line":73,"column":null}}]},"7":{"loc":{"start":{"line":74,"column":9},"end":{"line":95,"column":null}},"type":"if","locations":[{"start":{"line":74,"column":9},"end":{"line":95,"column":null}}]},"8":{"loc":{"start":{"line":75,"column":4},"end":{"line":94,"column":null}},"type":"if","locations":[{"start":{"line":75,"column":4},"end":{"line":94,"column":null}},{"start":{"line":83,"column":11},"end":{"line":94,"column":null}}]},"9":{"loc":{"start":{"line":83,"column":11},"end":{"line":94,"column":null}},"type":"if","locations":[{"start":{"line":83,"column":11},"end":{"line":94,"column":null}}]},"10":{"loc":{"start":{"line":115,"column":6},"end":{"line":117,"column":null}},"type":"if","locations":[{"start":{"line":115,"column":6},"end":{"line":117,"column":null}}]},"11":{"loc":{"start":{"line":115,"column":10},"end":{"line":115,"column":59}},"type":"binary-expr","locations":[{"start":{"line":115,"column":10},"end":{"line":115,"column":35}},{"start":{"line":115,"column":39},"end":{"line":115,"column":59}}]},"12":{"loc":{"start":{"line":121,"column":8},"end":{"line":123,"column":null}},"type":"if","locations":[{"start":{"line":121,"column":8},"end":{"line":123,"column":null}}]},"13":{"loc":{"start":{"line":124,"column":8},"end":{"line":126,"column":null}},"type":"if","locations":[{"start":{"line":124,"column":8},"end":{"line":126,"column":null}}]},"14":{"loc":{"start":{"line":124,"column":12},"end":{"line":124,"column":76}},"type":"binary-expr","locations":[{"start":{"line":124,"column":12},"end":{"line":124,"column":42}},{"start":{"line":124,"column":46},"end":{"line":124,"column":76}}]},"15":{"loc":{"start":{"line":131,"column":8},"end":{"line":133,"column":null}},"type":"if","locations":[{"start":{"line":131,"column":8},"end":{"line":133,"column":null}}]},"16":{"loc":{"start":{"line":134,"column":8},"end":{"line":136,"column":null}},"type":"if","locations":[{"start":{"line":134,"column":8},"end":{"line":136,"column":null}}]}},"s":{"0":1,"1":1,"2":1,"3":1,"4":18,"5":297,"6":297,"7":297,"8":145,"9":145,"10":22,"11":297,"12":28,"13":28,"14":12,"15":16,"16":18,"17":16,"18":2,"19":1,"20":1,"21":1,"22":14,"23":2,"24":1,"25":1,"26":1,"27":1,"28":9,"29":9,"30":9,"31":10,"32":10,"33":9,"34":16,"35":0,"36":16,"37":0,"38":16,"39":16,"40":2,"41":0,"42":2,"43":0,"44":2},"f":{"0":18,"1":297,"2":297,"3":28,"4":18,"5":9,"6":10,"7":16,"8":2},"b":{"0":[145],"1":[22],"2":[12],"3":[18,13],"4":[2,14],"5":[1,1],"6":[1],"7":[2],"8":[1,1],"9":[1],"10":[10],"11":[10,10],"12":[0],"13":[0],"14":[16,12],"15":[0],"16":[0]}}
3
- ,"/Users/carl/Development/eslint-plugin/src/pure-functions.ts": {"path":"/Users/carl/Development/eslint-plugin/src/pure-functions.ts","statementMap":{"0":{"start":{"line":12,"column":24},"end":{"line":12,"column":41}},"1":{"start":{"line":14,"column":0},"end":{"line":72,"column":21}},"2":{"start":{"line":26,"column":23},"end":{"line":26,"column":46}},"3":{"start":{"line":27,"column":20},"end":{"line":27,"column":43}},"4":{"start":{"line":30,"column":28},"end":{"line":30,"column":49}},"5":{"start":{"line":31,"column":28},"end":{"line":31,"column":38}},"6":{"start":{"line":32,"column":6},"end":{"line":34,"column":null}},"7":{"start":{"line":33,"column":8},"end":{"line":33,"column":15}},"8":{"start":{"line":36,"column":20},"end":{"line":36,"column":35}},"9":{"start":{"line":38,"column":6},"end":{"line":63,"column":null}},"10":{"start":{"line":39,"column":8},"end":{"line":39,"column":41}},"11":{"start":{"line":40,"column":8},"end":{"line":62,"column":null}},"12":{"start":{"line":41,"column":27},"end":{"line":41,"column":45}},"13":{"start":{"line":42,"column":10},"end":{"line":61,"column":null}},"14":{"start":{"line":45,"column":37},"end":{"line":45,"column":108}},"15":{"start":{"line":46,"column":38},"end":{"line":46,"column":58}},"16":{"start":{"line":47,"column":14},"end":{"line":53,"column":16}},"17":{"start":{"line":56,"column":12},"end":{"line":60,"column":15}},"18":{"start":{"line":66,"column":4},"end":{"line":70,"column":6}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":25,"column":2},"end":{"line":25,"column":8}},"loc":{"start":{"line":25,"column":34},"end":{"line":71,"column":3}}},"1":{"name":"check","decl":{"start":{"line":29,"column":13},"end":{"line":29,"column":18}},"loc":{"start":{"line":29,"column":36},"end":{"line":64,"column":5}}},"2":{"name":"(anonymous_2)","decl":{"start":{"line":44,"column":32},"end":{"line":44,"column":33}},"loc":{"start":{"line":44,"column":47},"end":{"line":54,"column":13}}}},"branchMap":{"0":{"loc":{"start":{"line":32,"column":6},"end":{"line":34,"column":null}},"type":"if","locations":[{"start":{"line":32,"column":6},"end":{"line":34,"column":null}}]},"1":{"loc":{"start":{"line":42,"column":10},"end":{"line":61,"column":null}},"type":"if","locations":[{"start":{"line":42,"column":10},"end":{"line":61,"column":null}}]},"2":{"loc":{"start":{"line":43,"column":12},"end":{"line":54,"column":14}},"type":"binary-expr","locations":[{"start":{"line":43,"column":12},"end":{"line":43,"column":29}},{"start":{"line":44,"column":12},"end":{"line":54,"column":14}}]},"3":{"loc":{"start":{"line":48,"column":16},"end":{"line":51,"column":null}},"type":"binary-expr","locations":[{"start":{"line":48,"column":17},"end":{"line":48,"column":54}},{"start":{"line":48,"column":58},"end":{"line":48,"column":95}},{"start":{"line":49,"column":16},"end":{"line":51,"column":null}}]},"4":{"loc":{"start":{"line":50,"column":19},"end":{"line":51,"column":57}},"type":"binary-expr","locations":[{"start":{"line":50,"column":19},"end":{"line":50,"column":78}},{"start":{"line":51,"column":18},"end":{"line":51,"column":57}}]}},"s":{"0":1,"1":1,"2":3,"3":3,"4":5,"5":5,"6":5,"7":0,"8":5,"9":5,"10":6,"11":6,"12":12,"13":12,"14":12,"15":12,"16":12,"17":2,"18":3},"f":{"0":3,"1":5,"2":12},"b":{"0":[0],"1":[2],"2":[12,12],"3":[12,9,3],"4":[3,1]}}
4
- }