From b5c0dc5715616a0f2a0da8b8c077434efc618a3e Mon Sep 17 00:00:00 2001 From: JounQin Date: Thu, 21 Dec 2023 10:05:36 +0800 Subject: [PATCH] chore: skip formatting inline scripts in pug files (#619) related: https://github.com/valpackett/eslint-plugin-pug and #617 --- .changeset/giant-sheep-doubt.md | 5 ++ .prettierrc | 2 +- package.json | 2 + pnpm-lock.yaml | 110 ++++++++++++++++++++++++++++---- test/fixtures/pug.pug | 2 + test/prettier.js | 10 +++ worker.js | 1 + 7 files changed, 120 insertions(+), 12 deletions(-) create mode 100644 .changeset/giant-sheep-doubt.md create mode 100644 test/fixtures/pug.pug diff --git a/.changeset/giant-sheep-doubt.md b/.changeset/giant-sheep-doubt.md new file mode 100644 index 00000000..90e2cc8c --- /dev/null +++ b/.changeset/giant-sheep-doubt.md @@ -0,0 +1,5 @@ +--- +'eslint-plugin-prettier': patch +--- + +chore: skip formatting inline scripts in pug files diff --git a/.prettierrc b/.prettierrc index f1251944..7289f52e 100644 --- a/.prettierrc +++ b/.prettierrc @@ -1,5 +1,5 @@ { "arrowParens": "avoid", "singleQuote": true, - "plugins": ["prettier-plugin-pkg"] + "plugins": ["@prettier/plugin-pug", "prettier-plugin-pkg"] } diff --git a/package.json b/package.json index d2a5a573..e645a190 100644 --- a/package.json +++ b/package.json @@ -63,6 +63,7 @@ "@eslint-community/eslint-plugin-eslint-comments": "^4.1.0", "@eslint/js": "^8.55.0", "@graphql-eslint/eslint-plugin": "^3.20.0", + "@prettier/plugin-pug": "^3.0.0", "@types/eslint": "^8.44.7", "@types/prettier-linter-helpers": "^1.0.1", "commitlint": "^18.4.3", @@ -74,6 +75,7 @@ "eslint-plugin-mdx": "^2.2.0", "eslint-plugin-n": "^16.3.1", "eslint-plugin-prettier": "link:.", + "eslint-plugin-pug": "^1.2.5", "eslint-plugin-svelte": "^2.32.2", "eslint-plugin-svelte3": "^4.0.0", "graphql": "^16.7.1", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 5dabaeb6..1e33634d 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -39,6 +39,9 @@ devDependencies: '@graphql-eslint/eslint-plugin': specifier: ^3.20.0 version: 3.20.0(patch_hash=e3c7i33vtfs4mivhjwqctijsoe)(graphql@16.8.1) + '@prettier/plugin-pug': + specifier: ^3.0.0 + version: 3.0.0(prettier@3.0.0) '@types/eslint': specifier: ^8.44.7 version: 8.44.7 @@ -72,6 +75,9 @@ devDependencies: eslint-plugin-prettier: specifier: link:. version: 'link:' + eslint-plugin-pug: + specifier: ^1.2.5 + version: 1.2.5 eslint-plugin-svelte: specifier: ^2.32.2 version: 2.32.2(eslint@8.44.0)(svelte@4.2.8) @@ -281,7 +287,7 @@ packages: '@babel/helper-split-export-declaration': 7.22.6 '@babel/parser': 7.23.0 '@babel/types': 7.23.0 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4 globals: 11.12.0 transitivePeerDependencies: - supports-color @@ -702,7 +708,7 @@ packages: engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: ajv: 6.12.6 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4 espree: 9.6.0 globals: 13.20.0 ignore: 5.3.0 @@ -735,7 +741,7 @@ packages: '@graphql-tools/graphql-tag-pluck': 7.5.2(graphql@16.8.1) '@graphql-tools/utils': 9.2.1(graphql@16.8.1) chalk: 4.1.2 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4 fast-glob: 3.3.0 graphql: 16.8.1 graphql-config: 4.5.0(graphql@16.8.1) @@ -1010,7 +1016,7 @@ packages: engines: {node: '>=10.10.0'} dependencies: '@humanwhocodes/object-schema': 1.2.1 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4 minimatch: 3.1.2 transitivePeerDependencies: - supports-color @@ -1178,6 +1184,16 @@ packages: picocolors: 1.0.0 tslib: 2.6.0 + /@prettier/plugin-pug@3.0.0(prettier@3.0.0): + resolution: {integrity: sha512-ERMMvGSJK/7CTc8OT7W/dtlV43sytyNeiCWckN0DIFepqwXotU0+coKMv5Wx6IWSNj7ZSjdNGBAA1nMPi388xw==} + engines: {node: ^16.13.0 || >=18.0.0, npm: '>=7.10.0'} + peerDependencies: + prettier: ^3.0.0 + dependencies: + prettier: 3.0.0 + pug-lexer: 5.0.1 + dev: true + /@repeaterjs/repeater@3.0.4: resolution: {integrity: sha512-AW8PKd6iX3vAZ0vA43nOUOnbq/X5ihgU+mSXXqunMkeQADGiqw/PY0JNeYtD5sr0PAy51YPgAPbDoeapv9r8WA==} dev: true @@ -1348,6 +1364,12 @@ packages: acorn: 8.11.2 dev: true + /acorn@7.4.1: + resolution: {integrity: sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==} + engines: {node: '>=0.4.0'} + hasBin: true + dev: true + /acorn@8.10.0: resolution: {integrity: sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==} engines: {node: '>=0.4.0'} @@ -1682,6 +1704,12 @@ packages: resolution: {integrity: sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==} dev: true + /character-parser@2.2.0: + resolution: {integrity: sha512-+UqJQjFEFaTAs3bNsF2j2kEN1baG/zghZbdqoYEDxGZtJo9LBzl1A+m0D4n3qKx8N2FNv8/Xp6yV9mQmBuptaw==} + dependencies: + is-regex: 1.1.4 + dev: true + /character-reference-invalid@1.1.4: resolution: {integrity: sha512-mKKUkUbhPpQlCOfIuZkvSEgktjPFIsZKRRbC6KWVEMvlzblj3i3asQv5ODsrwt0N3pHAEvjP8KTQPHkp0+6jOg==} dev: true @@ -1959,6 +1987,18 @@ packages: resolution: {integrity: sha512-8YnDaaf7N3k/q5HnTJVuzSyLETjoZjVmHc4AeKAzOvKHEFQKcn64OKBfzHYtE9zGjctNM7V9I0MfnUVLpi7M5g==} dev: true + /debug@4.3.4: + resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + dependencies: + ms: 2.1.2 + dev: true + /debug@4.3.4(supports-color@8.1.1): resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} engines: {node: '>=6.0'} @@ -2352,6 +2392,15 @@ packages: semver: 7.5.4 dev: true + /eslint-plugin-pug@1.2.5: + resolution: {integrity: sha512-rxsQI8ch1pUtP6jBBbmx3dqesZ+5+FdFgzP61pQgIWUezg5YwV+we0ROqk1JF71xdUrMKJkKbJglJ6lHrsOSzg==} + dependencies: + lodash: 4.17.21 + pug-lexer: 5.0.1 + pug-parser: 6.0.0 + pug-walk: 2.0.0 + dev: true + /eslint-plugin-svelte3@4.0.0(eslint@8.44.0)(svelte@4.2.8): resolution: {integrity: sha512-OIx9lgaNzD02+MDFNLw0GEUbuovNcglg+wnd/UY0fbZmlQSz7GlQiQ1f+yX0XvC07XPcDOnFcichqI3xCwp71g==} peerDependencies: @@ -2374,7 +2423,7 @@ packages: dependencies: '@eslint-community/eslint-utils': 4.4.0(eslint@8.44.0) '@jridgewell/sourcemap-codec': 1.4.15 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4 eslint: 8.44.0 esutils: 2.0.3 known-css-properties: 0.27.0 @@ -2433,7 +2482,7 @@ packages: ajv: 6.12.6 chalk: 4.1.2 cross-spawn: 7.0.3 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4 doctrine: 3.0.0 escape-string-regexp: 4.0.0 eslint-scope: 7.2.0 @@ -3277,6 +3326,13 @@ packages: resolution: {integrity: sha512-F2FnH/otLNJv0J6wc73A5Xo7oHLNnqplYqZhUu01tD54DIPvxIRSTSLkrUB/M0nHO4vo1O9PDfN4KoTxCzLh/w==} dev: true + /is-expression@4.0.0: + resolution: {integrity: sha512-zMIXX63sxzG3XrkHkrAPvm/OVZVSCPNkwMHU8oTX7/U3AL78I0QXCEICXUM13BIa8TYGZ68PiTKfQz3yaTNr4A==} + dependencies: + acorn: 7.4.1 + object-assign: 4.1.1 + dev: true + /is-extglob@2.1.1: resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} engines: {node: '>=0.10.0'} @@ -3585,7 +3641,7 @@ packages: dependencies: chalk: 5.3.0 commander: 11.1.0 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4 execa: 8.0.1 lilconfig: 2.1.0 listr2: 7.0.2 @@ -4346,7 +4402,7 @@ packages: /micromark@2.11.4: resolution: {integrity: sha512-+WoovN/ppKolQOFIAajxi7Lu9kInbPxFuTBVEavFcL8eAfVstoc5MocPmqBeAdBOJV00uaVjegzH4+MA0DN/uA==} dependencies: - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4 parse-entities: 2.0.0 transitivePeerDependencies: - supports-color @@ -4356,7 +4412,7 @@ packages: resolution: {integrity: sha512-uD66tJj54JLYq0De10AhWycZWGQNUvDI55xPgk2sQM5kn1JYlhbCMTtEeT27+vAhW2FBQxLlOmS3pmA7/2z4aA==} dependencies: '@types/debug': 4.1.8 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4 decode-named-character-reference: 1.0.2 micromark-core-commonmark: 1.1.0 micromark-factory-space: 1.1.0 @@ -4578,6 +4634,11 @@ packages: dependencies: path-key: 4.0.0 + /object-assign@4.1.1: + resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} + engines: {node: '>=0.10.0'} + dev: true + /object-inspect@1.13.1: resolution: {integrity: sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==} dev: true @@ -4924,6 +4985,29 @@ packages: resolution: {integrity: sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ==} dev: true + /pug-error@2.0.0: + resolution: {integrity: sha512-sjiUsi9M4RAGHktC1drQfCr5C5eriu24Lfbt4s+7SykztEOwVZtbFk1RRq0tzLxcMxMYTBR+zMQaG07J/btayQ==} + dev: true + + /pug-lexer@5.0.1: + resolution: {integrity: sha512-0I6C62+keXlZPZkOJeVam9aBLVP2EnbeDw3An+k0/QlqdwH6rv8284nko14Na7c0TtqtogfWXcRoFE4O4Ff20w==} + dependencies: + character-parser: 2.2.0 + is-expression: 4.0.0 + pug-error: 2.0.0 + dev: true + + /pug-parser@6.0.0: + resolution: {integrity: sha512-ukiYM/9cH6Cml+AOl5kETtM9NR3WulyVP2y4HOU45DyMim1IeP/OOiyEWRr6qk5I5klpsBnbuHpwKmTx6WURnw==} + dependencies: + pug-error: 2.0.0 + token-stream: 1.0.0 + dev: true + + /pug-walk@2.0.0: + resolution: {integrity: sha512-yYELe9Q5q9IQhuvqsZNwA5hfPkMJ8u92bQLIMcsMxf/VADjNtEYptU+inlufAFYcWdHlwNfZOEnOOQrZrcyJCQ==} + dev: true + /punycode@1.4.1: resolution: {integrity: sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==} dev: true @@ -6292,6 +6376,10 @@ packages: vfile: 5.3.7 dev: true + /token-stream@1.0.0: + resolution: {integrity: sha512-VSsyNPPW74RpHwR8Fc21uubwHY7wMDeJLys2IX5zJNih+OnAnaifKHo+1LHT7DAdloQ7apeaaWg8l7qnf/TnEg==} + dev: true + /tr46@0.0.3: resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} dev: true @@ -6427,7 +6515,7 @@ packages: '@types/node': 18.19.0 '@types/unist': 2.0.6 concat-stream: 2.0.0 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4 fault: 2.0.1 glob: 8.1.0 ignore: 5.3.0 @@ -6670,7 +6758,7 @@ packages: peerDependencies: eslint: '>=6.0.0' dependencies: - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4 eslint: 8.44.0 eslint-scope: 7.2.0 eslint-visitor-keys: 3.4.1 diff --git a/test/fixtures/pug.pug b/test/fixtures/pug.pug new file mode 100644 index 00000000..f33b21a4 --- /dev/null +++ b/test/fixtures/pug.pug @@ -0,0 +1,2 @@ +script. + a();;;;;; diff --git a/test/prettier.js b/test/prettier.js index ba508e76..6a0109eb 100644 --- a/test/prettier.js +++ b/test/prettier.js @@ -59,6 +59,10 @@ const eslint = new ESLint({ files: '**/eslint-plugin-svelte/*.svelte', extends: ['plugin:svelte/recommended'], }, + { + files: '*.pug', + plugins: ['pug'], + }, ], }, useEslintrc: false, @@ -306,6 +310,12 @@ runFixture( true, ); +/** + * The `script` code style actually does not match `prettier`'s, + * but we are skipping scripts in pug files + */ +runFixture('*.pug', [[]]); + // ------------------------------------------------------------------------------ // Helpers // ------------------------------------------------------------------------------ diff --git a/worker.js b/worker.js index d4cadc05..a2237407 100644 --- a/worker.js +++ b/worker.js @@ -145,6 +145,7 @@ runAsWorker( 'mdx', 'angular', 'svelte', + 'pug', ]; if (parserBlocklist.includes(/** @type {string} */ (inferredParser))) { return;