Compare commits

..

5 Commits

Author SHA1 Message Date
Renovate Bot 0408ce1f8e Update dependency @msw/playwright to v0.6.7
CI / backend-test (push) Successful in 57s
CI / frontend-test (push) Successful in 26s
CI / frontend-e2e (push) Successful in 1m39s
CI / build-and-publish (push) Has been skipped
2026-04-20 20:52:06 +00:00
nitrix 2a8c8ddffd Merge pull request 'Update oxlint monorepo' (#46) from renovate/oxlint-monorepo into master
CI / backend-test (push) Successful in 58s
CI / frontend-test (push) Successful in 27s
CI / frontend-e2e (push) Successful in 1m38s
CI / build-and-publish (push) Has been skipped
2026-04-20 22:47:56 +02:00
nitrix d13a5b2113 Add type parameters to vi.fn() mocks for oxlint 1.60 vitest rule
CI / backend-test (push) Successful in 1m1s
CI / frontend-test (push) Successful in 32s
CI / frontend-e2e (push) Successful in 1m39s
CI / build-and-publish (push) Has been skipped
oxlint 1.60 enables vitest/require-mock-type-parameters by default,
which requires explicit type parameters on all vi.fn() calls.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-20 22:42:51 +02:00
nitrix 8fb1927917 Pin oxlint to ~1.60.0 to match eslint-plugin-oxlint peer range
CI / backend-test (push) Successful in 57s
CI / frontend-test (push) Failing after 17s
CI / frontend-e2e (push) Successful in 1m42s
CI / build-and-publish (push) Has been skipped
eslint-plugin-oxlint@1.60.0 has a strict peerDependency of
oxlint@~1.60.0, and 1.61.0 is not yet released. Keep the two in
lockstep so npm install resolves cleanly.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-20 22:31:05 +02:00
Renovate Bot 1cda01d252 Update oxlint monorepo
renovate/artifacts Artifact file update failure
CI / backend-test (push) Successful in 1m0s
CI / frontend-test (push) Failing after 7s
CI / frontend-e2e (push) Failing after 8s
CI / build-and-publish (push) Has been skipped
2026-04-20 20:02:59 +00:00
6 changed files with 149 additions and 120 deletions
+112 -85
View File
@@ -26,14 +26,14 @@
"@vue/tsconfig": "^0.9.0", "@vue/tsconfig": "^0.9.0",
"eslint": "^10.0.2", "eslint": "^10.0.2",
"eslint-config-prettier": "^10.1.8", "eslint-config-prettier": "^10.1.8",
"eslint-plugin-oxlint": "~1.55.0", "eslint-plugin-oxlint": "~1.60.0",
"eslint-plugin-vue": "~10.8.0", "eslint-plugin-vue": "~10.8.0",
"jiti": "^2.6.1", "jiti": "^2.6.1",
"jsdom": "^28.1.0", "jsdom": "^28.1.0",
"msw": "^2.12.10", "msw": "^2.12.10",
"npm-run-all2": "^8.0.4", "npm-run-all2": "^8.0.4",
"openapi-typescript": "^7.13.0", "openapi-typescript": "^7.13.0",
"oxlint": "~1.55.0", "oxlint": "~1.60.0",
"prettier": "3.8.1", "prettier": "3.8.1",
"typescript": "~5.9.3", "typescript": "~5.9.3",
"vite": "^8.0.0", "vite": "^8.0.0",
@@ -1798,9 +1798,9 @@
} }
}, },
"node_modules/@oxlint/binding-android-arm-eabi": { "node_modules/@oxlint/binding-android-arm-eabi": {
"version": "1.55.0", "version": "1.60.0",
"resolved": "https://registry.npmjs.org/@oxlint/binding-android-arm-eabi/-/binding-android-arm-eabi-1.55.0.tgz", "resolved": "https://registry.npmjs.org/@oxlint/binding-android-arm-eabi/-/binding-android-arm-eabi-1.60.0.tgz",
"integrity": "sha512-NhvgAhncTSOhRahQSCnkK/4YIGPjTmhPurQQ2dwt2IvwCMTvZRW5vF2K10UBOxFve4GZDMw6LtXZdC2qeuYIVQ==", "integrity": "sha512-YdeJKaZckDQL1qa62a1aKq/goyq48aX3yOxaaWqWb4sau4Ee4IiLbamftNLU3zbePky6QsDj6thnSSzHRBjDfA==",
"cpu": [ "cpu": [
"arm" "arm"
], ],
@@ -1815,9 +1815,9 @@
} }
}, },
"node_modules/@oxlint/binding-android-arm64": { "node_modules/@oxlint/binding-android-arm64": {
"version": "1.55.0", "version": "1.60.0",
"resolved": "https://registry.npmjs.org/@oxlint/binding-android-arm64/-/binding-android-arm64-1.55.0.tgz", "resolved": "https://registry.npmjs.org/@oxlint/binding-android-arm64/-/binding-android-arm64-1.60.0.tgz",
"integrity": "sha512-P9iWRh+Ugqhg+D7rkc7boHX8o3H2h7YPcZHQIgvVBgnua5tk4LR2L+IBlreZs58/95cd2x3/004p5VsQM9z4SA==", "integrity": "sha512-7ANS7PpXCfq84xZQ8E5WPs14gwcuPcl+/8TFNXfpSu0CQBXz3cUo2fDpHT8v8HJN+Ut02eacvMAzTnc9s6X4tw==",
"cpu": [ "cpu": [
"arm64" "arm64"
], ],
@@ -1832,9 +1832,9 @@
} }
}, },
"node_modules/@oxlint/binding-darwin-arm64": { "node_modules/@oxlint/binding-darwin-arm64": {
"version": "1.55.0", "version": "1.60.0",
"resolved": "https://registry.npmjs.org/@oxlint/binding-darwin-arm64/-/binding-darwin-arm64-1.55.0.tgz", "resolved": "https://registry.npmjs.org/@oxlint/binding-darwin-arm64/-/binding-darwin-arm64-1.60.0.tgz",
"integrity": "sha512-esakkJIt7WFAhT30P/Qzn96ehFpzdZ1mNuzpOb8SCW7lI4oB8VsyQnkSHREM671jfpuBb/o2ppzBCx5l0jpgMA==", "integrity": "sha512-pJsgd9AfplLGBm1fIr25V6V14vMrayhx4uIQvlfH7jWs2SZwSrvi3TfgfJySB8T+hvyEH8K2zXljQiUnkgUnfQ==",
"cpu": [ "cpu": [
"arm64" "arm64"
], ],
@@ -1849,9 +1849,9 @@
} }
}, },
"node_modules/@oxlint/binding-darwin-x64": { "node_modules/@oxlint/binding-darwin-x64": {
"version": "1.55.0", "version": "1.60.0",
"resolved": "https://registry.npmjs.org/@oxlint/binding-darwin-x64/-/binding-darwin-x64-1.55.0.tgz", "resolved": "https://registry.npmjs.org/@oxlint/binding-darwin-x64/-/binding-darwin-x64-1.60.0.tgz",
"integrity": "sha512-xDMFRCCAEK9fOH6As2z8ELsC+VDGSFRHwIKVSilw+xhgLwTDFu37rtmRbmUlx8rRGS6cWKQPTc47AVxAZEVVPQ==", "integrity": "sha512-Ue1aXHX49ivwflKqGJc7zcd/LeLgbhaTcDCQStgx5x06AXgjEAZmvrlMuIkWd4AL4FHQe6QJ9f33z04Cg448VQ==",
"cpu": [ "cpu": [
"x64" "x64"
], ],
@@ -1866,9 +1866,9 @@
} }
}, },
"node_modules/@oxlint/binding-freebsd-x64": { "node_modules/@oxlint/binding-freebsd-x64": {
"version": "1.55.0", "version": "1.60.0",
"resolved": "https://registry.npmjs.org/@oxlint/binding-freebsd-x64/-/binding-freebsd-x64-1.55.0.tgz", "resolved": "https://registry.npmjs.org/@oxlint/binding-freebsd-x64/-/binding-freebsd-x64-1.60.0.tgz",
"integrity": "sha512-mYZqnwUD7ALCRxGenyLd1uuG+rHCL+OTT6S8FcAbVm/ZT2AZMGjvibp3F6k1SKOb2aeqFATmwRykrE41Q0GWVw==", "integrity": "sha512-YCyQzsQtusQw+gNRW9rRTifSO+Dt/+dtCl2NHoDMZqJlRTEZ/Oht9YnuporI9yiTx7+cB+eqzX3MtHHVHGIWhg==",
"cpu": [ "cpu": [
"x64" "x64"
], ],
@@ -1883,9 +1883,9 @@
} }
}, },
"node_modules/@oxlint/binding-linux-arm-gnueabihf": { "node_modules/@oxlint/binding-linux-arm-gnueabihf": {
"version": "1.55.0", "version": "1.60.0",
"resolved": "https://registry.npmjs.org/@oxlint/binding-linux-arm-gnueabihf/-/binding-linux-arm-gnueabihf-1.55.0.tgz", "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-arm-gnueabihf/-/binding-linux-arm-gnueabihf-1.60.0.tgz",
"integrity": "sha512-LcX6RYcF9vL9ESGwJW3yyIZ/d/ouzdOKXxCdey1q0XJOW1asrHsIg5MmyKdEBR4plQx+shvYeQne7AzW5f3T1w==", "integrity": "sha512-c7dxM2Zksa45Qw16i2iGY3Fti2NirJ38FrsBsKw+qcJ0OtqTsBgKJLF0xV+yLG56UH01Z8WRPgsw31e0MoRoGQ==",
"cpu": [ "cpu": [
"arm" "arm"
], ],
@@ -1900,9 +1900,9 @@
} }
}, },
"node_modules/@oxlint/binding-linux-arm-musleabihf": { "node_modules/@oxlint/binding-linux-arm-musleabihf": {
"version": "1.55.0", "version": "1.60.0",
"resolved": "https://registry.npmjs.org/@oxlint/binding-linux-arm-musleabihf/-/binding-linux-arm-musleabihf-1.55.0.tgz", "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-arm-musleabihf/-/binding-linux-arm-musleabihf-1.60.0.tgz",
"integrity": "sha512-C+8GS1rPtK+dI7mJFkqoRBkDuqbrNihnyYQsJPS9ez+8zF9JzfvU19lawqt4l/Y23o5uQswE/DORa8aiXUih3w==", "integrity": "sha512-ZWALoA42UYqBEP1Tbw9OWURgFGS1nWj2AAvLdY6ZcGx/Gj93qVCBKjcvwXMupZibYwFbi9s/rzqkZseb/6gVtQ==",
"cpu": [ "cpu": [
"arm" "arm"
], ],
@@ -1917,13 +1917,16 @@
} }
}, },
"node_modules/@oxlint/binding-linux-arm64-gnu": { "node_modules/@oxlint/binding-linux-arm64-gnu": {
"version": "1.55.0", "version": "1.60.0",
"resolved": "https://registry.npmjs.org/@oxlint/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-1.55.0.tgz", "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-1.60.0.tgz",
"integrity": "sha512-ErLE4XbmcCopA4/CIDiH6J1IAaDOMnf/KSx/aFObs4/OjAAM3sFKWGZ57pNOMxhhyBdcmcXwYymph9GwcpcqgQ==", "integrity": "sha512-tpy+1w4p9hN5CicMCxqNy6ymfRtV5ayE573vFNjp1k1TN/qhLFgflveZoE/0++RlkHikBz2vY545NWm/hp7big==",
"cpu": [ "cpu": [
"arm64" "arm64"
], ],
"dev": true, "dev": true,
"libc": [
"glibc"
],
"license": "MIT", "license": "MIT",
"optional": true, "optional": true,
"os": [ "os": [
@@ -1934,13 +1937,16 @@
} }
}, },
"node_modules/@oxlint/binding-linux-arm64-musl": { "node_modules/@oxlint/binding-linux-arm64-musl": {
"version": "1.55.0", "version": "1.60.0",
"resolved": "https://registry.npmjs.org/@oxlint/binding-linux-arm64-musl/-/binding-linux-arm64-musl-1.55.0.tgz", "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-arm64-musl/-/binding-linux-arm64-musl-1.60.0.tgz",
"integrity": "sha512-/kp65avi6zZfqEng56TTuhiy3P/3pgklKIdf38yvYeJ9/PgEeRA2A2AqKAKbZBNAqUzrzHhz9jF6j/PZvhJzTQ==", "integrity": "sha512-eDYDXZGhQAXyn6GwtwiX/qcLS0HlOLPJ/+iiIY8RYr+3P8oKBmgKxADLlniL6FtWfE7pPk7IGN9/xvDEvDvFeg==",
"cpu": [ "cpu": [
"arm64" "arm64"
], ],
"dev": true, "dev": true,
"libc": [
"musl"
],
"license": "MIT", "license": "MIT",
"optional": true, "optional": true,
"os": [ "os": [
@@ -1951,13 +1957,16 @@
} }
}, },
"node_modules/@oxlint/binding-linux-ppc64-gnu": { "node_modules/@oxlint/binding-linux-ppc64-gnu": {
"version": "1.55.0", "version": "1.60.0",
"resolved": "https://registry.npmjs.org/@oxlint/binding-linux-ppc64-gnu/-/binding-linux-ppc64-gnu-1.55.0.tgz", "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-ppc64-gnu/-/binding-linux-ppc64-gnu-1.60.0.tgz",
"integrity": "sha512-A6pTdXwcEEwL/nmz0eUJ6WxmxcoIS+97GbH96gikAyre3s5deC7sts38ZVVowjS2QQFuSWkpA4ZmQC0jZSNvJQ==", "integrity": "sha512-nxehly5XYBHUWI9VJX1bqCf9j/B43DaK/aS/T1fcxCpX3PA4Rm9BB54nPD1CKayT8xg6REN1ao+01hSRNgy8OA==",
"cpu": [ "cpu": [
"ppc64" "ppc64"
], ],
"dev": true, "dev": true,
"libc": [
"glibc"
],
"license": "MIT", "license": "MIT",
"optional": true, "optional": true,
"os": [ "os": [
@@ -1968,13 +1977,16 @@
} }
}, },
"node_modules/@oxlint/binding-linux-riscv64-gnu": { "node_modules/@oxlint/binding-linux-riscv64-gnu": {
"version": "1.55.0", "version": "1.60.0",
"resolved": "https://registry.npmjs.org/@oxlint/binding-linux-riscv64-gnu/-/binding-linux-riscv64-gnu-1.55.0.tgz", "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-riscv64-gnu/-/binding-linux-riscv64-gnu-1.60.0.tgz",
"integrity": "sha512-clj0lnIN+V52G9tdtZl0LbdTSurnZ1NZj92Je5X4lC7gP5jiCSW+Y/oiDiSauBAD4wrHt2S7nN3pA0zfKYK/6Q==", "integrity": "sha512-j1qf/NaUfOWQutjeoooNG1Q0zsK0XGmSu1uDLq3cctquRF3j7t9Hxqf/76ehCc5GEUAanth2W4Fa+XT1RFg/nw==",
"cpu": [ "cpu": [
"riscv64" "riscv64"
], ],
"dev": true, "dev": true,
"libc": [
"glibc"
],
"license": "MIT", "license": "MIT",
"optional": true, "optional": true,
"os": [ "os": [
@@ -1985,13 +1997,16 @@
} }
}, },
"node_modules/@oxlint/binding-linux-riscv64-musl": { "node_modules/@oxlint/binding-linux-riscv64-musl": {
"version": "1.55.0", "version": "1.60.0",
"resolved": "https://registry.npmjs.org/@oxlint/binding-linux-riscv64-musl/-/binding-linux-riscv64-musl-1.55.0.tgz", "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-riscv64-musl/-/binding-linux-riscv64-musl-1.60.0.tgz",
"integrity": "sha512-NNu08pllN5x/O94/sgR3DA8lbrGBnTHsINZZR0hcav1sj79ksTiKKm1mRzvZvacwQ0hUnGinFo+JO75ok2PxYg==", "integrity": "sha512-YELKPRefQ/q/h3RUmeRfPCUhh2wBvgV1RyZ/F9M9u8cDyXsQW2ojv1DeWQTt466yczDITjZnIOg/s05pk7Ve2A==",
"cpu": [ "cpu": [
"riscv64" "riscv64"
], ],
"dev": true, "dev": true,
"libc": [
"musl"
],
"license": "MIT", "license": "MIT",
"optional": true, "optional": true,
"os": [ "os": [
@@ -2002,13 +2017,16 @@
} }
}, },
"node_modules/@oxlint/binding-linux-s390x-gnu": { "node_modules/@oxlint/binding-linux-s390x-gnu": {
"version": "1.55.0", "version": "1.60.0",
"resolved": "https://registry.npmjs.org/@oxlint/binding-linux-s390x-gnu/-/binding-linux-s390x-gnu-1.55.0.tgz", "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-s390x-gnu/-/binding-linux-s390x-gnu-1.60.0.tgz",
"integrity": "sha512-BvfQz3PRlWZRoEZ17dZCqgQsMRdpzGZomJkVATwCIGhHVVeHJMQdmdXPSjcT1DCNUrOjXnVyj1RGDj5+/Je2+Q==", "integrity": "sha512-JkO3C6Gki7Y6h/MiIkFKvHFOz98/YWvQ4WYbK9DLXACMP2rjULzkeGyAzorJE5S1dzLQGFgeqvN779kSFwoV1g==",
"cpu": [ "cpu": [
"s390x" "s390x"
], ],
"dev": true, "dev": true,
"libc": [
"glibc"
],
"license": "MIT", "license": "MIT",
"optional": true, "optional": true,
"os": [ "os": [
@@ -2019,13 +2037,16 @@
} }
}, },
"node_modules/@oxlint/binding-linux-x64-gnu": { "node_modules/@oxlint/binding-linux-x64-gnu": {
"version": "1.55.0", "version": "1.60.0",
"resolved": "https://registry.npmjs.org/@oxlint/binding-linux-x64-gnu/-/binding-linux-x64-gnu-1.55.0.tgz", "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-x64-gnu/-/binding-linux-x64-gnu-1.60.0.tgz",
"integrity": "sha512-ngSOoFCSBMKVQd24H8zkbcBNc7EHhjnF1sv3mC9NNXQ/4rRjI/4Dj9+9XoDZeFEkF1SX1COSBXF1b2Pr9rqdEw==", "integrity": "sha512-XjKHdFVCpZZZSWBCKyyqCq65s2AKXykMXkjLoKYODrD+f5toLhlwsMESscu8FbgnJQ4Y/dpR/zdazsahmgBJIA==",
"cpu": [ "cpu": [
"x64" "x64"
], ],
"dev": true, "dev": true,
"libc": [
"glibc"
],
"license": "MIT", "license": "MIT",
"optional": true, "optional": true,
"os": [ "os": [
@@ -2036,13 +2057,16 @@
} }
}, },
"node_modules/@oxlint/binding-linux-x64-musl": { "node_modules/@oxlint/binding-linux-x64-musl": {
"version": "1.55.0", "version": "1.60.0",
"resolved": "https://registry.npmjs.org/@oxlint/binding-linux-x64-musl/-/binding-linux-x64-musl-1.55.0.tgz", "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-x64-musl/-/binding-linux-x64-musl-1.60.0.tgz",
"integrity": "sha512-BDpP7W8GlaG7BR6QjGZAleYzxoyKc/D24spZIF2mB3XsfALQJJT/OBmP8YpeTb1rveFSBHzl8T7l0aqwkWNdGA==", "integrity": "sha512-js29ZWIuPhNWzY8NC7KoffEMEeWG105vbmm+8EOJsC+T/jHBiKIJEUF78+F/IrgEWMMP9N0kRND4Pp75+xAhKg==",
"cpu": [ "cpu": [
"x64" "x64"
], ],
"dev": true, "dev": true,
"libc": [
"musl"
],
"license": "MIT", "license": "MIT",
"optional": true, "optional": true,
"os": [ "os": [
@@ -2053,9 +2077,9 @@
} }
}, },
"node_modules/@oxlint/binding-openharmony-arm64": { "node_modules/@oxlint/binding-openharmony-arm64": {
"version": "1.55.0", "version": "1.60.0",
"resolved": "https://registry.npmjs.org/@oxlint/binding-openharmony-arm64/-/binding-openharmony-arm64-1.55.0.tgz", "resolved": "https://registry.npmjs.org/@oxlint/binding-openharmony-arm64/-/binding-openharmony-arm64-1.60.0.tgz",
"integrity": "sha512-PS6GFvmde/pc3fCA2Srt51glr8Lcxhpf6WIBFfLphndjRrD34NEcses4TSxQrEcxYo6qVywGfylM0ZhSCF2gGA==", "integrity": "sha512-H+PUITKHk04stFpWj3x3Kg08Afp/bcXSBi0EhasR5a0Vw7StXHTzdl655PUI0fB4qdh2Wsu6Dsi+3ACxPoyQnA==",
"cpu": [ "cpu": [
"arm64" "arm64"
], ],
@@ -2070,9 +2094,9 @@
} }
}, },
"node_modules/@oxlint/binding-win32-arm64-msvc": { "node_modules/@oxlint/binding-win32-arm64-msvc": {
"version": "1.55.0", "version": "1.60.0",
"resolved": "https://registry.npmjs.org/@oxlint/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-1.55.0.tgz", "resolved": "https://registry.npmjs.org/@oxlint/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-1.60.0.tgz",
"integrity": "sha512-P6JcLJGs/q1UOvDLzN8otd9JsH4tsuuPDv+p7aHqHM3PrKmYdmUvkNj4K327PTd35AYcznOCN+l4ZOaq76QzSw==", "integrity": "sha512-WA/yc7f7ZfCefBXVzNHn1Ztulb1EFwNBb4jMZ6pjML0zz6pHujlF3Q3jySluz3XHl/GNeMTntG1seUBWVMlMag==",
"cpu": [ "cpu": [
"arm64" "arm64"
], ],
@@ -2087,9 +2111,9 @@
} }
}, },
"node_modules/@oxlint/binding-win32-ia32-msvc": { "node_modules/@oxlint/binding-win32-ia32-msvc": {
"version": "1.55.0", "version": "1.60.0",
"resolved": "https://registry.npmjs.org/@oxlint/binding-win32-ia32-msvc/-/binding-win32-ia32-msvc-1.55.0.tgz", "resolved": "https://registry.npmjs.org/@oxlint/binding-win32-ia32-msvc/-/binding-win32-ia32-msvc-1.60.0.tgz",
"integrity": "sha512-gzkk4zE2zsE+WmRxFOiAZHpCpUNDFytEakqNXoNHW+PnYEOTPKDdW6nrzgSeTbGKVPXNAKQnRnMgrh7+n3Xueg==", "integrity": "sha512-33YxL1sqwYNZXtn3MD/4dno6s0xeedXOJlT1WohkVD565WvohClZUr7vwKdAk954n4xiEWJkewiCr+zLeq7AeA==",
"cpu": [ "cpu": [
"ia32" "ia32"
], ],
@@ -2104,9 +2128,9 @@
} }
}, },
"node_modules/@oxlint/binding-win32-x64-msvc": { "node_modules/@oxlint/binding-win32-x64-msvc": {
"version": "1.55.0", "version": "1.60.0",
"resolved": "https://registry.npmjs.org/@oxlint/binding-win32-x64-msvc/-/binding-win32-x64-msvc-1.55.0.tgz", "resolved": "https://registry.npmjs.org/@oxlint/binding-win32-x64-msvc/-/binding-win32-x64-msvc-1.60.0.tgz",
"integrity": "sha512-ZFALNow2/og75gvYzNP7qe+rREQ5xunktwA+lgykoozHZ6hw9bqg4fn5j2UvG4gIn1FXqrZHkOAXuPf5+GOYTQ==", "integrity": "sha512-JOro4ZcfBLamJCyfURQmOQByoorgOdx3ZjAkSqnb/CyG/i+lN3KoV5LAgk5ZAW6DPq7/Cx7n23f8DuTWXTWgyQ==",
"cpu": [ "cpu": [
"x64" "x64"
], ],
@@ -4725,13 +4749,16 @@
} }
}, },
"node_modules/eslint-plugin-oxlint": { "node_modules/eslint-plugin-oxlint": {
"version": "1.55.0", "version": "1.60.0",
"resolved": "https://registry.npmjs.org/eslint-plugin-oxlint/-/eslint-plugin-oxlint-1.55.0.tgz", "resolved": "https://registry.npmjs.org/eslint-plugin-oxlint/-/eslint-plugin-oxlint-1.60.0.tgz",
"integrity": "sha512-5ng7DOuikSE64e7hX2HBqEWdmql+Q4FWppBoBkxKKflLt1j9LXhab5BN3bYJKyrAihuK1/VH2JvfNefeOZAqpA==", "integrity": "sha512-9RUD23k7ablez1qg7JWnyPYPOlbucDDqaDr+qNUi0TbIQCPqIPCLzfllgqKF9lOxlg+l17H8hISErmarvm2J1w==",
"dev": true, "dev": true,
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"jsonc-parser": "^3.3.1" "jsonc-parser": "^3.3.1"
},
"peerDependencies": {
"oxlint": "~1.60.0"
} }
}, },
"node_modules/eslint-plugin-vue": { "node_modules/eslint-plugin-vue": {
@@ -6386,9 +6413,9 @@
"license": "MIT" "license": "MIT"
}, },
"node_modules/oxlint": { "node_modules/oxlint": {
"version": "1.55.0", "version": "1.60.0",
"resolved": "https://registry.npmjs.org/oxlint/-/oxlint-1.55.0.tgz", "resolved": "https://registry.npmjs.org/oxlint/-/oxlint-1.60.0.tgz",
"integrity": "sha512-T+FjepiyWpaZMhekqRpH8Z3I4vNM610p6w+Vjfqgj5TZUxHXl7N8N5IPvmOU8U4XdTRxqtNNTh9Y4hLtr7yvFg==", "integrity": "sha512-tnRzTWiWJ9pg3ftRWnD0+Oqh78L6ZSwcEudvCZaER0PIqiAnNyXj5N1dPwjmNpDalkKS9m/WMLN1CTPUBPmsgw==",
"dev": true, "dev": true,
"license": "MIT", "license": "MIT",
"bin": { "bin": {
@@ -6401,28 +6428,28 @@
"url": "https://github.com/sponsors/Boshen" "url": "https://github.com/sponsors/Boshen"
}, },
"optionalDependencies": { "optionalDependencies": {
"@oxlint/binding-android-arm-eabi": "1.55.0", "@oxlint/binding-android-arm-eabi": "1.60.0",
"@oxlint/binding-android-arm64": "1.55.0", "@oxlint/binding-android-arm64": "1.60.0",
"@oxlint/binding-darwin-arm64": "1.55.0", "@oxlint/binding-darwin-arm64": "1.60.0",
"@oxlint/binding-darwin-x64": "1.55.0", "@oxlint/binding-darwin-x64": "1.60.0",
"@oxlint/binding-freebsd-x64": "1.55.0", "@oxlint/binding-freebsd-x64": "1.60.0",
"@oxlint/binding-linux-arm-gnueabihf": "1.55.0", "@oxlint/binding-linux-arm-gnueabihf": "1.60.0",
"@oxlint/binding-linux-arm-musleabihf": "1.55.0", "@oxlint/binding-linux-arm-musleabihf": "1.60.0",
"@oxlint/binding-linux-arm64-gnu": "1.55.0", "@oxlint/binding-linux-arm64-gnu": "1.60.0",
"@oxlint/binding-linux-arm64-musl": "1.55.0", "@oxlint/binding-linux-arm64-musl": "1.60.0",
"@oxlint/binding-linux-ppc64-gnu": "1.55.0", "@oxlint/binding-linux-ppc64-gnu": "1.60.0",
"@oxlint/binding-linux-riscv64-gnu": "1.55.0", "@oxlint/binding-linux-riscv64-gnu": "1.60.0",
"@oxlint/binding-linux-riscv64-musl": "1.55.0", "@oxlint/binding-linux-riscv64-musl": "1.60.0",
"@oxlint/binding-linux-s390x-gnu": "1.55.0", "@oxlint/binding-linux-s390x-gnu": "1.60.0",
"@oxlint/binding-linux-x64-gnu": "1.55.0", "@oxlint/binding-linux-x64-gnu": "1.60.0",
"@oxlint/binding-linux-x64-musl": "1.55.0", "@oxlint/binding-linux-x64-musl": "1.60.0",
"@oxlint/binding-openharmony-arm64": "1.55.0", "@oxlint/binding-openharmony-arm64": "1.60.0",
"@oxlint/binding-win32-arm64-msvc": "1.55.0", "@oxlint/binding-win32-arm64-msvc": "1.60.0",
"@oxlint/binding-win32-ia32-msvc": "1.55.0", "@oxlint/binding-win32-ia32-msvc": "1.60.0",
"@oxlint/binding-win32-x64-msvc": "1.55.0" "@oxlint/binding-win32-x64-msvc": "1.60.0"
}, },
"peerDependencies": { "peerDependencies": {
"oxlint-tsgolint": ">=0.15.0" "oxlint-tsgolint": ">=0.18.0"
}, },
"peerDependenciesMeta": { "peerDependenciesMeta": {
"oxlint-tsgolint": { "oxlint-tsgolint": {
+2 -2
View File
@@ -38,14 +38,14 @@
"@vue/tsconfig": "^0.9.0", "@vue/tsconfig": "^0.9.0",
"eslint": "^10.0.2", "eslint": "^10.0.2",
"eslint-config-prettier": "^10.1.8", "eslint-config-prettier": "^10.1.8",
"eslint-plugin-oxlint": "~1.55.0", "eslint-plugin-oxlint": "~1.60.0",
"eslint-plugin-vue": "~10.8.0", "eslint-plugin-vue": "~10.8.0",
"jiti": "^2.6.1", "jiti": "^2.6.1",
"jsdom": "^28.1.0", "jsdom": "^28.1.0",
"msw": "^2.12.10", "msw": "^2.12.10",
"npm-run-all2": "^8.0.4", "npm-run-all2": "^8.0.4",
"openapi-typescript": "^7.13.0", "openapi-typescript": "^7.13.0",
"oxlint": "~1.55.0", "oxlint": "~1.60.0",
"prettier": "3.8.1", "prettier": "3.8.1",
"typescript": "~5.9.3", "typescript": "~5.9.3",
"vite": "^8.0.0", "vite": "^8.0.0",
@@ -2,11 +2,12 @@ import { describe, it, expect, vi, beforeEach, afterEach } from 'vitest'
import { mount, flushPromises } from '@vue/test-utils' import { mount, flushPromises } from '@vue/test-utils'
import { createRouter, createMemoryHistory } from 'vue-router' import { createRouter, createMemoryHistory } from 'vue-router'
import EventList from '../EventList.vue' import EventList from '../EventList.vue'
import type { api } from '../../api/client'
vi.mock('../../api/client', () => ({ vi.mock('../../api/client', () => ({
api: { api: {
PATCH: vi.fn(), PATCH: vi.fn<typeof api.PATCH>(),
DELETE: vi.fn(), DELETE: vi.fn<typeof api.DELETE>(),
}, },
})) }))
@@ -31,7 +32,7 @@ const mockEvents = [
{ eventToken: 'rsvp-1', title: 'Attending Event', dateTime: '2026-03-11T20:00:00', rsvpToken: 'rsvp-token', rsvpName: 'Max' }, { eventToken: 'rsvp-1', title: 'Attending Event', dateTime: '2026-03-11T20:00:00', rsvpToken: 'rsvp-token', rsvpName: 'Max' },
] ]
const removeEventMock = vi.fn() const removeEventMock = vi.fn<(eventToken: string) => void>()
vi.mock('../../composables/useEventStorage', () => ({ vi.mock('../../composables/useEventStorage', () => ({
isValidStoredEvent: (e: unknown) => { isValidStoredEvent: (e: unknown) => {
@@ -3,19 +3,20 @@ import { mount, flushPromises } from '@vue/test-utils'
import { createRouter, createMemoryHistory } from 'vue-router' import { createRouter, createMemoryHistory } from 'vue-router'
import EventCreateView from '../EventCreateView.vue' import EventCreateView from '../EventCreateView.vue'
import { api } from '@/api/client' import { api } from '@/api/client'
import type { StoredEvent } from '@/composables/useEventStorage'
vi.mock('@/api/client', () => ({ vi.mock('@/api/client', () => ({
api: { api: {
POST: vi.fn(), POST: vi.fn<typeof api.POST>(),
}, },
})) }))
vi.mock('@/composables/useEventStorage', () => ({ vi.mock('@/composables/useEventStorage', () => ({
useEventStorage: vi.fn(() => ({ useEventStorage: vi.fn<() => unknown>(() => ({
saveCreatedEvent: vi.fn(), saveCreatedEvent: vi.fn<() => void>(),
getStoredEvents: vi.fn(() => []), getStoredEvents: vi.fn<() => unknown[]>(() => []),
getOrganizerToken: vi.fn(), getOrganizerToken: vi.fn<() => string | undefined>(),
saveRsvp: vi.fn(), saveRsvp: vi.fn<() => void>(),
getRsvp: vi.fn(), getRsvp: vi.fn<() => unknown>(),
})), })),
})) }))
@@ -154,19 +155,19 @@ describe('EventCreateView', () => {
}) })
it('submits successfully, saves to storage, and navigates to event page', async () => { it('submits successfully, saves to storage, and navigates to event page', async () => {
const mockSave = vi.fn() const mockSave = vi.fn<(...args: unknown[]) => void>()
vi.mocked(vi.importActual<typeof import('@/composables/useEventStorage')>) vi.mocked(vi.importActual<typeof import('@/composables/useEventStorage')>)
const { useEventStorage } = await import('@/composables/useEventStorage') const { useEventStorage } = await import('@/composables/useEventStorage')
vi.mocked(useEventStorage).mockReturnValue({ vi.mocked(useEventStorage).mockReturnValue({
saveCreatedEvent: mockSave, saveCreatedEvent: mockSave,
getStoredEvents: vi.fn(() => []), getStoredEvents: vi.fn<() => StoredEvent[]>(() => []),
getOrganizerToken: vi.fn(), getOrganizerToken: vi.fn<() => string | undefined>(),
saveRsvp: vi.fn(), saveRsvp: vi.fn<() => void>(),
getRsvp: vi.fn(), getRsvp: vi.fn<() => { rsvpToken: string; rsvpName: string } | undefined>(),
removeRsvp: vi.fn(), removeRsvp: vi.fn<() => void>(),
saveWatch: vi.fn(), saveWatch: vi.fn<() => void>(),
isStored: vi.fn(() => false), isStored: vi.fn<() => boolean>(() => false),
removeEvent: vi.fn(), removeEvent: vi.fn<() => void>(),
}) })
vi.mocked(api.POST).mockResolvedValueOnce({ vi.mocked(api.POST).mockResolvedValueOnce({
@@ -6,26 +6,26 @@ import { api } from '@/api/client'
vi.mock('@/api/client', () => ({ vi.mock('@/api/client', () => ({
api: { api: {
GET: vi.fn(), GET: vi.fn<typeof api.GET>(),
POST: vi.fn(), POST: vi.fn<typeof api.POST>(),
}, },
})) }))
const mockSaveRsvp = vi.fn() const mockSaveRsvp = vi.fn<(...args: unknown[]) => void>()
const mockGetRsvp = vi.fn() const mockGetRsvp = vi.fn<(eventToken: string) => { rsvpToken: string; rsvpName: string } | undefined>()
const mockGetOrganizerToken = vi.fn() const mockGetOrganizerToken = vi.fn<(eventToken: string) => string | undefined>()
const mockSaveWatch = vi.fn() const mockSaveWatch = vi.fn<(...args: unknown[]) => void>()
const mockIsStored = vi.fn() const mockIsStored = vi.fn<(eventToken: string) => boolean>()
const mockRemoveEvent = vi.fn() const mockRemoveEvent = vi.fn<(eventToken: string) => void>()
vi.mock('@/composables/useEventStorage', () => ({ vi.mock('@/composables/useEventStorage', () => ({
useEventStorage: vi.fn(() => ({ useEventStorage: vi.fn<() => unknown>(() => ({
saveCreatedEvent: vi.fn(), saveCreatedEvent: vi.fn<() => void>(),
getStoredEvents: vi.fn(() => []), getStoredEvents: vi.fn<() => unknown[]>(() => []),
getOrganizerToken: mockGetOrganizerToken, getOrganizerToken: mockGetOrganizerToken,
saveRsvp: mockSaveRsvp, saveRsvp: mockSaveRsvp,
getRsvp: mockGetRsvp, getRsvp: mockGetRsvp,
removeRsvp: vi.fn(), removeRsvp: vi.fn<() => void>(),
saveWatch: mockSaveWatch, saveWatch: mockSaveWatch,
isStored: mockIsStored, isStored: mockIsStored,
removeEvent: mockRemoveEvent, removeEvent: mockRemoveEvent,
@@ -46,7 +46,7 @@ describe('EventStubView', () => {
}) })
it('copies link to clipboard and shows confirmation', async () => { it('copies link to clipboard and shows confirmation', async () => {
const writeTextMock = vi.fn().mockResolvedValue(undefined) const writeTextMock = vi.fn<(text: string) => Promise<void>>().mockResolvedValue(undefined)
Object.assign(navigator, { Object.assign(navigator, {
clipboard: { writeText: writeTextMock }, clipboard: { writeText: writeTextMock },
}) })
@@ -63,7 +63,7 @@ describe('EventStubView', () => {
it('shows failure message when clipboard is unavailable', async () => { it('shows failure message when clipboard is unavailable', async () => {
Object.assign(navigator, { Object.assign(navigator, {
clipboard: { writeText: vi.fn().mockRejectedValue(new Error('Not allowed')) }, clipboard: { writeText: vi.fn<(text: string) => Promise<void>>().mockRejectedValue(new Error('Not allowed')) },
}) })
const wrapper = await mountWithToken('fail-test') const wrapper = await mountWithToken('fail-test')