@jslint-org/jslint 2022.11.20 → 2023.4.29

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
@@ -5,11 +5,36 @@
5
5
  - coverage - add macros `/*coverage-disable*/` and `/*coverage-enable*/`.
6
6
  - jslint - add html and css linting back into jslint.
7
7
  - jslint - add new warning requiring paren around plus-separated concatenations.
8
- - jslint - relax warning against console.log and friends and deprecate directive `devel`
9
8
  - jslint - require regexp to use open-form.
10
9
  - jslint - try to improve parser to be able to parse jquery.js without stopping.
11
10
  - jslint - unify analysis of variable-assignment/function-parameters into one function
12
- - jslint - add new warning "Expected Object.create(null) instead of {}"
11
+
12
+ # v2023.4.29
13
+ - vscode - Add manual lint-on-save command to vscode-jslint extension.
14
+ - ci - add custom-shell-ci hooks to script jslint_ci.sh:
15
+ shCiArtifactUploadCustom()
16
+ shCiBaseCustom()
17
+ shCiBaseCustom2()
18
+ shCiLintCustom()
19
+ shCiLintCustom2()
20
+ shCiNpmPublishCustom()
21
+ shCiPreCustom()
22
+ shCiPreCustom2()
23
+ - ci - housekeeping of ci-file jslint_ci.sh
24
+ - ci - update shell-function shGitCommitPushOrSquash() to be able to save to specified filename
25
+ - ci - remove little-used shell-function shCiBranchPromote()
26
+
27
+ # v2023.1.29
28
+ - ci - in windows-ci-env, alias node=node.exe instead of using winpty for pipes
29
+ - ci - bugfix - fix ci-shell-function shGithubFileUpload unable to upload new asset
30
+ - ci - auto-create asset_image_logo_512.png from asset_image_logo_512.html
31
+ - bugfix - fix shell-function shGithubCheckoutRemote not able to checkout trusted-files in non-alpha branches
32
+ - jslint-ci - revamp auto-updating and add shell-function shGithubCheckoutRemote
33
+ - test - print time-finished after test-run
34
+ - jslint - hide warning about unordered case-statements behind beta-flag
35
+ - ci - bugfix - update shell-function shCiBase() to handle undefined fileMain
36
+ - ci - auto-update version-number in main mjs-module
37
+ - ci - update shell-function shDirHttplinkValidate() to ignore insecure-links http://127.0.0.1, http://localhost
13
38
 
14
39
  # v2022.11.20
15
40
  - ci - update ci from node-v16 to node-v18
package/README.md CHANGED
@@ -3,7 +3,7 @@ Douglas Crockford <douglas@crockford.com>
3
3
 
4
4
 
5
5
  # Status
6
- | Branch | [master<br>(v2022.11.20)](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>(v2023.4.29)](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) |
@@ -567,6 +567,7 @@ right so that you can focus your creative energy where it is most needed.
567
567
  // script, similar to var statements.
568
568
  // Warn if const / let / var statements are not declared in ascii-order.
569
569
  // Warn if named-functions are not declared in ascii-order.
570
+ // Warn if cases in switch-statements are not in ascii-order.
570
571
  ```
571
572
 
572
573
  <br>
@@ -0,0 +1,199 @@
1
+ <!DOCTYPE html>
2
+ <html lang="en">
3
+ <head>
4
+ <title>logo</title>
5
+ <style>
6
+ /* sh jslint_ci.sh shBrowserScreenshot asset_image_logo_512.html --window-size=512x512 */
7
+ /* csslint box-model:false */
8
+ /* csslint ignore:start */
9
+ *,
10
+ *:after,
11
+ *:before {
12
+ box-sizing: border-box;
13
+ }
14
+ @font-face {
15
+ font-family: Daley;
16
+ font-weight: bold;
17
+ src: url("\
18
+ data:font/woff2;base64,d09GMgABAAAAABy4AA4AAAAAThwAABxiAAEAAAAAAAAAAAAA\
19
+ AAAAAAAAAAAAAAAABmAAgiQINAmcDBEICuc41DEBNgIkA4R2C4I+AAQgBYkuByAMgScfYUIF\
20
+ 7NgjsHGAbcDVFkXZ5Jwd+P96IGPc9rl9ETBEaCzCJkvY2UpziRZ7zftZWk8052U9+NqX6vXL\
21
+ KDflSQnlJ0bP+QnPQAy744n9mup6H9PaCDFwM5zjf8exB89bZ1cdrYOP0NgnuRDRWlk9u/fE\
22
+ llkxqmfH8lmRQ/DAmER9opk9wR6suc1LvTiXNEe1vbhUCH2USgnEwH3vUm05JQqejGvZvOtz\
23
+ 7sIKEGgLdDNl/IrfqWVZG/wr42ekomEm91VA1p4LhHBuFzHF8//u7vvbREHMQqGtNLmiOOD/\
24
+ X7WWiwqyCE98qt0jk5JJmgR5WJJElBmzRb1F7a66MmSLTNWZ2XSHfKBSKHoVteSEJ6EOdvVw\
25
+ fNZOtXKDe39jXdRlkmMnOWIOFBgeEK/b0mFsgffnPyyAitNyutKky7J8a8MSEkAKGLgfptnS\
26
+ /gDRSo7vwdNUmQDB7oP6pK7QF5d9SrY8M/tkrXcurSIQAmX7tz7pd33LIB7GQkBQ/k81s/0D\
27
+ gpt4gbw7x0Cn/PocitK5KIGPGQIzQzAMuCeC2ERAidx9TySVqX06goT0SFFOOV9Kuxdi5Rg7\
28
+ l6n3c+nKRemidOm2dtFV1jXMk4rP2m6RJ8xEdPYONLTbeMgaJ1nwS2W4su3MHwqkkvJ2PdDU\
29
+ r7pgAnVRt4Kh789FXlD0r3p6jUtNO19O1s74U9pnIxqFpw+mBgF+8y30PAyw1dzlknLLVcSB\
30
+ J2OuCr9eV5Efew6cOGd47ZEfhrW7HXI+FBNFvWgWnugUU4UvlrV63niv2ZPeKu8M76y/HQaG\
31
+ weU+4Gzp+Y+cfb9R9djDWcd1Svr1xG7l+j/yf3eM996548qlC+dOzOqQ8//Lo0uaSEQCFuLD\
32
+ /bXyWhJ6aPmyaRonVPxGABFL4/0slcKI6f+PmT0M+QRsplmWnv4F49VT+JsPifoa6aeyr2Hz\
33
+ EeLdP1FEOV/ZN+c9sAuoNh0BRS0xgCCc9wME5s0HOKj/wc0fWYsTbFQpsZL5SayJPkL45kDo\
34
+ DcJJ10MvD0ZSq7FEIr1TfqZ7NC6s75zSp8viaNO5/PczYCV9z6NTa0KBdnGBg6kbdeBkRLfU\
35
+ qRd3D9Pqw5jWCc5WM/i95OE8731MBd1u2EmsXIa5dCvavY32U1Ytza4nfbERg6OVRZka7jq0\
36
+ r2FcXNDyEhXheaHtaU1o1kvO9MuBOHqugLUEzN+4jznu0oK9wZPur1lWVFfxl8lZzn2XwcjZ\
37
+ Csg/RJy0mAMMmgnqXS8ELhOCRUSLzvsM5gAPudEh2lVoRxGgyUVnArZMruE0YS1PqFMD3upb\
38
+ jVoecGj1KpWl6/ZysuyzkG4SGA4bps6FBQSg4e4IxNUgdmosmoDn0TpIex/s1BFau6GBNO4z\
39
+ cvWXypm4hEg5k3llelySFqNmUtRZ3PHBA7p4MBX1nK4awwAV6kWzIVbUA67A55QKYbMsgVaH\
40
+ c1ZxKuZ0DCyqxCsJjLyCEY36gf0wjAu3t0zemc87PmBCJbU9Lso0YAaYJUx8wsR02hYz5hGy\
41
+ Js0+A4uHGZgfuf5SOR9iBQuLhpOExaIFrHj6JlXanebzGHp2ELDh6av09PVE1fmdsj2oHRWs\
42
+ fOtYrV6wRCyx7XogHqvpnZiPBBdNcL6kIoS9UI/DOIlumlveSgv9oqMBYp7WZ2fGxAXmZmaG\
43
+ OCyJG6+wAszZFCQw/EXVjx+YA2uVyN6bhNWiZhgtYjAwR5U/7uV1scghiTGiAPZbA5ZqHw5u\
44
+ Yu1cDjhRwREBFyq2wa0R8GgceDUKPo2BX+MhoAkQ1EQIaZqVHMwH3xM+P32TTA34tmOMNZ4n\
45
+ mHXqn49fmE3qX1+wMNYoYetOsPx6wxKzkURImERJIjGSSJwkkiCJJEkiKZJImiSSIYlkSYqK\
46
+ UBu0UOopuLMmasiJW0PMFOO2UgbDif2NaQUqkBbyaGjdTUvuyamEQwCq9DWsxsG9qPt+VFqV\
47
+ 6cIsXcyWujWIEtNFdeia9ssNrJUpe3IDMPQZOReC8x+qvt17drPWdcHeL0gTarWwoQ6o828o\
48
+ 0EJzrA20yZsgVyVHdlCJOF3NaACxHbP38TA+MGx3St9c5t2CxbGtunB4J9AF4Px2rSr1wyK9\
49
+ 9KoXBR13vw9Fk9qhTX0ivZoanrvhLa5oiJO8cqR0lX7QtJ2c1a62V3PMtutaaoit+hxtXuC5\
50
+ ZUXJePSR6btQlt5g7PqPQ822g7F8D123pc4kaGXz7qYztJxDXCxJr7foKqxwy4rikI/NvINx\
51
+ bkArRTTnnMWy6YA8J39LfTweThKsqlt7Mz078NDSOPOGgtGTpeG8ZRBF+xKBjdSoNe8gE6uC\
52
+ ucOH98jE4+cv1JEjI555TFjYj4+0KdFlojzJGWp2wc1tCaYGSeO8dBfT0u3lpDY3tazzu4wn\
53
+ lF9wzy2nK+sTr/qEVdANoZ0ToBdD+MY4ewOHNnkXPBvKVXLSbEGfGVD0Nzr0Fs3HID3Y1Kqx\
54
+ mzJ6p1C1/R6Xneyw/q9YRDLahbnsI1u76XzMLPqsK0yvQDeQ4TMR41709sIssmEgs0XH1lcj\
55
+ 7HLnUG6u2Xpy5vbOowIGqrR6cwF0TLGI5PF7pkbzIVYQU0sIaoNgul3LGAH2B1nREFYXUMia\
56
+ prCeAzggGxrC5gIK2dK0exs/AIRKdlIIuxkUspdSsU+rqXagqXaooXakqTiWS/a0E7zA6QIK\
57
+ OdMUznMAh+RCQ7hcQCFXmspr3ciuds/6gPsZFPIgpfJhwUIepRAeZ1DIk5Tue4oKfSfKZyNV\
58
+ pKU/J7J4Abx1EMV5mXSRDl6lMfU6jfBmBww4k7f6gLzTB+J9od/kA/uGj2mET2nkn7+zQ/JF\
59
+ H5Kv+pB804fkOyvwI43wM438V5sdkd/6iPzRR+SvPiL/WIH/aYRxGqMb/Oqe3d54+LWR1vr2\
60
+ knnnc467iD247eXBA3YYBAiFfierClXz/8jyL3Qh/zP8y+Y/1eN8jq+SKZAML/lIidjwZ8N4\
61
+ aLthvhxGUkGPo+p0eHKZ0sT5FsqJcQCy9UhHIvcJFIlIvANTPFWUTUhSiVdsNRnvwEQxm5uc\
62
+ ksjdv5evJfpOgI6c7juH8pnG2RKwlXaDYe9g8rMwYfML3A2SMWeBDopJJsmS5dUE2KttnmQa\
63
+ JZlMspvEpJioiEDFNpPUTbwqG3Zjhx2VCeJrIf60s2mI6blZMZVyAyYzI+1a2Y0AIqcbLUgR\
64
+ 6iRbNtnp82GrImXW0YbcbczDgqQDWNdTenvtTAlT9iPHenluV+d3eed1/5MjMBrX2LgrK2ml\
65
+ FuoDOz036n/kaHbAeszR3jHoI4NWB3lusTfuVgkMUkLQaH0F6+pSCS11fXRwT421vs9s7axd\
66
+ nvtF7/eeIeq9s1aCLsLWdh+w7sXz3IYdEsSQ0LVsebmES/vXDU9k653W4MiNq8bMj5nLioCY\
67
+ edGgOT6tmYwqiOW1ugiEmew6iwjvvYb3SaeZJb7XNufOo9oH8FTneWGL+BLiclptpnhPwcui\
68
+ T+rzcF34+ycsL7p3AveuML9i9h13beylyg8CzEz5HppadqmmDxKrAquG9L3ztedRoWxEsAYt\
69
+ OM1Eu0G0gyTHkxf7cSkHJQRbA4xmlqHWkv1C0KhFhBq1z81Wq1CZoWic8TJ570WfSj5qsM+Q\
70
+ nl4k3H5+P+P3zlv9ltQrzv41qyiSwV/gOadyQBchsmwDGu/JI8tXflE8jqUVA0Zw0SKbdDC9\
71
+ c4FR+fak95SdF7uqpoRe9z6YRv+85YUzF4qJy6Q8GOVNwUn/ymyjNNbmcuVfXYeH2osLdCte\
72
+ ebmZRyUfQQZA1BSCLK4PWA/z1kBvDZm0t+i3or1LkMD6en95pGG0UOa8ZJXgS9TdEA1I2mZw\
73
+ 1JOWWxDu0NEh4rM19H55rvueMBUZV1RjkmB3oxkXhAckpa5gzzxUDA2VLOrWFAXx+4gmfU17\
74
+ 5o3v9H7EYdvGFuM+tDB3TA4ITjVUKduO/R4bXRAcPXZusWkN+t59sFz7Hyi0FkSdzrHXQVFq\
75
+ b8c9k9eLRjVlBbNvt4172CanYg/F3Rket1zCTc77UZ61Gq/Be9J8hrKrxbDZMEotf5o8zHDc\
76
+ /UJaEtdhgwHEcBEQKM+6NBWIewLmI1sHuWYAedZCw8U1hJfSWcld+2tv3jpCFc5FnosLWC0+\
77
+ DnAlnOXUXLoMXrmCVerNQkZHvRm8YtE12vG8+N/vOnPcu3vM1uOnzE3u3VP2ppmLZawm2NuO\
78
+ tPa7xwHFCgVKpox5PVrOmaDHrThk1tX864a2+/qhJd3nCFRQ+bfUKI4O+Wgk5byB3saMcUfV\
79
+ C8G137yMd16zRm3ZSq+UrDlk5ha3TiAj0b74prWO/vYG+RC+ronP1/McDtefBtY1XhZE0PIB\
80
+ wTe7CBTte2U6KPbYd5GffApQlDGssdfmxYGSlnHrQt7++KEwUg3ikkoQyKPixgUDB6Lozjv5\
81
+ vM5PBnllt+UzMnP6DStFsOfossbXOefWhQApACCNpkTYGAONIowDfndqDKRFuzn685nthZPe\
82
+ vEL7TIWkXAG2yxKBH90+yMzuRzWn3KMmyKGwZWnIErlJ9Vwt8OtR6+4TKad5y9+ViBtTzVG+\
83
+ tpv/xiLrcGKJRtYvCUlGeL4Dwy1jo1CSQe0X71EXK1YG44ztxTONjIslL8SwY0Cki0k0vsX/\
84
+ /xz7CxkAc9dEdJZhMy/JCGzD2FAGtUcag0tc2e2miJkp477V2qTKB+nFnDl/noxpXJ+yqVdO\
85
+ wNjbplmeiuburg9ii1Z1zwtG8QjcJAiVPSOV2mHzq1Qt7p2+YCcIKPmFusE5O+m8s+Wd8o3t\
86
+ qO1b1IZF8N0tx6RQnZ9Ux3gXijHlolixst6vhJV6ao0ZFzSprfAc3x0MLvxU0OsmXEVddMVK\
87
+ 29CC6mPgPtXTUW7tVnZxwm0DTJwNOeVRV4axMSPlpgyv1Va1MQhQqWwUOb0s+gVLOecos4Nf\
88
+ eqlFW3fLQrlP86R4XRxrDHF0VIx6ArM5/sTWtObY6U2aosgxbN6FUa1iNTUpMThk1sUfJOC6\
89
+ s1SKo9D0g1NfiVmavyful/K7nZdDgutV1A26i7FR3r16bv3zz1cGw+ta17IX/+ripyutix3C\
90
+ xNmCxs7uiqKu9/Zjjn06tblXpJxlaLF5Od0d5W9QhQrs2u6UN0trQlCyEK2j9VYgCEIDrhQN\
91
+ c00rxg/FOfZ1N+nLV7RXDsYP+p0EzqKcuPujzuzEQsu2mFf4nYvf3Yp32rq/RYLetDLuOOTc\
92
+ 0WXBtgoech7AHUxAxPBg81qWCsYlzTofRU5/MpuyNoegR6mCJO5ckrLOhWbG7xo/VGwGgpRb\
93
+ +Ch+TmlcuY6Qct/2x3gxzeDUU9u+ltexrjelJ0VRR9KXH/AqrbYxHa0vmQ/kBnE5EORBK1ZH\
94
+ mTSy7A8DJMgzzqDsu9ML5J3ufkuUNDCfN5UKAjBgw2I/QlS8MQ6o/ll9dTAdoM7HYtV4cNWE\
95
+ U4pOl5Y4SIzdMbNSjXFmsBV1uXXf7GaBZZslpFGFiIpokSzxWj4hjlGl4VKJDACo7ScxQf29\
96
+ kM8gHD3nUJkwkN2aW2TGttqwOrygJ7r9nYX2tYqy7Z3TQV5ocWzUI8l871y3LsQLoTgEO76B\
97
+ Upp69hy6VKRpZvpvgfQ2T06qgXjxh38eatREitX6bzKggIYmN4sAkA3a5oeJZDK3ahQrVJwa\
98
+ AD65cEGBkS/tKH9TtybiREEWCMcKD0HH0gELtjB+KNSk7bspmpr6eb0CscIiFyZpmXu8+gxw\
99
+ O7pJNbAK2h9q2c5dMHBaoi5DylbNGdweVVdN3Jm9u6YXXlmx4nYY2vIPfSkrE/vyv9gn/Z+j\
100
+ R3HKExaUhdV0Az77YWbQPhNfjw+F0vTteSMin+wIfxyPe0DEoI4uz6o2IXwsZC7sg8MicQ3o\
101
+ wys+NJYKVW72YiVQ5LKDVwrEg2jNVM6XdNjbsHlRDcAkD08o5iWtFB2dVoydRmmDRLalE+4t\
102
+ 3gBbAPa7n7qXXXbTZTJXZKy5+1W0K7dgYEcIlu90ovC0C+5gxXiKtZisT14qDJ7f2ksyK59U\
103
+ r3QeHtBb24mPz7YDB3rgMTyUZ/fxM8h2i1Z21B8/VA5+9l7BKaOJZ15lWsyPv/z6CjU32ZKq\
104
+ +QFeyUywxYnUxUmcQfGc1Sp69oE2n6zFL8BXf5rc3cJMM6S97gagTT1bi7cmAV4MibkC4rz/\
105
+ icmmFtMlo5aN1Wp3uxsBfd4+9T42xmxvd79FV/hfuviBcrIaX092PrY5rle9FR4wTnDzrwj4\
106
+ 7frD2d0KsMcdcADQ1Yu1LECg9Wj3yOS8OhrJdQBqXqsam17vmt2wjjjouHE/EO9sGPdqt23v\
107
+ j8rL6wid6ulagtNK5p1hjRkFtUxTIaZnIXk63Zb3P0t5MQ+3vxHIFrmgAdWwiDuA67tbVIF6\
108
+ wJ53z0uhyhsfH9bgF0kPT9v2hrT3HKIBgUXIYoxsVU+uryemiUiQEwh+BfxP//qLShlumR26\
109
+ I8OqjD+x3hHDj/IrEWmvyL6ioG/atfxe+5GzIqRgfaoayWOiTk+YixO15KDO6Os3XACDjboe\
110
+ ryXXOuEmTpDsc7czk+H04Kw1PNJazW32CAURHwBldqK0/nqYHtcrtLyyTYmoD8hbcnJUfa3U\
111
+ 3FxWNus7uic3Qm1BzEecJW0MAz+W2CyN9FLIy+EpSy6CjkXsllZw1uBs1SxrQWM97/vnHu7m\
112
+ OtrkRl8AtBN3RDxI/fg7dZLLtDFYuCYYPMwXiO6ZIpwJ1GGydI9oUYYgnQQKDKoMTcwsjrfe\
113
+ Tcht6y18bLcpNfX41WE27447vLNzHuF+j15co5N7Py8vKUpTCoghHMEYKkM6y02lvX+9XiFg\
114
+ xBKMRNiwX69+LJb2Xa5WGqo7Rlk0cxsLVd0l2UXAW5jORg31sFMKYWXsDcRUKRDP8Q87OjiM\
115
+ dI1hNEt43netf8rOyfp+L58fq3holY9gxXwRJLY6gahgLQi4hS8w9LS+rFcJtdSCBrQLWsMs\
116
+ aDg/n8/P8/N+fcyoLepYr3W/CIUT7HsRQTtkduddbVfbo6Twt6fyJVPRrUGqRkWp3rdry65v\
117
+ sPYInyq1mPHrQDrqGJYI/LzA/QAzAXLnx+lu9uxHTEka9xgWgRvqEioskh+UWgD4nDvTAxaz\
118
+ 3v9BqqmFuQwy1wSXye1Df1NXVF7G8bUFxUE4F9axG5fm+vFQJvP8iuYjrFveB6++AqmJTQJ0\
119
+ 9GHjbPhzdSzkZGxokQzONVs0R0FCPJz1hJKbvDKsaj9hT0vp/gH5oiT8pAbWsBChwAbxHgDd\
120
+ 59iJVZE3bAzPRN1RuG+MT7th+J3i6KFwVJvPvsGRDIZW4P2rVfiKjDVBM2Va+w6PgI0c5u3K\
121
+ O7MrWryPhXFFdBoAwi2JCaW9sZ3fTagQ4Tld6u4djwcWzeCdiYoeNbfalsRYo740afYQ1Rid\
122
+ Bp/E9mbcTemEjoWWXIU7I5nK5H/BEqmZnPMyhDV234BTLQKCe6nhU+frwQo1gNFWf+eQGN62\
123
+ aeF7BuzaN/94W2xlKd8t8KMA/3uoxymFt19OlCjYZeaMWbTKM9Yog9zDhptYMOzIQAoO7kn6\
124
+ nTao8CxjrRRgjKe7mKa+tzuufhAAZtgjA92THkulWvIzEi0++j1DvXMnupDUS8aVusWain+c\
125
+ CcvmR5orC+RcJs3wVahLYyEcqbvAS2e0QJ6BlU36R/IEd9Aol9q+M+UGvlo8EyRzISvqusNS\
126
+ 7ePQ6cQzG1s725db4jNYNHAfF3KFG8wHqDwZDpWDsJ5qRLXR1ulFx85GhkypPubYaCiOQ5DR\
127
+ PQUiNpgk4fLJHenSMLMiswXsqW4Cpln1rFoHzpOoBbuZIixmVyhKajeqlFmp8zNAEsbEJz0g\
128
+ X0qlQuykZhf82pkhq2hWtCtYUdBODn6iPTBJT5Zk8IqFxqfBeFKjXk/sMeumhT8muOtq2Bgn\
129
+ dR4fj6RoOi0zI25kajAXlDZhUhS39jipk39h/69AfDPBLmOxhDj7Lg/WUTbOwJiJ3p7WtOpm\
130
+ ypARmhorQifINNm1CNS99GfDcLbD8sn8Fvlmvn7CmW65Pdmu6bKtuE0tn7NglIX1e/JAJP+G\
131
+ gB3At7cSOp92rl0lp0pp0xVb5YaQedwGgcJA1pT4cy24lS+jvzDw86YTfb2igJm5MysHmejW\
132
+ ZTGXpoAoLBLucUGEz/DwbjqOdzGAl5jy5VoCQws5zNYl4SVt030aZulYMgpDBPZd+kL0wV+w\
133
+ nob2LPRDQGEbdUoeFm4fEKio9c/ferVlpSO8Bx7OFZyHip1PIizvoqFe02kpmS17TvIOty42\
134
+ +Q0QaCnOpeLsPwwo+vixIeIeUjucUsKejVlez35qyuC0mm5pJJJLEVP2JAe/LTOwUUfKJkNy\
135
+ lEe3Kdth241ZNQmkVcAIh6DZJBzvQov5fn3JZA0phBWdNq5iTsm5N2D8gyve3V3X2o3zF3VY\
136
+ OqEBgTIADAbC69z7vOKJjGOzHRmUUwLU66iabtIbqR6SPOHCL+fCTfvpKcB/oG2p3wRKErEJ\
137
+ v1YOfu9iaKEMLXS3ptdH8fwN2Rdww9bZ7rFa2bwrzcyux3o+hPV6bJZpb71j7lLAdzge3VX7\
138
+ 9uSCdz6f/FDb7+wzWnbbDSPj9R20+PybDUm/lVAsTuF0aycFQwJfPCUwcBvCGWEq6xoTIEOy\
139
+ b0bLta20+LYRYdyEceX7ypfezQKIy5OvJTAHCJy/WyOYaDVyPucMsHnZ0GCH75Cd//te1Bv2\
140
+ RkMykqYurBiNbuH3Xfuprirr4Dd453O6abAYGb5tw1d6wrBL8p1J1Sx9Lgw7yxqYn0FTrc0y\
141
+ 59yLlV+4zIkLfZlPFRVnanHpTyrIlpn4lGkt269+JXnIWhEQWNvuVsrt531jr+8AHkVZfQU8\
142
+ 8U/4AUZMuOj5iliigFrof/usmloYEI1f8erhJku75snYW7YmFmUcoC7UtG/KfJRuz6j0tWPa\
143
+ 56J5QA0rJHwSIhNT4GWvez19HT2lia+Pz7/+MVEWlvjY6+9P85a0y9qWkTzQ7nF0wDXpQpw3\
144
+ K4xnfK2L08b5MrxdeI+DDfVDeV2JY0Fp6KH602tj2MbxxKM8oG+wTkE/dr8jyo4Sfs/IV6uf\
145
+ +IIXpH2Nca1+WCJV5qEv193bcUELLR4iFu83xUedKy9353tn+3o01dF2bNEQ3fK9Q5tCXrCi\
146
+ La+woCuvEeYrr+PiN2+i2V/eDJck580pyra8BV5ZIZbpe3kr5vJD3pqoGsnbcl/d+ndvR23b\
147
+ K41M4dKwaAwDaMA1gZGBoQWAcYE9mYkmQOnAjkaG41FkGkIP2BAIgKvUvzhpE5JbA6lze2iL\
148
+ 5Nr+AwiDo2W4BStvK30dKy0JGNbzAY5akexsrV0xo5K8rY50LOTLvDyukIZNbRLKOCk18mD3\
149
+ WxmZGlsCMxNdGFYGNJnetUWyCPgo4BONEL4I9b8UeEBGYXuCdCd+DkctrqVLYXGSfE46kvAu\
150
+ +ltK5SRxQPnjUqyJXsSYs6VY6WPKfns9+IXjHhd5wQvGipgFdMwVEQ+A7a2AAS0clQwH7KHW\
151
+ SEGjhnklSVRghMtPy6gEtJRIKJeYkpQyQiequQunFOOU4BLdK1yp55olZS6npyPhMnvK7xIa\
152
+ pyNj+JctcQLXenBOCms46aMkenIx45WpXqxxVJQLz/vgpmAVa0fmDv6Pue9xVTBPfVxCUGfj\
153
+ 1R8uVi8Zu9nRFqk/t0gR6wmWOlzuKRqk33HpO8qQ+nbGoEZLL/0Va156SJ+u+t86/os7ic49\
154
+ /7xoEqvL+2E8VOyCTuT/7j269Zy4jUtN+g4=\
155
+ ") format("woff2");
156
+ }
157
+ /* csslint ignore:end */
158
+ body,
159
+ div {
160
+ margin: 0;
161
+ }
162
+ .container1 {
163
+ background: antiquewhite;
164
+ border: 24px solid darkslategray;
165
+ border-radius: 96px;
166
+ color: darkslategray;
167
+ font-family: Daley;
168
+ height: 512px;
169
+ margin: 0;
170
+ position: relative;
171
+ width: 512px;
172
+ zoom: 100%;
173
+ /*
174
+ background: transparent;
175
+ border: 24px solid black;
176
+ color: black;
177
+ */
178
+ }
179
+ .text1 {
180
+ font-size: 256px;
181
+ left: 44px;
182
+ position: absolute;
183
+ top: 32px;
184
+ }
185
+ .text2 {
186
+ bottom: 8px;
187
+ font-size: 192px;
188
+ left: 44px;
189
+ position: absolute;
190
+ }
191
+ </style>
192
+ </head>
193
+ <body>
194
+ <div class="container1">
195
+ <div class="text1">JS</div>
196
+ <div class="text2">Lint</div>
197
+ </div>
198
+ </body>
199
+ </html>
package/jslint.mjs CHANGED
@@ -131,11 +131,11 @@
131
131
  stack, stack_trace, start, startOffset, startsWith, statement,
132
132
  statement_prv, stdio, stop, stop_at, stringify, subscript, switch,
133
133
  syntax_dict, tenure, test, test_cause, test_internal_error, this, thru,
134
- toString, token, token_global, token_list, token_nxt, token_tree, tokens,
135
- trace, tree, trim, trimEnd, trimRight, try, type, unlink, unordered,
136
- unshift, url, used, v8CoverageListMerge, v8CoverageReportCreate, value,
137
- variable, version, versions, warn, warn_at, warning, warning_list, warnings,
138
- white, wrapped, writeFile
134
+ toLocaleString, toString, token, token_global, token_list, token_nxt,
135
+ token_tree, tokens, trace, tree, trim, trimEnd, trimRight, try, type,
136
+ unlink, unordered, unshift, url, used, v8CoverageListMerge,
137
+ v8CoverageReportCreate, value, variable, version, versions, warn, warn_at,
138
+ warning, warning_list, warnings, white, wrapped, writeFile
139
139
  */
140
140
 
141
141
  // init debugInline
@@ -165,7 +165,7 @@ let jslint_charset_ascii = (
165
165
  + "@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_"
166
166
  + "`abcdefghijklmnopqrstuvwxyz{|}~\u007f"
167
167
  );
168
- let jslint_edition = "v2022.11.20";
168
+ let jslint_edition = "v2023.4.29";
169
169
  let jslint_export; // The jslint object to be exported.
170
170
  let jslint_fudge = 1; // Fudge starting line and starting
171
171
  // ... column to 1.
@@ -4185,7 +4185,11 @@ function jslint_phase3_parse(state) {
4185
4185
  }
4186
4186
  }).reduce(function (aa, bb) {
4187
4187
  if (
4188
- !option_dict.unordered
4188
+
4189
+ // PR-419 - Hide warning about unordered case-statements behind beta-flag.
4190
+
4191
+ option_dict.beta
4192
+ && !option_dict.unordered
4189
4193
  && aa && bb
4190
4194
  && (
4191
4195
  aa.order > bb.order
@@ -9977,6 +9981,10 @@ function jstestOnExit(exitCode, mode) {
9977
9981
  )
9978
9982
  + " tests total - " + jstestCountTotal + "\n"
9979
9983
  + " tests failed - " + jstestCountFailed + "\n"
9984
+ + "\n"
9985
+ + " time finished - "
9986
+ + Number(Date.now() - jstestTimeStart).toLocaleString()
9987
+ + " ms\n"
9980
9988
  + "\u001b[39m"
9981
9989
  );
9982
9990
  if (mode !== "testsFailed") {
@@ -11223,35 +11231,41 @@ function sentinel() {}
11223
11231
  if ((
11224
11232
  /^coverage-\d+?-\d+?-\d+?\.json$/
11225
11233
  ).test(file)) {
11226
- console.error("rm file " + coverageDir + file);
11234
+ consoleError("rm file " + coverageDir + file);
11227
11235
  await moduleFs.promises.unlink(coverageDir + file);
11228
11236
  }
11229
11237
  }));
11230
11238
  exitCode = await new Promise(function (resolve) {
11231
- moduleChildProcess.spawn((
11232
- processArgv[0] === "npm"
11239
+ moduleChildProcess.spawn(
11240
+ (
11241
+ processArgv[0] === "npm"
11233
11242
 
11234
11243
  // If win32 environment, then replace program npm with npm.cmd.
11235
11244
  // Coverage-hack - Ugly-hack to get test-coverage under both win32 and linux.
11236
11245
 
11237
- ? process.platform.replace("win32", "npm.cmd").replace(
11238
- process.platform,
11239
- "npm"
11240
- )
11241
- : processArgv[0]
11242
- ), processArgv.slice(1), {
11243
- env: Object.assign({}, process.env, {
11244
- NODE_V8_COVERAGE: coverageDir
11245
- }),
11246
- stdio: [
11247
- "ignore", 1, 2
11248
- ]
11249
- }).on("exit", resolve);
11246
+ ? process.platform.replace("win32", "npm.cmd").replace(
11247
+ process.platform,
11248
+ "npm"
11249
+ )
11250
+ : processArgv[0]
11251
+ ),
11252
+ processArgv.slice(1),
11253
+ {
11254
+ env: Object.assign({}, process.env, {
11255
+ NODE_V8_COVERAGE: coverageDir
11256
+ }),
11257
+ stdio: ["ignore", 1, 2]
11258
+ }
11259
+ ).on("exit", resolve);
11250
11260
  });
11261
+ consoleError(
11262
+ `v8CoverageReportCreate - program exited with exitCode=${exitCode}`
11263
+ );
11251
11264
  }
11252
11265
 
11253
11266
  // 2. Merge JSON v8-coverage-files in <coverageDir>.
11254
11267
 
11268
+ consoleError("v8CoverageReportCreate - merging coverage files...");
11255
11269
  v8CoverageObj = await moduleFs.promises.readdir(coverageDir);
11256
11270
  v8CoverageObj = v8CoverageObj.filter(function (file) {
11257
11271
  return (
@@ -11323,6 +11337,7 @@ function sentinel() {}
11323
11337
 
11324
11338
  // 3. Create html-coverage-reports in <coverageDir>.
11325
11339
 
11340
+ consoleError("v8CoverageReportCreate - creating html-coverage-report...");
11326
11341
  fileDict = Object.create(null);
11327
11342
  await Promise.all(v8CoverageObj.result.map(async function ({
11328
11343
  functions,
@@ -30,11 +30,12 @@
30
30
  /*property
31
31
  Diagnostic, DiagnosticSeverity, ProgressLocation, Warning, Window, activate,
32
32
  cancellable, character, clear, column, commands, createDiagnosticCollection,
33
- document, end, endsWith, exports, getText, increment, insert, isEmpty,
34
- jslint, languages, line, lineAt, location, map, message, module, push,
35
- range, rangeIncludingLineBreak, readFileSync, registerTextEditorCommand,
36
- replace, report, runInNewContext, selection, set, slice, start,
37
- subscriptions, title, uri, warnings, window, withProgress
33
+ document, end, endsWith, exports, fsPath, getText, increment, insert,
34
+ isEmpty, jslint, languages, line, lineAt, location, map, message, module,
35
+ promises, push, range, rangeIncludingLineBreak, readFileSync,
36
+ registerTextEditorCommand, replace, report, runInNewContext, selection, set,
37
+ slice, start, subscriptions, title, uri, warnings, window, withProgress,
38
+ writeFile
38
39
  */
39
40
 
40
41
  "use strict";
@@ -182,6 +183,20 @@ function activate({
182
183
  });
183
184
  }
184
185
 
186
+ // PR-429 - Add manual lint-on-save command.
187
+
188
+ async function jslintLintAndSave({
189
+ document
190
+ }) {
191
+ jslintLint({
192
+ document
193
+ });
194
+ await require("fs").promises.writeFile(
195
+ document.uri.fsPath,
196
+ document.getText()
197
+ );
198
+ }
199
+
185
200
  // Initialize vscode and jslint.
186
201
 
187
202
  vscode = require("vscode");
@@ -222,6 +237,9 @@ function activate({
222
237
  subscriptions.push(vscode.commands.registerTextEditorCommand((
223
238
  "jslint.lint"
224
239
  ), jslintLint));
240
+ subscriptions.push(vscode.commands.registerTextEditorCommand((
241
+ "jslint.lintAndSave"
242
+ ), jslintLintAndSave));
225
243
  }
226
244
 
227
245
  exports.activate = activate;
package/package.json CHANGED
@@ -11,7 +11,7 @@
11
11
  "default": "./jslint_wrapper_cjs.cjs",
12
12
  "import": "./jslint.mjs"
13
13
  },
14
- "fileCount": 33,
14
+ "fileCount": 34,
15
15
  "keywords": [
16
16
  "coverage-report",
17
17
  "javascript",
@@ -32,6 +32,8 @@
32
32
  "test": "node jslint.mjs v8_coverage_report=.artifact/coverage node test.mjs",
33
33
  "test2": "sh jslint_ci.sh shCiBase"
34
34
  },
35
+ "shCiArtifactUpload": 1,
36
+ "shCiNpmPublish": 1,
35
37
  "type": "module",
36
- "version": "2022.11.20"
38
+ "version": "2023.4.29"
37
39
  }