From 15414e26d206a9ce90a11e8533f2b0215adaed4d Mon Sep 17 00:00:00 2001 From: Ayo Date: Sat, 4 Apr 2026 10:11:21 +0200 Subject: [PATCH] chore: add astro eslint parser; add pre-commit lint:fix --- .husky/pre-commit | 2 + eslint.config.js | 13 ++- package.json | 4 +- pnpm-lock.yaml | 182 +++++++++++++++++++++++++++++++++++++++++- src/Serialize.astro | 2 - src/pages/index.astro | 2 +- 6 files changed, 198 insertions(+), 7 deletions(-) create mode 100644 .husky/pre-commit diff --git a/.husky/pre-commit b/.husky/pre-commit new file mode 100644 index 0000000..9fb205a --- /dev/null +++ b/.husky/pre-commit @@ -0,0 +1,2 @@ +echo "pre-commit..." +npm run lint:fix \ No newline at end of file diff --git a/eslint.config.js b/eslint.config.js index b157365..fc55c1a 100644 --- a/eslint.config.js +++ b/eslint.config.js @@ -6,9 +6,10 @@ import globals from 'globals' import { defineConfig, globalIgnores } from 'eslint/config' import stylistic from '@stylistic/eslint-plugin' import eslintPluginAstro from 'eslint-plugin-astro' +import astroParser from 'astro-eslint-parser' +import tseslint from 'typescript-eslint' export default defineConfig([ - ...eslintPluginAstro.configs.recommended, { files: ['**/*.css'], plugins: { @@ -51,5 +52,15 @@ export default defineConfig([ }] } }, + ...eslintPluginAstro.configs.recommended, + { + files: ['**/*.astro'], + languageOptions: { + parser: astroParser, + parserOptions: { + parser: tseslint.parser + } + } + }, globalIgnores(['**/dist', '**/**.d.ts']) ]) diff --git a/package.json b/package.json index 4cef99e..5f464b4 100644 --- a/package.json +++ b/package.json @@ -39,11 +39,13 @@ "@eslint/css": "^1.1.0", "@eslint/js": "^10.0.1", "@stylistic/eslint-plugin": "^5.10.0", + "astro-eslint-parser": "^1.4.0", "devalue": "^5.6.4", "eslint": "^10.2.0", "eslint-plugin-astro": "^1.6.0", "globals": "^17.4.0", - "husky": "^9.1.7" + "husky": "^9.1.7", + "typescript-eslint": "^8.58.0" }, "peerDependencies": { "astro": "^6" diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index b83f5f0..51f9026 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -21,6 +21,9 @@ importers: '@stylistic/eslint-plugin': specifier: ^5.10.0 version: 5.10.0(eslint@10.2.0) + astro-eslint-parser: + specifier: ^1.4.0 + version: 1.4.0 devalue: specifier: ^5.6.4 version: 5.6.4 @@ -36,6 +39,9 @@ importers: husky: specifier: ^9.1.7 version: 9.1.7 + typescript-eslint: + specifier: ^8.58.0 + version: 8.58.0(eslint@10.2.0)(typescript@5.7.2) packages: @@ -672,14 +678,61 @@ packages: '@types/unist@3.0.3': resolution: {integrity: sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==} + '@typescript-eslint/eslint-plugin@8.58.0': + resolution: {integrity: sha512-RLkVSiNuUP1C2ROIWfqX+YcUfLaSnxGE/8M+Y57lopVwg9VTYYfhuz15Yf1IzCKgZj6/rIbYTmJCUSqr76r0Wg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + '@typescript-eslint/parser': ^8.58.0 + eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 + typescript: '>=4.8.4 <6.1.0' + + '@typescript-eslint/parser@8.58.0': + resolution: {integrity: sha512-rLoGZIf9afaRBYsPUMtvkDWykwXwUPL60HebR4JgTI8mxfFe2cQTu3AGitANp4b9B2QlVru6WzjgB2IzJKiCSA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 + typescript: '>=4.8.4 <6.1.0' + + '@typescript-eslint/project-service@8.58.0': + resolution: {integrity: sha512-8Q/wBPWLQP1j16NxoPNIKpDZFMaxl7yWIoqXWYeWO+Bbd2mjgvoF0dxP2jKZg5+x49rgKdf7Ck473M8PC3V9lg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + typescript: '>=4.8.4 <6.1.0' + '@typescript-eslint/scope-manager@8.58.0': resolution: {integrity: sha512-W1Lur1oF50FxSnNdGp3Vs6P+yBRSmZiw4IIjEeYxd8UQJwhUF0gDgDD/W/Tgmh73mxgEU3qX0Bzdl/NGuSPEpQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@typescript-eslint/tsconfig-utils@8.58.0': + resolution: {integrity: sha512-doNSZEVJsWEu4htiVC+PR6NpM+pa+a4ClH9INRWOWCUzMst/VA9c4gXq92F8GUD1rwhNvRLkgjfYtFXegXQF7A==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + typescript: '>=4.8.4 <6.1.0' + + '@typescript-eslint/type-utils@8.58.0': + resolution: {integrity: sha512-aGsCQImkDIqMyx1u4PrVlbi/krmDsQUs4zAcCV6M7yPcPev+RqVlndsJy9kJ8TLihW9TZ0kbDAzctpLn5o+lOg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 + typescript: '>=4.8.4 <6.1.0' + '@typescript-eslint/types@8.58.0': resolution: {integrity: sha512-O9CjxypDT89fbHxRfETNoAnHj/i6IpRK0CvbVN3qibxlLdo5p5hcLmUuCCrHMpxiWSwKyI8mCP7qRNYuOJ0Uww==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@typescript-eslint/typescript-estree@8.58.0': + resolution: {integrity: sha512-7vv5UWbHqew/dvs+D3e1RvLv1v2eeZ9txRHPnEEBUgSNLx5ghdzjHa0sgLWYVKssH+lYmV0JaWdoubo0ncGYLA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + typescript: '>=4.8.4 <6.1.0' + + '@typescript-eslint/utils@8.58.0': + resolution: {integrity: sha512-RfeSqcFeHMHlAWzt4TBjWOAtoW9lnsAGiP3GbaX9uVgTYYrMbVnGONEfUCiSss+xMHFl+eHZiipmA8WkQ7FuNA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 + typescript: '>=4.8.4 <6.1.0' + '@typescript-eslint/visitor-keys@8.58.0': resolution: {integrity: sha512-XJ9UD9+bbDo4a4epraTwG3TsNPeiB9aShrUneAVXy8q4LuwowN+qu89/6ByLMINqvIMeI9H9hOHQtg/ijrYXzQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -833,6 +886,15 @@ packages: supports-color: optional: true + debug@4.4.3: + resolution: {integrity: sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + decode-named-character-reference@1.0.2: resolution: {integrity: sha512-O8x12RzrUF8xyVcY0KJowWsmaJxQbmy0/EtnNtHRpsOcT7dFk5W598coHqBVpmWo1oQQfsCqfCmkZN5DJrZVdg==} @@ -1121,6 +1183,10 @@ packages: resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==} engines: {node: '>= 4'} + ignore@7.0.5: + resolution: {integrity: sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==} + engines: {node: '>= 4'} + imurmurhash@0.1.4: resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} engines: {node: '>=0.8.19'} @@ -1623,6 +1689,12 @@ packages: trough@2.2.0: resolution: {integrity: sha512-tmMpK00BjZiUyVyvrBK7knerNgmgvcV/KLVyuma/SC+TQN167GrMRciANTz09+k3zW8L8t60jWO1GpfkZdjTaw==} + ts-api-utils@2.5.0: + resolution: {integrity: sha512-OJ/ibxhPlqrMM0UiNHJ/0CKQkoKF243/AEmplt3qpRgkW8VG7IfOS41h7V8TjITqdByHzrjcS/2si+y4lIh8NA==} + engines: {node: '>=18.12'} + peerDependencies: + typescript: '>=4.8.4' + tsconfck@3.1.6: resolution: {integrity: sha512-ks6Vjr/jEw0P1gmOVwutM3B7fWxoWBL2KRDb1JfqGVawBmO5UsvmWOQFGHBPl5yxYz4eERr19E6L7NMv+Fej4w==} engines: {node: ^18 || >=20} @@ -1640,6 +1712,13 @@ packages: resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} engines: {node: '>= 0.8.0'} + typescript-eslint@8.58.0: + resolution: {integrity: sha512-e2TQzKfaI85fO+F3QywtX+tCTsu/D3WW5LVU6nz8hTFKFZ8yBJ6mSYRpXqdR3mFjPWmO0eWsTa5f+UpAOe/FMA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 + typescript: '>=4.8.4 <6.1.0' + typescript@5.7.2: resolution: {integrity: sha512-i5t66RHxDvVN40HfDd1PsEThGNnlMCMT3jMUuoh9/0TaqWevNontacunWyN02LA9/fIbEWlcHZcgTKb9QoaLfg==} engines: {node: '>=14.17'} @@ -2359,13 +2438,92 @@ snapshots: '@types/unist@3.0.3': {} + '@typescript-eslint/eslint-plugin@8.58.0(@typescript-eslint/parser@8.58.0(eslint@10.2.0)(typescript@5.7.2))(eslint@10.2.0)(typescript@5.7.2)': + dependencies: + '@eslint-community/regexpp': 4.12.2 + '@typescript-eslint/parser': 8.58.0(eslint@10.2.0)(typescript@5.7.2) + '@typescript-eslint/scope-manager': 8.58.0 + '@typescript-eslint/type-utils': 8.58.0(eslint@10.2.0)(typescript@5.7.2) + '@typescript-eslint/utils': 8.58.0(eslint@10.2.0)(typescript@5.7.2) + '@typescript-eslint/visitor-keys': 8.58.0 + eslint: 10.2.0 + ignore: 7.0.5 + natural-compare: 1.4.0 + ts-api-utils: 2.5.0(typescript@5.7.2) + typescript: 5.7.2 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/parser@8.58.0(eslint@10.2.0)(typescript@5.7.2)': + dependencies: + '@typescript-eslint/scope-manager': 8.58.0 + '@typescript-eslint/types': 8.58.0 + '@typescript-eslint/typescript-estree': 8.58.0(typescript@5.7.2) + '@typescript-eslint/visitor-keys': 8.58.0 + debug: 4.4.3 + eslint: 10.2.0 + typescript: 5.7.2 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/project-service@8.58.0(typescript@5.7.2)': + dependencies: + '@typescript-eslint/tsconfig-utils': 8.58.0(typescript@5.7.2) + '@typescript-eslint/types': 8.58.0 + debug: 4.4.3 + typescript: 5.7.2 + transitivePeerDependencies: + - supports-color + '@typescript-eslint/scope-manager@8.58.0': dependencies: '@typescript-eslint/types': 8.58.0 '@typescript-eslint/visitor-keys': 8.58.0 + '@typescript-eslint/tsconfig-utils@8.58.0(typescript@5.7.2)': + dependencies: + typescript: 5.7.2 + + '@typescript-eslint/type-utils@8.58.0(eslint@10.2.0)(typescript@5.7.2)': + dependencies: + '@typescript-eslint/types': 8.58.0 + '@typescript-eslint/typescript-estree': 8.58.0(typescript@5.7.2) + '@typescript-eslint/utils': 8.58.0(eslint@10.2.0)(typescript@5.7.2) + debug: 4.4.3 + eslint: 10.2.0 + ts-api-utils: 2.5.0(typescript@5.7.2) + typescript: 5.7.2 + transitivePeerDependencies: + - supports-color + '@typescript-eslint/types@8.58.0': {} + '@typescript-eslint/typescript-estree@8.58.0(typescript@5.7.2)': + dependencies: + '@typescript-eslint/project-service': 8.58.0(typescript@5.7.2) + '@typescript-eslint/tsconfig-utils': 8.58.0(typescript@5.7.2) + '@typescript-eslint/types': 8.58.0 + '@typescript-eslint/visitor-keys': 8.58.0 + debug: 4.4.3 + minimatch: 10.2.5 + semver: 7.7.4 + tinyglobby: 0.2.15 + ts-api-utils: 2.5.0(typescript@5.7.2) + typescript: 5.7.2 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/utils@8.58.0(eslint@10.2.0)(typescript@5.7.2)': + dependencies: + '@eslint-community/eslint-utils': 4.9.1(eslint@10.2.0) + '@typescript-eslint/scope-manager': 8.58.0 + '@typescript-eslint/types': 8.58.0 + '@typescript-eslint/typescript-estree': 8.58.0(typescript@5.7.2) + eslint: 10.2.0 + typescript: 5.7.2 + transitivePeerDependencies: + - supports-color + '@typescript-eslint/visitor-keys@8.58.0': dependencies: '@typescript-eslint/types': 8.58.0 @@ -2595,6 +2753,10 @@ snapshots: dependencies: ms: 2.1.3 + debug@4.4.3: + dependencies: + ms: 2.1.3 + decode-named-character-reference@1.0.2: dependencies: character-entities: 2.0.2 @@ -2969,6 +3131,8 @@ snapshots: ignore@5.3.2: {} + ignore@7.0.5: {} + imurmurhash@0.1.4: {} iron-webcrypto@1.2.1: {} @@ -3723,6 +3887,10 @@ snapshots: trough@2.2.0: {} + ts-api-utils@2.5.0(typescript@5.7.2): + dependencies: + typescript: 5.7.2 + tsconfck@3.1.6(typescript@5.7.2): optionalDependencies: typescript: 5.7.2 @@ -3734,8 +3902,18 @@ snapshots: dependencies: prelude-ls: 1.2.1 - typescript@5.7.2: - optional: true + typescript-eslint@8.58.0(eslint@10.2.0)(typescript@5.7.2): + dependencies: + '@typescript-eslint/eslint-plugin': 8.58.0(@typescript-eslint/parser@8.58.0(eslint@10.2.0)(typescript@5.7.2))(eslint@10.2.0)(typescript@5.7.2) + '@typescript-eslint/parser': 8.58.0(eslint@10.2.0)(typescript@5.7.2) + '@typescript-eslint/typescript-estree': 8.58.0(typescript@5.7.2) + '@typescript-eslint/utils': 8.58.0(eslint@10.2.0)(typescript@5.7.2) + eslint: 10.2.0 + typescript: 5.7.2 + transitivePeerDependencies: + - supports-color + + typescript@5.7.2: {} ufo@1.6.3: {} diff --git a/src/Serialize.astro b/src/Serialize.astro index 3a9674d..dcbdb65 100644 --- a/src/Serialize.astro +++ b/src/Serialize.astro @@ -1,6 +1,4 @@ --- -// type Primitive = string | number | boolean | null | undefined; - export interface Props { /** * The id that the client script will pass to the `deserialize()` function diff --git a/src/pages/index.astro b/src/pages/index.astro index 701c9d3..307df96 100644 --- a/src/pages/index.astro +++ b/src/pages/index.astro @@ -17,7 +17,7 @@ export type Data = typeof data;