@jslint-org/jslint 2026.6.30 → 2026.8.31

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/CHANGELOG.md CHANGED
@@ -1,15 +1,58 @@
1
1
  # Changelog
2
2
 
3
3
  # Todo
4
- - jslint-ci - Automate linting of shell-scripts with shellcheck.
4
+ - jslint-ecma - Add ES2018-feature Asynchronous Iteration.
5
+ - jslint-ecma - Add ES2015-feature iterators.
6
+ - jslint - Audit token-property '.free'.
5
7
  - jslint-ecma - Expand ES2015-feature-support for es-module-export-statement.
6
8
  - jslint - Relax warning expected_line_break_a_b for ternary-operator inside template-literal.
7
9
  - jslint - Add ability to auto-fix whitespace.
8
- - jslint - bugfix - Fix false-positive Unused-variable when variable is used in function argument-default.
9
10
  - jslint - Add html and css linting back into jslint.
10
11
  - jslint - Add new warning requiring paren around plus-separated concatenations.
11
12
  - jslint - Try to improve parser to be able to parse jquery.js without stopping.
12
13
 
14
+ # v2026.8.31
15
+ - jslint-ci - Update ci-shell-function shGitLsTree() to include sha256 hash of files.
16
+ - jslint-editor - Update codemirror-editor to v5.65.21.
17
+
18
+ # v2026.7.30
19
+ - jslint-ecma - Add ES2015-feature for..of.
20
+ - jslint - Disable directive-option /*jslint for*/, replacing it with for-loop specific warnings.
21
+ - jslint - Update scope-related warnings for variables, depending on whether they are let/const (scope_block) or var (scope_function).
22
+ - jslint - Change warning 'out_of_scope_a' to 'temporal_dead_zone_a'.
23
+ - jslint - Change warning 'uninitialized_a' to 'unassigned_var_a'.
24
+ - jslint - Change scope from scope_function to scope_block:
25
+ - const-declaration
26
+ - let-declaration
27
+ - function-declaration
28
+ - jslint - Add implicit scope_block for:
29
+ - do-while
30
+ - for-loop
31
+ - if-else
32
+ - while-loop
33
+ - jslint - Add hidden scope_block for:
34
+ - catch-variable
35
+ - for-variable
36
+ - function-parameter
37
+ - label-name
38
+ - jslint - Restrict scope from scope_function to its own function-body:
39
+ - named-function-expression
40
+ - jslint - Rename internal scope-variables to imporove readability of scope-logic:
41
+ - 'blockage' to 'scope_block'
42
+ - 'functionage' to 'scope_function'
43
+ - jslint - Add block-scope to internal-function jslint_phase3_parse().
44
+ - jslint - Expand built-in-globals for browser, ecma, and node - auto-generated from online-sources.
45
+ - jslint-ci - Add automated ci for shellcheck to lint shell-scripts.
46
+ - jslint-regression - Cleanup indent for multiline-method-chaining.
47
+ - jslint-regression - Fix jslint crashing before warning about dangling ')' or ']'.
48
+ - jslint-parse - Fix jslint unable to continue parsing 'async aa => 0'.
49
+ - jslint-parse - Fix jslint unable to continue parsing 'function aa(){}0'.
50
+ - jslint-regression - Fix long-running regression where 'let x = x;' doesn't warn about temporal-dead-zone.
51
+ - jslint-warning - Tighten warning of unused variables to be always on, regardless of module / nodejs mode.
52
+ - jslint - Wrap all property-updates 'name.init = true/false' with calls to:
53
+ name_declare() - 'let aa=0'
54
+ post_a_assignment() - 'aa=0'
55
+
13
56
  # v2026.6.30
14
57
  - jslint-ecma - Update README.md, documenting supported ES2015+ features.
15
58
  - jslint-ecma - Unify ES2015-destructure-logic into function prefix_destructure().
package/README.md CHANGED
@@ -3,7 +3,7 @@ Douglas Crockford <douglas@crockford.com>
3
3
 
4
4
 
5
5
  # Status
