├── .github ├── dependabot.yml └── workflows │ └── test.yml ├── .gitignore ├── CHANGELOG.md ├── LICENSE ├── README.en.md ├── README.md ├── README.zh-Hans.md ├── crowdin.yml ├── package.json ├── pnpm-lock.yaml └── renovate.json /.github/dependabot.yml: -------------------------------------------------------------------------------- 1 | # To get started with Dependabot version updates, you'll need to specify which 2 | # package ecosystems to update and where the package manifests are located. 3 | # Please see the documentation for all configuration options: 4 | # https://docs.github.com/github/administering-a-repository/configuration-options-for-dependency-updates 5 | 6 | version: 2 7 | updates: 8 | - package-ecosystem: "github-actions" 9 | directory: "/" 10 | schedule: 11 | interval: "daily" 12 | -------------------------------------------------------------------------------- /.github/workflows/test.yml: -------------------------------------------------------------------------------- 1 | name: Test 2 | 3 | on: 4 | push: 5 | branches: 6 | - 'master' 7 | tags: 8 | - 'v*' 9 | pull_request: 10 | branches: 11 | - 'master' 12 | 13 | jobs: 14 | test: 15 | runs-on: ubuntu-latest 16 | steps: 17 | - uses: actions/checkout@v3 18 | - uses: actions/setup-node@v3 19 | with: 20 | node-version: 20 21 | 22 | - uses: pnpm/action-setup@v2 23 | name: Install pnpm 24 | id: pnpm-install 25 | with: 26 | version: latest 27 | run_install: false 28 | 29 | - name: Get pnpm store directory 30 | id: pnpm-cache 31 | shell: bash 32 | run: | 33 | echo "STORE_PATH=$(pnpm store path)" >> $GITHUB_OUTPUT 34 | 35 | - uses: actions/cache@v3 36 | name: Setup pnpm cache 37 | with: 38 | path: ${{ steps.pnpm-cache.outputs.STORE_PATH }} 39 | key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }} 40 | restore-keys: | 41 | ${{ runner.os }}-pnpm-store- 42 | 43 | - name: Install dependencies 44 | run: pnpm install 45 | 46 | - name: Run test 47 | run: pnpm test 48 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | -------------------------------------------------------------------------------- /CHANGELOG.md: -------------------------------------------------------------------------------- 1 | 2 | # [0.1.0](https://github.com/sparanoid/chinese-copywriting-guidelines/compare/v0.0.10...v0.1.0) (2018-10-14) 3 | 4 | 5 | ### Bug Fixes 6 | 7 | * **grunt:** duplicated default task ([14c907f](https://github.com/sparanoid/chinese-copywriting-guidelines/commit/14c907f)) 8 | 9 | 10 | ### Features 11 | 12 | * **docs:** switch license to MIT to meet OSI reqirements ([b48b912](https://github.com/sparanoid/chinese-copywriting-guidelines/commit/b48b912)) 13 | 14 | 15 | 16 | 17 | ## [0.0.10](https://github.com/sparanoid/chinese-copywriting-guidelines/compare/v0.0.9...v0.0.10) (2018-10-14) 18 | 19 | 20 | ### Bug Fixes 21 | 22 | * **docs:** update adverb ([79fa169](https://github.com/sparanoid/chinese-copywriting-guidelines/commit/79fa169)) 23 | * **docs:** wrong external link indicator ([ad6fffa](https://github.com/sparanoid/chinese-copywriting-guidelines/commit/ad6fffa)) 24 | 25 | 26 | ### Features 27 | 28 | * **docs:** add `text spacing` notice, fixes https://github.com/sparanoid/chinese-copywriting-guidelines/issues/51 ([949547e](https://github.com/sparanoid/chinese-copywriting-guidelines/commit/949547e)) 29 | * **docs:** add another bad example to spacing ([a3fbf58](https://github.com/sparanoid/chinese-copywriting-guidelines/commit/a3fbf58)) 30 | * **docs:** add jxlwqq/chinese-typesetting ([#62](https://github.com/sparanoid/chinese-copywriting-guidelines/issues/62)) ([161c82c](https://github.com/sparanoid/chinese-copywriting-guidelines/commit/161c82c)) 31 | * **docs:** add python lib hint, fixes https://github.com/sparanoid/chinese-copywriting-guidelines/issues/50 ([94b00c6](https://github.com/sparanoid/chinese-copywriting-guidelines/commit/94b00c6)) 32 | * **docs:** examples cleanup ([3d8de98](https://github.com/sparanoid/chinese-copywriting-guidelines/commit/3d8de98)) 33 | * **docs:** update punctuations ([c44d96a](https://github.com/sparanoid/chinese-copywriting-guidelines/commit/c44d96a)) 34 | * **package:** update contributors ([03f8e8e](https://github.com/sparanoid/chinese-copywriting-guidelines/commit/03f8e8e)) 35 | 36 | 37 | 38 | 39 | ## [0.0.9](https://github.com/sparanoid/chinese-copywriting-guidelines/compare/v0.0.8...v0.0.9) (2016-02-17) 40 | 41 | 42 | ### Bug Fixes 43 | 44 | * **docs:** wrong TOC anchors ([d0468e7](https://github.com/sparanoid/chinese-copywriting-guidelines/commit/d0468e7)) 45 | 46 | ### Features 47 | 48 | * **docs:** update link redirects, props @ReadmeCritic ([02bb41c](https://github.com/sparanoid/chinese-copywriting-guidelines/commit/02bb41c)) 49 | * **docs:** update repo link ([bc736c2](https://github.com/sparanoid/chinese-copywriting-guidelines/commit/bc736c2)) 50 | * **package:** update contributors ([ec9ae8d](https://github.com/sparanoid/chinese-copywriting-guidelines/commit/ec9ae8d)) 51 | 52 | 53 | 54 | 55 | ## [0.0.8](https://github.com/sparanoid/chinese-copywriting-guidelines/compare/v0.0.7...v0.0.8) (2015-12-11) 56 | 57 | 58 | ### Bug Fixes 59 | 60 | * **docs:** avoid slangs ([d42d646](https://github.com/sparanoid/chinese-copywriting-guidelines/commit/d42d646)) 61 | * **docs:** wrong TOC anchors ([585e71e](https://github.com/sparanoid/chinese-copywriting-guidelines/commit/585e71e)) 62 | 63 | ### Features 64 | 65 | * **docs:** add language list ([61a43f4](https://github.com/sparanoid/chinese-copywriting-guidelines/commit/61a43f4)) 66 | * **docs:** add Python library from hjiang/scripts ([1104e24](https://github.com/sparanoid/chinese-copywriting-guidelines/commit/1104e24)) 67 | * **docs:** initial English version ([a732199](https://github.com/sparanoid/chinese-copywriting-guidelines/commit/a732199)) 68 | * **docs:** re-evaluate V2EX ([200eb49](https://github.com/sparanoid/chinese-copywriting-guidelines/commit/200eb49)) 69 | * **docs:** update spacing rule for links ([a2569b3](https://github.com/sparanoid/chinese-copywriting-guidelines/commit/a2569b3)) 70 | * **docs:** use original titles for references ([db596b1](https://github.com/sparanoid/chinese-copywriting-guidelines/commit/db596b1)) 71 | * **package:** update contributors ([c8e29af](https://github.com/sparanoid/chinese-copywriting-guidelines/commit/c8e29af)) 72 | 73 | 74 | 75 | 76 | ## [0.0.7](https://github.com/sparanoid/chinese-copywriting-guidelines/compare/v0.0.6...v0.0.7) (2015-10-25) 77 | 78 | 79 | ### Features 80 | 81 | * **docs:** add badge for HTML version ([ee62ad5](https://github.com/sparanoid/chinese-copywriting-guidelines/commit/ee62ad5)) 82 | * **docs:** add languages section ([b495cc5](https://github.com/sparanoid/chinese-copywriting-guidelines/commit/b495cc5)) 83 | * **docs:** add new tool ([2afe771](https://github.com/sparanoid/chinese-copywriting-guidelines/commit/2afe771)) 84 | * **docs:** remove custom emojis ([b5c5733](https://github.com/sparanoid/chinese-copywriting-guidelines/commit/b5c5733)) 85 | * **docs:** simplify examples ([1ce86f4](https://github.com/sparanoid/chinese-copywriting-guidelines/commit/1ce86f4)) 86 | * **docs:** simplify TOC ([be7f513](https://github.com/sparanoid/chinese-copywriting-guidelines/commit/be7f513)) 87 | * **package:** update contributors ([855514d](https://github.com/sparanoid/chinese-copywriting-guidelines/commit/855514d)) 88 | 89 | 90 | 91 | 92 | ## [0.0.6](https://github.com/sparanoid/chinese-copywriting-guidelines/compare/v0.0.5...v0.0.6) (2015-08-12) 93 | 94 | 95 | ### Features 96 | 97 | * **grunt:** better version handling ([6662796](https://github.com/sparanoid/chinese-copywriting-guidelines/commit/6662796)) 98 | * **package:** update contributors ([48f7cb8](https://github.com/sparanoid/chinese-copywriting-guidelines/commit/48f7cb8)) 99 | * **package:** update contributors ([bea8e17](https://github.com/sparanoid/chinese-copywriting-guidelines/commit/bea8e17)) 100 | 101 | 102 | 103 | 104 | ### 0.0.5 (2015-07-08) 105 | 106 | 107 | #### Bug Fixes 108 | 109 | * **docs:** 110 | * typo HTML5, fixes #19 ([9a009b3d](http://github.com/sparanoid/chinese-copywriting-guidelines/commit/9a009b3d5d99e21692153c3086fff10b21407dc7)) 111 | * wrong heading ([c2ec2d82](http://github.com/sparanoid/chinese-copywriting-guidelines/commit/c2ec2d82cbab504ee3185b546457c2e148361884)) 112 | * **package:** license not defined ([ac6b463c](http://github.com/sparanoid/chinese-copywriting-guidelines/commit/ac6b463c6903d8e8cfad7cb23b6bd772de8bc6d6)) 113 | 114 | 115 | #### Features 116 | 117 | * **docs:** avoid unidiomatic jargons ([f2d982d7](http://github.com/sparanoid/chinese-copywriting-guidelines/commit/f2d982d73fa60788c69908039825a772b45a814f)) 118 | 119 | 120 | 121 | ### 0.0.4 (2015-04-22) 122 | 123 | 124 | #### Bug Fixes 125 | 126 | * **docs:** 127 | * typo ([0cb547e3](http://github.com/sparanoid/chinese-copywriting-guidelines/commit/0cb547e3c1ab3354490cbfcf6c11f7b9cb113ea1)) 128 | * avoid personal writing style ([0fcf17b5](http://github.com/sparanoid/chinese-copywriting-guidelines/commit/0fcf17b5a22b75443b64ad67b7a037288472d6d4)) 129 | 130 | 131 | #### Features 132 | 133 | * **docs:** 134 | * add usage for degrees and percentages ([ad2c239b](http://github.com/sparanoid/chinese-copywriting-guidelines/commit/ad2c239b70c48cb86f1aa9f6cc5622e3a89ca44d)) 135 | * more specific plugin description ([db8e5f72](http://github.com/sparanoid/chinese-copywriting-guidelines/commit/db8e5f7261e0f38b7bf91eec87e373d9abe83765)) 136 | * remove vanity PR tips ([ccc36d6f](http://github.com/sparanoid/chinese-copywriting-guidelines/commit/ccc36d6f3c8361e3636c4ca0f6b44cffbf15d9c5)) 137 | * add new sections to Spacing ([7dc13730](http://github.com/sparanoid/chinese-copywriting-guidelines/commit/7dc137300534f3f4552422d9b5ab961928d2d51d)) 138 | 139 | 140 | 141 | ### 0.0.3 (2014-09-15) 142 | 143 | 144 | #### Bug Fixes 145 | 146 | * **docs:** 147 | * no personal emotions here ([a7be2e78](http://github.com/sparanoid/chinese-copywriting-guidelines/commit/a7be2e788b02fe32360ce76a2a065030254821cc)) 148 | * correct tip position ([86d64f6f](http://github.com/sparanoid/chinese-copywriting-guidelines/commit/86d64f6fe923c58778b792b6f085b71ec60b5263)) 149 | * incorrect note description ([e1e6d227](http://github.com/sparanoid/chinese-copywriting-guidelines/commit/e1e6d227e522f61e3941b10af5cc8a4ae0c8417e)) 150 | * remove wrong example ([85b57cc0](http://github.com/sparanoid/chinese-copywriting-guidelines/commit/85b57cc04608fb7016f95c96fbf3d5791284e980)) 151 | 152 | 153 | #### Features 154 | 155 | * **docs:** 156 | * simplified table data ([36979a52](http://github.com/sparanoid/chinese-copywriting-guidelines/commit/36979a520d6faa423bafbb9ec63b19cb3f721e92)) 157 | * no more emojis ([ba6a83a6](http://github.com/sparanoid/chinese-copywriting-guidelines/commit/ba6a83a6b4642b31c1ba8105fa0ddd3195d4fad1)) 158 | * remove tools description ([0c4870ca](http://github.com/sparanoid/chinese-copywriting-guidelines/commit/0c4870ca30e334f98ce249814ca62e34acfdae1d)) 159 | * add more examples ([477798b1](http://github.com/sparanoid/chinese-copywriting-guidelines/commit/477798b15c0036487a4bb979d27d50091b3a96d2)) 160 | * change chapter order ([a8fb6cff](http://github.com/sparanoid/chinese-copywriting-guidelines/commit/a8fb6cff1c4201437f9b5a4ab0049eb23da133d6)) 161 | * table for tool list ([d9b77e28](http://github.com/sparanoid/chinese-copywriting-guidelines/commit/d9b77e28594b7d9e36b0167862661fc5e95aa595)) 162 | * less aggressive, more decent examlples ([e6bcb84f](http://github.com/sparanoid/chinese-copywriting-guidelines/commit/e6bcb84f9bee7fc27b4bb296b027f9412acc2459)) 163 | * add more tools ([00141d48](http://github.com/sparanoid/chinese-copywriting-guidelines/commit/00141d488ed8888df61f7ada4c915d31b3e91b1f)) 164 | * update description ([7c1d7e78](http://github.com/sparanoid/chinese-copywriting-guidelines/commit/7c1d7e78d3e4be8f7e4ef9fea5201087f1ba6b6b)) 165 | * add spacing exception for product names ([b8cec964](http://github.com/sparanoid/chinese-copywriting-guidelines/commit/b8cec964b0b5d8c46fd6b9e3dfd0000badca07f8)) 166 | 167 | 168 | 169 | ### 0.0.2 (2014-07-15) 170 | 171 | 172 | #### Bug Fixes 173 | 174 | * **doc:** Chinese Simplified quote marks confusion ([8666d01f](http://github.com/sparanoid/chinese-copywriting-guidelines/commit/8666d01f9c16ddd650d54ca99cf1431e5553f3c8)) 175 | 176 | 177 | #### Features 178 | 179 | * **docs:** 180 | * add numerical digit usage, this could fix GH-8 ([c486b70b](http://github.com/sparanoid/chinese-copywriting-guidelines/commit/c486b70b968da9168109cd50542a373b9f00c112)) 181 | * add more usage of punctuation marks ([b77c78b4](http://github.com/sparanoid/chinese-copywriting-guidelines/commit/b77c78b47af127fe1d745a59439bdfc4c7af0846)) 182 | * better TOC anchors, add tools section ([b374670f](http://github.com/sparanoid/chinese-copywriting-guidelines/commit/b374670f6cbad87cebd1bed07cfd5663cb224e0a)) 183 | * simplified rules ([a2f11ce6](http://github.com/sparanoid/chinese-copywriting-guidelines/commit/a2f11ce6696548d3b7c2b7483a3a22edd880c2fb)) 184 | * simplified chapter titles ([e457f3ec](http://github.com/sparanoid/chinese-copywriting-guidelines/commit/e457f3eccab2ca30813c66e5267c561c2a2f2f16)) 185 | * add deps check badge ([c9f9c21f](http://github.com/sparanoid/chinese-copywriting-guidelines/commit/c9f9c21f80f1da1fb6d432f8b4e2b2b301cb6600)) 186 | 187 | 188 | 189 | ### 0.0.1 (2014-07-01) 190 | 191 | 192 | #### Bug Fixes 193 | 194 | * **docs:** 195 | * remove leftovers ([e8b347e1](http://github.com/sparanoid/chinese-copywriting-guidelines/commit/e8b347e133c9bbd7ad7f7bdf7575f65c9c386bd7)) 196 | * fix typo ([1f4ebf16](http://github.com/sparanoid/chinese-copywriting-guidelines/commit/1f4ebf1622f8e6363aa509d9c227e07dd61f5bb6)) 197 | * fix table link ([a63fe5b4](http://github.com/sparanoid/chinese-copywriting-guidelines/commit/a63fe5b495df9dc28ce2149135941d2abdf80ede)) 198 | * remove unrelated example ([48594a58](http://github.com/sparanoid/chinese-copywriting-guidelines/commit/48594a580bd272a9036401e957d49f1d5bd383e2)) 199 | * fix toc ([5c7bb2bd](http://github.com/sparanoid/chinese-copywriting-guidelines/commit/5c7bb2bdac5ae2c724753956f9271bc22da99d6e)) 200 | * fix capital ([824d0241](http://github.com/sparanoid/chinese-copywriting-guidelines/commit/824d024189dce50912770c49caa512f22bdbcd75)) 201 | * fix several punctuation marks ([6bd5aaa4](http://github.com/sparanoid/chinese-copywriting-guidelines/commit/6bd5aaa466a4b90b9d8715183c992033dab54ffc)) 202 | 203 | 204 | #### Features 205 | 206 | * one more rule for punctuation marks ([a2887783](http://github.com/sparanoid/chinese-copywriting-guidelines/commit/a2887783a9c7482d728d66f75998d2db8ef72f82)) 207 | * create a LICENSE ([638dc085](http://github.com/sparanoid/chinese-copywriting-guidelines/commit/638dc0851d9f5cd5b935e98a878cae9ce9896f7d)) 208 | * **build:** add change log support ([18c54966](http://github.com/sparanoid/chinese-copywriting-guidelines/commit/18c54966053f2b710ba0b7619afa6f3e1b09db07)) 209 | * **docs:** 210 | * remove dead company ([595a8aa4](http://github.com/sparanoid/chinese-copywriting-guidelines/commit/595a8aa4efe33530b3eb81e1104303e0c1bbd2e5)) 211 | * update bad examples ([984bf9e0](http://github.com/sparanoid/chinese-copywriting-guidelines/commit/984bf9e0740e9d2f47debcbcd3b02becdccad5af)) 212 | * add more examples ([f3d66a08](http://github.com/sparanoid/chinese-copywriting-guidelines/commit/f3d66a086e9fd50fa76ef645a71a715a07946e39)) 213 | * add wandoujia.com ([299a4751](http://github.com/sparanoid/chinese-copywriting-guidelines/commit/299a475107979bac0e04865c8495ad88d0021a8c)) 214 | * add quotation marks usage ([984271fe](http://github.com/sparanoid/chinese-copywriting-guidelines/commit/984271fea0f4b1656768196146c23f3016126cb5)) 215 | * add related references ([89b361ab](http://github.com/sparanoid/chinese-copywriting-guidelines/commit/89b361aba39ae12a02a7082b4c17dc1d1ba1b9b3)) 216 | * add toc ([6bf68d35](http://github.com/sparanoid/chinese-copywriting-guidelines/commit/6bf68d3503ae45077c348c823b932aab86502324)) 217 | * add example for styling uppercased text ([555ecc65](http://github.com/sparanoid/chinese-copywriting-guidelines/commit/555ecc6595c608727f033d7dcb53c15129e887f6)) 218 | * add init content ([651418c6](http://github.com/sparanoid/chinese-copywriting-guidelines/commit/651418c6765236804279f059aeea0db290f9d5b0)) 219 | 220 | 221 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2023 Sparanoid, Inc. 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.en.md: -------------------------------------------------------------------------------- 1 | # Chinese Copywriting Guidelines 2 | 3 | Chinese copywriting guidelines for better written communication. 4 | 5 | Other languages: 6 | 7 | - [English](README.en.md) 8 | - [Chinese Traditional](README.md) 9 | - [Chinese Simplified](README.zh-Hans.md) 10 | 11 | * * * 12 | 13 | ## Spacing 14 | 15 | > Research shows that, people adding no space between Chinese and English suffer from pathetic relationships. 70% of them are married by the age of 34, with someone they don't love; 30% of them left everything for their cats and died. Blank spaces are essential to both romance and writing. 16 | > 17 | > 與大家共勉之。」——[vinta/paranoid-auto-spacing](https://github.com/vinta/pangu.js) 18 | 19 | ### Place one space before/after English words 20 | 21 | Good: 22 | 23 | > 在 LeanCloud 上,數據儲存是圍繞 `AVObject` 進行的。 24 | 25 | Bad: 26 | 27 | > 在LeanCloud上,數據儲存是圍繞`AVObject`進行的。 28 | > 29 | > 在 LeanCloud上,數據儲存是圍繞`AVObject` 進行的。 30 | 31 | An example of complete and correct usage: 32 | 33 | > 在 LeanCloud 上,數據儲存是圍繞 `AVObject` 進行的。每個 `AVObject` 都包含了與 JSON 兼容的 key-value 對應的數據。數據是 schema-free 的,你不需要在每個 `AVObject` 上提前指定存在哪些键,只要直接設定對應的 key-value 即可。 34 | 35 | Exceptions: For product and brand names, please refer to the writing format of the official definition. For example, use “豆瓣FM” instead of “豆瓣 FM”. 36 | 37 | ### Place one space before/after numbers 38 | 39 | Good: 40 | 41 | > 今天出去買菜花了 5000 元。 42 | 43 | Bad: 44 | 45 | > 今天出去買菜花了 5000元。 46 | > 47 | > 今天出去買菜花了5000元。 48 | 49 | ### Place one space between numbers and units 50 | 51 | Good: 52 | 53 | > 我家的光纖入屋寬頻有 10 Gbps,SSD 一共有 20 TB。 54 | 55 | Bad: 56 | 57 | > 我家的光纖入屋寬頻有 10Gbps,SSD 一共有 20TB。 58 | 59 | Exceptions: There should not be any spacing between numbers and degrees/percentages. 60 | 61 | Good: 62 | 63 | > 角度為 90° 的角,就是直角。 64 | > 65 | > 新 MacBook Pro 有 15% 的 CPU 性能提升。 66 | 67 | Bad: 68 | 69 | > 角度為 90 ° 的角,就是直角。 70 | > 71 | > 新 MacBook Pro 有 15 % 的 CPU 性能提升。 72 | 73 | ### No additional spaces before/after punctuation in fullwidth form 74 | 75 | Good: 76 | 77 | > 剛剛買了一部 iPhone,好開心! 78 | 79 | Bad: 80 | 81 | > 剛剛買了一部 iPhone ,好開心! 82 | > 83 | > 剛剛買了一部 iPhone, 好開心! 84 | 85 | ### `text-spacing` to the rescue? 86 | 87 | [`text-spacing`](https://www.w3.org/TR/css-text-4/#text-spacing-property) and [`-ms-text-autospace`](https://msdn.microsoft.com/library/ms531164(v=vs.85).aspx) provided by CSS Text Module Level and Microsoft can specify the autospacing and narrow space width adjustment of text. However it's not popular, and on other platforms such as OS X and iOS we can not use this feature. So it's better for you to keep up the habit. 88 | 89 | ## Punctuation 90 | 91 | ### Avoid duplicate punctuation 92 | 93 | Although the punctuation usage of China mainland admits to duplicate the punctuations, the sentence may become unpleasing to the eye by doing that. 94 | 95 | Good: 96 | 97 | > 德國隊竟然戰勝了巴西隊! 98 | > 99 | > 她竟然對你說「喵」?! 100 | 101 | Bad: 102 | 103 | > 德國隊竟然戰勝了巴西隊!! 104 | > 105 | > 德國隊竟然戰勝了巴西隊!!!!!!!! 106 | > 107 | > 她竟然對你說「喵」??!! 108 | > 109 | > 她竟然對你說「喵」?!?!??!! 110 | 111 | ## Fullwidth and halfwidth 112 | 113 | If you’re not familiar with fullwidth and halfwidth forms please refer to article [Halfwidth and fullwidth](https://en.wikipedia.org/wiki/Halfwidth_and_fullwidth_forms) on Wikipedia. 114 | 115 | ### Use punctuation in fullwidth form 116 | 117 | Good: 118 | 119 | > 嗨!你知道嘛?今天前台的小妹跟我說「喵」了哎! 120 | > 121 | > 核磁共振成像(NMRI)是什麼原理都不知道?JFGI! 122 | 123 | Bad: 124 | 125 | > 嗨! 你知道嘛? 今天前台的小妹跟我說 "喵" 了哎! 126 | > 127 | > 嗨!你知道嘛?今天前台的小妹跟我說"喵"了哎! 128 | > 129 | > 核磁共振成像 (NMRI) 是什麼原理都不知道? JFGI! 130 | > 131 | > 核磁共振成像(NMRI)是什麼原理都不知道?JFGI! 132 | 133 | Exception: inline English titles of books and journals with italics, instead of fullwidth title marks. 134 | 135 | ### Use numbers in halfwidth form 136 | 137 | Good: 138 | 139 | > 這件蛋糕只賣 1000 元。 140 | 141 | Bad: 142 | 143 | > 這件蛋糕只賣 1000 元。 144 | 145 | Exceptions: fullwidth numbers are acceptable for better visual alignment in graphic design. 146 | 147 | ### Use punctuation in halfwidth form for English sentences 148 | 149 | Good: 150 | 151 | > 賈伯斯那句話是怎麼說的?「Stay hungry, stay foolish.」 152 | > 153 | > 推薦你閱讀 *Hackers & Painters: Big Ideas from the Computer Age*,非常地有趣。 154 | 155 | Bad: 156 | 157 | > 賈伯斯那句話是怎麼說的?「Stay hungry,stay foolish。」 158 | > 159 | > 推薦你閱讀《Hackers&Painters:Big Ideas from the Computer Age》,非常的有趣。 160 | 161 | ## Nouns 162 | 163 | ### Capitalize properly 164 | 165 | Capitalization is a matter of English, which is beyond the scope of this wiki. Here we exemplify some typical scenarios. 166 | 167 | Good: 168 | 169 | > 使用 GitHub 登錄 170 | > 171 | > 我們的客戶有 GitHub、Foursquare、Microsoft Corporation、Google、Facebook, Inc.。 172 | 173 | Bad: 174 | 175 | > 使用 github 登錄 176 | > 177 | > 使用 GITHUB 登錄 178 | > 179 | > 使用 Github 登錄 180 | > 181 | > 使用 gitHub 登錄 182 | > 183 | > 使用 gイんĤЦ8 登錄 184 | > 185 | > 我們的客戶有 github、foursquare、microsoft corporation、google、facebook, inc.。 186 | > 187 | > 我們的客戶有 GITHUB、FOURSQUARE、MICROSOFT CORPORATION、GOOGLE、FACEBOOK, INC.。 188 | > 189 | > 我們的客戶有 Github、FourSquare、MicroSoft Corporation、Google、FaceBook, Inc.。 190 | > 191 | > 我們的客戶有 gitHub、fourSquare、microSoft Corporation、google、faceBook, Inc.。 192 | > 193 | > 我們的客戶有 gイんĤЦ8、キouЯƧquムгє、๓เςг๏ร๏Ŧt ς๏гק๏гคtเ๏ภn、900913、ƒ4ᄃëв๏๏к, IПᄃ.。 194 | 195 | 注意:當網頁中需要配合整體視覺風格而出現全部大寫/小寫的情形,HTML 中請使用標準的大小寫規範進行書寫;並通過 `text-transform: uppercase;`/`text-transform: lowercase;` 對表現形式進行定義。 196 | 197 | ### Avoid jargons 198 | 199 | Good: 200 | 201 | > 我們需要一位熟悉 TypeScript、HTML5,至少理解一種框架(如 React、Next.js)的前端開發者。 202 | 203 | Bad: 204 | 205 | > 我們需要一位熟悉 Ts、h5,至少理解一種框架(如 RJS、nextjs)的 FED。 206 | 207 | ## Dispute 208 | 209 | The following usages comprise of personal characteristics. As such, from the perspective of copywriting guidelines, they are **still correct** regardless of whether they comply with the following rules. 210 | 211 | ### Add extra spaces before/after links 212 | 213 | Usage: 214 | 215 | > 請 [提交一个 issue](#) 並分配给相關同事。 216 | > 217 | > 訪問我們網站的最新動態,請 [點擊這裡](#) 進行訂閱! 218 | 219 | compared with: 220 | 221 | > 請[提交一个 issue](#) 並分配给相關同事。 222 | > 223 | > 訪問我們網站的最新動態,請[點擊這裡](#)進行訂閱! 224 | 225 | ### Use corner brackets for Chinese Simplified 226 | 227 | Usage: 228 | 229 | > 「老师,『有条不紊』的『紊』是什么意思?」 230 | 231 | compared with: 232 | 233 | > “老师,‘有条不紊’的‘紊’是什么意思?” 234 | 235 | ## Tools 236 | 237 | Repository | Category | Language 238 | ---------- | -------- | -------- 239 | [pangu.js](https://github.com/vinta/pangu.js) | pangu | JavaScript 240 | [pangu-go](https://github.com/vinta/pangu) | pangu | Go 241 | [pangu.java](https://github.com/vinta/pangu.java) | pangu | Java 242 | [pangu.py](https://github.com/vinta/pangu.py) | pangu | Python 243 | [pangu.rb](https://github.com/dlackty/pangu.rb) | pangu | Ruby 244 | [pangu.php](https://github.com/cchlorine/pangu.php) | pangu | PHP 245 | [pangu.vim](https://github.com/hotoo/pangu.vim) | pangu | Vim 246 | [vue-pangu](https://github.com/serkodev/vue-pangu) | pangu | Vue.js (Web Converter) 247 | [intellij-pangu](https://plugins.jetbrains.com/plugin/19665-pangu) | pangu | Intellij Platform Plugin 248 | [autocorrect](https://github.com/huacnlee/autocorrect) | autocorrect | Rust, WASM, CLI tool 249 | [autocorrect-node](https://github.com/huacnlee/autocorrect/tree/main/autocorrect-node) | autocorrect | Node.js 250 | [autocorrect-py](https://github.com/huacnlee/autocorrect/tree/main/autocorrect-py) | autocorrect | Python 251 | [autocorrect-rb](https://github.com/huacnlee/autocorrect/tree/main/autocorrect-rb) | autocorrect | Ruby 252 | [autocorrect-java](https://github.com/huacnlee/autocorrect/tree/main/autocorrect-java) | autocorrect | Java 253 | [autocorrect-go](https://github.com/longbridgeapp/autocorrect) | autocorrect | Go 254 | [autocorrect-php](https://github.com/NauxLiu/auto-correct) | autocorrect | PHP 255 | [autocorrect-vscode](https://marketplace.visualstudio.com/items?itemName=huacnlee.autocorrect) | autocorrect | VS Code Extension 256 | [autocorrect-idea-plugin](https://plugins.jetbrains.com/plugin/20244-autocorrect) | autocorrect | Intellij Platform Plugin 257 | [jxlwqq/chinese-typesetting](https://github.com/jxlwqq/chinese-typesetting) | other | PHP 258 | [sparanoid/space-lover](https://github.com/sparanoid/space-lover) | other | PHP (WordPress) 259 | [sparanoid/grunt-auto-spacing](https://github.com/sparanoid/grunt-auto-spacing) | other | Node.js (Grunt) 260 | [hjiang/scripts/add-space-between-latin-and-cjk](https://github.com/hjiang/scripts/blob/master/add-space-between-latin-and-cjk) | other | Python 261 | [hustcc/hint](https://github.com/hustcc/hint) | other | Python 262 | [n0vad3v/Tekorrect](https://github.com/n0vad3v/Tekorrect) | other | Python 263 | 264 | ## Examples of “Who is doing this?” 265 | 266 | Website | Copywriting | UGC 267 | ------- | ----------- | --- 268 | [Apple China](https://www.apple.com/cn/) | Yes | N/A 269 | [Apple Hong Kong](https://www.apple.com/hk/) | Yes | N/A 270 | [Apple Taiwan](https://www.apple.com/tw/) | Yes | N/A 271 | [Microsoft China](https://www.microsoft.com/zh-cn/) | Yes | N/A 272 | [Microsoft Hong Kong](https://www.microsoft.com/zh-hk/) | Yes | N/A 273 | [Microsoft Taiwan](https://www.microsoft.com/zh-tw/) | Yes | N/A 274 | [LeanCloud](https://leancloud.cn/) | Yes | N/A 275 | [V2EX](https://www.v2ex.com/) | Yes | Yes 276 | [Apple4us](https://apple4us.com/) | Yes | N/A 277 | [Ruby China](https://ruby-china.org/) | Yes | Yes 278 | [少數派](https://sspai.com/) | Yes | N/A 279 | 280 | ## References 281 | 282 | - [Guidelines for Using Capital Letters - ThoughtCo.](https://www.thoughtco.com/guidelines-for-using-capital-letters-1691724) 283 | - [Letter case - Wikipedia](https://en.wikipedia.org/wiki/Letter_case) 284 | - [Punctuation - Oxford Dictionaries](https://en.oxforddictionaries.com/grammar/punctuation) 285 | - [Punctuation - The Purdue OWL](https://owl.english.purdue.edu/owl/section/1/6/) 286 | - [How to Use English Punctuation Correctly - wikiHow](https://www.wikihow.com/Use-English-Punctuation-Correctly) 287 | - [格式 - openSUSE](https://zh.opensuse.org/index.php?title=Help:%E6%A0%BC%E5%BC%8F) 288 | - [Halfwidth and fullwidth forms - Wikipedia](https://en.wikipedia.org/wiki/Halfwidth_and_fullwidth_forms) 289 | - [引號 - 維基百科](https://zh.wikipedia.org/wiki/%E5%BC%95%E8%99%9F) 290 | - [Interrobang - Wikipedia](https://en.wikipedia.org/wiki/Interrobang) 291 | 292 | ## Forks 293 | 294 | The usage of forked projects may differ from this project. 295 | 296 | - [mzlogin/chinese-copywriting-guidelines](https://github.com/mzlogin/chinese-copywriting-guidelines) 297 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # 中文文案排版指北 2 | 3 | [![Crowdin](https://d322cqt584bo4o.cloudfront.net/chinese-copywriting-guidelines/localized.svg)](https://crowdin.com/project/chinese-copywriting-guidelines) 4 | [![Built with Almace Scaffolding](https://d349cztnlupsuf.cloudfront.net/amsf-badge.svg)](https://sparanoid.com/note/chinese-copywriting-guidelines/) 5 | 6 | 統一中文文案、排版的相關用法,降低團隊成員之間的溝通成本,增強網站氣質。 7 | 8 | Other languages: 9 | 10 | - [English](README.en.md) 11 | - [Chinese Traditional](README.md) 12 | - [Chinese Simplified](README.zh-Hans.md) 13 | 14 | ----- 15 | 16 | ## 空格 17 | 18 | > 「有研究顯示,打字的時候不喜歡在中文和英文之間加空格的人,感情路都走得很辛苦,有七成的比例會在 34 歲的時候跟自己不愛的人結婚,而其餘三成的人最後只能把遺產留給自己的貓。畢竟愛情跟書寫都需要適時地留白。 19 | > 20 | > 與大家共勉之。」——[vinta/paranoid-auto-spacing](https://github.com/vinta/pangu.js) 21 | 22 | ### 中英文之間需要增加空格 23 | 24 | 正確: 25 | 26 | > 在 LeanCloud 上,數據儲存是圍繞 `AVObject` 進行的。 27 | 28 | 錯誤: 29 | 30 | > 在LeanCloud上,數據儲存是圍繞`AVObject`進行的。 31 | 32 | > 在 LeanCloud上,數據儲存是圍繞`AVObject` 進行的。 33 | 34 | 完整的正確用法: 35 | 36 | > 在 LeanCloud 上,數據儲存是圍繞 `AVObject` 進行的。每個 `AVObject` 都包含了與 JSON 兼容的 key-value 對應的數據。數據是 schema-free 的,你不需要在每個 `AVObject` 上提前指定存在哪些键,只要直接設定對應的 key-value 即可。 37 | 38 | 例外:「豆瓣FM」等產品名詞,按照官方所定義的格式書寫。 39 | 40 | ### 中文與數字之間需要增加空格 41 | 42 | 正確: 43 | 44 | > 今天出去買菜花了 5000 元。 45 | 46 | 錯誤: 47 | 48 | > 今天出去買菜花了 5000元。 49 | 50 | > 今天出去買菜花了5000元。 51 | 52 | ### 數字與單位之間需要增加空格 53 | 54 | 正確: 55 | 56 | > 我家的光纖入屋寬頻有 10 Gbps,SSD 一共有 20 TB。 57 | 58 | 錯誤: 59 | 60 | > 我家的光纖入屋寬頻有 10Gbps,SSD 一共有 20TB。 61 | 62 | 例外:度數/百分比與數字之間不需要增加空格: 63 | 64 | 正確: 65 | 66 | > 角度為 90° 的角,就是直角。 67 | 68 | > 新 MacBook Pro 有 15% 的 CPU 性能提升。 69 | 70 | 錯誤: 71 | 72 | > 角度為 90 ° 的角,就是直角。 73 | 74 | > 新 MacBook Pro 有 15 % 的 CPU 性能提升。 75 | 76 | ### 全形標點與其他字符之間不加空格 77 | 78 | 正確: 79 | 80 | > 剛剛買了一部 iPhone,好開心! 81 | 82 | 錯誤: 83 | 84 | > 剛剛買了一部 iPhone ,好開心! 85 | 86 | > 剛剛買了一部 iPhone, 好開心! 87 | 88 | ### `text-spacing` to the rescue? 89 | 90 | CSS Text Module Level 4 的 [`text-spacing`](https://www.w3.org/TR/css-text-4/#text-spacing-property) 和 Microsoft 的 [`-ms-text-autospace`](https://msdn.microsoft.com/library/ms531164(v=vs.85).aspx) 可以實現自動為中英文之間增加空白。不過目前並未普及,另外在其他應用場景,例如 macOS、iOS、Windows 等用戶介面目前並不存在這個特性,所以請繼續保持隨手加空格的習慣。 91 | 92 | ## 標點符號 93 | 94 | ### 不重複使用標點符號 95 | 96 | 雖然中國大陸的標點符號用法允許重複使用標點符號,但是這麼做會破壞句子的美觀性。 97 | 98 | 正確: 99 | 100 | > 德國隊竟然戰勝了巴西隊! 101 | 102 | > 她竟然對你說「喵」?! 103 | 104 | 錯誤: 105 | 106 | > 德國隊竟然戰勝了巴西隊!! 107 | 108 | > 德國隊竟然戰勝了巴西隊!!!!!!!! 109 | 110 | > 她竟然對你說「喵」??!! 111 | 112 | > 她竟然對你說「喵」?!?!??!! 113 | 114 | ## 全形和半形 115 | 116 | 不明白什麼是全形(全角)與半形(半角)符號?請查看維基百科條目『[全形和半形](https://zh.wikipedia.org/wiki/%E5%85%A8%E5%BD%A2%E5%92%8C%E5%8D%8A%E5%BD%A2)』。 117 | 118 | ### 使用全形中文標點 119 | 120 | 正確: 121 | 122 | > 嗨!你知道嘛?今天前台的小妹跟我說「喵」了哎! 123 | 124 | > 核磁共振成像(NMRI)是什麼原理都不知道?JFGI! 125 | 126 | 錯誤: 127 | 128 | > 嗨! 你知道嘛? 今天前台的小妹跟我說 "喵" 了哎! 129 | 130 | > 嗨!你知道嘛?今天前台的小妹跟我說"喵"了哎! 131 | 132 | > 核磁共振成像 (NMRI) 是什麼原理都不知道? JFGI! 133 | 134 | > 核磁共振成像(NMRI)是什麼原理都不知道?JFGI! 135 | 136 | 例外:中文句子內夾有英文書籍名、報刊名時,不應借用中文書名號,應以英文斜體表示。 137 | 138 | ### 數字使用半形字符 139 | 140 | 正確: 141 | 142 | > 這件蛋糕只賣 1000 元。 143 | 144 | 錯誤: 145 | 146 | > 這件蛋糕只賣 1000 元。 147 | 148 | 例外:在設計稿、宣傳海報中如出現極少量數字的情形時,為方便文字對齊,是可以使用全形數字的。 149 | 150 | ### 遇到完整的英文整句、特殊名詞,其內容使用半形標點 151 | 152 | 正確: 153 | 154 | > 賈伯斯那句話是怎麼說的?「Stay hungry, stay foolish.」 155 | 156 | > 推薦你閱讀 *Hackers & Painters: Big Ideas from the Computer Age*,非常地有趣。 157 | 158 | 錯誤: 159 | 160 | > 賈伯斯那句話是怎麼說的?「Stay hungry,stay foolish。」 161 | 162 | > 推薦你閱讀《Hackers&Painters:Big Ideas from the Computer Age》,非常的有趣。 163 | 164 | ## 名詞 165 | 166 | ### 專有名詞使用正確的大小寫 167 | 168 | 大小寫相關用法原屬於英文書寫範疇,不屬於本 wiki 討論內容,在這裡只對部分易錯用法進行簡述。 169 | 170 | 正確: 171 | 172 | > 使用 GitHub 登錄 173 | 174 | > 我們的客戶有 GitHub、Foursquare、Microsoft Corporation、Google、Facebook, Inc.。 175 | 176 | 錯誤: 177 | 178 | > 使用 github 登錄 179 | 180 | > 使用 GITHUB 登錄 181 | 182 | > 使用 Github 登錄 183 | 184 | > 使用 gitHub 登錄 185 | 186 | > 使用 gイんĤЦ8 登錄 187 | 188 | > 我們的客戶有 github、foursquare、microsoft corporation、google、facebook, inc.。 189 | 190 | > 我們的客戶有 GITHUB、FOURSQUARE、MICROSOFT CORPORATION、GOOGLE、FACEBOOK, INC.。 191 | 192 | > 我們的客戶有 Github、FourSquare、MicroSoft Corporation、Google、FaceBook, Inc.。 193 | 194 | > 我們的客戶有 gitHub、fourSquare、microSoft Corporation、google、faceBook, Inc.。 195 | 196 | > 我們的客戶有 gイんĤЦ8、キouЯƧquムгє、๓เςг๏ร๏Ŧt ς๏гק๏гคtเ๏ภn、900913、ƒ4ᄃëв๏๏к, IПᄃ.。 197 | 198 | 注意:當網頁中需要配合整體視覺風格而出現全部大寫/小寫的情形,HTML 中請使用標準的大小寫規範進行書寫;並通過 `text-transform: uppercase;`/`text-transform: lowercase;` 對表現形式進行定義。 199 | 200 | ### 不要使用不道地的縮寫 201 | 202 | 正確: 203 | 204 | > 我們需要一位熟悉 TypeScript、HTML5,至少理解一種框架(如 React、Next.js)的前端開發者。 205 | 206 | 錯誤: 207 | 208 | > 我們需要一位熟悉 Ts、h5,至少理解一種框架(如 RJS、nextjs)的 FED。 209 | 210 | ## 爭議 211 | 212 | 以下用法略帶有個人色彩,即:無論是否遵循下述規則,從語法的角度來講都是**正確**的。 213 | 214 | ### 超連結之間增加空格 215 | 216 | 用法: 217 | 218 | > 請 [提交一個 issue](#) 並分配给相關同事。 219 | 220 | > 訪問我們網站的最新動態,請 [點擊這裡](#) 進行訂閱! 221 | 222 | 對比用法: 223 | 224 | > 請[提交一個 issue](#) 並分配给相關同事。 225 | 226 | > 訪問我們網站的最新動態,請[點擊這裡](#)進行訂閱! 227 | 228 | ### 簡體中文使用直角引號 229 | 230 | 用法: 231 | 232 | > 「老师,『有条不紊』的『紊』是什么意思?」 233 | 234 | 對比用法: 235 | 236 | > “老师,‘有条不紊’的‘紊’是什么意思?” 237 | 238 | ## 工具 239 | 240 | 倉庫 | 系列 | 語言 241 | --- | -- | --- 242 | [pangu.js](https://github.com/vinta/pangu.js) | pangu | JavaScript 243 | [pangu-go](https://github.com/vinta/pangu) | pangu | Go 244 | [pangu.java](https://github.com/vinta/pangu.java) | pangu | Java 245 | [pangu.py](https://github.com/vinta/pangu.py) | pangu | Python 246 | [pangu.rb](https://github.com/dlackty/pangu.rb) | pangu | Ruby 247 | [pangu.php](https://github.com/cchlorine/pangu.php) | pangu | PHP 248 | [pangu.vim](https://github.com/hotoo/pangu.vim) | pangu | Vim 249 | [vue-pangu](https://github.com/serkodev/vue-pangu) | pangu | Vue.js (Web Converter) 250 | [intellij-pangu](https://plugins.jetbrains.com/plugin/19665-pangu) | pangu | Intellij Platform Plugin 251 | [autocorrect](https://github.com/huacnlee/autocorrect) | autocorrect | Rust, WASM, CLI tool 252 | [autocorrect-node](https://github.com/huacnlee/autocorrect/tree/main/autocorrect-node) | autocorrect | Node.js 253 | [autocorrect-py](https://github.com/huacnlee/autocorrect/tree/main/autocorrect-py) | autocorrect | Python 254 | [autocorrect-rb](https://github.com/huacnlee/autocorrect/tree/main/autocorrect-rb) | autocorrect | Ruby 255 | [autocorrect-java](https://github.com/huacnlee/autocorrect/tree/main/autocorrect-java) | autocorrect | Java 256 | [autocorrect-go](https://github.com/longbridgeapp/autocorrect) | autocorrect | Go 257 | [autocorrect-php](https://github.com/NauxLiu/auto-correct) | autocorrect | PHP 258 | [autocorrect-vscode](https://marketplace.visualstudio.com/items?itemName=huacnlee.autocorrect) | autocorrect | VS Code Extension 259 | [autocorrect-idea-plugin](https://plugins.jetbrains.com/plugin/20244-autocorrect) | autocorrect | Intellij Platform Plugin 260 | [jxlwqq/chinese-typesetting](https://github.com/jxlwqq/chinese-typesetting) | other | PHP 261 | [sparanoid/space-lover](https://github.com/sparanoid/space-lover) | other | PHP (WordPress) 262 | [sparanoid/grunt-auto-spacing](https://github.com/sparanoid/grunt-auto-spacing) | other | Node.js (Grunt) 263 | [hjiang/scripts/add-space-between-latin-and-cjk](https://github.com/hjiang/scripts/blob/master/add-space-between-latin-and-cjk) | other | Python 264 | [hustcc/hint](https://github.com/hustcc/hint) | other | Python 265 | [n0vad3v/Tekorrect](https://github.com/n0vad3v/Tekorrect) | other | Python 266 | 267 | ## 誰在這樣做? 268 | 269 | 網站 | 文案 | UGC 270 | --- | --- | --- 271 | [Apple 中國](https://www.apple.com/cn/) | Yes | N/A 272 | [Apple 香港](https://www.apple.com/hk/) | Yes | N/A 273 | [Apple 台灣](https://www.apple.com/tw/) | Yes | N/A 274 | [Microsoft 中國](https://www.microsoft.com/zh-cn/) | Yes | N/A 275 | [Microsoft 香港](https://www.microsoft.com/zh-hk/) | Yes | N/A 276 | [Microsoft 台灣](https://www.microsoft.com/zh-tw/) | Yes | N/A 277 | [LeanCloud](https://leancloud.cn/) | Yes | N/A 278 | [V2EX](https://www.v2ex.com/) | Yes | Yes 279 | [Apple4us](https://apple4us.com/) | Yes | N/A 280 | [Ruby China](https://ruby-china.org/) | Yes | Yes 281 | [少數派](https://sspai.com/) | Yes | N/A 282 | 283 | ## 參考文獻 284 | 285 | - [Guidelines for Using Capital Letters - ThoughtCo.](https://www.thoughtco.com/guidelines-for-using-capital-letters-1691724) 286 | - [Letter case - Wikipedia](https://en.wikipedia.org/wiki/Letter_case) 287 | - [Punctuation - Oxford Dictionaries](https://en.oxforddictionaries.com/grammar/punctuation) 288 | - [Punctuation - The Purdue OWL](https://owl.english.purdue.edu/owl/section/1/6/) 289 | - [How to Use English Punctuation Correctly - wikiHow](https://www.wikihow.com/Use-English-Punctuation-Correctly) 290 | - [格式 - openSUSE](https://zh.opensuse.org/index.php?title=Help:%E6%A0%BC%E5%BC%8F) 291 | - [全形和半形 - 維基百科](https://zh.wikipedia.org/wiki/%E5%85%A8%E5%BD%A2%E5%92%8C%E5%8D%8A%E5%BD%A2) 292 | - [引號 - 維基百科](https://zh.wikipedia.org/wiki/%E5%BC%95%E8%99%9F) 293 | - [疑問驚嘆號 - 維基百科](https://zh.wikipedia.org/wiki/%E7%96%91%E5%95%8F%E9%A9%9A%E5%98%86%E8%99%9F) 294 | 295 | ## Forks 296 | 297 | 衍生專案的用法可能與本專案存在差異。 298 | 299 | - [mzlogin/chinese-copywriting-guidelines](https://github.com/mzlogin/chinese-copywriting-guidelines) 300 | -------------------------------------------------------------------------------- /README.zh-Hans.md: -------------------------------------------------------------------------------- 1 | # 中文文案排版指北 2 | 3 | 统一中文文案、排版的相关用法,降低团队成员之间的沟通成本,增强网站气质。 4 | 5 | Other languages: 6 | 7 | - [英语](README.en.md) 8 | - [繁体中文](README.md) 9 | - [简体中文](README.zh-Hans.md) 10 | 11 | * * * 12 | 13 | ## 空格 14 | 15 | > 「有研究显示,打字的时候不喜欢在中文和英文之间加空格的人,感情路都走得很辛苦,有七成的比例会在 34 岁的时候跟自己不爱的人结婚,而其余三成的人最后只能把遗产留给自己的猫。毕竟爱情跟书写都需要适时地留白。 16 | > 17 | > 与大家共勉之。」——[vinta/paranoid-auto-spacing](https://github.com/vinta/pangu.js) 18 | 19 | ### 中英文之间需要增加空格 20 | 21 | 正确: 22 | 23 | > 在 LeanCloud 上,数据存储是围绕 `AVObject` 进行的。 24 | 25 | 错误: 26 | 27 | > 在LeanCloud上,数据存储是围绕`AVObject`进行的。 28 | > 29 | > 在 LeanCloud上,数据存储是围绕`AVObject` 进行的。 30 | 31 | 完整的正确用法: 32 | 33 | > 在 LeanCloud 上,数据存储是围绕 `AVObject` 进行的。每个 `AVObject` 都包含了与 JSON 兼容的 key-value 对应的数据。数据是 schema-free 的,你不需要在每个 `AVObject` 上提前指定存在哪些键,只要直接设定对应的 key-value 即可。 34 | 35 | 例外:「豆瓣FM」等产品名词,按照官方所定义的格式书写。 36 | 37 | ### 中文与数字之间需要增加空格 38 | 39 | 正确: 40 | 41 | > 今天出去买菜花了 5000 元。 42 | 43 | 错误: 44 | 45 | > 今天出去买菜花了 5000元。 46 | > 47 | > 今天出去买菜花了5000元。 48 | 49 | ### 数字与单位之间需要增加空格 50 | 51 | 正确: 52 | 53 | > 我家的光纤入屋宽带有 10 Gbps,SSD 一共有 20 TB 54 | 55 | 错误: 56 | 57 | > 我家的光纤入屋宽带有 10Gbps,SSD 一共有 20TB 58 | 59 | 例外:度数/百分比与数字之间不需要增加空格: 60 | 61 | 正确: 62 | 63 | > 角度为 90° 的角,就是直角。 64 | > 65 | > 新 MacBook Pro 有 15% 的 CPU 性能提升。 66 | 67 | 错误: 68 | 69 | > 角度为 90 ° 的角,就是直角。 70 | > 71 | > 新 MacBook Pro 有 15 % 的 CPU 性能提升。 72 | 73 | ### 全角标点与其他字符之间不加空格 74 | 75 | 正确: 76 | 77 | > 刚刚买了一部 iPhone,好开心! 78 | 79 | 错误: 80 | 81 | > 刚刚买了一部 iPhone ,好开心! 82 | > 83 | > 刚刚买了一部 iPhone, 好开心! 84 | 85 | ### 用 `text-spacing` 来挽救? 86 | 87 | CSS Text Module Level 4 的 [`text-spacing`](https://www.w3.org/TR/css-text-4/#text-spacing-property) 和 Microsoft 的 [`-ms-text-autospace`](https://msdn.microsoft.com/library/ms531164(v=vs.85).aspx) 可以实现自动为中英文之间增加空白。不过目前并未普及,另外在其他应用场景,例如 macOS、iOS、Windows 等用户界面目前并不存在这个特性,所以请继续保持随手加空格的习惯。 88 | 89 | ## 标点符号 90 | 91 | ### 不重复使用标点符号 92 | 93 | 虽然中国大陆的标点符号用法允许重复使用标点符号,但是这么做会破坏句子的美观性。 94 | 95 | 正确: 96 | 97 | > 德国队竟然战胜了巴西队! 98 | > 99 | > 她竟然对你说「喵」?! 100 | 101 | 错误: 102 | 103 | > 德国队竟然战胜了巴西队!! 104 | > 105 | > 德国队竟然战胜了巴西队!!!!!!!! 106 | > 107 | > 她竟然对你说「喵」??!! 108 | > 109 | > 她竟然对你说「喵」?!?!??!! 110 | 111 | ## 全角和半角 112 | 113 | 不明白什么是全角(全形)与半角(半形)符号?请查看维基百科条目『[全角和半角](https://zh.wikipedia.org/wiki/%E5%85%A8%E5%BD%A2%E5%92%8C%E5%8D%8A%E5%BD%A2)』。 114 | 115 | ### 使用全角中文标点 116 | 117 | 正确: 118 | 119 | > 嗨!你知道嘛?今天前台的小妹跟我说「喵」了哎! 120 | > 121 | > 核磁共振成像(NMRI)是什么原理都不知道?JFGI! 122 | 123 | 错误: 124 | 125 | > 嗨! 你知道嘛? 今天前台的小妹跟我说 "喵" 了哎! 126 | > 127 | > 嗨!你知道嘛?今天前台的小妹跟我说"喵"了哎! 128 | > 129 | > 核磁共振成像 (NMRI) 是什么原理都不知道? JFGI! 130 | > 131 | > 核磁共振成像(NMRI)是什么原理都不知道?JFGI! 132 | 133 | 例外:中文句子内夹有英文书籍名、报刊名时,不应借用中文书名号,应以英文斜体表示。 134 | 135 | ### 数字使用半角字符 136 | 137 | 正确: 138 | 139 | > 这个蛋糕只卖 1000 元。 140 | 141 | 错误: 142 | 143 | > 这个蛋糕只卖 1000 元。 144 | 145 | 例外:在设计稿、宣传海报中如出现极少量数字的情形时,为方便文字对齐,是可以使用全角数字的。 146 | 147 | ### 遇到完整的英文整句、特殊名词,其内容使用半角标点 148 | 149 | 正确: 150 | 151 | > 乔布斯那句话是怎么说的?「Stay hungry, stay foolish.」 152 | > 153 | > 推荐你阅读 *Hackers & Painters: Big Ideas from the Computer Age*,非常地有趣。 154 | 155 | 错误: 156 | 157 | > 乔布斯那句话是怎么说的?「Stay hungry,stay foolish。」 158 | > 159 | > 推荐你阅读《Hackers&Painters:Big Ideas from the Computer Age》,非常的有趣。 160 | 161 | ## 名词 162 | 163 | ### 专有名词使用正确的大小写 164 | 165 | 大小写相关用法原属于英文书写范畴,不属于本 wiki 讨论内容,在这里只对部分易错用法进行简述。 166 | 167 | 正确: 168 | 169 | > 使用 GitHub 登录 170 | > 171 | > 我们的客户有 GitHub、Foursquare、Microsoft Corporation、Google、Facebook, Inc.。 172 | 173 | 错误: 174 | 175 | > 使用 github 登录 176 | > 177 | > 使用 GITHUB 登录 178 | > 179 | > 使用 Github 登录 180 | > 181 | > 使用 gitHub 登录 182 | > 183 | > 使用 gイんĤЦ8 登录 184 | > 185 | > 我们的客户有 github、foursquare、microsoft corporation、google、facebook, inc.。 186 | > 187 | > 我们的客户有 GITHUB、FOURSQUARE、MICROSOFT CORPORATION、GOOGLE、FACEBOOK, INC.。 188 | > 189 | > 我们的客户有 Github、FourSquare、MicroSoft Corporation、Google、FaceBook, Inc.。 190 | > 191 | > 我们的客户有 gitHub、fourSquare、microSoft Corporation、google、faceBook, Inc.。 192 | > 193 | > 我们的客户有 gイんĤЦ8、キouЯƧquムгє、๓เςг๏ร๏Ŧt ς๏гק๏гคtเ๏ภn、900913、ƒ4ᄃëв๏๏к, IПᄃ.。 194 | 195 | 注意:当网页中需要配合整体视觉风格而出现全部大写/小写的情形,HTML 中请使用标淮的大小写规范进行书写;并通过 `text-transform: uppercase;`/`text-transform: lowercase;` 对表现形式进行定义。 196 | 197 | ### 不要使用不地道的缩写 198 | 199 | 正确: 200 | 201 | > 我们需要一位熟悉 TypeScript、HTML5,至少理解一种框架(如 React、Next.js)的前端开发者。 202 | 203 | 错误: 204 | 205 | > 我们需要一位熟悉 Ts、h5,至少理解一种框架(如 RJS、nextjs)的 FED。 206 | 207 | ## 争议 208 | 209 | 以下用法略带有个人色彩,即:无论是否遵循下述规则,从语法的角度来讲都是**正确**的。 210 | 211 | ### 链接之间增加空格 212 | 213 | 用法: 214 | 215 | > 请 [提交一个 issue](#) 并分配给相关同事。 216 | > 217 | > 访问我们网站的最新动态,请 [点击这里](#) 进行订阅! 218 | 219 | 对比用法: 220 | 221 | > 请[提交一个 issue](#)并分配给相关同事。 222 | > 223 | > 访问我们网站的最新动态,请[点击这里](#)进行订阅! 224 | 225 | ### 简体中文使用直角引号 226 | 227 | 用法: 228 | 229 | > 「老师,『有条不紊』的『紊』是什么意思?」 230 | 231 | 对比用法: 232 | 233 | > “老师,‘有条不紊’的‘紊’是什么意思?” 234 | 235 | ## 工具 236 | 237 | 仓库 | 系列 | 语言 238 | --- | ---- | --- 239 | [pangu.js](https://github.com/vinta/pangu.js) | pangu | JavaScript 240 | [pangu-go](https://github.com/vinta/pangu) | pangu | Go 241 | [pangu.java](https://github.com/vinta/pangu.java) | pangu | Java 242 | [pangu.py](https://github.com/vinta/pangu.py) | pangu | Python 243 | [pangu.rb](https://github.com/dlackty/pangu.rb) | pangu | Ruby 244 | [pangu.php](https://github.com/cchlorine/pangu.php) | pangu | PHP 245 | [pangu.vim](https://github.com/hotoo/pangu.vim) | pangu | Vim 246 | [vue-pangu](https://github.com/serkodev/vue-pangu) | pangu | Vue.js (Web Converter) 247 | [intellij-pangu](https://plugins.jetbrains.com/plugin/19665-pangu) | pangu | Intellij Platform Plugin 248 | [autocorrect](https://github.com/huacnlee/autocorrect) | autocorrect | Rust, WASM, CLI tool 249 | [autocorrect-node](https://github.com/huacnlee/autocorrect/tree/main/autocorrect-node) | autocorrect | Node.js 250 | [autocorrect-py](https://github.com/huacnlee/autocorrect/tree/main/autocorrect-py) | autocorrect | Python 251 | [autocorrect-rb](https://github.com/huacnlee/autocorrect/tree/main/autocorrect-rb) | autocorrect | Ruby 252 | [autocorrect-java](https://github.com/huacnlee/autocorrect/tree/main/autocorrect-java) | autocorrect | Java 253 | [autocorrect-go](https://github.com/longbridgeapp/autocorrect) | autocorrect | Go 254 | [autocorrect-php](https://github.com/NauxLiu/auto-correct) | autocorrect | PHP 255 | [autocorrect-vscode](https://marketplace.visualstudio.com/items?itemName=huacnlee.autocorrect) | autocorrect | VS Code Extension 256 | [autocorrect-idea-plugin](https://plugins.jetbrains.com/plugin/20244-autocorrect) | autocorrect | Intellij Platform Plugin 257 | [jxlwqq/chinese-typesetting](https://github.com/jxlwqq/chinese-typesetting) | other | PHP 258 | [sparanoid/space-lover](https://github.com/sparanoid/space-lover) | other | PHP (WordPress) 259 | [sparanoid/grunt-auto-spacing](https://github.com/sparanoid/grunt-auto-spacing) | other | Node.js (Grunt) 260 | [hjiang/scripts/add-space-between-latin-and-cjk](https://github.com/hjiang/scripts/blob/master/add-space-between-latin-and-cjk) | other | Python 261 | [hustcc/hint](https://github.com/hustcc/hint) | other | Python 262 | [n0vad3v/Tekorrect](https://github.com/n0vad3v/Tekorrect) | other | Python 263 | 264 | ## 谁在这样做? 265 | 266 | 网站 | 文案 | UGC 267 | --- | --- | --- 268 | [Apple 中国](https://www.apple.com/cn/) | 是 | N/A 269 | [Apple 香港](https://www.apple.com/hk/) | 是 | N/A 270 | [Apple 台湾](https://www.apple.com/tw/) | 是 | N/A 271 | [Microsoft 中国](https://www.microsoft.com/zh-cn/) | 是 | N/A 272 | [Microsoft 香港](https://www.microsoft.com/zh-hk/) | 是 | N/A 273 | [Microsoft 台湾](https://www.microsoft.com/zh-tw/) | 是 | N/A 274 | [LeanCloud](https://leancloud.cn/) | 是 | N/A 275 | [V2EX](https://www.v2ex.com/) | 是 | 是 276 | [Apple4us](https://apple4us.com/) | 是 | N/A 277 | [Ruby China](https://ruby-china.org/) | 是 | 是 278 | [少数派](https://sspai.com/) | 是 | N/A 279 | 280 | ## 参考文献 281 | 282 | - [Guidelines for Using Capital Letters - ThoughtCo.](https://www.thoughtco.com/guidelines-for-using-capital-letters-1691724) 283 | - [Letter case - Wikipedia](https://en.wikipedia.org/wiki/Letter_case) 284 | - [Punctuation - Oxford Dictionaries](https://en.oxforddictionaries.com/grammar/punctuation) 285 | - [Punctuation - The Purdue OWL](https://owl.english.purdue.edu/owl/section/1/6/) 286 | - [How to Use English Punctuation Correctly - wikiHow](https://www.wikihow.com/Use-English-Punctuation-Correctly) 287 | - [格式 - openSUSE](https://zh.opensuse.org/index.php?title=Help:%E6%A0%BC%E5%BC%8F) 288 | - [全形和半形 - 维基百科](https://zh.wikipedia.org/wiki/%E5%85%A8%E5%BD%A2%E5%92%8C%E5%8D%8A%E5%BD%A2) 289 | - [引号 - 维基百科](https://zh.wikipedia.org/wiki/%E5%BC%95%E8%99%9F) 290 | - [疑问惊叹号 - 维基百科](https://zh.wikipedia.org/wiki/%E7%96%91%E5%95%8F%E9%A9%9A%E5%98%86%E8%99%9F) 291 | 292 | ## Forks 293 | 294 | 衍生项目的用法可能与本项目存在差异。 295 | 296 | - [mzlogin/chinese-copywriting-guidelines](https://github.com/mzlogin/chinese-copywriting-guidelines) 297 | -------------------------------------------------------------------------------- /crowdin.yml: -------------------------------------------------------------------------------- 1 | files: 2 | - source: /README.md 3 | translation: /README.%locale%.md 4 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "chinese-copywriting-guidelines", 3 | "version": "1.0.1", 4 | "description": "Chinese Copywriting Guidelines", 5 | "author": "Tunghsiao Liu", 6 | "homepage": "http://github.com/sparanoid/chinese-copywriting-guidelines", 7 | "main": "README.md", 8 | "scripts": { 9 | "test": "remark .", 10 | "release": "npx release-it" 11 | }, 12 | "remarkConfig": { 13 | "plugins": [ 14 | "remark-preset-lint-consistent", 15 | "remark-preset-lint-recommended", 16 | [ 17 | "remark-lint-list-item-indent", 18 | "space" 19 | ] 20 | ] 21 | }, 22 | "repository": { 23 | "type": "git", 24 | "url": "https://github.com/sparanoid/chinese-copywriting-guidelines.git" 25 | }, 26 | "bugs": { 27 | "url": "https://github.com/sparanoid/chinese-copywriting-guidelines/issues" 28 | }, 29 | "license": "MIT", 30 | "keywords": [ 31 | "chinese", 32 | "copywriting", 33 | "guideline" 34 | ], 35 | "readmeFilename": "README.md", 36 | "devDependencies": { 37 | "remark-cli": "^11.0.0", 38 | "remark-lint-list-item-indent": "^3.1.1", 39 | "remark-preset-lint-consistent": "^5.1.1", 40 | "remark-preset-lint-recommended": "^6.1.2" 41 | }, 42 | "release-it": { 43 | "git": { 44 | "commitArgs": "-S", 45 | "commitMessage": "chore: release v${version}", 46 | "tagArgs": "-s", 47 | "tagAnnotation": "chore: release v${version}" 48 | }, 49 | "github": { 50 | "release": true 51 | }, 52 | "npm": { 53 | "publish": false 54 | } 55 | } 56 | } 57 | -------------------------------------------------------------------------------- /pnpm-lock.yaml: -------------------------------------------------------------------------------- 1 | lockfileVersion: '6.0' 2 | 3 | settings: 4 | autoInstallPeers: true 5 | excludeLinksFromLockfile: false 6 | 7 | devDependencies: 8 | remark-cli: 9 | specifier: ^11.0.0 10 | version: 11.0.0 11 | remark-lint-list-item-indent: 12 | specifier: ^3.1.1 13 | version: 3.1.1 14 | remark-preset-lint-consistent: 15 | specifier: ^5.1.1 16 | version: 5.1.1 17 | remark-preset-lint-recommended: 18 | specifier: ^6.1.2 19 | version: 6.1.2 20 | 21 | packages: 22 | 23 | /@babel/code-frame@7.22.5: 24 | resolution: {integrity: sha512-Xmwn266vad+6DAqEB2A6V/CcZVp62BbwVmcOJc2RPuwih1kw02TjQvWVWlcKGbBPd+8/0V5DEkOcizRGYsspYQ==} 25 | engines: {node: '>=6.9.0'} 26 | dependencies: 27 | '@babel/highlight': 7.22.5 28 | dev: true 29 | 30 | /@babel/helper-validator-identifier@7.22.5: 31 | resolution: {integrity: sha512-aJXu+6lErq8ltp+JhkJUfk1MTGyuA4v7f3pA+BJ5HLfNC6nAQ0Cpi9uOquUj8Hehg0aUiHzWQbOVJGao6ztBAQ==} 32 | engines: {node: '>=6.9.0'} 33 | dev: true 34 | 35 | /@babel/highlight@7.22.5: 36 | resolution: {integrity: sha512-BSKlD1hgnedS5XRnGOljZawtag7H1yPfQp0tdNJCHoH6AZ+Pcm9VvkrK59/Yy593Ypg0zMxH2BxD1VPYUQ7UIw==} 37 | engines: {node: '>=6.9.0'} 38 | dependencies: 39 | '@babel/helper-validator-identifier': 7.22.5 40 | chalk: 2.4.2 41 | js-tokens: 4.0.0 42 | dev: true 43 | 44 | /@isaacs/cliui@8.0.2: 45 | resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} 46 | engines: {node: '>=12'} 47 | dependencies: 48 | string-width: 5.1.2 49 | string-width-cjs: /string-width@4.2.3 50 | strip-ansi: 7.1.0 51 | strip-ansi-cjs: /strip-ansi@6.0.1 52 | wrap-ansi: 8.1.0 53 | wrap-ansi-cjs: /wrap-ansi@7.0.0 54 | dev: true 55 | 56 | /@npmcli/config@6.2.1: 57 | resolution: {integrity: sha512-Cj/OrSbrLvnwWuzquFCDTwFN8QmR+SWH6qLNCBttUreDkKM5D5p36SeSMbcEUiCGdwjUrVy2yd8C0REwwwDPEw==} 58 | engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} 59 | dependencies: 60 | '@npmcli/map-workspaces': 3.0.4 61 | ci-info: 3.8.0 62 | ini: 4.1.1 63 | nopt: 7.2.0 64 | proc-log: 3.0.0 65 | read-package-json-fast: 3.0.2 66 | semver: 7.5.4 67 | walk-up-path: 3.0.1 68 | dev: true 69 | 70 | /@npmcli/map-workspaces@3.0.4: 71 | resolution: {integrity: sha512-Z0TbvXkRbacjFFLpVpV0e2mheCh+WzQpcqL+4xp49uNJOxOnIAPZyXtUxZ5Qn3QBTGKA11Exjd9a5411rBrhDg==} 72 | engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} 73 | dependencies: 74 | '@npmcli/name-from-folder': 2.0.0 75 | glob: 10.3.3 76 | minimatch: 9.0.3 77 | read-package-json-fast: 3.0.2 78 | dev: true 79 | 80 | /@npmcli/name-from-folder@2.0.0: 81 | resolution: {integrity: sha512-pwK+BfEBZJbKdNYpHHRTNBwBoqrN/iIMO0AiGvYsp3Hoaq0WbgGSWQR6SCldZovoDpY3yje5lkFUe6gsDgJ2vg==} 82 | engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} 83 | dev: true 84 | 85 | /@pkgjs/parseargs@0.11.0: 86 | resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} 87 | engines: {node: '>=14'} 88 | requiresBuild: true 89 | dev: true 90 | optional: true 91 | 92 | /@types/concat-stream@2.0.0: 93 | resolution: {integrity: sha512-t3YCerNM7NTVjLuICZo5gYAXYoDvpuuTceCcFQWcDQz26kxUR5uIWolxbIR5jRNIXpMqhOpW/b8imCR1LEmuJw==} 94 | dependencies: 95 | '@types/node': 18.17.1 96 | dev: true 97 | 98 | /@types/debug@4.1.8: 99 | resolution: {integrity: sha512-/vPO1EPOs306Cvhwv7KfVfYvOJqA/S/AXjaHQiJboCZzcNDb+TIJFN9/2C9DZ//ijSKWioNyUxD792QmDJ+HKQ==} 100 | dependencies: 101 | '@types/ms': 0.7.31 102 | dev: true 103 | 104 | /@types/estree-jsx@1.0.0: 105 | resolution: {integrity: sha512-3qvGd0z8F2ENTGr/GG1yViqfiKmRfrXVx5sJyHGFu3z7m5g5utCQtGp/g29JnjflhtQJBv1WDQukHiT58xPcYQ==} 106 | dependencies: 107 | '@types/estree': 1.0.1 108 | dev: true 109 | 110 | /@types/estree@1.0.1: 111 | resolution: {integrity: sha512-LG4opVs2ANWZ1TJoKc937iMmNstM/d0ae1vNbnBvBhqCSezgVUOzcLCqbI5elV8Vy6WKwKjaqR+zO9VKirBBCA==} 112 | dev: true 113 | 114 | /@types/hast@2.3.5: 115 | resolution: {integrity: sha512-SvQi0L/lNpThgPoleH53cdjB3y9zpLlVjRbqB3rH8hx1jiRSBGAhyjV3H+URFjNVRqt2EdYNrbZE5IsGlNfpRg==} 116 | dependencies: 117 | '@types/unist': 2.0.7 118 | dev: true 119 | 120 | /@types/is-empty@1.2.1: 121 | resolution: {integrity: sha512-a3xgqnFTuNJDm1fjsTjHocYJ40Cz3t8utYpi5GNaxzrJC2HSD08ym+whIL7fNqiqBCdM9bcqD1H/tORWAFXoZw==} 122 | dev: true 123 | 124 | /@types/mdast@3.0.12: 125 | resolution: {integrity: sha512-DT+iNIRNX884cx0/Q1ja7NyUPpZuv0KPyL5rGNxm1WC1OtHstl7n4Jb7nk+xacNShQMbczJjt8uFzznpp6kYBg==} 126 | dependencies: 127 | '@types/unist': 2.0.7 128 | dev: true 129 | 130 | /@types/ms@0.7.31: 131 | resolution: {integrity: sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA==} 132 | dev: true 133 | 134 | /@types/node@18.17.1: 135 | resolution: {integrity: sha512-xlR1jahfizdplZYRU59JlUx9uzF1ARa8jbhM11ccpCJya8kvos5jwdm2ZAgxSCwOl0fq21svP18EVwPBXMQudw==} 136 | dev: true 137 | 138 | /@types/supports-color@8.1.1: 139 | resolution: {integrity: sha512-dPWnWsf+kzIG140B8z2w3fr5D03TLWbOAFQl45xUpI3vcizeXriNR5VYkWZ+WTMsUHqZ9Xlt3hrxGNANFyNQfw==} 140 | dev: true 141 | 142 | /@types/text-table@0.2.2: 143 | resolution: {integrity: sha512-dGoI5Af7To0R2XE8wJuc6vwlavWARsCh3UKJPjWs1YEqGUqfgBI/j/4GX0yf19/DsDPPf0YAXWAp8psNeIehLg==} 144 | dev: true 145 | 146 | /@types/unist@2.0.7: 147 | resolution: {integrity: sha512-cputDpIbFgLUaGQn6Vqg3/YsJwxUwHLO13v3i5ouxT4lat0khip9AEWxtERujXV9wxIB1EyF97BSJFt6vpdI8g==} 148 | dev: true 149 | 150 | /abbrev@2.0.0: 151 | resolution: {integrity: sha512-6/mh1E2u2YgEsCHdY0Yx5oW+61gZU+1vXaoiHHrpKeuRNNgFvS+/jrwHiQhB5apAf5oB7UB7E19ol2R2LKH8hQ==} 152 | engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} 153 | dev: true 154 | 155 | /ansi-regex@5.0.1: 156 | resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} 157 | engines: {node: '>=8'} 158 | dev: true 159 | 160 | /ansi-regex@6.0.1: 161 | resolution: {integrity: sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==} 162 | engines: {node: '>=12'} 163 | dev: true 164 | 165 | /ansi-styles@3.2.1: 166 | resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} 167 | engines: {node: '>=4'} 168 | dependencies: 169 | color-convert: 1.9.3 170 | dev: true 171 | 172 | /ansi-styles@4.3.0: 173 | resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} 174 | engines: {node: '>=8'} 175 | dependencies: 176 | color-convert: 2.0.1 177 | dev: true 178 | 179 | /ansi-styles@6.2.1: 180 | resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} 181 | engines: {node: '>=12'} 182 | dev: true 183 | 184 | /anymatch@3.1.3: 185 | resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} 186 | engines: {node: '>= 8'} 187 | dependencies: 188 | normalize-path: 3.0.0 189 | picomatch: 2.3.1 190 | dev: true 191 | 192 | /bail@2.0.2: 193 | resolution: {integrity: sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==} 194 | dev: true 195 | 196 | /balanced-match@1.0.2: 197 | resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} 198 | dev: true 199 | 200 | /binary-extensions@2.2.0: 201 | resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==} 202 | engines: {node: '>=8'} 203 | dev: true 204 | 205 | /brace-expansion@2.0.1: 206 | resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} 207 | dependencies: 208 | balanced-match: 1.0.2 209 | dev: true 210 | 211 | /braces@3.0.2: 212 | resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} 213 | engines: {node: '>=8'} 214 | dependencies: 215 | fill-range: 7.0.1 216 | dev: true 217 | 218 | /buffer-from@1.1.2: 219 | resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} 220 | dev: true 221 | 222 | /camelcase@7.0.1: 223 | resolution: {integrity: sha512-xlx1yCK2Oc1APsPXDL2LdlNP6+uu8OCDdhOBSVT279M/S+y75O30C2VuD8T2ogdePBBl7PfPF4504tnLgX3zfw==} 224 | engines: {node: '>=14.16'} 225 | dev: true 226 | 227 | /chalk@2.4.2: 228 | resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} 229 | engines: {node: '>=4'} 230 | dependencies: 231 | ansi-styles: 3.2.1 232 | escape-string-regexp: 1.0.5 233 | supports-color: 5.5.0 234 | dev: true 235 | 236 | /chalk@5.3.0: 237 | resolution: {integrity: sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==} 238 | engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} 239 | dev: true 240 | 241 | /character-entities@2.0.2: 242 | resolution: {integrity: sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==} 243 | dev: true 244 | 245 | /chokidar@3.5.3: 246 | resolution: {integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==} 247 | engines: {node: '>= 8.10.0'} 248 | dependencies: 249 | anymatch: 3.1.3 250 | braces: 3.0.2 251 | glob-parent: 5.1.2 252 | is-binary-path: 2.1.0 253 | is-glob: 4.0.3 254 | normalize-path: 3.0.0 255 | readdirp: 3.6.0 256 | optionalDependencies: 257 | fsevents: 2.3.2 258 | dev: true 259 | 260 | /ci-info@3.8.0: 261 | resolution: {integrity: sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw==} 262 | engines: {node: '>=8'} 263 | dev: true 264 | 265 | /color-convert@1.9.3: 266 | resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} 267 | dependencies: 268 | color-name: 1.1.3 269 | dev: true 270 | 271 | /color-convert@2.0.1: 272 | resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} 273 | engines: {node: '>=7.0.0'} 274 | dependencies: 275 | color-name: 1.1.4 276 | dev: true 277 | 278 | /color-name@1.1.3: 279 | resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} 280 | dev: true 281 | 282 | /color-name@1.1.4: 283 | resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} 284 | dev: true 285 | 286 | /concat-stream@2.0.0: 287 | resolution: {integrity: sha512-MWufYdFw53ccGjCA+Ol7XJYpAlW6/prSMzuPOTRnJGcGzuhLn4Scrz7qf6o8bROZ514ltazcIFJZevcfbo0x7A==} 288 | engines: {'0': node >= 6.0} 289 | dependencies: 290 | buffer-from: 1.1.2 291 | inherits: 2.0.4 292 | readable-stream: 3.6.2 293 | typedarray: 0.0.6 294 | dev: true 295 | 296 | /cross-spawn@7.0.3: 297 | resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} 298 | engines: {node: '>= 8'} 299 | dependencies: 300 | path-key: 3.1.1 301 | shebang-command: 2.0.0 302 | which: 2.0.2 303 | dev: true 304 | 305 | /debug@4.3.4: 306 | resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} 307 | engines: {node: '>=6.0'} 308 | peerDependencies: 309 | supports-color: '*' 310 | peerDependenciesMeta: 311 | supports-color: 312 | optional: true 313 | dependencies: 314 | ms: 2.1.2 315 | dev: true 316 | 317 | /decode-named-character-reference@1.0.2: 318 | resolution: {integrity: sha512-O8x12RzrUF8xyVcY0KJowWsmaJxQbmy0/EtnNtHRpsOcT7dFk5W598coHqBVpmWo1oQQfsCqfCmkZN5DJrZVdg==} 319 | dependencies: 320 | character-entities: 2.0.2 321 | dev: true 322 | 323 | /dequal@2.0.3: 324 | resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} 325 | engines: {node: '>=6'} 326 | dev: true 327 | 328 | /diff@5.1.0: 329 | resolution: {integrity: sha512-D+mk+qE8VC/PAUrlAU34N+VfXev0ghe5ywmpqrawphmVZc1bEfn56uo9qpyGp1p4xpzOHkSW4ztBd6L7Xx4ACw==} 330 | engines: {node: '>=0.3.1'} 331 | dev: true 332 | 333 | /eastasianwidth@0.2.0: 334 | resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} 335 | dev: true 336 | 337 | /emoji-regex@8.0.0: 338 | resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} 339 | dev: true 340 | 341 | /emoji-regex@9.2.2: 342 | resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} 343 | dev: true 344 | 345 | /error-ex@1.3.2: 346 | resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} 347 | dependencies: 348 | is-arrayish: 0.2.1 349 | dev: true 350 | 351 | /escape-string-regexp@1.0.5: 352 | resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} 353 | engines: {node: '>=0.8.0'} 354 | dev: true 355 | 356 | /extend@3.0.2: 357 | resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==} 358 | dev: true 359 | 360 | /fault@2.0.1: 361 | resolution: {integrity: sha512-WtySTkS4OKev5JtpHXnib4Gxiurzh5NCGvWrFaZ34m6JehfTUhKZvn9njTfw48t6JumVQOmrKqpmGcdwxnhqBQ==} 362 | dependencies: 363 | format: 0.2.2 364 | dev: true 365 | 366 | /fill-range@7.0.1: 367 | resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} 368 | engines: {node: '>=8'} 369 | dependencies: 370 | to-regex-range: 5.0.1 371 | dev: true 372 | 373 | /foreground-child@3.1.1: 374 | resolution: {integrity: sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==} 375 | engines: {node: '>=14'} 376 | dependencies: 377 | cross-spawn: 7.0.3 378 | signal-exit: 4.0.2 379 | dev: true 380 | 381 | /format@0.2.2: 382 | resolution: {integrity: sha512-wzsgA6WOq+09wrU1tsJ09udeR/YZRaeArL9e1wPbFg3GG2yDnC2ldKpxs4xunpFF9DgqCqOIra3bc1HWrJ37Ww==} 383 | engines: {node: '>=0.4.x'} 384 | dev: true 385 | 386 | /fs.realpath@1.0.0: 387 | resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} 388 | dev: true 389 | 390 | /fsevents@2.3.2: 391 | resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==} 392 | engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} 393 | os: [darwin] 394 | requiresBuild: true 395 | dev: true 396 | optional: true 397 | 398 | /glob-parent@5.1.2: 399 | resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} 400 | engines: {node: '>= 6'} 401 | dependencies: 402 | is-glob: 4.0.3 403 | dev: true 404 | 405 | /glob@10.3.3: 406 | resolution: {integrity: sha512-92vPiMb/iqpmEgsOoIDvTjc50wf9CCCvMzsi6W0JLPeUKE8TWP1a73PgqSrqy7iAZxaSD1YdzU7QZR5LF51MJw==} 407 | engines: {node: '>=16 || 14 >=14.17'} 408 | hasBin: true 409 | dependencies: 410 | foreground-child: 3.1.1 411 | jackspeak: 2.2.2 412 | minimatch: 9.0.3 413 | minipass: 7.0.2 414 | path-scurry: 1.10.1 415 | dev: true 416 | 417 | /glob@8.1.0: 418 | resolution: {integrity: sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==} 419 | engines: {node: '>=12'} 420 | dependencies: 421 | fs.realpath: 1.0.0 422 | inflight: 1.0.6 423 | inherits: 2.0.4 424 | minimatch: 5.1.6 425 | once: 1.4.0 426 | dev: true 427 | 428 | /has-flag@3.0.0: 429 | resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} 430 | engines: {node: '>=4'} 431 | dev: true 432 | 433 | /ignore@5.2.4: 434 | resolution: {integrity: sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==} 435 | engines: {node: '>= 4'} 436 | dev: true 437 | 438 | /import-meta-resolve@2.2.2: 439 | resolution: {integrity: sha512-f8KcQ1D80V7RnqVm+/lirO9zkOxjGxhaTC1IPrBGd3MEfNgmNG67tSUO9gTi2F3Blr2Az6g1vocaxzkVnWl9MA==} 440 | dev: true 441 | 442 | /inflight@1.0.6: 443 | resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} 444 | dependencies: 445 | once: 1.4.0 446 | wrappy: 1.0.2 447 | dev: true 448 | 449 | /inherits@2.0.4: 450 | resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} 451 | dev: true 452 | 453 | /ini@4.1.1: 454 | resolution: {integrity: sha512-QQnnxNyfvmHFIsj7gkPcYymR8Jdw/o7mp5ZFihxn6h8Ci6fh3Dx4E1gPjpQEpIuPo9XVNY/ZUwh4BPMjGyL01g==} 455 | engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} 456 | dev: true 457 | 458 | /is-arrayish@0.2.1: 459 | resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} 460 | dev: true 461 | 462 | /is-binary-path@2.1.0: 463 | resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} 464 | engines: {node: '>=8'} 465 | dependencies: 466 | binary-extensions: 2.2.0 467 | dev: true 468 | 469 | /is-buffer@2.0.5: 470 | resolution: {integrity: sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==} 471 | engines: {node: '>=4'} 472 | dev: true 473 | 474 | /is-empty@1.2.0: 475 | resolution: {integrity: sha512-F2FnH/otLNJv0J6wc73A5Xo7oHLNnqplYqZhUu01tD54DIPvxIRSTSLkrUB/M0nHO4vo1O9PDfN4KoTxCzLh/w==} 476 | dev: true 477 | 478 | /is-extglob@2.1.1: 479 | resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} 480 | engines: {node: '>=0.10.0'} 481 | dev: true 482 | 483 | /is-fullwidth-code-point@3.0.0: 484 | resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} 485 | engines: {node: '>=8'} 486 | dev: true 487 | 488 | /is-glob@4.0.3: 489 | resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} 490 | engines: {node: '>=0.10.0'} 491 | dependencies: 492 | is-extglob: 2.1.1 493 | dev: true 494 | 495 | /is-number@7.0.0: 496 | resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} 497 | engines: {node: '>=0.12.0'} 498 | dev: true 499 | 500 | /is-plain-obj@4.1.0: 501 | resolution: {integrity: sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==} 502 | engines: {node: '>=12'} 503 | dev: true 504 | 505 | /isexe@2.0.0: 506 | resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} 507 | dev: true 508 | 509 | /jackspeak@2.2.2: 510 | resolution: {integrity: sha512-mgNtVv4vUuaKA97yxUHoA3+FkuhtxkjdXEWOyB/N76fjy0FjezEt34oy3epBtvCvS+7DyKwqCFWx/oJLV5+kCg==} 511 | engines: {node: '>=14'} 512 | dependencies: 513 | '@isaacs/cliui': 8.0.2 514 | optionalDependencies: 515 | '@pkgjs/parseargs': 0.11.0 516 | dev: true 517 | 518 | /js-tokens@4.0.0: 519 | resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} 520 | dev: true 521 | 522 | /json-parse-even-better-errors@2.3.1: 523 | resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} 524 | dev: true 525 | 526 | /json-parse-even-better-errors@3.0.0: 527 | resolution: {integrity: sha512-iZbGHafX/59r39gPwVPRBGw0QQKnA7tte5pSMrhWOW7swGsVvVTjmfyAV9pNqk8YGT7tRCdxRu8uzcgZwoDooA==} 528 | engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} 529 | dev: true 530 | 531 | /json5@2.2.3: 532 | resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} 533 | engines: {node: '>=6'} 534 | hasBin: true 535 | dev: true 536 | 537 | /kleur@4.1.5: 538 | resolution: {integrity: sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==} 539 | engines: {node: '>=6'} 540 | dev: true 541 | 542 | /lines-and-columns@2.0.3: 543 | resolution: {integrity: sha512-cNOjgCnLB+FnvWWtyRTzmB3POJ+cXxTA81LoW7u8JdmhfXzriropYwpjShnz1QLLWsQwY7nIxoDmcPTwphDK9w==} 544 | engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} 545 | dev: true 546 | 547 | /load-plugin@5.1.0: 548 | resolution: {integrity: sha512-Lg1CZa1CFj2CbNaxijTL6PCbzd4qGTlZov+iH2p5Xwy/ApcZJh+i6jMN2cYePouTfjJfrNu3nXFdEw8LvbjPFQ==} 549 | dependencies: 550 | '@npmcli/config': 6.2.1 551 | import-meta-resolve: 2.2.2 552 | dev: true 553 | 554 | /longest-streak@3.1.0: 555 | resolution: {integrity: sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==} 556 | dev: true 557 | 558 | /lru-cache@10.0.0: 559 | resolution: {integrity: sha512-svTf/fzsKHffP42sujkO/Rjs37BCIsQVRCeNYIm9WN8rgT7ffoUnRtZCqU+6BqcSBdv8gwJeTz8knJpgACeQMw==} 560 | engines: {node: 14 || >=16.14} 561 | dev: true 562 | 563 | /lru-cache@6.0.0: 564 | resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} 565 | engines: {node: '>=10'} 566 | dependencies: 567 | yallist: 4.0.0 568 | dev: true 569 | 570 | /mdast-comment-marker@2.1.2: 571 | resolution: {integrity: sha512-HED3ezseRVkBzZ0uK4q6RJMdufr/2p3VfVZstE3H1N9K8bwtspztWo6Xd7rEatuGNoCXaBna8oEqMwUn0Ve1bw==} 572 | dependencies: 573 | '@types/mdast': 3.0.12 574 | mdast-util-mdx-expression: 1.3.2 575 | transitivePeerDependencies: 576 | - supports-color 577 | dev: true 578 | 579 | /mdast-util-from-markdown@1.3.1: 580 | resolution: {integrity: sha512-4xTO/M8c82qBcnQc1tgpNtubGUW/Y1tBQ1B0i5CtSoelOLKFYlElIr3bvgREYYO5iRqbMY1YuqZng0GVOI8Qww==} 581 | dependencies: 582 | '@types/mdast': 3.0.12 583 | '@types/unist': 2.0.7 584 | decode-named-character-reference: 1.0.2 585 | mdast-util-to-string: 3.2.0 586 | micromark: 3.2.0 587 | micromark-util-decode-numeric-character-reference: 1.1.0 588 | micromark-util-decode-string: 1.1.0 589 | micromark-util-normalize-identifier: 1.1.0 590 | micromark-util-symbol: 1.1.0 591 | micromark-util-types: 1.1.0 592 | unist-util-stringify-position: 3.0.3 593 | uvu: 0.5.6 594 | transitivePeerDependencies: 595 | - supports-color 596 | dev: true 597 | 598 | /mdast-util-heading-style@2.0.1: 599 | resolution: {integrity: sha512-0L5rthU4xKDVbw+UQ7D8Y8xOEsX4JXZvemWoEAsL+WAaeSH+TvVVwFnTb3G/OrjyP4VYQULoNWU+PdZfkmNu4A==} 600 | dependencies: 601 | '@types/mdast': 3.0.12 602 | dev: true 603 | 604 | /mdast-util-mdx-expression@1.3.2: 605 | resolution: {integrity: sha512-xIPmR5ReJDu/DHH1OoIT1HkuybIfRGYRywC+gJtI7qHjCJp/M9jrmBEJW22O8lskDWm562BX2W8TiAwRTb0rKA==} 606 | dependencies: 607 | '@types/estree-jsx': 1.0.0 608 | '@types/hast': 2.3.5 609 | '@types/mdast': 3.0.12 610 | mdast-util-from-markdown: 1.3.1 611 | mdast-util-to-markdown: 1.5.0 612 | transitivePeerDependencies: 613 | - supports-color 614 | dev: true 615 | 616 | /mdast-util-phrasing@3.0.1: 617 | resolution: {integrity: sha512-WmI1gTXUBJo4/ZmSk79Wcb2HcjPJBzM1nlI/OUWA8yk2X9ik3ffNbBGsU+09BFmXaL1IBb9fiuvq6/KMiNycSg==} 618 | dependencies: 619 | '@types/mdast': 3.0.12 620 | unist-util-is: 5.2.1 621 | dev: true 622 | 623 | /mdast-util-to-markdown@1.5.0: 624 | resolution: {integrity: sha512-bbv7TPv/WC49thZPg3jXuqzuvI45IL2EVAr/KxF0BSdHsU0ceFHOmwQn6evxAh1GaoK/6GQ1wp4R4oW2+LFL/A==} 625 | dependencies: 626 | '@types/mdast': 3.0.12 627 | '@types/unist': 2.0.7 628 | longest-streak: 3.1.0 629 | mdast-util-phrasing: 3.0.1 630 | mdast-util-to-string: 3.2.0 631 | micromark-util-decode-string: 1.1.0 632 | unist-util-visit: 4.1.2 633 | zwitch: 2.0.4 634 | dev: true 635 | 636 | /mdast-util-to-string@3.2.0: 637 | resolution: {integrity: sha512-V4Zn/ncyN1QNSqSBxTrMOLpjr+IKdHl2v3KVLoWmDPscP4r9GcCi71gjgvUV1SFSKh92AjAG4peFuBl2/YgCJg==} 638 | dependencies: 639 | '@types/mdast': 3.0.12 640 | dev: true 641 | 642 | /micromark-core-commonmark@1.1.0: 643 | resolution: {integrity: sha512-BgHO1aRbolh2hcrzL2d1La37V0Aoz73ymF8rAcKnohLy93titmv62E0gP8Hrx9PKcKrqCZ1BbLGbP3bEhoXYlw==} 644 | dependencies: 645 | decode-named-character-reference: 1.0.2 646 | micromark-factory-destination: 1.1.0 647 | micromark-factory-label: 1.1.0 648 | micromark-factory-space: 1.1.0 649 | micromark-factory-title: 1.1.0 650 | micromark-factory-whitespace: 1.1.0 651 | micromark-util-character: 1.2.0 652 | micromark-util-chunked: 1.1.0 653 | micromark-util-classify-character: 1.1.0 654 | micromark-util-html-tag-name: 1.2.0 655 | micromark-util-normalize-identifier: 1.1.0 656 | micromark-util-resolve-all: 1.1.0 657 | micromark-util-subtokenize: 1.1.0 658 | micromark-util-symbol: 1.1.0 659 | micromark-util-types: 1.1.0 660 | uvu: 0.5.6 661 | dev: true 662 | 663 | /micromark-factory-destination@1.1.0: 664 | resolution: {integrity: sha512-XaNDROBgx9SgSChd69pjiGKbV+nfHGDPVYFs5dOoDd7ZnMAE+Cuu91BCpsY8RT2NP9vo/B8pds2VQNCLiu0zhg==} 665 | dependencies: 666 | micromark-util-character: 1.2.0 667 | micromark-util-symbol: 1.1.0 668 | micromark-util-types: 1.1.0 669 | dev: true 670 | 671 | /micromark-factory-label@1.1.0: 672 | resolution: {integrity: sha512-OLtyez4vZo/1NjxGhcpDSbHQ+m0IIGnT8BoPamh+7jVlzLJBH98zzuCoUeMxvM6WsNeh8wx8cKvqLiPHEACn0w==} 673 | dependencies: 674 | micromark-util-character: 1.2.0 675 | micromark-util-symbol: 1.1.0 676 | micromark-util-types: 1.1.0 677 | uvu: 0.5.6 678 | dev: true 679 | 680 | /micromark-factory-space@1.1.0: 681 | resolution: {integrity: sha512-cRzEj7c0OL4Mw2v6nwzttyOZe8XY/Z8G0rzmWQZTBi/jjwyw/U4uqKtUORXQrR5bAZZnbTI/feRV/R7hc4jQYQ==} 682 | dependencies: 683 | micromark-util-character: 1.2.0 684 | micromark-util-types: 1.1.0 685 | dev: true 686 | 687 | /micromark-factory-title@1.1.0: 688 | resolution: {integrity: sha512-J7n9R3vMmgjDOCY8NPw55jiyaQnH5kBdV2/UXCtZIpnHH3P6nHUKaH7XXEYuWwx/xUJcawa8plLBEjMPU24HzQ==} 689 | dependencies: 690 | micromark-factory-space: 1.1.0 691 | micromark-util-character: 1.2.0 692 | micromark-util-symbol: 1.1.0 693 | micromark-util-types: 1.1.0 694 | dev: true 695 | 696 | /micromark-factory-whitespace@1.1.0: 697 | resolution: {integrity: sha512-v2WlmiymVSp5oMg+1Q0N1Lxmt6pMhIHD457whWM7/GUlEks1hI9xj5w3zbc4uuMKXGisksZk8DzP2UyGbGqNsQ==} 698 | dependencies: 699 | micromark-factory-space: 1.1.0 700 | micromark-util-character: 1.2.0 701 | micromark-util-symbol: 1.1.0 702 | micromark-util-types: 1.1.0 703 | dev: true 704 | 705 | /micromark-util-character@1.2.0: 706 | resolution: {integrity: sha512-lXraTwcX3yH/vMDaFWCQJP1uIszLVebzUa3ZHdrgxr7KEU/9mL4mVgCpGbyhvNLNlauROiNUq7WN5u7ndbY6xg==} 707 | dependencies: 708 | micromark-util-symbol: 1.1.0 709 | micromark-util-types: 1.1.0 710 | dev: true 711 | 712 | /micromark-util-chunked@1.1.0: 713 | resolution: {integrity: sha512-Ye01HXpkZPNcV6FiyoW2fGZDUw4Yc7vT0E9Sad83+bEDiCJ1uXu0S3mr8WLpsz3HaG3x2q0HM6CTuPdcZcluFQ==} 714 | dependencies: 715 | micromark-util-symbol: 1.1.0 716 | dev: true 717 | 718 | /micromark-util-classify-character@1.1.0: 719 | resolution: {integrity: sha512-SL0wLxtKSnklKSUplok1WQFoGhUdWYKggKUiqhX+Swala+BtptGCu5iPRc+xvzJ4PXE/hwM3FNXsfEVgoZsWbw==} 720 | dependencies: 721 | micromark-util-character: 1.2.0 722 | micromark-util-symbol: 1.1.0 723 | micromark-util-types: 1.1.0 724 | dev: true 725 | 726 | /micromark-util-combine-extensions@1.1.0: 727 | resolution: {integrity: sha512-Q20sp4mfNf9yEqDL50WwuWZHUrCO4fEyeDCnMGmG5Pr0Cz15Uo7KBs6jq+dq0EgX4DPwwrh9m0X+zPV1ypFvUA==} 728 | dependencies: 729 | micromark-util-chunked: 1.1.0 730 | micromark-util-types: 1.1.0 731 | dev: true 732 | 733 | /micromark-util-decode-numeric-character-reference@1.1.0: 734 | resolution: {integrity: sha512-m9V0ExGv0jB1OT21mrWcuf4QhP46pH1KkfWy9ZEezqHKAxkj4mPCy3nIH1rkbdMlChLHX531eOrymlwyZIf2iw==} 735 | dependencies: 736 | micromark-util-symbol: 1.1.0 737 | dev: true 738 | 739 | /micromark-util-decode-string@1.1.0: 740 | resolution: {integrity: sha512-YphLGCK8gM1tG1bd54azwyrQRjCFcmgj2S2GoJDNnh4vYtnL38JS8M4gpxzOPNyHdNEpheyWXCTnnTDY3N+NVQ==} 741 | dependencies: 742 | decode-named-character-reference: 1.0.2 743 | micromark-util-character: 1.2.0 744 | micromark-util-decode-numeric-character-reference: 1.1.0 745 | micromark-util-symbol: 1.1.0 746 | dev: true 747 | 748 | /micromark-util-encode@1.1.0: 749 | resolution: {integrity: sha512-EuEzTWSTAj9PA5GOAs992GzNh2dGQO52UvAbtSOMvXTxv3Criqb6IOzJUBCmEqrrXSblJIJBbFFv6zPxpreiJw==} 750 | dev: true 751 | 752 | /micromark-util-html-tag-name@1.2.0: 753 | resolution: {integrity: sha512-VTQzcuQgFUD7yYztuQFKXT49KghjtETQ+Wv/zUjGSGBioZnkA4P1XXZPT1FHeJA6RwRXSF47yvJ1tsJdoxwO+Q==} 754 | dev: true 755 | 756 | /micromark-util-normalize-identifier@1.1.0: 757 | resolution: {integrity: sha512-N+w5vhqrBihhjdpM8+5Xsxy71QWqGn7HYNUvch71iV2PM7+E3uWGox1Qp90loa1ephtCxG2ftRV/Conitc6P2Q==} 758 | dependencies: 759 | micromark-util-symbol: 1.1.0 760 | dev: true 761 | 762 | /micromark-util-resolve-all@1.1.0: 763 | resolution: {integrity: sha512-b/G6BTMSg+bX+xVCshPTPyAu2tmA0E4X98NSR7eIbeC6ycCqCeE7wjfDIgzEbkzdEVJXRtOG4FbEm/uGbCRouA==} 764 | dependencies: 765 | micromark-util-types: 1.1.0 766 | dev: true 767 | 768 | /micromark-util-sanitize-uri@1.2.0: 769 | resolution: {integrity: sha512-QO4GXv0XZfWey4pYFndLUKEAktKkG5kZTdUNaTAkzbuJxn2tNBOr+QtxR2XpWaMhbImT2dPzyLrPXLlPhph34A==} 770 | dependencies: 771 | micromark-util-character: 1.2.0 772 | micromark-util-encode: 1.1.0 773 | micromark-util-symbol: 1.1.0 774 | dev: true 775 | 776 | /micromark-util-subtokenize@1.1.0: 777 | resolution: {integrity: sha512-kUQHyzRoxvZO2PuLzMt2P/dwVsTiivCK8icYTeR+3WgbuPqfHgPPy7nFKbeqRivBvn/3N3GBiNC+JRTMSxEC7A==} 778 | dependencies: 779 | micromark-util-chunked: 1.1.0 780 | micromark-util-symbol: 1.1.0 781 | micromark-util-types: 1.1.0 782 | uvu: 0.5.6 783 | dev: true 784 | 785 | /micromark-util-symbol@1.1.0: 786 | resolution: {integrity: sha512-uEjpEYY6KMs1g7QfJ2eX1SQEV+ZT4rUD3UcF6l57acZvLNK7PBZL+ty82Z1qhK1/yXIY4bdx04FKMgR0g4IAag==} 787 | dev: true 788 | 789 | /micromark-util-types@1.1.0: 790 | resolution: {integrity: sha512-ukRBgie8TIAcacscVHSiddHjO4k/q3pnedmzMQ4iwDcK0FtFCohKOlFbaOL/mPgfnPsL3C1ZyxJa4sbWrBl3jg==} 791 | dev: true 792 | 793 | /micromark@3.2.0: 794 | resolution: {integrity: sha512-uD66tJj54JLYq0De10AhWycZWGQNUvDI55xPgk2sQM5kn1JYlhbCMTtEeT27+vAhW2FBQxLlOmS3pmA7/2z4aA==} 795 | dependencies: 796 | '@types/debug': 4.1.8 797 | debug: 4.3.4 798 | decode-named-character-reference: 1.0.2 799 | micromark-core-commonmark: 1.1.0 800 | micromark-factory-space: 1.1.0 801 | micromark-util-character: 1.2.0 802 | micromark-util-chunked: 1.1.0 803 | micromark-util-combine-extensions: 1.1.0 804 | micromark-util-decode-numeric-character-reference: 1.1.0 805 | micromark-util-encode: 1.1.0 806 | micromark-util-normalize-identifier: 1.1.0 807 | micromark-util-resolve-all: 1.1.0 808 | micromark-util-sanitize-uri: 1.2.0 809 | micromark-util-subtokenize: 1.1.0 810 | micromark-util-symbol: 1.1.0 811 | micromark-util-types: 1.1.0 812 | uvu: 0.5.6 813 | transitivePeerDependencies: 814 | - supports-color 815 | dev: true 816 | 817 | /minimatch@5.1.6: 818 | resolution: {integrity: sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==} 819 | engines: {node: '>=10'} 820 | dependencies: 821 | brace-expansion: 2.0.1 822 | dev: true 823 | 824 | /minimatch@9.0.3: 825 | resolution: {integrity: sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==} 826 | engines: {node: '>=16 || 14 >=14.17'} 827 | dependencies: 828 | brace-expansion: 2.0.1 829 | dev: true 830 | 831 | /minimist@1.2.8: 832 | resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} 833 | dev: true 834 | 835 | /minipass@7.0.2: 836 | resolution: {integrity: sha512-eL79dXrE1q9dBbDCLg7xfn/vl7MS4F1gvJAgjJrQli/jbQWdUttuVawphqpffoIYfRdq78LHx6GP4bU/EQ2ATA==} 837 | engines: {node: '>=16 || 14 >=14.17'} 838 | dev: true 839 | 840 | /mri@1.2.0: 841 | resolution: {integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==} 842 | engines: {node: '>=4'} 843 | dev: true 844 | 845 | /ms@2.1.2: 846 | resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} 847 | dev: true 848 | 849 | /nopt@7.2.0: 850 | resolution: {integrity: sha512-CVDtwCdhYIvnAzFoJ6NJ6dX3oga9/HyciQDnG1vQDjSLMeKLJ4A93ZqYKDrgYSr1FBY5/hMYC+2VCi24pgpkGA==} 851 | engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} 852 | hasBin: true 853 | dependencies: 854 | abbrev: 2.0.0 855 | dev: true 856 | 857 | /normalize-path@3.0.0: 858 | resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} 859 | engines: {node: '>=0.10.0'} 860 | dev: true 861 | 862 | /npm-normalize-package-bin@3.0.1: 863 | resolution: {integrity: sha512-dMxCf+zZ+3zeQZXKxmyuCKlIDPGuv8EF940xbkC4kQVDTtqoh6rJFO+JTKSA6/Rwi0getWmtuy4Itup0AMcaDQ==} 864 | engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} 865 | dev: true 866 | 867 | /once@1.4.0: 868 | resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} 869 | dependencies: 870 | wrappy: 1.0.2 871 | dev: true 872 | 873 | /parse-json@6.0.2: 874 | resolution: {integrity: sha512-SA5aMiaIjXkAiBrW/yPgLgQAQg42f7K3ACO+2l/zOvtQBwX58DMUsFJXelW2fx3yMBmWOVkR6j1MGsdSbCA4UA==} 875 | engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} 876 | dependencies: 877 | '@babel/code-frame': 7.22.5 878 | error-ex: 1.3.2 879 | json-parse-even-better-errors: 2.3.1 880 | lines-and-columns: 2.0.3 881 | dev: true 882 | 883 | /path-key@3.1.1: 884 | resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} 885 | engines: {node: '>=8'} 886 | dev: true 887 | 888 | /path-scurry@1.10.1: 889 | resolution: {integrity: sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ==} 890 | engines: {node: '>=16 || 14 >=14.17'} 891 | dependencies: 892 | lru-cache: 10.0.0 893 | minipass: 7.0.2 894 | dev: true 895 | 896 | /picomatch@2.3.1: 897 | resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} 898 | engines: {node: '>=8.6'} 899 | dev: true 900 | 901 | /pluralize@8.0.0: 902 | resolution: {integrity: sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==} 903 | engines: {node: '>=4'} 904 | dev: true 905 | 906 | /proc-log@3.0.0: 907 | resolution: {integrity: sha512-++Vn7NS4Xf9NacaU9Xq3URUuqZETPsf8L4j5/ckhaRYsfPeRyzGw+iDjFhV/Jr3uNmTvvddEJFWh5R1gRgUH8A==} 908 | engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} 909 | dev: true 910 | 911 | /read-package-json-fast@3.0.2: 912 | resolution: {integrity: sha512-0J+Msgym3vrLOUB3hzQCuZHII0xkNGCtz/HJH9xZshwv9DbDwkw1KaE3gx/e2J5rpEY5rtOy6cyhKOPrkP7FZw==} 913 | engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} 914 | dependencies: 915 | json-parse-even-better-errors: 3.0.0 916 | npm-normalize-package-bin: 3.0.1 917 | dev: true 918 | 919 | /readable-stream@3.6.2: 920 | resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==} 921 | engines: {node: '>= 6'} 922 | dependencies: 923 | inherits: 2.0.4 924 | string_decoder: 1.3.0 925 | util-deprecate: 1.0.2 926 | dev: true 927 | 928 | /readdirp@3.6.0: 929 | resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} 930 | engines: {node: '>=8.10.0'} 931 | dependencies: 932 | picomatch: 2.3.1 933 | dev: true 934 | 935 | /remark-cli@11.0.0: 936 | resolution: {integrity: sha512-8JEWwArXquRq1/In4Ftz7gSG9Scwb1ijT2/dEuBETW9omqhmMRxcfjZ3iKqrak3BnCJeZSXCdWEmPhFKC8+RUQ==} 937 | hasBin: true 938 | dependencies: 939 | remark: 14.0.3 940 | unified-args: 10.0.0 941 | transitivePeerDependencies: 942 | - supports-color 943 | dev: true 944 | 945 | /remark-lint-blockquote-indentation@3.1.2: 946 | resolution: {integrity: sha512-5DOrFsZd5dXqA4p/VZvWSrqIWNFbBXjX7IV/FkVkxlNhNF/0FMf/4v8x1I2W3mzaZ7yDsWS/egpZnmligq1ckQ==} 947 | dependencies: 948 | '@types/mdast': 3.0.12 949 | pluralize: 8.0.0 950 | unified: 10.1.2 951 | unified-lint-rule: 2.1.2 952 | unist-util-generated: 2.0.1 953 | unist-util-position: 4.0.4 954 | unist-util-visit: 4.1.2 955 | dev: true 956 | 957 | /remark-lint-checkbox-character-style@4.1.2: 958 | resolution: {integrity: sha512-5ITz+1cCuJ3Jv/Q7rKgDEucCOnIgjWDnSHPJA1tb4TI/D316h+ALbDhZIpP8gyfAm6sBAh3Pwz9XZJN2uJB5UQ==} 959 | dependencies: 960 | '@types/mdast': 3.0.12 961 | unified: 10.1.2 962 | unified-lint-rule: 2.1.2 963 | unist-util-position: 4.0.4 964 | unist-util-visit: 4.1.2 965 | dev: true 966 | 967 | /remark-lint-code-block-style@3.1.2: 968 | resolution: {integrity: sha512-3wsWmzzdyEsB9sOzBOf46TSkwwVKXN2JpTEQb6feN0Tl6Vg75F7T9MHqMz7aqk/56bOXSxUzdpXDscGBhziLRA==} 969 | dependencies: 970 | '@types/mdast': 3.0.12 971 | unified: 10.1.2 972 | unified-lint-rule: 2.1.2 973 | unist-util-generated: 2.0.1 974 | unist-util-position: 4.0.4 975 | unist-util-visit: 4.1.2 976 | dev: true 977 | 978 | /remark-lint-emphasis-marker@3.1.2: 979 | resolution: {integrity: sha512-hPZ8vxZrIfxmLA5B66bA8y3PdHjcCQuaLsySIqi5PM2DkpN6a7zAP3v1znyRSaYJ1ANVWcu00/0bNzuUjflGCA==} 980 | dependencies: 981 | '@types/mdast': 3.0.12 982 | unified: 10.1.2 983 | unified-lint-rule: 2.1.2 984 | unist-util-position: 4.0.4 985 | unist-util-visit: 4.1.2 986 | dev: true 987 | 988 | /remark-lint-fenced-code-marker@3.1.2: 989 | resolution: {integrity: sha512-6XNqjOuhT+0c7Q/22aCsMz61ne9g8HRpYF79EXQPdbzYa+PcfPXMiQKStONY3PfC8OE2/3WXI2zcs8w9x+8+VQ==} 990 | dependencies: 991 | '@types/mdast': 3.0.12 992 | unified: 10.1.2 993 | unified-lint-rule: 2.1.2 994 | unist-util-position: 4.0.4 995 | unist-util-visit: 4.1.2 996 | dev: true 997 | 998 | /remark-lint-final-newline@2.1.2: 999 | resolution: {integrity: sha512-K0FdPGPyEB94PwNgopwVJFE8oRWi7IhY2ycXFVAMReI51el7EHB8F1gX14tB6p6zyGy6mUh69bCVU9mMTNeOUg==} 1000 | dependencies: 1001 | '@types/mdast': 3.0.12 1002 | unified: 10.1.2 1003 | unified-lint-rule: 2.1.2 1004 | dev: true 1005 | 1006 | /remark-lint-hard-break-spaces@3.1.2: 1007 | resolution: {integrity: sha512-HaW0xsl3TI7VFAqGWWcZtPqyz0NWu19KKjSO7OGFTUJU4S9YiRnhIxmSFM0ZLSsVAynE+dhzVKa8U7dOpWDcOg==} 1008 | dependencies: 1009 | '@types/mdast': 3.0.12 1010 | unified: 10.1.2 1011 | unified-lint-rule: 2.1.2 1012 | unist-util-generated: 2.0.1 1013 | unist-util-position: 4.0.4 1014 | unist-util-visit: 4.1.2 1015 | dev: true 1016 | 1017 | /remark-lint-heading-style@3.1.2: 1018 | resolution: {integrity: sha512-0RkcRPV/H2bPFgeInzBkK1cWUwtFTm83I+Db/Z5tDY02GzKOosHLvxtJyj/1391/opAH1LYbHtHWffir99IUgw==} 1019 | dependencies: 1020 | '@types/mdast': 3.0.12 1021 | mdast-util-heading-style: 2.0.1 1022 | unified: 10.1.2 1023 | unified-lint-rule: 2.1.2 1024 | unist-util-generated: 2.0.1 1025 | unist-util-visit: 4.1.2 1026 | dev: true 1027 | 1028 | /remark-lint-link-title-style@3.1.2: 1029 | resolution: {integrity: sha512-if4MahYJVvQUWlrXDF8GSv4b9VtLSgMSDHeikQp1/hGYlihLl9uGw3nlL5Lf9DqTN0qaT6RPbXOjuuzHlk38sg==} 1030 | dependencies: 1031 | '@types/mdast': 3.0.12 1032 | unified: 10.1.2 1033 | unified-lint-rule: 2.1.2 1034 | unist-util-position: 4.0.4 1035 | unist-util-visit: 4.1.2 1036 | vfile-location: 4.1.0 1037 | dev: true 1038 | 1039 | /remark-lint-list-item-bullet-indent@4.1.2: 1040 | resolution: {integrity: sha512-WgU5nooqIEm6f35opcbHKBzWrdFJA3XcyTfB3nv/v0KX43/h6qFGmmMJ5kEiaFExuQp3dZSdatWuY0YZ9YRbUg==} 1041 | dependencies: 1042 | '@types/mdast': 3.0.12 1043 | pluralize: 8.0.0 1044 | unified: 10.1.2 1045 | unified-lint-rule: 2.1.2 1046 | unist-util-visit: 4.1.2 1047 | dev: true 1048 | 1049 | /remark-lint-list-item-content-indent@3.1.2: 1050 | resolution: {integrity: sha512-TB0pmrWiRaQW80Y/PILFQTnHDghRxXNzMwyawlP+DBF9gNom3pEBmb4ZlGQlN0aa3r8VWeIKdv1ylHrfXE0vqA==} 1051 | dependencies: 1052 | '@types/mdast': 3.0.12 1053 | pluralize: 8.0.0 1054 | unified: 10.1.2 1055 | unified-lint-rule: 2.1.2 1056 | unist-util-position: 4.0.4 1057 | unist-util-visit: 4.1.2 1058 | dev: true 1059 | 1060 | /remark-lint-list-item-indent@3.1.1: 1061 | resolution: {integrity: sha512-OSTG64e52v8XBmmeT0lefpiAfCMYHJxMMUrMnhTjLVyWAbEO0vqqR5bLvfLwzK+P4nY2D/8XKku0hw35dM86Rw==} 1062 | dependencies: 1063 | '@types/mdast': 3.0.12 1064 | pluralize: 8.0.0 1065 | unified: 10.1.2 1066 | unified-lint-rule: 2.1.2 1067 | unist-util-generated: 2.0.1 1068 | unist-util-position: 4.0.4 1069 | unist-util-visit: 4.1.2 1070 | dev: true 1071 | 1072 | /remark-lint-no-blockquote-without-marker@5.1.2: 1073 | resolution: {integrity: sha512-QPbqsrt7EfpSWqTkZJ9tepabPIhBDlNqZkuxxMQYD0OQ2N+tHDUq3zE1JxI5ts1V9o/mWApgySocqGd3jlcKmQ==} 1074 | dependencies: 1075 | '@types/mdast': 3.0.12 1076 | unified: 10.1.2 1077 | unified-lint-rule: 2.1.2 1078 | unist-util-generated: 2.0.1 1079 | unist-util-position: 4.0.4 1080 | unist-util-visit: 4.1.2 1081 | vfile-location: 4.1.0 1082 | dev: true 1083 | 1084 | /remark-lint-no-duplicate-definitions@3.1.2: 1085 | resolution: {integrity: sha512-vi0nXA7p+pjQOorZOkr9E+QDhG74JAdbzqglWPrWWNI3z2rUYWYHTNSyWJbwEXaIIcev1ZAw8SCAOis5MNm+pA==} 1086 | dependencies: 1087 | '@types/mdast': 3.0.12 1088 | unified: 10.1.2 1089 | unified-lint-rule: 2.1.2 1090 | unist-util-generated: 2.0.1 1091 | unist-util-position: 4.0.4 1092 | unist-util-stringify-position: 3.0.3 1093 | unist-util-visit: 4.1.2 1094 | dev: true 1095 | 1096 | /remark-lint-no-heading-content-indent@4.1.2: 1097 | resolution: {integrity: sha512-TTxFsm1f4ZHFxZQCuz7j0QK4RvP6oArTiwazKLr16yaZe1608ypogMek4A30j2xX8WuO9+2uBzLXCY5OBo5x5Q==} 1098 | dependencies: 1099 | '@types/mdast': 3.0.12 1100 | mdast-util-heading-style: 2.0.1 1101 | pluralize: 8.0.0 1102 | unified: 10.1.2 1103 | unified-lint-rule: 2.1.2 1104 | unist-util-generated: 2.0.1 1105 | unist-util-position: 4.0.4 1106 | unist-util-visit: 4.1.2 1107 | dev: true 1108 | 1109 | /remark-lint-no-inline-padding@4.1.2: 1110 | resolution: {integrity: sha512-dGyhWsiqCZS3Slob0EVBUfsFBbdpMIBCvb56LlCgaHbnLsnNYx8PpF/wA5CgsN8BXIbXfRpyPB5cIJwIq5taYg==} 1111 | dependencies: 1112 | '@types/mdast': 3.0.12 1113 | mdast-util-to-string: 3.2.0 1114 | unified: 10.1.2 1115 | unified-lint-rule: 2.1.2 1116 | unist-util-generated: 2.0.1 1117 | unist-util-visit: 4.1.2 1118 | dev: true 1119 | 1120 | /remark-lint-no-literal-urls@3.1.2: 1121 | resolution: {integrity: sha512-4tV9JGLKxAMFSuWDMOqLozkFJ3HyRvhzgrPrxASoziaml23m7UXAozk5dkIrFny1cN2oG988Z8tORxX2FL1Ilw==} 1122 | dependencies: 1123 | '@types/mdast': 3.0.12 1124 | mdast-util-to-string: 3.2.0 1125 | unified: 10.1.2 1126 | unified-lint-rule: 2.1.2 1127 | unist-util-generated: 2.0.1 1128 | unist-util-position: 4.0.4 1129 | unist-util-visit: 4.1.2 1130 | dev: true 1131 | 1132 | /remark-lint-no-shortcut-reference-image@3.1.2: 1133 | resolution: {integrity: sha512-NX4XJFPyDeJJ77pmETxRj4oM/zayf7Lmn/O87HgExBkQIPz2NYbDeKD8QEyliLaV/oKA2rQufpzuFw55xa1Tww==} 1134 | dependencies: 1135 | '@types/mdast': 3.0.12 1136 | unified: 10.1.2 1137 | unified-lint-rule: 2.1.2 1138 | unist-util-generated: 2.0.1 1139 | unist-util-visit: 4.1.2 1140 | dev: true 1141 | 1142 | /remark-lint-no-shortcut-reference-link@3.1.2: 1143 | resolution: {integrity: sha512-/9iPN7FLKaaIzw4tLWKu7Rx0wAP7E2EuzIeentQlkY0rO/mMHipmT3IlgiebsAInKagzTY6TNFoG1rq2VnaCcA==} 1144 | dependencies: 1145 | '@types/mdast': 3.0.12 1146 | unified: 10.1.2 1147 | unified-lint-rule: 2.1.2 1148 | unist-util-generated: 2.0.1 1149 | unist-util-visit: 4.1.2 1150 | dev: true 1151 | 1152 | /remark-lint-no-undefined-references@4.2.1: 1153 | resolution: {integrity: sha512-HdNg5b2KiuNplcuVvRtsrUiROw557kAG1CiZYB7jQrrVWFgd86lKTa3bDiywe+87dGrGmHd3qQ28eZYTuHz2Nw==} 1154 | dependencies: 1155 | '@types/mdast': 3.0.12 1156 | micromark-util-normalize-identifier: 1.1.0 1157 | unified: 10.1.2 1158 | unified-lint-rule: 2.1.2 1159 | unist-util-generated: 2.0.1 1160 | unist-util-position: 4.0.4 1161 | unist-util-visit: 4.1.2 1162 | vfile-location: 4.1.0 1163 | dev: true 1164 | 1165 | /remark-lint-no-unused-definitions@3.1.2: 1166 | resolution: {integrity: sha512-bOcaJAnjKxT3kASFquUA3fO9xem9wZhVqt8TbqjA84+G4n40qjaLXDs/4vq73aMsSde73K0f3j1u0pMe7et8yQ==} 1167 | dependencies: 1168 | '@types/mdast': 3.0.12 1169 | unified: 10.1.2 1170 | unified-lint-rule: 2.1.2 1171 | unist-util-generated: 2.0.1 1172 | unist-util-visit: 4.1.2 1173 | dev: true 1174 | 1175 | /remark-lint-ordered-list-marker-style@3.1.2: 1176 | resolution: {integrity: sha512-62iVE/YQsA0Azaqt8yAJWPplWLS47kDLjXeC2PlRIAzCqbNt9qH3HId8vZ15QTSrp8rHmJwrCMdcqV6AZUi7gQ==} 1177 | dependencies: 1178 | '@types/mdast': 3.0.12 1179 | unified: 10.1.2 1180 | unified-lint-rule: 2.1.2 1181 | unist-util-generated: 2.0.1 1182 | unist-util-position: 4.0.4 1183 | unist-util-visit: 4.1.2 1184 | dev: true 1185 | 1186 | /remark-lint-rule-style@3.1.2: 1187 | resolution: {integrity: sha512-0CsX2XcX9pIhAP5N7Y8mhYXp3/Ld+NvxXY1p0LHAq0NZu17UsZLuegvx/s25uFbQs08DcmSqyKnepU9qGGqmTQ==} 1188 | dependencies: 1189 | '@types/mdast': 3.0.12 1190 | unified: 10.1.2 1191 | unified-lint-rule: 2.1.2 1192 | unist-util-position: 4.0.4 1193 | unist-util-visit: 4.1.2 1194 | dev: true 1195 | 1196 | /remark-lint-strong-marker@3.1.2: 1197 | resolution: {integrity: sha512-U/g4wngmiI0Q6WBRQG6pZxnDS33Wt/0QYA3+KNFBDykoi1vXsDEorIqy3dEag9z6XHwcMvFDsff6VRUhaOJWQg==} 1198 | dependencies: 1199 | '@types/mdast': 3.0.12 1200 | unified: 10.1.2 1201 | unified-lint-rule: 2.1.2 1202 | unist-util-position: 4.0.4 1203 | unist-util-visit: 4.1.2 1204 | dev: true 1205 | 1206 | /remark-lint-table-cell-padding@4.1.3: 1207 | resolution: {integrity: sha512-N9xtnS6MG/H3srAMjqqaF26A7socr87pIgt64dr5rxoSbDRWRPChGQ8y7wKyV8VeyRNF37e3E5KB3bQVqjSYaQ==} 1208 | dependencies: 1209 | '@types/mdast': 3.0.12 1210 | '@types/unist': 2.0.7 1211 | unified: 10.1.2 1212 | unified-lint-rule: 2.1.2 1213 | unist-util-position: 4.0.4 1214 | unist-util-visit: 4.1.2 1215 | dev: true 1216 | 1217 | /remark-lint@9.1.2: 1218 | resolution: {integrity: sha512-m9e/aPlh7tsvfJfj8tPxrQzD6oEdb9Foko+Ya/6OwUP9EoGMfehv1Qtv26W1DoH58Wn8rT8CD+KuprTWscMmIA==} 1219 | dependencies: 1220 | '@types/mdast': 3.0.12 1221 | remark-message-control: 7.1.1 1222 | unified: 10.1.2 1223 | transitivePeerDependencies: 1224 | - supports-color 1225 | dev: true 1226 | 1227 | /remark-message-control@7.1.1: 1228 | resolution: {integrity: sha512-xKRWl1NTBOKed0oEtCd8BUfH5m4s8WXxFFSoo7uUwx6GW/qdCy4zov5LfPyw7emantDmhfWn5PdIZgcbVcWMDQ==} 1229 | dependencies: 1230 | '@types/mdast': 3.0.12 1231 | mdast-comment-marker: 2.1.2 1232 | unified: 10.1.2 1233 | unified-message-control: 4.0.0 1234 | vfile: 5.3.7 1235 | transitivePeerDependencies: 1236 | - supports-color 1237 | dev: true 1238 | 1239 | /remark-parse@10.0.2: 1240 | resolution: {integrity: sha512-3ydxgHa/ZQzG8LvC7jTXccARYDcRld3VfcgIIFs7bI6vbRSxJJmzgLEIIoYKyrfhaY+ujuWaf/PJiMZXoiCXgw==} 1241 | dependencies: 1242 | '@types/mdast': 3.0.12 1243 | mdast-util-from-markdown: 1.3.1 1244 | unified: 10.1.2 1245 | transitivePeerDependencies: 1246 | - supports-color 1247 | dev: true 1248 | 1249 | /remark-preset-lint-consistent@5.1.1: 1250 | resolution: {integrity: sha512-DZQfomiVi/1x7NRByWrOiIC+olEGa1PpyykKrowvYp5qr/Seq60FqU7OjBJxtcOLzgnQcu9Y2JXdHxFi4AAPXQ==} 1251 | dependencies: 1252 | '@types/mdast': 3.0.12 1253 | remark-lint: 9.1.2 1254 | remark-lint-blockquote-indentation: 3.1.2 1255 | remark-lint-checkbox-character-style: 4.1.2 1256 | remark-lint-code-block-style: 3.1.2 1257 | remark-lint-emphasis-marker: 3.1.2 1258 | remark-lint-fenced-code-marker: 3.1.2 1259 | remark-lint-heading-style: 3.1.2 1260 | remark-lint-link-title-style: 3.1.2 1261 | remark-lint-list-item-content-indent: 3.1.2 1262 | remark-lint-ordered-list-marker-style: 3.1.2 1263 | remark-lint-rule-style: 3.1.2 1264 | remark-lint-strong-marker: 3.1.2 1265 | remark-lint-table-cell-padding: 4.1.3 1266 | unified: 10.1.2 1267 | transitivePeerDependencies: 1268 | - supports-color 1269 | dev: true 1270 | 1271 | /remark-preset-lint-recommended@6.1.2: 1272 | resolution: {integrity: sha512-x9kWufNY8PNAhY4fsl+KD3atgQdo4imP3GDAQYbQ6ylWVyX13suPRLkqnupW0ODRynfUg8ZRt8pVX0wMHwgPAg==} 1273 | dependencies: 1274 | '@types/mdast': 3.0.12 1275 | remark-lint: 9.1.2 1276 | remark-lint-final-newline: 2.1.2 1277 | remark-lint-hard-break-spaces: 3.1.2 1278 | remark-lint-list-item-bullet-indent: 4.1.2 1279 | remark-lint-list-item-indent: 3.1.1 1280 | remark-lint-no-blockquote-without-marker: 5.1.2 1281 | remark-lint-no-duplicate-definitions: 3.1.2 1282 | remark-lint-no-heading-content-indent: 4.1.2 1283 | remark-lint-no-inline-padding: 4.1.2 1284 | remark-lint-no-literal-urls: 3.1.2 1285 | remark-lint-no-shortcut-reference-image: 3.1.2 1286 | remark-lint-no-shortcut-reference-link: 3.1.2 1287 | remark-lint-no-undefined-references: 4.2.1 1288 | remark-lint-no-unused-definitions: 3.1.2 1289 | remark-lint-ordered-list-marker-style: 3.1.2 1290 | unified: 10.1.2 1291 | transitivePeerDependencies: 1292 | - supports-color 1293 | dev: true 1294 | 1295 | /remark-stringify@10.0.3: 1296 | resolution: {integrity: sha512-koyOzCMYoUHudypbj4XpnAKFbkddRMYZHwghnxd7ue5210WzGw6kOBwauJTRUMq16jsovXx8dYNvSSWP89kZ3A==} 1297 | dependencies: 1298 | '@types/mdast': 3.0.12 1299 | mdast-util-to-markdown: 1.5.0 1300 | unified: 10.1.2 1301 | dev: true 1302 | 1303 | /remark@14.0.3: 1304 | resolution: {integrity: sha512-bfmJW1dmR2LvaMJuAnE88pZP9DktIFYXazkTfOIKZzi3Knk9lT0roItIA24ydOucI3bV/g/tXBA6hzqq3FV9Ew==} 1305 | dependencies: 1306 | '@types/mdast': 3.0.12 1307 | remark-parse: 10.0.2 1308 | remark-stringify: 10.0.3 1309 | unified: 10.1.2 1310 | transitivePeerDependencies: 1311 | - supports-color 1312 | dev: true 1313 | 1314 | /sade@1.8.1: 1315 | resolution: {integrity: sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==} 1316 | engines: {node: '>=6'} 1317 | dependencies: 1318 | mri: 1.2.0 1319 | dev: true 1320 | 1321 | /safe-buffer@5.2.1: 1322 | resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} 1323 | dev: true 1324 | 1325 | /semver@7.5.4: 1326 | resolution: {integrity: sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==} 1327 | engines: {node: '>=10'} 1328 | hasBin: true 1329 | dependencies: 1330 | lru-cache: 6.0.0 1331 | dev: true 1332 | 1333 | /shebang-command@2.0.0: 1334 | resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} 1335 | engines: {node: '>=8'} 1336 | dependencies: 1337 | shebang-regex: 3.0.0 1338 | dev: true 1339 | 1340 | /shebang-regex@3.0.0: 1341 | resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} 1342 | engines: {node: '>=8'} 1343 | dev: true 1344 | 1345 | /signal-exit@4.0.2: 1346 | resolution: {integrity: sha512-MY2/qGx4enyjprQnFaZsHib3Yadh3IXyV2C321GY0pjGfVBu4un0uDJkwgdxqO+Rdx8JMT8IfJIRwbYVz3Ob3Q==} 1347 | engines: {node: '>=14'} 1348 | dev: true 1349 | 1350 | /string-width@4.2.3: 1351 | resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} 1352 | engines: {node: '>=8'} 1353 | dependencies: 1354 | emoji-regex: 8.0.0 1355 | is-fullwidth-code-point: 3.0.0 1356 | strip-ansi: 6.0.1 1357 | dev: true 1358 | 1359 | /string-width@5.1.2: 1360 | resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} 1361 | engines: {node: '>=12'} 1362 | dependencies: 1363 | eastasianwidth: 0.2.0 1364 | emoji-regex: 9.2.2 1365 | strip-ansi: 7.1.0 1366 | dev: true 1367 | 1368 | /string_decoder@1.3.0: 1369 | resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} 1370 | dependencies: 1371 | safe-buffer: 5.2.1 1372 | dev: true 1373 | 1374 | /strip-ansi@6.0.1: 1375 | resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} 1376 | engines: {node: '>=8'} 1377 | dependencies: 1378 | ansi-regex: 5.0.1 1379 | dev: true 1380 | 1381 | /strip-ansi@7.1.0: 1382 | resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==} 1383 | engines: {node: '>=12'} 1384 | dependencies: 1385 | ansi-regex: 6.0.1 1386 | dev: true 1387 | 1388 | /supports-color@5.5.0: 1389 | resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} 1390 | engines: {node: '>=4'} 1391 | dependencies: 1392 | has-flag: 3.0.0 1393 | dev: true 1394 | 1395 | /supports-color@9.4.0: 1396 | resolution: {integrity: sha512-VL+lNrEoIXww1coLPOmiEmK/0sGigko5COxI09KzHc2VJXJsQ37UaQ+8quuxjDeA7+KnLGTWRyOXSLLR2Wb4jw==} 1397 | engines: {node: '>=12'} 1398 | dev: true 1399 | 1400 | /text-table@0.2.0: 1401 | resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} 1402 | dev: true 1403 | 1404 | /to-regex-range@5.0.1: 1405 | resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} 1406 | engines: {node: '>=8.0'} 1407 | dependencies: 1408 | is-number: 7.0.0 1409 | dev: true 1410 | 1411 | /to-vfile@7.2.4: 1412 | resolution: {integrity: sha512-2eQ+rJ2qGbyw3senPI0qjuM7aut8IYXK6AEoOWb+fJx/mQYzviTckm1wDjq91QYHAPBTYzmdJXxMFA6Mk14mdw==} 1413 | dependencies: 1414 | is-buffer: 2.0.5 1415 | vfile: 5.3.7 1416 | dev: true 1417 | 1418 | /trough@2.1.0: 1419 | resolution: {integrity: sha512-AqTiAOLcj85xS7vQ8QkAV41hPDIJ71XJB4RCUrzo/1GM2CQwhkJGaf9Hgr7BOugMRpgGUrqRg/DrBDl4H40+8g==} 1420 | dev: true 1421 | 1422 | /typedarray@0.0.6: 1423 | resolution: {integrity: sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==} 1424 | dev: true 1425 | 1426 | /unified-args@10.0.0: 1427 | resolution: {integrity: sha512-PqsqxwkXpGSLiMkbjNnKU33Ffm6gso6rAvz1TlBGzMBx3gpx7ewIhViBX8HEWmy0v7pebA5PM6RkRWWaYmtfYw==} 1428 | dependencies: 1429 | '@types/text-table': 0.2.2 1430 | camelcase: 7.0.1 1431 | chalk: 5.3.0 1432 | chokidar: 3.5.3 1433 | fault: 2.0.1 1434 | json5: 2.2.3 1435 | minimist: 1.2.8 1436 | text-table: 0.2.0 1437 | unified-engine: 10.1.0 1438 | transitivePeerDependencies: 1439 | - supports-color 1440 | dev: true 1441 | 1442 | /unified-engine@10.1.0: 1443 | resolution: {integrity: sha512-5+JDIs4hqKfHnJcVCxTid1yBoI/++FfF/1PFdSMpaftZZZY+qg2JFruRbf7PaIwa9KgLotXQV3gSjtY0IdcFGQ==} 1444 | dependencies: 1445 | '@types/concat-stream': 2.0.0 1446 | '@types/debug': 4.1.8 1447 | '@types/is-empty': 1.2.1 1448 | '@types/node': 18.17.1 1449 | '@types/unist': 2.0.7 1450 | concat-stream: 2.0.0 1451 | debug: 4.3.4 1452 | fault: 2.0.1 1453 | glob: 8.1.0 1454 | ignore: 5.2.4 1455 | is-buffer: 2.0.5 1456 | is-empty: 1.2.0 1457 | is-plain-obj: 4.1.0 1458 | load-plugin: 5.1.0 1459 | parse-json: 6.0.2 1460 | to-vfile: 7.2.4 1461 | trough: 2.1.0 1462 | unist-util-inspect: 7.0.2 1463 | vfile-message: 3.1.4 1464 | vfile-reporter: 7.0.5 1465 | vfile-statistics: 2.0.1 1466 | yaml: 2.3.1 1467 | transitivePeerDependencies: 1468 | - supports-color 1469 | dev: true 1470 | 1471 | /unified-lint-rule@2.1.2: 1472 | resolution: {integrity: sha512-JWudPtRN7TLFHVLEVZ+Rm8FUb6kCAtHxEXFgBGDxRSdNMnGyTU5zyYvduHSF/liExlFB3vdFvsAHnNVE/UjAwA==} 1473 | dependencies: 1474 | '@types/unist': 2.0.7 1475 | trough: 2.1.0 1476 | unified: 10.1.2 1477 | vfile: 5.3.7 1478 | dev: true 1479 | 1480 | /unified-message-control@4.0.0: 1481 | resolution: {integrity: sha512-1b92N+VkPHftOsvXNOtkJm4wHlr+UDmTBF2dUzepn40oy9NxanJ9xS1RwUBTjXJwqr2K0kMbEyv1Krdsho7+Iw==} 1482 | dependencies: 1483 | '@types/unist': 2.0.7 1484 | unist-util-is: 5.2.1 1485 | unist-util-visit: 3.1.0 1486 | vfile: 5.3.7 1487 | vfile-location: 4.1.0 1488 | vfile-message: 3.1.4 1489 | dev: true 1490 | 1491 | /unified@10.1.2: 1492 | resolution: {integrity: sha512-pUSWAi/RAnVy1Pif2kAoeWNBa3JVrx0MId2LASj8G+7AiHWoKZNTomq6LG326T68U7/e263X6fTdcXIy7XnF7Q==} 1493 | dependencies: 1494 | '@types/unist': 2.0.7 1495 | bail: 2.0.2 1496 | extend: 3.0.2 1497 | is-buffer: 2.0.5 1498 | is-plain-obj: 4.1.0 1499 | trough: 2.1.0 1500 | vfile: 5.3.7 1501 | dev: true 1502 | 1503 | /unist-util-generated@2.0.1: 1504 | resolution: {integrity: sha512-qF72kLmPxAw0oN2fwpWIqbXAVyEqUzDHMsbtPvOudIlUzXYFIeQIuxXQCRCFh22B7cixvU0MG7m3MW8FTq/S+A==} 1505 | dev: true 1506 | 1507 | /unist-util-inspect@7.0.2: 1508 | resolution: {integrity: sha512-Op0XnmHUl6C2zo/yJCwhXQSm/SmW22eDZdWP2qdf4WpGrgO1ZxFodq+5zFyeRGasFjJotAnLgfuD1jkcKqiH1Q==} 1509 | dependencies: 1510 | '@types/unist': 2.0.7 1511 | dev: true 1512 | 1513 | /unist-util-is@5.2.1: 1514 | resolution: {integrity: sha512-u9njyyfEh43npf1M+yGKDGVPbY/JWEemg5nH05ncKPfi+kBbKBJoTdsogMu33uhytuLlv9y0O7GH7fEdwLdLQw==} 1515 | dependencies: 1516 | '@types/unist': 2.0.7 1517 | dev: true 1518 | 1519 | /unist-util-position@4.0.4: 1520 | resolution: {integrity: sha512-kUBE91efOWfIVBo8xzh/uZQ7p9ffYRtUbMRZBNFYwf0RK8koUMx6dGUfwylLOKmaT2cs4wSW96QoYUSXAyEtpg==} 1521 | dependencies: 1522 | '@types/unist': 2.0.7 1523 | dev: true 1524 | 1525 | /unist-util-stringify-position@3.0.3: 1526 | resolution: {integrity: sha512-k5GzIBZ/QatR8N5X2y+drfpWG8IDBzdnVj6OInRNWm1oXrzydiaAT2OQiA8DPRRZyAKb9b6I2a6PxYklZD0gKg==} 1527 | dependencies: 1528 | '@types/unist': 2.0.7 1529 | dev: true 1530 | 1531 | /unist-util-visit-parents@4.1.1: 1532 | resolution: {integrity: sha512-1xAFJXAKpnnJl8G7K5KgU7FY55y3GcLIXqkzUj5QF/QVP7biUm0K0O2oqVkYsdjzJKifYeWn9+o6piAK2hGSHw==} 1533 | dependencies: 1534 | '@types/unist': 2.0.7 1535 | unist-util-is: 5.2.1 1536 | dev: true 1537 | 1538 | /unist-util-visit-parents@5.1.3: 1539 | resolution: {integrity: sha512-x6+y8g7wWMyQhL1iZfhIPhDAs7Xwbn9nRosDXl7qoPTSCy0yNxnKc+hWokFifWQIDGi154rdUqKvbCa4+1kLhg==} 1540 | dependencies: 1541 | '@types/unist': 2.0.7 1542 | unist-util-is: 5.2.1 1543 | dev: true 1544 | 1545 | /unist-util-visit@3.1.0: 1546 | resolution: {integrity: sha512-Szoh+R/Ll68QWAyQyZZpQzZQm2UPbxibDvaY8Xc9SUtYgPsDzx5AWSk++UUt2hJuow8mvwR+rG+LQLw+KsuAKA==} 1547 | dependencies: 1548 | '@types/unist': 2.0.7 1549 | unist-util-is: 5.2.1 1550 | unist-util-visit-parents: 4.1.1 1551 | dev: true 1552 | 1553 | /unist-util-visit@4.1.2: 1554 | resolution: {integrity: sha512-MSd8OUGISqHdVvfY9TPhyK2VdUrPgxkUtWSuMHF6XAAFuL4LokseigBnZtPnJMu+FbynTkFNnFlyjxpVKujMRg==} 1555 | dependencies: 1556 | '@types/unist': 2.0.7 1557 | unist-util-is: 5.2.1 1558 | unist-util-visit-parents: 5.1.3 1559 | dev: true 1560 | 1561 | /util-deprecate@1.0.2: 1562 | resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} 1563 | dev: true 1564 | 1565 | /uvu@0.5.6: 1566 | resolution: {integrity: sha512-+g8ENReyr8YsOc6fv/NVJs2vFdHBnBNdfE49rshrTzDWOlUx4Gq7KOS2GD8eqhy2j+Ejq29+SbKH8yjkAqXqoA==} 1567 | engines: {node: '>=8'} 1568 | hasBin: true 1569 | dependencies: 1570 | dequal: 2.0.3 1571 | diff: 5.1.0 1572 | kleur: 4.1.5 1573 | sade: 1.8.1 1574 | dev: true 1575 | 1576 | /vfile-location@4.1.0: 1577 | resolution: {integrity: sha512-YF23YMyASIIJXpktBa4vIGLJ5Gs88UB/XePgqPmTa7cDA+JeO3yclbpheQYCHjVHBn/yePzrXuygIL+xbvRYHw==} 1578 | dependencies: 1579 | '@types/unist': 2.0.7 1580 | vfile: 5.3.7 1581 | dev: true 1582 | 1583 | /vfile-message@3.1.4: 1584 | resolution: {integrity: sha512-fa0Z6P8HUrQN4BZaX05SIVXic+7kE3b05PWAtPuYP9QLHsLKYR7/AlLW3NtOrpXRLeawpDLMsVkmk5DG0NXgWw==} 1585 | dependencies: 1586 | '@types/unist': 2.0.7 1587 | unist-util-stringify-position: 3.0.3 1588 | dev: true 1589 | 1590 | /vfile-reporter@7.0.5: 1591 | resolution: {integrity: sha512-NdWWXkv6gcd7AZMvDomlQbK3MqFWL1RlGzMn++/O2TI+68+nqxCPTvLugdOtfSzXmjh+xUyhp07HhlrbJjT+mw==} 1592 | dependencies: 1593 | '@types/supports-color': 8.1.1 1594 | string-width: 5.1.2 1595 | supports-color: 9.4.0 1596 | unist-util-stringify-position: 3.0.3 1597 | vfile: 5.3.7 1598 | vfile-message: 3.1.4 1599 | vfile-sort: 3.0.1 1600 | vfile-statistics: 2.0.1 1601 | dev: true 1602 | 1603 | /vfile-sort@3.0.1: 1604 | resolution: {integrity: sha512-1os1733XY6y0D5x0ugqSeaVJm9lYgj0j5qdcZQFyxlZOSy1jYarL77lLyb5gK4Wqr1d5OxmuyflSO3zKyFnTFw==} 1605 | dependencies: 1606 | vfile: 5.3.7 1607 | vfile-message: 3.1.4 1608 | dev: true 1609 | 1610 | /vfile-statistics@2.0.1: 1611 | resolution: {integrity: sha512-W6dkECZmP32EG/l+dp2jCLdYzmnDBIw6jwiLZSER81oR5AHRcVqL+k3Z+pfH1R73le6ayDkJRMk0sutj1bMVeg==} 1612 | dependencies: 1613 | vfile: 5.3.7 1614 | vfile-message: 3.1.4 1615 | dev: true 1616 | 1617 | /vfile@5.3.7: 1618 | resolution: {integrity: sha512-r7qlzkgErKjobAmyNIkkSpizsFPYiUPuJb5pNW1RB4JcYVZhs4lIbVqk8XPk033CV/1z8ss5pkax8SuhGpcG8g==} 1619 | dependencies: 1620 | '@types/unist': 2.0.7 1621 | is-buffer: 2.0.5 1622 | unist-util-stringify-position: 3.0.3 1623 | vfile-message: 3.1.4 1624 | dev: true 1625 | 1626 | /walk-up-path@3.0.1: 1627 | resolution: {integrity: sha512-9YlCL/ynK3CTlrSRrDxZvUauLzAswPCrsaCgilqFevUYpeEW0/3ScEjaa3kbW/T0ghhkEr7mv+fpjqn1Y1YuTA==} 1628 | dev: true 1629 | 1630 | /which@2.0.2: 1631 | resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} 1632 | engines: {node: '>= 8'} 1633 | hasBin: true 1634 | dependencies: 1635 | isexe: 2.0.0 1636 | dev: true 1637 | 1638 | /wrap-ansi@7.0.0: 1639 | resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} 1640 | engines: {node: '>=10'} 1641 | dependencies: 1642 | ansi-styles: 4.3.0 1643 | string-width: 4.2.3 1644 | strip-ansi: 6.0.1 1645 | dev: true 1646 | 1647 | /wrap-ansi@8.1.0: 1648 | resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} 1649 | engines: {node: '>=12'} 1650 | dependencies: 1651 | ansi-styles: 6.2.1 1652 | string-width: 5.1.2 1653 | strip-ansi: 7.1.0 1654 | dev: true 1655 | 1656 | /wrappy@1.0.2: 1657 | resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} 1658 | dev: true 1659 | 1660 | /yallist@4.0.0: 1661 | resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} 1662 | dev: true 1663 | 1664 | /yaml@2.3.1: 1665 | resolution: {integrity: sha512-2eHWfjaoXgTBC2jNM1LRef62VQa0umtvRiDSk6HSzW7RvS5YtkabJrwYLLEKWBc8a5U2PTSCs+dJjUTJdlHsWQ==} 1666 | engines: {node: '>= 14'} 1667 | dev: true 1668 | 1669 | /zwitch@2.0.4: 1670 | resolution: {integrity: sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==} 1671 | dev: true 1672 | -------------------------------------------------------------------------------- /renovate.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://docs.renovatebot.com/renovate-schema.json", 3 | "extends": [ 4 | "config:base" 5 | ] 6 | } 7 | --------------------------------------------------------------------------------