From 5dbb3c0a993fb22fe7b9355cfde667a701cc06a2 Mon Sep 17 00:00:00 2001 From: Charlie Wang <18888351756@163.com> Date: Thu, 29 Sep 2022 17:32:29 +0800 Subject: [PATCH] chore: :hammer: add prettier - code format --- .editorconfig | 38 ++++++++ .eslintignore | 0 .eslintrc.js | 48 ++++++++-- .gitattributes | 2 + .prettierignore | 37 ++++++++ .prettierrc | 17 ++++ CHANGELOG.md | 4 - build/mock/getMockData.js | 5 +- mock/index.js | 10 +- mock/modules/prose.js | 48 +++++----- package.json | 5 +- plop-templates/component/index.hbs | 32 +++---- plop-templates/component/prompt.js | 110 +++++++++++----------- plop-templates/utils.js | 4 +- plop-templates/view/index.hbs | 32 +++---- plop-templates/view/prompt.js | 110 +++++++++++----------- plopfile.js | 14 +-- postcss.config.js | 18 ++-- scripts/verifyCommit.js | 17 ++-- src/App.vue | 24 ++--- src/api/index.ts | 10 +- src/api/typing.ts | 32 +++---- src/components/chart/index.vue | 66 ++++++------- src/components/index.ts | 4 +- src/env.d.ts | 6 +- src/main.ts | 24 ++--- src/router/index.ts | 100 ++++++++++---------- src/stores/index.ts | 20 ++-- src/stores/mutation-type.ts | 4 +- src/typing.ts | 2 +- src/utils/hooks/useFetchData.ts | 3 +- src/utils/local-storage.ts | 10 +- src/utils/request.ts | 60 ++++++------ src/views/charts/index.vue | 48 +++++----- src/views/index.vue | 130 +++++++++++++------------- src/views/mock/index.vue | 144 ++++++++++++++--------------- tests/index.spec.ts | 4 +- vite.config.ts | 62 ++++++------- yarn.lock | 29 ++++++ 39 files changed, 742 insertions(+), 591 deletions(-) create mode 100644 .editorconfig create mode 100644 .eslintignore create mode 100644 .gitattributes create mode 100644 .prettierignore create mode 100644 .prettierrc delete mode 100644 CHANGELOG.md diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 0000000..d93636a --- /dev/null +++ b/.editorconfig @@ -0,0 +1,38 @@ +[*] +charset=utf-8 +end_of_line=lf +insert_final_newline=false +indent_style=space +indent_size=2 + +[{*.ng,*.sht,*.html,*.shtm,*.shtml,*.htm}] +indent_style=space +indent_size=2 + +[{*.jhm,*.xslt,*.xul,*.rng,*.xsl,*.xsd,*.ant,*.tld,*.fxml,*.jrxml,*.xml,*.jnlp,*.wsdl}] +indent_style=space +indent_size=2 + +[{.babelrc,.stylelintrc,jest.config,.eslintrc,.prettierrc,*.json,*.jsb3,*.jsb2,*.bowerrc}] +indent_style=space +indent_size=2 + +[*.svg] +indent_style=space +indent_size=2 + +[*.js.map] +indent_style=space +indent_size=2 + +[*.less] +indent_style=space +indent_size=2 + +[{*.vue,*.ts,*.tsx}] +indent_style=space +indent_size=2 + +[{.analysis_options,*.yml,*.yaml}] +indent_style=space +indent_size=2 diff --git a/.eslintignore b/.eslintignore new file mode 100644 index 0000000..e69de29 diff --git a/.eslintrc.js b/.eslintrc.js index 4387f38..46c4827 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -4,8 +4,8 @@ module.exports = { node: true, }, extends: [ - 'plugin:vue/vue3-essential', 'eslint:recommended', + 'plugin:vue/vue3-essential', '@vue/typescript/recommended', '@vue/eslint-config-typescript', 'plugin:import/recommended', @@ -28,6 +28,10 @@ module.exports = { 'no-console': process.env.NODE_ENV === 'production' ? 'warn' : 'off', 'no-debugger': process.env.NODE_ENV === 'production' ? 'warn' : 'off', 'quote-props': 'off', + // 结尾必须有逗号(主要缓解增加一行对象属性,导致 git 变更记录是两行的情况) + 'comma-dangle': ['error', 'always-multiline'], + // 逗号必须在一行的结尾 + 'comma-style': ['error', 'last'], // 禁止混合使用不同的操作符 'error','off' 'no-mixed-operators': 'off', // 禁止未使用过的变量 default: ['error', { vars: 'local' }] @@ -35,21 +39,53 @@ module.exports = { // 强制在代码块中开括号前和闭括号后有空格 'block-spacing': ['error', 'always'], 'object-curly-spacing': ['error', 'always'], + // 要求使用分号代替 ASI (semi) + semi: ['error', 'always'], + quotes: [ + 2, + 'single', + { + avoidEscape: true, + allowTemplateLiterals: true, + }, + ], + /* vue 项目专用 */ + 'vue/require-default-prop': 'off', + 'vue/singleline-html-element-content-newline': ['off'], + // 模板中组件名称使用 kebab-case 模式 + 'vue/component-name-in-template-casing': [ + 'error', + 'kebab-case', + { + registeredComponentsOnly: true, + ignores: [], + }, + ], + 'vue/custom-event-name-casing': 'off', /* typescript */ '@typescript-eslint/ban-ts-ignore': 'off', '@typescript-eslint/no-var-requires': 'off', '@typescript-eslint/no-explicit-any': 'off', - '@typescript-eslint/consistent-type-imports': 'off', - '@typescript-eslint/no-unused-vars': 'off', + // disable `function-return` the rule for all files + '@typescript-eslint/explicit-function-return-type': 'off', '@typescript-eslint/no-empty-function': 'off', + '@typescript-eslint/no-non-null-assertion': 'off', + '@typescript-eslint/no-unused-vars': [ + 'error', + { vars: 'all', args: 'after-used', ignoreRestSiblings: true }, + ], + // bug fix + 'template-curly-spacing': 'off', + 'vue/experimental-script-setup-vars': 'off', + '@typescript-eslint/explicit-module-boundary-types': 'off', }, overrides: [ { - files: ["*.html"], + files: ['*.html'], rules: { // https://github.com/vuejs/eslint-plugin-vue/issues/1355 - "vue/comment-directive": "off", + 'vue/comment-directive': 'off', }, }, ], -} +}; diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..1e1f992 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,2 @@ +.gitattributes export-ignore +.github export-ignore \ No newline at end of file diff --git a/.prettierignore b/.prettierignore new file mode 100644 index 0000000..95e7615 --- /dev/null +++ b/.prettierignore @@ -0,0 +1,37 @@ +**/*.svg +package.json +lib/ +es/ +dist/ +_site/ +coverage/ +CNAME +LICENSE +yarn.lock +netlify.toml +yarn-error.log +*.sh +*.snap +.gitignore +.npmignore +.prettierignore +.DS_Store +.editorconfig +.eslintignore +**/*.yml +components/style/color/*.less +**/assets +.gitattributes +.stylelintrc +.vcmrc +.png +.jpg +.npmrc.template +.huskyrc +.browserslistrc +.env +.env.* +.vscode/ +*.conf +Dockerfile +**/*.ico diff --git a/.prettierrc b/.prettierrc new file mode 100644 index 0000000..3ccb6b6 --- /dev/null +++ b/.prettierrc @@ -0,0 +1,17 @@ +{ + "singleQuote": true, + "trailingComma": "all", + "endOfLine": "lf", + "printWidth": 100, + "proseWrap": "never", + "arrowParens": "avoid", + "htmlWhitespaceSensitivity": "ignore", + "overrides": [ + { + "files": ".prettierrc", + "options": { + "parser": "json" + } + } + ] +} diff --git a/CHANGELOG.md b/CHANGELOG.md deleted file mode 100644 index 571f310..0000000 --- a/CHANGELOG.md +++ /dev/null @@ -1,4 +0,0 @@ -# 0.2.0 (2022-06-06) - - - diff --git a/build/mock/getMockData.js b/build/mock/getMockData.js index b275fb9..da644d8 100644 --- a/build/mock/getMockData.js +++ b/build/mock/getMockData.js @@ -76,10 +76,7 @@ function getMatchMock(url) { } else { return url.indexOf(whiteUrl) != -1; } - }) != -1 && - mockList - .filter(item => url.indexOf(item.path) != -1) - .sort((a, b) => b.path.length - a.path.length)[0] + }) != -1 && mockList.filter(item => url.indexOf(item.path) != -1).sort((a, b) => b.path.length - a.path.length)[0] ); } function mockHandle(handler) { diff --git a/mock/index.js b/mock/index.js index 7dd6b3c..0a5d82e 100644 --- a/mock/index.js +++ b/mock/index.js @@ -1,5 +1,5 @@ -const prose = require('./modules/prose') - -module.exports = { - ...prose -} \ No newline at end of file +const prose = require('./modules/prose'); + +module.exports = { + ...prose, +}; \ No newline at end of file diff --git a/mock/modules/prose.js b/mock/modules/prose.js index 3646811..58ee6de 100644 --- a/mock/modules/prose.js +++ b/mock/modules/prose.js @@ -1,25 +1,23 @@ - -const list = [ - { prose: '🔖 躲在某一时间,想念一段时光的掌纹;躲在某一地点,想念一个站在来路也站在去路的,让我牵挂的人。' }, - { prose: '🔖 天空一碧如洗,灿烂的阳光正从密密的松针的缝隙间射下来,形成一束束粗粗细细的光柱,把飘荡着轻纱般薄雾的林荫照得通亮。' }, - { prose: '🔖 这一次相遇,美得彻骨,美得震颤,美得孤绝,美得惊艳。' }, - { prose: '🔖 沉默的状态,能让我感觉到呼吸的自由和自己原来就处于的本色位置。' }, - { prose: '🔖 青春,是一包象征着阳光的向日葵种子,在现在洒下,就会在未来得到收获,那一株株饱含青春的花朵。' }, - { prose: '🔖 燕子去了,有再来的时候;杨柳枯了,有再青的时候;桃花谢了,有再开的时候。但是,聪明的,你告诉我,我们的日子为什么一去不复返呢?' }, - { prose: '🔖 毕业了,青春在无形之中离去,我们即将翻开人生的另一页。' }, - { prose: '🔖 成长,是每个孩子的权力,也是他们必经的征程,或平坦、或崎岖,有悲欢,有离合。' }, - { prose: '🔖 旧时光里的人和事,琐碎而零乱。我的记忆很模糊,好像大部分都成了一种温馨的符号,静静的沉在我心底。' }, - { prose: '🔖 生活是一部大百科全书,包罗万象;生活是一把六弦琴,弹奏出多重美妙的旋律:生活是一座飞马牌大钟,上紧发条,便会使人获得浓缩的生命。' }, - { prose: '🔖 毕业了,身边的朋友一个个各奔东西,开始学会自己撑起生命的暖色。' }, - { prose: '🔖 已经走到尽头的东西,重生也不过是再一次的消亡。就像所有的开始,其实都只是一个写好了的结局。' }, - { prose: '🔖 下午茶的芬香熏陶着房内的任何一个角落,午后的阳光透过窗帘的间隙洒在木制的桌面上,一份思念随着红茶顺滑至心中。' }, - { prose: '🔖 这里再不是我们的校园,当我们就此离开我们的青葱岁月。' }, - { prose: '🔖 很久找你,一直没有找到,微风吹过的时候,我深深的呼吸,才感觉到你也在陪伴着我呼吸。' } -] - - -module.exports = { - 'GET /api/project/prose': (req, res) => { - res.json(list[Math.floor(Math.random() * 8)]) - } -} +const list = [ + { prose: '🔖 躲在某一时间,想念一段时光的掌纹;躲在某一地点,想念一个站在来路也站在去路的,让我牵挂的人。' }, + { prose: '🔖 天空一碧如洗,灿烂的阳光正从密密的松针的缝隙间射下来,形成一束束粗粗细细的光柱,把飘荡着轻纱般薄雾的林荫照得通亮。' }, + { prose: '🔖 这一次相遇,美得彻骨,美得震颤,美得孤绝,美得惊艳。' }, + { prose: '🔖 沉默的状态,能让我感觉到呼吸的自由和自己原来就处于的本色位置。' }, + { prose: '🔖 青春,是一包象征着阳光的向日葵种子,在现在洒下,就会在未来得到收获,那一株株饱含青春的花朵。' }, + { prose: '🔖 燕子去了,有再来的时候;杨柳枯了,有再青的时候;桃花谢了,有再开的时候。但是,聪明的,你告诉我,我们的日子为什么一去不复返呢?' }, + { prose: '🔖 毕业了,青春在无形之中离去,我们即将翻开人生的另一页。' }, + { prose: '🔖 成长,是每个孩子的权力,也是他们必经的征程,或平坦、或崎岖,有悲欢,有离合。' }, + { prose: '🔖 旧时光里的人和事,琐碎而零乱。我的记忆很模糊,好像大部分都成了一种温馨的符号,静静的沉在我心底。' }, + { prose: '🔖 生活是一部大百科全书,包罗万象;生活是一把六弦琴,弹奏出多重美妙的旋律:生活是一座飞马牌大钟,上紧发条,便会使人获得浓缩的生命。' }, + { prose: '🔖 毕业了,身边的朋友一个个各奔东西,开始学会自己撑起生命的暖色。' }, + { prose: '🔖 已经走到尽头的东西,重生也不过是再一次的消亡。就像所有的开始,其实都只是一个写好了的结局。' }, + { prose: '🔖 下午茶的芬香熏陶着房内的任何一个角落,午后的阳光透过窗帘的间隙洒在木制的桌面上,一份思念随着红茶顺滑至心中。' }, + { prose: '🔖 这里再不是我们的校园,当我们就此离开我们的青葱岁月。' }, + { prose: '🔖 很久找你,一直没有找到,微风吹过的时候,我深深的呼吸,才感觉到你也在陪伴着我呼吸。' }, +]; + +module.exports = { + 'GET /api/project/prose': (req, res) => { + res.json(list[Math.floor(Math.random() * 8)]); + }, +}; diff --git a/package.json b/package.json index 083debf..6d3c47f 100644 --- a/package.json +++ b/package.json @@ -5,8 +5,6 @@ "dev": "cross-env MOCK_SERVER_PORT=8086 vite", "build": "vue-tsc --noEmit && vite build", "build:dev": "vue-tsc --noEmit && vite build --mode=development", - "changelog": "conventional-changelog -p angular -i CHANGELOG.md -s -r 0", - "lint": "eslint --fix --ext .js,vue src/", "preview": "vite preview", "test": "vitest", "plop": "plop" @@ -47,7 +45,9 @@ "consola": "^2.15.3", "cross-env": "^7.0.3", "eslint": "^8.17.0", + "eslint-config-prettier": "^8.5.0", "eslint-plugin-import": "^2.26.0", + "eslint-plugin-prettier": "^4.2.1", "eslint-plugin-vue": "^9.1.0", "husky": "^8.0.1", "less": "^4.1.2", @@ -56,6 +56,7 @@ "plop": "^3.1.0", "postcss": "^8.4.16", "postcss-px-to-viewport-8-plugin": "^1.1.3", + "prettier": "^2.7.1", "rollup": "^2.77.2", "rollup-plugin-visualizer": "^5.6.0", "signale": "^1.4.0", diff --git a/plop-templates/component/index.hbs b/plop-templates/component/index.hbs index 33739a0..1f11640 100644 --- a/plop-templates/component/index.hbs +++ b/plop-templates/component/index.hbs @@ -1,16 +1,16 @@ -{{#if template}} - -{{/if}} - -{{#if script}} - -{{/if}} - -{{#if style}} - -{{/if}} - +{{#if template}} + +{{/if}} + +{{#if script}} + +{{/if}} + +{{#if style}} + +{{/if}} + diff --git a/plop-templates/component/prompt.js b/plop-templates/component/prompt.js index 6b60eec..506d873 100644 --- a/plop-templates/component/prompt.js +++ b/plop-templates/component/prompt.js @@ -1,55 +1,55 @@ -const { notEmpty } = require('../utils.js') - -module.exports = { - description: 'generate vue component', - prompts: [{ - type: 'input', - name: 'name', - message: 'component name please', - validate: notEmpty('name') - }, - { - type: 'checkbox', - name: 'blocks', - message: 'Blocks:', - choices: [{ - name: ' + + + + + diff --git a/src/views/mock/index.vue b/src/views/mock/index.vue index 438daf4..3957d08 100644 --- a/src/views/mock/index.vue +++ b/src/views/mock/index.vue @@ -1,72 +1,72 @@ - - - - - + + + + + diff --git a/tests/index.spec.ts b/tests/index.spec.ts index a5b31a3..9fbd571 100644 --- a/tests/index.spec.ts +++ b/tests/index.spec.ts @@ -1,3 +1,3 @@ test('first test', () => { - expect(1 + 1).toBe(2) -}) + expect(1 + 1).toBe(2); +}); diff --git a/vite.config.ts b/vite.config.ts index dd4cbf7..8272df5 100644 --- a/vite.config.ts +++ b/vite.config.ts @@ -1,29 +1,29 @@ -import path from 'path' -import { loadEnv } from 'vite' -import type { ConfigEnv, UserConfig } from 'vite' +import path from 'path'; +import { loadEnv } from 'vite'; +import type { ConfigEnv, UserConfig } from 'vite'; -import { visualizer } from 'rollup-plugin-visualizer' -import Components from 'unplugin-vue-components/vite' -import AutoImport from 'unplugin-auto-import/vite' -import { VantResolver } from 'unplugin-vue-components/resolvers' +import { visualizer } from 'rollup-plugin-visualizer'; +import Components from 'unplugin-vue-components/vite'; +import AutoImport from 'unplugin-auto-import/vite'; +import { VantResolver } from 'unplugin-vue-components/resolvers'; -import vue from '@vitejs/plugin-vue' -import legacy from '@vitejs/plugin-legacy' -import vueJsx from '@vitejs/plugin-vue-jsx' +import vue from '@vitejs/plugin-vue'; +import legacy from '@vitejs/plugin-legacy'; +import vueJsx from '@vitejs/plugin-vue-jsx'; -import { viteVConsole } from 'vite-plugin-vconsole' -import mock from './build/mock/createMockServer' +import { viteVConsole } from 'vite-plugin-vconsole'; +import mock from './build/mock/createMockServer'; export default ({ command, mode }: ConfigEnv): UserConfig => { - const root = process.cwd() - const env = loadEnv(mode, root) + const root = process.cwd(); + const env = loadEnv(mode, root); return { base: env.VITE_APP_PUBLIC_PATH, define: { 'process.env.VUE_APP_API_BASE_URL': JSON.stringify(env.VITE_APP_API_BASE_URL), - 'process.env.VUE_APP_PUBLIC_PATH': JSON.stringify(env.VITE_APP_PUBLIC_PATH) + 'process.env.VUE_APP_PUBLIC_PATH': JSON.stringify(env.VITE_APP_PUBLIC_PATH), }, plugins: [ @@ -32,13 +32,13 @@ export default ({ command, mode }: ConfigEnv): UserConfig => { visualizer(), legacy({ - targets: ['defaults', 'not IE 11'] + targets: ['defaults', 'not IE 11'], }), Components({ dts: true, resolvers: [VantResolver()], - types: [] + types: [], }), AutoImport({ @@ -50,12 +50,12 @@ export default ({ command, mode }: ConfigEnv): UserConfig => { imports: [ 'vue', 'vue-router', - 'vitest' + 'vitest', ], dts: true, eslintrc: { - enabled: true - } + enabled: true, + }, }), viteVConsole({ @@ -64,8 +64,8 @@ export default ({ command, mode }: ConfigEnv): UserConfig => { enabled: false, config: { maxLogNumber: 1000, - theme: 'light' - } + theme: 'light', + }, }), mock({ @@ -73,20 +73,20 @@ export default ({ command, mode }: ConfigEnv): UserConfig => { mockUrlList: [/api/], cwd: process.cwd(), enable: env.VITE_HTTP_MOCK && env.VITE_MOCK && process.env.NODE_ENV !== 'production', - }) + }), ], build: { cssCodeSplit: false, - chunkSizeWarningLimit: 2048 + chunkSizeWarningLimit: 2048, }, resolve: { alias: { '~@': path.join(__dirname, './src'), '@': path.join(__dirname, './src'), - '~': path.join(__dirname, './src/assets') - } + '~': path.join(__dirname, './src/assets'), + }, }, server: { @@ -98,8 +98,8 @@ export default ({ command, mode }: ConfigEnv): UserConfig => { target: '', ws: false, changeOrigin: true, - } - } - } - } -} + }, + }, + }, + }; +}; diff --git a/yarn.lock b/yarn.lock index c2d97ee..3d6d1eb 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2663,6 +2663,11 @@ escape-string-regexp@^5.0.0: resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz#4683126b500b61762f2dbebace1806e8be31b1c8" integrity sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw== +eslint-config-prettier@^8.5.0: + version "8.5.0" + resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-8.5.0.tgz#5a81680ec934beca02c7b1a61cf8ca34b66feab1" + integrity sha512-obmWKLUNCnhtQRKc+tmnYuQl0pFU1ibYJQ5BGhTVB08bHe9wC8qUeG7c08dj9XX+AuPj1YSGSQIHl1pnDHZR0Q== + eslint-import-resolver-node@^0.3.6: version "0.3.6" resolved "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.6.tgz#4048b958395da89668252001dbd9eca6b83bacbd" @@ -2698,6 +2703,13 @@ eslint-plugin-import@^2.26.0: resolve "^1.22.0" tsconfig-paths "^3.14.1" +eslint-plugin-prettier@^4.2.1: + version "4.2.1" + resolved "https://registry.yarnpkg.com/eslint-plugin-prettier/-/eslint-plugin-prettier-4.2.1.tgz#651cbb88b1dab98bfd42f017a12fa6b2d993f94b" + integrity sha512-f/0rXLXUt0oFYs8ra4w49wYZBG5GKZpAYsJSm6rnYL5uVDjd+zowwMwVZHnAjf4edNrKpCDYfXDgmRE/Ak7QyQ== + dependencies: + prettier-linter-helpers "^1.0.0" + eslint-plugin-vue@^9.1.0: version "9.1.1" resolved "https://registry.yarnpkg.com/eslint-plugin-vue/-/eslint-plugin-vue-9.1.1.tgz#341f7533cb041958455138834341d5be01f9f327" @@ -2854,6 +2866,11 @@ fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== +fast-diff@^1.1.2: + version "1.2.0" + resolved "https://registry.yarnpkg.com/fast-diff/-/fast-diff-1.2.0.tgz#73ee11982d86caaf7959828d519cfe927fac5f03" + integrity sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w== + fast-glob@^3.2.11, fast-glob@^3.2.9: version "3.2.11" resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.11.tgz#a1172ad95ceb8a16e20caa5c5e56480e5129c1d9" @@ -4401,6 +4418,18 @@ prelude-ls@^1.2.1: resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== +prettier-linter-helpers@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz#d23d41fe1375646de2d0104d3454a3008802cf7b" + integrity sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w== + dependencies: + fast-diff "^1.1.2" + +prettier@^2.7.1: + version "2.7.1" + resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.7.1.tgz#e235806850d057f97bb08368a4f7d899f7760c64" + integrity sha512-ujppO+MkdPqoVINuDFDRLClm7D78qbDt0/NR+wp5FqEZOoTNAjPHWj17QRhu7geIHJfcNhRk1XVQmF8Bp3ye+g== + prr@~1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/prr/-/prr-1.0.1.tgz#d3fc114ba06995a45ec6893f484ceb1d78f5f476"