From 2cd55b3a830f16c9e2464bfc8d996cb7e89fa12b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Martin=20Ad=C3=A1mek?= Date: Fri, 9 Oct 2026 20:09:28 +0200 Subject: [PATCH 1/2] chore: enforce file extensions in relative imports --- oxlint.config.ts | 1 + package.json | 2 +- pnpm-lock.yaml | 173 ++++++++++++++++++++++++----------------------- 3 files changed, 90 insertions(+), 86 deletions(-) diff --git a/oxlint.config.ts b/oxlint.config.ts index 1cebc96c5..c0abe9529 100644 --- a/oxlint.config.ts +++ b/oxlint.config.ts @@ -3,6 +3,7 @@ import { defineConfig } from '@apify/oxlint-config'; export default defineConfig({ ignorePatterns: ['**/node_modules', '**/dist', 'coverage'], rules: { + 'import/extensions': ['error', 'always', { ignorePackages: true }], 'typescript/no-explicit-any': 'off', 'no-param-reassign': 'off', }, diff --git a/package.json b/package.json index 483f4936f..428b26b9f 100644 --- a/package.json +++ b/package.json @@ -60,7 +60,7 @@ "lint-staged": "^17.6.0", "nock": "^14.0.17", "oxfmt": "0.72.0", - "oxlint": "1.62.0", + "oxlint": "1.87.0", "oxlint-tsgolint": "7.0.2003", "typescript": "^7.0.2", "vite": "^8.3.2", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index eed8c907f..8cd5199c8 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -15,7 +15,7 @@ importers: devDependencies: '@apify/oxlint-config': specifier: ^0.3.0 - version: 0.3.0(oxlint@1.62.0(oxlint-tsgolint@7.0.2003)) + version: 0.3.0(oxlint@1.87.0(oxlint-tsgolint@7.0.2003)) '@commitlint/config-conventional': specifier: ^21.2.3 version: 21.2.3 @@ -47,8 +47,8 @@ importers: specifier: 0.72.0 version: 0.72.0 oxlint: - specifier: 1.62.0 - version: 1.62.0(oxlint-tsgolint@7.0.2003) + specifier: 1.87.0 + version: 1.87.0(oxlint-tsgolint@7.0.2003) oxlint-tsgolint: specifier: 7.0.2003 version: 7.0.2003 @@ -1022,124 +1022,124 @@ packages: cpu: [x64] os: [win32] - '@oxlint/binding-android-arm-eabi@1.62.0': - resolution: {integrity: sha512-pKsthNECyvJh8lPTICz6VcwVy2jOqdhhsp1rlxCkhgZR47aKvXPmaRWQDv+zlXpRae4qm1MaaTnutkaOk5aofg==} + '@oxlint/binding-android-arm-eabi@1.87.0': + resolution: {integrity: sha512-22tVIHlB9898OYsBKmYB6He1MCSqdTmK1BVWuSNUTVrpS0KWNege+U9uEYqGJ+KatQag0r/oU44i3OOs46z7HQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm] os: [android] - '@oxlint/binding-android-arm64@1.62.0': - resolution: {integrity: sha512-b1AUNViByvgmR2xJDubvLIr+dSuu3uraG7bsAoKo+xrpspPvu6RIn6Fhr2JUhobfep3jwUTy18Huco6GkwdvGQ==} + '@oxlint/binding-android-arm64@1.87.0': + resolution: {integrity: sha512-JfZQ3MWf74n8ov0DojZpkOduIubYJvZL5tbTMMhDutsal6u1xH1QuNpN+lK+EQwF8AeAfgwTR2fgh5U2br27XA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [android] - '@oxlint/binding-darwin-arm64@1.62.0': - resolution: {integrity: sha512-iG+Tvf70UJ6otfwFYIHk36Sjq9cpPP5YLxkoggANNRtzgi3Tj3g8q6Ybqi6AtkU3+yg9QwF7bDCkCS6bbL4PCg==} + '@oxlint/binding-darwin-arm64@1.87.0': + resolution: {integrity: sha512-rkx6Xvvw93z2GImVOyvbZwAZcoY0Z6MJW177XNsSB+i/CBsH7ANyelTp01VZyIkM3iSXtqKVb4+ptBgPHap5pQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [darwin] - '@oxlint/binding-darwin-x64@1.62.0': - resolution: {integrity: sha512-oOWI6YPPr5AJUx+yIDlxmuUbQjS5gZX3OH3QisawYvsZgLiQVvZtR0rPBcJTxLWqt2ClrWg0DlSrlUiG5SQNHg==} + '@oxlint/binding-darwin-x64@1.87.0': + resolution: {integrity: sha512-cw5nYw7L/pQ2SgGBgOcg/Qo89llQre3vIc/kuBLhSICzu1r5s8L76H3ug6AIFsD98WpROj8/z5JVzkf4daxHaQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [darwin] - '@oxlint/binding-freebsd-x64@1.62.0': - resolution: {integrity: sha512-dLP33T7VLCmLVv4cvjkVX+rmkcwNk2UfxmsZPNur/7BQHoQR60zJ7XLiRvNUawlzn0u8ngCa3itjEG73MAMa/w==} + '@oxlint/binding-freebsd-x64@1.87.0': + resolution: {integrity: sha512-x/SuznE6loRZK9gz9AS4ZmzNzSu+5KdeoCS+sVHhnrE8HM6AD8UyTjwldQTTqlXGvkwHASgB0NiTNOc3o3PdAg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [freebsd] - '@oxlint/binding-linux-arm-gnueabihf@1.62.0': - resolution: {integrity: sha512-fl//LWNks6qo9chNY60UDYyIwtp7a5cEx4Y/rHPjaarhuwqx6jtbzEpD5V5AqmdL4a6Y5D8zeXg5HF2Cr0QmSQ==} + '@oxlint/binding-linux-arm-gnueabihf@1.87.0': + resolution: {integrity: sha512-+JEDmCAXiiFmKhAjZhgAOwaHWY6WENOQ5QA+lFuY59tgsUCDOTRi46B+lENK6CWvtxsXpwkZXNOgpjAQcpIpnA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm] os: [linux] - '@oxlint/binding-linux-arm-musleabihf@1.62.0': - resolution: {integrity: sha512-i5vkAuxvueTODV3J2dL61/TXewDHhMFKvtD156cIsk7GsdfiAu7zW7kY0NJXhKeFHeiMZIh7eFNjkPYH6J47HQ==} + '@oxlint/binding-linux-arm-musleabihf@1.87.0': + resolution: {integrity: sha512-/uC9XqXLAC9AHFLNycwmSQEvKqGrOCgU+uXALI7gNW0DG81TJ/3T2eHnKdRvcb5R1gFEfjxDwI4e4zIa29rICQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm] os: [linux] - '@oxlint/binding-linux-arm64-gnu@1.62.0': - resolution: {integrity: sha512-QwN19LLuIGuOjEflSeJkZmOTfBdBMlTmW8xbMf8TZhjd//cxVNYQPq75q7oKZBJc6hRx3gY7sX0Egc8cEIFZYg==} + '@oxlint/binding-linux-arm64-gnu@1.87.0': + resolution: {integrity: sha512-FTRYPsBy/M728vnUv7l+KAwSAa3Qi4BQbhVvy7NYuMTZ0sUa/OWsbMx79HVFw6u/5KWcaYayDsoOiv7xbevzDg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [linux] libc: [glibc] - '@oxlint/binding-linux-arm64-musl@1.62.0': - resolution: {integrity: sha512-8eCy3FCDuWUM5hWujAv6heMvfZPbcCOU3SdQUAkixZLu5bSzOkNfirJiLGoQFO943xceOKkiQRMQNzH++jM3WA==} + '@oxlint/binding-linux-arm64-musl@1.87.0': + resolution: {integrity: sha512-6sC+N7IY0h1egd8SrYUGNN7CUyKJZ4bIZakKa7V7hfinf4jfi8Kq4+klJvFp5DqXcwMn44I5MeBwmJluO1odFg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [linux] libc: [musl] - '@oxlint/binding-linux-ppc64-gnu@1.62.0': - resolution: {integrity: sha512-NjQ7K7tpTPDe9J+yq8p/s/J0E7lRCkK2uDBDqvT4XIT6f4Z0tlnr59OBg/WcrmVHER1AbrcfyxhGTXgcG8ytWg==} + '@oxlint/binding-linux-ppc64-gnu@1.87.0': + resolution: {integrity: sha512-d5Mnn+ICbhoJPi37Ccjy+86T5qfH2+mSTrTMBXNPfB+wqSWOayBBLLIrCXdUy1YssluCVdGkl+DO9w5r5ODmUA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [ppc64] os: [linux] libc: [glibc] - '@oxlint/binding-linux-riscv64-gnu@1.62.0': - resolution: {integrity: sha512-oKZed9gmSwze29dEt3/Wnsv6l/Ygw/FUst+8Kfpv2SGeS/glEoTGZAMQw37SVyzFV76UTHJN2snGgxK2t2+8ow==} + '@oxlint/binding-linux-riscv64-gnu@1.87.0': + resolution: {integrity: sha512-sf5YWuUo1Dx9loqWCgF8P278MycfcD4JHjDC/LV5j11L3Lqa4PFiwCjD6B8kP4AjsgZZkLn3xbpJEtZBaccs4Q==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [riscv64] os: [linux] libc: [glibc] - '@oxlint/binding-linux-riscv64-musl@1.62.0': - resolution: {integrity: sha512-gBjBxQ+9lGpAYq+ELqw0w8QXsBnkZclFc7GRX2r0LnEVn3ZTEqeIKpKcGjucmp76Q53bvJD0i4qBWBhcfhSfGA==} + '@oxlint/binding-linux-riscv64-musl@1.87.0': + resolution: {integrity: sha512-+aCraYbmK3uU3P0rFojjeaK9pGY6JvBDXh/0CM+gPyWKmNmXmnFe0qj4qj02U4ibFpbd9Pa9CmDvIdjJUd29rA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [riscv64] os: [linux] libc: [musl] - '@oxlint/binding-linux-s390x-gnu@1.62.0': - resolution: {integrity: sha512-Ew2Kxs9EQ9/mbAIJ2hvocMC0wsOu6YKzStI2eFBDt+Td5O8seVC/oxgRIHqCcl5sf5ratA1nozQBAuv7tphkHg==} + '@oxlint/binding-linux-s390x-gnu@1.87.0': + resolution: {integrity: sha512-7rzbZQIljo6VLWVPqUyLa2P/WV3VFsJB4M52R4NCUJn1A50yjtUsHxiMHFL9opEKGFIiTbZ3VQzmtcJOPUq4NQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [s390x] os: [linux] libc: [glibc] - '@oxlint/binding-linux-x64-gnu@1.62.0': - resolution: {integrity: sha512-5z25jcAA0gfKyVwz71A0VXgaPlocPoTAxhlv/hgoK6tlCrfoNuw7haWbDHvGMfjXhdic4EqVXGRv5XsTqFnbRQ==} + '@oxlint/binding-linux-x64-gnu@1.87.0': + resolution: {integrity: sha512-Dry46Fa+AXE/xt9J/YriujU1pU9mzfNWHGQwtOYibAFH8HLrKWCi93AhIGnuUMiwn2JbuBkRyz51f50Ly4r4ow==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [linux] libc: [glibc] - '@oxlint/binding-linux-x64-musl@1.62.0': - resolution: {integrity: sha512-IWpHmMB6ZDllPvqWDkG6AmXrN7JF5e/c4g/0PuURsmlK+vHoYZPB70rr4u1bn3I4LsKCSpqqfveyx6UCOC8wdg==} + '@oxlint/binding-linux-x64-musl@1.87.0': + resolution: {integrity: sha512-f/HMZez74gJvnRpGz+b5sdGyWrEgRLmFTXg9sNoqjPWogGxYHUhXKTKyMiYsu9rUGR2ciYqL3fk+Ua4JhMJbRA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [linux] libc: [musl] - '@oxlint/binding-openharmony-arm64@1.62.0': - resolution: {integrity: sha512-fjlSxxrD5pA594vkyikCS9MnPRjQawW6/BLgyTYkO+73wwPlYjkcZ7LSd974l0Q2zkHQmu4DPvJFLYA7o8xrxQ==} + '@oxlint/binding-openharmony-arm64@1.87.0': + resolution: {integrity: sha512-lEC6ZfPZm/07JlB7FsOWX9o1RiHlXiBW594LSUGuXmekC8LZmvUPP9XzE2WZcNxJi5cHA/Fw56o02c3JxgMA5g==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [openharmony] - '@oxlint/binding-win32-arm64-msvc@1.62.0': - resolution: {integrity: sha512-EiFXr8loNS0Ul3Gu80+9nr1T8jRmnKocqmHHg16tj5ZqTgUXyb97l2rrspVHdDluyFn9JfR4PoJFdNzw4paHww==} + '@oxlint/binding-win32-arm64-msvc@1.87.0': + resolution: {integrity: sha512-afBWKOD36dUiA9AenaiWpCg8xfyUVPYznyAAVXu413brK4RA5UI/Xoc4yfeGIT8G1a44MV+JR7hioryerBDzGQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [win32] - '@oxlint/binding-win32-ia32-msvc@1.62.0': - resolution: {integrity: sha512-IgOFvL73li1bFgab+hThXYA0N2Xms2kV2MvZN95cebV+fmrZ9AVui1JSxfeeqRLo3CpPxKZlzhyq4G0cnaAvIw==} + '@oxlint/binding-win32-ia32-msvc@1.87.0': + resolution: {integrity: sha512-daptNsEOuru4/nJTxV4DBHNJ5GepzmaBVQf+jjgKQGi9NRlZKik+RFq4hUL7ewsF1pwjKM+SkYaMbF82UwFGnw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [ia32] os: [win32] - '@oxlint/binding-win32-x64-msvc@1.62.0': - resolution: {integrity: sha512-6hMpyDWQ2zGA1OXFKBrdYMUveUCO8UJhkO6JdwZPd78xIdHZNhjx+pib+4fC2Cljuhjyl0QwA2F3df/bs4Bp6A==} + '@oxlint/binding-win32-x64-msvc@1.87.0': + resolution: {integrity: sha512-k+m/EShyXE29J/r1fjk0HlAzhN5JhIvj044oSJkXTEkCLrWZQgXb/3r4q5LTw/eaKW/4GuMXG2xmiJs3s5rPNw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [win32] @@ -2683,15 +2683,18 @@ packages: resolution: {integrity: sha512-VnK4zlqgmgq/7ZcjzCk/WpN8kKFsYGcB85Io9qT3wL4K8Un3RKmJkp793crNETieMusPMKOA4a+Mw2wbteI6TQ==} hasBin: true - oxlint@1.62.0: - resolution: {integrity: sha512-1uFkg6HakjsGIpW9wNdeW4/2LOHW9MEkoWjZUTUfQtIHyLIZPYt00w3Sg+H3lH+206FgBPHBbW5dVE5l2ExECQ==} + oxlint@1.87.0: + resolution: {integrity: sha512-drxVlaW7Oqq7wSy1CN25znRu00aRq8n57Q2wniJRxCmtYVz07ufCm7EVDPQFZURrTgQIjzKrVEHAD/HcvJXObg==} engines: {node: ^20.19.0 || >=22.12.0} hasBin: true peerDependencies: - oxlint-tsgolint: '>=0.18.0' + oxlint-tsgolint: '>=7.0.2003' + vite-plus: '*' peerDependenciesMeta: oxlint-tsgolint: optional: true + vite-plus: + optional: true p-finally@1.0.0: resolution: {integrity: sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==} @@ -3349,9 +3352,9 @@ packages: snapshots: - '@apify/oxlint-config@0.3.0(oxlint@1.62.0(oxlint-tsgolint@7.0.2003))': + '@apify/oxlint-config@0.3.0(oxlint@1.87.0(oxlint-tsgolint@7.0.2003))': dependencies: - oxlint: 1.62.0(oxlint-tsgolint@7.0.2003) + oxlint: 1.87.0(oxlint-tsgolint@7.0.2003) '@babel/code-frame@7.29.7': dependencies: @@ -4098,61 +4101,61 @@ snapshots: '@oxlint-tsgolint/win32-x64@7.0.2003': optional: true - '@oxlint/binding-android-arm-eabi@1.62.0': + '@oxlint/binding-android-arm-eabi@1.87.0': optional: true - '@oxlint/binding-android-arm64@1.62.0': + '@oxlint/binding-android-arm64@1.87.0': optional: true - '@oxlint/binding-darwin-arm64@1.62.0': + '@oxlint/binding-darwin-arm64@1.87.0': optional: true - '@oxlint/binding-darwin-x64@1.62.0': + '@oxlint/binding-darwin-x64@1.87.0': optional: true - '@oxlint/binding-freebsd-x64@1.62.0': + '@oxlint/binding-freebsd-x64@1.87.0': optional: true - '@oxlint/binding-linux-arm-gnueabihf@1.62.0': + '@oxlint/binding-linux-arm-gnueabihf@1.87.0': optional: true - '@oxlint/binding-linux-arm-musleabihf@1.62.0': + '@oxlint/binding-linux-arm-musleabihf@1.87.0': optional: true - '@oxlint/binding-linux-arm64-gnu@1.62.0': + '@oxlint/binding-linux-arm64-gnu@1.87.0': optional: true - '@oxlint/binding-linux-arm64-musl@1.62.0': + '@oxlint/binding-linux-arm64-musl@1.87.0': optional: true - '@oxlint/binding-linux-ppc64-gnu@1.62.0': + '@oxlint/binding-linux-ppc64-gnu@1.87.0': optional: true - '@oxlint/binding-linux-riscv64-gnu@1.62.0': + '@oxlint/binding-linux-riscv64-gnu@1.87.0': optional: true - '@oxlint/binding-linux-riscv64-musl@1.62.0': + '@oxlint/binding-linux-riscv64-musl@1.87.0': optional: true - '@oxlint/binding-linux-s390x-gnu@1.62.0': + '@oxlint/binding-linux-s390x-gnu@1.87.0': optional: true - '@oxlint/binding-linux-x64-gnu@1.62.0': + '@oxlint/binding-linux-x64-gnu@1.87.0': optional: true - '@oxlint/binding-linux-x64-musl@1.62.0': + '@oxlint/binding-linux-x64-musl@1.87.0': optional: true - '@oxlint/binding-openharmony-arm64@1.62.0': + '@oxlint/binding-openharmony-arm64@1.87.0': optional: true - '@oxlint/binding-win32-arm64-msvc@1.62.0': + '@oxlint/binding-win32-arm64-msvc@1.87.0': optional: true - '@oxlint/binding-win32-ia32-msvc@1.62.0': + '@oxlint/binding-win32-ia32-msvc@1.87.0': optional: true - '@oxlint/binding-win32-x64-msvc@1.62.0': + '@oxlint/binding-win32-x64-msvc@1.87.0': optional: true '@rolldown/binding-android-arm-eabi@1.2.12': @@ -5805,27 +5808,27 @@ snapshots: '@oxlint-tsgolint/win32-arm64': 7.0.2003 '@oxlint-tsgolint/win32-x64': 7.0.2003 - oxlint@1.62.0(oxlint-tsgolint@7.0.2003): + oxlint@1.87.0(oxlint-tsgolint@7.0.2003): optionalDependencies: - '@oxlint/binding-android-arm-eabi': 1.62.0 - '@oxlint/binding-android-arm64': 1.62.0 - '@oxlint/binding-darwin-arm64': 1.62.0 - '@oxlint/binding-darwin-x64': 1.62.0 - '@oxlint/binding-freebsd-x64': 1.62.0 - '@oxlint/binding-linux-arm-gnueabihf': 1.62.0 - '@oxlint/binding-linux-arm-musleabihf': 1.62.0 - '@oxlint/binding-linux-arm64-gnu': 1.62.0 - '@oxlint/binding-linux-arm64-musl': 1.62.0 - '@oxlint/binding-linux-ppc64-gnu': 1.62.0 - '@oxlint/binding-linux-riscv64-gnu': 1.62.0 - '@oxlint/binding-linux-riscv64-musl': 1.62.0 - '@oxlint/binding-linux-s390x-gnu': 1.62.0 - '@oxlint/binding-linux-x64-gnu': 1.62.0 - '@oxlint/binding-linux-x64-musl': 1.62.0 - '@oxlint/binding-openharmony-arm64': 1.62.0 - '@oxlint/binding-win32-arm64-msvc': 1.62.0 - '@oxlint/binding-win32-ia32-msvc': 1.62.0 - '@oxlint/binding-win32-x64-msvc': 1.62.0 + '@oxlint/binding-android-arm-eabi': 1.87.0 + '@oxlint/binding-android-arm64': 1.87.0 + '@oxlint/binding-darwin-arm64': 1.87.0 + '@oxlint/binding-darwin-x64': 1.87.0 + '@oxlint/binding-freebsd-x64': 1.87.0 + '@oxlint/binding-linux-arm-gnueabihf': 1.87.0 + '@oxlint/binding-linux-arm-musleabihf': 1.87.0 + '@oxlint/binding-linux-arm64-gnu': 1.87.0 + '@oxlint/binding-linux-arm64-musl': 1.87.0 + '@oxlint/binding-linux-ppc64-gnu': 1.87.0 + '@oxlint/binding-linux-riscv64-gnu': 1.87.0 + '@oxlint/binding-linux-riscv64-musl': 1.87.0 + '@oxlint/binding-linux-s390x-gnu': 1.87.0 + '@oxlint/binding-linux-x64-gnu': 1.87.0 + '@oxlint/binding-linux-x64-musl': 1.87.0 + '@oxlint/binding-openharmony-arm64': 1.87.0 + '@oxlint/binding-win32-arm64-msvc': 1.87.0 + '@oxlint/binding-win32-ia32-msvc': 1.87.0 + '@oxlint/binding-win32-x64-msvc': 1.87.0 oxlint-tsgolint: 7.0.2003 p-finally@1.0.0: {} From bbe2107ae973baa1bd8df2869416aa7dbd5bc01e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Martin=20Ad=C3=A1mek?= Date: Sun, 11 Oct 2026 10:10:52 +0200 Subject: [PATCH 2/2] chore: also check type-only imports for file extensions --- oxlint.config.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/oxlint.config.ts b/oxlint.config.ts index c0abe9529..3f783a773 100644 --- a/oxlint.config.ts +++ b/oxlint.config.ts @@ -3,7 +3,7 @@ import { defineConfig } from '@apify/oxlint-config'; export default defineConfig({ ignorePatterns: ['**/node_modules', '**/dist', 'coverage'], rules: { - 'import/extensions': ['error', 'always', { ignorePackages: true }], + 'import/extensions': ['error', 'always', { ignorePackages: true, checkTypeImports: true }], 'typescript/no-explicit-any': 'off', 'no-param-reassign': 'off', },