diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 383613e..48fe806 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -10,15 +10,23 @@ on: branches: [main] jobs: + lint: + name: Lint JS + runs-on: ubuntu-latest + steps: + - name: Checkout code + uses: actions/checkout@v3 + - name: Lint JS + run: npx --yes oxlint@latest -D perf test: name: Unit tests runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - - name: Use Node.js 18 + - name: Use Node.js 20 uses: actions/setup-node@v3 with: - node-version: 18 + node-version: 20 cache: "npm" - name: Install dependencies run: npm install --ignore-scripts --no-audit diff --git a/package-lock.json b/package-lock.json index c9d657c..114edf3 100644 --- a/package-lock.json +++ b/package-lock.json @@ -13,6 +13,7 @@ "devDependencies": { "@types/css-tree": "^2.3.4", "microbundle": "^0.15.1", + "oxlint": "^0.2.8", "typescript": "^5.3.3", "uvu": "^0.5.6" } @@ -1923,6 +1924,110 @@ "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==", "dev": true }, + "node_modules/@oxlint/darwin-arm64": { + "version": "0.2.8", + "resolved": "https://registry.npmjs.org/@oxlint/darwin-arm64/-/darwin-arm64-0.2.8.tgz", + "integrity": "sha512-Xu+lEWj04aqa6qVbuf0tnc8tUlfXLNwOlYkIfd9GNpCxt6OLc53bfmUe7G6jDsfN3tkea1aL/Rb+Pv4ZgoHv4w==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@oxlint/darwin-x64": { + "version": "0.2.8", + "resolved": "https://registry.npmjs.org/@oxlint/darwin-x64/-/darwin-x64-0.2.8.tgz", + "integrity": "sha512-3jkzG3NRKeWiHqWHRcpYMIFmh8Vsb2XfobDc0eBwFfs16G/wXw15u9SBUPkKnwPM5jhceV3roGecqUjbr1AjBA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@oxlint/linux-arm64-gnu": { + "version": "0.2.8", + "resolved": "https://registry.npmjs.org/@oxlint/linux-arm64-gnu/-/linux-arm64-gnu-0.2.8.tgz", + "integrity": "sha512-71c7EIEXpgG9eiBYsyd388GtEpnXKswfn2nR9Raw5twA/Y/nDuxibMsRFMOOxbi5saapjQbVoxao3xt2uv4Jsg==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@oxlint/linux-arm64-musl": { + "version": "0.2.8", + "resolved": "https://registry.npmjs.org/@oxlint/linux-arm64-musl/-/linux-arm64-musl-0.2.8.tgz", + "integrity": "sha512-uB2w0xfAIOsrFqsh9c9LoAuvAT2QibQHQL5LFkIAtCW9XdMfk0YtDwm9zNJel1p/R3F3W9A+L4fJFIoqiXrLLQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@oxlint/linux-x64-gnu": { + "version": "0.2.8", + "resolved": "https://registry.npmjs.org/@oxlint/linux-x64-gnu/-/linux-x64-gnu-0.2.8.tgz", + "integrity": "sha512-d4IxS+B1j+u4XQom18CiHVzg5QSrNjG8xD1PHqyinwUXcq7re9LyH40yCxMxb3VZt5sNoX0M4BIfVcXrt3h8cg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@oxlint/linux-x64-musl": { + "version": "0.2.8", + "resolved": "https://registry.npmjs.org/@oxlint/linux-x64-musl/-/linux-x64-musl-0.2.8.tgz", + "integrity": "sha512-cIy3mNX2UY2CHnuJOCF50ki0XlogQatcCKg3OcxjI/PCpwZE1idNEZ8A2gXXodsyp0bDP74lgX/rhDKz63gvIg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@oxlint/win32-arm64": { + "version": "0.2.8", + "resolved": "https://registry.npmjs.org/@oxlint/win32-arm64/-/win32-arm64-0.2.8.tgz", + "integrity": "sha512-fFmLekNgUwgrGBK30U44778rQsF2GSjaGYbjkqYU1jKqoMRSoWyMgPskQBKG92R6G35AyE65UehusXItYfyuHA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@oxlint/win32-x64": { + "version": "0.2.8", + "resolved": "https://registry.npmjs.org/@oxlint/win32-x64/-/win32-x64-0.2.8.tgz", + "integrity": "sha512-iuLIDkJIbzNJGMhnwsrmrbuv6rzEEiWj14ROz/bCQvJbYsBKiA8hTohuuigCo0SG2UnyT74zuzJ8opTeHTrd1Q==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ] + }, "node_modules/@rollup/plugin-alias": { "version": "3.1.9", "resolved": "https://registry.npmjs.org/@rollup/plugin-alias/-/plugin-alias-3.1.9.tgz", @@ -4415,6 +4520,31 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/oxlint": { + "version": "0.2.8", + "resolved": "https://registry.npmjs.org/oxlint/-/oxlint-0.2.8.tgz", + "integrity": "sha512-bppMb121RTmwh2y/RWt6czaBd0LnQtDkYEVuSS+8Bv2Ez8qfdSyuWXfqNcxoSEasdaKDF9VckLeSI3WDXPYc/w==", + "dev": true, + "bin": { + "oxlint": "bin/oxlint" + }, + "engines": { + "node": ">=14.*" + }, + "funding": { + "url": "https://github.com/sponsors/Boshen" + }, + "optionalDependencies": { + "@oxlint/darwin-arm64": "0.2.8", + "@oxlint/darwin-x64": "0.2.8", + "@oxlint/linux-arm64-gnu": "0.2.8", + "@oxlint/linux-arm64-musl": "0.2.8", + "@oxlint/linux-x64-gnu": "0.2.8", + "@oxlint/linux-x64-musl": "0.2.8", + "@oxlint/win32-arm64": "0.2.8", + "@oxlint/win32-x64": "0.2.8" + } + }, "node_modules/p-finally": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", @@ -7567,6 +7697,62 @@ } } }, + "@oxlint/darwin-arm64": { + "version": "0.2.8", + "resolved": "https://registry.npmjs.org/@oxlint/darwin-arm64/-/darwin-arm64-0.2.8.tgz", + "integrity": "sha512-Xu+lEWj04aqa6qVbuf0tnc8tUlfXLNwOlYkIfd9GNpCxt6OLc53bfmUe7G6jDsfN3tkea1aL/Rb+Pv4ZgoHv4w==", + "dev": true, + "optional": true + }, + "@oxlint/darwin-x64": { + "version": "0.2.8", + "resolved": "https://registry.npmjs.org/@oxlint/darwin-x64/-/darwin-x64-0.2.8.tgz", + "integrity": "sha512-3jkzG3NRKeWiHqWHRcpYMIFmh8Vsb2XfobDc0eBwFfs16G/wXw15u9SBUPkKnwPM5jhceV3roGecqUjbr1AjBA==", + "dev": true, + "optional": true + }, + "@oxlint/linux-arm64-gnu": { + "version": "0.2.8", + "resolved": "https://registry.npmjs.org/@oxlint/linux-arm64-gnu/-/linux-arm64-gnu-0.2.8.tgz", + "integrity": "sha512-71c7EIEXpgG9eiBYsyd388GtEpnXKswfn2nR9Raw5twA/Y/nDuxibMsRFMOOxbi5saapjQbVoxao3xt2uv4Jsg==", + "dev": true, + "optional": true + }, + "@oxlint/linux-arm64-musl": { + "version": "0.2.8", + "resolved": "https://registry.npmjs.org/@oxlint/linux-arm64-musl/-/linux-arm64-musl-0.2.8.tgz", + "integrity": "sha512-uB2w0xfAIOsrFqsh9c9LoAuvAT2QibQHQL5LFkIAtCW9XdMfk0YtDwm9zNJel1p/R3F3W9A+L4fJFIoqiXrLLQ==", + "dev": true, + "optional": true + }, + "@oxlint/linux-x64-gnu": { + "version": "0.2.8", + "resolved": "https://registry.npmjs.org/@oxlint/linux-x64-gnu/-/linux-x64-gnu-0.2.8.tgz", + "integrity": "sha512-d4IxS+B1j+u4XQom18CiHVzg5QSrNjG8xD1PHqyinwUXcq7re9LyH40yCxMxb3VZt5sNoX0M4BIfVcXrt3h8cg==", + "dev": true, + "optional": true + }, + "@oxlint/linux-x64-musl": { + "version": "0.2.8", + "resolved": "https://registry.npmjs.org/@oxlint/linux-x64-musl/-/linux-x64-musl-0.2.8.tgz", + "integrity": "sha512-cIy3mNX2UY2CHnuJOCF50ki0XlogQatcCKg3OcxjI/PCpwZE1idNEZ8A2gXXodsyp0bDP74lgX/rhDKz63gvIg==", + "dev": true, + "optional": true + }, + "@oxlint/win32-arm64": { + "version": "0.2.8", + "resolved": "https://registry.npmjs.org/@oxlint/win32-arm64/-/win32-arm64-0.2.8.tgz", + "integrity": "sha512-fFmLekNgUwgrGBK30U44778rQsF2GSjaGYbjkqYU1jKqoMRSoWyMgPskQBKG92R6G35AyE65UehusXItYfyuHA==", + "dev": true, + "optional": true + }, + "@oxlint/win32-x64": { + "version": "0.2.8", + "resolved": "https://registry.npmjs.org/@oxlint/win32-x64/-/win32-x64-0.2.8.tgz", + "integrity": "sha512-iuLIDkJIbzNJGMhnwsrmrbuv6rzEEiWj14ROz/bCQvJbYsBKiA8hTohuuigCo0SG2UnyT74zuzJ8opTeHTrd1Q==", + "dev": true, + "optional": true + }, "@rollup/plugin-alias": { "version": "3.1.9", "resolved": "https://registry.npmjs.org/@rollup/plugin-alias/-/plugin-alias-3.1.9.tgz", @@ -9392,6 +9578,22 @@ "is-wsl": "^2.2.0" } }, + "oxlint": { + "version": "0.2.8", + "resolved": "https://registry.npmjs.org/oxlint/-/oxlint-0.2.8.tgz", + "integrity": "sha512-bppMb121RTmwh2y/RWt6czaBd0LnQtDkYEVuSS+8Bv2Ez8qfdSyuWXfqNcxoSEasdaKDF9VckLeSI3WDXPYc/w==", + "dev": true, + "requires": { + "@oxlint/darwin-arm64": "0.2.8", + "@oxlint/darwin-x64": "0.2.8", + "@oxlint/linux-arm64-gnu": "0.2.8", + "@oxlint/linux-arm64-musl": "0.2.8", + "@oxlint/linux-x64-gnu": "0.2.8", + "@oxlint/linux-x64-musl": "0.2.8", + "@oxlint/win32-arm64": "0.2.8", + "@oxlint/win32-x64": "0.2.8" + } + }, "p-finally": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", diff --git a/package.json b/package.json index ffda471..d7b1f69 100644 --- a/package.json +++ b/package.json @@ -15,11 +15,13 @@ "scripts": { "build": "microbundle", "test": "uvu", - "check": "tsc" + "check": "tsc", + "lint": "oxlint -D perf" }, "devDependencies": { "@types/css-tree": "^2.3.4", "microbundle": "^0.15.1", + "oxlint": "^0.2.8", "typescript": "^5.3.3", "uvu": "^0.5.6" }, @@ -39,4 +41,4 @@ "pretty", "prettier" ] -} +} \ No newline at end of file