6
- | Branch | [master<br>(v2026.6.30)](https://github.com/jslint-org/jslint/tree/master) | [beta<br>(Web Demo)](https://github.com/jslint-org/jslint/tree/beta) | [alpha<br>(Development)](https://github.com/jslint-org/jslint/tree/alpha) |
6
+ | Branch | [master<br>(v2026.8.31)](https://github.com/jslint-org/jslint/tree/master) | [beta<br>(Web Demo)](https://github.com/jslint-org/jslint/tree/beta) | [alpha<br>(Development)](https://github.com/jslint-org/jslint/tree/alpha) |
7
7
  |--:|:--:|:--:|:--:|
8
8
  | CI | [![ci](https://github.com/jslint-org/jslint/actions/workflows/ci.yml/badge.svg?branch=master)](https://github.com/jslint-org/jslint/actions?query=branch%3Amaster) | [![ci](https://github.com/jslint-org/jslint/actions/workflows/ci.yml/badge.svg?branch=beta)](https://github.com/jslint-org/jslint/actions?query=branch%3Abeta) | [![ci](https://github.com/jslint-org/jslint/actions/workflows/ci.yml/badge.svg?branch=alpha)](https://github.com/jslint-org/jslint/actions?query=branch%3Aalpha) |
9
9
  | Coverage | [![coverage](https://jslint-org.github.io/jslint/branch-master/.artifact/coverage/coverage_badge.svg)](https://jslint-org.github.io/jslint/branch-master/.artifact/coverage/index.html) | [![coverage](https://jslint-org.github.io/jslint/branch-beta/.artifact/coverage/coverage_badge.svg)](https://jslint-org.github.io/jslint/branch-beta/.artifact/coverage/index.html) | [![coverage](https://jslint-org.github.io/jslint/branch-alpha/.artifact/coverage/coverage_badge.svg)](https://jslint-org.github.io/jslint/branch-alpha/.artifact/coverage/index.html) |
@@ -12,34 +12,44 @@ Douglas Crockford <douglas@crockford.com>
12
12
 
13
13
 
14
14
  <br><br>
15
- # Table of Contents
15
+ # Web Demo
16
+ - https://www.jslint.com
17
+
18
+ [![screenshot](https://jslint-org.github.io/jslint/branch-beta/.artifact/screenshot_browser__2fjslint_2fbranch-beta_2findex.html.png)](https://jslint-org.github.io/jslint/index.html)
19
+
20
+
21
+ <br><br>
22
+ # Web Demo Archived
23
+ - [Web Demo 2020](https://www.jslint.com/branch-v2020.11.6/index.html)
24
+ - [Web Demo 2014 (ES5 only)](https://www.jslint.com/branch-v2014.7.8/jslint.html)
25
+ - [Web Demo 2013 (ES5, CSS, HTML)](https://www.jslint.com/branch-v2013.3.13/jslint.html)
16
26
 
17
- 1. [Web Demo](#web-demo)
18
27
 
19
- 2. [Web Demo Archived](#web-demo-archived)
28
+ <br><br>
29
+ # Table of Contents
20
30
 
21
- 3. [Quickstart Install](#quickstart-install)
31
+ 1. [Quickstart Install](#quickstart-install)
22
32
  - [To install, just download and save https://www.jslint.com/jslint.mjs to file:](#to-install-just-download-and-save-httpswwwjslintcomjslintmjs-to-file)
23
33
  - [To run `jslint.mjs` in shell:](#to-run-jslintmjs-in-shell)
24
34
  - [To import `jslint.mjs` in ES Module environment:](#to-import-jslintmjs-in-es-module-environment)
25
35
  - [To import `jslint.mjs` in CommonJS environment:](#to-import-jslintmjs-in-commonjs-environment)
26
36
  - [To JSLint entire directory in shell:](#to-jslint-entire-directory-in-shell)
27
37
 
28
- 4. [Quickstart JSLint Report](#quickstart-jslint-report)
38
+ 2. [Quickstart JSLint Report](#quickstart-jslint-report)
29
39
  - [To create a JSLint report in shell:](#to-create-a-jslint-report-in-shell)
30
40
  - [To create a JSLint report in javascript:](#to-create-a-jslint-report-in-javascript)
31
41
 
32
- 5. [Quickstart V8 Coverage Report](#quickstart-v8-coverage-report)
42
+ 3. [Quickstart V8 Coverage Report](#quickstart-v8-coverage-report)
33
43
  - [To create V8 coverage report from Node.js / Npm program in shell:](#to-create-v8-coverage-report-from-nodejs--npm-program-in-shell)
34
44
  - [To create V8 coverage report from Node.js / Npm program in javascript:](#to-create-v8-coverage-report-from-nodejs--npm-program-in-javascript)
35
45
 
36
- 6. [Quickstart JSLint in CodeMirror](#quickstart-jslint-in-codemirror)
46
+ 4. [Quickstart JSLint in CodeMirror](#quickstart-jslint-in-codemirror)
37
47
 
38
- 7. [Quickstart JSLint in Vim](#quickstart-jslint-in-vim)
48
+ 5. [Quickstart JSLint in Vim](#quickstart-jslint-in-vim)
39
49
 
40
- 8. [Quickstart JSLint in VSCode](#quickstart-jslint-in-vscode)
50
+ 6. [Quickstart JSLint in VSCode](#quickstart-jslint-in-vscode)
41
51
 
42
- 9. [Documentation](#documentation)
52
+ 7. [Documentation](#documentation)
43
53
  - [API Doc](#api-doc)
44
54
  - [Directive](#directive)
45
55
  - [`/*jslint beta*/`](#jslint-beta)
@@ -50,7 +60,6 @@ Douglas Crockford <douglas@crockford.com>
50
60
  - [`/*jslint devel*/`](#jslint-devel)
51
61
  - [`/*jslint eval*/`](#jslint-eval)
52
62
  - [`/*jslint fart*/`](#jslint-fart)
53
- - [`/*jslint for*/`](#jslint-for)
54
63
  - [`/*jslint getset*/`](#jslint-getset)
55
64
  - [`/*jslint indent2*/`](#jslint-indent2)
56
65
  - [`/*jslint long*/`](#jslint-long)
@@ -70,33 +79,19 @@ Douglas Crockford <douglas@crockford.com>
70
79
  - [`//coverage-ignore-line`](#coverage-ignore-line)
71
80
  - [ECMAScript Feature Support](#ecmascript-feature-support)
72
81
 
73
- 10. [Package Listing](#package-listing)
82
+ 8. [Package Listing](#package-listing)
74
83
 
75
- 11. [Changelog](#changelog)
84
+ 9. [Changelog](#changelog)
76
85
 
77
- 12. [License](#license)
86
+ 10. [License](#license)
78
87
 
79
- 13. [Devops Instruction](#devops-instruction)
88
+ 11. [Devops Instruction](#devops-instruction)
80
89
  - [pull-request merge](#pull-request-merge)
81
90
  - [branch-master commit](#branch-master-commit)
82
91
  - [branch-master publish](#branch-master-publish)
83
92
  - [vscode-jslint publish](#vscode-jslint-publish)
84
93
 
85
94
 
86
- <br><br>
87
- # Web Demo
88
- - https://www.jslint.com
89
-
90
- [![screenshot](https://jslint-org.github.io/jslint/branch-beta/.artifact/screenshot_browser__2fjslint_2fbranch-beta_2findex.html.png)](https://jslint-org.github.io/jslint/index.html)
91
-
92
-
93
- <br><br>
94
- # Web Demo Archived
95
- - [Web Demo 2020](https://www.jslint.com/branch-v2020.11.6/index.html)
96
- - [Web Demo 2014 (ES5 only)](https://www.jslint.com/branch-v2014.7.8/jslint.html)
97
- - [Web Demo 2013 (ES5, CSS, HTML)](https://www.jslint.com/branch-v2013.3.13/jslint.html)
98
-
99
-
100
95
  <br><br>
101
96
  # Quickstart Install
102
97
 
@@ -402,11 +397,11 @@ import jslint from "../jslint.mjs";
402
397
 
403
398
  <!-- Assets from codemirror. -->
404
399
 
405
- <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/codemirror/5.65.10/codemirror.css">
406
- <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/codemirror/5.65.10/addon/lint/lint.css">
407
- <script defer src="https://cdnjs.cloudflare.com/ajax/libs/codemirror/5.65.10/codemirror.js"></script>
408
- <script defer src="https://cdnjs.cloudflare.com/ajax/libs/codemirror/5.65.10/mode/javascript/javascript.js"></script>
409
- <script defer src="https://cdnjs.cloudflare.com/ajax/libs/codemirror/5.65.10/addon/lint/lint.js"></script>
400
+ <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/codemirror/5.65.21/codemirror.css">
401
+ <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/codemirror/5.65.21/addon/lint/lint.css">
402
+ <script defer src="https://cdnjs.cloudflare.com/ajax/libs/codemirror/5.65.21/codemirror.js"></script>
403
+ <script defer src="https://cdnjs.cloudflare.com/ajax/libs/codemirror/5.65.21/mode/javascript/javascript.js"></script>
404
+ <script defer src="https://cdnjs.cloudflare.com/ajax/libs/codemirror/5.65.21/addon/lint/lint.js"></script>
410
405
 
411
406
  <!-- Assets from jslint. -->
412
407
 
@@ -637,21 +632,6 @@ let foo = async ({bar, baz}) => {
637
632
 
638
633
  <br>
639
634
 
640
- ##### `/*jslint for*/`
641
- ```js
642
- /*jslint for*/
643
- // Allow for-loop.
644
-
645
- function foo() {
646
- let ii;
647
- for (ii = 0; ii < 10; ii += 1) {
648
- foo();
649
- }
650
- }
651
- ```
652
-
653
- <br>
654
-
655
635
  ##### `/*jslint getset*/`
656
636
  ```js
657
637
  /*jslint getset, this, devel*/
@@ -969,7 +949,7 @@ if (false) {
969
949
  | 17. | ✅ | ES2015 | [`destructuring`](https://github.com/lukehoban/es6features#destructuring) |
970
950
  | 16. | ✅ | ES2015 | [`default + rest + spread`](https://github.com/lukehoban/es6features#default--rest--spread) |
971
951
  | 15. | ✅ | ES2015 | [`let + const`](https://github.com/lukehoban/es6features#let--const) |
972
- | 14. | | ES2015 | [`iterators + for..of`](https://github.com/lukehoban/es6features#iterators--forof) |
952
+ | 14. | ⚠️ | ES2015 | [`iterators + for..of`](https://github.com/lukehoban/es6features#iterators--forof) |
973
953
  | 13. | ❌ | ES2015 | [`generators`](https://github.com/lukehoban/es6features#generators) |
974
954
  | 12. | ✅ | ES2015 | [`unicode`](https://github.com/lukehoban/es6features#unicode) |
975
955
  | 11. | ⚠️ | ES2015 | [`modules`](https://github.com/lukehoban/es6features#modules) |
@@ -1000,7 +980,7 @@ if (false) {
1000
980
  <br><br>
1001
981
  # License
1002
982
  - JSLint is under [Unlicense License](LICENSE).
1003
- - CodeMirror editor is under [MIT License](https://github.com/codemirror/codemirror5/blob/d0e3b2e727c41aa4fd89fbad0adfb3815339174c/LICENSE).
983
+ - CodeMirror editor is under [MIT License](https://github.com/codemirror/codemirror5/blob/34b84359c4ce289086c82c203f66ef74614d8a0d/LICENSE).
1004
984
  - Function `v8CoverageListMerge` is derived from [MIT Licensed v8-coverage](https://github.com/demurgos/v8-coverage/blob/73446087dc38f61b09832c9867122a23f8577099/ts/LICENSE.md).
1005
985
 
1006
986
 
@@ -1023,23 +1003,14 @@ if (false) {
1023
1003
  sh jslint_ci.sh shGithubPrUpdatePrxxx
1024
1004
 
1025
1005
  # re-run until version propagates
1026
- sh jslint_ci.sh shGithubPrCreate alpha beta # v20xx.xx.xx
1027
-
1028
- # squash intermediary commits
1029
- sh jslint_ci.sh shGitSquashPop __pr_beta_pre "- ci - shGithubPrUpdatePrxxx."
1030
-
1031
- # squash intermediary commits
1032
- sh jslint_ci.sh shGithubPrCreate alpha beta # v20xx.xx.xx
1033
-
1034
- # squash intermediary commits
1035
- git push . __pr_beta_pre~:__pr_beta_pre -f
1006
+ sh jslint_ci.sh shGithubPrCreate alpha beta # v20yy.mm.dd __pr_beta_pre
1036
1007
 
1037
1008
  git push upstream alpha -f
1038
1009
  ```
1039
1010
  - verify ci-success @ https://github.com/kaizhu256/jslint/actions
1040
1011
  - verify ci-success @ https://github.com/jslint-org/jslint/actions
1041
1012
 
1042
- 1. goto https://github.com/jslint-org/jslint/compare/beta...kaizhu256:jslint:branch-p2026.7.1
1013
+ 1. goto https://github.com/jslint-org/jslint/compare/beta...kaizhu256:jslint:branch-p2026.7.20
1043
1014
  - click `Create pull request`
1044
1015
  - input `Add a title *` with: `<CHANGELOG.md entry #1>`
1045
1016
  - input `Add a description` with:
@@ -1090,23 +1061,14 @@ if (false) {
1090
1061
  sh jslint_ci.sh shGithubPrUpdatePrxxx
1091
1062
 
1092
1063
  # re-run until version propagates
1093
- sh jslint_ci.sh shGithubPrCreate alpha master # v20xx.xx.xx
1094
-
1095
- # squash intermediary commits
1096
- sh jslint_ci.sh shGitSquashPop __pr_master_pre "- ci - shGithubPrUpdatePrxxx."
1097
-
1098
- # squash intermediary commits
1099
- sh jslint_ci.sh shGithubPrCreate alpha master # v20xx.xx.xx
1100
-
1101
- # squash intermediary commits
1102
- git push . __pr_master_pre~:__pr_master_pre -f
1064
+ sh jslint_ci.sh shGithubPrCreate alpha master # v20yy.mm.dd __pr_master_pre
1103
1065
 
1104
1066
  git push upstream alpha -f
1105
1067
  ```
1106
1068
  - verify ci-success @ https://github.com/kaizhu256/jslint/actions
1107
1069
  - verify ci-success @ https://github.com/jslint-org/jslint/actions
1108
1070
 
1109
- 1. goto https://github.com/jslint-org/jslint/compare/beta...kaizhu256:jslint:branch-v2026.6.30
1071
+ 1. goto https://github.com/jslint-org/jslint/compare/beta...kaizhu256:jslint:branch-v2026.8.31
1110
1072
  - click `Create pull request`
1111
1073
  - input `Add a title *` with: `# v20yy.mm.dd`
1112
1074
  - input `Add a description` with: