├── .clang-format ├── .editorconfig ├── .git-bisect-ignore ├── .gitattributes ├── .github ├── FUNDING.yml ├── docker │ ├── README.md │ ├── quick-lint-js-github-baseline-builder │ │ ├── Dockerfile │ │ └── README.md │ ├── quick-lint-js-github-builder-aarch64 │ │ ├── Dockerfile │ │ └── README.md │ ├── quick-lint-js-github-clang-format │ │ ├── Dockerfile │ │ └── README.md │ ├── quick-lint-js-github-clang │ │ ├── Dockerfile │ │ └── README.md │ ├── quick-lint-js-github-cross-builder │ │ ├── Dockerfile │ │ └── README.md │ ├── quick-lint-js-github-emacs │ │ ├── Dockerfile │ │ └── README.md │ ├── quick-lint-js-github-gcc │ │ ├── Dockerfile │ │ └── README.md │ ├── quick-lint-js-github-go-builder │ │ ├── Dockerfile │ │ └── README.md │ ├── quick-lint-js-github-mingw-builder │ │ ├── .gitignore │ │ ├── Dockerfile │ │ └── README.md │ ├── quick-lint-js-github-vim │ │ ├── Dockerfile │ │ └── README.md │ └── quick-lint-js-github-website-builder │ │ ├── Dockerfile │ │ └── README.md ├── toolchain-linux-aarch64.cmake ├── toolchain-linux-armhf.cmake ├── toolchain-mingw-aarch64.cmake ├── toolchain-mingw-armv7.cmake └── workflows │ ├── arch-linux-package.yml │ ├── build-and-test-dev-env-nix.yml │ ├── build-and-test-dev.yml │ ├── build-and-test-plugin-vscode.yml │ ├── build-and-test.yml │ ├── build-static.yml │ ├── build-website.yml │ ├── check-copyright.yml │ ├── check-error-docs.yml │ ├── check-format.yml │ ├── ci-self-check.yml │ ├── cla.yml │ ├── debian-package.yml │ ├── simple-build.yml │ ├── tag-build.yml │ ├── test-emacs-plugin.yml │ ├── test-homebrew-package.yml │ ├── test-install.yml │ ├── test-nix-install.yml │ ├── test-vim-plugin.yml │ └── unvendored.yml ├── .gitignore ├── .vscode ├── README.md ├── c_cpp_properties.json └── new-file.code-snippets ├── CMakeLists.txt ├── COPYING ├── Formula ├── LICENSE ├── README.md └── quick-lint-js.rb ├── README.md ├── benchmark ├── CMakeLists.txt ├── README.md ├── benchmark-cli-location.cpp ├── benchmark-configuration-loader.cpp ├── benchmark-configuration.cpp ├── benchmark-lex.cpp ├── benchmark-lint.cpp ├── benchmark-lsp-document-text.cpp ├── benchmark-lsp-location.cpp ├── benchmark-lsp.cpp ├── benchmark-lsp │ ├── CMakeLists.txt │ ├── README.md │ ├── benchmark-config.cpp │ ├── biome │ │ ├── .gitignore │ │ ├── package.json │ │ ├── run.sh │ │ └── yarn.lock │ ├── corpus │ │ ├── README.txt │ │ ├── edex-ui-filesystem.class.js │ │ ├── edex-ui-filesystem.class.js.LICENSE │ │ ├── express-router.js │ │ ├── express-router.js.LICENSE │ │ ├── react-quickly-ch10.jsx │ │ ├── react-quickly-ch10.jsx.LICENSE │ │ └── tiny.js │ ├── eslint │ │ ├── .gitignore │ │ ├── airbnb │ │ │ └── .eslintrc.json │ │ ├── package.json │ │ ├── react │ │ │ └── .eslintrc.json │ │ ├── typescript │ │ │ └── .eslintrc.json │ │ ├── vanilla │ │ │ └── .eslintrc.json │ │ ├── vue │ │ │ └── .eslintrc.json │ │ └── yarn.lock │ ├── flow │ │ ├── .flowconfig │ │ ├── .gitignore │ │ ├── package.json │ │ ├── run.sh │ │ └── yarn.lock │ ├── lsp-benchmarks.cpp │ ├── lsp-server-process.cpp │ ├── main.cpp │ ├── oxc │ │ └── .gitignore │ ├── process.cpp │ ├── quick-lint-js │ │ ├── benchmark-config.h │ │ ├── lsp-benchmarks.h │ │ ├── lsp-logging.h │ │ ├── lsp-server-process.h │ │ └── process.h │ ├── typescript-jsx │ │ ├── .gitignore │ │ ├── package.json │ │ ├── tsconfig.json │ │ └── yarn.lock │ └── typescript │ │ ├── .gitignore │ │ ├── package.json │ │ ├── tsconfig.json │ │ └── yarn.lock ├── benchmark-parse.cpp ├── benchmark-translation.cpp ├── benchmark-utf-8.cpp ├── benchmark-vector-profiler.cpp ├── benchmark-vim-location.cpp ├── generate-code.cpp └── quick-lint-js │ └── generate-code.h ├── cmake ├── QuickLintJSCompiler.cmake ├── QuickLintJSCopyright.cmake ├── QuickLintJSNodeJS.cmake ├── QuickLintJSTarget.cmake ├── README.txt └── empty.cpp ├── completions ├── CMakeLists.txt ├── README.md ├── _quick-lint-js ├── quick-lint-js.bash ├── quick-lint-js.fish └── quick-lint-js.ps1 ├── default.nix ├── dist ├── CMakeLists.txt ├── README.txt ├── apple │ ├── README.md │ └── quick-lint-js.csreq ├── appstream │ └── com.quick_lint.quick_lint_js.metainfo.xml ├── appx.go ├── appx_test.go ├── arch │ ├── .gitignore │ ├── Dockerfile │ ├── PKGBUILD-dev │ ├── PKGBUILD-git │ ├── PKGBUILD-release │ ├── README.md │ ├── lint.sh │ ├── quick-lint-js.gpg.key │ └── update-aur.sh ├── artwork │ ├── LICENSE.txt │ ├── README.md │ ├── dusty-app.ico │ ├── dusty-color-guide.png │ ├── dusty-favicon-16x16.png │ ├── dusty-favicon-32x32.png │ ├── dusty-favicon.svg │ ├── dusty-left.svg │ ├── dusty-right-200x200.png │ ├── dusty-right-256x256.png │ └── dusty-right.svg ├── certificates │ ├── .gitignore │ ├── README.md │ ├── SSL_COM_ROOT_CERTIFICATION_AUTHORITY_RSA.crt │ ├── old │ │ ├── DigiCertAssuredIDRootCA_comb.crt.pem │ │ ├── DigiCertTrustedRootG4.crt │ │ ├── README.md │ │ ├── quick-lint-js-2.4.2.gpg.key │ │ └── quick-lint-js.cer │ ├── quick-lint-js.crt │ ├── quick-lint-js.gpg.key │ └── relic-config.yaml ├── chocolatey │ ├── Content_Types.xml │ ├── README.md │ ├── _rels │ │ └── .rels │ ├── build.go │ ├── package │ │ └── services │ │ │ └── metadata │ │ │ └── core-properties │ │ │ └── 0f2e3a46417c41e09f34ed948b00df06.template.psmdcp │ ├── quick-lint-js.nuspec │ └── tools │ │ ├── VERIFICATION.txt │ │ └── chocolateyinstall.template.ps1 ├── debian │ ├── .gitignore │ ├── README.md │ ├── apt-ftparchive.conf │ ├── asgen-config.json │ ├── build.sh │ ├── debian │ │ ├── changelog │ │ ├── changelog-bionic │ │ ├── compat │ │ ├── compat-bionic │ │ ├── control │ │ ├── control-bionic │ │ ├── copyright │ │ ├── copyright-bionic │ │ ├── quick-lint-js-vim.install │ │ ├── quick-lint-js-vim.postinst │ │ ├── quick-lint-js-vim.preinst │ │ ├── quick-lint-js-vim.prerm │ │ ├── quick-lint-js.install │ │ ├── rules │ │ ├── rules-bionic │ │ ├── source │ │ │ ├── format │ │ │ ├── lintian-overrides │ │ │ └── lintian-overrides-bionic │ │ ├── upstream │ │ │ ├── metadata │ │ │ └── signing-key.pgp │ │ └── watch │ ├── package.sh │ ├── strict-lintian.sh │ ├── sync-releases-to-apt │ └── update-repository ├── deep-hasher.go ├── msix │ ├── AppxManifest.xml │ ├── README.md │ ├── build-unsigned-msix.go │ ├── images │ │ ├── Square150x150Logo.png │ │ ├── Square44x44Logo.png │ │ └── StoreLogo.png │ └── mapping.template.txt ├── nix │ ├── quick-lint-js.nix │ └── shell.nix ├── npm │ ├── .gitignore │ ├── .npmignore │ ├── BUILDING.md │ ├── README.md │ ├── package.json │ ├── preinstall.js │ └── quick-lint-js.exe ├── release.go ├── release_test.go ├── scoop │ ├── README.md │ ├── make-manifest.go │ └── quick-lint-js.template.json ├── sign-release.go ├── update-release-notes.go ├── webinstaller │ ├── README.md │ ├── make-webinstaller-manifest.js │ └── quick-lint-js-template.json └── winget │ ├── README.md │ ├── make-manifests.go │ ├── quick-lint.quick-lint-js.installer.template.yaml │ ├── quick-lint.quick-lint-js.locale.en-US.template.yaml │ └── quick-lint.quick-lint-js.template.yaml ├── docs ├── AUTHORS.md ├── CHANGELOG.md ├── CLA-v1.md ├── CMakeLists.txt ├── CODE_SIGNING.md ├── FUZZING.md ├── INFRASTRUCTURE.md ├── INSTALLING.md ├── RELEASE.md ├── TRACING.md ├── TRANSLATING.md ├── architecture │ ├── ADR001-Feature-testing-with-have-h.md │ ├── ADR002-Programming-language.md │ ├── ADR003-Vendor-sources.md │ ├── ADR004-Generated-sources.md │ ├── ADR005-Incremental-lexing.md │ ├── ADR006-Location-tracking.md │ ├── ADR007-Expression-stack.md │ ├── ADR008-Exceptions.md │ ├── ADR009-Website.md │ ├── ADR010-LSP-server.md │ ├── ADR011-IO-errors.md │ ├── ADR012-Assertions.md │ ├── ADR013-Dependencies.md │ ├── ADR014-Plugins.md │ ├── ADR015-Logging-and-tracing.md │ ├── ADR016-Collections.md │ ├── ADR017-Lexer-tables.md │ ├── ADR018-Naming-style.md │ ├── ARD019-IO-manager.md │ └── README.md ├── cli.adoc ├── config.adoc ├── errors │ ├── E0001.md │ ├── E0002.md │ ├── E0003.md │ ├── E0004.md │ ├── E0005.md │ ├── E0006.md │ ├── E0007.md │ ├── E0008.md │ ├── E0009.md │ ├── E0010.md │ ├── E0011.md │ ├── E0012.md │ ├── E0013.md │ ├── E0014.md │ ├── E0015.md │ ├── E0016.md │ ├── E0017.md │ ├── E0018.md │ ├── E0019.md │ ├── E0020.md │ ├── E0021.md │ ├── E0022.md │ ├── E0023.md │ ├── E0024.md │ ├── E0025.md │ ├── E0026.md │ ├── E0027.md │ ├── E0028.md │ ├── E0029.md │ ├── E0030.md │ ├── E0031.md │ ├── E0032.md │ ├── E0033.md │ ├── E0034.md │ ├── E0035.md │ ├── E0036.md │ ├── E0037.md │ ├── E0038.md │ ├── E0039.md │ ├── E0040.md │ ├── E0041.md │ ├── E0042.md │ ├── E0043.md │ ├── E0044.md │ ├── E0045.md │ ├── E0046.md │ ├── E0047.md │ ├── E0048.md │ ├── E0049.md │ ├── E0050.md │ ├── E0051.md │ ├── E0052.md │ ├── E0053.md │ ├── E0054.md │ ├── E0055.md │ ├── E0056.md │ ├── E0057.md │ ├── E0058.md │ ├── E0059.md │ ├── E0060.md │ ├── E0061.md │ ├── E0062.md │ ├── E0063.md │ ├── E0064.md │ ├── E0065.md │ ├── E0066.md │ ├── E0067.md │ ├── E0068.md │ ├── E0069.md │ ├── E0070.md │ ├── E0071.md │ ├── E0072.md │ ├── E0073.md │ ├── E0074.md │ ├── E0075.md │ ├── E0076.md │ ├── E0077.md │ ├── E0078.md │ ├── E0079.md │ ├── E0080.md │ ├── E0081.md │ ├── E0082.md │ ├── E0083.md │ ├── E0084.md │ ├── E0085.md │ ├── E0086.md │ ├── E0087.md │ ├── E0088.md │ ├── E0089.md │ ├── E0090.md │ ├── E0091.md │ ├── E0092.md │ ├── E0093.md │ ├── E0094.md │ ├── E0095.md │ ├── E0096.md │ ├── E0097.md │ ├── E0098.md │ ├── E0099.md │ ├── E0100.md │ ├── E0101.md │ ├── E0102.md │ ├── E0103.md │ ├── E0104.md │ ├── E0105.md │ ├── E0106.md │ ├── E0107.md │ ├── E0108.md │ ├── E0109.md │ ├── E0110.md │ ├── E0111.md │ ├── E0112.md │ ├── E0113.md │ ├── E0114.md │ ├── E0115.md │ ├── E0116.md │ ├── E0117.md │ ├── E0118.md │ ├── E0119.md │ ├── E0120.md │ ├── E0121.md │ ├── E0122.md │ ├── E0123.md │ ├── E0124.md │ ├── E0125.md │ ├── E0126.md │ ├── E0127.md │ ├── E0128.md │ ├── E0129.md │ ├── E0130.md │ ├── E0131.md │ ├── E0132.md │ ├── E0133.md │ ├── E0134.md │ ├── E0135.md │ ├── E0136.md │ ├── E0137.md │ ├── E0138.md │ ├── E0139.md │ ├── E0140.md │ ├── E0141.md │ ├── E0142.md │ ├── E0143.md │ ├── E0144.md │ ├── E0145.md │ ├── E0146.md │ ├── E0147.md │ ├── E0148.md │ ├── E0149.md │ ├── E0150.md │ ├── E0151.md │ ├── E0152.md │ ├── E0153.md │ ├── E0154.md │ ├── E0155.md │ ├── E0156.md │ ├── E0157.md │ ├── E0158.md │ ├── E0159.md │ ├── E0160.md │ ├── E0161.md │ ├── E0162.md │ ├── E0163.md │ ├── E0164.md │ ├── E0165.md │ ├── E0166.md │ ├── E0167.md │ ├── E0168.md │ ├── E0169.md │ ├── E0170.md │ ├── E0171.md │ ├── E0172.md │ ├── E0173.md │ ├── E0174.md │ ├── E0175.md │ ├── E0176.md │ ├── E0177.md │ ├── E0178.md │ ├── E0179.md │ ├── E0180.md │ ├── E0181.md │ ├── E0182.md │ ├── E0183.md │ ├── E0184.md │ ├── E0185.md │ ├── E0186.md │ ├── E0187.md │ ├── E0188.md │ ├── E0189.md │ ├── E0190.md │ ├── E0191.md │ ├── E0192.md │ ├── E0193.md │ ├── E0194.md │ ├── E0195.md │ ├── E0196.md │ ├── E0197.md │ ├── E0198.md │ ├── E0199.md │ ├── E0200.md │ ├── E0201.md │ ├── E0202.md │ ├── E0203.md │ ├── E0204.md │ ├── E0205.md │ ├── E0206.md │ ├── E0207.md │ ├── E0208.md │ ├── E0209.md │ ├── E0210.md │ ├── E0211.md │ ├── E0212.md │ ├── E0213.md │ ├── E0214.md │ ├── E0215.md │ ├── E0216.md │ ├── E0217.md │ ├── E0218.md │ ├── E0219.md │ ├── E0220.md │ ├── E0221.md │ ├── E0222.md │ ├── E0223.md │ ├── E0224.md │ ├── E0225.md │ ├── E0226.md │ ├── E0227.md │ ├── E0228.md │ ├── E0229.md │ ├── E0230.md │ ├── E0231.md │ ├── E0232.md │ ├── E0233.md │ ├── E0234.md │ ├── E0235.md │ ├── E0236.md │ ├── E0237.md │ ├── E0238.md │ ├── E0239.md │ ├── E0240.md │ ├── E0241.md │ ├── E0243.md │ ├── E0244.md │ ├── E0245.md │ ├── E0246.md │ ├── E0247.md │ ├── E0248.md │ ├── E0249.md │ ├── E0250.md │ ├── E0251.md │ ├── E0252.md │ ├── E0253.md │ ├── E0254.md │ ├── E0255.md │ ├── E0256.md │ ├── E0257.md │ ├── E0258.md │ ├── E0259.md │ ├── E0260.md │ ├── E0261.md │ ├── E0262.md │ ├── E0263.md │ ├── E0264.md │ ├── E0265.md │ ├── E0266.md │ ├── E0267.md │ ├── E0268.md │ ├── E0269.md │ ├── E0270.md │ ├── E0271.md │ ├── E0272.md │ ├── E0273.md │ ├── E0274.md │ ├── E0275.md │ ├── E0276.md │ ├── E0277.md │ ├── E0278.md │ ├── E0279.md │ ├── E0280.md │ ├── E0281.md │ ├── E0282.md │ ├── E0283.md │ ├── E0284.md │ ├── E0285.md │ ├── E0286.md │ ├── E0287.md │ ├── E0288.md │ ├── E0289.md │ ├── E0290.md │ ├── E0291.md │ ├── E0292.md │ ├── E0293.md │ ├── E0294.md │ ├── E0295.md │ ├── E0296.md │ ├── E0297.md │ ├── E0298.md │ ├── E0299.md │ ├── E0300.md │ ├── E0301.md │ ├── E0302.md │ ├── E0303.md │ ├── E0304.md │ ├── E0305.md │ ├── E0306.md │ ├── E0307.md │ ├── E0308.md │ ├── E0309.md │ ├── E0310.md │ ├── E0311.md │ ├── E0312.md │ ├── E0313.md │ ├── E0315.md │ ├── E0316.md │ ├── E0317.md │ ├── E0318.md │ ├── E0319.md │ ├── E0320.md │ ├── E0321.md │ ├── E0323.md │ ├── E0324.md │ ├── E0325.md │ ├── E0326.md │ ├── E0327.md │ ├── E0341.md │ ├── E0342.md │ ├── E0343.md │ ├── E0344.md │ ├── E0345.md │ ├── E0346.md │ ├── E0347.md │ ├── E0348.md │ ├── E0349.md │ ├── E0358.md │ ├── E0369.md │ ├── E0373.md │ ├── E0374.md │ ├── E0376.md │ ├── E0379.md │ ├── E0381.md │ ├── E0383.md │ ├── E0427.md │ ├── E0450.md │ ├── E0451.md │ ├── E0452.md │ ├── E0458.md │ ├── E0707.md │ ├── E0708.md │ ├── E0709.md │ ├── E0710.md │ ├── E0711.md │ ├── E0712.md │ ├── E0713.md │ ├── E0714.md │ ├── E0715.md │ ├── E0716.md │ ├── E0717.md │ ├── E0718.md │ ├── E0719.md │ └── E0720.md ├── lsp.adoc ├── man │ ├── .gitignore │ ├── generate-man-pages │ ├── quick-lint-js-lsp.8 │ ├── quick-lint-js.1 │ └── quick-lint-js.config.5 ├── profiling.md └── quick-lint-js.config.schema.json ├── flake.lock ├── flake.nix ├── fuzz ├── CMakeLists.txt ├── README.txt ├── fuzz-configuration-json.cpp ├── fuzz-lex.cpp ├── fuzz-lsp-message-parser.cpp ├── fuzz-lsp-server.cpp ├── fuzz-options.cpp ├── fuzz-parse-lint.cpp ├── fuzz-parse.cpp ├── fuzz-utf-8-decode-encode.cpp └── fuzz-utf-8-lsp.cpp ├── infrastructure ├── README.md └── quick-lint-js-web-2 │ ├── .gitignore │ ├── README.md │ ├── dev-certificates │ └── .gitignore │ ├── dev.yml │ ├── inventory.yml │ ├── mkcert.yml │ ├── prod.yml │ ├── roles │ ├── acl │ │ ├── meta │ │ │ └── main.yml │ │ └── tasks │ │ │ └── main.yml │ ├── analytics │ │ ├── files │ │ │ ├── quick-lint-js-website-analytics.service │ │ │ └── quick-lint-js-website-analytics.timer │ │ ├── meta │ │ │ └── main.yml │ │ ├── tasks │ │ │ ├── install_website_analytics.yml │ │ │ └── main.yml │ │ ├── temp │ │ │ └── .gitignore │ │ └── templates │ │ │ └── quick-lint-js-website-analytics-config.json.j2 │ ├── apache │ │ ├── files │ │ │ ├── apache2.conf │ │ │ ├── mods-available │ │ │ │ ├── fcgid.conf │ │ │ │ ├── http2.conf │ │ │ │ └── mpm_event.conf │ │ │ ├── options-ssl-apache.conf │ │ │ └── ports.conf │ │ ├── meta │ │ │ └── main.yml │ │ ├── tasks │ │ │ └── main.yml │ │ └── templates │ │ │ ├── envvars.j2 │ │ │ └── sites-available │ │ │ ├── 001-quicklintjs.conf.j2 │ │ │ ├── 002-admin.quick-lint-js.com.conf.j2 │ │ │ ├── 003-c.quick-lint-js.conf.j2 │ │ │ ├── 003-quick-lint-js.com.conf.j2 │ │ │ └── default-ssl.conf.j2 │ ├── builds │ │ ├── files │ │ │ ├── prune-old-builds.py │ │ │ ├── quick-lint-js-prune-old-builds.service │ │ │ └── quick-lint-js-prune-old-builds.timer │ │ ├── meta │ │ │ └── main.yml │ │ └── tasks │ │ │ └── main.yml │ ├── chat │ │ ├── files │ │ │ ├── quick-lint-js-discord-irc-bridge.service │ │ │ └── quick-lint-js-irc-log.service │ │ ├── meta │ │ │ └── main.yml │ │ ├── tasks │ │ │ ├── install_go_discord_irc.yml │ │ │ └── main.yml │ │ └── templates │ │ │ └── go-discord-irc-config.yml.j2 │ ├── mariadb │ │ ├── meta │ │ │ └── main.yml │ │ └── tasks │ │ │ └── main.yml │ ├── matomo │ │ ├── files │ │ │ ├── quick-lint-js-matomo-log-sync.service │ │ │ ├── quick-lint-js-matomo-log-sync.sh │ │ │ └── quick-lint-js-matomo-log-sync.timer │ │ ├── meta │ │ │ └── main.yml │ │ └── tasks │ │ │ ├── install_matomo.yml │ │ │ ├── install_matomo_log_analytics.yml │ │ │ └── main.yml │ ├── nodejs │ │ ├── files │ │ │ └── nodesource.gpg │ │ ├── meta │ │ │ └── main.yml │ │ └── tasks │ │ │ └── main.yml │ └── php │ │ ├── meta │ │ └── main.yml │ │ └── tasks │ │ └── main.yml │ ├── vars.yml │ └── vault-dev.yml ├── plugin ├── README.txt ├── emacs │ ├── .gitignore │ ├── CMakeLists.txt │ ├── README.md │ ├── create-archive │ ├── eglot-quicklintjs.el │ ├── flycheck-quicklintjs.el │ ├── flymake-quicklintjs.el │ ├── lsp-quicklintjs.el │ ├── test-emacs.sh │ └── test │ │ ├── error.js │ │ ├── quicklintjs-test.el │ │ └── warning.js ├── vim │ ├── .gitignore │ ├── CMakeLists.txt │ ├── README.md │ ├── create-archive │ ├── quick-lint-js.vim │ │ ├── ale_linters │ │ │ ├── javascript │ │ │ │ └── quick_lint_js.vim │ │ │ └── typescript │ │ │ │ └── quick_lint_js.vim │ │ ├── autoload │ │ │ └── quick_lint_js_ale.vim │ │ ├── doc │ │ │ ├── quick-lint-js.txt │ │ │ └── tags │ │ ├── lua │ │ │ ├── lspconfig │ │ │ │ └── quick_lint_js.lua │ │ │ └── quick-lint-js.lua │ │ └── plugin │ │ │ └── quick-lint-js.vim │ ├── quick-lint-js.yaml │ ├── test-nvim.sh │ ├── test-vim.sh │ └── test.vim ├── vscode-lsp │ ├── .gitignore │ ├── .vscode │ │ └── launch.json │ ├── CHANGELOG.md │ ├── README.md │ ├── extension.js │ ├── package.json │ └── yarn.lock └── vscode │ ├── .gitignore │ ├── .vscode │ └── launch.json │ ├── .vscodeignore │ ├── BUILDING.md │ ├── CHANGELOG.md │ ├── CMakeLists.txt │ ├── LICENSE │ ├── LICENSE-icon.txt │ ├── PERFORMANCE-TRACING.md │ ├── README.md │ ├── demo.png │ ├── demo.webp │ ├── extension.js │ ├── icon.png │ ├── package.json │ ├── performance-writer.js │ ├── quick-lint-js-vscode-node.exports │ ├── quick-lint-js-vscode-node.map │ ├── quick-lint-js.config │ ├── quick-lint-js │ └── vscode │ │ ├── addon.cpp │ │ ├── addon.h │ │ ├── napi-support.h │ │ ├── qljs-document.cpp │ │ ├── qljs-document.h │ │ ├── qljs-logger.h │ │ ├── qljs-workspace.cpp │ │ ├── qljs-workspace.h │ │ ├── thread-safe-js-function.h │ │ ├── ui.cpp │ │ ├── ui.h │ │ ├── vscode-configuration-filesystem.h │ │ ├── vscode-diag-reporter.h │ │ ├── vscode-tracer.h │ │ └── vscode.h │ ├── test │ ├── empty_test_workspace │ │ └── .vscode │ │ │ └── settings.json │ ├── run-vscode-tests.js │ ├── test-support.js │ └── vscode-tests.js │ └── yarn.lock ├── po ├── README.md ├── de.po ├── en_US@snarky.po ├── fr_FR.po ├── messages.pot ├── pt_BR.po └── sv_SE.po ├── proofs ├── .gitignore ├── README.md ├── WindowsPipeReadThread.tla └── WindowsPipeReadThread.toolbox │ ├── .project │ ├── .settings │ └── org.lamport.tla.toolbox.prefs │ └── WindowsPipeReadThread___Model.launch ├── src ├── CMakeLists.txt ├── README.txt └── quick-lint-js │ ├── assert.cpp │ ├── assert.h │ ├── c-api-diag-reporter.cpp │ ├── c-api-diag-reporter.h │ ├── c-api.cpp │ ├── c-api.h │ ├── cli │ ├── README.txt │ ├── arg-parser.cpp │ ├── arg-parser.h │ ├── cli-location-debug.cpp │ ├── cli-location.cpp │ ├── cli-location.h │ ├── emacs-lisp-diag-reporter.cpp │ ├── emacs-lisp-diag-reporter.h │ ├── emacs-location-debug.cpp │ ├── emacs-location.cpp │ ├── emacs-location.h │ ├── main.cpp │ ├── options.cpp │ ├── options.h │ ├── quick-lint-js.rc │ ├── text-diag-reporter.cpp │ ├── text-diag-reporter.h │ ├── vim-location-debug.cpp │ ├── vim-location.cpp │ ├── vim-location.h │ ├── vim-qflist-json-diag-reporter.cpp │ └── vim-qflist-json-diag-reporter.h │ ├── configuration │ ├── README.txt │ ├── basic-configuration-filesystem.cpp │ ├── basic-configuration-filesystem.h │ ├── change-detecting-filesystem-inotify.cpp │ ├── change-detecting-filesystem-kqueue.cpp │ ├── change-detecting-filesystem-win32.cpp │ ├── change-detecting-filesystem.cpp │ ├── change-detecting-filesystem.h │ ├── configuration-loader.cpp │ ├── configuration-loader.h │ ├── configuration.cpp │ └── configuration.h │ ├── container │ ├── README.txt │ ├── allocator.h │ ├── async-byte-queue.cpp │ ├── async-byte-queue.h │ ├── byte-buffer.cpp │ ├── byte-buffer.h │ ├── c-string-list.h │ ├── concat.h │ ├── fixed-vector.h │ ├── flexible-array.h │ ├── hash-map.h │ ├── hash-set.h │ ├── hash.h │ ├── linked-bump-allocator.cpp │ ├── linked-bump-allocator.h │ ├── linked-vector.h │ ├── monotonic-allocator.h │ ├── optional.h │ ├── padded-string-debug.cpp │ ├── padded-string.cpp │ ├── padded-string.h │ ├── result.h │ ├── sorted-search.h │ ├── string-view.h │ ├── vector-profiler-debug.cpp │ ├── vector-profiler.cpp │ ├── vector-profiler.h │ ├── vector.h │ └── winkable.h │ ├── debug │ ├── .gitignore │ ├── debug-probe.cpp │ ├── debug-probe.h │ ├── debug-server-fs.cpp │ ├── debug-server-fs.h │ ├── debug-server.cpp │ ├── debug-server.h │ ├── find-debug-server.cpp │ ├── find-debug-server.h │ ├── mongoose.cpp │ ├── mongoose.h │ ├── package.json │ ├── public │ │ ├── index.html │ │ ├── index.mjs │ │ ├── lsp-replay.mjs │ │ ├── trace-generated.mjs │ │ └── trace.mjs │ ├── test │ │ ├── test-lsp-replay.mjs │ │ └── test-trace.mjs │ └── yarn.lock │ ├── diag │ ├── README.txt │ ├── diag-code-list.cpp │ ├── diag-code-list.h │ ├── diag-debug.cpp │ ├── diag-list-debug.cpp │ ├── diag-list.cpp │ ├── diag-list.h │ ├── diag-reporter.cpp │ ├── diag-reporter.h │ ├── diagnostic-formatter.cpp │ ├── diagnostic-formatter.h │ ├── diagnostic-metadata-generated.cpp │ ├── diagnostic-metadata-generated.h │ ├── diagnostic-types-2.h │ ├── diagnostic-types.h │ ├── diagnostic.cpp │ ├── diagnostic.h │ └── reported-diag-statistics.h │ ├── fe │ ├── README.txt │ ├── buffering-visitor-stack.h │ ├── buffering-visitor.cpp │ ├── buffering-visitor.h │ ├── debug-parse-visitor.h │ ├── expression.h │ ├── global-declared-variable-set.cpp │ ├── global-declared-variable-set.h │ ├── global-variables-browser-generated.cpp │ ├── global-variables.cpp │ ├── global-variables.h │ ├── identifier.h │ ├── jsx.cpp │ ├── jsx.h │ ├── keyword-lexer.cpp │ ├── keyword-lexer.h │ ├── keyword-list.h │ ├── language-debug.cpp │ ├── language.cpp │ ├── language.h │ ├── lex-debug.cpp │ ├── lex-keyword-generated.cpp │ ├── lex-unicode-generated.cpp │ ├── lex.cpp │ ├── lex.h │ ├── linter.cpp │ ├── linter.h │ ├── multi-parse-visitor.h │ ├── null-visitor.cpp │ ├── null-visitor.h │ ├── parse-class.cpp │ ├── parse-expression.cpp │ ├── parse-statement.cpp │ ├── parse-type.cpp │ ├── parse-visitor.h │ ├── parse.cpp │ ├── parse.h │ ├── source-code-span-debug.cpp │ ├── source-code-span.cpp │ ├── source-code-span.h │ ├── token.cpp │ ├── token.h │ ├── variable-analyzer.cpp │ └── variable-analyzer.h │ ├── feature.h │ ├── i18n │ ├── README.txt │ ├── locale.cpp │ ├── locale.h │ ├── po-parser-debug.cpp │ ├── po-parser.cpp │ ├── po-parser.h │ ├── translation-table-compiler.cpp │ ├── translation-table-compiler.h │ ├── translation-table-generated.cpp │ ├── translation-table-generated.h │ ├── translation-table-test-generated.h │ ├── translation-table.h │ ├── translation.cpp │ └── translation.h │ ├── io │ ├── README.txt │ ├── event-loop-kqueue.cpp │ ├── event-loop-poll.cpp │ ├── event-loop-windows.cpp │ ├── event-loop.cpp │ ├── event-loop.h │ ├── file-canonical.cpp │ ├── file-canonical.h │ ├── file-handle-posix.cpp │ ├── file-handle-win32.cpp │ ├── file-handle.h │ ├── file-path-debug.cpp │ ├── file-path.cpp │ ├── file-path.h │ ├── file.cpp │ ├── file.h │ ├── io-error.h │ ├── output-stream.cpp │ ├── output-stream.h │ ├── pipe-writer.cpp │ ├── pipe-writer.h │ ├── pipe.cpp │ ├── pipe.h │ ├── temporary-directory.cpp │ └── temporary-directory.h │ ├── json.cpp │ ├── json.h │ ├── logging │ ├── README.txt │ ├── log.h │ ├── logger.cpp │ ├── logger.h │ ├── trace-flusher-directory-backend.cpp │ ├── trace-flusher.cpp │ ├── trace-flusher.h │ ├── trace-metadata-generated.cpp │ ├── trace-metadata.h │ ├── trace-reader-generated.cpp │ ├── trace-reader-generated.h │ ├── trace-reader.cpp │ ├── trace-reader.h │ ├── trace-types.cpp │ ├── trace-types.h │ ├── trace-writer-generated.h │ ├── trace-writer.cpp │ └── trace-writer.h │ ├── lsp │ ├── README.txt │ ├── lsp-diag-reporter.cpp │ ├── lsp-diag-reporter.h │ ├── lsp-document-text.cpp │ ├── lsp-document-text.h │ ├── lsp-json-rpc-message-parser.cpp │ ├── lsp-json-rpc-message-parser.h │ ├── lsp-language.h │ ├── lsp-location-debug.cpp │ ├── lsp-location.cpp │ ├── lsp-location.h │ ├── lsp-message-parser.cpp │ ├── lsp-message-parser.h │ ├── lsp-pipe-writer.cpp │ ├── lsp-pipe-writer.h │ ├── lsp-server.cpp │ ├── lsp-server.h │ ├── lsp-uri.cpp │ ├── lsp-uri.h │ ├── lsp-workspace-configuration.cpp │ ├── lsp-workspace-configuration.h │ ├── outgoing-json-rpc-message-queue.cpp │ └── outgoing-json-rpc-message-queue.h │ ├── port │ ├── README.txt │ ├── attribute.h │ ├── bit.h │ ├── char8-debug.cpp │ ├── char8.cpp │ ├── char8.h │ ├── child-process.cpp │ ├── child-process.h │ ├── consteval.h │ ├── constinit.h │ ├── crash.h │ ├── endian.cpp │ ├── endian.h │ ├── function-ref.h │ ├── have.h │ ├── in-range.h │ ├── kqueue.h │ ├── limits.h │ ├── math.h │ ├── max-align.h │ ├── memory-resource.cpp │ ├── memory-resource.h │ ├── process.cpp │ ├── process.h │ ├── pty.cpp │ ├── pty.h │ ├── simd-neon-arm.h │ ├── simd.h │ ├── source-location.h │ ├── span.h │ ├── thread-name.cpp │ ├── thread-name.h │ ├── thread.cpp │ ├── thread.h │ ├── type-traits.h │ ├── unreachable.h │ ├── vector-erase.h │ ├── warning.h │ ├── windows-error.cpp │ ├── windows-error.h │ └── windows.h │ ├── reflection │ ├── README.txt │ ├── cxx-parser.cpp │ └── cxx-parser.h │ ├── simdjson-fwd.h │ ├── simdjson.cpp │ ├── simdjson.h │ ├── util │ ├── README.txt │ ├── algorithm.h │ ├── ascii.h │ ├── binary-reader.h │ ├── binary-writer.h │ ├── byte-order.h │ ├── cast.h │ ├── classify-path.cpp │ ├── classify-path.h │ ├── cpp.h │ ├── enum.h │ ├── float.cpp │ ├── float.h │ ├── instance-tracker.h │ ├── integer.cpp │ ├── integer.h │ ├── math-overflow.h │ ├── pointer.h │ ├── synchronized.h │ ├── try-catch-stack.h │ ├── type-traits.h │ ├── uri.cpp │ ├── uri.h │ ├── utf-16.cpp │ ├── utf-16.h │ ├── utf-8.cpp │ └── utf-8.h │ ├── version.h │ ├── vscode │ └── vscode-language.h │ ├── web-demo-location.cpp │ └── web-demo-location.h ├── test ├── CMakeLists.txt ├── README.md ├── js │ └── unicode.js ├── quick-lint-js │ ├── array.h │ ├── characters.h │ ├── diag-matcher.cpp │ ├── diag-matcher.h │ ├── diagnostic-assertion.cpp │ ├── diagnostic-assertion.h │ ├── dirty-set.h │ ├── failing-diag-reporter.cpp │ ├── failing-diag-reporter.h │ ├── fake-configuration-filesystem.cpp │ ├── fake-configuration-filesystem.h │ ├── file-matcher.h │ ├── filesystem-test.cpp │ ├── filesystem-test.h │ ├── gtest.h │ ├── identifier-support.h │ ├── lsp-support.h │ ├── mock-inotify.h │ ├── mock-kqueue.h │ ├── mock-win32.h │ ├── parse-support.cpp │ ├── parse-support.h │ ├── permissions.h │ ├── spy-lsp-endpoint-remote.h │ ├── spy-lsp-message-parser.h │ ├── spy-visitor.cpp │ ├── spy-visitor.h │ ├── tjson.cpp │ ├── tjson.h │ ├── tracking-memory-resource.h │ ├── variable-analyzer-support.cpp │ └── variable-analyzer-support.h ├── test-array.cpp ├── test-assert.cpp ├── test-async-byte-queue.cpp ├── test-bit.cpp ├── test-buffering-visitor-stack.cpp ├── test-buffering-visitor.cpp ├── test-byte-buffer.cpp ├── test-c-api.cpp ├── test-c-string-list.cpp ├── test-cli-location.cpp ├── test-cli.cpp ├── test-concat.cpp ├── test-configuration-loader.cpp ├── test-configuration.cpp ├── test-crash.cpp ├── test-cxx-parser.cpp ├── test-debug-server.cpp ├── test-diag-code-list.cpp ├── test-diag-list.cpp ├── test-diagnostic-assertion.cpp ├── test-diagnostic-formatter.cpp ├── test-diagnostic.cpp ├── test-dirty-set.cpp ├── test-emacs-lisp-diag-reporter.cpp ├── test-emacs-location.cpp ├── test-event-loop.cpp ├── test-file-canonical.cpp ├── test-file-path.cpp ├── test-file.cpp ├── test-fixed-vector.cpp ├── test-flexible-array.cpp ├── test-function-ref.cpp ├── test-instance-tracker.cpp ├── test-integer-decimal.cpp ├── test-integer-hexadecimal.cpp ├── test-json.cpp ├── test-lex-unicode.cpp ├── test-lex.cpp ├── test-linked-bump-allocator.cpp ├── test-linked-vector.cpp ├── test-locale.cpp ├── test-lsp-diag-reporter.cpp ├── test-lsp-document-text.cpp ├── test-lsp-json-rpc-message-parser.cpp ├── test-lsp-language.cpp ├── test-lsp-location.cpp ├── test-lsp-message-parser.cpp ├── test-lsp-pipe-writer.cpp ├── test-lsp-server.cpp ├── test-lsp-uri.cpp ├── test-lsp-workspace-configuration.cpp ├── test-math-overflow.cpp ├── test-narrow-cast.cpp ├── test-options.cpp ├── test-output-stream.cpp ├── test-padded-string.cpp ├── test-parse-class.cpp ├── test-parse-conditional-expression.cpp ├── test-parse-decorator.cpp ├── test-parse-expression-jsx.cpp ├── test-parse-expression-statement.cpp ├── test-parse-expression-typescript.cpp ├── test-parse-expression.cpp ├── test-parse-function.cpp ├── test-parse-jsx-react.cpp ├── test-parse-jsx.cpp ├── test-parse-loop.cpp ├── test-parse-module.cpp ├── test-parse-statement.cpp ├── test-parse-typescript-ambiguous.cpp ├── test-parse-typescript-angle-type-assertion.cpp ├── test-parse-typescript-class-overload.cpp ├── test-parse-typescript-class.cpp ├── test-parse-typescript-declare-class.cpp ├── test-parse-typescript-declare-function.cpp ├── test-parse-typescript-declare-global.cpp ├── test-parse-typescript-declare-interface.cpp ├── test-parse-typescript-declare-module.cpp ├── test-parse-typescript-declare-namespace.cpp ├── test-parse-typescript-declare-tsmodule.cpp ├── test-parse-typescript-declare-type-alias.cpp ├── test-parse-typescript-declare-var.cpp ├── test-parse-typescript-definition.cpp ├── test-parse-typescript-enum.cpp ├── test-parse-typescript-export-declare.cpp ├── test-parse-typescript-function-overload.cpp ├── test-parse-typescript-function.cpp ├── test-parse-typescript-generic-arrow.cpp ├── test-parse-typescript-generic.cpp ├── test-parse-typescript-interface.cpp ├── test-parse-typescript-module.cpp ├── test-parse-typescript-namespace.cpp ├── test-parse-typescript-object-type.cpp ├── test-parse-typescript-object.cpp ├── test-parse-typescript-statement.cpp ├── test-parse-typescript-this-parameters.cpp ├── test-parse-typescript-type-alias.cpp ├── test-parse-typescript-type.cpp ├── test-parse-typescript-var.cpp ├── test-parse-typescript.cpp ├── test-parse-var.cpp ├── test-parse-warning.cpp ├── test-parse.cpp ├── test-pipe-writer.cpp ├── test-po-parser.cpp ├── test-pointer.cpp ├── test-pty.cpp ├── test-result.cpp ├── test-simd.cpp ├── test-sorted-search.cpp ├── test-string-view.cpp ├── test-temporary-directory.cpp ├── test-text-diag-reporter.cpp ├── test-thread.cpp ├── test-tjson.cpp ├── test-trace-flusher.cpp ├── test-trace-reader-writer.cpp ├── test-trace-reader.cpp ├── test-trace-writer.cpp ├── test-tracking-memory-resource.cpp ├── test-translation-table-compiler.cpp ├── test-translation.cpp ├── test-try-catch-stack.cpp ├── test-typescript-test.cpp ├── test-utf-16.cpp ├── test-utf-8.cpp ├── test-variable-analyzer-arguments.cpp ├── test-variable-analyzer-assign.cpp ├── test-variable-analyzer-class.cpp ├── test-variable-analyzer-declare.cpp ├── test-variable-analyzer-delete.cpp ├── test-variable-analyzer-enum.cpp ├── test-variable-analyzer-eval.cpp ├── test-variable-analyzer-globals.cpp ├── test-variable-analyzer-interface.cpp ├── test-variable-analyzer-module.cpp ├── test-variable-analyzer-multiple-declarations.cpp ├── test-variable-analyzer-namespace.cpp ├── test-variable-analyzer-parse.cpp ├── test-variable-analyzer-type.cpp ├── test-variable-analyzer-typeof.cpp ├── test-variable-analyzer-unused-shadow.cpp ├── test-variable-analyzer.cpp ├── test-vector-profiler.cpp ├── test-vector.cpp ├── test-vim-location.cpp ├── test-vim-qflist-json-diag-reporter.cpp ├── test-vscode-language.cpp ├── test-web-demo-location.cpp ├── test-write-float.cpp └── test-write-integer.cpp ├── tools ├── .gitignore ├── CMakeLists.txt ├── README.txt ├── add-version-numbers-to-error-docs.py ├── analyze-trace.cpp ├── browser-globals │ ├── .gitignore │ ├── README.md │ ├── index.js │ ├── package.json │ └── yarn.lock ├── build-sizes │ ├── .gitignore │ ├── aggregate-binary-sizes │ ├── collect-many-binary-sizes.go │ ├── collect_binary_sizes.py │ ├── compare-builds.py │ ├── index.html │ ├── index.js │ └── quick-lint-js.config ├── check-esprima ├── check-file-copyrights ├── check-test262.go ├── check-test262_test.go ├── ci-analytics │ ├── .gitignore │ ├── README.md │ ├── github_api.go │ ├── go.mod │ ├── go.sum │ ├── load_github_actions.go │ ├── schema.go │ └── storage.go ├── collect-copyright ├── compile-translations.cpp ├── create-translation ├── files.sh ├── format ├── generate-diagnostic-metadata.cpp ├── generate-lex-keyword.cpp ├── generate-lex-unicode │ ├── .gitignore │ ├── index.js │ ├── package.json │ └── yarn.lock ├── generate-trace-sources.cpp ├── generate-vim-tags ├── gmo.bt ├── lines-of-code ├── qljs_external_test_suite.py ├── quick-lint-js │ └── generated-source.h ├── run-benchmarks-straglum.sh ├── templates │ ├── README.md │ ├── new.cpp │ ├── new.h │ ├── quick-lint-js-templates.vim │ └── test-new.cpp ├── test-all-js-engines ├── test-line-count.py ├── test-translation ├── test-typescript │ ├── CMakeLists.txt │ ├── main.cpp │ ├── quick-lint-js │ │ └── typescript-test.h │ └── typescript-test.cpp ├── trace.bt └── update-translator-sources ├── vendor ├── README.txt ├── benchmark.cmake ├── benchmark │ ├── .clang-format │ ├── .clang-tidy │ ├── .github │ │ ├── .libcxx-setup.sh │ │ ├── ISSUE_TEMPLATE │ │ │ ├── bug_report.md │ │ │ └── feature_request.md │ │ └── workflows │ │ │ ├── bazel.yml │ │ │ ├── build-and-test-perfcounters.yml │ │ │ ├── build-and-test.yml │ │ │ ├── clang-format-lint.yml │ │ │ ├── clang-tidy.yml │ │ │ ├── doxygen.yml │ │ │ ├── pylint.yml │ │ │ ├── sanitizer.yml │ │ │ ├── test_bindings.yml │ │ │ └── wheels.yml │ ├── .gitignore │ ├── .travis.yml │ ├── .ycm_extra_conf.py │ ├── AUTHORS │ ├── BUILD.bazel │ ├── CMakeLists.txt │ ├── CONTRIBUTING.md │ ├── CONTRIBUTORS │ ├── LICENSE │ ├── README.md │ ├── WORKSPACE │ ├── _config.yml │ ├── appveyor.yml │ ├── bindings │ │ └── python │ │ │ ├── BUILD │ │ │ ├── build_defs.bzl │ │ │ ├── google_benchmark │ │ │ ├── BUILD │ │ │ ├── __init__.py │ │ │ ├── benchmark.cc │ │ │ └── example.py │ │ │ ├── pybind11.BUILD │ │ │ ├── python_headers.BUILD │ │ │ └── requirements.txt │ ├── cmake │ │ ├── AddCXXCompilerFlag.cmake │ │ ├── CXXFeatureCheck.cmake │ │ ├── Config.cmake.in │ │ ├── GetGitVersion.cmake │ │ ├── GoogleTest.cmake │ │ ├── GoogleTest.cmake.in │ │ ├── Modules │ │ │ ├── FindLLVMAr.cmake │ │ │ ├── FindLLVMNm.cmake │ │ │ └── FindLLVMRanLib.cmake │ │ ├── benchmark.pc.in │ │ ├── gnu_posix_regex.cpp │ │ ├── llvm-toolchain.cmake │ │ ├── posix_regex.cpp │ │ ├── split_list.cmake │ │ ├── std_regex.cpp │ │ ├── steady_clock.cpp │ │ └── thread_safety_attributes.cpp │ ├── docs │ │ ├── AssemblyTests.md │ │ ├── _config.yml │ │ ├── dependencies.md │ │ ├── index.md │ │ ├── perf_counters.md │ │ ├── platform_specific_build_instructions.md │ │ ├── random_interleaving.md │ │ ├── releasing.md │ │ ├── tools.md │ │ └── user_guide.md │ ├── include │ │ └── benchmark │ │ │ └── benchmark.h │ ├── requirements.txt │ ├── setup.py │ ├── src │ │ ├── CMakeLists.txt │ │ ├── arraysize.h │ │ ├── benchmark.cc │ │ ├── benchmark_api_internal.cc │ │ ├── benchmark_api_internal.h │ │ ├── benchmark_main.cc │ │ ├── benchmark_name.cc │ │ ├── benchmark_register.cc │ │ ├── benchmark_register.h │ │ ├── benchmark_runner.cc │ │ ├── benchmark_runner.h │ │ ├── check.h │ │ ├── colorprint.cc │ │ ├── colorprint.h │ │ ├── commandlineflags.cc │ │ ├── commandlineflags.h │ │ ├── complexity.cc │ │ ├── complexity.h │ │ ├── console_reporter.cc │ │ ├── counter.cc │ │ ├── counter.h │ │ ├── csv_reporter.cc │ │ ├── cycleclock.h │ │ ├── internal_macros.h │ │ ├── json_reporter.cc │ │ ├── log.h │ │ ├── mutex.h │ │ ├── perf_counters.cc │ │ ├── perf_counters.h │ │ ├── re.h │ │ ├── reporter.cc │ │ ├── sleep.cc │ │ ├── sleep.h │ │ ├── statistics.cc │ │ ├── statistics.h │ │ ├── string_util.cc │ │ ├── string_util.h │ │ ├── sysinfo.cc │ │ ├── thread_manager.h │ │ ├── thread_timer.h │ │ ├── timers.cc │ │ └── timers.h │ ├── test │ │ ├── AssemblyTests.cmake │ │ ├── BUILD │ │ ├── CMakeLists.txt │ │ ├── args_product_test.cc │ │ ├── basic_test.cc │ │ ├── benchmark_gtest.cc │ │ ├── benchmark_name_gtest.cc │ │ ├── benchmark_random_interleaving_gtest.cc │ │ ├── benchmark_setup_teardown_test.cc │ │ ├── benchmark_test.cc │ │ ├── clobber_memory_assembly_test.cc │ │ ├── commandlineflags_gtest.cc │ │ ├── complexity_test.cc │ │ ├── cxx03_test.cc │ │ ├── diagnostics_test.cc │ │ ├── display_aggregates_only_test.cc │ │ ├── donotoptimize_assembly_test.cc │ │ ├── donotoptimize_test.cc │ │ ├── filter_test.cc │ │ ├── fixture_test.cc │ │ ├── internal_threading_test.cc │ │ ├── link_main_test.cc │ │ ├── map_test.cc │ │ ├── memory_manager_test.cc │ │ ├── multiple_ranges_test.cc │ │ ├── options_test.cc │ │ ├── output_test.h │ │ ├── output_test_helper.cc │ │ ├── perf_counters_gtest.cc │ │ ├── perf_counters_test.cc │ │ ├── register_benchmark_test.cc │ │ ├── repetitions_test.cc │ │ ├── report_aggregates_only_test.cc │ │ ├── reporter_output_test.cc │ │ ├── skip_with_error_test.cc │ │ ├── spec_arg_test.cc │ │ ├── state_assembly_test.cc │ │ ├── statistics_gtest.cc │ │ ├── string_util_gtest.cc │ │ ├── templated_fixture_test.cc │ │ ├── user_counters_tabular_test.cc │ │ ├── user_counters_test.cc │ │ └── user_counters_thousands_test.cc │ └── tools │ │ ├── BUILD.bazel │ │ ├── compare.py │ │ ├── gbench │ │ ├── Inputs │ │ │ ├── test1_run1.json │ │ │ ├── test1_run2.json │ │ │ ├── test2_run.json │ │ │ ├── test3_run0.json │ │ │ ├── test3_run1.json │ │ │ ├── test4_run.json │ │ │ ├── test4_run0.json │ │ │ └── test4_run1.json │ │ ├── __init__.py │ │ ├── report.py │ │ └── util.py │ │ ├── requirements.txt │ │ └── strip_asm.py ├── googletest-werror.patch ├── googletest.cmake ├── googletest │ ├── .clang-format │ ├── .github │ │ └── ISSUE_TEMPLATE │ │ │ ├── 00-bug_report.md │ │ │ ├── 10-feature_request.md │ │ │ └── config.yml │ ├── .gitignore │ ├── BUILD.bazel │ ├── CMakeLists.txt │ ├── CONTRIBUTING.md │ ├── CONTRIBUTORS │ ├── LICENSE │ ├── README.md │ ├── WORKSPACE │ ├── ci │ │ ├── linux-presubmit.sh │ │ └── macos-presubmit.sh │ ├── docs │ │ ├── _config.yml │ │ ├── _data │ │ │ └── navigation.yml │ │ ├── _layouts │ │ │ └── default.html │ │ ├── _sass │ │ │ └── main.scss │ │ ├── advanced.md │ │ ├── assets │ │ │ └── css │ │ │ │ └── style.scss │ │ ├── community_created_documentation.md │ │ ├── faq.md │ │ ├── gmock_cheat_sheet.md │ │ ├── gmock_cook_book.md │ │ ├── gmock_faq.md │ │ ├── gmock_for_dummies.md │ │ ├── index.md │ │ ├── pkgconfig.md │ │ ├── platforms.md │ │ ├── primer.md │ │ ├── quickstart-bazel.md │ │ ├── quickstart-cmake.md │ │ ├── reference │ │ │ ├── actions.md │ │ │ ├── assertions.md │ │ │ ├── matchers.md │ │ │ ├── mocking.md │ │ │ └── testing.md │ │ └── samples.md │ ├── googlemock │ │ ├── CMakeLists.txt │ │ ├── README.md │ │ ├── cmake │ │ │ ├── gmock.pc.in │ │ │ └── gmock_main.pc.in │ │ ├── docs │ │ │ └── README.md │ │ ├── include │ │ │ └── gmock │ │ │ │ ├── gmock-actions.h │ │ │ │ ├── gmock-cardinalities.h │ │ │ │ ├── gmock-function-mocker.h │ │ │ │ ├── gmock-matchers.h │ │ │ │ ├── gmock-more-actions.h │ │ │ │ ├── gmock-more-matchers.h │ │ │ │ ├── gmock-nice-strict.h │ │ │ │ ├── gmock-spec-builders.h │ │ │ │ ├── gmock.h │ │ │ │ └── internal │ │ │ │ ├── custom │ │ │ │ ├── README.md │ │ │ │ ├── gmock-generated-actions.h │ │ │ │ ├── gmock-matchers.h │ │ │ │ └── gmock-port.h │ │ │ │ ├── gmock-internal-utils.h │ │ │ │ ├── gmock-port.h │ │ │ │ └── gmock-pp.h │ │ ├── scripts │ │ │ ├── README.md │ │ │ ├── fuse_gmock_files.py │ │ │ └── generator │ │ │ │ ├── LICENSE │ │ │ │ ├── README │ │ │ │ ├── README.cppclean │ │ │ │ ├── cpp │ │ │ │ ├── __init__.py │ │ │ │ ├── ast.py │ │ │ │ ├── gmock_class.py │ │ │ │ ├── gmock_class_test.py │ │ │ │ ├── keywords.py │ │ │ │ ├── tokenize.py │ │ │ │ └── utils.py │ │ │ │ └── gmock_gen.py │ │ ├── src │ │ │ ├── gmock-all.cc │ │ │ ├── gmock-cardinalities.cc │ │ │ ├── gmock-internal-utils.cc │ │ │ ├── gmock-matchers.cc │ │ │ ├── gmock-spec-builders.cc │ │ │ ├── gmock.cc │ │ │ └── gmock_main.cc │ │ └── test │ │ │ ├── BUILD.bazel │ │ │ ├── gmock-actions_test.cc │ │ │ ├── gmock-cardinalities_test.cc │ │ │ ├── gmock-function-mocker_test.cc │ │ │ ├── gmock-internal-utils_test.cc │ │ │ ├── gmock-matchers_test.cc │ │ │ ├── gmock-more-actions_test.cc │ │ │ ├── gmock-nice-strict_test.cc │ │ │ ├── gmock-port_test.cc │ │ │ ├── gmock-pp-string_test.cc │ │ │ ├── gmock-pp_test.cc │ │ │ ├── gmock-spec-builders_test.cc │ │ │ ├── gmock_all_test.cc │ │ │ ├── gmock_ex_test.cc │ │ │ ├── gmock_leak_test.py │ │ │ ├── gmock_leak_test_.cc │ │ │ ├── gmock_link2_test.cc │ │ │ ├── gmock_link_test.cc │ │ │ ├── gmock_link_test.h │ │ │ ├── gmock_output_test.py │ │ │ ├── gmock_output_test_.cc │ │ │ ├── gmock_output_test_golden.txt │ │ │ ├── gmock_stress_test.cc │ │ │ ├── gmock_test.cc │ │ │ └── gmock_test_utils.py │ ├── googletest │ │ ├── CMakeLists.txt │ │ ├── README.md │ │ ├── cmake │ │ │ ├── Config.cmake.in │ │ │ ├── gtest.pc.in │ │ │ ├── gtest_main.pc.in │ │ │ ├── internal_utils.cmake │ │ │ └── libgtest.la.in │ │ ├── docs │ │ │ └── README.md │ │ ├── include │ │ │ └── gtest │ │ │ │ ├── gtest-death-test.h │ │ │ │ ├── gtest-matchers.h │ │ │ │ ├── gtest-message.h │ │ │ │ ├── gtest-param-test.h │ │ │ │ ├── gtest-printers.h │ │ │ │ ├── gtest-spi.h │ │ │ │ ├── gtest-test-part.h │ │ │ │ ├── gtest-typed-test.h │ │ │ │ ├── gtest.h │ │ │ │ ├── gtest_pred_impl.h │ │ │ │ ├── gtest_prod.h │ │ │ │ └── internal │ │ │ │ ├── custom │ │ │ │ ├── README.md │ │ │ │ ├── gtest-port.h │ │ │ │ ├── gtest-printers.h │ │ │ │ └── gtest.h │ │ │ │ ├── gtest-death-test-internal.h │ │ │ │ ├── gtest-filepath.h │ │ │ │ ├── gtest-internal.h │ │ │ │ ├── gtest-param-util.h │ │ │ │ ├── gtest-port-arch.h │ │ │ │ ├── gtest-port.h │ │ │ │ ├── gtest-string.h │ │ │ │ └── gtest-type-util.h │ │ ├── samples │ │ │ ├── prime_tables.h │ │ │ ├── sample1.cc │ │ │ ├── sample1.h │ │ │ ├── sample10_unittest.cc │ │ │ ├── sample1_unittest.cc │ │ │ ├── sample2.cc │ │ │ ├── sample2.h │ │ │ ├── sample2_unittest.cc │ │ │ ├── sample3-inl.h │ │ │ ├── sample3_unittest.cc │ │ │ ├── sample4.cc │ │ │ ├── sample4.h │ │ │ ├── sample4_unittest.cc │ │ │ ├── sample5_unittest.cc │ │ │ ├── sample6_unittest.cc │ │ │ ├── sample7_unittest.cc │ │ │ ├── sample8_unittest.cc │ │ │ └── sample9_unittest.cc │ │ ├── scripts │ │ │ ├── README.md │ │ │ ├── common.py │ │ │ ├── fuse_gtest_files.py │ │ │ ├── gen_gtest_pred_impl.py │ │ │ ├── gtest-config.in │ │ │ ├── release_docs.py │ │ │ ├── run_with_path.py │ │ │ ├── test │ │ │ │ └── Makefile │ │ │ ├── upload.py │ │ │ └── upload_gtest.py │ │ ├── src │ │ │ ├── gtest-all.cc │ │ │ ├── gtest-death-test.cc │ │ │ ├── gtest-filepath.cc │ │ │ ├── gtest-internal-inl.h │ │ │ ├── gtest-matchers.cc │ │ │ ├── gtest-port.cc │ │ │ ├── gtest-printers.cc │ │ │ ├── gtest-test-part.cc │ │ │ ├── gtest-typed-test.cc │ │ │ ├── gtest.cc │ │ │ └── gtest_main.cc │ │ └── test │ │ │ ├── BUILD.bazel │ │ │ ├── googletest-break-on-failure-unittest.py │ │ │ ├── googletest-break-on-failure-unittest_.cc │ │ │ ├── googletest-catch-exceptions-test.py │ │ │ ├── googletest-catch-exceptions-test_.cc │ │ │ ├── googletest-color-test.py │ │ │ ├── googletest-color-test_.cc │ │ │ ├── googletest-death-test-test.cc │ │ │ ├── googletest-death-test_ex_test.cc │ │ │ ├── googletest-env-var-test.py │ │ │ ├── googletest-env-var-test_.cc │ │ │ ├── googletest-failfast-unittest.py │ │ │ ├── googletest-failfast-unittest_.cc │ │ │ ├── googletest-filepath-test.cc │ │ │ ├── googletest-filter-unittest.py │ │ │ ├── googletest-filter-unittest_.cc │ │ │ ├── googletest-global-environment-unittest.py │ │ │ ├── googletest-global-environment-unittest_.cc │ │ │ ├── googletest-json-outfiles-test.py │ │ │ ├── googletest-json-output-unittest.py │ │ │ ├── googletest-list-tests-unittest.py │ │ │ ├── googletest-list-tests-unittest_.cc │ │ │ ├── googletest-listener-test.cc │ │ │ ├── googletest-message-test.cc │ │ │ ├── googletest-options-test.cc │ │ │ ├── googletest-output-test-golden-lin.txt │ │ │ ├── googletest-output-test.py │ │ │ ├── googletest-output-test_.cc │ │ │ ├── googletest-param-test-invalid-name1-test.py │ │ │ ├── googletest-param-test-invalid-name1-test_.cc │ │ │ ├── googletest-param-test-invalid-name2-test.py │ │ │ ├── googletest-param-test-invalid-name2-test_.cc │ │ │ ├── googletest-param-test-test.cc │ │ │ ├── googletest-param-test-test.h │ │ │ ├── googletest-param-test2-test.cc │ │ │ ├── googletest-port-test.cc │ │ │ ├── googletest-printers-test.cc │ │ │ ├── googletest-setuptestsuite-test.py │ │ │ ├── googletest-setuptestsuite-test_.cc │ │ │ ├── googletest-shuffle-test.py │ │ │ ├── googletest-shuffle-test_.cc │ │ │ ├── googletest-test-part-test.cc │ │ │ ├── googletest-throw-on-failure-test.py │ │ │ ├── googletest-throw-on-failure-test_.cc │ │ │ ├── googletest-uninitialized-test.py │ │ │ ├── googletest-uninitialized-test_.cc │ │ │ ├── gtest-typed-test2_test.cc │ │ │ ├── gtest-typed-test_test.cc │ │ │ ├── gtest-typed-test_test.h │ │ │ ├── gtest-unittest-api_test.cc │ │ │ ├── gtest_all_test.cc │ │ │ ├── gtest_assert_by_exception_test.cc │ │ │ ├── gtest_environment_test.cc │ │ │ ├── gtest_help_test.py │ │ │ ├── gtest_help_test_.cc │ │ │ ├── gtest_json_test_utils.py │ │ │ ├── gtest_list_output_unittest.py │ │ │ ├── gtest_list_output_unittest_.cc │ │ │ ├── gtest_main_unittest.cc │ │ │ ├── gtest_no_test_unittest.cc │ │ │ ├── gtest_pred_impl_unittest.cc │ │ │ ├── gtest_premature_exit_test.cc │ │ │ ├── gtest_prod_test.cc │ │ │ ├── gtest_repeat_test.cc │ │ │ ├── gtest_skip_check_output_test.py │ │ │ ├── gtest_skip_environment_check_output_test.py │ │ │ ├── gtest_skip_in_environment_setup_test.cc │ │ │ ├── gtest_skip_test.cc │ │ │ ├── gtest_sole_header_test.cc │ │ │ ├── gtest_stress_test.cc │ │ │ ├── gtest_test_macro_stack_footprint_test.cc │ │ │ ├── gtest_test_utils.py │ │ │ ├── gtest_testbridge_test.py │ │ │ ├── gtest_testbridge_test_.cc │ │ │ ├── gtest_throw_on_failure_ex_test.cc │ │ │ ├── gtest_unittest.cc │ │ │ ├── gtest_xml_outfile1_test_.cc │ │ │ ├── gtest_xml_outfile2_test_.cc │ │ │ ├── gtest_xml_outfiles_test.py │ │ │ ├── gtest_xml_output_unittest.py │ │ │ ├── gtest_xml_output_unittest_.cc │ │ │ ├── gtest_xml_test_utils.py │ │ │ ├── production.cc │ │ │ └── production.h │ └── library.json ├── mongoose-error-handling.patch ├── mongoose-mg_print_ip_port.patch ├── mongoose-windows-SO_EXCLUSIVEADDRUSE.patch ├── mongoose-windows-timeout.patch ├── mongoose.cmake ├── mongoose.h ├── mongoose │ ├── LICENSE │ ├── README.md │ ├── docs │ │ ├── README.md │ │ └── images │ │ │ ├── arch1.svg │ │ │ ├── arch2.svg │ │ │ ├── mg_commalist.svg │ │ │ ├── mg_http_get_request_len.svg │ │ │ ├── mg_http_message.svg │ │ │ ├── mg_http_next_multipart.svg │ │ │ ├── mg_http_part.svg │ │ │ ├── mg_http_reply.svg │ │ │ ├── mg_iobuf.svg │ │ │ ├── mg_iobuf_add1.svg │ │ │ ├── mg_iobuf_add2.svg │ │ │ └── mg_iobuf_del.svg │ └── src │ │ ├── arch.h │ │ ├── arch_azurertos.h │ │ ├── arch_esp32.h │ │ ├── arch_esp8266.h │ │ ├── arch_freertos.h │ │ ├── arch_newlib.h │ │ ├── arch_rp2040.h │ │ ├── arch_rtx.h │ │ ├── arch_tirtos.h │ │ ├── arch_unix.h │ │ ├── arch_win32.h │ │ ├── arch_zephyr.h │ │ ├── base64.c │ │ ├── base64.h │ │ ├── config.h │ │ ├── dns.c │ │ ├── dns.h │ │ ├── event.c │ │ ├── event.h │ │ ├── fmt.c │ │ ├── fmt.h │ │ ├── fs.c │ │ ├── fs.h │ │ ├── fs_fat.c │ │ ├── fs_packed.c │ │ ├── fs_posix.c │ │ ├── http.c │ │ ├── http.h │ │ ├── iobuf.c │ │ ├── iobuf.h │ │ ├── json.c │ │ ├── json.h │ │ ├── license.h │ │ ├── log.c │ │ ├── log.h │ │ ├── md5.c │ │ ├── md5.h │ │ ├── mqtt.c │ │ ├── mqtt.h │ │ ├── net.c │ │ ├── net.h │ │ ├── net_ft.h │ │ ├── net_lwip.h │ │ ├── net_rl.h │ │ ├── rpc.c │ │ ├── rpc.h │ │ ├── sha1.c │ │ ├── sha1.h │ │ ├── sntp.c │ │ ├── sntp.h │ │ ├── sock.c │ │ ├── ssi.c │ │ ├── ssi.h │ │ ├── str.c │ │ ├── str.h │ │ ├── timer.c │ │ ├── timer.h │ │ ├── tls.h │ │ ├── tls_dummy.c │ │ ├── tls_mbed.c │ │ ├── tls_mbed.h │ │ ├── tls_openssl.c │ │ ├── tls_openssl.h │ │ ├── url.c │ │ ├── url.h │ │ ├── util.c │ │ ├── util.h │ │ ├── version.h │ │ ├── ws.c │ │ └── ws.h ├── node-addon-api.cmake ├── node-addon-api │ ├── .clang-format │ ├── .editorconfig │ ├── .gitignore │ ├── .npmrc │ ├── .travis.yml │ ├── CHANGELOG.md │ ├── CODE_OF_CONDUCT.md │ ├── CONTRIBUTING.md │ ├── LICENSE.md │ ├── README.md │ ├── appveyor.yml │ ├── common.gypi │ ├── except.gypi │ ├── index.js │ ├── napi-inl.deprecated.h │ ├── napi-inl.h │ ├── napi.h │ ├── node_api.gyp │ ├── noexcept.gypi │ ├── nothing.c │ ├── package-support.json │ └── package.json ├── node-hook.cpp ├── node.cmake ├── node.def ├── node │ ├── AUTHORS │ ├── LICENSE │ ├── README.md │ └── src │ │ ├── js_native_api.h │ │ ├── js_native_api_types.h │ │ ├── node_api.h │ │ └── node_api_types.h ├── simdjson-asan-build-perf.patch ├── simdjson-cmake-version.patch ├── simdjson-smaller-number-parsing.patch ├── simdjson-warnings.patch ├── simdjson.cmake └── simdjson │ ├── .appveyor.yml │ ├── .circleci │ └── config.yml │ ├── .cirrus.yml │ ├── .clang-format │ ├── .dockerignore │ ├── .drone.yml │ ├── .github │ ├── ISSUE_TEMPLATE │ │ ├── bug_report.md │ │ ├── feature_request.md │ │ └── standard-issue-template.md │ ├── pull_request_template.md │ └── workflows │ │ ├── alpine.yml │ │ ├── fix-trailing-whitespace.yml │ │ ├── fuzzers.yml │ │ ├── macos-11.yml │ │ ├── macos.yml │ │ ├── mingw-ci.yml │ │ ├── mingw64-ci.yml │ │ ├── msys2-clang.yml │ │ ├── msys2.yml │ │ ├── power-fuzz.yml │ │ ├── ubuntu18-checkperf.yml │ │ ├── ubuntu18-oldclang.yml │ │ ├── ubuntu18-threadsani.yml │ │ ├── ubuntu18.yml │ │ ├── ubuntu20-checkperf.yml │ │ ├── ubuntu20-noexcept.yml │ │ ├── ubuntu20-nothread.yml │ │ ├── ubuntu20-sani.yml │ │ ├── ubuntu20-threadsani.yml │ │ ├── ubuntu20.yml │ │ ├── vs15-ci.yml │ │ ├── vs16-arm-ci.yml │ │ ├── vs16-ci.yml │ │ ├── vs16-clang-ci.yml │ │ ├── vs16-ninja-ci.yml │ │ └── vs16-noexcept-ci.yml │ ├── .travis.yml │ ├── .vscode │ ├── extensions.json │ └── settings.json │ ├── AUTHORS │ ├── CMakeLists.txt │ ├── CONTRIBUTING.md │ ├── CONTRIBUTORS │ ├── HACKING.md │ ├── LICENSE │ ├── README.md │ ├── RELEASES.md │ ├── cmake │ ├── add_compile_only_test.cmake │ ├── add_cpp_test.cmake │ ├── developer-options.cmake │ ├── exception-flags.cmake │ ├── handle-deprecations.cmake │ ├── implementation-flags.cmake │ ├── simdjson-config.cmake.in │ ├── simdjson-props.cmake │ └── simdjson-user-cmakecache.cmake │ ├── examples │ ├── CMakeLists.txt │ └── quickstart │ │ ├── CMakeLists.txt │ │ ├── Makefile │ │ ├── add_quickstart_test.cmake │ │ ├── quickstart.cpp │ │ ├── quickstart2.cpp │ │ ├── quickstart2_noexceptions.cpp │ │ ├── quickstart_noexceptions.cpp │ │ ├── quickstart_ondemand.cpp │ │ └── quickstart_ondemand_noexceptions.cpp │ ├── extra │ └── dumpbits.h │ ├── include │ ├── simdjson.h │ └── simdjson │ │ ├── arm64.h │ │ ├── arm64 │ │ ├── begin.h │ │ ├── bitmanipulation.h │ │ ├── bitmask.h │ │ ├── end.h │ │ ├── implementation.h │ │ ├── intrinsics.h │ │ ├── numberparsing.h │ │ ├── simd.h │ │ └── stringparsing.h │ │ ├── base.h │ │ ├── builtin.h │ │ ├── common_defs.h │ │ ├── compiler_check.h │ │ ├── dom.h │ │ ├── dom │ │ ├── array-inl.h │ │ ├── array.h │ │ ├── document-inl.h │ │ ├── document.h │ │ ├── document_stream-inl.h │ │ ├── document_stream.h │ │ ├── element-inl.h │ │ ├── element.h │ │ ├── jsonparser.h │ │ ├── object-inl.h │ │ ├── object.h │ │ ├── parsedjson.h │ │ ├── parsedjson_iterator-inl.h │ │ ├── parsedjson_iterator.h │ │ ├── parser-inl.h │ │ ├── parser.h │ │ ├── serialization-inl.h │ │ └── serialization.h │ │ ├── error-inl.h │ │ ├── error.h │ │ ├── fallback.h │ │ ├── fallback │ │ ├── begin.h │ │ ├── bitmanipulation.h │ │ ├── end.h │ │ ├── implementation.h │ │ ├── numberparsing.h │ │ └── stringparsing.h │ │ ├── generic │ │ ├── atomparsing.h │ │ ├── dom_parser_implementation.h │ │ ├── implementation_simdjson_result_base-inl.h │ │ ├── implementation_simdjson_result_base.h │ │ ├── jsoncharutils.h │ │ ├── numberparsing.h │ │ ├── ondemand-inl.h │ │ ├── ondemand.h │ │ ├── ondemand │ │ │ ├── array-inl.h │ │ │ ├── array.h │ │ │ ├── array_iterator-inl.h │ │ │ ├── array_iterator.h │ │ │ ├── document-inl.h │ │ │ ├── document.h │ │ │ ├── document_stream-inl.h │ │ │ ├── document_stream.h │ │ │ ├── field-inl.h │ │ │ ├── field.h │ │ │ ├── json_iterator-inl.h │ │ │ ├── json_iterator.h │ │ │ ├── json_type-inl.h │ │ │ ├── json_type.h │ │ │ ├── logger-inl.h │ │ │ ├── logger.h │ │ │ ├── object-inl.h │ │ │ ├── object.h │ │ │ ├── object_iterator-inl.h │ │ │ ├── object_iterator.h │ │ │ ├── parser-inl.h │ │ │ ├── parser.h │ │ │ ├── raw_json_string-inl.h │ │ │ ├── raw_json_string.h │ │ │ ├── serialization-inl.h │ │ │ ├── serialization.h │ │ │ ├── token_iterator-inl.h │ │ │ ├── token_iterator.h │ │ │ ├── token_position.h │ │ │ ├── value-inl.h │ │ │ ├── value.h │ │ │ ├── value_iterator-inl.h │ │ │ └── value_iterator.h │ │ └── stringparsing.h │ │ ├── haswell.h │ │ ├── haswell │ │ ├── begin.h │ │ ├── bitmanipulation.h │ │ ├── bitmask.h │ │ ├── end.h │ │ ├── implementation.h │ │ ├── intrinsics.h │ │ ├── numberparsing.h │ │ ├── simd.h │ │ └── stringparsing.h │ │ ├── implementation-base.h │ │ ├── implementation.h │ │ ├── implementations.h │ │ ├── internal │ │ ├── dom_parser_implementation.h │ │ ├── isadetection.h │ │ ├── jsoncharutils_tables.h │ │ ├── jsonformatutils.h │ │ ├── numberparsing_tables.h │ │ ├── simdprune_tables.h │ │ ├── tape_ref-inl.h │ │ ├── tape_ref.h │ │ └── tape_type.h │ │ ├── jsonioutil.h │ │ ├── minify.h │ │ ├── nonstd │ │ └── string_view.hpp │ │ ├── padded_string-inl.h │ │ ├── padded_string.h │ │ ├── padded_string_view-inl.h │ │ ├── padded_string_view.h │ │ ├── portability.h │ │ ├── ppc64.h │ │ ├── ppc64 │ │ ├── begin.h │ │ ├── bitmanipulation.h │ │ ├── bitmask.h │ │ ├── end.h │ │ ├── implementation.h │ │ ├── intrinsics.h │ │ ├── numberparsing.h │ │ ├── simd.h │ │ └── stringparsing.h │ │ ├── simdjson.h │ │ ├── simdjson_version.h │ │ ├── westmere.h │ │ └── westmere │ │ ├── begin.h │ │ ├── bitmanipulation.h │ │ ├── bitmask.h │ │ ├── end.h │ │ ├── implementation.h │ │ ├── intrinsics.h │ │ ├── numberparsing.h │ │ ├── simd.h │ │ └── stringparsing.h │ ├── scripts │ ├── addcmakeppa.sh │ ├── detect_nonascii_sourcefiles.py │ ├── dumpsimplestats.sh │ ├── javascript │ │ ├── README.md │ │ ├── generatelargejson.js │ │ ├── package-lock.json │ │ └── package.json │ ├── minifier.sh │ ├── parseandstat.sh │ ├── parser.sh │ ├── parsingcompdata.sh │ ├── plotparse.sh │ ├── remove_trailing_whitespace.sh │ ├── ruby │ │ └── kostya_large.rb │ ├── selectparser.sh │ ├── setupfortesting │ │ ├── disablehyperthreading.sh │ │ ├── powerpolicy.sh │ │ ├── setupfortesting.sh │ │ └── turboboost.sh │ ├── shootout.sh │ └── transitions │ │ ├── Makefile │ │ └── generatetransitions.cpp │ ├── src │ ├── arm64 │ │ ├── dom_parser_implementation.cpp │ │ └── implementation.cpp │ ├── fallback │ │ ├── dom_parser_implementation.cpp │ │ └── implementation.cpp │ ├── from_chars.cpp │ ├── generic │ │ ├── stage1 │ │ │ ├── buf_block_reader.h │ │ │ ├── find_next_document_index.h │ │ │ ├── json_minifier.h │ │ │ ├── json_scanner.h │ │ │ ├── json_string_scanner.h │ │ │ ├── json_structural_indexer.h │ │ │ ├── utf8_lookup4_algorithm.h │ │ │ └── utf8_validator.h │ │ └── stage2 │ │ │ ├── json_iterator.h │ │ │ ├── logger.h │ │ │ ├── structural_iterator.h │ │ │ ├── tape_builder.h │ │ │ └── tape_writer.h │ ├── haswell │ │ ├── dom_parser_implementation.cpp │ │ └── implementation.cpp │ ├── implementation.cpp │ ├── internal │ │ ├── error_tables.cpp │ │ ├── jsoncharutils_tables.cpp │ │ ├── numberparsing_tables.cpp │ │ └── simdprune_tables.cpp │ ├── ppc64 │ │ ├── dom_parser_implementation.cpp │ │ └── implementation.cpp │ ├── simdjson.cpp │ ├── to_chars.cpp │ └── westmere │ │ ├── dom_parser_implementation.cpp │ │ └── implementation.cpp │ ├── style │ ├── clang-format-check.sh │ ├── clang-format.sh │ └── run-clang-format.py │ ├── tools │ ├── CMakeLists.txt │ ├── json2json.cpp │ ├── jsonpointer.cpp │ ├── jsonstats.cpp │ ├── minify.cpp │ └── release.py │ └── windows │ ├── CMakeLists.txt │ ├── dirent_portable.h │ ├── getopt.h │ ├── toni_ronnko_dirent.h │ └── unistd.h ├── version └── website ├── .gitignore ├── .prettierignore ├── README.md ├── analytics ├── .gitignore ├── .npmignore ├── README.md ├── build.mjs ├── config.example.json ├── package.json ├── src │ ├── analytics-db.mjs │ ├── chart.html │ ├── config.mjs │ ├── data-to-rows.mjs │ ├── dump-page-transitions.mjs │ ├── import-apache-logs.mjs │ ├── import-matomo-logs.mjs │ ├── import-vscode-stats.mjs │ ├── make-charts.mjs │ ├── matomo-analytics-db.mjs │ └── parse-log-file.mjs ├── test │ ├── apache-escape.log │ ├── apache-junk.log │ ├── apache-malicious.log │ ├── example-apache.log │ ├── example-apache.log.gz │ ├── quick-lint-js.config │ ├── test-analytics-db.mjs │ ├── test-data-to-rows.mjs │ └── test-parse-log-file.mjs └── yarn.lock ├── backstop ├── .gitignore ├── README.md ├── backstop-hook.cjs ├── backstop.config.cjs ├── package.json └── yarn.lock ├── null-package └── README.md ├── package.json ├── public ├── .htaccess ├── arch-linux.svg ├── benchmarks │ ├── README.md │ ├── benchmark-lsp-json-to-html.mjs │ ├── benchmark.css │ ├── benchmark.mjs │ ├── full-change-wait-express-router-js.json │ ├── incremental-change-wait-express-router-js.json │ ├── incremental-change-wait-react-quickly-ch10-jsx.json │ └── index.ejs.html ├── biome.svg ├── blog │ ├── blog-head.ejs.html │ ├── bug-journey │ │ ├── hpwebcamable-repro.mp4 │ │ ├── index.ejs.html │ │ ├── original-bug-hovered.jpg │ │ ├── original-bug.jpg │ │ └── range-console-log.jpg │ ├── cpp-vs-rust-build-times │ │ ├── cargo-nextest-linux.svg │ │ ├── cargo-nextest-macos.svg │ │ ├── cpp-toolchains-linux.svg │ │ ├── cpp-toolchains-macos.svg │ │ ├── cpp-vs-rust-linux.svg │ │ ├── cpp-vs-rust-macos.svg │ │ ├── cpp-vs-rust-scale-full.svg │ │ ├── cpp-vs-rust-scale-incremental.svg │ │ ├── cpp-vs-rust.jpg │ │ ├── cranelift-vs-llvm.svg │ │ ├── index.ejs.html │ │ ├── optimized-rustc-flags.svg │ │ ├── rust-crate-features.svg │ │ ├── rust-layouts-full.svg │ │ ├── rust-layouts-incremental.svg │ │ ├── rust-linux-linker.svg │ │ ├── rust-macos-linker.svg │ │ ├── rust-toolchain.svg │ │ ├── twitter-poll.svg │ │ └── xkcd-303-compiling-cropped.png │ ├── feed.ejs.xml │ ├── index.ejs.html │ ├── index.mjs │ ├── show-js-errors-neovim-macos │ │ ├── index.ejs.html │ │ ├── neovim-demo-asdf.png │ │ ├── neovim-demo-signs-off.png │ │ ├── neovim-demo-signs-on.png │ │ ├── neovim-demo-update-in-insert.webp │ │ ├── neovim-demo-virtual-text-off.png │ │ ├── neovim-demo-virtual-text-on.png │ │ └── neovim-demo.png │ ├── syntax-errors-2021 │ │ └── index.ejs.html │ ├── version-1.0 │ │ └── index.ejs.html │ ├── version-2.0 │ │ ├── index.ejs.html │ │ └── vscode-jsx-demo.png │ ├── version-3.0 │ │ ├── index.ejs.html │ │ ├── installing-quick-lint-js.webp │ │ └── quick-lint-js-vs-eslint-vs-typescript-performance.webp │ └── why-another-javascript-linter │ │ ├── deno-cover.svg │ │ ├── eslint-bad-error-placement-still.png │ │ ├── eslint-bad-error-placement.webp │ │ ├── eslint-config-missing.png │ │ ├── eslint-esmodule-errors.png │ │ ├── eslint-jsx-old-config.png │ │ ├── eslint-lag-still.png │ │ ├── eslint-lag.webp │ │ ├── eslint-without-node-config.png │ │ ├── index.ejs.html │ │ ├── linters-showdown-1x.webp │ │ ├── linters-showdown-2x.webp │ │ ├── linters-showdown-splash.jpg │ │ ├── linters-showdown.svg │ │ ├── oxlint-editor-bug.png │ │ ├── quick-lint-js-benchmark-results.png │ │ ├── quick-lint-js-no-lag-still.png │ │ ├── quick-lint-js-no-lag.webp │ │ └── visual-studio-squigglies.png ├── blue-folder.svg ├── chocolatey.svg ├── cli.html ├── cli │ └── index.ejs.html ├── codespaces.png ├── common-footer-nav.ejs.html ├── common-head.ejs.html ├── common-nav.ejs.html ├── config │ └── index.ejs.html ├── contact │ └── index.ejs.html ├── contribute │ ├── authors │ │ └── index.ejs.html │ ├── build-from-source │ │ ├── cross-compiling │ │ │ └── index.ejs.html │ │ ├── index.ejs.html │ │ ├── linux │ │ │ └── index.ejs.html │ │ ├── macos │ │ │ └── index.ejs.html │ │ ├── nix │ │ │ └── index.ejs.html │ │ └── windows │ │ │ └── index.ejs.html │ ├── coding-standards │ │ └── index.ejs.html │ ├── create-diagnostic │ │ └── index.ejs.html │ ├── index.ejs.html │ ├── index.mjs │ └── submit │ │ └── index.ejs.html ├── crash-report │ └── index.ejs.html ├── debian.svg ├── demo │ ├── .gitignore │ ├── carat.svg │ ├── demo.mjs │ ├── index.ejs.html │ └── index.mjs ├── deno.svg ├── docs │ ├── index.ejs.html │ └── lsp │ │ └── index.ejs.html ├── dusty-right-256x256.png ├── dusty.svg ├── emacs.svg ├── error-box.mjs ├── errors │ ├── README.md │ ├── error.ejs.html │ ├── index.ejs.html │ ├── index.mjs │ └── jsx │ │ └── index.ejs.html ├── favicon-16x16.png ├── favicon-32x32.png ├── github.svg ├── gnome-terminal.svg ├── hiring.html ├── hiring │ └── index.ejs.html ├── homebrew.svg ├── index.ejs.html ├── index.mjs ├── install.html ├── install │ ├── cli │ │ ├── arch-linux │ │ │ └── index.ejs.html │ │ ├── chocolatey │ │ │ └── index.ejs.html │ │ ├── common-header.ejs.html │ │ ├── debian │ │ │ └── index.ejs.html │ │ ├── homebrew │ │ │ └── index.ejs.html │ │ ├── index.ejs.html │ │ ├── nix │ │ │ └── index.ejs.html │ │ ├── npm │ │ │ └── index.ejs.html │ │ ├── scoop │ │ │ └── index.ejs.html │ │ ├── static-linux │ │ │ └── index.ejs.html │ │ ├── static-macos │ │ │ └── index.ejs.html │ │ ├── static-windows │ │ │ └── index.ejs.html │ │ └── winget │ │ │ └── index.ejs.html │ ├── common-arch-linux.ejs.html │ ├── common-chocolatey.ejs.html │ ├── common-debian.ejs.html │ ├── common-homebrew.ejs.html │ ├── common-manual-tabs.ejs.html │ ├── common-nix.ejs.html │ ├── common-npm-prerequisites.ejs.html │ ├── common-scoop.ejs.html │ ├── common-static.ejs.html │ ├── common-winget.ejs.html │ ├── emacs │ │ ├── arch-linux │ │ │ └── index.ejs.html │ │ ├── chocolatey │ │ │ └── index.ejs.html │ │ ├── common-configure.ejs.html │ │ ├── common-head.ejs.html │ │ ├── common-header.ejs.html │ │ ├── common-manual.ejs.html │ │ ├── common-npm.ejs.html │ │ ├── common-prerequisites.ejs.html │ │ ├── configure │ │ │ └── index.ejs.html │ │ ├── debian │ │ │ └── index.ejs.html │ │ ├── homebrew │ │ │ └── index.ejs.html │ │ ├── index.ejs.html │ │ ├── nix │ │ │ └── index.ejs.html │ │ ├── npm-posix │ │ │ └── index.ejs.html │ │ ├── npm-windows │ │ │ └── index.ejs.html │ │ ├── scoop │ │ │ └── index.ejs.html │ │ ├── static-linux │ │ │ └── index.ejs.html │ │ ├── static-macos │ │ │ └── index.ejs.html │ │ ├── static-windows │ │ │ └── index.ejs.html │ │ └── winget │ │ │ └── index.ejs.html │ ├── index.ejs.html │ ├── kate │ │ ├── arch-linux │ │ │ └── index.ejs.html │ │ ├── chocolatey │ │ │ └── index.ejs.html │ │ ├── common-configure.ejs.html │ │ ├── common-head.ejs.html │ │ ├── common-header.ejs.html │ │ ├── common-npm.ejs.html │ │ ├── common-prerequisites.ejs.html │ │ ├── debian │ │ │ └── index.ejs.html │ │ ├── homebrew │ │ │ └── index.ejs.html │ │ ├── index.ejs.html │ │ ├── nix │ │ │ └── index.ejs.html │ │ ├── npm-posix │ │ │ └── index.ejs.html │ │ ├── npm-windows │ │ │ └── index.ejs.html │ │ ├── quick-lint-js-in-kate.png │ │ ├── scoop │ │ │ └── index.ejs.html │ │ ├── static-linux │ │ │ └── index.ejs.html │ │ ├── static-macos │ │ │ └── index.ejs.html │ │ ├── static-windows │ │ │ └── index.ejs.html │ │ └── winget │ │ │ └── index.ejs.html │ ├── neovim │ │ ├── arch-linux │ │ │ └── index.ejs.html │ │ ├── chocolatey │ │ │ └── index.ejs.html │ │ ├── common-configure.ejs.html │ │ ├── common-head.ejs.html │ │ ├── common-header.ejs.html │ │ ├── common-manual.ejs.html │ │ ├── common-npm.ejs.html │ │ ├── common-prerequisites.ejs.html │ │ ├── debian │ │ │ └── index.ejs.html │ │ ├── homebrew │ │ │ └── index.ejs.html │ │ ├── index.ejs.html │ │ ├── nix │ │ │ └── index.ejs.html │ │ ├── npm-posix │ │ │ └── index.ejs.html │ │ ├── npm-windows │ │ │ └── index.ejs.html │ │ ├── scoop │ │ │ └── index.ejs.html │ │ ├── static-linux │ │ │ └── index.ejs.html │ │ ├── static-macos │ │ │ └── index.ejs.html │ │ ├── static-windows │ │ │ └── index.ejs.html │ │ └── winget │ │ │ └── index.ejs.html │ ├── sublime │ │ ├── arch-linux │ │ │ └── index.ejs.html │ │ ├── chocolatey │ │ │ └── index.ejs.html │ │ ├── common-configure.ejs.html │ │ ├── common-head.ejs.html │ │ ├── common-header.ejs.html │ │ ├── common-prerequisites.ejs.html │ │ ├── debian │ │ │ └── index.ejs.html │ │ ├── homebrew │ │ │ └── index.ejs.html │ │ ├── index.ejs.html │ │ ├── lsp-config.png │ │ ├── nix │ │ │ └── index.ejs.html │ │ ├── scoop │ │ │ └── index.ejs.html │ │ ├── static-linux │ │ │ └── index.ejs.html │ │ ├── static-macos │ │ │ └── index.ejs.html │ │ ├── static-windows │ │ │ └── index.ejs.html │ │ └── winget │ │ │ └── index.ejs.html │ ├── vim │ │ ├── arch-linux │ │ │ └── index.ejs.html │ │ ├── chocolatey │ │ │ └── index.ejs.html │ │ ├── common-configure.ejs.html │ │ ├── common-head.ejs.html │ │ ├── common-header.ejs.html │ │ ├── common-manual.ejs.html │ │ ├── common-npm.ejs.html │ │ ├── common-prerequisites.ejs.html │ │ ├── debian │ │ │ └── index.ejs.html │ │ ├── homebrew │ │ │ └── index.ejs.html │ │ ├── index.ejs.html │ │ ├── nix │ │ │ └── index.ejs.html │ │ ├── npm-posix │ │ │ └── index.ejs.html │ │ ├── npm-windows │ │ │ └── index.ejs.html │ │ ├── scoop │ │ │ └── index.ejs.html │ │ ├── static-linux │ │ │ └── index.ejs.html │ │ ├── static-macos │ │ │ └── index.ejs.html │ │ ├── static-windows │ │ │ └── index.ejs.html │ │ └── winget │ │ │ └── index.ejs.html │ ├── vscode │ │ ├── index.ejs.html │ │ └── plugin │ │ │ └── index.ejs.html │ └── vscodium │ │ └── index.ejs.html ├── kate.svg ├── license.html ├── license │ ├── CC-BY-4.0.html │ ├── CC-BY-SA-4.0.html │ ├── arch-linux.svg.html │ ├── biome.svg.html │ ├── blue-folder.svg.html │ ├── chocolatey.svg.html │ ├── codespaces.png.html │ ├── debian.svg.html │ ├── deno.svg.html │ ├── dusty.svg.html │ ├── emacs.svg.html │ ├── gnome-terminal.svg.html │ ├── homebrew.svg.html │ ├── index.ejs.html │ ├── kate.svg.html │ ├── linux.svg.html │ ├── macos.svg.html │ ├── neovim.svg.html │ ├── nix.svg.html │ ├── notepad-plus-plus.svg.html │ ├── npm.svg.html │ ├── open-vsx.svg.html │ ├── oxc.png.html │ ├── paypal-word.svg.html │ ├── rust-cargo.png.html │ ├── rust-crab.svg.html │ ├── sublime-text.svg.html │ ├── typescript.svg.html │ ├── ubuntu.svg.html │ ├── vim.gif.html │ ├── vscode-codicon-error.svg.html │ ├── vscode-codicon-warning.svg.html │ ├── vscode.png.html │ ├── webstorm.svg.html │ └── windows.svg.html ├── linux.svg ├── macos.svg ├── main.css ├── merch │ ├── dusty-sticker-on-laptop.jpg │ ├── index.ejs.html │ └── paypal-word.svg ├── neovim.svg ├── nix.svg ├── notepad-plus-plus.svg ├── npm.svg ├── open-vsx.svg ├── oxc.png ├── releases │ ├── feed.ejs.xml │ ├── index.ejs.html │ └── index.mjs ├── robots.txt ├── rust-cargo.png ├── rust-crab.svg ├── sublime-text.svg ├── typescript.svg ├── ubuntu.svg ├── vim.gif ├── vscode-codicon-error.svg ├── vscode-codicon-warning.svg ├── vscode-demo-small.gif ├── vscode-demo.png ├── vscode-demo.webp ├── vscode.png ├── webstorm.svg └── windows.svg ├── quick-lint-js.config ├── run-build.mjs ├── run-server-worker.mjs ├── run-server.mjs ├── run-tests.mjs ├── src ├── config.mjs ├── custom-component.mjs ├── error-documentation.mjs ├── front-matter.mjs ├── fs.mjs ├── html-tag.mjs ├── html.mjs ├── markdown.mjs ├── net.mjs ├── qljs-version.mjs ├── release-documentation.mjs ├── router.mjs ├── server.mjs ├── sprite-sheet.mjs ├── timestamp.mjs ├── uri.mjs └── vfs.mjs ├── test ├── quick-lint-js.config ├── test-check-links.mjs ├── test-custom-component.mjs ├── test-error-documentation.mjs ├── test-release-documentation.mjs ├── test-server.mjs ├── test-sprite-sheet.mjs ├── test-timestamp.mjs └── test-vfs.mjs ├── tools ├── check-diagnostic-messages.mjs ├── check-error-documentation.mjs ├── check-links.mjs ├── deploy.sh └── error-doc-to-html.mjs ├── wasm ├── CMakeLists.txt ├── README.md ├── cli.js └── quick-lint-js.js └── yarn.lock /.git-bisect-ignore: -------------------------------------------------------------------------------- 1 | # This file lists Git commits which are likely uninteresting 2 | # when using 'git blame' or 'git bisect'. 3 | 4 | # Mass symbol renames: 5 | bc30c3fe051cdabb7844e48eba6c6eba0d38248b 6 | c78034750bc8a6e30efd7af0a7cc9f6c2979b942 7 | 309863e2a343b6d90401d7b92fb2084423620c5e 8 | -------------------------------------------------------------------------------- /.gitattributes: -------------------------------------------------------------------------------- 1 | # Configure GitHub's Linguist. 2 | # https://github.com/github-linguist/linguist/blob/master/docs/overrides.md 3 | *.h linguist-language=C++ 4 | /** -linguist-vendored 5 | /vendor/*/** linguist-vendored 6 | /vendor/*.patch linguist-detectable 7 | /benchmark/benchmark-lsp/corpus/** -linguist-detectable 8 | /** -linguist-documentation 9 | /docs/** linguist-documentation 10 | /docs/analytics/** -linguist-documentation 11 | /website/** linguist-documentation 12 | -------------------------------------------------------------------------------- /.github/docker/README.md: -------------------------------------------------------------------------------- 1 | # GitHub Actions Docker images 2 | 3 | This directory contains scripts for quick-lint-js' Docker images used by GitHub 4 | Actions workflows. 5 | 6 | ## Images 7 | 8 | * `quick-lint-js-github-cross-builder`: creates 9 | `ghcr.io/quick-lint/quick-lint-js-github-cross-builder` 10 | -------------------------------------------------------------------------------- /.github/docker/quick-lint-js-github-clang/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM debian:bullseye 2 | 3 | RUN \ 4 | sed -n -e 's/^deb /deb-src /p' /etc/apt/sources.list >/etc/apt/sources.list.d/quick-lint-js-sources.list && \ 5 | apt-get update && \ 6 | DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \ 7 | build-essential \ 8 | ca-certificates \ 9 | clang-13 \ 10 | cmake \ 11 | git \ 12 | libc++-13-dev \ 13 | libc++abi-13-dev \ 14 | libc6-dev \ 15 | libstdc++-10-dev \ 16 | ninja-build \ 17 | nodejs \ 18 | python3 19 | -------------------------------------------------------------------------------- /.github/docker/quick-lint-js-github-clang/README.md: -------------------------------------------------------------------------------- 1 | # quick-lint-js-github-clang Docker image 2 | 3 | ## Updating the Docker image 4 | 5 | Pick a version number for the new Docker image (e.g. `v3`), then run the 6 | following commands: 7 | 8 | $ docker build --tag ghcr.io/quick-lint/quick-lint-js-github-clang:VERSION_NUMBER_HERE .github/docker/quick-lint-js-github-clang/ 9 | $ docker login ghcr.io -u YOUR_GITHUB_USER_NAME_HERE 10 | $ docker push ghcr.io/quick-lint/quick-lint-js-github-clang:VERSION_NUMBER_HERE 11 | 12 | Then, change the container tag in each workflow file in the .github/workflows/ 13 | directory to refer to your new version. 14 | -------------------------------------------------------------------------------- /.github/docker/quick-lint-js-github-emacs/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM ghcr.io/quick-lint/quick-lint-js-github-gcc:v1 2 | 3 | RUN \ 4 | sed -n -e 's/^deb /deb-src /p' /etc/apt/sources.list >/etc/apt/sources.list.d/quick-lint-js-sources.list && \ 5 | apt-get update && \ 6 | DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \ 7 | emacs \ 8 | zip 9 | -------------------------------------------------------------------------------- /.github/docker/quick-lint-js-github-gcc/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM debian:bullseye 2 | 3 | RUN \ 4 | sed -n -e 's/^deb /deb-src /p' /etc/apt/sources.list >/etc/apt/sources.list.d/quick-lint-js-sources.list && \ 5 | apt-get update && \ 6 | DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \ 7 | ca-certificates \ 8 | cmake \ 9 | g++ \ 10 | git \ 11 | libc6-dev \ 12 | make \ 13 | ninja-build \ 14 | nodejs \ 15 | python3 16 | -------------------------------------------------------------------------------- /.github/docker/quick-lint-js-github-gcc/README.md: -------------------------------------------------------------------------------- 1 | # quick-lint-js-github-gcc Docker image 2 | 3 | ## Updating the Docker image 4 | 5 | Pick a version number for the new Docker image (e.g. `v3`), then run the 6 | following commands: 7 | 8 | $ docker build --tag ghcr.io/quick-lint/quick-lint-js-github-gcc:VERSION_NUMBER_HERE .github/docker/quick-lint-js-github-gcc/ 9 | $ docker login ghcr.io -u YOUR_GITHUB_USER_NAME_HERE 10 | $ docker push ghcr.io/quick-lint/quick-lint-js-github-gcc:VERSION_NUMBER_HERE 11 | 12 | Then, change the container tag in each workflow file in the .github/workflows/ 13 | directory to refer to your new version. 14 | -------------------------------------------------------------------------------- /.github/docker/quick-lint-js-github-go-builder/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM golang:1.17-alpine 2 | 3 | RUN apk add --update --no-cache \ 4 | git \ 5 | nodejs 6 | -------------------------------------------------------------------------------- /.github/docker/quick-lint-js-github-go-builder/README.md: -------------------------------------------------------------------------------- 1 | # quick-lint-js-github-go-builder Docker image 2 | 3 | ## Updating the Docker image 4 | 5 | Pick a version number for the new Docker image (e.g. `v3`), then run the 6 | following commands: 7 | 8 | $ docker build --tag ghcr.io/quick-lint/quick-lint-js-github-go-builder:VERSION_NUMBER_HERE .github/docker/quick-lint-js-github-go-builder/ 9 | $ docker login ghcr.io -u YOUR_GITHUB_USER_NAME_HERE 10 | $ docker push ghcr.io/quick-lint/quick-lint-js-github-go-builder:VERSION_NUMBER_HERE 11 | 12 | Then, change the container tag in each workflow file in the .github/workflows/ 13 | directory to refer to your new version. 14 | -------------------------------------------------------------------------------- /.github/docker/quick-lint-js-github-mingw-builder/.gitignore: -------------------------------------------------------------------------------- 1 | # Clone of https://github.com/quick-lint/llvm-mingw. Created by instructions in 2 | # README.md. 3 | /llvm-mingw/ 4 | -------------------------------------------------------------------------------- /.github/docker/quick-lint-js-github-vim/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM debian:bullseye 2 | 3 | RUN \ 4 | sed -n -e 's/^deb /deb-src /p' /etc/apt/sources.list >/etc/apt/sources.list.d/quick-lint-js-sources.list && \ 5 | apt-get update && \ 6 | DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \ 7 | ca-certificates \ 8 | git \ 9 | neovim \ 10 | nodejs \ 11 | vim \ 12 | zip 13 | -------------------------------------------------------------------------------- /.github/docker/quick-lint-js-github-vim/README.md: -------------------------------------------------------------------------------- 1 | # quick-lint-js-github-vim Docker image 2 | 3 | ## Updating the Docker image 4 | 5 | Pick a version number for the new Docker image (e.g. `v3`), then run the 6 | following commands: 7 | 8 | $ docker build --tag ghcr.io/quick-lint/quick-lint-js-github-vim:VERSION_NUMBER_HERE .github/docker/quick-lint-js-github-vim/ 9 | $ docker login ghcr.io -u YOUR_GITHUB_USER_NAME_HERE 10 | $ docker push ghcr.io/quick-lint/quick-lint-js-github-vim:VERSION_NUMBER_HERE 11 | 12 | Then, change the container tag in each workflow file in the .github/workflows/ 13 | directory to refer to your new version. 14 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # CMake build directory. Created by instructions in 2 | # website/public/contribute/build-from-source/... and plugin/vscode/BUILDING.md. 3 | /build-tools/ 4 | /build/ 5 | 6 | # Nix symlink. Created by instructions in docs/BUILDING.md. 7 | /result 8 | 9 | # Created by clangd after the project has been analyzed. 10 | /.cache/ 11 | 12 | # Relevant only to Dev Environment on Windows 13 | /.vs 14 | /out/build/* -------------------------------------------------------------------------------- /.vscode/README.md: -------------------------------------------------------------------------------- 1 | # .vscode 2 | 3 | This directory contains configuration for the Visual Studio Code editor. The 4 | configuration might be handy for contributors using that editor. 5 | 6 | This directory does *not* contain code for quick-lint-js's VS Code extension. 7 | That code lives in the ../plugin/vscode/ directory. 8 | 9 | * new-file.code-snippets: Templates for new files. To activate, either create 10 | a new document and click "fill with template", or choose "Snippets: Fill File 11 | with Snippet" from the command palette. 12 | -------------------------------------------------------------------------------- /.vscode/c_cpp_properties.json: -------------------------------------------------------------------------------- 1 | { 2 | "configurations": [ 3 | { 4 | "name": "Linux", 5 | "defines": [], 6 | "compilerPath": "/usr/bin/clang", 7 | "cppStandard": "c++20", 8 | "intelliSenseMode": "linux-clang-x64", 9 | "compileCommands": "${workspaceFolder}/build/compile_commands.json" 10 | } 11 | ], 12 | "version": 4 13 | } 14 | -------------------------------------------------------------------------------- /Formula/README.md: -------------------------------------------------------------------------------- 1 | # quick-lint-js Homebrew formula 2 | 3 | This directory contains formulae for the [Homebrew package manager][Homebrew]. 4 | 5 | For installation instructions, see quick-lint-js' [installation 6 | documentation](../docs/INSTALLING.md#macos-homebrew). 7 | 8 | [`quick-lint-js.rb` is synchronized with Homebrew 9 | core.](https://github.com/Homebrew/homebrew-core/blob/master/Formula/quick-lint-js.rb) 10 | 11 | [Homebrew]: https://brew.sh/ 12 | -------------------------------------------------------------------------------- /benchmark/benchmark-lsp/biome/.gitignore: -------------------------------------------------------------------------------- 1 | # Created by `yarn`. 2 | /node_modules/ 3 | -------------------------------------------------------------------------------- /benchmark/benchmark-lsp/biome/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "dependencies": { 3 | "@biomejs/biome": "*" 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /benchmark/benchmark-lsp/corpus/README.txt: -------------------------------------------------------------------------------- 1 | This directory contains files from other projects used to test performance of 2 | JavaScript linters. 3 | 4 | Sources: 5 | 6 | edex-ui-filesystem.class.js: https://github.com/GitSquared/edex-ui/blob/9df017315b5321eb60dad7a218a4bf2aace92017/src/classes/filesystem.class.js 7 | express-router.js: https://github.com/expressjs/express/blob/508936853a6e311099c9985d4c11a4b1b8f6af07/lib/router/index.js 8 | react-quickly-ch10.jsx: https://github.com/azat-co/react/blob/03f39f4fe5dffcc72fc9cfc4d7a984d9f4b2aa75/ch10/nile/app.jsx 9 | -------------------------------------------------------------------------------- /benchmark/benchmark-lsp/corpus/tiny.js: -------------------------------------------------------------------------------- 1 | require('node:fs'); 2 | if (false == true) undeclaredVariable.hasOwnProperty(); 3 | -------------------------------------------------------------------------------- /benchmark/benchmark-lsp/eslint/.gitignore: -------------------------------------------------------------------------------- 1 | # Created by `yarn`. 2 | /node_modules/ 3 | 4 | # Created by benchmarks. 5 | /*/test*.js 6 | -------------------------------------------------------------------------------- /benchmark/benchmark-lsp/eslint/airbnb/.eslintrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "env": { 3 | "browser": true, 4 | "es6": true, 5 | "node": true 6 | }, 7 | "parserOptions": { 8 | "ecmaVersion": 2017 9 | }, 10 | "extends": [ 11 | "airbnb-base" 12 | ] 13 | } 14 | -------------------------------------------------------------------------------- /benchmark/benchmark-lsp/eslint/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "dependencies": { 3 | "@typescript-eslint/eslint-plugin": "*", 4 | "@typescript-eslint/parser": "*", 5 | "eslint": "*", 6 | "eslint-config-airbnb-base": "*", 7 | "eslint-plugin-import": "*", 8 | "eslint-plugin-react": "*", 9 | "eslint-plugin-vue": "*", 10 | "typescript": "*", 11 | "vscode-eslint": "https://github.com/microsoft/vscode-eslint/archive/d3c7703cd11dc6752c96edf0f140d50156d72dd7.tar.gz" 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /benchmark/benchmark-lsp/eslint/react/.eslintrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "env": { 3 | "browser": true, 4 | "es6": true, 5 | "node": true 6 | }, 7 | "parserOptions": { 8 | "ecmaFeatures": { 9 | "jsx": true 10 | }, 11 | "ecmaVersion": 2017, 12 | "sourceType": "module" 13 | }, 14 | "settings": { 15 | "react": { 16 | "version": "17.0.2" 17 | } 18 | }, 19 | "extends": [ 20 | "eslint:recommended", 21 | "plugin:react/recommended" 22 | ], 23 | "plugins": [ 24 | "react" 25 | ] 26 | } 27 | -------------------------------------------------------------------------------- /benchmark/benchmark-lsp/eslint/typescript/.eslintrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "env": { 3 | "browser": true, 4 | "es6": true, 5 | "node": true 6 | }, 7 | "parser": "@typescript-eslint/parser", 8 | "parserOptions": { 9 | "ecmaVersion": 2017 10 | }, 11 | "extends": [ 12 | "eslint:recommended", 13 | "plugin:@typescript-eslint/recommended" 14 | ], 15 | "plugins": [ 16 | "@typescript-eslint" 17 | ] 18 | } 19 | -------------------------------------------------------------------------------- /benchmark/benchmark-lsp/eslint/vanilla/.eslintrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "env": { 3 | "browser": true, 4 | "es6": true, 5 | "node": true 6 | }, 7 | "parserOptions": { 8 | "ecmaVersion": 2017 9 | }, 10 | "extends": "eslint:recommended" 11 | } 12 | -------------------------------------------------------------------------------- /benchmark/benchmark-lsp/eslint/vue/.eslintrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "env": { 3 | "browser": true, 4 | "es6": true, 5 | "node": true 6 | }, 7 | "parserOptions": { 8 | "ecmaVersion": 2017 9 | }, 10 | "extends": [ 11 | "eslint:recommended", 12 | "plugin:vue/essential" 13 | ], 14 | "plugins": [ 15 | "vue" 16 | ] 17 | } 18 | -------------------------------------------------------------------------------- /benchmark/benchmark-lsp/flow/.flowconfig: -------------------------------------------------------------------------------- 1 | [options] 2 | all=true 3 | -------------------------------------------------------------------------------- /benchmark/benchmark-lsp/flow/.gitignore: -------------------------------------------------------------------------------- 1 | # Created by `yarn`. 2 | /node_modules/ 3 | -------------------------------------------------------------------------------- /benchmark/benchmark-lsp/flow/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "dependencies": { 3 | "flow-bin": "*" 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /benchmark/benchmark-lsp/flow/yarn.lock: -------------------------------------------------------------------------------- 1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. 2 | # yarn lockfile v1 3 | 4 | 5 | flow-bin@*: 6 | version "0.223.0" 7 | resolved "https://registry.yarnpkg.com/flow-bin/-/flow-bin-0.223.0.tgz#38fb6efd6c202b774d01834ded0620eb8eebad89" 8 | integrity sha512-E+GmTcBTPIRfnX/Dk19zJewX9grxoVQU+RG3Ypd/Os0OkUSOF7K3Sxo2I+8Oz1EpnPMGhnbM4WRAUuY0JaHRsw== 9 | -------------------------------------------------------------------------------- /benchmark/benchmark-lsp/oxc/.gitignore: -------------------------------------------------------------------------------- 1 | # Created by instructions in ../README.md. 2 | /extension/ 3 | /extension.vsixmanifest 4 | /\[Content_Types].xml 5 | 6 | # Created by benchmarks. 7 | /test*.js 8 | -------------------------------------------------------------------------------- /benchmark/benchmark-lsp/typescript-jsx/.gitignore: -------------------------------------------------------------------------------- 1 | # Created by `yarn`. 2 | /node_modules/ 3 | 4 | # Created by benchmarks. 5 | /test*.js 6 | -------------------------------------------------------------------------------- /benchmark/benchmark-lsp/typescript-jsx/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "dependencies": { 3 | "typescript": "*", 4 | "typescript-language-server": "*" 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /benchmark/benchmark-lsp/typescript-jsx/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "checkJs": true, 4 | "jsx": "react" 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /benchmark/benchmark-lsp/typescript/.gitignore: -------------------------------------------------------------------------------- 1 | # Created by `yarn`. 2 | /node_modules/ 3 | 4 | # Created by benchmarks. 5 | /test*.js 6 | -------------------------------------------------------------------------------- /benchmark/benchmark-lsp/typescript/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "dependencies": { 3 | "typescript": "*", 4 | "typescript-language-server": "*" 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /benchmark/benchmark-lsp/typescript/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "checkJs": true 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /cmake/README.txt: -------------------------------------------------------------------------------- 1 | This directory contains support routines for quick-lint-js' CMake-based build 2 | system. 3 | -------------------------------------------------------------------------------- /dist/README.txt: -------------------------------------------------------------------------------- 1 | This directory contains scripts for installing quick-lint-js with different 2 | package managers and on different operating systems. 3 | 4 | See docs/INSTALLING.md for installation instructions. 5 | 6 | Also see Formula/ for Homebrew package manager files. 7 | -------------------------------------------------------------------------------- /dist/apple/README.md: -------------------------------------------------------------------------------- 1 | This directory contains files related to distribution on Apple operating systems 2 | (such as macOS). 3 | 4 | ## `quick-lint-js.csreq` 5 | 6 | `quick-lint-js.csreq` is generated from the following command: 7 | 8 | $ csreq -r <(printf 'identifier "quick-lint-js" and certificate leaf = H"%s"\n' "$(openssl x509 -in ./dist/certificates/quick-lint-js.crt -outform der | shasum -a 1 | cut -c1-40)") -b dist/apple/quick-lint-js.csreq 9 | -------------------------------------------------------------------------------- /dist/apple/quick-lint-js.csreq: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quick-lint/quick-lint-js/f7519e7567b743fa06dd75580045fc2b06b10c7c/dist/apple/quick-lint-js.csreq -------------------------------------------------------------------------------- /dist/arch/.gitignore: -------------------------------------------------------------------------------- 1 | # Created by instructions in README.md. 2 | /pkg/ 3 | /quick-lint-js-*.pkg.tar.zst 4 | /quick-lint-js/ 5 | /src/ 6 | -------------------------------------------------------------------------------- /dist/arch/quick-lint-js.gpg.key: -------------------------------------------------------------------------------- 1 | ../certificates/quick-lint-js.gpg.key -------------------------------------------------------------------------------- /dist/artwork/dusty-app.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quick-lint/quick-lint-js/f7519e7567b743fa06dd75580045fc2b06b10c7c/dist/artwork/dusty-app.ico -------------------------------------------------------------------------------- /dist/artwork/dusty-color-guide.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quick-lint/quick-lint-js/f7519e7567b743fa06dd75580045fc2b06b10c7c/dist/artwork/dusty-color-guide.png -------------------------------------------------------------------------------- /dist/artwork/dusty-favicon-16x16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quick-lint/quick-lint-js/f7519e7567b743fa06dd75580045fc2b06b10c7c/dist/artwork/dusty-favicon-16x16.png -------------------------------------------------------------------------------- /dist/artwork/dusty-favicon-32x32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quick-lint/quick-lint-js/f7519e7567b743fa06dd75580045fc2b06b10c7c/dist/artwork/dusty-favicon-32x32.png -------------------------------------------------------------------------------- /dist/artwork/dusty-right-200x200.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quick-lint/quick-lint-js/f7519e7567b743fa06dd75580045fc2b06b10c7c/dist/artwork/dusty-right-200x200.png -------------------------------------------------------------------------------- /dist/artwork/dusty-right-256x256.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quick-lint/quick-lint-js/f7519e7567b743fa06dd75580045fc2b06b10c7c/dist/artwork/dusty-right-256x256.png -------------------------------------------------------------------------------- /dist/certificates/.gitignore: -------------------------------------------------------------------------------- 1 | /quick-lint-js-PRIVATE.gpg.key 2 | /quick-lint-js-PRIVATE.key 3 | /quick-lint-js-PRIVATE.p12 4 | -------------------------------------------------------------------------------- /dist/certificates/old/DigiCertTrustedRootG4.crt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quick-lint/quick-lint-js/f7519e7567b743fa06dd75580045fc2b06b10c7c/dist/certificates/old/DigiCertTrustedRootG4.crt -------------------------------------------------------------------------------- /dist/certificates/old/quick-lint-js.cer: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quick-lint/quick-lint-js/f7519e7567b743fa06dd75580045fc2b06b10c7c/dist/certificates/old/quick-lint-js.cer -------------------------------------------------------------------------------- /dist/chocolatey/_rels/.rels: -------------------------------------------------------------------------------- 1 | 2 | 3 | 7 | 11 | 12 | -------------------------------------------------------------------------------- /dist/chocolatey/tools/VERIFICATION.txt: -------------------------------------------------------------------------------- 1 | VERIFICATION 2 | Verification is intended to assist the Chocolatey moderators and community 3 | in verifying that this package's contents are trustworthy. 4 | 5 | I, Matthew "strager" Glazar, am the software vendor who packaged this software 6 | for Chocolatey. 7 | 8 | Upstream SHA256 checksums: https://c.quick-lint-js.com/releases/3.2.0/SHA256SUMS 9 | GPG signature: https://c.quick-lint-js.com/releases/3.2.0/SHA256SUMS.asc 10 | -------------------------------------------------------------------------------- /dist/chocolatey/tools/chocolateyinstall.template.ps1: -------------------------------------------------------------------------------- 1 | $ErrorActionPreference = 'Stop'; 2 | $toolsDir = "$(Split-Path -parent $MyInvocation.MyCommand.Definition)" 3 | 4 | $packageArgs = @{ 5 | packageName = $env:ChocolateyPackageName 6 | destination = $toolsDir 7 | fileFullPath = Join-Path $toolsDir '{{ .X86_ZIPPath }}' 8 | fileFullPath64 = Join-Path $toolsDir '{{ .X64_ZIPPath }}' 9 | } 10 | 11 | Get-ChocolateyUnzip @packageArgs 12 | 13 | Remove-Item -Force -Path $packageArgs.fileFullPath 14 | Remove-Item -Force -Path $packageArgs.fileFullPath64 15 | -------------------------------------------------------------------------------- /dist/debian/.gitignore: -------------------------------------------------------------------------------- 1 | # Created by build.sh. 2 | /build/ 3 | -------------------------------------------------------------------------------- /dist/debian/debian/compat: -------------------------------------------------------------------------------- 1 | 12 2 | -------------------------------------------------------------------------------- /dist/debian/debian/compat-bionic: -------------------------------------------------------------------------------- 1 | 9 2 | -------------------------------------------------------------------------------- /dist/debian/debian/quick-lint-js-vim.install: -------------------------------------------------------------------------------- 1 | usr/share/nvim usr/share 2 | usr/share/vim usr/share 3 | -------------------------------------------------------------------------------- /dist/debian/debian/quick-lint-js-vim.postinst: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # postinst script for quick-lint-js-vim 3 | # 4 | # see: dh_installdeb(1) 5 | 6 | set -e 7 | 8 | case "$1" in 9 | configure) 10 | vim-addon-manager --system-wide install quick-lint-js 11 | ;; 12 | 13 | abort-deconfigure|abort-remove|abort-upgrade) 14 | ;; 15 | 16 | *) 17 | echo "postinst called with unknown argument \`$1'" >&2 18 | exit 1 19 | ;; 20 | esac 21 | 22 | #DEBHELPER# 23 | 24 | exit 0 25 | -------------------------------------------------------------------------------- /dist/debian/debian/quick-lint-js-vim.preinst: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # preinst script for quick-lint-js-vim 3 | # 4 | # see: dh_installdeb(1) 5 | 6 | set -e 7 | 8 | case "$1" in 9 | install|upgrade) 10 | case "$(vim-addon-manager --query --system-wide status quick-lint-js)" in 11 | *installed) 12 | vim-addon-manager --system-wide remove quick-lint-js 13 | ;; 14 | esac 15 | ;; 16 | 17 | abort-upgrade) 18 | ;; 19 | 20 | *) 21 | echo "preinst called with unknown argument \`$1'" >&2 22 | exit 1 23 | ;; 24 | esac 25 | 26 | #DEBHELPER# 27 | 28 | exit 0 29 | -------------------------------------------------------------------------------- /dist/debian/debian/quick-lint-js-vim.prerm: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # prerm script for quick-lint-js-vim 3 | # 4 | # see: dh_installdeb(1) 5 | 6 | set -e 7 | 8 | case "$1" in 9 | deconfigure|remove|upgrade) 10 | vim-addon-manager --system-wide remove quick-lint-js 11 | ;; 12 | 13 | failed-upgrade) 14 | ;; 15 | 16 | *) 17 | echo "prerm called with unknown argument \`$1'" >&2 18 | exit 1 19 | ;; 20 | esac 21 | 22 | #DEBHELPER# 23 | 24 | exit 0 25 | -------------------------------------------------------------------------------- /dist/debian/debian/quick-lint-js.install: -------------------------------------------------------------------------------- 1 | usr/bin usr 2 | usr/share/bash-completion usr/share 3 | usr/share/emacs/site-lisp usr/share/emacs 4 | usr/share/fish usr/share 5 | usr/share/icons usr/share 6 | usr/share/man usr/share 7 | usr/share/metainfo usr/share 8 | usr/share/zsh usr/share 9 | -------------------------------------------------------------------------------- /dist/debian/debian/source/format: -------------------------------------------------------------------------------- 1 | 3.0 (quilt) 2 | -------------------------------------------------------------------------------- /dist/debian/debian/source/lintian-overrides: -------------------------------------------------------------------------------- 1 | quick-lint-js source: source-is-missing benchmark/benchmark-lsp/corpus/edex-ui-filesystem.class.js 2 | quick-lint-js source: source-contains-prebuilt-javascript-object benchmark/benchmark-lsp/corpus/edex-ui-filesystem.class.js 3 | -------------------------------------------------------------------------------- /dist/debian/debian/source/lintian-overrides-bionic: -------------------------------------------------------------------------------- 1 | # This control file is for older Debian distributions such as Ubuntu 18.04 2 | # Bionic. 3 | 4 | quick-lint-js source: source-contains-prebuilt-javascript-object benchmark/benchmark-lsp/corpus/edex-ui-filesystem.class.js 5 | quick-lint-js source: source-is-missing benchmark/benchmark-lsp/corpus/edex-ui-filesystem.class.js line length is 545 characters (>512) 6 | 7 | quick-lint-js source: package-uses-deprecated-debhelper-compat-version 9 8 | -------------------------------------------------------------------------------- /dist/debian/debian/upstream/metadata: -------------------------------------------------------------------------------- 1 | Bug-Database: https://github.com/quick-lint/quick-lint-js/issues 2 | Bug-Submit: https://github.com/quick-lint/quick-lint-js/issues/new 3 | Changelog: https://quick-lint-js.com/releases/ 4 | Documentation: https://quick-lint-js.com/docs/ 5 | Donation: https://github.com/sponsors/quick-lint 6 | Repository-Browse: https://github.com/quick-lint/quick-lint-js 7 | Repository: https://github.com/quick-lint/quick-lint-js.git 8 | Webservice: https://quick-lint-js.com/demo/ 9 | -------------------------------------------------------------------------------- /dist/debian/debian/upstream/signing-key.pgp: -------------------------------------------------------------------------------- 1 | ../../../certificates/quick-lint-js.gpg.key -------------------------------------------------------------------------------- /dist/debian/debian/watch: -------------------------------------------------------------------------------- 1 | version=4 2 | 3 | opts="pgpmode=next" https://c.quick-lint-js.com/releases/latest/source/ quick-lint-js-@ANY_VERSION@@ARCHIVE_EXT@ debian 4 | opts="pgpmode=previous" https://c.quick-lint-js.com/releases/latest/source/ quick-lint-js-@ANY_VERSION@@SIGNATURE_EXT@ previous 5 | -------------------------------------------------------------------------------- /dist/msix/images/Square150x150Logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quick-lint/quick-lint-js/f7519e7567b743fa06dd75580045fc2b06b10c7c/dist/msix/images/Square150x150Logo.png -------------------------------------------------------------------------------- /dist/msix/images/Square44x44Logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quick-lint/quick-lint-js/f7519e7567b743fa06dd75580045fc2b06b10c7c/dist/msix/images/Square44x44Logo.png -------------------------------------------------------------------------------- /dist/msix/images/StoreLogo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quick-lint/quick-lint-js/f7519e7567b743fa06dd75580045fc2b06b10c7c/dist/msix/images/StoreLogo.png -------------------------------------------------------------------------------- /dist/msix/mapping.template.txt: -------------------------------------------------------------------------------- 1 | [Files] 2 | "AppxManifest.xml" "AppxManifest.xml" 3 | "images/Square150x150Logo.png" "images/Square150x150Logo.png" 4 | "images/Square44x44Logo.png" "images/Square44x44Logo.png" 5 | "images/StoreLogo.png" "images/StoreLogo.png" 6 | 7 | "{{ .EXE }}" "quick-lint-js.exe" 8 | "{{ .License }}" "LICENSE.txt" 9 | -------------------------------------------------------------------------------- /dist/npm/.gitignore: -------------------------------------------------------------------------------- 1 | /*-*/ 2 | -------------------------------------------------------------------------------- /dist/npm/quick-lint-js.exe: -------------------------------------------------------------------------------- 1 | This file gets overwritten by preinstall.js. 2 | 3 | Without this file, Yarn does not always create a symlink to quick-lint-js.exe 4 | upon installation. 5 | -------------------------------------------------------------------------------- /dist/webinstaller/README.md: -------------------------------------------------------------------------------- 1 | # quick-lint-js webinstaller manifest 2 | 3 | This directory contains manifests for [webinstaller](https://webinstall.dev/), a developer tools installer. 4 | 5 | The `make-webinstaller-manifest.js` script creates the output file with the appropriate release version number and its release date. 6 | 7 | ## Manually building the manifest 8 | 9 | Run: 10 | 11 | ```sh 12 | node dist/webinstaller/make-webinstaller-manifest.js -releaseVersion VERSION -releaseDate RELEASE_DATE -Out OUTPUT_FILE.json 13 | ``` 14 | -------------------------------------------------------------------------------- /dist/winget/quick-lint.quick-lint-js.template.yaml: -------------------------------------------------------------------------------- 1 | # To the extent possible under law, Matthew "strager" Glazar 2 | # has waived all copyright and related or neighboring rights 3 | # to _quick-lint-js winget manifests_. This work is 4 | # published from United States. 5 | # http://creativecommons.org/publicdomain/zero/1.0/ 6 | 7 | PackageIdentifier: quick-lint.quick-lint-js 8 | PackageVersion: 3.2.0.0 9 | 10 | DefaultLocale: en-US 11 | ManifestType: version 12 | ManifestVersion: 1.1.0 13 | -------------------------------------------------------------------------------- /docs/INSTALLING.md: -------------------------------------------------------------------------------- 1 | # Installing quick-lint-js 2 | 3 | For quick-lint-js installation instructions, see the [installation 4 | instructions](https://quick-lint-js.com/install/) on the website. 5 | 6 | For instructions on building quick-lint-js, see [BUILDING 7 | instructions][build-from-source] for developers 8 | 9 | [build-from-source]: https://quick-lint-js.com/contribute/build-from-source/ 10 | -------------------------------------------------------------------------------- /docs/RELEASE.md: -------------------------------------------------------------------------------- 1 | # Releasing quick-lint-js 2 | 3 | To release a new version of quick-lint-js, run the `dist/release.go` tool: 4 | 5 | # Replace '1.2.3' with the desired version number. 6 | $ go run dist/release.go 1.2.3 7 | -------------------------------------------------------------------------------- /docs/errors/E0002.md: -------------------------------------------------------------------------------- 1 | # E0002: assignment to const global variable 2 | 3 | `Infinity`, `NaN`, and `undefined` are global variables which cannot be changed. 4 | Assignments to these variables are silently ignored. 5 | 6 | ```javascript 7 | NaN = 0; 8 | undefined = null; 9 | ``` 10 | 11 | To fix this error, pick a different variable to assign to. 12 | 13 | Introduced in quick-lint-js version 0.2.0. 14 | -------------------------------------------------------------------------------- /docs/errors/E0005.md: -------------------------------------------------------------------------------- 1 | # E0005: BigInt literal contains decimal point 2 | 3 | `BigInt` literals are number literals with an `n` suffix. These literals must 4 | represent integers and cannot contain a decimal point (`.`). 5 | 6 | ```javascript 7 | let gallons = 3.50n; 8 | let pennies = 100.00n; 9 | ``` 10 | 11 | To fix this error, make the number literal a `Number` literal by removing the 12 | `n` suffix, or remove the fractional portion of the number: 13 | 14 | ```javascript 15 | let gallons = 3.50; 16 | let pennies = 100n; 17 | ``` 18 | 19 | Introduced in quick-lint-js version 0.2.0. 20 | -------------------------------------------------------------------------------- /docs/errors/E0006.md: -------------------------------------------------------------------------------- 1 | # E0006: BigInt literal contains exponent 2 | 3 | `BigInt` literals are number literals with an `n` suffix. These literals must 4 | represent integers and cannot contain exponents (`e`). 5 | 6 | ```javascript 7 | let atomDiameter = 1e-10n; 8 | let score = 1e2n; 9 | ``` 10 | 11 | To fix this error, make the number literal a `Number` literal by removing the 12 | `n` suffix, or expand the exponent of the number: 13 | 14 | ```javascript 15 | let atomDiameter = 1e-10; 16 | let score = 100n; 17 | ``` 18 | 19 | Introduced in quick-lint-js version 0.2.0. 20 | -------------------------------------------------------------------------------- /docs/errors/E0007.md: -------------------------------------------------------------------------------- 1 | # E0007: classes cannot be named 'let' 2 | 3 | Classes declared with `class` cannot be named `let`. 4 | 5 | ```javascript 6 | class let { 7 | bark() { 8 | console.log("woof"); 9 | } 10 | } 11 | ``` 12 | 13 | To fix this error, name the class something other than `let`, or declare the 14 | class with `var`: 15 | 16 | ```javascript 17 | class Dog { 18 | bark() { 19 | console.log("woof"); 20 | } 21 | } 22 | 23 | var let = class { 24 | bark() { 25 | console.log("woof"); 26 | } 27 | }; 28 | ``` 29 | 30 | Introduced in quick-lint-js version 0.2.0. 31 | -------------------------------------------------------------------------------- /docs/errors/E0008.md: -------------------------------------------------------------------------------- 1 | # E0008: let statement cannot declare variables named 'let' 2 | 3 | Variables declared with `let` cannot be named `let`. 4 | 5 | ```javascript 6 | function getLotNumber() { return 42; } 7 | 8 | let let = getLotNumber(); 9 | console.log(let); 10 | ``` 11 | 12 | To fix this error, name the variable something other than `let`, or declare the 13 | variable with `var`: 14 | 15 | ```javascript 16 | function getLotNumber() { return 42; } 17 | 18 | let lot = getLotNumber(); 19 | console.log(lot); 20 | 21 | var let = getLotNumber(); 22 | console.log(let); 23 | ``` 24 | 25 | Introduced in quick-lint-js version 0.2.0. 26 | -------------------------------------------------------------------------------- /docs/errors/E0009.md: -------------------------------------------------------------------------------- 1 | # E0009: cannot export variable named 'let' 2 | 3 | An exported function cannot be named `let`: 4 | 5 | ```javascript 6 | export function let() { 7 | console.log("access permitted"); 8 | } 9 | ``` 10 | 11 | To fix this error, name the function something other than `let`, or declare the 12 | function separately with a different name and use `export`-`as`: 13 | 14 | ```javascript 15 | export function allow() { 16 | console.log("access permitted"); 17 | } 18 | 19 | function allowAccess() { 20 | console.log("access permitted"); 21 | } 22 | export { allowAccess as let }; 23 | ``` 24 | 25 | Introduced in quick-lint-js version 0.2.0. 26 | -------------------------------------------------------------------------------- /docs/errors/E0010.md: -------------------------------------------------------------------------------- 1 | # E0010: cannot import 'let' 2 | 3 | An imported function or variable cannot be named `let`: 4 | 5 | ```javascript 6 | import { let } from "./security.mjs"; 7 | ``` 8 | 9 | To fix this error, name the function or variable something other than `let`, or 10 | rename the function or variable using `import`-`as`: 11 | 12 | ```javascript 13 | import { allow } from "./security.mjs"; 14 | 15 | import { let as permit } from "./security.mjs"; 16 | ``` 17 | 18 | Introduced in quick-lint-js version 0.2.0. 19 | -------------------------------------------------------------------------------- /docs/errors/E0013.md: -------------------------------------------------------------------------------- 1 | # E0013: code point out of range 2 | 3 | 4 | 5 | This error has been renamed to E0207. 6 | 7 | Introduced in quick-lint-js version 0.2.0. 8 | -------------------------------------------------------------------------------- /docs/errors/E0017.md: -------------------------------------------------------------------------------- 1 | # E0017: if statement needs parentheses around condition 2 | 3 | In JavaScript, `if` statements require parentheses around the condition. It is 4 | an error to omit the parentheses: 5 | 6 | ```javascript 7 | if 2 + 2 == 4 { 8 | console.log("Math works!"); 9 | } 10 | ``` 11 | 12 | To fix this error, add `(` and `)`: 13 | 14 | ```javascript 15 | if (2 + 2 == 4) { 16 | console.log("Math works!"); 17 | } 18 | ``` 19 | 20 | Introduced in quick-lint-js version 0.2.0. 21 | -------------------------------------------------------------------------------- /docs/errors/E0018.md: -------------------------------------------------------------------------------- 1 | # E0018: if statement is missing '(' or ')' around condition 2 | 3 | An `if` statement is missing either `(` before the condition or `)` after the 4 | condition: 5 | 6 | ```javascript 7 | if (2 + 2 == 4 { 8 | console.log("Math works!"); 9 | } 10 | if 4 == 2 + 2) { 11 | console.log("Jedi math works!"); 12 | } 13 | ``` 14 | 15 | To fix this error, add the missing `(` or `)`: 16 | 17 | ```javascript 18 | if (2 + 2 == 4) { 19 | console.log("Math works!"); 20 | } 21 | if (4 == 2 + 2) { 22 | console.log("Jedi math works!"); 23 | } 24 | ``` 25 | 26 | Introduced in quick-lint-js version 0.2.0. 27 | -------------------------------------------------------------------------------- /docs/errors/E0019.md: -------------------------------------------------------------------------------- 1 | # E0019: escaping '-' is not allowed in tag names; write '-' instead 2 | 3 | JSX tag names and attributes can contain Unicode escape sequences starting with 4 | `\u`. It is a syntax error for a Unicode escape sequence to resolve to the `-` 5 | character (U+002D): 6 | 7 | ```javascript-jsx 8 | function Font() { 9 | return ; 10 | } 11 | ``` 12 | 13 | To fix this error, write `-` instead of `\u{2d}` or `\u002d`: 14 | 15 | ```javascript-jsx 16 | function Font() { 17 | return ; 18 | } 19 | ``` 20 | 21 | Introduced in quick-lint-js version 2.0.0. 22 | -------------------------------------------------------------------------------- /docs/errors/E0022.md: -------------------------------------------------------------------------------- 1 | # E0022: invalid UTF-8 sequence 2 | 3 | 4 | 5 | JavaScript files are normally encoded using UTF-8. It is an error for a 6 | UTF-8 JavaScript file to contain bytes which are not valid UTF-8. 7 | 8 | quick-lint-js only supports UTF-8 JavaScript files. UTF-16, ISO-8859-1, and 9 | other encodings are not supported by quick-lint-js. Save your file as UTF-8 to 10 | check it with quick-lint-js. 11 | 12 | Introduced in quick-lint-js version 0.2.0. 13 | -------------------------------------------------------------------------------- /docs/errors/E0023.md: -------------------------------------------------------------------------------- 1 | # E0023: keywords cannot contain escape sequences 2 | 3 | Outside a string or template literal, Unicode escape sequences (like `\u{65}`) 4 | can be used in identifiers. However, Unicode escape sequences are not allowed if 5 | they would make an identifier look like a keyword when unescaped: 6 | 7 | ```javascript 8 | let \u{69}\u{66} = "if"; 9 | let which = \u{66}inally; 10 | ``` 11 | 12 | To fix this error, either pick a different variable name, or make a string: 13 | 14 | ```javascript 15 | let _\u{69}\u{66} = "if"; 16 | let which = "\u{66}inally"; 17 | ``` 18 | 19 | Introduced in quick-lint-js version 0.2.0. 20 | -------------------------------------------------------------------------------- /docs/errors/E0024.md: -------------------------------------------------------------------------------- 1 | # E0024: const/let/var with no bindings 2 | 3 | `const`, `let`, or `var` statements need to declare at least one variable. It is 4 | an error to declare nothing: 5 | 6 | ```javascript 7 | var 8 | const friends = ["strager"]; 9 | for (let of friends) { 10 | } 11 | ``` 12 | 13 | To fix this error, add a variable name: 14 | 15 | ```javascript 16 | var bestFriend; 17 | const friends = ["strager"]; 18 | for (let friend of friends) { 19 | bestFriend = friend; 20 | } 21 | ``` 22 | 23 | Introduced in quick-lint-js version 0.2.0. 24 | -------------------------------------------------------------------------------- /docs/errors/E0025.md: -------------------------------------------------------------------------------- 1 | # E0025: missing comma between object literal entries 2 | 3 | Object literal entries, including methods, are separated by commas. It is an 4 | error to write two entries without a comma in between: 5 | 6 | ```javascript 7 | const snuffles = { 8 | age: 7 9 | meow() { 10 | console.log("😾") 11 | } 12 | eat() { 13 | console.log("😸") 14 | } 15 | } 16 | ``` 17 | 18 | To fix this error, include commas: 19 | 20 | ```javascript 21 | const snuffles = { 22 | age: 7, 23 | meow() { 24 | console.log("😾") 25 | }, 26 | eat() { 27 | console.log("😸") 28 | } 29 | } 30 | ``` 31 | 32 | Introduced in quick-lint-js version 0.2.0. 33 | -------------------------------------------------------------------------------- /docs/errors/E0028.md: -------------------------------------------------------------------------------- 1 | # E0028: number literal contains consecutive underscores 2 | 3 | Number literals can contain underscores (`_`) to separate digits for legibility. 4 | At most one `_` can be used between a pair of digits: 5 | 6 | ```javascript 7 | let PIN_LED = 0b0__1; 8 | const tau = 3.14159____26536 * 2; 9 | ``` 10 | 11 | To fix this error, remove extraneous underscores: 12 | 13 | ```javascript 14 | let PIN_LED = 0b0_1; 15 | const tau = 3.14159_26536 * 2; 16 | ``` 17 | 18 | Introduced in quick-lint-js version 0.2.0. 19 | -------------------------------------------------------------------------------- /docs/errors/E0029.md: -------------------------------------------------------------------------------- 1 | # E0029: number literal contains trailing underscores 2 | 3 | Number literals can contain underscores (`_`) to separate digits for legibility. 4 | Underscores can only appear between digits, not after all digits: 5 | 6 | ```javascript 7 | let PIN_UART = 0b00_01; 8 | let PIN_LED = 0b01_; 9 | const tau = 3.1415926536__ * 2; 10 | ``` 11 | 12 | To fix this error, remove the trailing underscores, or write more digits: 13 | 14 | ```javascript 15 | let PIN_UART = 0b00_01; 16 | let PIN_LED = 0b01_01; 17 | const tau = 3.1415926536 * 2; 18 | ``` 19 | 20 | Introduced in quick-lint-js version 0.2.0. 21 | -------------------------------------------------------------------------------- /docs/errors/E0030.md: -------------------------------------------------------------------------------- 1 | # E0030: octal literal may not have exponent 2 | 3 | Decimal number literals can contain exponents. Octal number literals, which 4 | start with an extra `0` digit, cannot contain exponents: 5 | 6 | ```javascript 7 | const googol = 01e+100; 8 | ``` 9 | 10 | To fix this error, make the number literal a decimal number literal by removing 11 | the extra leading `0`: 12 | 13 | ```javascript 14 | const googol = 1e+100; 15 | ``` 16 | 17 | Introduced in quick-lint-js version 0.2.0. 18 | -------------------------------------------------------------------------------- /docs/errors/E0031.md: -------------------------------------------------------------------------------- 1 | # E0031: octal literal may not have decimal 2 | 3 | Decimal number literals can contain a decimal (fraction). Octal number literals, 4 | which start with an extra `0` digit, cannot contain a decimal: 5 | 6 | ```javascript 7 | const PI = 03.14; 8 | ``` 9 | 10 | To fix this error, make the number literal a decimal number literal by removing 11 | the extra leading `0`: 12 | 13 | ```javascript 14 | const PI = 3.14; 15 | ``` 16 | 17 | Introduced in quick-lint-js version 0.2.0. 18 | -------------------------------------------------------------------------------- /docs/errors/E0032.md: -------------------------------------------------------------------------------- 1 | # E0032: legacy octal literal may not be BigInt 2 | 3 | Decimal number literals can be `BigInt` with an `n` suffix. Legacy octal number 4 | literals, which start with an extra `0` digit, cannot be suffixed with `n`: 5 | 6 | ```javascript 7 | const ID = 012127638745381751821n; 8 | const perms = 07750775077507750775n; 9 | ``` 10 | 11 | To fix this error, make the number literal a decimal number literal by removing 12 | the extra leading `0`, or use the `0o` to make the a modern octal literal: 13 | 14 | ```javascript 15 | const ID = 1234567890123456789n; 16 | const perms = 0o0775_0775_0775_0775_0775n; 17 | ``` 18 | 19 | Introduced in quick-lint-js version 0.2.0. 20 | -------------------------------------------------------------------------------- /docs/errors/E0035.md: -------------------------------------------------------------------------------- 1 | # E0035: RegExp literal flags cannot contain Unicode escapes 2 | 3 | ```config-for-examples 4 | { 5 | "globals": { 6 | "headerName": true 7 | } 8 | } 9 | ``` 10 | 11 | Regular expression literals can contain flags. These flags must not be escaped 12 | using a Unicode escape sequence: 13 | 14 | ```javascript 15 | const isContentLength = 16 | /content-length/\u{69}.test(headerName); 17 | ``` 18 | 19 | To fix this error, stop being clever; write the flag letter directly: 20 | 21 | ```javascript 22 | const isContentLength = 23 | /content-length/i.test(headerName); 24 | ``` 25 | 26 | Introduced in quick-lint-js version 0.2.0. 27 | -------------------------------------------------------------------------------- /docs/errors/E0036.md: -------------------------------------------------------------------------------- 1 | # E0036: stray comma in let statement 2 | 3 | ```config-for-examples 4 | { 5 | "globals": { 6 | "findCenterPoint": true 7 | } 8 | } 9 | ``` 10 | 11 | Variables declared by `const`, `let`, and `var` must be separated by a comma 12 | (`,`). It is a syntax error to have multiple commas separating variables: 13 | 14 | ```javascript 15 | let p = findCenterPoint(); 16 | let x = p.x,; 17 | let y = p.y - 1; 18 | ``` 19 | 20 | To fix this error, remove the extra comma: 21 | 22 | ```javascript 23 | let p = findCenterPoint(); 24 | let x = p.x; 25 | let y = p.y - 1; 26 | ``` 27 | 28 | Introduced in quick-lint-js version 0.2.0. 29 | -------------------------------------------------------------------------------- /docs/errors/E0038.md: -------------------------------------------------------------------------------- 1 | # E0038: unclosed identifier escape sequence 2 | 3 | Identifiers can contain Unicode escape sequences starting with `\u`. It is a 4 | syntax error to write `\u{` followed by hexadecimal digits without a closing 5 | `}`: 6 | 7 | ```javascript 8 | let guitar\u{3604 = "\u{D83C}\u{"; 9 | ``` 10 | 11 | To fix this error, write `}` to close the escape sequence. 12 | 13 | ```javascript 14 | let guitar\u{3604} = "\u{D83C}\u{DFB8}"; 15 | ``` 16 | 17 | Introduced in quick-lint-js version 0.2.0. 18 | -------------------------------------------------------------------------------- /docs/errors/E0042.md: -------------------------------------------------------------------------------- 1 | # E0042: unexpected '@' 2 | 3 | 4 | 5 | This diagnostic has been removed in quick-lint-js version 2.17.0. 6 | 7 | In JavaScript, `@` is only allowed in string and template literals. It is a 8 | syntax error to write `@` anywhere else: 9 | 10 | ```javascript 11 | @ // oops 12 | 13 | // JavaScript does not support C# verbatim strings: 14 | let notepad = @"C:\Windows\System32\notepad.exe"; 15 | ``` 16 | 17 | To fix this error, remove the `@`: 18 | 19 | ```javascript 20 | let notepad = "C:\\Windows\\System32\\notepad.exe"; 21 | ``` 22 | 23 | Introduced in quick-lint-js version 0.2.0. 24 | -------------------------------------------------------------------------------- /docs/errors/E0045.md: -------------------------------------------------------------------------------- 1 | # E0045: unexpected control character 2 | 3 | JavaScript treats some Unicode control characters, such as newlines, tabs, and 4 | form feeds, as whitespace. Most other control characters are now allowed outside 5 | string literals and template literals: 6 | 7 | ```javascript 8 |   9 | ``` 10 | 11 | To fix this error, delete the extra control characters, or put them inside a 12 | comment: 13 | 14 | ```javascript 15 | /* 16 |   17 | */ 18 | ``` 19 | 20 | Introduced in quick-lint-js version 0.2.0. 21 | -------------------------------------------------------------------------------- /docs/errors/E0048.md: -------------------------------------------------------------------------------- 1 | # E0048: unexpected characters in hex literal 2 | 3 | Hexadecimal (hex) number literals start with `0x` and can only contain digits 4 | `0` through `9` and `a` through `f` (and optionally an `n` to signify a 5 | `BigInt`). It is an error to include other letters in hex number literals: 6 | 7 | ```javascript 8 | let hungry = 0xfeedme; 9 | ``` 10 | 11 | To fix this error, fix or remove the extra digits or letters: 12 | 13 | ```javascript 14 | let hungry = 0xfeedad00d; 15 | ``` 16 | 17 | Introduced in quick-lint-js version 0.2.0. 18 | -------------------------------------------------------------------------------- /docs/errors/E0049.md: -------------------------------------------------------------------------------- 1 | # E0049: binary number literal has no digits 2 | 3 | Decimal number literals start with `0b` and require at least one digit. It is an 4 | error to write `0b` with no following digits: 5 | 6 | ```javascript 7 | let mask = 0b 8 | ``` 9 | 10 | To fix this error, write digits after `0b`: 11 | 12 | ```javascript 13 | let mask = 0b1000; 14 | ``` 15 | 16 | Alternatively, remove `b` to create a `0` number literal. 17 | 18 | Introduced in quick-lint-js version 0.2.0. 19 | -------------------------------------------------------------------------------- /docs/errors/E0050.md: -------------------------------------------------------------------------------- 1 | # E0050: hex number literal has no digits 2 | 3 | Hexadecimal (hex) number literals start with `0x` and require at least one 4 | digit. It is an error to write `0x` with no following digits: 5 | 6 | ```javascript 7 | let mask = 0x 8 | ``` 9 | 10 | To fix this error, write digits after `0x`: 11 | 12 | ```javascript 13 | let mask = 0xff00; 14 | ``` 15 | 16 | Alternatively, remove `x` to create a `0` number literal. 17 | 18 | Introduced in quick-lint-js version 0.2.0. 19 | -------------------------------------------------------------------------------- /docs/errors/E0051.md: -------------------------------------------------------------------------------- 1 | # E0051: octal number literal has no digits 2 | 3 | Octal number literals start with `0o` and require at least one digit. It is an 4 | error to write `0o` with no following digits: 5 | 6 | ```javascript 7 | let mask = 0o 8 | ``` 9 | 10 | To fix this error, write digits after `0o`: 11 | 12 | ```javascript 13 | let mask = 0o700; 14 | ``` 15 | 16 | Alternatively, remove `o` to create a `0` number literal. 17 | 18 | Introduced in quick-lint-js version 0.2.0. 19 | -------------------------------------------------------------------------------- /docs/errors/E0054.md: -------------------------------------------------------------------------------- 1 | # E0054: unexpected token 2 | 3 | If you get error E0054, quick-lint-js does not understand your code for some 4 | reasons. The authors of quick-lint-js have not written a helpful message. 5 | 6 | If you encounter this error, please [submit a bug 7 | report](https://github.com/quick-lint/quick-lint-js/issues). 8 | 9 | Typically, this error occurs if code contains an operator which doesn't belong: 10 | 11 | ```javascript 12 | let person = "Sam";: 13 | ``` 14 | 15 | To fix this error, write correct JavaScript syntax: 16 | 17 | ```javascript 18 | let person = "Sam"; 19 | ``` 20 | 21 | Introduced in quick-lint-js version 0.2.0. 22 | -------------------------------------------------------------------------------- /docs/errors/E0056.md: -------------------------------------------------------------------------------- 1 | # E0056: unmatched parenthesis 2 | 3 | It is an error to write the `(` without its matching `)`: 4 | 5 | ```javascript 6 | function fma(a, b, c) { 7 | return (a * b + c; 8 | } 9 | let five = (fma(2, 2, 1); 10 | ``` 11 | 12 | To fix this error, write the closing `)`, or remove the extraneous `(`: 13 | 14 | ```javascript 15 | function fma(a, b, c) { 16 | return (a * b) + c; 17 | } 18 | let five = fma(2, 2, 1); 19 | ``` 20 | 21 | Introduced in quick-lint-js version 0.2.0. 22 | -------------------------------------------------------------------------------- /docs/errors/E0061.md: -------------------------------------------------------------------------------- 1 | # E0061: missing name in function statement 2 | 3 | If a statement begins with the `function` keyword, the declared function must 4 | have a name. It is an error to start a statement with `function` but not give a 5 | name to the function: 6 | 7 | ```javascript 8 | function (number) { 9 | return number % 2 === 0; 10 | } 11 | ``` 12 | 13 | To fix this error, write the name of the function after the `function` keyword: 14 | 15 | ```javascript 16 | function isEven(number) { 17 | return number % 2 === 0; 18 | } 19 | ``` 20 | 21 | Introduced in quick-lint-js version 0.2.0. 22 | -------------------------------------------------------------------------------- /docs/errors/E0067.md: -------------------------------------------------------------------------------- 1 | # E0067: exporting requires 'default' 2 | 3 | It is a syntax error to export an expression without using the `default` 4 | keyword: 5 | 6 | ```javascript 7 | function loadConfig() {} 8 | 9 | export loadConfig(); 10 | ``` 11 | 12 | To fix this error, add the `default` keyword to export the result of the 13 | expression as the module's default export: 14 | 15 | ```javascript 16 | function loadConfig() {} 17 | 18 | export default loadConfig(); 19 | ``` 20 | 21 | Introduced in quick-lint-js version 0.2.0. 22 | -------------------------------------------------------------------------------- /docs/errors/E0070.md: -------------------------------------------------------------------------------- 1 | # E0070: commas are not allowed after spread parameter 2 | 3 | In a function declaration, an extra `,` can be added to the end of the parameter 4 | list. However, it is a syntax error to include an extra `,` after a spread 5 | parameter: 6 | 7 | ```javascript 8 | function sum( 9 | ...numbers, 10 | ) { 11 | return numbers.reduce((x, y) => x+y, 0); 12 | } 13 | ``` 14 | 15 | To fix this error, remove the extra `,`: 16 | 17 | ```javascript 18 | function sum( 19 | ...numbers 20 | ) { 21 | return numbers.reduce((x, y) => x+y, 0); 22 | } 23 | ``` 24 | 25 | Introduced in quick-lint-js version 0.2.0. 26 | -------------------------------------------------------------------------------- /docs/errors/E0072.md: -------------------------------------------------------------------------------- 1 | # E0072: methods should not use the 'function' keyword 2 | 3 | Classes and object literals can contain methods. It is an error to use the 4 | `function` keyword in a class or object literal when defining a method: 5 | 6 | ```javascript 7 | class Doge { 8 | function speak() { 9 | console.log('many woofie'); 10 | } 11 | } 12 | ``` 13 | 14 | To fix this error, remove the `function` keyword: 15 | 16 | ```javascript 17 | class Doge { 18 | speak() { 19 | console.log('many woofie'); 20 | } 21 | } 22 | ``` 23 | 24 | Introduced in quick-lint-js version 0.2.0. 25 | -------------------------------------------------------------------------------- /docs/errors/E0084.md: -------------------------------------------------------------------------------- 1 | # E0084: do-while loop needs parentheses around condition 2 | 3 | `do`-`while` loops have a condition after the `while` keyword. It is a syntax 4 | error to write a condition without `(` and `)`: 5 | 6 | ```javascript 7 | let name; 8 | do { 9 | name = prompt('What is your name?'); 10 | } while name === ''; 11 | ``` 12 | 13 | To fix this error, write `(` before the condition and `)` after the condition: 14 | 15 | ```javascript 16 | let name; 17 | do { 18 | name = prompt('What is your name?'); 19 | } while (name === ''); 20 | ``` 21 | 22 | Introduced in quick-lint-js version 0.2.0. 23 | -------------------------------------------------------------------------------- /docs/errors/E0085.md: -------------------------------------------------------------------------------- 1 | # E0085: do-while loop is missing '(' or ')' around condition 2 | 3 | `do`-`while` loops have a condition after the `while` keyword. It is a syntax 4 | error to write a condition without either `(` or `)`: 5 | 6 | ```javascript 7 | let name; 8 | do { 9 | name = prompt('What is your name?'); 10 | } while (name === ''; 11 | ``` 12 | 13 | To fix this error, write `(` before the condition or `)` after the condition: 14 | 15 | ```javascript 16 | let name; 17 | do { 18 | name = prompt('What is your name?'); 19 | } while (name === ''); 20 | ``` 21 | 22 | Introduced in quick-lint-js version 0.2.0. 23 | -------------------------------------------------------------------------------- /docs/errors/E0086.md: -------------------------------------------------------------------------------- 1 | # E0086: redundant delete statement on variable 2 | 3 | The following delete statement is redundant on variable: 4 | 5 | ```javascript 6 | let x = 3; 7 | delete x; 8 | console.log(x); 9 | ``` 10 | 11 | To fix this warning, remove the delete statement: 12 | 13 | ```javascript 14 | let x = 3; 15 | console.log(x); 16 | ``` 17 | 18 | Introduced in quick-lint-js version 0.3.0. 19 | -------------------------------------------------------------------------------- /docs/errors/E0087.md: -------------------------------------------------------------------------------- 1 | # E0087: while loop needs parentheses around condition 2 | 3 | `while` loops have a condition after the `while` keyword. It is a syntax error 4 | to write a condition without `(` and `)`: 5 | 6 | ```javascript 7 | let name = ''; 8 | while name === '' { 9 | name = prompt('What is your name?'); 10 | } 11 | ``` 12 | 13 | To fix this error, write `(` before the condition and `)` after the condition: 14 | 15 | ```javascript 16 | let name = ''; 17 | while (name === '') { 18 | name = prompt('What is your name?'); 19 | } 20 | ``` 21 | 22 | Introduced in quick-lint-js version 0.2.0. 23 | -------------------------------------------------------------------------------- /docs/errors/E0088.md: -------------------------------------------------------------------------------- 1 | # E0088: while loop is missing '(' or ')' around condition 2 | 3 | `while` loops have a condition after the `while` keyword. It is a syntax error 4 | to write a condition without either `(` or `)`: 5 | 6 | ```javascript 7 | let name = ''; 8 | while (name === '' { 9 | name = prompt('What is your name?'); 10 | } 11 | ``` 12 | 13 | To fix this error, write `(` before the condition or `)` after the condition: 14 | 15 | ```javascript 16 | let name = ''; 17 | while (name === '') { 18 | name = prompt('What is your name?'); 19 | } 20 | ``` 21 | 22 | Introduced in quick-lint-js version 0.2.0. 23 | -------------------------------------------------------------------------------- /docs/errors/E0093.md: -------------------------------------------------------------------------------- 1 | # E0093: C-style for loop is missing its third component 2 | 3 | C-style `for` loops have three components, each separated by `;`: an 4 | initializer, a condition expression, and an update expression. It is a syntax 5 | error to write only two of these three components: 6 | 7 | ```javascript 8 | for (let i = 0; i < 100) { 9 | console.log(i % 15 ? i : "FizzBuzz"); 10 | } 11 | ``` 12 | 13 | To fix this error, write the missing component: 14 | 15 | ```javascript 16 | for (let i = 0; i < 100; ++i) { 17 | console.log(i % 15 ? i : "FizzBuzz"); 18 | } 19 | ``` 20 | 21 | Introduced in quick-lint-js version 0.2.0. 22 | -------------------------------------------------------------------------------- /docs/errors/E0095.md: -------------------------------------------------------------------------------- 1 | # E0095: Unicode byte order mark (BOM) cannot appear before #! at beginning of script 2 | 3 | A script cannot have Unicode byte order mark (BOM) before `#!` 4 | 5 | ```javascript 6 | #!/usr/bin/env node 7 | let x = 3; 8 | console.log(x); 9 | ``` 10 | 11 | To fix this error, remove the Unicode BOM before `#!` 12 | 13 | ```javascript 14 | #!/usr/bin/env node 15 | let x = 3; 16 | console.log(x); 17 | ``` 18 | 19 | Introduced in quick-lint-js version 0.3.0. 20 | -------------------------------------------------------------------------------- /docs/errors/E0096.md: -------------------------------------------------------------------------------- 1 | # E0096: missing for loop header 2 | 3 | ```config-for-examples 4 | { 5 | "globals": { 6 | "benchmark": true, 7 | "collectBenchmarks": true, 8 | "runBenchmark": true 9 | } 10 | } 11 | ``` 12 | 13 | It is a syntax error to have nothing between the `(` and `)` in a `for` loop: 14 | 15 | ```javascript 16 | for () { 17 | runBenchmark(benchmark); 18 | } 19 | ``` 20 | 21 | To fix this error, continue writing the `for` loop: 22 | 23 | ```javascript 24 | for (const benchmark of collectBenchmarks()) { 25 | runBenchmark(benchmark); 26 | } 27 | ``` 28 | 29 | Introduced in quick-lint-js version 0.2.0. 30 | -------------------------------------------------------------------------------- /docs/errors/E0105.md: -------------------------------------------------------------------------------- 1 | # E0105: missing parameters for arrow function 2 | 3 | Arrow functions need a parameter list. It is a syntax error to omit the 4 | parameter list before `=>`, even if the arrow function takes no parameters: 5 | 6 | ```javascript 7 | setInterval(=> { 8 | console.log("it is now", new Date()); 9 | }, 1000); 10 | ``` 11 | 12 | To fix this error, write an empty parameter list before `=>`: 13 | 14 | ```javascript 15 | setInterval(() => { 16 | console.log("it is now", new Date()); 17 | }, 1000); 18 | ``` 19 | 20 | Introduced in quick-lint-js version 0.2.0. 21 | -------------------------------------------------------------------------------- /docs/errors/E0124.md: -------------------------------------------------------------------------------- 1 | # E0124: cannot declare variable named keyword 2 | 3 | It is a syntax error to declare a variable named certain keywords like 4 | `debugger` or `while`: 5 | 6 | ```javascript-ignoring-extra-errors 7 | function parseVar(s) { 8 | let var = s.split()[0]; 9 | let value = s.split()[1]; 10 | return {var, value}; 11 | } 12 | ``` 13 | 14 | To fix this error, pick a different variable name: 15 | 16 | ```javascript 17 | function parseVar(s) { 18 | let varName = s.split()[0]; 19 | let value = s.split()[1]; 20 | return {varName, value}; 21 | } 22 | ``` 23 | 24 | Introduced in quick-lint-js version 0.2.0. 25 | -------------------------------------------------------------------------------- /docs/errors/E0126.md: -------------------------------------------------------------------------------- 1 | # E0126: expected 'as' between '\*' and variable 2 | 3 | You can import all of a module's exports using `import *`. It is a syntax error 4 | to omit the `as` keyword between the `*` and the new object's name: 5 | 6 | ```javascript 7 | import * d3 from 'd3'; 8 | ``` 9 | 10 | To fix this error, write `as` after `*`: 11 | 12 | ```javascript 13 | import * as d3 from 'd3'; 14 | ``` 15 | 16 | Introduced in quick-lint-js version 0.2.0. 17 | -------------------------------------------------------------------------------- /docs/errors/E0128.md: -------------------------------------------------------------------------------- 1 | # E0128: expected 'from' before module specifier 2 | 3 | `import` statements load things from other files. It is a syntax error to omit 4 | the `from` keyword before the module name: 5 | 6 | ```javascript 7 | import React, {createElement} 'react'; 8 | ``` 9 | 10 | To fix this error, write the `from` keyword before the module name: 11 | 12 | ```javascript 13 | import React, {createElement} from 'react'; 14 | ``` 15 | 16 | Introduced in quick-lint-js version 0.2.0. 17 | -------------------------------------------------------------------------------- /docs/errors/E0129.md: -------------------------------------------------------------------------------- 1 | # E0129: expected 'from "name_of_module.mjs"' 2 | 3 | `import` statements load things from other files. It is a syntax error to omit 4 | the name of the module being imported: 5 | 6 | ```javascript 7 | import React, {createElement}; 8 | ``` 9 | 10 | To fix this error, write the `from` keyword followed by the module name: 11 | 12 | ```javascript 13 | import React, {createElement} from 'react'; 14 | ``` 15 | 16 | Introduced in quick-lint-js version 0.2.0. 17 | -------------------------------------------------------------------------------- /docs/errors/E0133.md: -------------------------------------------------------------------------------- 1 | # E0133: error generator function star belongs before name 2 | 3 | The following code has misplaced '*'. 4 | 5 | ```javascript 6 | *function f(x) { yield x; } 7 | ``` 8 | 9 | To fix this error, move the '*' before function name. 10 | 11 | ```javascript 12 | function *f(x) { yield x; } 13 | ``` 14 | 15 | Introduced in quick-lint-js version 0.2.0. 16 | -------------------------------------------------------------------------------- /docs/errors/E0142.md: -------------------------------------------------------------------------------- 1 | # E0142: missing property name after '.' operator 2 | 3 | ```config-for-examples 4 | { 5 | "globals": { 6 | "goNuts": true 7 | } 8 | } 9 | ``` 10 | 11 | The `.` operator accesses an object's property. It is a syntax error to omit a 12 | property name after the `.` operator: 13 | 14 | ```javascript 15 | try { 16 | goNuts(); 17 | } catch { 18 | console.("couldn't handle deez nuts"); 19 | } 20 | ``` 21 | 22 | To fix this error, write the property name after the `.`: 23 | 24 | ```javascript 25 | try { 26 | goNuts(); 27 | } catch { 28 | console.error("couldn't handle deez nuts"); 29 | } 30 | ``` 31 | 32 | Introduced in quick-lint-js version 0.2.0. 33 | -------------------------------------------------------------------------------- /docs/errors/E0147.md: -------------------------------------------------------------------------------- 1 | # E0147: unexpected identifier in expression; missing operator before 2 | 3 | ```config-for-examples 4 | { 5 | "globals": { 6 | "add": true, 7 | "dos": true, 8 | "two": true 9 | } 10 | } 11 | ``` 12 | 13 | It is an error to write two variable names without an operator in between: 14 | 15 | ```javascript 16 | const quatro = (dos dos); 17 | const four = add(two two); 18 | ``` 19 | 20 | To fix this error, remove one of the variables, or add an operator: 21 | 22 | ```javascript 23 | const quatro = (dos + dos); 24 | const four = add(two, two); 25 | ``` 26 | 27 | Introduced in quick-lint-js version 0.2.0. 28 | -------------------------------------------------------------------------------- /docs/errors/E0152.md: -------------------------------------------------------------------------------- 1 | # E0152: legacy octal literals may not contain underscores 2 | 3 | A legacy octal literal is a `0` digit followed by one or more octal digits (`0` 4 | through `7`). It is a syntax error for a legacy octal literal to contain a digit 5 | separator (`_`): 6 | 7 | ```javascript 8 | let fileMode = 01_755; 9 | ``` 10 | 11 | To fix this error, begin the literal with `0o`: 12 | 13 | ```javascript 14 | let fileMode = 0o1_755; 15 | ``` 16 | 17 | Alternatively, remove the underscore: 18 | 19 | ```javascript 20 | let fileMode = 01755; 21 | ``` 22 | 23 | Introduced in quick-lint-js version 0.2.0. 24 | -------------------------------------------------------------------------------- /docs/errors/E0153.md: -------------------------------------------------------------------------------- 1 | # E0153: forwarding exports are only allowed in export-from 2 | 3 | An `export` statement can forward exports from another module. It is a syntax 4 | error to forward exports without specifying which module to import from: 5 | 6 | ```javascript 7 | export {"React"}; 8 | ``` 9 | 10 | To fix this error, write `from` then the other module's name after the list of 11 | exports: 12 | 13 | ```javascript 14 | export {"React"} from "react"; 15 | ``` 16 | 17 | Alternatively, import the symbols separately with an `import` statement: 18 | 19 | ```javascript 20 | import {React} from "react"; 21 | export {React}; 22 | ``` 23 | 24 | Introduced in quick-lint-js version 0.3.0. 25 | -------------------------------------------------------------------------------- /docs/errors/E0157.md: -------------------------------------------------------------------------------- 1 | # E0157: missing end of array; expected ']' 2 | 3 | An array literal requires a list of items surrounded by `[` and `]`. It is a 4 | syntax error to start an array literal with `[` but omit the final `]`: 5 | 6 | ```javascript 7 | let friends = ["Alice"; 8 | ``` 9 | 10 | To fix this error, write `]` at the end of the array literal: 11 | 12 | ```javascript 13 | let friends = ["Alice"]; 14 | ``` 15 | 16 | Introduced in quick-lint-js version 0.3.0. 17 | -------------------------------------------------------------------------------- /docs/errors/E0159.md: -------------------------------------------------------------------------------- 1 | # E0159: unexpected literal in parameter list; expected parameter name 2 | 3 | A function parameter can be a variable name, an array destructuring, or an 4 | object destructuring. It is a syntax error for a function parameter list to 5 | contain a number literal: 6 | 7 | ```javascript 8 | function drop(array, count, 0) { 9 | return array.slice(count); 10 | } 11 | ``` 12 | 13 | To fix this error, make the literal a default value of a parameter: 14 | 15 | ```javascript 16 | function drop(array, count = 0) { 17 | return array.slice(count); 18 | } 19 | ``` 20 | 21 | See also: E0151 22 | 23 | Introduced in quick-lint-js version 0.3.0. 24 | -------------------------------------------------------------------------------- /docs/errors/E0165.md: -------------------------------------------------------------------------------- 1 | # E0165: TypeScript style const field 2 | 3 | `const` fields are only allowed in TypeScript, not JavaScript 4 | 5 | ```javascript 6 | class C { 7 | const f = null; 8 | } 9 | ``` 10 | 11 | To fix this error, remove the `const` declarator from the field 12 | 13 | ```javascript 14 | class C { 15 | f = null; 16 | } 17 | ``` 18 | 19 | Introduced in quick-lint-js version 0.3.0. 20 | -------------------------------------------------------------------------------- /docs/errors/E0180.md: -------------------------------------------------------------------------------- 1 | # E0180: stray comma in function parameter 2 | 3 | ```config-for-examples 4 | { 5 | "globals": { 6 | "data": true 7 | } 8 | } 9 | ``` 10 | 11 | A function parameter can be a variable name, an array destructuring, or an 12 | object destructuring. It is a syntax error for a parameter name to be in 13 | parentheses with a comma: 14 | 15 | ```javascript-ignoring-extra-errors 16 | let firsts = data.map([(x,)] => x); 17 | ``` 18 | 19 | To fix this error, remove the comma: 20 | 21 | ```javascript 22 | let firsts = data.map([x] => x); 23 | ``` 24 | 25 | Introduced in quick-lint-js version 1.0.0. 26 | -------------------------------------------------------------------------------- /docs/errors/E0183.md: -------------------------------------------------------------------------------- 1 | # E0183: '}' is not allowed directly in JSX text; write {'}'} instead 2 | 3 | In the children of a JSX element, you can write arbitrary text. However, it is a 4 | syntax error to write `}` unescaped in JSX text: 5 | 6 | ```javascript-jsx 7 | function ClosingBrackets() { 8 | return ; 13 | } 14 | ``` 15 | 16 | To fix this error, write `{'}'}` instead: 17 | 18 | ```javascript-jsx 19 | function ClosingBrackets() { 20 | return ; 25 | } 26 | ``` 27 | 28 | Introduced in quick-lint-js version 2.0.0. 29 | -------------------------------------------------------------------------------- /docs/errors/E0186.md: -------------------------------------------------------------------------------- 1 | # E0186: missing '...' in JSX attribute spread 2 | 3 | In a JSX tag, you can use an object as a source of attributes. It is a syntax 4 | error to omit the `...` before the object: 5 | 6 | ```javascript-jsx 7 | function Link({text, ...props}) { 8 | return {text}; 9 | } 10 | ``` 11 | 12 | To fix this error, write `...` after `{` in the spread attribute: 13 | 14 | ```javascript-jsx 15 | function Link({text, ...props}) { 16 | return {text}; 17 | } 18 | ``` 19 | 20 | Introduced in quick-lint-js version 2.0.0. 21 | -------------------------------------------------------------------------------- /docs/errors/E0195.md: -------------------------------------------------------------------------------- 1 | # E0195: missing parentheses around operand of `typeof`; `typeof` operator cannot be used before `**` without parentheses 2 | 3 | ```config-for-examples 4 | { 5 | "globals": { 6 | "assert": true 7 | } 8 | } 9 | ``` 10 | 11 | JavaScript does not allow unary operators left of a `**` expression. It is a 12 | syntax error to write `delete`, `typeof`, or `void` before a `**` expression: 13 | 14 | ```javascript 15 | assert(typeof 10 ** 7 === "number"); 16 | ``` 17 | 18 | To fix this error, write parentheses around the `**` expression: 19 | 20 | ```javascript 21 | assert(typeof (10 ** 7) === "number"); 22 | ``` 23 | 24 | Introduced in quick-lint-js version 2.0.0. 25 | -------------------------------------------------------------------------------- /docs/errors/E0197.md: -------------------------------------------------------------------------------- 1 | # E0197: '“' is not allowed for strings; use " instead 2 | 3 | JavaScript string literals start with either `"` or `'` (straight quotes). It is 4 | a syntax error to use smart quotes instead of straight quotes to write a string 5 | literal: 6 | 7 | ```javascript 8 | let name = “Alice”; 9 | console.log(‘hello, ’ + name); 10 | ``` 11 | 12 | To fix this error, replace `‘` and `’` with `'`, and replace `“` and `”` with 13 | `"`: 14 | 15 | ```javascript 16 | let name = "Alice"; 17 | console.log('hello, ' + name); 18 | ``` 19 | 20 | Introduced in quick-lint-js version 2.0.0. 21 | -------------------------------------------------------------------------------- /docs/errors/E0199.md: -------------------------------------------------------------------------------- 1 | # E0199: unclosed class; expected '}' by end of file 2 | 3 | Every `{` introducing a class block must have a matching `}` ending a class 4 | block. It is a syntax error to omit the `}`: 5 | 6 | ```javascript 7 | class Banana { 8 | peel() { 9 | throw new Error("Bananas can't peel themselves!"); 10 | } 11 | ``` 12 | 13 | To fix this error, write a matching `}`: 14 | 15 | ```javascript 16 | class Banana { 17 | peel() { 18 | throw new Error("Bananas can't peel themselves!"); 19 | } 20 | } 21 | ``` 22 | 23 | Introduced in quick-lint-js version 2.3.0. 24 | -------------------------------------------------------------------------------- /docs/errors/E0202.md: -------------------------------------------------------------------------------- 1 | # E0202: missing '=' after variable 2 | 3 | The following code has a missing equal '=' after variable name. 4 | 5 | ```javascript 6 | let x new Array(); 7 | ``` 8 | 9 | To fix this error, add '=' after variable `x`. 10 | 11 | ```javascript 12 | let x = new Array(); 13 | ``` 14 | 15 | Introduced in quick-lint-js version 0.3.0. 16 | -------------------------------------------------------------------------------- /docs/errors/E0203.md: -------------------------------------------------------------------------------- 1 | # E0203: depth limit exceeded 2 | 3 | 4 | 5 | JavaScript code can contain nested functions, arrays, objects, classes, etc. 6 | quick-lint-js only supports nesting up to a limit. Most code shouldn't hit this 7 | limit. If you do hit this limit, refactor your code to reduce nesting. 8 | 9 | Introduced in quick-lint-js version 0.3.0. 10 | -------------------------------------------------------------------------------- /docs/errors/E0204.md: -------------------------------------------------------------------------------- 1 | # E0204: error generator function star belongs after keyword function 2 | 3 | The following code has misplaced '*'. 4 | 5 | ```javascript 6 | let x = *function(y) { yield y; }; 7 | ``` 8 | 9 | To fix this error, move the '*' after the keyword function. 10 | 11 | ```javascript 12 | let x = function*(y) { yield y; }; 13 | ``` 14 | 15 | Introduced in quick-lint-js version 0.3.0. 16 | -------------------------------------------------------------------------------- /docs/errors/E0205.md: -------------------------------------------------------------------------------- 1 | # E0205: error missing initializer in const declaration 2 | 3 | The following code is missing initialization for const 4 | variable declaration. 5 | 6 | ```javascript 7 | const x; 8 | ``` 9 | 10 | To fix this error, initialize the variable x with some 11 | value. 12 | 13 | ```javascript 14 | const x = 10; 15 | ``` 16 | 17 | Another way to fix this error, change const to let. 18 | 19 | ```javascript 20 | let x; 21 | ``` 22 | 23 | Introduced in quick-lint-js version 0.3.0. 24 | -------------------------------------------------------------------------------- /docs/errors/E0206.md: -------------------------------------------------------------------------------- 1 | # E0206: label named 'await' not allowed in async function 2 | 3 | The following code is using label named 'await' in an async 4 | function. 5 | 6 | ```javascript 7 | async function f() { 8 | await: 9 | } 10 | ``` 11 | 12 | To fix this error, rename label await to something else. 13 | 14 | ```javascript 15 | async function f() { 16 | label: 17 | } 18 | ``` 19 | 20 | Another way to fix this error, make 'f' a normal function 21 | rather than an async function. 22 | 23 | ```javascript 24 | function f() { 25 | await: 26 | } 27 | ``` 28 | 29 | Introduced in quick-lint-js version 0.3.0. 30 | -------------------------------------------------------------------------------- /docs/errors/E0211.md: -------------------------------------------------------------------------------- 1 | # E0211: missing parentheses around self-invoked function 2 | 3 | Invoking an arrow function immediately without parentheses is a syntax error. 4 | For example: 5 | 6 | ``` 7 | () => { 8 | console.log('hi'); 9 | }() 10 | ``` 11 | 12 | To fix this error, add parentheses around the entire function definition, before 13 | the invocation: 14 | 15 | ``` 16 | (() => { 17 | console.log('hi'); 18 | })() 19 | ``` 20 | 21 | Introduced in quick-lint-js version 2.4.0. 22 | -------------------------------------------------------------------------------- /docs/errors/E0215.md: -------------------------------------------------------------------------------- 1 | # E0215: unclosed interface; expected '}' by end of file 2 | 3 | Every `{` introducing an interface block must have a matching `}` ending an 4 | interface block. It is a syntax error to omit the `}`: 5 | 6 | ```typescript 7 | export interface API { 8 | fetch(uri, params); 9 | ``` 10 | 11 | To fix this error, write a matching `}`: 12 | 13 | ```typescript 14 | export interface API { 15 | fetch(uri, params); 16 | } 17 | ``` 18 | 19 | Introduced in quick-lint-js version 2.6.0. 20 | -------------------------------------------------------------------------------- /docs/errors/E0225.md: -------------------------------------------------------------------------------- 1 | # E0225: index signatures require a value type 2 | 3 | A TypeScript index signature has a key type and a value type. It is a syntax 4 | error to omit the value type: 5 | 6 | ```typescript 7 | interface StringArray { 8 | readonly [index: number]; 9 | } 10 | 11 | interface StringDictionary { 12 | [k: string]; 13 | } 14 | ``` 15 | 16 | To fix this error, write `:` then the type of the value: 17 | 18 | ```typescript 19 | interface StringArray { 20 | readonly [index: number]: string; 21 | } 22 | 23 | interface StringDictionary { 24 | [k: string]: any; 25 | } 26 | ``` 27 | 28 | Introduced in quick-lint-js version 2.6.0. 29 | -------------------------------------------------------------------------------- /docs/errors/E0226.md: -------------------------------------------------------------------------------- 1 | # E0226: missing semicolon after index signature 2 | 3 | TypeScript index signatures in interfaces must end with either a semicolon 4 | (`;`) or a newline. It is a syntax error to omit the semicolon and write 5 | something on the same line after the index signature: 6 | 7 | ```typescript 8 | interface APIData { 9 | [key: string]: number | string void; 10 | } 11 | ``` 12 | 13 | To fix this error, write a correct type for the index signature: 14 | 15 | ```typescript 16 | interface APIData { 17 | [key: string]: number | string | void; 18 | } 19 | ``` 20 | 21 | Introduced in quick-lint-js version 2.6.0. 22 | -------------------------------------------------------------------------------- /docs/errors/E0227.md: -------------------------------------------------------------------------------- 1 | # E0227: index signature must be a field, not a method 2 | 3 | A TypeScript index signature describes a property. TypeScript only supports the 4 | field syntax for index signatures. It is a syntax error to write an index 5 | signature using method syntax: 6 | 7 | ```typescript 8 | interface EventTable { 9 | [eventName: string](event: Event): void; 10 | } 11 | ``` 12 | 13 | To fix this error, write the value type using function type syntax instead: 14 | 15 | ```typescript 16 | interface EventTable { 17 | [eventName: string]: (event: Event) => void; 18 | } 19 | ``` 20 | 21 | Introduced in quick-lint-js version 2.6.0. 22 | -------------------------------------------------------------------------------- /docs/errors/E0228.md: -------------------------------------------------------------------------------- 1 | # E0228: TypeScript optional properties are not allowed in JavaScript code 2 | 3 | `?` on class properties is a TypeScript feature. It is a syntax error to write 4 | `?` on a property in JavaScript code: 5 | 6 | ```javascript 7 | class Entity { 8 | parent? = null; 9 | } 10 | ``` 11 | 12 | To fix this error, erase the `?`: 13 | 14 | ```javascript 15 | class Entity { 16 | parent = null; 17 | } 18 | ``` 19 | 20 | Alternatively, rename your file to have a `.ts` or `.tsx` suffix 21 | 22 | Introduced in quick-lint-js version 2.6.0. 23 | -------------------------------------------------------------------------------- /docs/errors/E0232.md: -------------------------------------------------------------------------------- 1 | # E0232: 'readonly static' is not allowed; write 'static readonly' instead 2 | 3 | The order of property specifiers like `readonly` and `static` matters. The 4 | correct order is: 5 | 6 | 1. `static` 7 | 2. `readonly` (TypeScript only) 8 | 9 | It is a syntax error to write specifiers in the wrong order: 10 | 11 | ```typescript 12 | class Logger { 13 | readonly static instance = new Logger(); 14 | } 15 | ``` 16 | 17 | To fix this error, rearrange the specifiers: 18 | 19 | ```typescript 20 | class Logger { 21 | static readonly instance = new Logger(); 22 | } 23 | ``` 24 | 25 | Introduced in quick-lint-js version 2.6.0. 26 | -------------------------------------------------------------------------------- /docs/errors/E0233.md: -------------------------------------------------------------------------------- 1 | # E0233: TypeScript generics are not allowed in JavaScript code 2 | 3 | It is a syntax error to write TypeScript generic parameters or arguments in 4 | JavaScript code: 5 | 6 | ```javascript 7 | class HashSet { 8 | // ... 9 | } 10 | ``` 11 | 12 | To fix this error, rename your file to have a `.ts` or `.tsx` suffix. 13 | 14 | Alternatively, use JSDoc to write the generic parameters: 15 | 16 | ```javascript 17 | /** 18 | * @template Value 19 | */ 20 | class HashSet { 21 | // ... 22 | } 23 | ``` 24 | 25 | Introduced in quick-lint-js version 2.6.0. 26 | -------------------------------------------------------------------------------- /docs/errors/E0235.md: -------------------------------------------------------------------------------- 1 | # E0235: missing quotes around module name 2 | 3 | Module names are strings. It is a syntax error to import a module without 4 | enclosing the module name in quotation marks: 5 | 6 | ```javascript 7 | import React from react; 8 | import { readFile } from fs; 9 | ``` 10 | 11 | To fix this error, add quotation marks around the module's name: 12 | 13 | ```javascript 14 | import React from "react"; 15 | import { readFile } from 'fs'; 16 | ``` 17 | 18 | Introduced in quick-lint-js version 2.6.0. 19 | -------------------------------------------------------------------------------- /docs/errors/E0238.md: -------------------------------------------------------------------------------- 1 | # E0238: assignment-asserted fields are not supported in interfaces 2 | 3 | In TypeScript, `!` after a field name indicates a *definite assignment 4 | assertion*. These assertions only make sense for classes, not for interfaces. It 5 | is a syntax error to write a definite assignment assertion on an interface 6 | field: 7 | 8 | ```typescript 9 | interface Point2D { 10 | x!: number; 11 | y!: number; 12 | } 13 | ``` 14 | 15 | To fix this error, remove the `!`: 16 | 17 | ```typescript 18 | interface Point2D { 19 | x: number; 20 | y: number; 21 | } 22 | ``` 23 | 24 | Introduced in quick-lint-js version 2.6.0. 25 | -------------------------------------------------------------------------------- /docs/errors/E0248.md: -------------------------------------------------------------------------------- 1 | # E0248: extra ',' is not allowed between enum members 2 | 3 | In a TypeScript enum, members are separated with commas. It is a syntax error to 4 | write more than one comma between enum members: 5 | 6 | ```typescript 7 | enum LogLevel { 8 | DEBUG,, 9 | , 10 | WARNING, 11 | ERROR, 12 | } 13 | ``` 14 | 15 | To fix this error, remove the extra commas: 16 | 17 | ```typescript 18 | enum LogLevel { 19 | DEBUG, 20 | WARNING, 21 | ERROR, 22 | } 23 | ``` 24 | 25 | Introduced in quick-lint-js version 2.7.0. 26 | -------------------------------------------------------------------------------- /docs/errors/E0253.md: -------------------------------------------------------------------------------- 1 | # E0253: use ':' instead of '=' in object literals 2 | 3 | JavaScript object literals are key-value pairs. In an expression, it is a syntax 4 | error to write `=` instead of `:` between the key and the value in an object 5 | literal: 6 | 7 | ```javascript 8 | import fs from 'node:fs/promises'; 9 | await fs.mkdir("build/temp", { recursive = true }); 10 | ``` 11 | 12 | To fix this error, replace `=` with `:`: 13 | 14 | ```javascript 15 | import fs from 'node:fs/promises'; 16 | await fs.mkdir("build/temp", { recursive: true }); 17 | ``` 18 | 19 | Introduced in quick-lint-js version 2.7.0. 20 | -------------------------------------------------------------------------------- /docs/errors/E0257.md: -------------------------------------------------------------------------------- 1 | # E0257: missing ',', ';', or newline between object type entries 2 | 3 | In TypeScript, properties in object types are separated by commas, semicolons, 4 | or newlines. It is a syntax error to write two properties without one of those 5 | separators in between: 6 | 7 | ```typescript 8 | type Status = { ok: boolean error?: string }; 9 | ``` 10 | 11 | To fix this error, add a separator between the two properties: 12 | 13 | ```typescript 14 | type Status = { ok: boolean, error?: string }; 15 | ``` 16 | 17 | Introduced in quick-lint-js version 2.7.0. 18 | -------------------------------------------------------------------------------- /docs/errors/E0258.md: -------------------------------------------------------------------------------- 1 | # E0258: missing type between '|' and '|' (or '&' and '&') 2 | 3 | An extra `|` or `&` is allowed at the beginning of a TypeScript type. However, 4 | it is a syntax error to write an extra `|` or `&` in the middle of a TypeScript 5 | type: 6 | 7 | ```typescript 8 | type Primitive = 9 | | string 10 | | number 11 | | bigint 12 | | boolean 13 | | null | 14 | | undefined 15 | ``` 16 | 17 | To fix this error, remove the extra `|` or `&`: 18 | 19 | ```typescript 20 | type Primitive = 21 | | string 22 | | number 23 | | bigint 24 | | boolean 25 | | null 26 | | undefined 27 | ``` 28 | 29 | Introduced in quick-lint-js version 2.7.0. 30 | -------------------------------------------------------------------------------- /docs/errors/E0259.md: -------------------------------------------------------------------------------- 1 | # E0259: '.' is not allowed after generic arguments 2 | 3 | In TypeScript types, you can look up a property of a generic type using 4 | `Type["name"]` syntax. It is a syntax error to instead use `.` to look up a 5 | property of a generic type: 6 | 7 | ```typescript 8 | class Thing { 9 | static thong: number; 10 | } 11 | type ThingThong 12 | = typeof Thing.thong; 13 | ``` 14 | 15 | To fix this error, write `["name"]` instead of `.name`: 16 | 17 | ```typescript 18 | class Thing { 19 | static thong: number; 20 | } 21 | type ThingThong 22 | = typeof Thing["thong"]; 23 | ``` 24 | 25 | Introduced in quick-lint-js version 2.7.0. 26 | -------------------------------------------------------------------------------- /docs/errors/E0262.md: -------------------------------------------------------------------------------- 1 | # E0262: leading commas are not allowed in generic parameter lists 2 | 3 | In a TypeScript generic class, function, or type alias, the generic parameter 4 | list is a comma-separated list of variables surrounded by `<` and `>`. It is a 5 | syntax error for the parameter list to start with an extra comma: 6 | 7 | ```typescript 8 | class MagicMap< 9 | , Key 10 | , Value 11 | > { 12 | // ... 13 | } 14 | ``` 15 | 16 | To fix this error, remove the leading `,`: 17 | 18 | ```typescript 19 | class MagicMap 20 | < Key 21 | , Value 22 | > { 23 | // ... 24 | } 25 | ``` 26 | 27 | Introduced in quick-lint-js version 2.8.0. 28 | -------------------------------------------------------------------------------- /docs/errors/E0268.md: -------------------------------------------------------------------------------- 1 | # E0268: TypeScript type imports cannot import both default and named exports 2 | 3 | In TypeScript, `import type` can be used to import types from another module. It 4 | is a syntax error to use `import type` to import both a default export (outside 5 | `{` and `}`) and some named exports (inside `{` and `}`): 6 | 7 | ```typescript 8 | import type Styles, {StyleMap} from "./Styles"; 9 | ``` 10 | 11 | To fix this error, split the import into two: 12 | 13 | ```typescript 14 | import type Styles from "./Styles"; 15 | import type {StyleMap} from "./Styles"; 16 | ``` 17 | 18 | Introduced in quick-lint-js version 2.8.0. 19 | -------------------------------------------------------------------------------- /docs/errors/E0270.md: -------------------------------------------------------------------------------- 1 | # E0270: TypeScript type imports are not allowed in JavaScript 2 | 3 | TypeScript supports importing types using `import type`. It is a syntax error to 4 | write `import type` in JavaScript code: 5 | 6 | ```javascript 7 | import React, {type FC} from "react"; 8 | ``` 9 | 10 | To fix this error, delete the imported type: 11 | 12 | ```javascript 13 | import React from "react"; 14 | ``` 15 | 16 | Introduced in quick-lint-js version 2.8.0. 17 | -------------------------------------------------------------------------------- /docs/errors/E0271.md: -------------------------------------------------------------------------------- 1 | # E0271: TypeScript type imports are not allowed in JavaScript 2 | 3 | 4 | 5 | This error has been renamed to E0270. 6 | 7 | Introduced in quick-lint-js version 2.8.0. 8 | -------------------------------------------------------------------------------- /docs/errors/E0273.md: -------------------------------------------------------------------------------- 1 | # E0273: TypeScript namespaces are not allowed in JavaScript 2 | 3 | TypeScript supports namespaces to describe objects. JavaScript does not support 4 | this syntax. It is a syntax error to use TypeScript's `namespace` keyword to 5 | create a namespace in JavaScript: 6 | 7 | ```javascript 8 | namespace goog { 9 | export class Chart { 10 | // ... 11 | } 12 | } 13 | ``` 14 | 15 | To fix this error, create a variable with an object instead: 16 | 17 | ```javascript 18 | const goog = {}; 19 | 20 | goog.Chart = class Chart { 21 | // ... 22 | }; 23 | ``` 24 | 25 | Introduced in quick-lint-js version 2.8.0. 26 | -------------------------------------------------------------------------------- /docs/errors/E0274.md: -------------------------------------------------------------------------------- 1 | # E0274: TypeScript import aliases are not allowed in JavaScript 2 | 3 | TypeScript supports import alias using `import`. It is 4 | a syntax error to write such an alias in JavaScript code: 5 | 6 | ```javascript 7 | import m = require('mod'); 8 | ``` 9 | 10 | To fix this error, use `const` instead of `import`: 11 | 12 | ```javascript 13 | const m = require('mod'); 14 | ``` 15 | 16 | Introduced in quick-lint-js version 2.8.0. 17 | -------------------------------------------------------------------------------- /docs/errors/E0275.md: -------------------------------------------------------------------------------- 1 | # E0275: newline is not allowed after 'interface' 2 | 3 | In TypeScript, the `interface` keyword must be followed by the interface's name. 4 | It is a syntax error to write a newline between `interface` and the following 5 | name: 6 | 7 | ```typescript 8 | interface 9 | HashMap { 10 | get(k: Key): Value; 11 | } 12 | ``` 13 | 14 | To fix this error, put the interface's name on the same line as the `interface` 15 | keyword: 16 | 17 | ```typescript 18 | interface HashMap 19 | { 20 | get(k: Key): Value; 21 | } 22 | ``` 23 | 24 | Introduced in quick-lint-js version 2.8.0. 25 | -------------------------------------------------------------------------------- /docs/errors/E0276.md: -------------------------------------------------------------------------------- 1 | # E0276: newline is not allowed after 'namespace' 2 | 3 | In TypeScript, the `namespace` keyword must be followed by the namespace's name. 4 | It is a syntax error to write a newline between `namespace` and the following 5 | name: 6 | 7 | ```typescript 8 | namespace 9 | reallyLongNamespaceName { 10 | export class Error {} 11 | } 12 | ``` 13 | 14 | To fix this error, put the namespace's name on the same line as the `namespace` 15 | keyword: 16 | 17 | ```typescript 18 | namespace reallyLongNamespaceName { 19 | export class Error {} 20 | } 21 | ``` 22 | 23 | Introduced in quick-lint-js version 2.8.0. 24 | -------------------------------------------------------------------------------- /docs/errors/E0277.md: -------------------------------------------------------------------------------- 1 | # E0277: newline is not allowed after 'type' 2 | 3 | In TypeScript, the `type` keyword must be followed by the type's name. 4 | It is a syntax error to write a newline between `type` and the following 5 | name: 6 | 7 | ```typescript 8 | export type 9 | ReallyLongTypeAliasName 10 | = number; 11 | ``` 12 | 13 | To fix this error, put the type alias' name on the same line as the `type` 14 | keyword: 15 | 16 | ```typescript 17 | type ReallyLongTypeAliasName 18 | = number; 19 | ``` 20 | 21 | Introduced in quick-lint-js version 2.8.0. 22 | -------------------------------------------------------------------------------- /docs/errors/E0279.md: -------------------------------------------------------------------------------- 1 | # E0279: TypeScript type exports are not allowed in JavaScript 2 | 3 | 4 | 5 | This error has been renamed to E0279. 6 | 7 | Introduced in quick-lint-js version 2.8.0. 8 | -------------------------------------------------------------------------------- /docs/errors/E0282.md: -------------------------------------------------------------------------------- 1 | # E0282: use ':' instead of 'as' to type a function parameter 2 | 3 | The `as` operator is not allowed in function parameters. It is a syntax error to 4 | use `as` to annotate a parameter with a type: 5 | 6 | ```typescript 7 | function reversed(array as T[]): T[] { 8 | return [...array].reverse(); 9 | } 10 | ``` 11 | 12 | To fix this error, write `:` instead of `as`: 13 | 14 | ```typescript 15 | function reversed(array: T[]): T[] { 16 | return [...array].reverse(); 17 | } 18 | ``` 19 | 20 | Introduced in quick-lint-js version 2.8.0. 21 | -------------------------------------------------------------------------------- /docs/errors/E0284.md: -------------------------------------------------------------------------------- 1 | # E0284: missing TypeScript type 2 | 3 | In TypeScript, you can annotate the type of a variable by writing `:` after its 4 | name in its declaration. It is a syntax error to omit the type after `:`: 5 | 6 | ```typescript 7 | function api(endpoint: ): Promise { 8 | // ... 9 | } 10 | ``` 11 | 12 | To fix this error, write a type after the `:`: 13 | 14 | ```typescript 15 | function api(endpoint: string): Promise { 16 | // ... 17 | } 18 | ``` 19 | 20 | Alternatively, remove the `:`: 21 | 22 | ```typescript 23 | function api(endpoint): Promise { 24 | // ... 25 | } 26 | ``` 27 | 28 | Introduced in quick-lint-js version 2.9.0. 29 | -------------------------------------------------------------------------------- /docs/errors/E0286.md: -------------------------------------------------------------------------------- 1 | # E0286: lower case letters compared with toUpperCase 2 | 3 | Comparing the result of a function named `toUpperCase` to a string literal with 4 | one or more lower case letters will always yield the same result. 5 | 6 | ```javascript 7 | let x = "BaNaNa"; 8 | 9 | // always returns 'false' 10 | if (x.toUpperCase() === "banana") { 11 | } 12 | 13 | // always returns 'true' 14 | if (x.toUpperCase() !== "banana") { 15 | } 16 | ``` 17 | 18 | Introduced in quick-lint-js version 2.9.0. 19 | -------------------------------------------------------------------------------- /docs/errors/E0287.md: -------------------------------------------------------------------------------- 1 | # E0287: upper case letters compared with toLowerCase 2 | 3 | Comparing the result of a function named `toLowerCase` to a string literal with 4 | one or more upper case letters will always yield the same result. 5 | 6 | ```javascript 7 | let x = "BaNaNa"; 8 | 9 | // always returns 'false' 10 | if (x.toLowerCase() === "BANANA") { 11 | } 12 | 13 | // always returns 'true' 14 | if (x.toLowerCase() !== "BANANA") { 15 | } 16 | ``` 17 | 18 | Introduced in quick-lint-js version 2.9.0. 19 | -------------------------------------------------------------------------------- /docs/errors/E0292.md: -------------------------------------------------------------------------------- 1 | # E0292: missing semicolon after interface method 2 | 3 | TypeScript methods in interfaces must end with either a semicolon (`;`) or a 4 | newline. It is a syntax error to omit the semicolon and write something on the 5 | same line after the method: 6 | 7 | ```typescript 8 | interface Container { 9 | getItem(key: string): number | string void; 10 | } 11 | ``` 12 | 13 | To fix this error, write a correct type for the method: 14 | 15 | ```typescript 16 | interface Container { 17 | getItem(key: string): number | string | void; 18 | } 19 | ``` 20 | 21 | Introduced in quick-lint-js version 2.10.0. 22 | -------------------------------------------------------------------------------- /docs/errors/E0300.md: -------------------------------------------------------------------------------- 1 | # E0300: newline is not allowed after 'abstract' 2 | 3 | In TypeScript, the `abstract` keyword can be used to mark a class as abstract. 4 | It is an error to put a line break between the `abstract` keyword and the 5 | `class` keyword: 6 | 7 | ```typescript 8 | export abstract 9 | class Logger { 10 | abstract log(message: string); 11 | } 12 | ``` 13 | 14 | To fix this error, put `abstract` and `class` on the same line: 15 | 16 | ```typescript 17 | export abstract class Logger { 18 | abstract log(message: string); 19 | } 20 | ``` 21 | 22 | Introduced in quick-lint-js version 2.10.0. 23 | -------------------------------------------------------------------------------- /docs/errors/E0310.md: -------------------------------------------------------------------------------- 1 | # E0310: optional parameter cannot have both '?' and initializer; remove '?' 2 | 3 | In TypeScript, parameters can be explicitly marked as optional with `?`. It is a 4 | syntax error to write a default initializer for a parameter marked optional with 5 | `?`: 6 | 7 | ```typescript 8 | async function download(uri, options? = {}) { 9 | /* ... */ 10 | } 11 | ``` 12 | 13 | Parameters with default initializers are always optional. To fix this syntax 14 | error, remove the redundant `?`: 15 | 16 | ```typescript 17 | async function download(uri, options = {}) { 18 | /* ... */ 19 | } 20 | ``` 21 | 22 | Introduced in quick-lint-js version 2.10.0. 23 | -------------------------------------------------------------------------------- /docs/errors/E0311.md: -------------------------------------------------------------------------------- 1 | # E0311: missing parentheses around parameter; TypeScript optional parameter requires parentheses 2 | 3 | In TypeScript, parameters can be explicitly marked as optional with `?`. It is a 4 | syntax error to write an arrow function with an optional parameter without 5 | parentheses around the parameter list: 6 | 7 | ```typescript 8 | const error = message? => { 9 | throw new Error(message); 10 | }; 11 | ``` 12 | 13 | To fix this error, write parentheses around the parameter list: 14 | 15 | ```typescript 16 | const error = (message?) => { 17 | throw new Error(message); 18 | }; 19 | ``` 20 | 21 | Introduced in quick-lint-js version 2.10.0. 22 | -------------------------------------------------------------------------------- /docs/errors/E0323.md: -------------------------------------------------------------------------------- 1 | # E0323: optional tuple elements cannot come after spread elements 2 | 3 | TypeScript tuple types can contain spread elements and optional elements. 4 | However, it is a syntax error to use both a spread element and an optional 5 | element in a single tuple type: 6 | 7 | ```typescript 8 | function foo(): [...number[], string?] { 9 | /* ... */ 10 | } 11 | ``` 12 | 13 | To fix this error, use a union type instead of an optional element: 14 | 15 | ```typescript 16 | function foo(): [...number[]] 17 | | [...number[], string] { 18 | /* ... */ 19 | } 20 | ``` 21 | 22 | Introduced in quick-lint-js version 2.10.0. 23 | -------------------------------------------------------------------------------- /docs/errors/E0324.md: -------------------------------------------------------------------------------- 1 | # E0324: spread tuple elements cannot be optional 2 | 3 | ```config-for-examples 4 | { 5 | "globals": { 6 | "Options": true 7 | } 8 | } 9 | ``` 10 | 11 | TypeScript tuple types can contain spread elements. By definition, a spread 12 | element is optional. It is a syntax error to write `?` to mark a spread element 13 | as optional: 14 | 15 | ```typescript 16 | function foo(...args: [...string[]?, Options]) { 17 | /* ... */ 18 | } 19 | ``` 20 | 21 | To fix this error, remove the `?`: 22 | 23 | ```typescript 24 | function foo(...args: [...string[], Options]) { 25 | /* ... */ 26 | } 27 | ``` 28 | 29 | Introduced in quick-lint-js version 2.10.0. 30 | -------------------------------------------------------------------------------- /docs/errors/E0325.md: -------------------------------------------------------------------------------- 1 | # E0325: cannot delete variables in TypeScript 2 | 3 | In JavaScript, it is possible to use `delete` on a variable. In TypeScript, 4 | deleting a variable is an error: 5 | 6 | ```typescript 7 | let x = 3; 8 | delete x; 9 | console.log(x); 10 | ``` 11 | 12 | To fix this error, remove the `delete` statement: 13 | 14 | ```typescript 15 | let x = 3; 16 | console.log(x); 17 | ``` 18 | 19 | See also: E0086 20 | 21 | Introduced in quick-lint-js version 2.10.0. 22 | -------------------------------------------------------------------------------- /docs/errors/E0326.md: -------------------------------------------------------------------------------- 1 | # E0326: 'async export' is not allowed; write 'export async' instead 2 | 3 | Functions can be marked using the `async` keyword like `async function f() {`. 4 | It is a syntax error to write the `async` keyword after the `function` keyword: 5 | 6 | ```javascript 7 | async export function f() { 8 | return 0; 9 | } 10 | ``` 11 | 12 | To fix this error, replace `async export` with `export async`: 13 | 14 | ```javascript 15 | export async function f() { 16 | return 0; 17 | } 18 | ``` 19 | -------------------------------------------------------------------------------- /docs/errors/E0327.md: -------------------------------------------------------------------------------- 1 | # E0327: 'function async' is not allowed; write 'async function' instead 2 | 3 | Functions can be marked with the `async` keyword. It is a syntax error to write 4 | the `async keyword after the `function` keyword: 5 | 6 | ```javascript 7 | function async f() { 8 | return 0; 9 | } 10 | ``` 11 | 12 | To fix this error, replace `function async` with `async function`: 13 | 14 | ```javascript 15 | async function f() { 16 | return 0; 17 | } 18 | ``` 19 | -------------------------------------------------------------------------------- /docs/errors/E0349.md: -------------------------------------------------------------------------------- 1 | # E0349: function parameter cannot be parenthesized 2 | 3 | Using parenthesis around the function parameter is invalid. 4 | 5 | ```typescript 6 | let g = ((x)) => { }; 7 | let f = function ((x)) { }; 8 | ``` 9 | 10 | To fix this error, remove the parenthesis. 11 | 12 | ```typescript 13 | let g = (x) => { }; 14 | let f = function (x) { }; 15 | ``` 16 | -------------------------------------------------------------------------------- /docs/errors/E0369.md: -------------------------------------------------------------------------------- 1 | # E0369: nullish coalescing operator does nothing when left operand is never null 2 | 3 | When left operand is never null (such as comparisons and string literals), the expression will always resolve to the left operand value 4 | 5 | ```typescript 6 | let g = "hello" ?? "world"; 7 | let f = 4 == 5 ?? true; 8 | ``` 9 | 10 | To fix this warning, remove the nullish coalescing operaror (??) and the right operand. 11 | 12 | ```typescript 13 | let g = "hello"; 14 | let f = 4 == 5; 15 | ``` 16 | -------------------------------------------------------------------------------- /docs/errors/E0374.md: -------------------------------------------------------------------------------- 1 | # E0374: unexpected whitespace between '!' and '==' 2 | 3 | `x! == y` is a typo for a strict inequality, as in `x !== y`: 4 | 5 | ```javascript 6 | let x = 17; 7 | let y = 38; 8 | if (x! == y) { 9 | alert('Not equal!'); 10 | } 11 | ``` 12 | 13 | To fix the warning, replace `! ==` with ` !==`: 14 | 15 | ```javascript 16 | let x = 17; 17 | let y = 38; 18 | if (x !== y) { 19 | alert("Not equal!"); 20 | } 21 | ``` 22 | 23 | See also: E0373 24 | -------------------------------------------------------------------------------- /docs/errors/E0376.md: -------------------------------------------------------------------------------- 1 | # E0376: JSX prop is missing an expression 2 | 3 | Every attribute in JSX with a prop requires an expression: 4 | 5 | ```javascript-jsx 6 | function Header({columns}) { 7 | return (<> 8 |
Name
9 | ); 10 | } 11 | ``` 12 | 13 | To fix the mistake, add a valid expression to the prop: 14 | 15 | ```javascript-jsx 16 | function Header({columns}) { 17 | return (<> 18 |
Name
19 | ); 20 | } 21 | ``` -------------------------------------------------------------------------------- /docs/errors/E0379.md: -------------------------------------------------------------------------------- 1 | # E0379: optional parameter cannot be followed by a required parameter 2 | 3 | Optional parameters need to be placed after the required ones. 4 | 5 | ```typescript 6 | function f(param1?: number, param2: number) { 7 | if (param1) { 8 | return param1 9 | } 10 | return param2; 11 | } 12 | ``` 13 | 14 | To fix this warning, we need to place the required parameter(s) first, followed by the optional parameters 15 | 16 | ```typescript 17 | function f(param2: number, param1?: number) { 18 | if (param1) { 19 | return param1 20 | } 21 | return param2; 22 | } 23 | ``` 24 | -------------------------------------------------------------------------------- /docs/errors/E0381.md: -------------------------------------------------------------------------------- 1 | # E0381: Typescript does not allow keywords to contain escape sequence 2 | 3 | The following code is legal in JavaScript but is illegal in TypeScript 4 | 5 | ```typescript 6 | class C { 7 | \u{63}onstructor() {} // equivalent to: constructor() {} 8 | } 9 | ``` 10 | 11 | To fix this error, remove the escape sequence in the keyword. 12 | 13 | 14 | ```typescript 15 | class C { 16 | constructor() {} // equivalent to: constructor() {} 17 | } 18 | ``` 19 | -------------------------------------------------------------------------------- /docs/errors/E0383.md: -------------------------------------------------------------------------------- 1 | # E0383: variable assignment to self is no-op 2 | 3 | ```config-for-examples 4 | { 5 | "globals": { 6 | "previous": true, 7 | "switchToPage": true 8 | } 9 | } 10 | ``` 11 | 12 | The following contains a no-op (`next = next;`): 13 | 14 | ```javascript 15 | let next = 0; 16 | if (previous !== null) { 17 | next = next; 18 | } 19 | switchToPage(next); 20 | ``` 21 | 22 | To fix this, change the assignment so it's not assigning a variable to itself: 23 | 24 | ```javascript 25 | let next = 0; 26 | if (previous !== null) { 27 | next = previous; 28 | } 29 | switchToPage(next); 30 | ``` 31 | -------------------------------------------------------------------------------- /docs/errors/E0452.md: -------------------------------------------------------------------------------- 1 | # E0452: empty parenthesis after control statement 2 | 3 | Leaving parenthesis empty after control statements (`if`, `while`, `switch`, 4 | `with`) is a syntax error. 5 | 6 | ```javascript 7 | while () { 8 | console.log("Oops!..") 9 | } 10 | ``` 11 | 12 | If the intention here was to create an infinite loop, the implementation would 13 | be this: 14 | 15 | ```javascript 16 | while (true) { 17 | console.log("Now, that's an infinite loop"); 18 | } 19 | ``` 20 | -------------------------------------------------------------------------------- /docs/errors/E0707.md: -------------------------------------------------------------------------------- 1 | # E0707: classes cannot be named 'await' in async function 2 | 3 | 4 | 5 | This error has been renamed to E0069. 6 | 7 | Introduced in quick-lint-js version 2.5.0. 8 | -------------------------------------------------------------------------------- /docs/errors/E0708.md: -------------------------------------------------------------------------------- 1 | # E0708: unexpected '...'; expected expression 2 | 3 | The spread ('...') operator must precede an expression: 4 | 5 | ```javascript 6 | const arr1 = [1, 2, 3]; 7 | const arr2 = [4, 5, 6]; 8 | 9 | const arr3 = [...arr1, ...]; 10 | ``` 11 | 12 | To fix this error, insert a valid expression after the operator: 13 | 14 | ```javascript 15 | const arr1 = [1, 2, 3]; 16 | const arr2 = [4, 5, 6]; 17 | 18 | const arr3 = [...arr1, ...arr2]; 19 | 20 | ``` -------------------------------------------------------------------------------- /docs/errors/E0709.md: -------------------------------------------------------------------------------- 1 | # E0709: expected variable name after '...' 2 | 3 | The spread operator ('...') must precede a variable name. 4 | 5 | ```javascript 6 | const numbers = () => { return [1, 2, 3, 4] }; 7 | const [numberOne, numberTwo, ...] = numbers(); 8 | ``` 9 | 10 | To fix this mistake, place the identifier after '...': 11 | 12 | ```javascript 13 | const numbers = () => { return [1, 2, 3, 4] }; 14 | const [numberOne, numberTwo, ...rest] = numbers(); 15 | ``` 16 | -------------------------------------------------------------------------------- /docs/errors/E0710.md: -------------------------------------------------------------------------------- 1 | # E0710: '^' is the XOR operator; to exponentiate, use '**' instead 2 | 3 | The Exclusive OR operator ^ can sometimes be mistaken for the 4 | exponentiation operator **. 5 | 6 | ```javascript 7 | let x = 2 ^ 8 8 | ``` 9 | 10 | If the intention was to exponentiate, the operator ^ should be replaced 11 | with ** 12 | 13 | ```javascript 14 | let x = 2 ** 8 15 | ``` 16 | 17 | Alternatively, if the intention was to use the ^ operator for XOR operation, 18 | The resulting literal could be used directly (2 ^ 8 = 10) 19 | 20 | ```javascript 21 | let x = 10 22 | ``` 23 | -------------------------------------------------------------------------------- /docs/errors/E0712.md: -------------------------------------------------------------------------------- 1 | # E0712: missing ',' between array elements 2 | 3 | This error occurs when there is a missing comma (',') between elements in an array 4 | declaration or initialization. In JavaScript, commas are used to separate individual 5 | elements within an array, and the absence of a comma will lead to a syntax error. 6 | 7 | ```javascript 8 | let myArray = [1 2 3]; 9 | ``` 10 | 11 | To fix this error, you need to add a comma between each element within the array declaration or initialization 12 | 13 | ```javascript 14 | let myArray = [1, 2, 3]; 15 | ``` 16 | -------------------------------------------------------------------------------- /docs/errors/E0717.md: -------------------------------------------------------------------------------- 1 | # E0717: namespace alias cannot use 'import type' 2 | 3 | 4 | The error message "namespace alias cannot use 'import type'" occurs when 5 | trying to use the 'import type' syntax with an alias. 6 | 7 | 8 | ```typescript 9 | import type A = ns; 10 | ``` 11 | 12 | 13 | To fix this error, you need to use the regular 'import' syntax instead 14 | of 'import type' when using an alias. 15 | 16 | 17 | ```typescript 18 | import A = ns; 19 | ``` 20 | -------------------------------------------------------------------------------- /docs/errors/E0718.md: -------------------------------------------------------------------------------- 1 | # E0718: using a '.' after a '?.' might fail, since '?.' might return 'undefined' 2 | 3 | This diagnostic has been removed in quick-lint-js version 3.2.0. 4 | 5 | 6 | -------------------------------------------------------------------------------- /docs/errors/E0719.md: -------------------------------------------------------------------------------- 1 | # E0719: TypeScript namespace aliases are not allowed in JavaScript 2 | 3 | ```config-for-examples 4 | { 5 | "globals": { 6 | "goog": true 7 | } 8 | } 9 | ``` 10 | 11 | TypeScript supports aliasing namespaces and namespace members using `import`. It 12 | is a syntax error to write such an alias in JavaScript code: 13 | 14 | ```javascript 15 | import Chart = goog.Chart; 16 | ``` 17 | 18 | To fix this error, use `const` instead of `import`: 19 | 20 | ```javascript 21 | const Chart = goog.Chart; 22 | ``` 23 | ```javascript 24 | const { Chart } = goog; 25 | ``` 26 | -------------------------------------------------------------------------------- /docs/man/.gitignore: -------------------------------------------------------------------------------- 1 | # Installation directory for Asciidoctor. Created by ../generate-man-pages. 2 | /gems/ 3 | -------------------------------------------------------------------------------- /fuzz/README.txt: -------------------------------------------------------------------------------- 1 | This directory contains programs which find bugs in quick-lint-js components 2 | using fuzz testing. Fuzz testing feeds randomized inputs to functions and 3 | detects crashes and other problems. 4 | 5 | For documentation on building and running these programs, see docs/FUZZING.md. 6 | -------------------------------------------------------------------------------- /infrastructure/README.md: -------------------------------------------------------------------------------- 1 | # quick-lint-js infrastructure 2 | 3 | This directory contains scripts and other stuff for hosting the quick-lint-js 4 | website and related stuff. 5 | 6 | ## Files and folders 7 | 8 | * `quick-lint-js-web-2`: Configuration and Ansible scripts for the HTTP server. 9 | -------------------------------------------------------------------------------- /infrastructure/quick-lint-js-web-2/.gitignore: -------------------------------------------------------------------------------- 1 | # Created by instructions in README.md: 2 | /inventory-dev.yml 3 | /vault.password 4 | /vault.yml 5 | -------------------------------------------------------------------------------- /infrastructure/quick-lint-js-web-2/dev-certificates/.gitignore: -------------------------------------------------------------------------------- 1 | # Generated by instructions in ../README.md: 2 | */fullchain.pem 3 | */privkey.pem 4 | /mkcert 5 | -------------------------------------------------------------------------------- /infrastructure/quick-lint-js-web-2/roles/analytics/temp/.gitignore: -------------------------------------------------------------------------------- 1 | # This directory is a staging area for 'yarn run package' in 2 | # ../../website/analytics. See ../tasks/main.yml. 3 | /quick-lint-js-website-analytics.tar.gz 4 | -------------------------------------------------------------------------------- /infrastructure/quick-lint-js-web-2/roles/apache/files/mods-available/fcgid.conf: -------------------------------------------------------------------------------- 1 | 2 | FcgidConnectTimeout 20 3 | FcgidMaxRequestLen 268435456 4 | FcgidMaxProcessesPerClass 10 5 | FcgidIOTimeout 300 6 | AddType application/x-httpd-php .php 7 | AddHandler application/x-httpd-php .php 8 | Alias /php8.1-fcgi /usr/lib/cgi-bin/php8.1-fcgi 9 | 10 | AddHandler fcgid-script .fcgi 11 | 12 | 13 | -------------------------------------------------------------------------------- /infrastructure/quick-lint-js-web-2/roles/apache/files/ports.conf: -------------------------------------------------------------------------------- 1 | # If you just change the port or add more ports here, you will likely also 2 | # have to change the VirtualHost statement in 3 | # /etc/apache2/sites-enabled/000-default.conf 4 | 5 | Listen 80 6 | 7 | 8 | Listen 443 9 | 10 | 11 | 12 | Listen 443 13 | 14 | 15 | # vim: syntax=apache ts=4 sw=4 sts=4 sr noet 16 | -------------------------------------------------------------------------------- /infrastructure/quick-lint-js-web-2/roles/nodejs/files/nodesource.gpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quick-lint/quick-lint-js/f7519e7567b743fa06dd75580045fc2b06b10c7c/infrastructure/quick-lint-js-web-2/roles/nodejs/files/nodesource.gpg -------------------------------------------------------------------------------- /plugin/README.txt: -------------------------------------------------------------------------------- 1 | This directory contains plugins for using quick-lint-js in various code editors. 2 | -------------------------------------------------------------------------------- /plugin/emacs/.gitignore: -------------------------------------------------------------------------------- 1 | # Created by create-archive. 2 | .melpa-cache/ 3 | -------------------------------------------------------------------------------- /plugin/vim/.gitignore: -------------------------------------------------------------------------------- 1 | # Created by create-archive. 2 | /quick-lint-js-vim.zip 3 | -------------------------------------------------------------------------------- /plugin/vscode-lsp/.gitignore: -------------------------------------------------------------------------------- 1 | # Created by instructions in README.md. 2 | /node_modules/ 3 | /quick-lint-js-lsp-*.vsix 4 | -------------------------------------------------------------------------------- /plugin/vscode-lsp/.vscode/launch.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": "0.2.0", 3 | "configurations": [ 4 | { 5 | "name": "Launch VS Code with Extension", 6 | "type": "extensionHost", 7 | "request": "launch", 8 | "runtimeExecutable": "${execPath}", 9 | "args": ["--extensionDevelopmentPath=${workspaceRoot}"] 10 | } 11 | ] 12 | } 13 | -------------------------------------------------------------------------------- /plugin/vscode-lsp/CHANGELOG.md: -------------------------------------------------------------------------------- 1 | ../../docs/CHANGELOG.md -------------------------------------------------------------------------------- /plugin/vscode-lsp/README.md: -------------------------------------------------------------------------------- 1 | # quick-lint-js Visual Studio Code plugin 2 | 3 | This directory contains a plugin for the [Visual Studio Code 4 | editor][VisualStudioCode]. 5 | 6 | ## Building 7 | 8 | To build the extension, run the following commands: 9 | 10 | $ yarn 11 | $ ./node_modules/.bin/vsce package 12 | 13 | This will create a file called `quick-lint-js-lsp-3.2.0.vsix`. 14 | 15 | [VisualStudioCode]: https://code.visualstudio.com/ 16 | -------------------------------------------------------------------------------- /plugin/vscode/.gitignore: -------------------------------------------------------------------------------- 1 | # Created by instructions in BUILDING.md. 2 | /.vscode-test/ 3 | /dist/ 4 | /node_modules/ 5 | /quick-lint-js-*.vsix 6 | -------------------------------------------------------------------------------- /plugin/vscode/.vscodeignore: -------------------------------------------------------------------------------- 1 | **/* 2 | 3 | !CHANGELOG.md 4 | !LICENSE 5 | !LICENSE-icon.txt 6 | !PERFORMANCE-TRACING.md 7 | !README.md 8 | !dist/* 9 | !extension.js 10 | !icon.png 11 | !package.json 12 | !performance-writer.js 13 | -------------------------------------------------------------------------------- /plugin/vscode/CHANGELOG.md: -------------------------------------------------------------------------------- 1 | ../../docs/CHANGELOG.md -------------------------------------------------------------------------------- /plugin/vscode/LICENSE-icon.txt: -------------------------------------------------------------------------------- 1 | ../../dist/artwork/LICENSE.txt -------------------------------------------------------------------------------- /plugin/vscode/demo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quick-lint/quick-lint-js/f7519e7567b743fa06dd75580045fc2b06b10c7c/plugin/vscode/demo.png -------------------------------------------------------------------------------- /plugin/vscode/demo.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quick-lint/quick-lint-js/f7519e7567b743fa06dd75580045fc2b06b10c7c/plugin/vscode/demo.webp -------------------------------------------------------------------------------- /plugin/vscode/icon.png: -------------------------------------------------------------------------------- 1 | ../../dist/artwork/dusty-right-256x256.png -------------------------------------------------------------------------------- /plugin/vscode/quick-lint-js.config: -------------------------------------------------------------------------------- 1 | { 2 | "global-groups": [ 3 | "ecmascript", 4 | "node.js" 5 | ] 6 | } 7 | -------------------------------------------------------------------------------- /plugin/vscode/test/empty_test_workspace/.vscode/settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "javascript.validate.enable": false, 3 | "typescript.validate.enable": false 4 | } 5 | -------------------------------------------------------------------------------- /po/README.md: -------------------------------------------------------------------------------- 1 | This directory contains translations for quick-lint-js. The .po and .pot files 2 | are used by [GNU gettext][gettext]'s tooling. 3 | 4 | See [docs/TRANSLATING.md](../docs/TRANSLATING.md) for instructions on updating 5 | and compiling files in this directory. 6 | 7 | [gettext]: https://www.gnu.org/software/gettext/ 8 | -------------------------------------------------------------------------------- /proofs/.gitignore: -------------------------------------------------------------------------------- 1 | # Created by the TLA+ Toolbox: 2 | /*.toolbox/Model/ 3 | /*.toolbox/Model_SnapShot_*/ 4 | /*.toolbox/*_Model_SnapShot_*.launch 5 | -------------------------------------------------------------------------------- /proofs/README.md: -------------------------------------------------------------------------------- 1 | # proofs 2 | 3 | This directory contains TLA+ proofs for some algorithms in quick-lint-js's C++ 4 | code. 5 | 6 | * [WindowsPipeReadThread.tla][]: Proof of an algorithm used in 7 | `Event_Loop_Windows`. 8 | -------------------------------------------------------------------------------- /proofs/WindowsPipeReadThread.toolbox/.settings/org.lamport.tla.toolbox.prefs: -------------------------------------------------------------------------------- 1 | ProjectRootFile=PARENT-1-PROJECT_LOC/WindowsPipeReadThread.tla 2 | eclipse.preferences.version=1 3 | -------------------------------------------------------------------------------- /src/README.txt: -------------------------------------------------------------------------------- 1 | This directory contains the majority of quick-lint-js' production code. 2 | -------------------------------------------------------------------------------- /src/quick-lint-js/cli/README.txt: -------------------------------------------------------------------------------- 1 | This directory contains code for the Command Line Interface (CLI), i.e. the main 2 | quick-lint-js executable. 3 | -------------------------------------------------------------------------------- /src/quick-lint-js/cli/quick-lint-js.rc: -------------------------------------------------------------------------------- 1 | IDI_ICON1 ICON DISCARDABLE "../../../dist/artwork/dusty-app.ico" 2 | -------------------------------------------------------------------------------- /src/quick-lint-js/configuration/README.txt: -------------------------------------------------------------------------------- 1 | This directory contains code managing quick-lint-js.config files. 2 | 3 | See documentation for quick-lint-js.config in docs/config.adoc. 4 | -------------------------------------------------------------------------------- /src/quick-lint-js/container/README.txt: -------------------------------------------------------------------------------- 1 | This directory contains code for generally-reusable containers (either standard 2 | or custom), algorithms on containers, and memory allocators. 3 | -------------------------------------------------------------------------------- /src/quick-lint-js/debug/.gitignore: -------------------------------------------------------------------------------- 1 | /node_modules/ 2 | -------------------------------------------------------------------------------- /src/quick-lint-js/debug/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "scripts": { 3 | "fmt": "prettier --write \"**/*.html\" \"**/*.mjs\"", 4 | "test": "node --test" 5 | }, 6 | "engines": { 7 | "node": ">=18.0.0" 8 | }, 9 | "devDependencies": { 10 | "prettier": "2.8.4" 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /src/quick-lint-js/debug/yarn.lock: -------------------------------------------------------------------------------- 1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. 2 | # yarn lockfile v1 3 | 4 | 5 | prettier@2.8.4: 6 | version "2.8.4" 7 | resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.8.4.tgz#34dd2595629bfbb79d344ac4a91ff948694463c3" 8 | integrity sha512-vIS4Rlc2FNh0BySk3Wkd6xmwxB0FpOndW5fisM5H8hsZSxU2VWVB5CWIkIjWvrHjIhxk2g3bfMKM87zNTrZddw== 9 | -------------------------------------------------------------------------------- /src/quick-lint-js/diag/README.txt: -------------------------------------------------------------------------------- 1 | This directory contains code for quick-lint-js' diagnostic reporting 2 | infrastructure, including the list of diagnostics in diagnostic-types.h. 3 | 4 | -------------------------------------------------------------------------------- /src/quick-lint-js/fe/README.txt: -------------------------------------------------------------------------------- 1 | This directory contains most code which is part of the "front end" of a textbook 2 | compiler: lexer, parser, the semantic analyzer, and ASTs. 3 | 4 | Diagnostics are in the separate ../diag/ directory. 5 | -------------------------------------------------------------------------------- /src/quick-lint-js/i18n/README.txt: -------------------------------------------------------------------------------- 1 | This directory contains code for internationalizing quick-lint-js so it supports 2 | different human languages. 3 | 4 | Translation files are stored in the po/ directory. See docs/TRANSLATION.md for 5 | more information. 6 | -------------------------------------------------------------------------------- /src/quick-lint-js/io/README.txt: -------------------------------------------------------------------------------- 1 | This directory contains code for dealing with filesystems and inter-process 2 | communication. 3 | -------------------------------------------------------------------------------- /src/quick-lint-js/logging/README.txt: -------------------------------------------------------------------------------- 1 | This directory contains code for debug logging and performance tracing. 2 | -------------------------------------------------------------------------------- /src/quick-lint-js/lsp/README.txt: -------------------------------------------------------------------------------- 1 | This directory contains code for the Language Server Protocol server. 2 | 3 | LSP specification: https://microsoft.github.io/language-server-protocol/specifications/specification-current/ 4 | -------------------------------------------------------------------------------- /src/quick-lint-js/port/README.txt: -------------------------------------------------------------------------------- 1 | This directory contains code to port quick-lint-js to older compilers, different 2 | compilers, buggy compilers, and different platforms. 3 | -------------------------------------------------------------------------------- /src/quick-lint-js/reflection/README.txt: -------------------------------------------------------------------------------- 1 | This directory contains code for implementing C++ reflection and code 2 | generation. 3 | -------------------------------------------------------------------------------- /src/quick-lint-js/util/README.txt: -------------------------------------------------------------------------------- 1 | This directory contains unrelated utility code. There is no theme relating 2 | modules in this directory. 3 | -------------------------------------------------------------------------------- /test/README.md: -------------------------------------------------------------------------------- 1 | This directory contains quick-lint-js' automated test suite. See the 2 | [building-from-source guide][build-from-source] for instructions on building and 3 | running these tests. 4 | 5 | [build-from-source]: https://quick-lint-js.com/contribute/build-from-source/ 6 | -------------------------------------------------------------------------------- /tools/.gitignore: -------------------------------------------------------------------------------- 1 | # Created by test-all-js-engines. 2 | /.js-engines/ 3 | -------------------------------------------------------------------------------- /tools/README.txt: -------------------------------------------------------------------------------- 1 | This directory contains tools used by developers for various maintenance tasks. 2 | -------------------------------------------------------------------------------- /tools/browser-globals/.gitignore: -------------------------------------------------------------------------------- 1 | # Created by instructions in README.md. 2 | /node_modules/ 3 | /web-specs/ 4 | -------------------------------------------------------------------------------- /tools/browser-globals/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "scripts": { 3 | "fmt": "prettier --write '*.js' '*.json'" 4 | }, 5 | "dependencies": { 6 | "parse5": "^7.1.2", 7 | "webidl2": "^24.2.2" 8 | }, 9 | "devDependencies": { 10 | "prettier": "^2.8.4" 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /tools/build-sizes/.gitignore: -------------------------------------------------------------------------------- 1 | # Created by instructions in index.html. 2 | /data.json 3 | -------------------------------------------------------------------------------- /tools/build-sizes/quick-lint-js.config: -------------------------------------------------------------------------------- 1 | { 2 | "global-groups": [ 3 | "browser", 4 | "ecmascript" 5 | ], 6 | "globals": { 7 | "Chart": true 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /tools/ci-analytics/.gitignore: -------------------------------------------------------------------------------- 1 | # User-generated secret token used by github_api.go. 2 | /token 3 | 4 | # Output of load_github_actions.go. 5 | /analytics.sqlite3 6 | -------------------------------------------------------------------------------- /tools/ci-analytics/go.mod: -------------------------------------------------------------------------------- 1 | module quick-lint-js.com/ci-analytics 2 | 3 | go 1.17 4 | 5 | require github.com/mattn/go-sqlite3 v1.14.14 6 | -------------------------------------------------------------------------------- /tools/ci-analytics/go.sum: -------------------------------------------------------------------------------- 1 | github.com/mattn/go-sqlite3 v1.14.14 h1:qZgc/Rwetq+MtyE18WhzjokPD93dNqLGNT3QJuLvBGw= 2 | github.com/mattn/go-sqlite3 v1.14.14/go.mod h1:NyWgC/yNuGj7Q9rpYnZvas74GogHl5/Z4A/KQRfk6bU= 3 | -------------------------------------------------------------------------------- /tools/generate-lex-unicode/.gitignore: -------------------------------------------------------------------------------- 1 | # Created by `yarn`. 2 | /node_modules/ 3 | -------------------------------------------------------------------------------- /tools/generate-lex-unicode/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "scripts": { 3 | "fmt": "prettier --write '*.js' '*.json'" 4 | }, 5 | "dependencies": { 6 | "@unicode/unicode-15.0.0": "*", 7 | "@unicode/unicode-15.1.0": "*" 8 | }, 9 | "devDependencies": { 10 | "prettier": "^2.8.4" 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /tools/templates/README.md: -------------------------------------------------------------------------------- 1 | # Templates 2 | 3 | This directory contains code templates useful for quick-lint-js contributors. 4 | 5 | * new.cpp: Contents of a new C++ source file. 6 | * new.h: Contents of a new C++ header file. 7 | * test-new.cpp: Contents of a new C++ test file. 8 | 9 | ## Vim 10 | 11 | To use the templates in Vim, add the following Vimscript code to your 12 | project-local Vim settings (e.g. in `.vimrc``): 13 | 14 | :source tools/templates/quick-lint-js-templates.vim 15 | 16 | ## Visual Studio Code 17 | 18 | Visual Studio Code has its own code template mechanism. See 19 | ../.vscode/README.md for details. 20 | -------------------------------------------------------------------------------- /vendor/benchmark/.clang-format: -------------------------------------------------------------------------------- 1 | --- 2 | Language: Cpp 3 | BasedOnStyle: Google 4 | PointerAlignment: Left 5 | ... 6 | -------------------------------------------------------------------------------- /vendor/benchmark/.clang-tidy: -------------------------------------------------------------------------------- 1 | --- 2 | Checks: 'clang-analyzer-*,readability-redundant-*,performance-*' 3 | WarningsAsErrors: 'clang-analyzer-*,readability-redundant-*,performance-*' 4 | HeaderFilterRegex: '.*' 5 | AnalyzeTemporaryDtors: false 6 | FormatStyle: none 7 | User: user 8 | -------------------------------------------------------------------------------- /vendor/benchmark/.github/workflows/clang-format-lint.yml: -------------------------------------------------------------------------------- 1 | name: clang-format-lint 2 | on: 3 | push: {} 4 | pull_request: {} 5 | 6 | jobs: 7 | build: 8 | runs-on: ubuntu-latest 9 | 10 | steps: 11 | - uses: actions/checkout@v2 12 | - uses: DoozyX/clang-format-lint-action@v0.13 13 | with: 14 | source: './include/benchmark ./src ./test' 15 | extensions: 'h,cc' 16 | clangFormatVersion: 12 17 | style: Google 18 | -------------------------------------------------------------------------------- /vendor/benchmark/.github/workflows/pylint.yml: -------------------------------------------------------------------------------- 1 | name: pylint 2 | 3 | on: 4 | push: 5 | branches: [ main ] 6 | pull_request: 7 | branches: [ main ] 8 | 9 | jobs: 10 | pylint: 11 | 12 | runs-on: ubuntu-latest 13 | 14 | steps: 15 | - uses: actions/checkout@v2 16 | - name: Set up Python 3.8 17 | uses: actions/setup-python@v1 18 | with: 19 | python-version: 3.8 20 | - name: Install dependencies 21 | run: | 22 | python -m pip install --upgrade pip 23 | pip install pylint pylint-exit conan 24 | - name: Run pylint 25 | run: | 26 | pylint `find . -name '*.py'|xargs` || pylint-exit $? 27 | -------------------------------------------------------------------------------- /vendor/benchmark/.github/workflows/test_bindings.yml: -------------------------------------------------------------------------------- 1 | name: test-bindings 2 | 3 | on: 4 | push: 5 | branches: [main] 6 | pull_request: 7 | branches: [main] 8 | 9 | jobs: 10 | python_bindings: 11 | runs-on: ubuntu-latest 12 | 13 | steps: 14 | - uses: actions/checkout@v2 15 | - name: Set up Python 16 | uses: actions/setup-python@v1 17 | with: 18 | python-version: 3.8 19 | - name: Install benchmark 20 | run: 21 | python setup.py install 22 | - name: Run example bindings 23 | run: 24 | python bindings/python/google_benchmark/example.py 25 | -------------------------------------------------------------------------------- /vendor/benchmark/_config.yml: -------------------------------------------------------------------------------- 1 | theme: jekyll-theme-midnight 2 | markdown: GFM 3 | -------------------------------------------------------------------------------- /vendor/benchmark/bindings/python/BUILD: -------------------------------------------------------------------------------- 1 | exports_files(glob(["*.BUILD"])) 2 | exports_files(["build_defs.bzl"]) 3 | 4 | -------------------------------------------------------------------------------- /vendor/benchmark/bindings/python/pybind11.BUILD: -------------------------------------------------------------------------------- 1 | cc_library( 2 | name = "pybind11", 3 | hdrs = glob( 4 | include = [ 5 | "include/pybind11/*.h", 6 | "include/pybind11/detail/*.h", 7 | ], 8 | exclude = [ 9 | "include/pybind11/common.h", 10 | "include/pybind11/eigen.h", 11 | ], 12 | ), 13 | copts = [ 14 | "-fexceptions", 15 | "-Wno-undefined-inline", 16 | "-Wno-pragma-once-outside-header", 17 | ], 18 | includes = ["include"], 19 | visibility = ["//visibility:public"], 20 | ) 21 | -------------------------------------------------------------------------------- /vendor/benchmark/bindings/python/python_headers.BUILD: -------------------------------------------------------------------------------- 1 | cc_library( 2 | name = "python_headers", 3 | hdrs = glob(["**/*.h"]), 4 | includes = ["."], 5 | visibility = ["//visibility:public"], 6 | ) 7 | -------------------------------------------------------------------------------- /vendor/benchmark/bindings/python/requirements.txt: -------------------------------------------------------------------------------- 1 | absl-py>=0.7.1 2 | 3 | -------------------------------------------------------------------------------- /vendor/benchmark/cmake/Config.cmake.in: -------------------------------------------------------------------------------- 1 | @PACKAGE_INIT@ 2 | 3 | include (CMakeFindDependencyMacro) 4 | 5 | find_dependency (Threads) 6 | 7 | include("${CMAKE_CURRENT_LIST_DIR}/@targets_export_name@.cmake") 8 | -------------------------------------------------------------------------------- /vendor/benchmark/cmake/Modules/FindLLVMAr.cmake: -------------------------------------------------------------------------------- 1 | include(FeatureSummary) 2 | 3 | find_program(LLVMAR_EXECUTABLE 4 | NAMES llvm-ar 5 | DOC "The llvm-ar executable" 6 | ) 7 | 8 | include(FindPackageHandleStandardArgs) 9 | find_package_handle_standard_args(LLVMAr 10 | DEFAULT_MSG 11 | LLVMAR_EXECUTABLE) 12 | 13 | SET_PACKAGE_PROPERTIES(LLVMAr PROPERTIES 14 | URL https://llvm.org/docs/CommandGuide/llvm-ar.html 15 | DESCRIPTION "create, modify, and extract from archives" 16 | ) 17 | -------------------------------------------------------------------------------- /vendor/benchmark/cmake/Modules/FindLLVMNm.cmake: -------------------------------------------------------------------------------- 1 | include(FeatureSummary) 2 | 3 | find_program(LLVMNM_EXECUTABLE 4 | NAMES llvm-nm 5 | DOC "The llvm-nm executable" 6 | ) 7 | 8 | include(FindPackageHandleStandardArgs) 9 | find_package_handle_standard_args(LLVMNm 10 | DEFAULT_MSG 11 | LLVMNM_EXECUTABLE) 12 | 13 | SET_PACKAGE_PROPERTIES(LLVMNm PROPERTIES 14 | URL https://llvm.org/docs/CommandGuide/llvm-nm.html 15 | DESCRIPTION "list LLVM bitcode and object file’s symbol table" 16 | ) 17 | -------------------------------------------------------------------------------- /vendor/benchmark/cmake/Modules/FindLLVMRanLib.cmake: -------------------------------------------------------------------------------- 1 | include(FeatureSummary) 2 | 3 | find_program(LLVMRANLIB_EXECUTABLE 4 | NAMES llvm-ranlib 5 | DOC "The llvm-ranlib executable" 6 | ) 7 | 8 | include(FindPackageHandleStandardArgs) 9 | find_package_handle_standard_args(LLVMRanLib 10 | DEFAULT_MSG 11 | LLVMRANLIB_EXECUTABLE) 12 | 13 | SET_PACKAGE_PROPERTIES(LLVMRanLib PROPERTIES 14 | DESCRIPTION "generate index for LLVM archive" 15 | ) 16 | -------------------------------------------------------------------------------- /vendor/benchmark/cmake/benchmark.pc.in: -------------------------------------------------------------------------------- 1 | prefix=@CMAKE_INSTALL_PREFIX@ 2 | exec_prefix=${prefix} 3 | libdir=${prefix}/@CMAKE_INSTALL_LIBDIR@ 4 | includedir=${prefix}/@CMAKE_INSTALL_INCLUDEDIR@ 5 | 6 | Name: @PROJECT_NAME@ 7 | Description: Google microbenchmark framework 8 | Version: @VERSION@ 9 | 10 | Libs: -L${libdir} -lbenchmark 11 | Libs.private: -lpthread 12 | Cflags: -I${includedir} 13 | -------------------------------------------------------------------------------- /vendor/benchmark/cmake/gnu_posix_regex.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | int main() { 4 | std::string str = "test0159"; 5 | regex_t re; 6 | int ec = regcomp(&re, "^[a-z]+[0-9]+$", REG_EXTENDED | REG_NOSUB); 7 | if (ec != 0) { 8 | return ec; 9 | } 10 | return regexec(&re, str.c_str(), 0, nullptr, 0) ? -1 : 0; 11 | } 12 | 13 | -------------------------------------------------------------------------------- /vendor/benchmark/cmake/llvm-toolchain.cmake: -------------------------------------------------------------------------------- 1 | find_package(LLVMAr REQUIRED) 2 | set(CMAKE_AR "${LLVMAR_EXECUTABLE}" CACHE FILEPATH "" FORCE) 3 | 4 | find_package(LLVMNm REQUIRED) 5 | set(CMAKE_NM "${LLVMNM_EXECUTABLE}" CACHE FILEPATH "" FORCE) 6 | 7 | find_package(LLVMRanLib REQUIRED) 8 | set(CMAKE_RANLIB "${LLVMRANLIB_EXECUTABLE}" CACHE FILEPATH "" FORCE) 9 | -------------------------------------------------------------------------------- /vendor/benchmark/cmake/posix_regex.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | int main() { 4 | std::string str = "test0159"; 5 | regex_t re; 6 | int ec = regcomp(&re, "^[a-z]+[0-9]+$", REG_EXTENDED | REG_NOSUB); 7 | if (ec != 0) { 8 | return ec; 9 | } 10 | int ret = regexec(&re, str.c_str(), 0, nullptr, 0) ? -1 : 0; 11 | regfree(&re); 12 | return ret; 13 | } 14 | 15 | -------------------------------------------------------------------------------- /vendor/benchmark/cmake/split_list.cmake: -------------------------------------------------------------------------------- 1 | macro(split_list listname) 2 | string(REPLACE ";" " " ${listname} "${${listname}}") 3 | endmacro() 4 | -------------------------------------------------------------------------------- /vendor/benchmark/cmake/std_regex.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | int main() { 4 | const std::string str = "test0159"; 5 | std::regex re; 6 | re = std::regex("^[a-z]+[0-9]+$", 7 | std::regex_constants::extended | std::regex_constants::nosubs); 8 | return std::regex_search(str, re) ? 0 : -1; 9 | } 10 | 11 | -------------------------------------------------------------------------------- /vendor/benchmark/cmake/steady_clock.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | int main() { 4 | typedef std::chrono::steady_clock Clock; 5 | Clock::time_point tp = Clock::now(); 6 | ((void)tp); 7 | } 8 | -------------------------------------------------------------------------------- /vendor/benchmark/cmake/thread_safety_attributes.cpp: -------------------------------------------------------------------------------- 1 | #define HAVE_THREAD_SAFETY_ATTRIBUTES 2 | #include "../src/mutex.h" 3 | 4 | int main() {} 5 | -------------------------------------------------------------------------------- /vendor/benchmark/docs/_config.yml: -------------------------------------------------------------------------------- 1 | theme: jekyll-theme-minimal -------------------------------------------------------------------------------- /vendor/benchmark/docs/index.md: -------------------------------------------------------------------------------- 1 | # Benchmark 2 | 3 | * [Assembly Tests](AssemblyTests.md) 4 | * [Dependencies](dependencies.md) 5 | * [Perf Counters](perf_counters.md) 6 | * [Platform Specific Build Instructions](platform_specific_build_instructions.md) 7 | * [Random Interleaving](random_interleaving.md) 8 | * [Releasing](releasing.md) 9 | * [Tools](tools.md) 10 | * [User Guide](user_guide.md) -------------------------------------------------------------------------------- /vendor/benchmark/requirements.txt: -------------------------------------------------------------------------------- 1 | numpy == 1.19.4 2 | scipy == 1.5.4 3 | pandas == 1.1.5 4 | -------------------------------------------------------------------------------- /vendor/benchmark/src/sleep.h: -------------------------------------------------------------------------------- 1 | #ifndef BENCHMARK_SLEEP_H_ 2 | #define BENCHMARK_SLEEP_H_ 3 | 4 | namespace benchmark { 5 | const int kNumMillisPerSecond = 1000; 6 | const int kNumMicrosPerMilli = 1000; 7 | const int kNumMicrosPerSecond = kNumMillisPerSecond * 1000; 8 | const int kNumNanosPerMicro = 1000; 9 | const int kNumNanosPerSecond = kNumNanosPerMicro * kNumMicrosPerSecond; 10 | 11 | void SleepForMilliseconds(int milliseconds); 12 | void SleepForSeconds(double seconds); 13 | } // end namespace benchmark 14 | 15 | #endif // BENCHMARK_SLEEP_H_ 16 | -------------------------------------------------------------------------------- /vendor/benchmark/test/link_main_test.cc: -------------------------------------------------------------------------------- 1 | #include "benchmark/benchmark.h" 2 | 3 | void BM_empty(benchmark::State& state) { 4 | for (auto _ : state) { 5 | benchmark::DoNotOptimize(state.iterations()); 6 | } 7 | } 8 | BENCHMARK(BM_empty); 9 | -------------------------------------------------------------------------------- /vendor/benchmark/test/templated_fixture_test.cc: -------------------------------------------------------------------------------- 1 | 2 | #include 3 | #include 4 | 5 | #include "benchmark/benchmark.h" 6 | 7 | template 8 | class MyFixture : public ::benchmark::Fixture { 9 | public: 10 | MyFixture() : data(0) {} 11 | 12 | T data; 13 | }; 14 | 15 | BENCHMARK_TEMPLATE_F(MyFixture, Foo, int)(benchmark::State& st) { 16 | for (auto _ : st) { 17 | data += 1; 18 | } 19 | } 20 | 21 | BENCHMARK_TEMPLATE_DEFINE_F(MyFixture, Bar, double)(benchmark::State& st) { 22 | for (auto _ : st) { 23 | data += 1.0; 24 | } 25 | } 26 | BENCHMARK_REGISTER_F(MyFixture, Bar); 27 | 28 | BENCHMARK_MAIN(); 29 | -------------------------------------------------------------------------------- /vendor/benchmark/tools/BUILD.bazel: -------------------------------------------------------------------------------- 1 | load("@py_deps//:requirements.bzl", "requirement") 2 | 3 | py_library( 4 | name = "gbench", 5 | srcs = glob(["gbench/*.py"]), 6 | deps = [ 7 | requirement("numpy"), 8 | requirement("scipy"), 9 | ], 10 | ) 11 | 12 | py_binary( 13 | name = "compare", 14 | srcs = ["compare.py"], 15 | python_version = "PY2", 16 | deps = [ 17 | ":gbench", 18 | ], 19 | ) 20 | -------------------------------------------------------------------------------- /vendor/benchmark/tools/gbench/Inputs/test4_run0.json: -------------------------------------------------------------------------------- 1 | { 2 | "context": { 3 | "date": "2016-08-02 17:44:46", 4 | "num_cpus": 4, 5 | "mhz_per_cpu": 4228, 6 | "cpu_scaling_enabled": false, 7 | "library_build_type": "release" 8 | }, 9 | "benchmarks": [ 10 | { 11 | "name": "whocares", 12 | "run_type": "aggregate", 13 | "aggregate_name": "zz", 14 | "aggregate_unit": "percentage", 15 | "iterations": 1000, 16 | "real_time": 0.01, 17 | "cpu_time": 0.10, 18 | "time_unit": "ns" 19 | } 20 | ] 21 | } 22 | -------------------------------------------------------------------------------- /vendor/benchmark/tools/gbench/Inputs/test4_run1.json: -------------------------------------------------------------------------------- 1 | { 2 | "context": { 3 | "date": "2016-08-02 17:44:46", 4 | "num_cpus": 4, 5 | "mhz_per_cpu": 4228, 6 | "cpu_scaling_enabled": false, 7 | "library_build_type": "release" 8 | }, 9 | "benchmarks": [ 10 | { 11 | "name": "whocares", 12 | "run_type": "aggregate", 13 | "aggregate_name": "zz", 14 | "aggregate_unit": "percentage", 15 | "iterations": 1000, 16 | "real_time": 0.005, 17 | "cpu_time": 0.15, 18 | "time_unit": "ns" 19 | } 20 | ] 21 | } 22 | -------------------------------------------------------------------------------- /vendor/benchmark/tools/gbench/__init__.py: -------------------------------------------------------------------------------- 1 | """Google Benchmark tooling""" 2 | 3 | __author__ = 'Eric Fiselier' 4 | __email__ = 'eric@efcs.ca' 5 | __versioninfo__ = (0, 5, 0) 6 | __version__ = '.'.join(str(v) for v in __versioninfo__) + 'dev' 7 | 8 | __all__ = [] 9 | -------------------------------------------------------------------------------- /vendor/benchmark/tools/requirements.txt: -------------------------------------------------------------------------------- 1 | scipy>=1.5.0 -------------------------------------------------------------------------------- /vendor/googletest/.clang-format: -------------------------------------------------------------------------------- 1 | # Run manually to reformat a file: 2 | # clang-format -i --style=file 3 | Language: Cpp 4 | BasedOnStyle: Google 5 | -------------------------------------------------------------------------------- /vendor/googletest/.github/ISSUE_TEMPLATE/config.yml: -------------------------------------------------------------------------------- 1 | blank_issues_enabled: false 2 | -------------------------------------------------------------------------------- /vendor/googletest/docs/_config.yml: -------------------------------------------------------------------------------- 1 | title: GoogleTest 2 | -------------------------------------------------------------------------------- /vendor/googletest/docs/assets/css/style.scss: -------------------------------------------------------------------------------- 1 | --- 2 | --- 3 | 4 | @import "jekyll-theme-primer"; 5 | @import "main"; 6 | -------------------------------------------------------------------------------- /vendor/googletest/docs/community_created_documentation.md: -------------------------------------------------------------------------------- 1 | # Community-Created Documentation 2 | 3 | The following is a list, in no particular order, of links to documentation 4 | created by the Googletest community. 5 | 6 | * [Googlemock Insights](https://github.com/ElectricRCAircraftGuy/eRCaGuy_dotfiles/blob/master/googletest/insights.md), 7 | by [ElectricRCAircraftGuy](https://github.com/ElectricRCAircraftGuy) 8 | -------------------------------------------------------------------------------- /vendor/googletest/googlemock/cmake/gmock.pc.in: -------------------------------------------------------------------------------- 1 | libdir=@CMAKE_INSTALL_FULL_LIBDIR@ 2 | includedir=@CMAKE_INSTALL_FULL_INCLUDEDIR@ 3 | 4 | Name: gmock 5 | Description: GoogleMock (without main() function) 6 | Version: @PROJECT_VERSION@ 7 | URL: https://github.com/google/googletest 8 | Requires: gtest = @PROJECT_VERSION@ 9 | Libs: -L${libdir} -lgmock @CMAKE_THREAD_LIBS_INIT@ 10 | Cflags: -I${includedir} @GTEST_HAS_PTHREAD_MACRO@ 11 | -------------------------------------------------------------------------------- /vendor/googletest/googlemock/cmake/gmock_main.pc.in: -------------------------------------------------------------------------------- 1 | libdir=@CMAKE_INSTALL_FULL_LIBDIR@ 2 | includedir=@CMAKE_INSTALL_FULL_INCLUDEDIR@ 3 | 4 | Name: gmock_main 5 | Description: GoogleMock (with main() function) 6 | Version: @PROJECT_VERSION@ 7 | URL: https://github.com/google/googletest 8 | Requires: gmock = @PROJECT_VERSION@ 9 | Libs: -L${libdir} -lgmock_main @CMAKE_THREAD_LIBS_INIT@ 10 | Cflags: -I${includedir} @GTEST_HAS_PTHREAD_MACRO@ 11 | -------------------------------------------------------------------------------- /vendor/googletest/googlemock/docs/README.md: -------------------------------------------------------------------------------- 1 | # Content Moved 2 | 3 | We are working on updates to the GoogleTest documentation, which has moved to 4 | the top-level [docs](../../docs) directory. 5 | -------------------------------------------------------------------------------- /vendor/googletest/googlemock/include/gmock/internal/custom/README.md: -------------------------------------------------------------------------------- 1 | # Customization Points 2 | 3 | The custom directory is an injection point for custom user configurations. 4 | 5 | ## Header `gmock-port.h` 6 | 7 | The following macros can be defined: 8 | 9 | ### Flag related macros: 10 | 11 | * `GMOCK_DECLARE_bool_(name)` 12 | * `GMOCK_DECLARE_int32_(name)` 13 | * `GMOCK_DECLARE_string_(name)` 14 | * `GMOCK_DEFINE_bool_(name, default_val, doc)` 15 | * `GMOCK_DEFINE_int32_(name, default_val, doc)` 16 | * `GMOCK_DEFINE_string_(name, default_val, doc)` 17 | -------------------------------------------------------------------------------- /vendor/googletest/googlemock/include/gmock/internal/custom/gmock-generated-actions.h: -------------------------------------------------------------------------------- 1 | // GOOGLETEST_CM0002 DO NOT DELETE 2 | 3 | #ifndef GOOGLEMOCK_INCLUDE_GMOCK_INTERNAL_CUSTOM_GMOCK_GENERATED_ACTIONS_H_ 4 | #define GOOGLEMOCK_INCLUDE_GMOCK_INTERNAL_CUSTOM_GMOCK_GENERATED_ACTIONS_H_ 5 | 6 | #endif // GOOGLEMOCK_INCLUDE_GMOCK_INTERNAL_CUSTOM_GMOCK_GENERATED_ACTIONS_H_ 7 | -------------------------------------------------------------------------------- /vendor/googletest/googlemock/scripts/README.md: -------------------------------------------------------------------------------- 1 | # Please Note: 2 | 3 | Files in this directory are no longer supported by the maintainers. They 4 | represent mostly historical artifacts and supported by the community only. There 5 | is no guarantee whatsoever that these scripts still work. 6 | -------------------------------------------------------------------------------- /vendor/googletest/googlemock/scripts/generator/cpp/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quick-lint/quick-lint-js/f7519e7567b743fa06dd75580045fc2b06b10c7c/vendor/googletest/googlemock/scripts/generator/cpp/__init__.py -------------------------------------------------------------------------------- /vendor/googletest/googletest/cmake/Config.cmake.in: -------------------------------------------------------------------------------- 1 | @PACKAGE_INIT@ 2 | include(CMakeFindDependencyMacro) 3 | if (@GTEST_HAS_PTHREAD@) 4 | set(THREADS_PREFER_PTHREAD_FLAG @THREADS_PREFER_PTHREAD_FLAG@) 5 | find_dependency(Threads) 6 | endif() 7 | 8 | include("${CMAKE_CURRENT_LIST_DIR}/@targets_export_name@.cmake") 9 | check_required_components("@project_name@") 10 | -------------------------------------------------------------------------------- /vendor/googletest/googletest/cmake/gtest.pc.in: -------------------------------------------------------------------------------- 1 | libdir=@CMAKE_INSTALL_FULL_LIBDIR@ 2 | includedir=@CMAKE_INSTALL_FULL_INCLUDEDIR@ 3 | 4 | Name: gtest 5 | Description: GoogleTest (without main() function) 6 | Version: @PROJECT_VERSION@ 7 | URL: https://github.com/google/googletest 8 | Libs: -L${libdir} -lgtest @CMAKE_THREAD_LIBS_INIT@ 9 | Cflags: -I${includedir} @GTEST_HAS_PTHREAD_MACRO@ 10 | -------------------------------------------------------------------------------- /vendor/googletest/googletest/cmake/gtest_main.pc.in: -------------------------------------------------------------------------------- 1 | libdir=@CMAKE_INSTALL_FULL_LIBDIR@ 2 | includedir=@CMAKE_INSTALL_FULL_INCLUDEDIR@ 3 | 4 | Name: gtest_main 5 | Description: GoogleTest (with main() function) 6 | Version: @PROJECT_VERSION@ 7 | URL: https://github.com/google/googletest 8 | Requires: gtest = @PROJECT_VERSION@ 9 | Libs: -L${libdir} -lgtest_main @CMAKE_THREAD_LIBS_INIT@ 10 | Cflags: -I${includedir} @GTEST_HAS_PTHREAD_MACRO@ 11 | -------------------------------------------------------------------------------- /vendor/googletest/googletest/cmake/libgtest.la.in: -------------------------------------------------------------------------------- 1 | # libgtest.la - a libtool library file 2 | # Generated by libtool (GNU libtool) 2.4.6 3 | 4 | # Please DO NOT delete this file! 5 | # It is necessary for linking the library. 6 | 7 | # Names of this library. 8 | library_names='libgtest.so' 9 | 10 | # Is this an already installed library? 11 | installed=yes 12 | 13 | # Should we warn about portability when linking against -modules? 14 | shouldnotlink=no 15 | 16 | # Files to dlopen/dlpreopen 17 | dlopen='' 18 | dlpreopen='' 19 | 20 | # Directory that this library needs to be installed in: 21 | libdir='@CMAKE_INSTALL_FULL_LIBDIR@' 22 | -------------------------------------------------------------------------------- /vendor/googletest/googletest/docs/README.md: -------------------------------------------------------------------------------- 1 | # Content Moved 2 | 3 | We are working on updates to the GoogleTest documentation, which has moved to 4 | the top-level [docs](../../docs) directory. 5 | -------------------------------------------------------------------------------- /vendor/googletest/googletest/scripts/README.md: -------------------------------------------------------------------------------- 1 | # Please Note: 2 | 3 | Files in this directory are no longer supported by the maintainers. They 4 | represent mosty historical artifacts and supported by the community only. There 5 | is no guarantee whatsoever that these scripts still work. 6 | -------------------------------------------------------------------------------- /vendor/mongoose/src/arch_azurertos.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #if MG_ARCH == MG_ARCH_AZURERTOS 4 | 5 | #include 6 | #include 7 | #include 8 | #include 9 | #include 10 | 11 | #include 12 | #include 13 | 14 | #include 15 | #include 16 | #include 17 | #include 18 | 19 | #define PATH_MAX FX_MAXIMUM_PATH 20 | #define MG_DIRSEP '\\' 21 | 22 | #define socklen_t int 23 | #define closesocket(x) soc_close(x) 24 | 25 | #undef FOPEN_MAX 26 | 27 | #endif 28 | -------------------------------------------------------------------------------- /vendor/mongoose/src/arch_esp32.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #if MG_ARCH == MG_ARCH_ESP32 4 | 5 | #include 6 | #include 7 | #include 8 | #include 9 | #include 10 | #include 11 | #include 12 | #include 13 | #include 14 | #include 15 | #include 16 | #include 17 | #include 18 | #include 19 | 20 | #include 21 | 22 | #define MG_PATH_MAX 128 23 | 24 | #endif 25 | -------------------------------------------------------------------------------- /vendor/mongoose/src/arch_esp8266.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #if MG_ARCH == MG_ARCH_ESP8266 4 | 5 | #include 6 | #include 7 | #include 8 | #include 9 | #include 10 | #include 11 | #include 12 | #include 13 | #include 14 | #include 15 | #include 16 | #include 17 | #include 18 | #include 19 | #include 20 | #include 21 | 22 | #include 23 | 24 | #define MG_PATH_MAX 128 25 | 26 | #endif 27 | -------------------------------------------------------------------------------- /vendor/mongoose/src/arch_newlib.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #if MG_ARCH == MG_ARCH_NEWLIB 4 | #define _POSIX_TIMERS 5 | 6 | #include 7 | #include 8 | #include 9 | #include 10 | #include 11 | #include 12 | #include 13 | #include 14 | #include 15 | #include 16 | #include 17 | #include 18 | 19 | #define MG_PATH_MAX 100 20 | #define MG_ENABLE_SOCKET 0 21 | #define MG_ENABLE_DIRLIST 0 22 | 23 | #endif 24 | -------------------------------------------------------------------------------- /vendor/mongoose/src/arch_rp2040.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #if MG_ARCH == MG_ARCH_RP2040 4 | #include 5 | #include 6 | #include 7 | #include 8 | #include 9 | #include 10 | #include 11 | #include 12 | 13 | #include 14 | int mkdir(const char *, mode_t); 15 | #endif 16 | -------------------------------------------------------------------------------- /vendor/mongoose/src/arch_rtx.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #if MG_ARCH == MG_ARCH_RTX 4 | 5 | #include 6 | #include 7 | #include 8 | #include 9 | #include 10 | #include 11 | #include 12 | #include 13 | #include 14 | #include 15 | 16 | #if !defined MG_ENABLE_RL && (!defined(MG_ENABLE_LWIP) || !MG_ENABLE_LWIP) 17 | #define MG_ENABLE_RL 1 18 | #endif 19 | 20 | #endif 21 | -------------------------------------------------------------------------------- /vendor/mongoose/src/arch_tirtos.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #if MG_ARCH == MG_ARCH_TIRTOS 4 | 5 | #include 6 | #include 7 | #include 8 | #include 9 | #include 10 | #include 11 | #include 12 | #include 13 | 14 | #include 15 | #include 16 | 17 | #include 18 | 19 | #endif 20 | -------------------------------------------------------------------------------- /vendor/mongoose/src/base64.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | int mg_base64_update(unsigned char p, char *to, int len); 3 | int mg_base64_final(char *to, int len); 4 | int mg_base64_encode(const unsigned char *p, int n, char *to); 5 | int mg_base64_decode(const char *src, int n, char *dst); 6 | -------------------------------------------------------------------------------- /vendor/mongoose/src/iobuf.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include "arch.h" 4 | 5 | struct mg_iobuf { 6 | unsigned char *buf; // Pointer to stored data 7 | size_t size; // Total size available 8 | size_t len; // Current number of bytes 9 | size_t align; // Alignment during allocation 10 | }; 11 | 12 | int mg_iobuf_init(struct mg_iobuf *, size_t, size_t); 13 | int mg_iobuf_resize(struct mg_iobuf *, size_t); 14 | void mg_iobuf_free(struct mg_iobuf *); 15 | size_t mg_iobuf_add(struct mg_iobuf *, size_t, const void *, size_t); 16 | size_t mg_iobuf_del(struct mg_iobuf *, size_t ofs, size_t len); 17 | -------------------------------------------------------------------------------- /vendor/mongoose/src/md5.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include "arch.h" 4 | 5 | typedef struct { 6 | uint32_t buf[4]; 7 | uint32_t bits[2]; 8 | unsigned char in[64]; 9 | } mg_md5_ctx; 10 | 11 | void mg_md5_init(mg_md5_ctx *c); 12 | void mg_md5_update(mg_md5_ctx *c, const unsigned char *data, size_t len); 13 | void mg_md5_final(mg_md5_ctx *c, unsigned char[16]); 14 | -------------------------------------------------------------------------------- /vendor/mongoose/src/net_lwip.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #if defined(MG_ENABLE_LWIP) && MG_ENABLE_LWIP 4 | #if defined(__GNUC__) 5 | #include 6 | #include 7 | #else 8 | struct timeval { 9 | time_t tv_sec; 10 | long tv_usec; 11 | }; 12 | #endif 13 | 14 | #include 15 | 16 | #if LWIP_SOCKET != 1 17 | // Sockets support disabled in LWIP by default 18 | #error Set LWIP_SOCKET variable to 1 (in lwipopts.h) 19 | #endif 20 | #endif 21 | -------------------------------------------------------------------------------- /vendor/mongoose/src/sha1.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include "arch.h" 4 | 5 | typedef struct { 6 | uint32_t state[5]; 7 | uint32_t count[2]; 8 | unsigned char buffer[64]; 9 | } mg_sha1_ctx; 10 | 11 | void mg_sha1_init(mg_sha1_ctx *); 12 | void mg_sha1_update(mg_sha1_ctx *, const unsigned char *data, size_t len); 13 | void mg_sha1_final(unsigned char digest[20], mg_sha1_ctx *); 14 | -------------------------------------------------------------------------------- /vendor/mongoose/src/sntp.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include "net.h" 4 | 5 | struct mg_connection *mg_sntp_connect(struct mg_mgr *mgr, const char *url, 6 | mg_event_handler_t fn, void *fn_data); 7 | void mg_sntp_request(struct mg_connection *c); 8 | int64_t mg_sntp_parse(const unsigned char *buf, size_t len); 9 | -------------------------------------------------------------------------------- /vendor/mongoose/src/ssi.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include "http.h" 3 | void mg_http_serve_ssi(struct mg_connection *c, const char *root, 4 | const char *fullpath); 5 | -------------------------------------------------------------------------------- /vendor/mongoose/src/tls_mbed.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include "config.h" 4 | #include "log.h" 5 | #include "url.h" 6 | #include "util.h" 7 | 8 | #if MG_ENABLE_MBEDTLS 9 | #include 10 | #include 11 | #include 12 | 13 | struct mg_tls { 14 | char *cafile; // CA certificate path 15 | mbedtls_x509_crt ca; // Parsed CA certificate 16 | mbedtls_x509_crt cert; // Parsed certificate 17 | mbedtls_ssl_context ssl; // SSL/TLS context 18 | mbedtls_ssl_config conf; // SSL-TLS config 19 | mbedtls_pk_context pk; // Private key context 20 | }; 21 | #endif 22 | -------------------------------------------------------------------------------- /vendor/mongoose/src/tls_openssl.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #if MG_ENABLE_OPENSSL 4 | 5 | #include 6 | #include 7 | 8 | struct mg_tls { 9 | SSL_CTX *ctx; 10 | SSL *ssl; 11 | }; 12 | #endif 13 | -------------------------------------------------------------------------------- /vendor/mongoose/src/url.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include "str.h" 3 | 4 | unsigned short mg_url_port(const char *url); 5 | int mg_url_is_ssl(const char *url); 6 | struct mg_str mg_url_host(const char *url); 7 | struct mg_str mg_url_user(const char *url); 8 | struct mg_str mg_url_pass(const char *url); 9 | const char *mg_url_uri(const char *url); 10 | -------------------------------------------------------------------------------- /vendor/mongoose/src/version.h: -------------------------------------------------------------------------------- 1 | #define MG_VERSION "7.9" 2 | -------------------------------------------------------------------------------- /vendor/node-addon-api/.editorconfig: -------------------------------------------------------------------------------- 1 | root = true 2 | 3 | [*] 4 | charset = utf-8 5 | trim_trailing_whitespace = true 6 | insert_final_newline = true 7 | indent_style = space 8 | indent_size = 2 9 | -------------------------------------------------------------------------------- /vendor/node-addon-api/.gitignore: -------------------------------------------------------------------------------- 1 | /node_modules 2 | /build 3 | /benchmark/build 4 | /benchmark/src 5 | /test/addon_build/addons 6 | -------------------------------------------------------------------------------- /vendor/node-addon-api/.npmrc: -------------------------------------------------------------------------------- 1 | package-lock=false 2 | -------------------------------------------------------------------------------- /vendor/node-addon-api/CODE_OF_CONDUCT.md: -------------------------------------------------------------------------------- 1 | # Code of Conduct 2 | 3 | The Node.js Code of Conduct, which applies to this project, can be found at 4 | https://github.com/nodejs/admin/blob/HEAD/CODE_OF_CONDUCT.md. 5 | -------------------------------------------------------------------------------- /vendor/node-addon-api/except.gypi: -------------------------------------------------------------------------------- 1 | { 2 | 'defines': [ 'NAPI_CPP_EXCEPTIONS' ], 3 | 'cflags!': [ '-fno-exceptions' ], 4 | 'cflags_cc!': [ '-fno-exceptions' ], 5 | 'msvs_settings': { 6 | 'VCCLCompilerTool': { 7 | 'ExceptionHandling': 1, 8 | 'EnablePREfast': 'true', 9 | }, 10 | }, 11 | 'xcode_settings': { 12 | 'CLANG_CXX_LIBRARY': 'libc++', 13 | 'MACOSX_DEPLOYMENT_TARGET': '10.7', 14 | 'GCC_ENABLE_CPP_EXCEPTIONS': 'YES', 15 | }, 16 | } 17 | -------------------------------------------------------------------------------- /vendor/node-addon-api/index.js: -------------------------------------------------------------------------------- 1 | const path = require('path'); 2 | 3 | const include_dir = path.relative('.', __dirname); 4 | 5 | module.exports = { 6 | include: `"${__dirname}"`, // deprecated, can be removed as part of 4.0.0 7 | include_dir, 8 | gyp: path.join(include_dir, 'node_api.gyp:nothing'), 9 | isNodeApiBuiltin: true, 10 | needsFlag: false 11 | }; 12 | -------------------------------------------------------------------------------- /vendor/node-addon-api/node_api.gyp: -------------------------------------------------------------------------------- 1 | { 2 | 'targets': [ 3 | { 4 | 'target_name': 'nothing', 5 | 'type': 'static_library', 6 | 'sources': [ 'nothing.c' ] 7 | } 8 | ] 9 | } 10 | -------------------------------------------------------------------------------- /vendor/node-addon-api/noexcept.gypi: -------------------------------------------------------------------------------- 1 | { 2 | 'defines': [ 'NAPI_DISABLE_CPP_EXCEPTIONS' ], 3 | 'cflags': [ '-fno-exceptions' ], 4 | 'cflags_cc': [ '-fno-exceptions' ], 5 | 'msvs_settings': { 6 | 'VCCLCompilerTool': { 7 | 'ExceptionHandling': 0, 8 | 'EnablePREfast': 'true', 9 | }, 10 | }, 11 | 'xcode_settings': { 12 | 'CLANG_CXX_LIBRARY': 'libc++', 13 | 'MACOSX_DEPLOYMENT_TARGET': '10.7', 14 | 'GCC_ENABLE_CPP_EXCEPTIONS': 'NO', 15 | }, 16 | } 17 | -------------------------------------------------------------------------------- /vendor/node-addon-api/nothing.c: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quick-lint/quick-lint-js/f7519e7567b743fa06dd75580045fc2b06b10c7c/vendor/node-addon-api/nothing.c -------------------------------------------------------------------------------- /vendor/node-addon-api/package-support.json: -------------------------------------------------------------------------------- 1 | { 2 | "versions": [ 3 | { 4 | "version": "*", 5 | "target": { 6 | "node": "active" 7 | }, 8 | "response": { 9 | "type": "time-permitting", 10 | "paid": false, 11 | "contact": { 12 | "name": "node-addon-api team", 13 | "url": "https://github.com/nodejs/node-addon-api/issues" 14 | } 15 | }, 16 | "backing": [ { "project": "https://github.com/nodejs" }, 17 | { "foundation": "https://openjsf.org/" } 18 | ] 19 | } 20 | ] 21 | } 22 | -------------------------------------------------------------------------------- /vendor/simdjson/.clang-format: -------------------------------------------------------------------------------- 1 | BasedOnStyle: LLVM 2 | -------------------------------------------------------------------------------- /vendor/simdjson/.dockerignore: -------------------------------------------------------------------------------- 1 | * 2 | !.git 3 | !Makefile 4 | !amalgamate.py 5 | !benchmark 6 | !dependencies 7 | !include 8 | !jsonchecker 9 | !jsonexamples 10 | !scripts 11 | !singleheader 12 | !src 13 | !style 14 | !tests 15 | !tools 16 | -------------------------------------------------------------------------------- /vendor/simdjson/.github/pull_request_template.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | Our tests check whether you have introduced trailing white space. If such a test fails, please check the "artifacts button" above, which if you click it gives a link to a downloadable file to help you identify the issue. You can also run scripts/remove_trailing_whitespace.sh locally if you have a bash shell and the sed command available on your system. 4 | 5 | If you plan to contribute to simdjson, please read our 6 | 7 | CONTRIBUTING guide: https://github.com/simdjson/simdjson/blob/master/CONTRIBUTING.md and our 8 | HACKING guide: https://github.com/simdjson/simdjson/blob/master/HACKING.md 9 | -------------------------------------------------------------------------------- /vendor/simdjson/.github/workflows/vs16-arm-ci.yml: -------------------------------------------------------------------------------- 1 | name: VS16-ARM-CI 2 | 3 | on: [push, pull_request] 4 | 5 | jobs: 6 | ci: 7 | name: windows-vs16 8 | runs-on: windows-latest 9 | strategy: 10 | fail-fast: false 11 | matrix: 12 | include: 13 | - {arch: ARM} 14 | - {arch: ARM64} 15 | steps: 16 | - name: checkout 17 | uses: actions/checkout@v2 18 | - name: Use cmake 19 | run: | 20 | cmake -A ${{ matrix.arch }} -DCMAKE_CROSSCOMPILING=1 -DSIMDJSON_DEVELOPER_MODE=ON -D SIMDJSON_GOOGLE_BENCHMARKS=OFF -DSIMDJSON_EXCEPTIONS=OFF -B build && 21 | cmake --build build --verbose -------------------------------------------------------------------------------- /vendor/simdjson/.vscode/extensions.json: -------------------------------------------------------------------------------- 1 | { 2 | // See https://go.microsoft.com/fwlink/?LinkId=827846 to learn about workspace recommendations. 3 | // Extension identifier format: ${publisher}.${name}. Example: vscode.csharp 4 | 5 | // List of extensions which should be recommended for users of this workspace. 6 | "recommendations": [ 7 | // Syntax 8 | "ms-vscode.cpptools", 9 | "ms-vscode.cmake-tools", 10 | "ms-python.python", 11 | "twxs.cmake" 12 | ], 13 | // List of extensions recommended by VS Code that should not be recommended for users of this workspace. 14 | "unwantedRecommendations": [ 15 | 16 | ] 17 | } -------------------------------------------------------------------------------- /vendor/simdjson/AUTHORS: -------------------------------------------------------------------------------- 1 | # List of authors for copyright purposes, in no particular order 2 | Daniel Lemire 3 | Geoff Langdale 4 | John Keiser 5 | -------------------------------------------------------------------------------- /vendor/simdjson/cmake/add_compile_only_test.cmake: -------------------------------------------------------------------------------- 1 | function(add_compile_only_test TEST_NAME) 2 | add_test( 3 | NAME ${TEST_NAME} 4 | COMMAND ${CMAKE_COMMAND} --build . --target ${TEST_NAME} --config $ 5 | WORKING_DIRECTORY ${PROJECT_BINARY_DIR} 6 | ) 7 | set_target_properties(${TEST_NAME} PROPERTIES EXCLUDE_FROM_ALL TRUE EXCLUDE_FROM_DEFAULT_BUILD TRUE) 8 | endfunction() -------------------------------------------------------------------------------- /vendor/simdjson/cmake/simdjson-config.cmake.in: -------------------------------------------------------------------------------- 1 | include(CMakeFindDependencyMacro) 2 | if("@SIMDJSON_ENABLE_THREADS@") 3 | find_dependency(Threads) 4 | endif() 5 | 6 | include("${CMAKE_CURRENT_LIST_DIR}/simdjsonTargets.cmake") 7 | -------------------------------------------------------------------------------- /vendor/simdjson/examples/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | add_subdirectory(quickstart) 2 | -------------------------------------------------------------------------------- /vendor/simdjson/examples/quickstart/quickstart.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | #include "simdjson.h" 3 | 4 | int main(void) { 5 | simdjson::dom::parser parser; 6 | simdjson::dom::element tweets = parser.load("twitter.json"); 7 | std::cout << tweets["search_metadata"]["count"] << " results." << std::endl; 8 | } 9 | -------------------------------------------------------------------------------- /vendor/simdjson/examples/quickstart/quickstart2.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | #include "simdjson.h" 3 | 4 | int main(void) { 5 | simdjson::dom::parser parser; 6 | simdjson::dom::element tweets = parser.load("twitter.json"); 7 | std::cout << "ID: " << tweets["statuses"].at(0)["id"] << std::endl; 8 | } 9 | -------------------------------------------------------------------------------- /vendor/simdjson/examples/quickstart/quickstart2_noexceptions.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | #include "simdjson.h" 3 | 4 | int main(void) { 5 | simdjson::dom::parser parser; 6 | simdjson::dom::element tweets; 7 | auto error = parser.load("twitter.json").get(tweets); 8 | if(error) { std::cerr << error << std::endl; return EXIT_FAILURE; } 9 | uint64_t identifier; 10 | error = tweets["statuses"].at(0)["id"].get(identifier); 11 | if(error) { std::cerr << error << std::endl; return EXIT_FAILURE; } 12 | std::cout << identifier << std::endl; 13 | return EXIT_SUCCESS; 14 | } 15 | -------------------------------------------------------------------------------- /vendor/simdjson/examples/quickstart/quickstart_noexceptions.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | #include "simdjson.h" 3 | 4 | int main(void) { 5 | simdjson::dom::parser parser; 6 | simdjson::dom::element tweets; 7 | auto error = parser.load("twitter.json").get(tweets); 8 | if (error) { std::cerr << error << std::endl; return EXIT_FAILURE; } 9 | simdjson::dom::element res; 10 | 11 | if ((error = tweets["search_metadata"]["count"].get(res))) { 12 | std::cerr << "could not access keys" << std::endl; 13 | return EXIT_FAILURE; 14 | } 15 | std::cout << res << " results." << std::endl; 16 | } 17 | 18 | -------------------------------------------------------------------------------- /vendor/simdjson/examples/quickstart/quickstart_ondemand.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | #include "simdjson.h" 3 | using namespace simdjson; 4 | int main(void) { 5 | ondemand::parser parser; 6 | padded_string json = padded_string::load("twitter.json"); 7 | ondemand::document tweets = parser.iterate(json); 8 | std::cout << uint64_t(tweets["search_metadata"]["count"]) << " results." << std::endl; 9 | } 10 | -------------------------------------------------------------------------------- /vendor/simdjson/extra/dumpbits.h: -------------------------------------------------------------------------------- 1 | #ifndef DUMPBITS_H 2 | #define DUMPBITS_H 3 | #include 4 | 5 | // dump bits low to high 6 | inline void dumpbits_always(uint64_t v, const std::string &msg) { 7 | for (uint32_t i = 0; i < 64; i++) { 8 | std::cout << (((v >> static_cast(i)) & 0x1ULL) ? "1" : "_"); 9 | } 10 | std::cout << " " << msg.c_str() << "\n"; 11 | } 12 | 13 | inline void dumpbits32_always(uint32_t v, const std::string &msg) { 14 | for (uint32_t i = 0; i < 32; i++) { 15 | std::cout << (((v >> i) & 0x1ULL) ? "1" : "_"); 16 | } 17 | std::cout << " " << msg.c_str() << "\n"; 18 | } 19 | #endif 20 | -------------------------------------------------------------------------------- /vendor/simdjson/include/simdjson/arm64/begin.h: -------------------------------------------------------------------------------- 1 | #define SIMDJSON_IMPLEMENTATION arm64 2 | -------------------------------------------------------------------------------- /vendor/simdjson/include/simdjson/arm64/end.h: -------------------------------------------------------------------------------- 1 | #undef SIMDJSON_IMPLEMENTATION 2 | -------------------------------------------------------------------------------- /vendor/simdjson/include/simdjson/arm64/intrinsics.h: -------------------------------------------------------------------------------- 1 | #ifndef SIMDJSON_ARM64_INTRINSICS_H 2 | #define SIMDJSON_ARM64_INTRINSICS_H 3 | 4 | // This should be the correct header whether 5 | // you use visual studio or other compilers. 6 | #include 7 | 8 | #endif // SIMDJSON_ARM64_INTRINSICS_H 9 | -------------------------------------------------------------------------------- /vendor/simdjson/include/simdjson/dom/parsedjson.h: -------------------------------------------------------------------------------- 1 | // TODO Remove this -- deprecated API and files 2 | 3 | #ifndef SIMDJSON_DOM_PARSEDJSON_H 4 | #define SIMDJSON_DOM_PARSEDJSON_H 5 | 6 | #include "simdjson/dom/document.h" 7 | 8 | namespace simdjson { 9 | 10 | /** 11 | * @deprecated Use `dom::parser` instead. 12 | */ 13 | using ParsedJson [[deprecated("Use dom::parser instead")]] = dom::parser; 14 | 15 | } // namespace simdjson 16 | 17 | #endif // SIMDJSON_DOM_PARSEDJSON_H 18 | -------------------------------------------------------------------------------- /vendor/simdjson/include/simdjson/fallback/begin.h: -------------------------------------------------------------------------------- 1 | #define SIMDJSON_IMPLEMENTATION fallback 2 | -------------------------------------------------------------------------------- /vendor/simdjson/include/simdjson/fallback/end.h: -------------------------------------------------------------------------------- 1 | #undef SIMDJSON_IMPLEMENTATION 2 | -------------------------------------------------------------------------------- /vendor/simdjson/include/simdjson/generic/ondemand/token_position.h: -------------------------------------------------------------------------------- 1 | namespace simdjson { 2 | namespace SIMDJSON_IMPLEMENTATION { 3 | namespace ondemand { 4 | 5 | /** @private Position in the JSON buffer indexes */ 6 | using token_position = const uint32_t *; 7 | 8 | } // namespace ondemand 9 | } // namespace SIMDJSON_IMPLEMENTATION 10 | } // namespace simdjson 11 | -------------------------------------------------------------------------------- /vendor/simdjson/include/simdjson/haswell/begin.h: -------------------------------------------------------------------------------- 1 | #define SIMDJSON_IMPLEMENTATION haswell 2 | SIMDJSON_TARGET_HASWELL 3 | -------------------------------------------------------------------------------- /vendor/simdjson/include/simdjson/haswell/end.h: -------------------------------------------------------------------------------- 1 | SIMDJSON_UNTARGET_HASWELL 2 | #undef SIMDJSON_IMPLEMENTATION 3 | -------------------------------------------------------------------------------- /vendor/simdjson/include/simdjson/jsonioutil.h: -------------------------------------------------------------------------------- 1 | #ifndef SIMDJSON_JSONIOUTIL_H 2 | #define SIMDJSON_JSONIOUTIL_H 3 | 4 | #include "simdjson/common_defs.h" 5 | #include "simdjson/padded_string.h" 6 | 7 | namespace simdjson { 8 | 9 | #if SIMDJSON_EXCEPTIONS 10 | #ifndef SIMDJSON_DISABLE_DEPRECATED_API 11 | [[deprecated("Use padded_string::load() instead")]] 12 | inline padded_string get_corpus(const char *path) { 13 | return padded_string::load(path); 14 | } 15 | #endif // SIMDJSON_DISABLE_DEPRECATED_API 16 | #endif // SIMDJSON_EXCEPTIONS 17 | 18 | } // namespace simdjson 19 | 20 | #endif // SIMDJSON_JSONIOUTIL_H 21 | -------------------------------------------------------------------------------- /vendor/simdjson/include/simdjson/ppc64/begin.h: -------------------------------------------------------------------------------- 1 | #define SIMDJSON_IMPLEMENTATION ppc64 2 | -------------------------------------------------------------------------------- /vendor/simdjson/include/simdjson/ppc64/end.h: -------------------------------------------------------------------------------- 1 | #undef SIMDJSON_IMPLEMENTATION 2 | -------------------------------------------------------------------------------- /vendor/simdjson/include/simdjson/ppc64/intrinsics.h: -------------------------------------------------------------------------------- 1 | #ifndef SIMDJSON_PPC64_INTRINSICS_H 2 | #define SIMDJSON_PPC64_INTRINSICS_H 3 | 4 | #include "simdjson/base.h" 5 | 6 | // This should be the correct header whether 7 | // you use visual studio or other compilers. 8 | #include 9 | 10 | // These are defined by altivec.h in GCC toolchain, it is safe to undef them. 11 | #ifdef bool 12 | #undef bool 13 | #endif 14 | 15 | #ifdef vector 16 | #undef vector 17 | #endif 18 | 19 | #endif // SIMDJSON_PPC64_INTRINSICS_H 20 | -------------------------------------------------------------------------------- /vendor/simdjson/include/simdjson/simdjson.h: -------------------------------------------------------------------------------- 1 | /** 2 | * @file 3 | * @deprecated We'll be removing this file so it isn't confused with the top level simdjson.h 4 | */ 5 | #ifndef SIMDJSON_SIMDJSON_H 6 | #define SIMDJSON_SIMDJSON_H 7 | 8 | #include "simdjson/compiler_check.h" 9 | #include "simdjson/error.h" 10 | 11 | #endif // SIMDJSON_SIMDJSON_H 12 | -------------------------------------------------------------------------------- /vendor/simdjson/include/simdjson/westmere/begin.h: -------------------------------------------------------------------------------- 1 | #define SIMDJSON_IMPLEMENTATION westmere 2 | SIMDJSON_TARGET_WESTMERE 3 | -------------------------------------------------------------------------------- /vendor/simdjson/include/simdjson/westmere/end.h: -------------------------------------------------------------------------------- 1 | SIMDJSON_UNTARGET_WESTMERE 2 | #undef SIMDJSON_IMPLEMENTATION 3 | -------------------------------------------------------------------------------- /vendor/simdjson/scripts/dumpsimplestats.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | SCRIPTPATH="$( cd "$(dirname "$0")" ; pwd -P )" 3 | cd $SCRIPTPATH/.. 4 | make jsonstats 5 | echo 6 | for i in $SCRIPTPATH/../jsonexamples/*.json; do 7 | [ -f "$i" ] || break 8 | echo $i 9 | $SCRIPTPATH/../jsonstats $i 10 | echo 11 | done 12 | -------------------------------------------------------------------------------- /vendor/simdjson/scripts/javascript/README.md: -------------------------------------------------------------------------------- 1 | - npm install 2 | - nodejs generatelargejson.js (or node generatelargejson.js) 3 | 4 | -------------------------------------------------------------------------------- /vendor/simdjson/scripts/javascript/generatelargejson.js: -------------------------------------------------------------------------------- 1 | 2 | var fs = require('fs'); 3 | 4 | var faker = require('faker'); 5 | 6 | 7 | // generate bigDataSet as example 8 | var bigSet = []; 9 | var mmax = 500000 10 | console.log("this may take some time...") 11 | for(var i = 10; i < mmax; i++){ 12 | if(i % 1024 == 0) process.stdout.write("\r"+i+" entries ("+Math.round(i * 100.0 /mmax)+" percent)"); 13 | bigSet.push(faker.helpers.userCard()); 14 | }; 15 | console.log() 16 | 17 | fs.writeFile(__dirname + '/large.json', JSON.stringify(bigSet), function() { 18 | console.log("large.json generated successfully!"); 19 | }) 20 | -------------------------------------------------------------------------------- /vendor/simdjson/scripts/javascript/package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "generatelargejson", 3 | "version": "1.0.0", 4 | "lockfileVersion": 1, 5 | "requires": true, 6 | "dependencies": { 7 | "faker": { 8 | "version": "4.1.0", 9 | "resolved": "https://registry.npmjs.org/faker/-/faker-4.1.0.tgz", 10 | "integrity": "sha1-HkW7vsxndLPBlfrSg1EJxtdIzD8=" 11 | }, 12 | "fs": { 13 | "version": "0.0.1-security", 14 | "resolved": "https://registry.npmjs.org/fs/-/fs-0.0.1-security.tgz", 15 | "integrity": "sha1-invTcYa23d84E/I4WLV+yq9eQdQ=" 16 | } 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /vendor/simdjson/scripts/javascript/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "generatelargejson", 3 | "version": "1.0.0", 4 | "description": "", 5 | "main": "generatelargejson.js", 6 | "dependencies": { 7 | "faker": "^4.1.0", 8 | "fs": "0.0.1-security" 9 | }, 10 | "devDependencies": {}, 11 | "scripts": { 12 | "test": "echo \"Error: no test specified\" && exit 1" 13 | }, 14 | "author": "", 15 | "license": "ISC" 16 | } 17 | -------------------------------------------------------------------------------- /vendor/simdjson/scripts/minifier.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | SCRIPTPATH="$( cd "$(dirname "$0")" ; pwd -P )" 3 | cd $SCRIPTPATH/.. 4 | make minifiercompetition 5 | echo 6 | for i in $SCRIPTPATH/../jsonexamples/*.json; do 7 | [ -f "$i" ] || break 8 | echo $i 9 | $SCRIPTPATH/../minifiercompetition $i 10 | echo 11 | done 12 | -------------------------------------------------------------------------------- /vendor/simdjson/scripts/parser.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | SCRIPTPATH="$( cd "$(dirname "$0")" ; pwd -P )" 3 | cd $SCRIPTPATH/.. 4 | make parsingcompetition 5 | echo 6 | for i in $SCRIPTPATH/../jsonexamples/*.json; do 7 | [ -f "$i" ] || break 8 | echo $i 9 | $SCRIPTPATH/../parsingcompetition $i 10 | echo 11 | done 12 | -------------------------------------------------------------------------------- /vendor/simdjson/scripts/remove_trailing_whitespace.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # 3 | # removes trailing whitespace from source files and other 4 | 5 | set -eu 6 | 7 | # go to the git root dir 8 | cd "$(git rev-parse --show-toplevel)" 9 | 10 | #make a list of all files (null separated, to handle whitespace) 11 | git ls-tree -r HEAD --name-only -z >all_files.null.txt 12 | 13 | for suffix in cpp cmake h hpp js md py rb sh ; do 14 | echo "removing trailing whitespace from files with suffix $suffix" 15 | cat all_files.null.txt | grep -z '\.'$suffix'$' |xargs -n1 --null sed -i 's/[ \t]*$//' 16 | done 17 | rm all_files.null.txt 18 | echo "done!" 19 | 20 | -------------------------------------------------------------------------------- /vendor/simdjson/scripts/selectparser.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | SCRIPTPATH="$( cd "$(dirname "$0")" ; pwd -P )" 3 | cd $SCRIPTPATH/.. 4 | make parsingcompetition 5 | echo 6 | for i in "$SCRIPTPATH/../jsonexamples/twitter.json" "$SCRIPTPATH/../jsonexamples/update-center.json" "$SCRIPTPATH/../jsonexamples/github_events.json" "$SCRIPTPATH/../jsonexamples/gsoc-2018.json" ; do 7 | [ -f "$i" ] || break 8 | echo $i 9 | $SCRIPTPATH/../parsingcompetition $i 10 | echo 11 | done 12 | -------------------------------------------------------------------------------- /vendor/simdjson/scripts/setupfortesting/disablehyperthreading.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # Be careful to not skip the space at the beginning nor the end 4 | CPUS_TO_SKIP=" $(cat /sys/devices/system/cpu/cpu*/topology/thread_siblings_list | sed 's/[^0-9].*//' | sort | uniq | tr "\r\n" " ") " 5 | 6 | 7 | for CPU_PATH in /sys/devices/system/cpu/cpu[0-9]*; do 8 | CPU="$(echo $CPU_PATH | tr -cd "0-9")" 9 | echo "$CPUS_TO_SKIP" | grep " $CPU " > /dev/null 10 | if [ $? -ne 0 ]; then 11 | echo 0 > $CPU_PATH/online 12 | fi 13 | done 14 | 15 | egrep 'siblings|cpu cores' /proc/cpuinfo | head -2 16 | -------------------------------------------------------------------------------- /vendor/simdjson/scripts/setupfortesting/setupfortesting.sh: -------------------------------------------------------------------------------- 1 | cd "${0%/*}" 2 | export CXX=g++-7 3 | export CC=gcc-7 4 | #./powerpolicy.sh performance 5 | ./disablehyperthreading.sh 6 | ./turboboost.sh on 7 | -------------------------------------------------------------------------------- /vendor/simdjson/scripts/transitions/Makefile: -------------------------------------------------------------------------------- 1 | all:../../include/transitions.h 2 | 3 | ../../include/transitions.h: generatetransitions 4 | ./generatetransitions > ../../include/jsonparser/transitions.h 5 | 6 | generatetransitions: generatetransitions.cpp 7 | $(CXX) -o generatetransitions generatetransitions.cpp -I../../include 8 | 9 | clean: 10 | rm -f generatetransitions 11 | -------------------------------------------------------------------------------- /vendor/simdjson/tools/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | if(TARGET cxxopts) # we only build the tools if cxxopts is available 2 | message(STATUS "We have cxxopts as a dependency and we are building the tools (e.g., json2json).") 3 | foreach(tool IN ITEMS json2json jsonstats jsonpointer minify) 4 | add_executable("${tool}" "${tool}.cpp") 5 | simdjson_apply_props("${tool}") 6 | target_link_libraries( 7 | "${tool}" PRIVATE 8 | simdjson simdjson-internal-flags simdjson-windows-headers cxxopts 9 | ) 10 | endforeach() 11 | else() 12 | message(STATUS "We are missing cxxopts as a dependency so the tools (e.g., json2json) are omitted.") 13 | endif() 14 | -------------------------------------------------------------------------------- /vendor/simdjson/windows/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | add_library(simdjson-windows-headers INTERFACE) 2 | if(MSVC OR MINGW) 3 | target_include_directories(simdjson-windows-headers INTERFACE .) 4 | # getopt.h triggers bogus CRT_SECURE warnings. If you include them, you need this. 5 | target_compile_definitions(simdjson-windows-headers INTERFACE _CRT_SECURE_NO_WARNINGS) 6 | endif() 7 | -------------------------------------------------------------------------------- /vendor/simdjson/windows/dirent_portable.h: -------------------------------------------------------------------------------- 1 | #ifndef SIMDJSON_DIRENT_PORTABLE_INC_ 2 | #define SIMDJSON_DIRENT_PORTABLE_INC_ 3 | 4 | #if (!defined(_WIN32) && !defined(_WIN64) && !(__MINGW32__) && !(__MINGW64__)) 5 | #include 6 | #else 7 | #include "toni_ronnko_dirent.h" 8 | #endif 9 | 10 | #endif // SIMDJSON_DIRENT_PORTABLE_INC_ 11 | -------------------------------------------------------------------------------- /vendor/simdjson/windows/unistd.h: -------------------------------------------------------------------------------- 1 | #ifndef __UNISTD_H__ 2 | #include "getopt.h" 3 | #endif // __UNISTD_H__ -------------------------------------------------------------------------------- /version: -------------------------------------------------------------------------------- 1 | 3.2.0 2 | 2024-03-03 3 | -------------------------------------------------------------------------------- /website/.gitignore: -------------------------------------------------------------------------------- 1 | # Created by instructions in README.md. 2 | /node_modules/ 3 | /www/ 4 | 5 | # Created by instructions in wasm/README.md. 6 | /build-emscripten/ 7 | -------------------------------------------------------------------------------- /website/.prettierignore: -------------------------------------------------------------------------------- 1 | /backstop/backstop_data/ 2 | /www/ 3 | -------------------------------------------------------------------------------- /website/analytics/.gitignore: -------------------------------------------------------------------------------- 1 | # Keep this file in sync with .npmignore. 2 | 3 | /node_modules/ 4 | 5 | /config.json 6 | 7 | # Described by /config.example.json: 8 | /analytics.sqlite3 9 | /analytics.sqlite3-shm 10 | /analytics.sqlite3-wal 11 | /dist/ 12 | 13 | # Created by 'npm pack': 14 | /quick-lint-js-website-analytics-0.0.0.tgz 15 | -------------------------------------------------------------------------------- /website/analytics/.npmignore: -------------------------------------------------------------------------------- 1 | # Keep yarn.lock for when we push to production. 2 | !/yarn.lock 3 | 4 | # Keep everything below this comment in sync with .gitignore. 5 | 6 | /node_modules/ 7 | 8 | /config.json 9 | 10 | # Described by /config.example.json: 11 | /analytics.sqlite3 12 | /analytics.sqlite3-shm 13 | /analytics.sqlite3-wal 14 | /dist/ 15 | 16 | # Created by 'npm pack': 17 | /quick-lint-js-website-analytics-0.0.0.tgz 18 | -------------------------------------------------------------------------------- /website/analytics/config.example.json: -------------------------------------------------------------------------------- 1 | { 2 | "db.file": "analytics.sqlite3", 3 | "chart.directory": "dist", 4 | 5 | "apache2.log_files": "/var/log/apache2/access.log*", 6 | 7 | "matomo_analytics.db_host": "localhost", 8 | "matomo_analytics.db_socket": null, 9 | "matomo_analytics.db_user": "root", 10 | "matomo_analytics.db_password": "", 11 | "matomo_analytics.db_database": "matomo_analytics", 12 | 13 | "vscode.marketplace-personal-access-token": "" 14 | } 15 | -------------------------------------------------------------------------------- /website/analytics/test/apache-escape.log: -------------------------------------------------------------------------------- 1 | quick-lint-js.com 192.184.192.138 - - [25/Aug/2023:04:31:13 +0000] "GET / HTTP/2.0" 200 36107 "'escape\\test\"" "escape\ttest" 2 | -------------------------------------------------------------------------------- /website/analytics/test/example-apache.log.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quick-lint/quick-lint-js/f7519e7567b743fa06dd75580045fc2b06b10c7c/website/analytics/test/example-apache.log.gz -------------------------------------------------------------------------------- /website/analytics/test/quick-lint-js.config: -------------------------------------------------------------------------------- 1 | { 2 | "global-groups": [ 3 | "ecmascript", 4 | "node.js" 5 | ] 6 | } 7 | -------------------------------------------------------------------------------- /website/backstop/.gitignore: -------------------------------------------------------------------------------- 1 | /node_modules/ 2 | 3 | # Created by BackstopJS. 4 | /backstop_data/ 5 | -------------------------------------------------------------------------------- /website/backstop/README.md: -------------------------------------------------------------------------------- 1 | # Website screenshot testing with BackstopJS 2 | 3 | Want to see the impact of your CSS or HTML changes? Try this screenshotting 4 | tool. 5 | 6 | 1. Start dev server: `cd website/ && yarn start` 7 | 2. Take golden screenshots: `cd website/backstop/ && yarn test && yarn approve` 8 | 3. Make your CSS changes. 9 | 4. Take new screenshots and compare: `cd website/backstop/ && yarn test` 10 | 5. If things look good, then mark them as golden: 11 | `cd website/backstop/ && yarn approve` 12 | -------------------------------------------------------------------------------- /website/backstop/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "scripts": { 3 | "test": "backstop test --config=backstop.config.cjs", 4 | "approve": "backstop approve --config=backstop.config.cjs" 5 | }, 6 | "engines": { 7 | "node": ">=14.14.0" 8 | }, 9 | "dependencies": { 10 | "backstopjs": "^6.2.2" 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /website/null-package/README.md: -------------------------------------------------------------------------------- 1 | This directory is intentionally empty (except this file). 2 | 3 | In package.json, reference this file as "link:./null-package" to prevent Yarn 4 | from installing a package. (Yarn will install this null-package "package" 5 | instead.) 6 | -------------------------------------------------------------------------------- /website/public/blog/bug-journey/hpwebcamable-repro.mp4: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quick-lint/quick-lint-js/f7519e7567b743fa06dd75580045fc2b06b10c7c/website/public/blog/bug-journey/hpwebcamable-repro.mp4 -------------------------------------------------------------------------------- /website/public/blog/bug-journey/original-bug-hovered.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quick-lint/quick-lint-js/f7519e7567b743fa06dd75580045fc2b06b10c7c/website/public/blog/bug-journey/original-bug-hovered.jpg -------------------------------------------------------------------------------- /website/public/blog/bug-journey/original-bug.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quick-lint/quick-lint-js/f7519e7567b743fa06dd75580045fc2b06b10c7c/website/public/blog/bug-journey/original-bug.jpg -------------------------------------------------------------------------------- /website/public/blog/bug-journey/range-console-log.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quick-lint/quick-lint-js/f7519e7567b743fa06dd75580045fc2b06b10c7c/website/public/blog/bug-journey/range-console-log.jpg -------------------------------------------------------------------------------- /website/public/blog/cpp-vs-rust-build-times/cpp-vs-rust.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quick-lint/quick-lint-js/f7519e7567b743fa06dd75580045fc2b06b10c7c/website/public/blog/cpp-vs-rust-build-times/cpp-vs-rust.jpg -------------------------------------------------------------------------------- /website/public/blog/cpp-vs-rust-build-times/xkcd-303-compiling-cropped.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quick-lint/quick-lint-js/f7519e7567b743fa06dd75580045fc2b06b10c7c/website/public/blog/cpp-vs-rust-build-times/xkcd-303-compiling-cropped.png -------------------------------------------------------------------------------- /website/public/blog/show-js-errors-neovim-macos/neovim-demo-asdf.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quick-lint/quick-lint-js/f7519e7567b743fa06dd75580045fc2b06b10c7c/website/public/blog/show-js-errors-neovim-macos/neovim-demo-asdf.png -------------------------------------------------------------------------------- /website/public/blog/show-js-errors-neovim-macos/neovim-demo-signs-off.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quick-lint/quick-lint-js/f7519e7567b743fa06dd75580045fc2b06b10c7c/website/public/blog/show-js-errors-neovim-macos/neovim-demo-signs-off.png -------------------------------------------------------------------------------- /website/public/blog/show-js-errors-neovim-macos/neovim-demo-signs-on.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quick-lint/quick-lint-js/f7519e7567b743fa06dd75580045fc2b06b10c7c/website/public/blog/show-js-errors-neovim-macos/neovim-demo-signs-on.png -------------------------------------------------------------------------------- /website/public/blog/show-js-errors-neovim-macos/neovim-demo-update-in-insert.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quick-lint/quick-lint-js/f7519e7567b743fa06dd75580045fc2b06b10c7c/website/public/blog/show-js-errors-neovim-macos/neovim-demo-update-in-insert.webp -------------------------------------------------------------------------------- /website/public/blog/show-js-errors-neovim-macos/neovim-demo-virtual-text-off.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quick-lint/quick-lint-js/f7519e7567b743fa06dd75580045fc2b06b10c7c/website/public/blog/show-js-errors-neovim-macos/neovim-demo-virtual-text-off.png -------------------------------------------------------------------------------- /website/public/blog/show-js-errors-neovim-macos/neovim-demo-virtual-text-on.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quick-lint/quick-lint-js/f7519e7567b743fa06dd75580045fc2b06b10c7c/website/public/blog/show-js-errors-neovim-macos/neovim-demo-virtual-text-on.png -------------------------------------------------------------------------------- /website/public/blog/show-js-errors-neovim-macos/neovim-demo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quick-lint/quick-lint-js/f7519e7567b743fa06dd75580045fc2b06b10c7c/website/public/blog/show-js-errors-neovim-macos/neovim-demo.png -------------------------------------------------------------------------------- /website/public/blog/version-2.0/vscode-jsx-demo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quick-lint/quick-lint-js/f7519e7567b743fa06dd75580045fc2b06b10c7c/website/public/blog/version-2.0/vscode-jsx-demo.png -------------------------------------------------------------------------------- /website/public/blog/version-3.0/installing-quick-lint-js.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quick-lint/quick-lint-js/f7519e7567b743fa06dd75580045fc2b06b10c7c/website/public/blog/version-3.0/installing-quick-lint-js.webp -------------------------------------------------------------------------------- /website/public/blog/version-3.0/quick-lint-js-vs-eslint-vs-typescript-performance.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quick-lint/quick-lint-js/f7519e7567b743fa06dd75580045fc2b06b10c7c/website/public/blog/version-3.0/quick-lint-js-vs-eslint-vs-typescript-performance.webp -------------------------------------------------------------------------------- /website/public/blog/why-another-javascript-linter/eslint-bad-error-placement-still.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quick-lint/quick-lint-js/f7519e7567b743fa06dd75580045fc2b06b10c7c/website/public/blog/why-another-javascript-linter/eslint-bad-error-placement-still.png -------------------------------------------------------------------------------- /website/public/blog/why-another-javascript-linter/eslint-bad-error-placement.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quick-lint/quick-lint-js/f7519e7567b743fa06dd75580045fc2b06b10c7c/website/public/blog/why-another-javascript-linter/eslint-bad-error-placement.webp -------------------------------------------------------------------------------- /website/public/blog/why-another-javascript-linter/eslint-config-missing.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quick-lint/quick-lint-js/f7519e7567b743fa06dd75580045fc2b06b10c7c/website/public/blog/why-another-javascript-linter/eslint-config-missing.png -------------------------------------------------------------------------------- /website/public/blog/why-another-javascript-linter/eslint-esmodule-errors.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quick-lint/quick-lint-js/f7519e7567b743fa06dd75580045fc2b06b10c7c/website/public/blog/why-another-javascript-linter/eslint-esmodule-errors.png -------------------------------------------------------------------------------- /website/public/blog/why-another-javascript-linter/eslint-jsx-old-config.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quick-lint/quick-lint-js/f7519e7567b743fa06dd75580045fc2b06b10c7c/website/public/blog/why-another-javascript-linter/eslint-jsx-old-config.png -------------------------------------------------------------------------------- /website/public/blog/why-another-javascript-linter/eslint-lag-still.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quick-lint/quick-lint-js/f7519e7567b743fa06dd75580045fc2b06b10c7c/website/public/blog/why-another-javascript-linter/eslint-lag-still.png -------------------------------------------------------------------------------- /website/public/blog/why-another-javascript-linter/eslint-lag.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quick-lint/quick-lint-js/f7519e7567b743fa06dd75580045fc2b06b10c7c/website/public/blog/why-another-javascript-linter/eslint-lag.webp -------------------------------------------------------------------------------- /website/public/blog/why-another-javascript-linter/eslint-without-node-config.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quick-lint/quick-lint-js/f7519e7567b743fa06dd75580045fc2b06b10c7c/website/public/blog/why-another-javascript-linter/eslint-without-node-config.png -------------------------------------------------------------------------------- /website/public/blog/why-another-javascript-linter/linters-showdown-1x.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quick-lint/quick-lint-js/f7519e7567b743fa06dd75580045fc2b06b10c7c/website/public/blog/why-another-javascript-linter/linters-showdown-1x.webp -------------------------------------------------------------------------------- /website/public/blog/why-another-javascript-linter/linters-showdown-2x.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quick-lint/quick-lint-js/f7519e7567b743fa06dd75580045fc2b06b10c7c/website/public/blog/why-another-javascript-linter/linters-showdown-2x.webp -------------------------------------------------------------------------------- /website/public/blog/why-another-javascript-linter/linters-showdown-splash.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quick-lint/quick-lint-js/f7519e7567b743fa06dd75580045fc2b06b10c7c/website/public/blog/why-another-javascript-linter/linters-showdown-splash.jpg -------------------------------------------------------------------------------- /website/public/blog/why-another-javascript-linter/oxlint-editor-bug.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quick-lint/quick-lint-js/f7519e7567b743fa06dd75580045fc2b06b10c7c/website/public/blog/why-another-javascript-linter/oxlint-editor-bug.png -------------------------------------------------------------------------------- /website/public/blog/why-another-javascript-linter/quick-lint-js-benchmark-results.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quick-lint/quick-lint-js/f7519e7567b743fa06dd75580045fc2b06b10c7c/website/public/blog/why-another-javascript-linter/quick-lint-js-benchmark-results.png -------------------------------------------------------------------------------- /website/public/blog/why-another-javascript-linter/quick-lint-js-no-lag-still.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quick-lint/quick-lint-js/f7519e7567b743fa06dd75580045fc2b06b10c7c/website/public/blog/why-another-javascript-linter/quick-lint-js-no-lag-still.png -------------------------------------------------------------------------------- /website/public/blog/why-another-javascript-linter/quick-lint-js-no-lag.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quick-lint/quick-lint-js/f7519e7567b743fa06dd75580045fc2b06b10c7c/website/public/blog/why-another-javascript-linter/quick-lint-js-no-lag.webp -------------------------------------------------------------------------------- /website/public/blog/why-another-javascript-linter/visual-studio-squigglies.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quick-lint/quick-lint-js/f7519e7567b743fa06dd75580045fc2b06b10c7c/website/public/blog/why-another-javascript-linter/visual-studio-squigglies.png -------------------------------------------------------------------------------- /website/public/codespaces.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quick-lint/quick-lint-js/f7519e7567b743fa06dd75580045fc2b06b10c7c/website/public/codespaces.png -------------------------------------------------------------------------------- /website/public/demo/.gitignore: -------------------------------------------------------------------------------- 1 | # Created by instructions in ../../wasm/README.md. 2 | /dist/ 3 | -------------------------------------------------------------------------------- /website/public/dusty-right-256x256.png: -------------------------------------------------------------------------------- 1 | ../../dist/artwork/dusty-right-256x256.png -------------------------------------------------------------------------------- /website/public/dusty.svg: -------------------------------------------------------------------------------- 1 | ../../dist/artwork/dusty-right.svg -------------------------------------------------------------------------------- /website/public/errors/README.md: -------------------------------------------------------------------------------- 1 | # quick-lint-js errors 2 | 3 | This directory contains documentation on quick-lint-js' warnings and errors in 4 | HTML form. 5 | 6 | The source documents can be found in [docs/errors/](../../../docs/errors/). This 7 | directory contains code to convert those source documents into HTML. 8 | -------------------------------------------------------------------------------- /website/public/favicon-16x16.png: -------------------------------------------------------------------------------- 1 | ../../dist/artwork/dusty-favicon-16x16.png -------------------------------------------------------------------------------- /website/public/favicon-32x32.png: -------------------------------------------------------------------------------- 1 | ../../dist/artwork/dusty-favicon-32x32.png -------------------------------------------------------------------------------- /website/public/install/kate/quick-lint-js-in-kate.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quick-lint/quick-lint-js/f7519e7567b743fa06dd75580045fc2b06b10c7c/website/public/install/kate/quick-lint-js-in-kate.png -------------------------------------------------------------------------------- /website/public/install/sublime/lsp-config.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quick-lint/quick-lint-js/f7519e7567b743fa06dd75580045fc2b06b10c7c/website/public/install/sublime/lsp-config.png -------------------------------------------------------------------------------- /website/public/license/blue-folder.svg.html: -------------------------------------------------------------------------------- 1 |

2 | Public domain: 3 | https://publicdomainvectors.org/en/free-clipart/Folder-icon/38882.html 7 |

8 | -------------------------------------------------------------------------------- /website/public/license/codespaces.png.html: -------------------------------------------------------------------------------- 1 |

© GitHub, Inc. (“GitHub”). All rights reserved.

2 | -------------------------------------------------------------------------------- /website/public/license/debian.svg.html: -------------------------------------------------------------------------------- 1 |

2 | The Debian Open Use Logo(s) are Copyright (c) 1999 3 | Software in the Public Interest, Inc., 4 | and are released under the terms of the 5 | GNU Lesser General Public License, version 3 or any later version, or, at your option, of the 8 | Creative Commons Attribution-ShareAlike 3.0 Unported License. 11 |

12 | -------------------------------------------------------------------------------- /website/public/license/dusty.svg.html: -------------------------------------------------------------------------------- 1 | <%- await include("CC-BY-SA-4.0.html"); %> 2 | -------------------------------------------------------------------------------- /website/public/license/kate.svg.html: -------------------------------------------------------------------------------- 1 | From Tyson Tan: 2 |
3 | I hereby donate the new Kate the Cyber Woodpecker to Kate Editor project. The 4 | artworks are dual licensed under LGPL (or whatever the same as Kate Editor) 5 | and Creative Commons BY-SA. In this way you don’t need to ask me for 6 | permission before using/modifying the mascot. 7 |
8 | -------------------------------------------------------------------------------- /website/public/license/linux.svg.html: -------------------------------------------------------------------------------- 1 |

© 2017 - 2021 FoxyRiot

2 |

3 | The copyright holder of this file allows anyone to use it for any purpose, 4 | provided that the copyright holder is properly attributed. Redistribution, 5 | derivative work, commercial use, and all other use is permitted. 6 |

7 |

8 | Attribution: 9 | Larry Ewing <lewing@isc.tamu.edu> 12 | and The GIMP 13 |

14 | -------------------------------------------------------------------------------- /website/public/license/macos.svg.html: -------------------------------------------------------------------------------- 1 |

Author: Rob Janoff

2 |

Public domain

3 | -------------------------------------------------------------------------------- /website/public/license/nix.svg.html: -------------------------------------------------------------------------------- 1 | <%- await include("CC-BY-SA-4.0.html"); %> 2 | -------------------------------------------------------------------------------- /website/public/license/paypal-word.svg.html: -------------------------------------------------------------------------------- 1 |

Copyright © 1999-2022 PayPal, Inc.

2 | -------------------------------------------------------------------------------- /website/public/license/rust-crab.svg.html: -------------------------------------------------------------------------------- 1 |

2 | Public domain: https://rustacean.net/ 3 |

4 | -------------------------------------------------------------------------------- /website/public/license/sublime-text.svg.html: -------------------------------------------------------------------------------- 1 |

© Sublime HQ Pty Ltd

2 | -------------------------------------------------------------------------------- /website/public/license/typescript.svg.html: -------------------------------------------------------------------------------- 1 |

Copyright Microsoft

2 | <%- await include("CC-BY-4.0.html"); %> 3 | -------------------------------------------------------------------------------- /website/public/license/ubuntu.svg.html: -------------------------------------------------------------------------------- 1 |

2 | © 2019 Canonical Ltd. Ubuntu and Canonical are registered trademarks of 3 | Canonical Ltd. 4 |

5 | -------------------------------------------------------------------------------- /website/public/license/vscode-codicon-error.svg.html: -------------------------------------------------------------------------------- 1 | <%- await include("CC-BY-4.0.html"); %> 2 | -------------------------------------------------------------------------------- /website/public/license/vscode-codicon-warning.svg.html: -------------------------------------------------------------------------------- 1 | <%- await include("CC-BY-4.0.html"); %> 2 | -------------------------------------------------------------------------------- /website/public/license/windows.svg.html: -------------------------------------------------------------------------------- 1 |

© Microsoft 2021

2 | -------------------------------------------------------------------------------- /website/public/merch/dusty-sticker-on-laptop.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quick-lint/quick-lint-js/f7519e7567b743fa06dd75580045fc2b06b10c7c/website/public/merch/dusty-sticker-on-laptop.jpg -------------------------------------------------------------------------------- /website/public/oxc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quick-lint/quick-lint-js/f7519e7567b743fa06dd75580045fc2b06b10c7c/website/public/oxc.png -------------------------------------------------------------------------------- /website/public/robots.txt: -------------------------------------------------------------------------------- 1 | User-agent: * 2 | Allow: / 3 | -------------------------------------------------------------------------------- /website/public/rust-cargo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quick-lint/quick-lint-js/f7519e7567b743fa06dd75580045fc2b06b10c7c/website/public/rust-cargo.png -------------------------------------------------------------------------------- /website/public/vim.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quick-lint/quick-lint-js/f7519e7567b743fa06dd75580045fc2b06b10c7c/website/public/vim.gif -------------------------------------------------------------------------------- /website/public/vscode-codicon-error.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /website/public/vscode-codicon-warning.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /website/public/vscode-demo-small.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quick-lint/quick-lint-js/f7519e7567b743fa06dd75580045fc2b06b10c7c/website/public/vscode-demo-small.gif -------------------------------------------------------------------------------- /website/public/vscode-demo.png: -------------------------------------------------------------------------------- 1 | ../../plugin/vscode/demo.png -------------------------------------------------------------------------------- /website/public/vscode-demo.webp: -------------------------------------------------------------------------------- 1 | ../../plugin/vscode/demo.webp -------------------------------------------------------------------------------- /website/public/vscode.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quick-lint/quick-lint-js/f7519e7567b743fa06dd75580045fc2b06b10c7c/website/public/vscode.png -------------------------------------------------------------------------------- /website/public/windows.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /website/quick-lint-js.config: -------------------------------------------------------------------------------- 1 | { 2 | "global-groups": [ 3 | "browser", 4 | "ecmascript", 5 | "node.js" 6 | ] 7 | } 8 | -------------------------------------------------------------------------------- /website/test/quick-lint-js.config: -------------------------------------------------------------------------------- 1 | { 2 | "global-groups": [ 3 | "ecmascript", 4 | "node.js" 5 | ] 6 | } 7 | --------------------------------------------------------------------------------