From bcf021a6ef8166f771fa23e6897cecabde8432e7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EB=A3=A8=EB=B0=80LuMir?= Date: Tue, 2 Jul 2024 23:26:30 +0900 Subject: [PATCH 01/16] chore: textlint basic environment settings MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit textlint 관련 기본 환경 설정 진행. textlintrc.js -> textlintrc: .eslintrc 및 .prettierrc와의 통일성을 위해, .js 확장자를 사용하지 않는 json 형식의 파일로 변경. package.json에 textlint 및 textlint-filter-rule-comments 추가. yarn.lock 파일은 package.json 파일에 따라 자동으로 변경됨. --- .textlintrc | 5 + .textlintrc.js | 6 - package.json | 2 + yarn.lock | 1177 +++++++++++++++++++++++++++++++++++++++++++++++- 4 files changed, 1175 insertions(+), 15 deletions(-) create mode 100644 .textlintrc delete mode 100644 .textlintrc.js diff --git a/.textlintrc b/.textlintrc new file mode 100644 index 000000000..474876784 --- /dev/null +++ b/.textlintrc @@ -0,0 +1,5 @@ +{ + "filters": { + "comments": true + } +} diff --git a/.textlintrc.js b/.textlintrc.js deleted file mode 100644 index 4daecbbe5..000000000 --- a/.textlintrc.js +++ /dev/null @@ -1,6 +0,0 @@ -module.exports = { - filters: { - comments: true, - }, - formatterName: 'stylish', -}; diff --git a/package.json b/package.json index 910ddcb28..654dfbc43 100644 --- a/package.json +++ b/package.json @@ -93,6 +93,8 @@ "retext-smartypants": "^4.0.0", "rss": "^1.2.2", "tailwindcss": "^3.4.1", + "textlint": "^14.0.4", + "textlint-filter-rule-comments": "^1.2.2", "typescript": "^4.0.2", "unist-util-visit": "^2.0.3", "webpack-bundle-analyzer": "^4.5.0" diff --git a/yarn.lock b/yarn.lock index b20c796ef..1fb5df7e8 100644 --- a/yarn.lock +++ b/yarn.lock @@ -138,6 +138,18 @@ "@jridgewell/gen-mapping" "^0.1.0" "@jridgewell/trace-mapping" "^0.3.9" +"@azu/format-text@^1.0.1", "@azu/format-text@^1.0.2": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@azu/format-text/-/format-text-1.0.2.tgz#abd46dab2422e312bd1bfe36f0d427ab6039825d" + integrity sha512-Swi4N7Edy1Eqq82GxgEECXSSLyn6GOb5htRFPzBDdUkECGXtlf12ynO5oJSpWKPwCaUssOu7NfhDcCWpIC6Ywg== + +"@azu/style-format@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@azu/style-format/-/style-format-1.0.1.tgz#b3643af0c5fee9d53e69a97c835c404bdc80f792" + integrity sha512-AHcTojlNBdD/3/KxIKlg8sxIWHfOtQszLvOpagLTO+bjC3u7SAszu1lf//u7JJC50aUSH+BVWDD/KvaA6Gfn5g== + dependencies: + "@azu/format-text" "^1.0.1" + "@babel/code-frame@7.12.11": version "7.12.11" resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.12.11.tgz#f4ad435aa263db935b8f10f2c552d23fb716a63f" @@ -934,6 +946,156 @@ dependencies: tslib "^2.4.0" +"@textlint/ast-node-types@^14.0.4": + version "14.0.4" + resolved "https://registry.yarnpkg.com/@textlint/ast-node-types/-/ast-node-types-14.0.4.tgz#261de119ce332eedd6a03845115412158b183ce1" + integrity sha512-O7L1pgle030Co9ou1+6e2/6GgcIpKgqwEc0XiBabokc22Yl0QEkrf00K/usBDmSx+wo1ficWBux2mfBEF0jnDA== + +"@textlint/ast-tester@^14.0.4": + version "14.0.4" + resolved "https://registry.yarnpkg.com/@textlint/ast-tester/-/ast-tester-14.0.4.tgz#c419f16bffbfdd4dfc7769adedba77252250fa3e" + integrity sha512-SQ/2DjxVlDVeCEjVlD8c8R2Sl3VGDZEx8o9+i8bV8NUdY8qsSHbo29/BfiUZf/uaX6eeNpZsurtstJ25hbVrsQ== + dependencies: + "@textlint/ast-node-types" "^14.0.4" + debug "^4.3.4" + +"@textlint/ast-traverse@^14.0.4": + version "14.0.4" + resolved "https://registry.yarnpkg.com/@textlint/ast-traverse/-/ast-traverse-14.0.4.tgz#63cc96cbf1f9c615f1b159e7ea3c0a9612bcec9a" + integrity sha512-bzFC7UJ2FvhjH5ekXGQ0i9vjK+xzMT69gHBsYVEl+TtbplnH2YY3+sbw6B1j3LocJuo6xngZ2YWXXqmQlKgzLg== + dependencies: + "@textlint/ast-node-types" "^14.0.4" + +"@textlint/config-loader@^14.0.4": + version "14.0.4" + resolved "https://registry.yarnpkg.com/@textlint/config-loader/-/config-loader-14.0.4.tgz#0a36f63a4a1f40a7668dde7ba3a622095f1662c6" + integrity sha512-qgAvZ1RcTq58+yNbzhaKHsb52yHRxt8SRpG7S4WFjYj2DEStjIxzssSQvlZtEBjSUQ7RZNJ93d+pL0YK8MIVoA== + dependencies: + "@textlint/kernel" "^14.0.4" + "@textlint/module-interop" "^14.0.4" + "@textlint/types" "^14.0.4" + "@textlint/utils" "^14.0.4" + debug "^4.3.4" + rc-config-loader "^4.1.3" + try-resolve "^1.0.1" + +"@textlint/feature-flag@^14.0.4": + version "14.0.4" + resolved "https://registry.yarnpkg.com/@textlint/feature-flag/-/feature-flag-14.0.4.tgz#b0c9662fbc9eb8e3bd602d9c5a3c328af9d96483" + integrity sha512-1FMZqnjOA4KVpt/aloI1fNs46P0rUeHWcCRKl33/08wRHHMdcbaN4EsHkq7UfriuSfFgUuiyeo0bPjCpv15hhQ== + +"@textlint/fixer-formatter@^14.0.4": + version "14.0.4" + resolved "https://registry.yarnpkg.com/@textlint/fixer-formatter/-/fixer-formatter-14.0.4.tgz#c68208c8420fe589904ec53d2496cceff9699e61" + integrity sha512-HkMxzGPo/pgA9UvddqJG6qm62ICNgil3AmBVp0QpOv5uTV1u9gCSQ5jOdb/aOJBw7W8fd+CcnEsEBYn9HT8e6A== + dependencies: + "@textlint/module-interop" "^14.0.4" + "@textlint/types" "^14.0.4" + chalk "^4.1.2" + debug "^4.3.4" + diff "^5.2.0" + string-width "^4.2.3" + strip-ansi "^6.0.1" + text-table "^0.2.0" + try-resolve "^1.0.1" + +"@textlint/kernel@^14.0.4": + version "14.0.4" + resolved "https://registry.yarnpkg.com/@textlint/kernel/-/kernel-14.0.4.tgz#892a9acb735891e3ff3cb704493a8f32747f6e94" + integrity sha512-6WNoEBZ4lYTYOGK4EEEdjp+kgxSSC1nIFwN6tY9XGVkd4OACzDNothVTvJBwaX73FWFG5zoSjnNQxBDPUHMc8g== + dependencies: + "@textlint/ast-node-types" "^14.0.4" + "@textlint/ast-tester" "^14.0.4" + "@textlint/ast-traverse" "^14.0.4" + "@textlint/feature-flag" "^14.0.4" + "@textlint/source-code-fixer" "^14.0.4" + "@textlint/types" "^14.0.4" + "@textlint/utils" "^14.0.4" + debug "^4.3.4" + fast-equals "^4.0.3" + structured-source "^4.0.0" + +"@textlint/linter-formatter@^14.0.4": + version "14.0.4" + resolved "https://registry.yarnpkg.com/@textlint/linter-formatter/-/linter-formatter-14.0.4.tgz#66c4ad349d9dc6cc26e145a69bf000158633cf9b" + integrity sha512-EQZJPydExEIvBARkdmkoGsKWie1ekNAiqerQgIqwPb3SqOzKnlaDGrZOMy40HufTcacZrrvlbByDyai6m30+Lw== + dependencies: + "@azu/format-text" "^1.0.2" + "@azu/style-format" "^1.0.1" + "@textlint/module-interop" "^14.0.4" + "@textlint/types" "^14.0.4" + chalk "^4.1.2" + debug "^4.3.4" + js-yaml "^3.14.1" + lodash "^4.17.21" + pluralize "^2.0.0" + string-width "^4.2.3" + strip-ansi "^6.0.1" + table "^6.8.1" + text-table "^0.2.0" + try-resolve "^1.0.1" + +"@textlint/markdown-to-ast@^14.0.4": + version "14.0.4" + resolved "https://registry.yarnpkg.com/@textlint/markdown-to-ast/-/markdown-to-ast-14.0.4.tgz#341521a6fa64174527b0fd1025ff5aaaf768fb00" + integrity sha512-D9UUxnRJoNROVjOa9bhoQPDdRvlvS/xP3MJo0Kl6b/mJFi0dOlW31WUfpOFjZkp4uXkL+oo0ji7AMnmV6JORsQ== + dependencies: + "@textlint/ast-node-types" "^14.0.4" + debug "^4.3.4" + mdast-util-gfm-autolink-literal "^0.1.3" + remark-footnotes "^3.0.0" + remark-frontmatter "^3.0.0" + remark-gfm "^1.0.0" + remark-parse "^9.0.0" + traverse "^0.6.8" + unified "^9.2.2" + +"@textlint/module-interop@^14.0.4": + version "14.0.4" + resolved "https://registry.yarnpkg.com/@textlint/module-interop/-/module-interop-14.0.4.tgz#3dafee16c4117b184050b3ac5e02674ee26bd708" + integrity sha512-okv52pRSQ1aeC8rim8qp2D2Fmj/oKDYGY2itdeZhj9E/vdkU9/r7OpdcxyuNiuqLEd/sWw03EAwt3S6mlfNIOw== + +"@textlint/source-code-fixer@^14.0.4": + version "14.0.4" + resolved "https://registry.yarnpkg.com/@textlint/source-code-fixer/-/source-code-fixer-14.0.4.tgz#135375fc1d7cdbe8f0de9a3e4682ba72d9f0f3eb" + integrity sha512-gIUeWjF0WdSwgCUhW310hKJsWOyRyFe6PGaqqCk7Mhc+vVcePfmC8mmmhVgeuyys/Dhe+0iaP4M1eJf4COaIQw== + dependencies: + "@textlint/types" "^14.0.4" + debug "^4.3.4" + +"@textlint/text-to-ast@^14.0.4": + version "14.0.4" + resolved "https://registry.yarnpkg.com/@textlint/text-to-ast/-/text-to-ast-14.0.4.tgz#289d5b6be820cbfab90a12fe9b1a22b074e8a947" + integrity sha512-r2KSnKzhsCIvX72yX+7sEuu9nDQIS4+xRsSffuXYB0etRQUI6VTTsE6Ibd6yMbEsMDUF4BfKWzNGn+bQ8U7oHA== + dependencies: + "@textlint/ast-node-types" "^14.0.4" + +"@textlint/textlint-plugin-markdown@^14.0.4": + version "14.0.4" + resolved "https://registry.yarnpkg.com/@textlint/textlint-plugin-markdown/-/textlint-plugin-markdown-14.0.4.tgz#9a2da78d9b4e4c15918f97cde0ee1948881d4272" + integrity sha512-mqQieI9U5GTRTjkK4Cj57Axl6fVloaA8g0+sCsp3TjmNWyEgGBvt3aw+FIUiFTvheg9L3RGe/aXgvp5ORADOAA== + dependencies: + "@textlint/markdown-to-ast" "^14.0.4" + +"@textlint/textlint-plugin-text@^14.0.4": + version "14.0.4" + resolved "https://registry.yarnpkg.com/@textlint/textlint-plugin-text/-/textlint-plugin-text-14.0.4.tgz#7d8b007613c57a3bd9d74224060c6a7433416894" + integrity sha512-HwTQyOcwDRrPPHyD8lwSMyGR1ETasR2WK6BLO0PRbowRe6K/K4b9OBBd6+nJcRFa+9Nd6p7nxPzA2WxDi1X/Zg== + dependencies: + "@textlint/text-to-ast" "^14.0.4" + +"@textlint/types@^14.0.4": + version "14.0.4" + resolved "https://registry.yarnpkg.com/@textlint/types/-/types-14.0.4.tgz#0c163398a69bb53d0fc98f9717c8fe643b5c9cd7" + integrity sha512-SNdFG/GB6utYeHmNfoAMlI+K1NykPxK9TtilkEfhr/fF9TqmeeJ+6CMk5NLQzEvfKm6jUbv2pp5DPS27vo6GKg== + dependencies: + "@textlint/ast-node-types" "^14.0.4" + +"@textlint/utils@^14.0.4": + version "14.0.4" + resolved "https://registry.yarnpkg.com/@textlint/utils/-/utils-14.0.4.tgz#70224fa1ee6f616a8697e625311092a32d527c4f" + integrity sha512-/ThtVZCB/vB2e8+MnKquCFNO2cKXCPEGxFlkdvJ5g9q9ODpVyFcf2ogYoIlvR7cNotvq67zVjENS7dsGDNFEmw== + "@types/acorn@^4.0.0": version "4.0.6" resolved "https://registry.yarnpkg.com/@types/acorn/-/acorn-4.0.6.tgz#d61ca5480300ac41a7d973dd5b84d0a591154a22" @@ -1365,6 +1527,11 @@ argparse@^1.0.7: dependencies: sprintf-js "~1.0.2" +argparse@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" + integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== + aria-query@^4.2.2: version "4.2.2" resolved "https://registry.yarnpkg.com/aria-query/-/aria-query-4.2.2.tgz#0d2ca6c9aceb56b8977e9fed6aed7e15bbd2f83b" @@ -1373,6 +1540,14 @@ aria-query@^4.2.2: "@babel/runtime" "^7.10.2" "@babel/runtime-corejs3" "^7.10.2" +array-buffer-byte-length@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/array-buffer-byte-length/-/array-buffer-byte-length-1.0.1.tgz#1e5583ec16763540a27ae52eed99ff899223568f" + integrity sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg== + dependencies: + call-bind "^1.0.5" + is-array-buffer "^3.0.4" + array-flatten@1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2" @@ -1417,6 +1592,20 @@ array.prototype.flatmap@^1.2.5: define-properties "^1.1.3" es-abstract "^1.19.0" +arraybuffer.prototype.slice@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.3.tgz#097972f4255e41bc3425e37dc3f6421cf9aefde6" + integrity sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A== + dependencies: + array-buffer-byte-length "^1.0.1" + call-bind "^1.0.5" + define-properties "^1.2.1" + es-abstract "^1.22.3" + es-errors "^1.2.1" + get-intrinsic "^1.2.3" + is-array-buffer "^3.0.4" + is-shared-array-buffer "^1.0.2" + ast-types-flow@^0.0.7: version "0.0.7" resolved "https://registry.yarnpkg.com/ast-types-flow/-/ast-types-flow-0.0.7.tgz#f70b735c6bca1a5c9c22d982c3e39e7feba3bdad" @@ -1467,6 +1656,13 @@ autoprefixer@^9.6.1: postcss "^7.0.32" postcss-value-parser "^4.1.0" +available-typed-arrays@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz#a5cc375d6a03c2efc87a553f3e0b1522def14846" + integrity sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ== + dependencies: + possible-typed-array-names "^1.0.0" + axe-core@^4.3.5: version "4.3.5" resolved "https://registry.yarnpkg.com/axe-core/-/axe-core-4.3.5.tgz#78d6911ba317a8262bfee292aeafcc1e04b49cc5" @@ -1544,6 +1740,11 @@ body-scroll-lock@^3.1.3: resolved "https://registry.yarnpkg.com/body-scroll-lock/-/body-scroll-lock-3.1.5.tgz#c1392d9217ed2c3e237fee1e910f6cdd80b7aaec" integrity sha512-Yi1Xaml0EvNA0OYWxXiYNqY24AfWkbA6w5vxE7GWxtKfzIbZM+Qw+aSmkgsbWzbHiy/RCSkUZBplVxTA+E4jJg== +boundary@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/boundary/-/boundary-2.0.0.tgz#169c8b1f0d44cf2c25938967a328f37e0a4e5efc" + integrity sha512-rJKn5ooC9u8q13IMCrW0RSp31pxBCHE3y9V/tp3TdWSLf8Em3p6Di4NBpfzbJge9YjjFEsD0RtFEjtvHL5VyEA== + brace-expansion@^1.1.7: version "1.1.11" resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" @@ -1608,6 +1809,17 @@ call-bind@^1.0.0, call-bind@^1.0.2: function-bind "^1.1.1" get-intrinsic "^1.0.2" +call-bind@^1.0.5, call-bind@^1.0.6, call-bind@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.7.tgz#06016599c40c56498c18769d2730be242b6fa3b9" + integrity sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w== + dependencies: + es-define-property "^1.0.0" + es-errors "^1.3.0" + function-bind "^1.1.2" + get-intrinsic "^1.2.4" + set-function-length "^1.2.1" + callsites@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" @@ -1652,7 +1864,7 @@ chalk@^2.0.0, chalk@^2.4.1, chalk@^2.4.2: escape-string-regexp "^1.0.5" supports-color "^5.3.0" -chalk@^4.0.0, chalk@^4.1.0: +chalk@^4.0.0, chalk@^4.1.0, chalk@^4.1.2: version "4.1.2" resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== @@ -1700,6 +1912,11 @@ character-reference-invalid@^2.0.0: resolved "https://registry.yarnpkg.com/character-reference-invalid/-/character-reference-invalid-2.0.1.tgz#85c66b041e43b47210faf401278abf808ac45cb9" integrity sha512-iBZ4F4wRbyORVsu0jPV7gXkOsGYjGHPmAyv+HiHG8gi5PtC9KI2j1+v8/tlibRvjoWX027ypmG/n0HtO5t7unw== +charenc@0.0.2: + version "0.0.2" + resolved "https://registry.yarnpkg.com/charenc/-/charenc-0.0.2.tgz#c0a1d2f3a7092e03774bfa83f14c0fc5790a8667" + integrity sha512-yrLQ/yVUFXkzg7EDQsPieE/53+0RlaWTs+wBrvW36cyilJ2SaDWfl4Yj7MtLTXleV9uEKefbAGUPv2/iWSooRA== + chokidar@^3.4.0, chokidar@^3.5.3: version "3.5.3" resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.3.tgz#1cf37c8707b932bd1af1ae22c0432e2acd1903bd" @@ -1901,6 +2118,11 @@ cross-spawn@^7.0.2, cross-spawn@^7.0.3: shebang-command "^2.0.0" which "^2.0.1" +crypt@0.0.2: + version "0.0.2" + resolved "https://registry.yarnpkg.com/crypt/-/crypt-0.0.2.tgz#88d7ff7ec0dfb86f713dc87bbb42d044d3e6c41b" + integrity sha512-mCxBlsHFYh9C+HVpiEacem8FEBnMXgU9gy4zmNC+SXAZNB/1idgp/aulFJ4FgCi7GPEVbfyng092GqL2k2rmow== + css-blank-pseudo@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/css-blank-pseudo/-/css-blank-pseudo-0.1.4.tgz#dfdefd3254bf8a82027993674ccf35483bfcb3c5" @@ -1956,6 +2178,33 @@ damerau-levenshtein@^1.0.7: resolved "https://registry.yarnpkg.com/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz#b43d286ccbd36bc5b2f7ed41caf2d0aba1f8a6e7" integrity sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA== +data-view-buffer@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/data-view-buffer/-/data-view-buffer-1.0.1.tgz#8ea6326efec17a2e42620696e671d7d5a8bc66b2" + integrity sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA== + dependencies: + call-bind "^1.0.6" + es-errors "^1.3.0" + is-data-view "^1.0.1" + +data-view-byte-length@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/data-view-byte-length/-/data-view-byte-length-1.0.1.tgz#90721ca95ff280677eb793749fce1011347669e2" + integrity sha512-4J7wRJD3ABAzr8wP+OcIcqq2dlUKp4DVflx++hs5h5ZKydWMI6/D/fAot+yh6g2tHh8fLFTvNOaVN357NvSrOQ== + dependencies: + call-bind "^1.0.7" + es-errors "^1.3.0" + is-data-view "^1.0.1" + +data-view-byte-offset@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/data-view-byte-offset/-/data-view-byte-offset-1.0.0.tgz#5e0bbfb4828ed2d1b9b400cd8a7d119bca0ff18a" + integrity sha512-t/Ygsytq+R995EJ5PZlD4Cu56sWa8InXySaViRzw9apusqsOO2bQP+SbYzAhR0pFKoB+43lYy8rWban9JSuXnA== + dependencies: + call-bind "^1.0.6" + es-errors "^1.3.0" + is-data-view "^1.0.1" + date-fns@^2.16.1: version "2.28.0" resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-2.28.0.tgz#9570d656f5fc13143e50c975a3b6bbeb46cd08b2" @@ -2006,6 +2255,15 @@ deep-is@^0.1.3: resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.4.tgz#a6f2dce612fadd2ef1f519b73551f17e85199831" integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ== +define-data-property@^1.0.1, define-data-property@^1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/define-data-property/-/define-data-property-1.1.4.tgz#894dc141bb7d3060ae4366f6a0107e68fbe48c5e" + integrity sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A== + dependencies: + es-define-property "^1.0.0" + es-errors "^1.3.0" + gopd "^1.0.1" + define-properties@^1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1" @@ -2021,6 +2279,15 @@ define-properties@^1.1.4: has-property-descriptors "^1.0.0" object-keys "^1.1.1" +define-properties@^1.2.0, define-properties@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.2.1.tgz#10781cc616eb951a80a034bafcaa7377f6af2b6c" + integrity sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg== + dependencies: + define-data-property "^1.0.1" + has-property-descriptors "^1.0.0" + object-keys "^1.1.1" + depd@2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/depd/-/depd-2.0.0.tgz#b696163cc757560d09cf22cc8fad1571b79e76df" @@ -2046,6 +2313,11 @@ diff@^5.0.0: resolved "https://registry.yarnpkg.com/diff/-/diff-5.1.0.tgz#bc52d298c5ea8df9194800224445ed43ffc87e40" integrity sha512-D+mk+qE8VC/PAUrlAU34N+VfXev0ghe5ywmpqrawphmVZc1bEfn56uo9qpyGp1p4xpzOHkSW4ztBd6L7Xx4ACw== +diff@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/diff/-/diff-5.2.0.tgz#26ded047cd1179b78b9537d5ef725503ce1ae531" + integrity sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A== + dir-glob@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f" @@ -2124,7 +2396,7 @@ enquirer@^2.3.5: dependencies: ansi-colors "^4.1.1" -error-ex@^1.3.1: +error-ex@^1.2.0, error-ex@^1.3.1: version "1.3.2" resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== @@ -2157,6 +2429,86 @@ es-abstract@^1.19.0, es-abstract@^1.19.1: string.prototype.trimstart "^1.0.4" unbox-primitive "^1.0.1" +es-abstract@^1.22.1, es-abstract@^1.22.3, es-abstract@^1.23.0: + version "1.23.3" + resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.23.3.tgz#8f0c5a35cd215312573c5a27c87dfd6c881a0aa0" + integrity sha512-e+HfNH61Bj1X9/jLc5v1owaLYuHdeHHSQlkhCBiTK8rBvKaULl/beGMxwrMXjpYrv4pz22BlY570vVePA2ho4A== + dependencies: + array-buffer-byte-length "^1.0.1" + arraybuffer.prototype.slice "^1.0.3" + available-typed-arrays "^1.0.7" + call-bind "^1.0.7" + data-view-buffer "^1.0.1" + data-view-byte-length "^1.0.1" + data-view-byte-offset "^1.0.0" + es-define-property "^1.0.0" + es-errors "^1.3.0" + es-object-atoms "^1.0.0" + es-set-tostringtag "^2.0.3" + es-to-primitive "^1.2.1" + function.prototype.name "^1.1.6" + get-intrinsic "^1.2.4" + get-symbol-description "^1.0.2" + globalthis "^1.0.3" + gopd "^1.0.1" + has-property-descriptors "^1.0.2" + has-proto "^1.0.3" + has-symbols "^1.0.3" + hasown "^2.0.2" + internal-slot "^1.0.7" + is-array-buffer "^3.0.4" + is-callable "^1.2.7" + is-data-view "^1.0.1" + is-negative-zero "^2.0.3" + is-regex "^1.1.4" + is-shared-array-buffer "^1.0.3" + is-string "^1.0.7" + is-typed-array "^1.1.13" + is-weakref "^1.0.2" + object-inspect "^1.13.1" + object-keys "^1.1.1" + object.assign "^4.1.5" + regexp.prototype.flags "^1.5.2" + safe-array-concat "^1.1.2" + safe-regex-test "^1.0.3" + string.prototype.trim "^1.2.9" + string.prototype.trimend "^1.0.8" + string.prototype.trimstart "^1.0.8" + typed-array-buffer "^1.0.2" + typed-array-byte-length "^1.0.1" + typed-array-byte-offset "^1.0.2" + typed-array-length "^1.0.6" + unbox-primitive "^1.0.2" + which-typed-array "^1.1.15" + +es-define-property@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/es-define-property/-/es-define-property-1.0.0.tgz#c7faefbdff8b2696cf5f46921edfb77cc4ba3845" + integrity sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ== + dependencies: + get-intrinsic "^1.2.4" + +es-errors@^1.2.1, es-errors@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/es-errors/-/es-errors-1.3.0.tgz#05f75a25dab98e4fb1dcd5e1472c0546d5057c8f" + integrity sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw== + +es-object-atoms@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/es-object-atoms/-/es-object-atoms-1.0.0.tgz#ddb55cd47ac2e240701260bc2a8e31ecb643d941" + integrity sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw== + dependencies: + es-errors "^1.3.0" + +es-set-tostringtag@^2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/es-set-tostringtag/-/es-set-tostringtag-2.0.3.tgz#8bb60f0a440c2e4281962428438d58545af39777" + integrity sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ== + dependencies: + get-intrinsic "^1.2.4" + has-tostringtag "^1.0.2" + hasown "^2.0.1" + es-to-primitive@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a" @@ -2595,6 +2947,11 @@ fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== +fast-equals@^4.0.3: + version "4.0.3" + resolved "https://registry.yarnpkg.com/fast-equals/-/fast-equals-4.0.3.tgz#72884cc805ec3c6679b99875f6b7654f39f0e8c7" + integrity sha512-G3BSX9cfKttjr+2o1O22tYMLq0DPluZnYtq1rXumE1SpL/F/SLIfHx08WYQoWSIpeMYf8sRbJ8++71+v6Pnxfg== + fast-glob@^3.2.9: version "3.2.11" resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.11.tgz#a1172ad95ceb8a16e20caa5c5e56480e5129c1d9" @@ -2634,6 +2991,13 @@ fastq@^1.6.0: dependencies: reusify "^1.0.4" +fault@^1.0.0: + version "1.0.4" + resolved "https://registry.yarnpkg.com/fault/-/fault-1.0.4.tgz#eafcfc0a6d214fc94601e170df29954a4f842f13" + integrity sha512-CJ0HCB5tL5fYTEA7ToAq5+kTwd++Borf1/bifxd9iT70QcXr4MRrO3Llf8Ifs70q+SJcGHFtnIE/Nw6giCtECA== + dependencies: + format "^0.2.0" + fault@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/fault/-/fault-2.0.1.tgz#d47ca9f37ca26e4bd38374a7c500b5a384755b6c" @@ -2641,6 +3005,13 @@ fault@^2.0.0: dependencies: format "^0.2.0" +file-entry-cache@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-5.0.1.tgz#ca0f6efa6dd3d561333fb14515065c2fafdf439c" + integrity sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g== + dependencies: + flat-cache "^2.0.1" + file-entry-cache@^6.0.1: version "6.0.1" resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-6.0.1.tgz#211b2dd9659cb0394b073e7323ac3c933d522027" @@ -2668,7 +3039,7 @@ finalhandler@1.2.0: statuses "2.0.1" unpipe "~1.0.0" -find-up@^2.1.0: +find-up@^2.0.0, find-up@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7" integrity sha1-RdG35QbHF93UgndaK3eSCjwMV6c= @@ -2682,6 +3053,15 @@ find-yarn-workspace-root@^2.0.0: dependencies: micromatch "^4.0.2" +flat-cache@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-2.0.1.tgz#5d296d6f04bda44a4630a301413bdbc2ec085ec0" + integrity sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA== + dependencies: + flatted "^2.0.0" + rimraf "2.6.3" + write "1.0.3" + flat-cache@^3.0.4: version "3.0.4" resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.0.4.tgz#61b0338302b2fe9f957dcc32fc2a87f1c3048b11" @@ -2690,6 +3070,11 @@ flat-cache@^3.0.4: flatted "^3.1.0" rimraf "^3.0.2" +flatted@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/flatted/-/flatted-2.0.2.tgz#4575b21e2bcee7434aa9be662f4b7b5f9c2b5138" + integrity sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA== + flatted@^3.1.0: version "3.2.4" resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.2.4.tgz#28d9969ea90661b5134259f312ab6aa7929ac5e2" @@ -2700,6 +3085,13 @@ flatten@^1.0.2: resolved "https://registry.yarnpkg.com/flatten/-/flatten-1.0.3.tgz#c1283ac9f27b368abc1e36d1ff7b04501a30356b" integrity sha512-dVsPA/UwQ8+2uoFe5GHtiBMu48dWLTdsuEd7CKGlZlD78r1TTWBvDuFaFGKCo/ZfEr95Uk56vZoX86OsHkUeIg== +for-each@^0.3.3: + version "0.3.3" + resolved "https://registry.yarnpkg.com/for-each/-/for-each-0.3.3.tgz#69b447e88a0a5d32c3e7084f3f1710034b21376e" + integrity sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw== + dependencies: + is-callable "^1.1.3" + format@^0.2.0: version "0.2.2" resolved "https://registry.yarnpkg.com/format/-/format-0.2.2.tgz#d6170107e9efdc4ed30c9dc39016df942b5cb58b" @@ -2754,11 +3146,31 @@ function-bind@^1.1.1: resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== +function-bind@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.2.tgz#2c02d864d97f3ea6c8830c464cbd11ab6eab7a1c" + integrity sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA== + +function.prototype.name@^1.1.6: + version "1.1.6" + resolved "https://registry.yarnpkg.com/function.prototype.name/-/function.prototype.name-1.1.6.tgz#cdf315b7d90ee77a4c6ee216c3c3362da07533fd" + integrity sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg== + dependencies: + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + functions-have-names "^1.2.3" + functional-red-black-tree@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" integrity sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc= +functions-have-names@^1.2.3: + version "1.2.3" + resolved "https://registry.yarnpkg.com/functions-have-names/-/functions-have-names-1.2.3.tgz#0404fe4ee2ba2f607f0e0ec3c80bae994133b834" + integrity sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ== + gensync@^1.0.0-beta.2: version "1.0.0-beta.2" resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0" @@ -2773,6 +3185,22 @@ get-intrinsic@^1.0.2, get-intrinsic@^1.1.0, get-intrinsic@^1.1.1: has "^1.0.3" has-symbols "^1.0.1" +get-intrinsic@^1.1.3, get-intrinsic@^1.2.1, get-intrinsic@^1.2.3, get-intrinsic@^1.2.4: + version "1.2.4" + resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.2.4.tgz#e385f5a4b5227d449c3eabbad05494ef0abbeadd" + integrity sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ== + dependencies: + es-errors "^1.3.0" + function-bind "^1.1.2" + has-proto "^1.0.1" + has-symbols "^1.0.3" + hasown "^2.0.0" + +get-stdin@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-5.0.1.tgz#122e161591e21ff4c52530305693f20e6393a398" + integrity sha512-jZV7n6jGE3Gt7fgSTJoz91Ak5MuTLwMwkoYdjxuJ/AmjIsE1UC03y/IWkZCQGEvVNS9qoRNwy5BCqxImv0FVeA== + get-stream@^6.0.0: version "6.0.1" resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-6.0.1.tgz#a262d8eef67aced57c2852ad6167526a43cbf7b7" @@ -2786,6 +3214,15 @@ get-symbol-description@^1.0.0: call-bind "^1.0.2" get-intrinsic "^1.1.1" +get-symbol-description@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/get-symbol-description/-/get-symbol-description-1.0.2.tgz#533744d5aa20aca4e079c8e5daf7fd44202821f5" + integrity sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg== + dependencies: + call-bind "^1.0.5" + es-errors "^1.3.0" + get-intrinsic "^1.2.4" + github-slugger@^1.0.0, github-slugger@^1.3.0: version "1.4.0" resolved "https://registry.yarnpkg.com/github-slugger/-/github-slugger-1.4.0.tgz#206eb96cdb22ee56fdc53a28d5a302338463444e" @@ -2841,6 +3278,18 @@ glob@^7.1.3, glob@^7.1.7: once "^1.3.0" path-is-absolute "^1.0.0" +glob@^7.2.3: + version "7.2.3" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b" + integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.1.1" + once "^1.3.0" + path-is-absolute "^1.0.0" + globals@^11.1.0: version "11.12.0" resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" @@ -2853,6 +3302,14 @@ globals@^13.6.0, globals@^13.9.0: dependencies: type-fest "^0.20.2" +globalthis@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/globalthis/-/globalthis-1.0.4.tgz#7430ed3a975d97bfb59bcce41f5cabbafa651236" + integrity sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ== + dependencies: + define-properties "^1.2.1" + gopd "^1.0.1" + globby@^11.0.1, globby@^11.0.3, globby@^11.1.0: version "11.1.0" resolved "https://registry.yarnpkg.com/globby/-/globby-11.1.0.tgz#bd4be98bb042f83d796f7e3811991fbe82a0d34b" @@ -2865,6 +3322,13 @@ globby@^11.0.1, globby@^11.0.3, globby@^11.1.0: merge2 "^1.4.1" slash "^3.0.0" +gopd@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/gopd/-/gopd-1.0.1.tgz#29ff76de69dac7489b7c0918a5788e56477c332c" + integrity sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA== + dependencies: + get-intrinsic "^1.1.3" + graceful-fs@^4.1.11, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0: version "4.2.9" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.9.tgz#041b05df45755e587a24942279b9d113146e1c96" @@ -2892,6 +3356,11 @@ has-bigints@^1.0.1: resolved "https://registry.yarnpkg.com/has-bigints/-/has-bigints-1.0.1.tgz#64fe6acb020673e3b78db035a5af69aa9d07b113" integrity sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA== +has-bigints@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/has-bigints/-/has-bigints-1.0.2.tgz#0871bd3e3d51626f6ca0966668ba35d5602d6eaa" + integrity sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ== + has-flag@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" @@ -2909,6 +3378,18 @@ has-property-descriptors@^1.0.0: dependencies: get-intrinsic "^1.1.1" +has-property-descriptors@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz#963ed7d071dc7bf5f084c5bfbe0d1b6222586854" + integrity sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg== + dependencies: + es-define-property "^1.0.0" + +has-proto@^1.0.1, has-proto@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/has-proto/-/has-proto-1.0.3.tgz#b31ddfe9b0e6e9914536a6ab286426d0214f77fd" + integrity sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q== + has-symbols@^1.0.1, has-symbols@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.2.tgz#165d3070c00309752a1236a479331e3ac56f1423" @@ -2926,6 +3407,13 @@ has-tostringtag@^1.0.0: dependencies: has-symbols "^1.0.2" +has-tostringtag@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/has-tostringtag/-/has-tostringtag-1.0.2.tgz#2cdc42d40bef2e5b4eeab7c01a73c54ce7ab5abc" + integrity sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw== + dependencies: + has-symbols "^1.0.3" + has@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" @@ -2933,6 +3421,13 @@ has@^1.0.3: dependencies: function-bind "^1.1.1" +hasown@^2.0.0, hasown@^2.0.1, hasown@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/hasown/-/hasown-2.0.2.tgz#003eaf91be7adc372e84ec59dc37252cedb80003" + integrity sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ== + dependencies: + function-bind "^1.1.2" + hast-util-is-element@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/hast-util-is-element/-/hast-util-is-element-1.1.0.tgz#3b3ed5159a2707c6137b48637fbfe068e175a425" @@ -3095,6 +3590,15 @@ internal-slot@^1.0.3: has "^1.0.3" side-channel "^1.0.4" +internal-slot@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/internal-slot/-/internal-slot-1.0.7.tgz#c06dcca3ed874249881007b0a5523b172a190802" + integrity sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g== + dependencies: + es-errors "^1.3.0" + hasown "^2.0.0" + side-channel "^1.0.4" + intersection-observer@^0.10.0: version "0.10.0" resolved "https://registry.yarnpkg.com/intersection-observer/-/intersection-observer-0.10.0.tgz#4d11d63c1ff67e21e62987be24d55218da1a1a69" @@ -3141,6 +3645,14 @@ is-alphanumerical@^2.0.0: is-alphabetical "^2.0.0" is-decimal "^2.0.0" +is-array-buffer@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/is-array-buffer/-/is-array-buffer-3.0.4.tgz#7a1f92b3d61edd2bc65d24f130530ea93d7fae98" + integrity sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw== + dependencies: + call-bind "^1.0.2" + get-intrinsic "^1.2.1" + is-arrayish@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" @@ -3173,6 +3685,16 @@ is-buffer@^2.0.0: resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-2.0.5.tgz#ebc252e400d22ff8d77fa09888821a24a658c191" integrity sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ== +is-buffer@~1.1.6: + version "1.1.6" + resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" + integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== + +is-callable@^1.1.3, is-callable@^1.2.7: + version "1.2.7" + resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.7.tgz#3bc2a85ea742d9e36205dcacdd72ca1fdc51b055" + integrity sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA== + is-callable@^1.1.4, is-callable@^1.2.4: version "1.2.4" resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.4.tgz#47301d58dd0259407865547853df6d61fe471945" @@ -3206,6 +3728,13 @@ is-core-module@^2.2.0, is-core-module@^2.8.0, is-core-module@^2.8.1: dependencies: has "^1.0.3" +is-data-view@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-data-view/-/is-data-view-1.0.1.tgz#4b4d3a511b70f3dc26d42c03ca9ca515d847759f" + integrity sha512-AHkaJrsUVW6wq6JS8y3JnM/GJF/9cf+k20+iDzlSaJrinEo5+7vRiteOSwBhHRiAyQATN1AmY4hwzxJKPmYf+w== + dependencies: + is-typed-array "^1.1.13" + is-date-object@^1.0.1: version "1.0.5" resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.5.tgz#0841d5536e724c25597bf6ea62e1bd38298df31f" @@ -3270,6 +3799,11 @@ is-negative-zero@^2.0.1: resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.2.tgz#7bf6f03a28003b8b3965de3ac26f664d765f3150" integrity sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA== +is-negative-zero@^2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.3.tgz#ced903a027aca6381b777a5743069d7376a49747" + integrity sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw== + is-number-object@^1.0.4: version "1.0.6" resolved "https://registry.yarnpkg.com/is-number-object/-/is-number-object-1.0.6.tgz#6a7aaf838c7f0686a50b4553f7e54a96494e89f0" @@ -3312,6 +3846,13 @@ is-shared-array-buffer@^1.0.1: resolved "https://registry.yarnpkg.com/is-shared-array-buffer/-/is-shared-array-buffer-1.0.1.tgz#97b0c85fbdacb59c9c446fe653b82cf2b5b7cfe6" integrity sha512-IU0NmyknYZN0rChcKhRO1X8LYz5Isj/Fsqh8NJOSf+N/hCOTwy29F32Ik7a+QszE63IdvmwdTPDd6cZ5pg4cwA== +is-shared-array-buffer@^1.0.2, is-shared-array-buffer@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/is-shared-array-buffer/-/is-shared-array-buffer-1.0.3.tgz#1237f1cba059cdb62431d378dcc37d9680181688" + integrity sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg== + dependencies: + call-bind "^1.0.7" + is-stream@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.1.tgz#fac1e3d53b97ad5a9d0ae9cef2389f5810a5c077" @@ -3331,12 +3872,24 @@ is-symbol@^1.0.2, is-symbol@^1.0.3: dependencies: has-symbols "^1.0.2" +is-typed-array@^1.1.13: + version "1.1.13" + resolved "https://registry.yarnpkg.com/is-typed-array/-/is-typed-array-1.1.13.tgz#d6c5ca56df62334959322d7d7dd1cca50debe229" + integrity sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw== + dependencies: + which-typed-array "^1.1.14" + is-url@^1.2.2: version "1.2.4" resolved "https://registry.yarnpkg.com/is-url/-/is-url-1.2.4.tgz#04a4df46d28c4cff3d73d01ff06abeb318a1aa52" integrity sha512-ITvGim8FhRiYe4IQ5uHSkj7pVaPDrCTkNd3yq3cV7iZAcJdHTUMPMEHcqSOy9xZ9qFenQCvi+2wjH9a1nXqHww== -is-weakref@^1.0.1: +is-utf8@^0.2.0: + version "0.2.1" + resolved "https://registry.yarnpkg.com/is-utf8/-/is-utf8-0.2.1.tgz#4b0da1442104d1b336340e80797e865cf39f7d72" + integrity sha512-rMYPYvCzsXywIsldgLaSoPlw5PfoB/ssr7hY4pLfcodrA5M/eArza1a9VmTiNIBNMjOGr1Ow9mTyU2o69U6U9Q== + +is-weakref@^1.0.1, is-weakref@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/is-weakref/-/is-weakref-1.0.2.tgz#9529f383a9338205e89765e0392efc2f100f06f2" integrity sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ== @@ -3360,6 +3913,11 @@ is-wsl@^2.1.1: dependencies: is-docker "^2.0.0" +isarray@^2.0.5: + version "2.0.5" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-2.0.5.tgz#8af1e4c1221244cc62459faf38940d4e644a5723" + integrity sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw== + isexe@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" @@ -3375,7 +3933,7 @@ jiti@^1.19.1: resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== -js-yaml@^3.13.1: +js-yaml@^3.13.1, js-yaml@^3.14.1: version "3.14.1" resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.1.tgz#dae812fdb3825fa306609a8717383c50c36a0537" integrity sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g== @@ -3383,6 +3941,13 @@ js-yaml@^3.13.1: argparse "^1.0.7" esprima "^4.0.0" +js-yaml@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602" + integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== + dependencies: + argparse "^2.0.1" + jsesc@^2.5.1: version "2.5.2" resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4" @@ -3420,6 +3985,11 @@ json5@^2.2.1: resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.1.tgz#655d50ed1e6f95ad1a3caababd2b0efda10b395c" integrity sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA== +json5@^2.2.2: + version "2.2.3" + resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.3.tgz#78cd6f1a19bdc12b73db5ad0c61efd66c1e29283" + integrity sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg== + jsonfile@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-4.0.0.tgz#8771aae0799b64076b76640fca058f9c10e33ecb" @@ -3529,6 +4099,17 @@ listr2@^4.0.1: through "^2.3.8" wrap-ansi "^7.0.0" +load-json-file@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-1.1.0.tgz#956905708d58b4bab4c2261b04f59f31c99374c0" + integrity sha512-cy7ZdNRXdablkXYNI049pthVeXFurRyb9+hA/dZzerZ0pGTx42z+y+ssxBaVV2l70t1muq5IdKhn4UtcoGUY9A== + dependencies: + graceful-fs "^4.1.2" + parse-json "^2.2.0" + pify "^2.0.0" + pinkie-promise "^2.0.0" + strip-bom "^2.0.0" + load-json-file@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-4.0.0.tgz#2f5f45ab91e33216234fd53adab668eb4ec0993b" @@ -3562,7 +4143,7 @@ lodash.truncate@^4.4.2: resolved "https://registry.yarnpkg.com/lodash.truncate/-/lodash.truncate-4.4.2.tgz#5a350da0b1113b837ecfffd5812cbe58d6eae193" integrity sha1-WjUNoLERO4N+z//VgSy+WNbq4ZM= -lodash@^4.17.15, lodash@^4.17.20: +lodash@^4.17.15, lodash@^4.17.20, lodash@^4.17.21: version "4.17.21" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== @@ -3577,7 +4158,7 @@ log-update@^4.0.0: slice-ansi "^4.0.0" wrap-ansi "^6.2.0" -longest-streak@^2.0.1: +longest-streak@^2.0.0, longest-streak@^2.0.1: version "2.0.4" resolved "https://registry.yarnpkg.com/longest-streak/-/longest-streak-2.0.4.tgz#b8599957da5b5dab64dee3fe316fa774597d90e4" integrity sha512-vM6rUVCVUJJt33bnmHiZEvr7wPT78ztX7rojL+LW51bHtLh6HTjx84LA5W4+oa6aKEJA7jJu5LR6vQRBpA5DVg== @@ -3628,6 +4209,15 @@ markdown-table@^3.0.0: resolved "https://registry.yarnpkg.com/markdown-table/-/markdown-table-3.0.2.tgz#9b59eb2c1b22fe71954a65ff512887065a7bb57c" integrity sha512-y8j3a5/DkJCmS5x4dMCQL+OR0+2EAq3DOtio1COSHsmW2BGXnNCK3v12hJt1LrUz5iZH5g0LmuYOjDdI+czghA== +md5@^2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/md5/-/md5-2.3.0.tgz#c3da9a6aae3a30b46b7b0c349b87b110dc3bda4f" + integrity sha512-T1GITYmFaKuO91vxyoQMFETst+O71VUPEU3ze5GNzDm0OWdP8v1ziTaAEPUr/3kLsY3Sftgz242A1SetQiDL7g== + dependencies: + charenc "0.0.2" + crypt "0.0.2" + is-buffer "~1.1.6" + mdast-util-compact@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/mdast-util-compact/-/mdast-util-compact-2.0.1.tgz#cabc69a2f43103628326f35b1acf735d55c99490" @@ -3651,6 +4241,15 @@ mdast-util-definitions@^5.0.0: "@types/unist" "^2.0.0" unist-util-visit "^4.0.0" +mdast-util-find-and-replace@^1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/mdast-util-find-and-replace/-/mdast-util-find-and-replace-1.1.1.tgz#b7db1e873f96f66588c321f1363069abf607d1b5" + integrity sha512-9cKl33Y21lyckGzpSmEQnIDjEfeeWelN5s1kUW1LwdB0Fkuq2u+4GdqcGEygYxJE8GVqCl0741bYXHgamfWAZA== + dependencies: + escape-string-regexp "^4.0.0" + unist-util-is "^4.0.0" + unist-util-visit-parents "^3.0.0" + mdast-util-find-and-replace@^2.0.0: version "2.2.1" resolved "https://registry.yarnpkg.com/mdast-util-find-and-replace/-/mdast-util-find-and-replace-2.2.1.tgz#249901ef43c5f41d6e8a8d446b3b63b17e592d7c" @@ -3660,6 +4259,25 @@ mdast-util-find-and-replace@^2.0.0: unist-util-is "^5.0.0" unist-util-visit-parents "^5.0.0" +mdast-util-footnote@^0.1.0: + version "0.1.7" + resolved "https://registry.yarnpkg.com/mdast-util-footnote/-/mdast-util-footnote-0.1.7.tgz#4b226caeab4613a3362c144c94af0fdd6f7e0ef0" + integrity sha512-QxNdO8qSxqbO2e3m09KwDKfWiLgqyCurdWTQ198NpbZ2hxntdc+VKS4fDJCmNWbAroUdYnSthu+XbZ8ovh8C3w== + dependencies: + mdast-util-to-markdown "^0.6.0" + micromark "~2.11.0" + +mdast-util-from-markdown@^0.8.0: + version "0.8.5" + resolved "https://registry.yarnpkg.com/mdast-util-from-markdown/-/mdast-util-from-markdown-0.8.5.tgz#d1ef2ca42bc377ecb0463a987910dae89bd9a28c" + integrity sha512-2hkTXtYYnr+NubD/g6KGBS/0mFmBcifAsI0yIWRiRo0PjVs6SSOSOdtzbp6kSGnShDN6G5aWZpKQ2lWRy27mWQ== + dependencies: + "@types/mdast" "^3.0.0" + mdast-util-to-string "^2.0.0" + micromark "~2.11.0" + parse-entities "^2.0.0" + unist-util-stringify-position "^2.0.0" + mdast-util-from-markdown@^1.0.0: version "1.2.0" resolved "https://registry.yarnpkg.com/mdast-util-from-markdown/-/mdast-util-from-markdown-1.2.0.tgz#84df2924ccc6c995dec1e2368b2b208ad0a76268" @@ -3678,6 +4296,13 @@ mdast-util-from-markdown@^1.0.0: unist-util-stringify-position "^3.0.0" uvu "^0.5.0" +mdast-util-frontmatter@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/mdast-util-frontmatter/-/mdast-util-frontmatter-0.2.0.tgz#8bd5cd55e236c03e204a036f7372ebe9e6748240" + integrity sha512-FHKL4w4S5fdt1KjJCwB0178WJ0evnyyQr5kXTM3wrOVpytD0hrkvd+AOOjU9Td8onOejCkmZ+HQRT3CZ3coHHQ== + dependencies: + micromark-extension-frontmatter "^0.2.0" + mdast-util-frontmatter@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/mdast-util-frontmatter/-/mdast-util-frontmatter-1.0.0.tgz#ef12469379782e4a0fd995fed60cc3b871e6c819" @@ -3685,6 +4310,15 @@ mdast-util-frontmatter@^1.0.0: dependencies: micromark-extension-frontmatter "^1.0.0" +mdast-util-gfm-autolink-literal@^0.1.0, mdast-util-gfm-autolink-literal@^0.1.3: + version "0.1.3" + resolved "https://registry.yarnpkg.com/mdast-util-gfm-autolink-literal/-/mdast-util-gfm-autolink-literal-0.1.3.tgz#9c4ff399c5ddd2ece40bd3b13e5447d84e385fb7" + integrity sha512-GjmLjWrXg1wqMIO9+ZsRik/s7PLwTaeCHVB7vRxUwLntZc8mzmTsLVr6HW1yLokcnhfURsn5zmSVdi3/xWWu1A== + dependencies: + ccount "^1.0.0" + mdast-util-find-and-replace "^1.1.0" + micromark "^2.11.3" + mdast-util-gfm-autolink-literal@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/mdast-util-gfm-autolink-literal/-/mdast-util-gfm-autolink-literal-1.0.2.tgz#4032dcbaddaef7d4f2f3768ed830475bb22d3970" @@ -3704,6 +4338,13 @@ mdast-util-gfm-footnote@^1.0.0: mdast-util-to-markdown "^1.3.0" micromark-util-normalize-identifier "^1.0.0" +mdast-util-gfm-strikethrough@^0.2.0: + version "0.2.3" + resolved "https://registry.yarnpkg.com/mdast-util-gfm-strikethrough/-/mdast-util-gfm-strikethrough-0.2.3.tgz#45eea337b7fff0755a291844fbea79996c322890" + integrity sha512-5OQLXpt6qdbttcDG/UxYY7Yjj3e8P7X16LzvpX8pIQPYJ/C2Z1qFGMmcw+1PZMUM3Z8wt8NRfYTvCni93mgsgA== + dependencies: + mdast-util-to-markdown "^0.6.0" + mdast-util-gfm-strikethrough@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/mdast-util-gfm-strikethrough/-/mdast-util-gfm-strikethrough-1.0.1.tgz#a4a74c36864ec6a6e3bbd31e1977f29beb475789" @@ -3712,6 +4353,14 @@ mdast-util-gfm-strikethrough@^1.0.0: "@types/mdast" "^3.0.0" mdast-util-to-markdown "^1.3.0" +mdast-util-gfm-table@^0.1.0: + version "0.1.6" + resolved "https://registry.yarnpkg.com/mdast-util-gfm-table/-/mdast-util-gfm-table-0.1.6.tgz#af05aeadc8e5ee004eeddfb324b2ad8c029b6ecf" + integrity sha512-j4yDxQ66AJSBwGkbpFEp9uG/LS1tZV3P33fN1gkyRB2LoRL+RR3f76m0HPHaby6F4Z5xr9Fv1URmATlRRUIpRQ== + dependencies: + markdown-table "^2.0.0" + mdast-util-to-markdown "~0.6.0" + mdast-util-gfm-table@^1.0.0: version "1.0.6" resolved "https://registry.yarnpkg.com/mdast-util-gfm-table/-/mdast-util-gfm-table-1.0.6.tgz#184e900979fe790745fc3dabf77a4114595fcd7f" @@ -3722,6 +4371,13 @@ mdast-util-gfm-table@^1.0.0: mdast-util-from-markdown "^1.0.0" mdast-util-to-markdown "^1.3.0" +mdast-util-gfm-task-list-item@^0.1.0: + version "0.1.6" + resolved "https://registry.yarnpkg.com/mdast-util-gfm-task-list-item/-/mdast-util-gfm-task-list-item-0.1.6.tgz#70c885e6b9f543ddd7e6b41f9703ee55b084af10" + integrity sha512-/d51FFIfPsSmCIRNp7E6pozM9z1GYPIkSy1urQ8s/o4TC22BZ7DqfHFWiqBD23bc7J3vV1Fc9O4QIHBlfuit8A== + dependencies: + mdast-util-to-markdown "~0.6.0" + mdast-util-gfm-task-list-item@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/mdast-util-gfm-task-list-item/-/mdast-util-gfm-task-list-item-1.0.1.tgz#6f35f09c6e2bcbe88af62fdea02ac199cc802c5c" @@ -3730,6 +4386,17 @@ mdast-util-gfm-task-list-item@^1.0.0: "@types/mdast" "^3.0.0" mdast-util-to-markdown "^1.3.0" +mdast-util-gfm@^0.1.0: + version "0.1.2" + resolved "https://registry.yarnpkg.com/mdast-util-gfm/-/mdast-util-gfm-0.1.2.tgz#8ecddafe57d266540f6881f5c57ff19725bd351c" + integrity sha512-NNkhDx/qYcuOWB7xHUGWZYVXvjPFFd6afg6/e2g+SV4r9q5XUcCbV4Wfa3DLYIiD+xAEZc6K4MGaE/m0KDcPwQ== + dependencies: + mdast-util-gfm-autolink-literal "^0.1.0" + mdast-util-gfm-strikethrough "^0.2.0" + mdast-util-gfm-table "^0.1.0" + mdast-util-gfm-task-list-item "^0.1.0" + mdast-util-to-markdown "^0.6.1" + mdast-util-gfm@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/mdast-util-gfm/-/mdast-util-gfm-2.0.1.tgz#16fcf70110ae689a06d77e8f4e346223b64a0ea6" @@ -3821,6 +4488,18 @@ mdast-util-to-hast@^9.0.0: unist-util-position "^3.0.0" unist-util-visit "^2.0.0" +mdast-util-to-markdown@^0.6.0, mdast-util-to-markdown@^0.6.1, mdast-util-to-markdown@~0.6.0: + version "0.6.5" + resolved "https://registry.yarnpkg.com/mdast-util-to-markdown/-/mdast-util-to-markdown-0.6.5.tgz#b33f67ca820d69e6cc527a93d4039249b504bebe" + integrity sha512-XeV9sDE7ZlOQvs45C9UKMtfTcctcaj/pGwH8YLbMHoMOXNNCn2LsqVQOqrF1+/NU8lKDAqozme9SCXWyo9oAcQ== + dependencies: + "@types/unist" "^2.0.0" + longest-streak "^2.0.0" + mdast-util-to-string "^2.0.0" + parse-entities "^2.0.0" + repeat-string "^1.0.0" + zwitch "^1.0.0" + mdast-util-to-markdown@^1.0.0, mdast-util-to-markdown@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/mdast-util-to-markdown/-/mdast-util-to-markdown-1.3.0.tgz#38b6cdc8dc417de642a469c4fc2abdf8c931bd1e" @@ -3839,6 +4518,11 @@ mdast-util-to-string@^1.1.0: resolved "https://registry.yarnpkg.com/mdast-util-to-string/-/mdast-util-to-string-1.1.0.tgz#27055500103f51637bd07d01da01eb1967a43527" integrity sha512-jVU0Nr2B9X3MU4tSK7JP1CMkSvOj7X5l/GboG1tKRw52lLF1x2Ju92Ms9tNetCcbfX3hzlM73zYo2NKkWSfF/A== +mdast-util-to-string@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/mdast-util-to-string/-/mdast-util-to-string-2.0.0.tgz#b8cfe6a713e1091cb5b728fc48885a4767f8b97b" + integrity sha512-AW4DRS3QbBayY/jJmD8437V1Gombjf8RSOUCMFBuo5iHi58AGEgVCKQ+ezHkZZDpAQS75hcBMpLqjpJTjtUL7w== + mdast-util-to-string@^3.0.0, mdast-util-to-string@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/mdast-util-to-string/-/mdast-util-to-string-3.1.0.tgz#56c506d065fbf769515235e577b5a261552d56e9" @@ -3924,6 +4608,20 @@ micromark-core-commonmark@^1.0.0, micromark-core-commonmark@^1.0.1: micromark-util-types "^1.0.1" uvu "^0.5.0" +micromark-extension-footnote@^0.3.0: + version "0.3.2" + resolved "https://registry.yarnpkg.com/micromark-extension-footnote/-/micromark-extension-footnote-0.3.2.tgz#129b74ef4920ce96719b2c06102ee7abb2b88a20" + integrity sha512-gr/BeIxbIWQoUm02cIfK7mdMZ/fbroRpLsck4kvFtjbzP4yi+OPVbnukTc/zy0i7spC2xYE/dbX1Sur8BEDJsQ== + dependencies: + micromark "~2.11.0" + +micromark-extension-frontmatter@^0.2.0: + version "0.2.2" + resolved "https://registry.yarnpkg.com/micromark-extension-frontmatter/-/micromark-extension-frontmatter-0.2.2.tgz#61b8e92e9213e1d3c13f5a59e7862f5ca98dfa53" + integrity sha512-q6nPLFCMTLtfsctAuS0Xh4vaolxSFUWUWR6PZSrXXiRy+SANGllpcqdXFv2z07l0Xz/6Hl40hK0ffNCJPH2n1A== + dependencies: + fault "^1.0.0" + micromark-extension-frontmatter@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/micromark-extension-frontmatter/-/micromark-extension-frontmatter-1.0.0.tgz#612498e6dad87c132c95e25f0918e7cc0cd535f6" @@ -3944,6 +4642,13 @@ micromark-extension-gfm-autolink-literal@^1.0.0: micromark-util-types "^1.0.0" uvu "^0.5.0" +micromark-extension-gfm-autolink-literal@~0.5.0: + version "0.5.7" + resolved "https://registry.yarnpkg.com/micromark-extension-gfm-autolink-literal/-/micromark-extension-gfm-autolink-literal-0.5.7.tgz#53866c1f0c7ef940ae7ca1f72c6faef8fed9f204" + integrity sha512-ePiDGH0/lhcngCe8FtH4ARFoxKTUelMp4L7Gg2pujYD5CSMb9PbblnyL+AAMud/SNMyusbS2XDSiPIRcQoNFAw== + dependencies: + micromark "~2.11.3" + micromark-extension-gfm-footnote@^1.0.0: version "1.0.4" resolved "https://registry.yarnpkg.com/micromark-extension-gfm-footnote/-/micromark-extension-gfm-footnote-1.0.4.tgz#cbfd8873b983e820c494498c6dac0105920818d5" @@ -3970,6 +4675,13 @@ micromark-extension-gfm-strikethrough@^1.0.0: micromark-util-types "^1.0.0" uvu "^0.5.0" +micromark-extension-gfm-strikethrough@~0.6.5: + version "0.6.5" + resolved "https://registry.yarnpkg.com/micromark-extension-gfm-strikethrough/-/micromark-extension-gfm-strikethrough-0.6.5.tgz#96cb83356ff87bf31670eefb7ad7bba73e6514d1" + integrity sha512-PpOKlgokpQRwUesRwWEp+fHjGGkZEejj83k9gU5iXCbDG+XBA92BqnRKYJdfqfkrRcZRgGuPuXb7DaK/DmxOhw== + dependencies: + micromark "~2.11.0" + micromark-extension-gfm-table@^1.0.0: version "1.0.5" resolved "https://registry.yarnpkg.com/micromark-extension-gfm-table/-/micromark-extension-gfm-table-1.0.5.tgz#7b708b728f8dc4d95d486b9e7a2262f9cddbcbb4" @@ -3981,6 +4693,13 @@ micromark-extension-gfm-table@^1.0.0: micromark-util-types "^1.0.0" uvu "^0.5.0" +micromark-extension-gfm-table@~0.4.0: + version "0.4.3" + resolved "https://registry.yarnpkg.com/micromark-extension-gfm-table/-/micromark-extension-gfm-table-0.4.3.tgz#4d49f1ce0ca84996c853880b9446698947f1802b" + integrity sha512-hVGvESPq0fk6ALWtomcwmgLvH8ZSVpcPjzi0AjPclB9FsVRgMtGZkUcpE0zgjOCFAznKepF4z3hX8z6e3HODdA== + dependencies: + micromark "~2.11.0" + micromark-extension-gfm-tagfilter@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/micromark-extension-gfm-tagfilter/-/micromark-extension-gfm-tagfilter-1.0.1.tgz#fb2e303f7daf616db428bb6a26e18fda14a90a4d" @@ -3988,6 +4707,11 @@ micromark-extension-gfm-tagfilter@^1.0.0: dependencies: micromark-util-types "^1.0.0" +micromark-extension-gfm-tagfilter@~0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/micromark-extension-gfm-tagfilter/-/micromark-extension-gfm-tagfilter-0.3.0.tgz#d9f26a65adee984c9ccdd7e182220493562841ad" + integrity sha512-9GU0xBatryXifL//FJH+tAZ6i240xQuFrSL7mYi8f4oZSbc+NvXjkrHemeYP0+L4ZUT+Ptz3b95zhUZnMtoi/Q== + micromark-extension-gfm-task-list-item@^1.0.0: version "1.0.3" resolved "https://registry.yarnpkg.com/micromark-extension-gfm-task-list-item/-/micromark-extension-gfm-task-list-item-1.0.3.tgz#7683641df5d4a09795f353574d7f7f66e47b7fc4" @@ -3999,6 +4723,25 @@ micromark-extension-gfm-task-list-item@^1.0.0: micromark-util-types "^1.0.0" uvu "^0.5.0" +micromark-extension-gfm-task-list-item@~0.3.0: + version "0.3.3" + resolved "https://registry.yarnpkg.com/micromark-extension-gfm-task-list-item/-/micromark-extension-gfm-task-list-item-0.3.3.tgz#d90c755f2533ed55a718129cee11257f136283b8" + integrity sha512-0zvM5iSLKrc/NQl84pZSjGo66aTGd57C1idmlWmE87lkMcXrTxg1uXa/nXomxJytoje9trP0NDLvw4bZ/Z/XCQ== + dependencies: + micromark "~2.11.0" + +micromark-extension-gfm@^0.3.0: + version "0.3.3" + resolved "https://registry.yarnpkg.com/micromark-extension-gfm/-/micromark-extension-gfm-0.3.3.tgz#36d1a4c089ca8bdfd978c9bd2bf1a0cb24e2acfe" + integrity sha512-oVN4zv5/tAIA+l3GbMi7lWeYpJ14oQyJ3uEim20ktYFAcfX1x3LNlFGGlmrZHt7u9YlKExmyJdDGaTt6cMSR/A== + dependencies: + micromark "~2.11.0" + micromark-extension-gfm-autolink-literal "~0.5.0" + micromark-extension-gfm-strikethrough "~0.6.5" + micromark-extension-gfm-table "~0.4.0" + micromark-extension-gfm-tagfilter "~0.3.0" + micromark-extension-gfm-task-list-item "~0.3.0" + micromark-extension-gfm@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/micromark-extension-gfm/-/micromark-extension-gfm-2.0.1.tgz#40f3209216127a96297c54c67f5edc7ef2d1a2a2" @@ -4253,6 +4996,14 @@ micromark-util-types@^1.0.0, micromark-util-types@^1.0.1: resolved "https://registry.yarnpkg.com/micromark-util-types/-/micromark-util-types-1.0.2.tgz#f4220fdb319205812f99c40f8c87a9be83eded20" integrity sha512-DCfg/T8fcrhrRKTPjRrw/5LLvdGV7BHySf/1LOZx7TzWZdYRjogNtyNq885z3nNallwr3QUKARjqvHqX1/7t+w== +micromark@^2.11.3, micromark@~2.11.0, micromark@~2.11.3: + version "2.11.4" + resolved "https://registry.yarnpkg.com/micromark/-/micromark-2.11.4.tgz#d13436138eea826383e822449c9a5c50ee44665a" + integrity sha512-+WoovN/ppKolQOFIAajxi7Lu9kInbPxFuTBVEavFcL8eAfVstoc5MocPmqBeAdBOJV00uaVjegzH4+MA0DN/uA== + dependencies: + debug "^4.0.0" + parse-entities "^2.0.0" + micromark@^3.0.0: version "3.0.10" resolved "https://registry.yarnpkg.com/micromark/-/micromark-3.0.10.tgz#1eac156f0399d42736458a14b0ca2d86190b457c" @@ -4333,11 +5084,30 @@ minimatch@^3.0.4: dependencies: brace-expansion "^1.1.7" +minimatch@^3.1.1: + version "3.1.2" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" + integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== + dependencies: + brace-expansion "^1.1.7" + minimist@^1.2.0: version "1.2.7" resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.7.tgz#daa1c4d91f507390437c6a8bc01078e7000c4d18" integrity sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g== +minimist@^1.2.6: + version "1.2.8" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c" + integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA== + +mkdirp@^0.5.1, mkdirp@^0.5.6: + version "0.5.6" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.6.tgz#7def03d2432dcae4ba1d611445c48396062255f6" + integrity sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw== + dependencies: + minimist "^1.2.6" + mri@^1.1.0: version "1.2.0" resolved "https://registry.yarnpkg.com/mri/-/mri-1.2.0.tgz#6721480fec2a11a4889861115a48b6cbe7cc8f0b" @@ -4518,6 +5288,11 @@ object-inspect@^1.11.0, object-inspect@^1.12.0, object-inspect@^1.9.0: resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.12.0.tgz#6e2c120e868fd1fd18cb4f18c31741d0d6e776f0" integrity sha512-Ho2z80bVIvJloH+YzRmpZVQe87+qASmBUKZDWgx9cu+KDrX2ZDH/3tMy+gXbZETVGs2M8YdxObOh7XAtim9Y0g== +object-inspect@^1.13.1: + version "1.13.2" + resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.13.2.tgz#dea0088467fb991e67af4058147a24824a3043ff" + integrity sha512-IRZSRuzJiynemAXPYtPe5BoI/RESNYR7TYm50MC5Mqbd3Jmw5y790sErYw3V6SryFJD64b74qQQs9wn5Bg/k3g== + object-keys@^1.0.12, object-keys@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" @@ -4543,6 +5318,16 @@ object.assign@^4.1.2: has-symbols "^1.0.1" object-keys "^1.1.1" +object.assign@^4.1.5: + version "4.1.5" + resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.5.tgz#3a833f9ab7fdb80fc9e8d2300c803d216d8fdbb0" + integrity sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ== + dependencies: + call-bind "^1.0.5" + define-properties "^1.2.1" + has-symbols "^1.0.3" + object-keys "^1.1.1" + object.entries@^1.1.5: version "1.1.5" resolved "https://registry.yarnpkg.com/object.entries/-/object.entries-1.1.5.tgz#e1acdd17c4de2cd96d5a08487cfb9db84d881861" @@ -4624,6 +5409,18 @@ optionator@^0.9.1: type-check "^0.4.0" word-wrap "^1.2.3" +optionator@^0.9.3: + version "0.9.4" + resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.4.tgz#7ea1c1a5d91d764fb282139c88fe11e182a3a734" + integrity sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g== + dependencies: + deep-is "^0.1.3" + fast-levenshtein "^2.0.6" + levn "^0.4.1" + prelude-ls "^1.2.1" + type-check "^0.4.0" + word-wrap "^1.2.5" + os-tmpdir@~1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" @@ -4698,6 +5495,13 @@ parse-entities@^4.0.0: is-decimal "^2.0.0" is-hexadecimal "^2.0.0" +parse-json@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-2.2.0.tgz#f480f40434ef80741f8469099f8dea18f55a4dc9" + integrity sha512-QR/GGaKCkhwk1ePQNYDRKYZ3mwU9ypsKhB0XyFnLQdomyEqk3e8wpW3V5Jp88zbxK4n5ST1nqo+g9juTpownhQ== + dependencies: + error-ex "^1.2.0" + parse-json@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-4.0.0.tgz#be35f5425be1f7f6c747184f98a788cb99477ee0" @@ -4769,11 +5573,25 @@ path-parse@^1.0.6, path-parse@^1.0.7: resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== +path-to-glob-pattern@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/path-to-glob-pattern/-/path-to-glob-pattern-2.0.1.tgz#d599efea51af1f3e97dcbf721ad8b7d2c40f4a53" + integrity sha512-tmciSlVyHnX0LC86+zSr+0LURw9rDPw8ilhXcmTpVUOnI6OsKdCzXQs5fTG10Bjz26IBdnKL3XIaP+QvGsk5YQ== + path-to-regexp@0.1.7: version "0.1.7" resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c" integrity sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ== +path-type@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/path-type/-/path-type-1.1.0.tgz#59c44f7ee491da704da415da5a4070ba4f8fe441" + integrity sha512-S4eENJz1pkiQn9Znv33Q+deTOKmbl+jj1Fl+qiP/vYezj+S8x+J3Uo0ISrx/QoEvIlOaDWJhPaRd1flJ9HXZqg== + dependencies: + graceful-fs "^4.1.2" + pify "^2.0.0" + pinkie-promise "^2.0.0" + path-type@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/path-type/-/path-type-3.0.0.tgz#cef31dc8e0a1a3bb0d105c0cd97cf3bf47f4e36f" @@ -4814,7 +5632,7 @@ pidtree@^0.3.0: resolved "https://registry.yarnpkg.com/pidtree/-/pidtree-0.3.1.tgz#ef09ac2cc0533df1f3250ccf2c4d366b0d12114a" integrity sha512-qQbW94hLHEqCg7nhby4yRC7G2+jYHY4Rguc2bjw7Uug4GIJuu1tvf2uHaZv5Q8zdt+WKJ6qK1FOI6amaWUo5FA== -pify@^2.3.0: +pify@^2.0.0, pify@^2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" integrity sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog== @@ -4824,11 +5642,33 @@ pify@^3.0.0: resolved "https://registry.yarnpkg.com/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176" integrity sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY= +pinkie-promise@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz#2135d6dfa7a358c069ac9b178776288228450ffa" + integrity sha512-0Gni6D4UcLTbv9c57DfxDGdr41XfgUjqWZu492f0cIGr16zDU06BWP/RAEvOuo7CQ0CNjHaLlM59YJJFm3NWlw== + dependencies: + pinkie "^2.0.0" + +pinkie@^2.0.0: + version "2.0.4" + resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870" + integrity sha512-MnUuEycAemtSaeFSjXKW/aroV7akBbY+Sv+RkyqFjgAe73F+MR0TBWKBRDkmfWq/HiFmdavfZ1G7h4SPZXaCSg== + pirates@^4.0.1: version "4.0.6" resolved "https://registry.yarnpkg.com/pirates/-/pirates-4.0.6.tgz#3018ae32ecfcff6c29ba2267cbf21166ac1f36b9" integrity sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg== +pluralize@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/pluralize/-/pluralize-2.0.0.tgz#72b726aa6fac1edeee42256c7d8dc256b335677f" + integrity sha512-TqNZzQCD4S42De9IfnnBvILN7HAW7riLqsCyp8lgjXeysyPlX5HhqKAcJHHHb9XskE4/a+7VGC9zzx8Ls0jOAw== + +possible-typed-array-names@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz#89bb63c6fada2c3e90adc4a647beeeb39cc7bf8f" + integrity sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q== + postcss-attribute-case-insensitive@^4.0.1: version "4.0.2" resolved "https://registry.yarnpkg.com/postcss-attribute-case-insensitive/-/postcss-attribute-case-insensitive-4.0.2.tgz#d93e46b504589e94ac7277b0463226c68041a880" @@ -5283,6 +6123,16 @@ raw-body@2.5.1: iconv-lite "0.4.24" unpipe "1.0.0" +rc-config-loader@^4.1.3: + version "4.1.3" + resolved "https://registry.yarnpkg.com/rc-config-loader/-/rc-config-loader-4.1.3.tgz#1352986b8a2d8d96d6fd054a5bb19a60c576876a" + integrity sha512-kD7FqML7l800i6pS6pvLyIE2ncbk9Du8Q0gp/4hMPhJU6ZxApkoLcGD8ZeqgiAlfwZ6BlETq6qqe+12DUL207w== + dependencies: + debug "^4.3.4" + js-yaml "^4.1.0" + json5 "^2.2.2" + require-from-string "^2.0.2" + react-collapsed@4.0.4: version "4.0.4" resolved "https://registry.yarnpkg.com/react-collapsed/-/react-collapsed-4.0.4.tgz#4c6bce3a15286d43e95b6730ad70ec387a54caa9" @@ -5329,6 +6179,23 @@ read-cache@^1.0.0: dependencies: pify "^2.3.0" +read-pkg-up@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-3.0.0.tgz#3ed496685dba0f8fe118d0691dc51f4a1ff96f07" + integrity sha512-YFzFrVvpC6frF1sz8psoHDBGF7fLPc+llq/8NB43oagqWkx8ar5zYtsTORtOjw9W2RHLpWP+zTWwBvf1bCmcSw== + dependencies: + find-up "^2.0.0" + read-pkg "^3.0.0" + +read-pkg@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-1.1.0.tgz#f5ffaa5ecd29cb31c0474bca7d756b6bb29e3f28" + integrity sha512-7BGwRHqt4s/uVbuyoeejRn4YmFnYZiFl4AuaeXHlgZf3sONF0SOGlxs2Pw8g6hCKupo08RafIO5YXFNOKTfwsQ== + dependencies: + load-json-file "^1.0.0" + normalize-package-data "^2.3.2" + path-type "^1.0.0" + read-pkg@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-3.0.0.tgz#9cbc686978fee65d16c00e2b19c237fcf6e38389" @@ -5363,6 +6230,16 @@ regexp.prototype.flags@^1.3.1: call-bind "^1.0.2" define-properties "^1.1.3" +regexp.prototype.flags@^1.5.2: + version "1.5.2" + resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.5.2.tgz#138f644a3350f981a858c44f6bb1a61ff59be334" + integrity sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw== + dependencies: + call-bind "^1.0.6" + define-properties "^1.2.1" + es-errors "^1.3.0" + set-function-name "^2.0.1" + regexpp@^3.1.0, regexpp@^3.2.0: version "3.2.0" resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.2.0.tgz#0425a2768d8f23bad70ca4b90461fa2f1213e1b2" @@ -5379,6 +6256,22 @@ remark-external-links@^7.0.0: space-separated-tokens "^1.0.0" unist-util-visit "^2.0.0" +remark-footnotes@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/remark-footnotes/-/remark-footnotes-3.0.0.tgz#5756b56f8464fa7ed80dbba0c966136305d8cb8d" + integrity sha512-ZssAvH9FjGYlJ/PBVKdSmfyPc3Cz4rTWgZLI4iE/SX8Nt5l3o3oEjv3wwG5VD7xOjktzdwp5coac+kJV9l4jgg== + dependencies: + mdast-util-footnote "^0.1.0" + micromark-extension-footnote "^0.3.0" + +remark-frontmatter@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/remark-frontmatter/-/remark-frontmatter-3.0.0.tgz#ca5d996361765c859bd944505f377d6b186a6ec6" + integrity sha512-mSuDd3svCHs+2PyO29h7iijIZx4plX0fheacJcAoYAASfgzgVIcXGYSq9GFyYocFLftQs8IOmmkgtOovs6d4oA== + dependencies: + mdast-util-frontmatter "^0.2.0" + micromark-extension-frontmatter "^0.2.0" + remark-frontmatter@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/remark-frontmatter/-/remark-frontmatter-4.0.1.tgz#84560f7ccef114ef076d3d3735be6d69f8922309" @@ -5389,6 +6282,14 @@ remark-frontmatter@^4.0.1: micromark-extension-frontmatter "^1.0.0" unified "^10.0.0" +remark-gfm@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/remark-gfm/-/remark-gfm-1.0.0.tgz#9213643001be3f277da6256464d56fd28c3b3c0d" + integrity sha512-KfexHJCiqvrdBZVbQ6RopMZGwaXz6wFJEfByIuEwGf0arvITHjiKKZ1dpXujjH9KZdm1//XJQwgfnJ3lmXaDPA== + dependencies: + mdast-util-gfm "^0.1.0" + micromark-extension-gfm "^0.3.0" + remark-gfm@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/remark-gfm/-/remark-gfm-3.0.1.tgz#0b180f095e3036545e9dddac0e8df3fa5cfee54f" @@ -5457,6 +6358,13 @@ remark-parse@^8.0.0: vfile-location "^3.0.0" xtend "^4.0.1" +remark-parse@^9.0.0: + version "9.0.0" + resolved "https://registry.yarnpkg.com/remark-parse/-/remark-parse-9.0.0.tgz#4d20a299665880e4f4af5d90b7c7b8a935853640" + integrity sha512-geKatMwSzEXKHuzBNU1z676sGcDcFoChMK38TgdHJNAYfFtsfHDQG7MoJAjs6sgYMqyLduCYWDIWZIxiPeafEw== + dependencies: + mdast-util-from-markdown "^0.8.0" + remark-rehype@^10.0.0: version "10.1.0" resolved "https://registry.yarnpkg.com/remark-rehype/-/remark-rehype-10.1.0.tgz#32dc99d2034c27ecaf2e0150d22a6dcccd9a6279" @@ -5607,6 +6515,13 @@ rfdc@^1.3.0: resolved "https://registry.yarnpkg.com/rfdc/-/rfdc-1.3.0.tgz#d0b7c441ab2720d05dc4cf26e01c89631d9da08b" integrity sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA== +rimraf@2.6.3: + version "2.6.3" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.3.tgz#b2d104fe0d8fb27cf9e0a1cda8262dd3833c6cab" + integrity sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA== + dependencies: + glob "^7.1.3" + rimraf@^2.5.4, rimraf@^2.6.3: version "2.7.1" resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec" @@ -5650,6 +6565,16 @@ sade@^1.7.3: dependencies: mri "^1.1.0" +safe-array-concat@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/safe-array-concat/-/safe-array-concat-1.1.2.tgz#81d77ee0c4e8b863635227c721278dd524c20edb" + integrity sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q== + dependencies: + call-bind "^1.0.7" + get-intrinsic "^1.2.4" + has-symbols "^1.0.3" + isarray "^2.0.5" + safe-buffer@5.2.1: version "5.2.1" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" @@ -5660,6 +6585,15 @@ safe-buffer@~5.1.1: resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== +safe-regex-test@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/safe-regex-test/-/safe-regex-test-1.0.3.tgz#a5b4c0f06e0ab50ea2c395c14d8371232924c377" + integrity sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw== + dependencies: + call-bind "^1.0.6" + es-errors "^1.3.0" + is-regex "^1.1.4" + "safer-buffer@>= 2.1.2 < 3": version "2.1.2" resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" @@ -5733,6 +6667,28 @@ serve-static@1.15.0: parseurl "~1.3.3" send "0.18.0" +set-function-length@^1.2.1: + version "1.2.2" + resolved "https://registry.yarnpkg.com/set-function-length/-/set-function-length-1.2.2.tgz#aac72314198eaed975cf77b2c3b6b880695e5449" + integrity sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg== + dependencies: + define-data-property "^1.1.4" + es-errors "^1.3.0" + function-bind "^1.1.2" + get-intrinsic "^1.2.4" + gopd "^1.0.1" + has-property-descriptors "^1.0.2" + +set-function-name@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/set-function-name/-/set-function-name-2.0.2.tgz#16a705c5a0dc2f5e638ca96d8a8cd4e1c2b90985" + integrity sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ== + dependencies: + define-data-property "^1.1.4" + es-errors "^1.3.0" + functions-have-names "^1.2.3" + has-property-descriptors "^1.0.2" + setprototypeof@1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.2.0.tgz#66c9a24a73f9fc28cbe66b09fed3d33dcaf1b424" @@ -5963,6 +6919,16 @@ string.prototype.padend@^3.0.0: define-properties "^1.1.3" es-abstract "^1.19.1" +string.prototype.trim@^1.2.9: + version "1.2.9" + resolved "https://registry.yarnpkg.com/string.prototype.trim/-/string.prototype.trim-1.2.9.tgz#b6fa326d72d2c78b6df02f7759c73f8f6274faa4" + integrity sha512-klHuCNxiMZ8MlsOihJhJEBJAiMVqU3Z2nEXWfWnIqjN0gEFS9J9+IxKozWWtQGcgoa1WUZzLjKPTr4ZHNFTFxw== + dependencies: + call-bind "^1.0.7" + define-properties "^1.2.1" + es-abstract "^1.23.0" + es-object-atoms "^1.0.0" + string.prototype.trimend@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz#e75ae90c2942c63504686c18b287b4a0b1a45f80" @@ -5971,6 +6937,15 @@ string.prototype.trimend@^1.0.4: call-bind "^1.0.2" define-properties "^1.1.3" +string.prototype.trimend@^1.0.8: + version "1.0.8" + resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.8.tgz#3651b8513719e8a9f48de7f2f77640b26652b229" + integrity sha512-p73uL5VCHCO2BZZ6krwwQE3kCzM7NKmis8S//xEC6fQonchbum4eP6kR4DLEjQFO3Wnj3Fuo8NM0kOSjVdHjZQ== + dependencies: + call-bind "^1.0.7" + define-properties "^1.2.1" + es-object-atoms "^1.0.0" + string.prototype.trimstart@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz#b36399af4ab2999b4c9c648bd7a3fb2bb26feeed" @@ -5979,6 +6954,15 @@ string.prototype.trimstart@^1.0.4: call-bind "^1.0.2" define-properties "^1.1.3" +string.prototype.trimstart@^1.0.8: + version "1.0.8" + resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz#7ee834dda8c7c17eff3118472bb35bfedaa34dde" + integrity sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg== + dependencies: + call-bind "^1.0.7" + define-properties "^1.2.1" + es-object-atoms "^1.0.0" + stringify-entities@^3.0.0, stringify-entities@^3.0.1: version "3.1.0" resolved "https://registry.yarnpkg.com/stringify-entities/-/stringify-entities-3.1.0.tgz#b8d3feac256d9ffcc9fa1fefdcf3ca70576ee903" @@ -6015,6 +6999,13 @@ strip-bom-string@^1.0.0: resolved "https://registry.yarnpkg.com/strip-bom-string/-/strip-bom-string-1.0.0.tgz#e5211e9224369fbb81d633a2f00044dc8cedad92" integrity sha1-5SEekiQ2n7uB1jOi8ABE3IztrZI= +strip-bom@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-2.0.0.tgz#6219a85616520491f35788bdbf1447a99c7e6b0e" + integrity sha512-kwrX1y7czp1E69n2ajbG65mIo9dqvJ+8aBQXOGVxqwvNbsXdFM6Lq37dLAY3mknUwru8CfcCbfOLL/gMo+fi3g== + dependencies: + is-utf8 "^0.2.0" + strip-bom@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" @@ -6030,6 +7021,13 @@ strip-json-comments@^3.1.0, strip-json-comments@^3.1.1: resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== +structured-source@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/structured-source/-/structured-source-4.0.0.tgz#0c9e59ee43dedd8fc60a63731f60e358102a4948" + integrity sha512-qGzRFNJDjFieQkl/sVOI2dUjHKRyL9dAJi2gCPGJLbJHBIkyOHxjuocpIEfbLioX+qSJpvbYdT49/YCdMznKxA== + dependencies: + boundary "^2.0.0" + style-mod@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/style-mod/-/style-mod-4.0.0.tgz#97e7c2d68b592975f2ca7a63d0dd6fcacfe35a01" @@ -6097,6 +7095,17 @@ table@^6.0.9: string-width "^4.2.3" strip-ansi "^6.0.1" +table@^6.8.1: + version "6.8.2" + resolved "https://registry.yarnpkg.com/table/-/table-6.8.2.tgz#c5504ccf201213fa227248bdc8c5569716ac6c58" + integrity sha512-w2sfv80nrAh2VCbqR5AK27wswXhqcck2AhfnNW76beQXskGZ1V12GwS//yYVa3d3fcvAip2OUnbDAjW2k3v9fA== + dependencies: + ajv "^8.0.1" + lodash.truncate "^4.4.2" + slice-ansi "^4.0.0" + string-width "^4.2.3" + strip-ansi "^6.0.1" + tailwindcss@^3.4.1: version "3.4.1" resolved "https://registry.yarnpkg.com/tailwindcss/-/tailwindcss-3.4.1.tgz#f512ca5d1dd4c9503c7d3d28a968f1ad8f5c839d" @@ -6130,6 +7139,43 @@ text-table@^0.2.0: resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" integrity sha1-f17oI66AUgfACvLfSoTsP8+lcLQ= +textlint-filter-rule-comments@^1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/textlint-filter-rule-comments/-/textlint-filter-rule-comments-1.2.2.tgz#3a72c494994e068e0e4aaad0f24ea7cfe338503a" + integrity sha512-AtyxreCPb3Hq/bd6Qd6szY1OGgnW34LOjQXAHzE8NoXbTUudQqALPdRe+hvRsf81rnmGLxBiCUXZbnbpIseFyw== + +textlint@^14.0.4: + version "14.0.4" + resolved "https://registry.yarnpkg.com/textlint/-/textlint-14.0.4.tgz#226a79ad3c0667042e849ceb54f5c8a3f0594475" + integrity sha512-xPQkC/BftPjizjs31wci/791EjwfN11iRLrNKiPVBogYd1r+6TnSxbCERZhgXCGcD9tEHss0kOYc0+vPEEG8jg== + dependencies: + "@textlint/ast-node-types" "^14.0.4" + "@textlint/ast-traverse" "^14.0.4" + "@textlint/config-loader" "^14.0.4" + "@textlint/feature-flag" "^14.0.4" + "@textlint/fixer-formatter" "^14.0.4" + "@textlint/kernel" "^14.0.4" + "@textlint/linter-formatter" "^14.0.4" + "@textlint/module-interop" "^14.0.4" + "@textlint/textlint-plugin-markdown" "^14.0.4" + "@textlint/textlint-plugin-text" "^14.0.4" + "@textlint/types" "^14.0.4" + "@textlint/utils" "^14.0.4" + debug "^4.3.4" + file-entry-cache "^5.0.1" + get-stdin "^5.0.1" + glob "^7.2.3" + md5 "^2.3.0" + mkdirp "^0.5.6" + optionator "^0.9.3" + path-to-glob-pattern "^2.0.1" + rc-config-loader "^4.1.3" + read-pkg "^1.1.0" + read-pkg-up "^3.0.0" + structured-source "^4.0.0" + try-resolve "^1.0.1" + unique-concat "^0.2.2" + thenify-all@^1.0.0: version "1.6.0" resolved "https://registry.yarnpkg.com/thenify-all/-/thenify-all-1.6.0.tgz#1a1918d402d8fc3f98fbf234db0bcc8cc10e9726" @@ -6183,6 +7229,15 @@ totalist@^1.0.0: resolved "https://registry.yarnpkg.com/totalist/-/totalist-1.1.0.tgz#a4d65a3e546517701e3e5c37a47a70ac97fe56df" integrity sha512-gduQwd1rOdDMGxFG1gEvhV88Oirdo2p+KjoYFU7k2g+i7n6AFFbDQ5kMPUsW0pNbfQsB/cwXvT1i4Bue0s9g5g== +traverse@^0.6.8: + version "0.6.9" + resolved "https://registry.yarnpkg.com/traverse/-/traverse-0.6.9.tgz#76cfdbacf06382d460b76f8b735a44a6209d8b81" + integrity sha512-7bBrcF+/LQzSgFmT0X5YclVqQxtv7TDJ1f8Wj7ibBu/U6BMLeOpUxuZjV7rMc44UtKxlnMFigdhFAIszSX1DMg== + dependencies: + gopd "^1.0.1" + typedarray.prototype.slice "^1.0.3" + which-typed-array "^1.1.15" + trim-lines@^3.0.0: version "3.0.1" resolved "https://registry.yarnpkg.com/trim-lines/-/trim-lines-3.0.1.tgz#d802e332a07df861c48802c04321017b1bd87338" @@ -6208,6 +7263,11 @@ trough@^2.0.0: resolved "https://registry.yarnpkg.com/trough/-/trough-2.0.2.tgz#94a3aa9d5ce379fc561f6244905b3f36b7458d96" integrity sha512-FnHq5sTMxC0sk957wHDzRnemFnNBvt/gSY99HzK8F7UP5WAbvP70yX5bd7CjEQkN+TjdxwI7g7lJ6podqrG2/w== +try-resolve@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/try-resolve/-/try-resolve-1.0.1.tgz#cfde6fabd72d63e5797cfaab873abbe8e700e912" + integrity sha512-yHeaPjCBzVaXwWl5IMUapTaTC2rn/eBYg2fsG2L+CvJd+ttFbk0ylDnpTO3wVhosmE1tQEvcebbBeKLCwScQSQ== + ts-interface-checker@^0.1.9: version "0.1.13" resolved "https://registry.yarnpkg.com/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz#784fd3d679722bc103b1b4b8030bcddb5db2a699" @@ -6280,6 +7340,62 @@ type@^2.7.2: resolved "https://registry.yarnpkg.com/type/-/type-2.7.2.tgz#2376a15a3a28b1efa0f5350dcf72d24df6ef98d0" integrity sha512-dzlvlNlt6AXU7EBSfpAscydQ7gXB+pPGsPnfJnZpiNJBDj7IaJzQlBZYGdEi4R9HmPdBv2XmWJ6YUtoTa7lmCw== +typed-array-buffer@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/typed-array-buffer/-/typed-array-buffer-1.0.2.tgz#1867c5d83b20fcb5ccf32649e5e2fc7424474ff3" + integrity sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ== + dependencies: + call-bind "^1.0.7" + es-errors "^1.3.0" + is-typed-array "^1.1.13" + +typed-array-byte-length@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/typed-array-byte-length/-/typed-array-byte-length-1.0.1.tgz#d92972d3cff99a3fa2e765a28fcdc0f1d89dec67" + integrity sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw== + dependencies: + call-bind "^1.0.7" + for-each "^0.3.3" + gopd "^1.0.1" + has-proto "^1.0.3" + is-typed-array "^1.1.13" + +typed-array-byte-offset@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/typed-array-byte-offset/-/typed-array-byte-offset-1.0.2.tgz#f9ec1acb9259f395093e4567eb3c28a580d02063" + integrity sha512-Ous0vodHa56FviZucS2E63zkgtgrACj7omjwd/8lTEMEPFFyjfixMZ1ZXenpgCFBBt4EC1J2XsyVS2gkG0eTFA== + dependencies: + available-typed-arrays "^1.0.7" + call-bind "^1.0.7" + for-each "^0.3.3" + gopd "^1.0.1" + has-proto "^1.0.3" + is-typed-array "^1.1.13" + +typed-array-length@^1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/typed-array-length/-/typed-array-length-1.0.6.tgz#57155207c76e64a3457482dfdc1c9d1d3c4c73a3" + integrity sha512-/OxDN6OtAk5KBpGb28T+HZc2M+ADtvRxXrKKbUwtsLgdoxgX13hyy7ek6bFRl5+aBs2yZzB0c4CnQfAtVypW/g== + dependencies: + call-bind "^1.0.7" + for-each "^0.3.3" + gopd "^1.0.1" + has-proto "^1.0.3" + is-typed-array "^1.1.13" + possible-typed-array-names "^1.0.0" + +typedarray.prototype.slice@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/typedarray.prototype.slice/-/typedarray.prototype.slice-1.0.3.tgz#bce2f685d3279f543239e4d595e0d021731d2d1a" + integrity sha512-8WbVAQAUlENo1q3c3zZYuy5k9VzBQvp8AX9WOtbvyWlLM1v5JaSRmjubLjzHF4JFtptjH/5c/i95yaElvcjC0A== + dependencies: + call-bind "^1.0.7" + define-properties "^1.2.1" + es-abstract "^1.23.0" + es-errors "^1.3.0" + typed-array-buffer "^1.0.2" + typed-array-byte-offset "^1.0.2" + typescript@^4.0.2: version "4.5.5" resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.5.5.tgz#d8c953832d28924a9e3d37c73d729c846c5896f3" @@ -6295,6 +7411,16 @@ unbox-primitive@^1.0.1: has-symbols "^1.0.2" which-boxed-primitive "^1.0.2" +unbox-primitive@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/unbox-primitive/-/unbox-primitive-1.0.2.tgz#29032021057d5e6cdbd08c5129c226dff8ed6f9e" + integrity sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw== + dependencies: + call-bind "^1.0.2" + has-bigints "^1.0.2" + has-symbols "^1.0.3" + which-boxed-primitive "^1.0.2" + unherit@^1.0.4: version "1.1.3" resolved "https://registry.yarnpkg.com/unherit/-/unherit-1.1.3.tgz#6c9b503f2b41b262330c80e91c8614abdaa69c22" @@ -6327,7 +7453,7 @@ unified@^8.0.0: trough "^1.0.0" vfile "^4.0.0" -unified@^9.0.0: +unified@^9.0.0, unified@^9.2.2: version "9.2.2" resolved "https://registry.yarnpkg.com/unified/-/unified-9.2.2.tgz#67649a1abfc3ab85d2969502902775eb03146975" integrity sha512-Sg7j110mtefBD+qunSLO1lqOEKdrwBFBrR6Qd8f4uwkhWNlbkaqwHse6e7QvD3AP/MNoJdEDLaf8OxYyoWgorQ== @@ -6344,6 +7470,11 @@ uniq@^1.0.1: resolved "https://registry.yarnpkg.com/uniq/-/uniq-1.0.1.tgz#b31c5ae8254844a3a8281541ce2b04b865a734ff" integrity sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8= +unique-concat@^0.2.2: + version "0.2.2" + resolved "https://registry.yarnpkg.com/unique-concat/-/unique-concat-0.2.2.tgz#9210f9bdcaacc5e1e3929490d7c019df96f18712" + integrity sha512-nFT3frbsvTa9rrc71FJApPqXF8oIhVHbX3IWgObQi1mF7WrW48Ys70daL7o4evZUtmUf6Qn6WK0LbHhyO0hpXw== + unist-builder@^2.0.0: version "2.0.3" resolved "https://registry.yarnpkg.com/unist-builder/-/unist-builder-2.0.3.tgz#77648711b5d86af0942f334397a33c5e91516436" @@ -6618,6 +7749,17 @@ which-boxed-primitive@^1.0.2: is-string "^1.0.5" is-symbol "^1.0.3" +which-typed-array@^1.1.14, which-typed-array@^1.1.15: + version "1.1.15" + resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.15.tgz#264859e9b11a649b388bfaaf4f767df1f779b38d" + integrity sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA== + dependencies: + available-typed-arrays "^1.0.7" + call-bind "^1.0.7" + for-each "^0.3.3" + gopd "^1.0.1" + has-tostringtag "^1.0.2" + which@^1.2.9: version "1.3.1" resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" @@ -6637,6 +7779,11 @@ word-wrap@^1.2.3: resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c" integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ== +word-wrap@^1.2.5: + version "1.2.5" + resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.5.tgz#d2c45c6dd4fbce621a66f136cbe328afd0410b34" + integrity sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA== + wrap-ansi@^6.2.0: version "6.2.0" resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-6.2.0.tgz#e9393ba07102e6c91a3b221478f0257cd2856e53" @@ -6660,6 +7807,13 @@ wrappy@1: resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= +write@1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/write/-/write-1.0.3.tgz#0800e14523b923a387e415123c865616aae0f5c3" + integrity sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig== + dependencies: + mkdirp "^0.5.1" + ws@^7.3.1: version "7.5.6" resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.6.tgz#e59fc509fb15ddfb65487ee9765c5a51dec5fe7b" @@ -6695,6 +7849,11 @@ zod@3.21.4: resolved "https://registry.yarnpkg.com/zod/-/zod-3.21.4.tgz#10882231d992519f0a10b5dd58a38c9dabbb64db" integrity sha512-m46AKbrzKVzOzs/DZgVnG5H55N1sv1M8qZU3A8RIKbs3mrACDNeIOeilDymVb2HdmP8uwshOCF4uJ8uM9rCqJw== +zwitch@^1.0.0: + version "1.0.5" + resolved "https://registry.yarnpkg.com/zwitch/-/zwitch-1.0.5.tgz#d11d7381ffed16b742f6af7b3f223d5cd9fe9920" + integrity sha512-V50KMwwzqJV0NpZIZFwfOD5/lyny3WlSzRiXgA0G7VUnRlqttta1L6UQIHzd6EuBY/cHGfwTIck7w1yH6Q5zUw== + zwitch@^2.0.0: version "2.0.2" resolved "https://registry.yarnpkg.com/zwitch/-/zwitch-2.0.2.tgz#91f8d0e901ffa3d66599756dde7f57b17c95dce1" From 32298f31bc98f845de3dce6d4a8dfe7b62cc0374 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EB=A3=A8=EB=B0=80LuMir?= Date: Wed, 3 Jul 2024 00:14:33 +0900 Subject: [PATCH 02/16] feat: basic implementation of translateGlossary.js MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit translateGlossary.js 기본 틀/구조 구현. (아직 디테일한 버그들은 잡지 못한 상태.) 이외, legacy 파일들 삭제. (legacy 파일에서 필요한 부분은 따로 정리하여 보관 중.) --- textlint/data/translateGlossary.js | 246 ++++++++++++++++++++++++ textlint/fixtures/terminology.md | 10 - textlint/rules/no-endline-colon.js | 21 -- textlint/rules/terminology.js | 76 -------- textlint/rules/translateGlossary.js | 37 ++++ textlint/tests/no-endline-colon.spec.js | 22 --- textlint/tests/terminology.spec.js | 41 ---- 7 files changed, 283 insertions(+), 170 deletions(-) create mode 100644 textlint/data/translateGlossary.js delete mode 100644 textlint/fixtures/terminology.md delete mode 100644 textlint/rules/no-endline-colon.js delete mode 100644 textlint/rules/terminology.js create mode 100644 textlint/rules/translateGlossary.js delete mode 100644 textlint/tests/no-endline-colon.spec.js delete mode 100644 textlint/tests/terminology.spec.js diff --git a/textlint/data/translateGlossary.js b/textlint/data/translateGlossary.js new file mode 100644 index 000000000..730f43c10 --- /dev/null +++ b/textlint/data/translateGlossary.js @@ -0,0 +1,246 @@ +/** + * @example + * // Datailed Object Structure + * { + * // Textlint에서 사용하지 않고, Markdown 문서를 만들 때 사용하는 정보 + * meta: { + * term: string; + * discussion: number; + * type: string; + * }; + * // Textlint에서 사용하는 정보 + * source: array with string or regExp; + * // Textlint에서 사용하는 정보 + * target: string; + * }[] + */ +module.exports = [ + { + meta: { + term: 'Tutorial', + discussion: 2, + type: 'React', + }, + source: ['Tutorial', '듀토리얼', '튜토리얼'], + target: '자습서', + }, + // { + // meta: { + // term: "Declarative", + // discussion: 2, + // type: "React", + // }, + // target: "선언적인", + // source: [], + // }, + // { + // term: "Component", + // translation: "컴포넌트", + // discussion: 2 + // }, + // { + // term: "Stateful Component", + // translation: "유상태 컴포넌트", + // discussion: 2 + // }, + // { + // term: "Stateless Component", + // translation: "무상태 컴포넌트", + // discussion: 2 + // }, + // { + // term: "Render", + // translation: "렌더링하다", + // discussion: 2 + // }, + // { + // term: "Data", + // translation: "데이터", + // discussion: 2 + // }, + // { + // term: "Application", + // translation: "애플리케이션", + // discussion: 2 + // }, + // { + // term: "External Plugins", + // translation: "외부 플러그인", + // discussion: 2 + // }, + // { + // term: "Third Plugins", + // translation: "서드파티 플러그인", + // discussion: 2 + // }, + // { + // term: "Syntax", + // translation: "문법", + // discussion: 2 + // }, + // { + // term: "Embedding Expressions", + // translation: "표현식 포함하기", + // discussion: 2 + // }, + // { + // term: "Attributes", + // translation: "어트리뷰트", + // discussion: 2 + // }, + // { + // term: "Elements", + // translation: "엘리먼트", + // discussion: 2 + // }, + // { + // term: "Function / Functional Components", + // translation: "함수 컴포넌트", + // discussion: 2 + // }, + // { + // term: "Class Components", + // translation: "클래스 컴포넌트", + // discussion: 2 + // }, + // { + // term: "Composition", + // translation: "합성", + // discussion: 2 + // }, + // { + // term: "Inheritance", + // translation: "상속", + // discussion: 2 + // }, + // { + // term: "Lifecycle", + // translation: "생명주기", + // discussion: 2 + // }, + // { + // term: "Handling Events", + // translation: "이벤트 처리", + // discussion: 2 + // }, + // { + // term: "Conditional Rendering", + // translation: "조건부 렌더링", + // discussion: 2 + // }, + // { + // term: "Operator", + // translation: "연산자", + // discussion: 2 + // }, + // { + // term: "Reuse", + // translation: "재사용", + // discussion: 2 + // }, + // { + // term: "Mock", + // translation: "모의", + // discussion: 2 + // }, + // { + // term: "Callback", + // translation: "콜백", + // discussion: 2 + // }, + // { + // term: "Synthetic Event", + // translation: "합성 이벤트", + // discussion: 2 + // }, + // { + // term: "Higher Order Component", + // translation: "고차 컴포넌트", + // discussion: 2 + // }, + // { + // term: "Mount", + // translation: "마운트", + // discussion: 2 + // }, + // { + // term: "Unmount", + // translation: "마운트 해제", + // discussion: 2 + // }, + // { + // term: "Form", + // translation: "폼", + // discussion: 2 + // }, + // { + // term: "Wrapper", + // translation: "래퍼", + // discussion: 2 + // }, + // { + // term: "Children", + // translation: "자식", + // discussion: 2 + // }, + // { + // term: "Code-Splitting", + // translation: "코드 분할", + // discussion: 2 + // }, + // { + // term: "Reconciliation", + // translation: "재조정", + // discussion: 2 + // }, + // { + // term: "Property", + // translation: "프로퍼티", + // discussion: 2 + // }, + // { + // term: "Reference", + // translation: "레퍼런스", + // discussion: 569 + // }, + // { + // term: "API Reference", + // translation: "API 레퍼런스", + // discussion: 569 + // }, + // { + // term: "User Interfaces", + // translation: "사용자 인터페이스", + // discussion: 569 + // }, + // { + // term: "Markup", + // translation: "마크업", + // discussion: 569 + // }, + // { + // term: "Interactivity", + // translation: "상호작용", + // discussion: 569 + // }, + // { + // term: "Architecture", + // translation: "아키텍처", + // discussion: 569 + // }, + // { + // term: "Full-Stack", + // translation: "풀스택", + // discussion: 569 + // }, + // { + // term: "Browser Extension", + // translation: "브라우저 확장 프로그램", + // discussion: 610 + // }, + // { + // term: "Escape Hatches", + // translation: "탈출구", + // discussion: 738 + // } +]; diff --git a/textlint/fixtures/terminology.md b/textlint/fixtures/terminology.md deleted file mode 100644 index 6e6a015e9..000000000 --- a/textlint/fixtures/terminology.md +++ /dev/null @@ -1,10 +0,0 @@ -# Terminology Fixtures - -> Markdown for verifying textlint CLI result - -- 메서드 -- 서드파티와 써드파티와 써드 파티 -- 예제 -- 응용프로그램과 어플리케이션 -- 함수형 컴포넌트 -- 라이프사이클 diff --git a/textlint/rules/no-endline-colon.js b/textlint/rules/no-endline-colon.js deleted file mode 100644 index c100317a3..000000000 --- a/textlint/rules/no-endline-colon.js +++ /dev/null @@ -1,21 +0,0 @@ -/** - * 문장 끝 쌍점(:)과 쌍반점(;)에 대한 규칙 - */ -module.exports = function(context) { - const {Syntax} = context; - return { - [Syntax.Str](node) { - const {getSource, RuleError, report} = context; - const text = getSource(node); - const match = text.match(/[:;]$/); - if (match) { - report( - node, - new RuleError('문장 끝에 쌍점(:)과 쌍반점(;)은 사용하지 않습니다', { - index: match.index, - }), - ); - } - }, - }; -}; diff --git a/textlint/rules/terminology.js b/textlint/rules/terminology.js deleted file mode 100644 index 086e5c6b4..000000000 --- a/textlint/rules/terminology.js +++ /dev/null @@ -1,76 +0,0 @@ -/** - * 외래어 표기 및 약속된 용어를 위한 규칙 - */ -module.exports = function(context) { - const {Syntax} = context; - return { - [Syntax.Str](node) { - const {getSource, RuleError, report} = context; - const text = getSource(node); - - for (const term of terms) { - for (const expression of term.expressions) { - let result; - while ((result = expression.exec(text))) { - report( - node, - new RuleError(term.message, { - index: result.index, - }), - ); - } - } - } - }, - }; -}; - -/** - * 전역 검색을 위한 일련의 정규표현식을 생성합니다. - * @param {RegExp[]} args - * @return {RegExp[]} 'g' 플래그가 설정된 일련의 정규표현식 - */ -const g = args => args.map(arg => new RegExp(arg, 'g')); - -/** - * @typedef {Object} Terminology - * @property {string} value - 올바른 용어 - * @property {RegExp[]} expressions - 올바르지 못한 용어에 대한 일련의 정규표현식 - * @property {string} message - 에러 메시지 - * - * @type {Terminology[]} - */ -const terms = [ - { - // http://www.korean.go.kr/front/onlineQna/onlineQnaView.do?mn_id=61&qna_seq=11976 - value: '메서드', - expressions: [/메소드/, /메쏘드/], - message: 'method는 메서드가 올바른 표현입니다', - }, - { - // https://opendict.korean.go.kr/dictionary/view?sense_no=1251028 - value: '서드 파티', - expressions: [/서드파티/, /써드파티/, /써드 파티/], - message: 'third party는 서드 파티가 올바른 표현입니다', - }, - { - value: '예시', - expressions: [/예제/], - message: 'example은 예시로 표현합니다.', - }, - { - value: '애플리케이션', - expressions: [/응용프로그램/, /어플리케이션/], - message: 'application은 애플리케이션으로 표현합니다.', - }, - { - value: '함수 컴포넌트', - expressions: [/함수형 컴포넌트/], - message: 'function(al) component는 함수 컴포넌트로 표현합니다.', - }, - { - value: '생명주기', - expressions: [/라이프사이클/], - message: 'life cycle은 생명주기로 표현합니다.', - }, -].map(term => ({...term, expressions: g(term.expressions)})); diff --git a/textlint/rules/translateGlossary.js b/textlint/rules/translateGlossary.js new file mode 100644 index 000000000..686b3d2b7 --- /dev/null +++ b/textlint/rules/translateGlossary.js @@ -0,0 +1,37 @@ +const data = require('../data/translateGlossary'); + +/** + * Look for all the `Str` type `node` on the AST Tree. + * + * @param {RuleContext} context + * @returns + */ +module.exports = function ({Syntax, report, getSource, locator, RuleError}) { + return { + [Syntax.Str](node) { + const text = getSource(node); + + data.forEach(({source, target}) => { + source.forEach((typo) => { + // Do not use 'g' flag with Textlint's 'pretty-error' option. It prevents Textlint from finding the exact location. + const match = text.match(new RegExp(typo, 'i')); + + if (match) { + report( + node, + new RuleError( + `'${typo}'은/는 '${target}'(으)로 번역되어야 합니다.`, + { + padding: locator.range([ + match.index, + match.index + text.length, + ]), + } + ) + ); + } + }); + }); + }, + }; +}; diff --git a/textlint/tests/no-endline-colon.spec.js b/textlint/tests/no-endline-colon.spec.js deleted file mode 100644 index 6aa5f21ca..000000000 --- a/textlint/tests/no-endline-colon.spec.js +++ /dev/null @@ -1,22 +0,0 @@ -const TextLintTester = require('textlint-tester'); -const rule = require('../rules/no-endline-colon'); - -const tester = new TextLintTester(); - -tester.run('no-endline-colon', rule, { - valid: ['아래와 같습니다.', '제목: 설명입니다.'], - invalid: [ - { - text: '아래와 같습니다:', - errors: [{index: 8}], - }, - { - text: '아래와 같습니다;', - errors: [{index: 8}], - }, - { - text: '여러 줄일 때\n아래와 같습니다:\n', - errors: [{index: 16}], - }, - ], -}); diff --git a/textlint/tests/terminology.spec.js b/textlint/tests/terminology.spec.js deleted file mode 100644 index ed48113ae..000000000 --- a/textlint/tests/terminology.spec.js +++ /dev/null @@ -1,41 +0,0 @@ -const TextLintTester = require('textlint-tester'); -const rule = require('../rules/terminology'); - -const tester = new TextLintTester(); - -tester.run('terminology', rule, { - valid: [ - '메서드', - '서드 파티', - '예시', - '애플리케이션', - '함수 컴포넌트', - '생명주기', - ], - invalid: [ - { - text: '한 문장에 연속하는 용어 메소드와 메소드와 메쏘드를 테스트합니다.', - errors: [{index: 14}, {index: 19}, {index: 24}], - }, - { - text: '서드파티와 써드파티와 써드 파티', - errors: [{index: 0}, {index: 6}, {index: 12}], - }, - { - text: '예제', - errors: [{index: 0}], - }, - { - text: '응용프로그램과 어플리케이션', - errors: [{index: 0}, {index: 8}], - }, - { - text: '함수형 컴포넌트', - errors: [{index: 0}], - }, - { - text: '라이프사이클', - errors: [{index: 0}], - }, - ], -}); From 085b6c6bfc8a12a5f6cdd520fa9bf0cacdd30cf0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EB=A3=A8=EB=B0=80LuMir?= Date: Thu, 4 Jul 2024 23:03:04 +0900 Subject: [PATCH 03/16] chore: textlint testing environment settings MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit textlint testing 관련 환경 설정 진행. package에 mocha 및 textlint-tester 추가. --- package.json | 2 + yarn.lock | 234 ++++++++++++++++++++++++++++++++++++++++++++++++++- 2 files changed, 233 insertions(+), 3 deletions(-) diff --git a/package.json b/package.json index 7df0591eb..59bd632e1 100644 --- a/package.json +++ b/package.json @@ -76,6 +76,7 @@ "lint-staged": ">=10", "mdast-util-to-string": "^1.1.0", "metro-cache": "0.72.2", + "mocha": "^10.6.0", "npm-run-all": "^4.1.5", "patch-package": "^6.2.2", "postcss": "^8.4.5", @@ -95,6 +96,7 @@ "tailwindcss": "^3.4.1", "textlint": "^14.0.4", "textlint-filter-rule-comments": "^1.2.2", + "textlint-tester": "^14.0.4", "typescript": "^4.0.2", "unist-util-visit": "^2.0.3", "webpack-bundle-analyzer": "^4.5.0" diff --git a/yarn.lock b/yarn.lock index 1fb5df7e8..ae52b29cb 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1466,6 +1466,11 @@ ansi-colors@^4.1.1: resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.1.tgz#cbb9ae256bf750af1eab344f229aa27fe94ba348" integrity sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA== +ansi-colors@^4.1.3: + version "4.1.3" + resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.3.tgz#37611340eb2243e70cc604cad35d63270d48781b" + integrity sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw== + ansi-escapes@^4.3.0: version "4.3.2" resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.2.tgz#6b2291d1db7d98b6521d5f1efa42d0f3a9feb65e" @@ -1753,6 +1758,13 @@ brace-expansion@^1.1.7: balanced-match "^1.0.0" concat-map "0.0.1" +brace-expansion@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-2.0.1.tgz#1edc459e0f0c548486ecf9fc99f2221364b9a0ae" + integrity sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA== + dependencies: + balanced-match "^1.0.0" + braces@^3.0.1, braces@^3.0.2, braces@~3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" @@ -1760,6 +1772,11 @@ braces@^3.0.1, braces@^3.0.2, braces@~3.0.2: dependencies: fill-range "^7.0.1" +browser-stdout@^1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/browser-stdout/-/browser-stdout-1.3.1.tgz#baa559ee14ced73452229bad7326467c61fabd60" + integrity sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw== + browserslist@^4.12.0, browserslist@^4.19.1, browserslist@^4.6.4: version "4.19.1" resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.19.1.tgz#4ac0435b35ab655896c31d53018b6dd5e9e4c9a3" @@ -1830,6 +1847,11 @@ camelcase-css@^2.0.1: resolved "https://registry.yarnpkg.com/camelcase-css/-/camelcase-css-2.0.1.tgz#ee978f6947914cc30c6b44741b6ed1df7f043fd5" integrity sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA== +camelcase@^6.0.0: + version "6.3.0" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.3.0.tgz#5685b95eb209ac9c0c177467778c9c84df58ba9a" + integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== + caniuse-lite@^1.0.30000981, caniuse-lite@^1.0.30001109, caniuse-lite@^1.0.30001286, caniuse-lite@^1.0.30001297: version "1.0.30001301" resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001301.tgz#ebc9086026534cab0dab99425d9c3b4425e5f450" @@ -1985,6 +2007,15 @@ client-only@0.0.1: resolved "https://registry.yarnpkg.com/client-only/-/client-only-0.0.1.tgz#38bba5d403c41ab150bff64a95c85013cf73bca1" integrity sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA== +cliui@^7.0.2: + version "7.0.4" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-7.0.4.tgz#a0265ee655476fc807aea9df3df8df7783808b4f" + integrity sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ== + dependencies: + string-width "^4.2.0" + strip-ansi "^6.0.0" + wrap-ansi "^7.0.0" + collapse-white-space@^1.0.2: version "1.0.6" resolved "https://registry.yarnpkg.com/collapse-white-space/-/collapse-white-space-1.0.6.tgz#e63629c0016665792060dbbeb79c42239d2c5287" @@ -2243,6 +2274,18 @@ debug@^4.0.1, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.3: dependencies: ms "2.1.2" +debug@^4.3.5: + version "4.3.5" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.5.tgz#e83444eceb9fedd4a1da56d671ae2446a01a6e1e" + integrity sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg== + dependencies: + ms "2.1.2" + +decamelize@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-4.0.0.tgz#aa472d7bf660eb15f3494efd531cab7f2a709837" + integrity sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ== + decode-named-character-reference@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/decode-named-character-reference/-/decode-named-character-reference-1.0.2.tgz#daabac9690874c394c81e4162a0304b35d824f0e" @@ -3046,6 +3089,14 @@ find-up@^2.0.0, find-up@^2.1.0: dependencies: locate-path "^2.0.0" +find-up@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc" + integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng== + dependencies: + locate-path "^6.0.0" + path-exists "^4.0.0" + find-yarn-workspace-root@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/find-yarn-workspace-root/-/find-yarn-workspace-root-2.0.0.tgz#f47fb8d239c900eb78179aa81b66673eac88f7bd" @@ -3070,6 +3121,11 @@ flat-cache@^3.0.4: flatted "^3.1.0" rimraf "^3.0.2" +flat@^5.0.2: + version "5.0.2" + resolved "https://registry.yarnpkg.com/flat/-/flat-5.0.2.tgz#8ca6fe332069ffa9d324c327198c598259ceb241" + integrity sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ== + flatted@^2.0.0: version "2.0.2" resolved "https://registry.yarnpkg.com/flatted/-/flatted-2.0.2.tgz#4575b21e2bcee7434aa9be662f4b7b5f9c2b5138" @@ -3176,6 +3232,11 @@ gensync@^1.0.0-beta.2: resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0" integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg== +get-caller-file@^2.0.5: + version "2.0.5" + resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" + integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== + get-intrinsic@^1.0.2, get-intrinsic@^1.1.0, get-intrinsic@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.1.1.tgz#15f59f376f855c446963948f0d24cd3637b4abc6" @@ -3290,6 +3351,17 @@ glob@^7.2.3: once "^1.3.0" path-is-absolute "^1.0.0" +glob@^8.1.0: + version "8.1.0" + resolved "https://registry.yarnpkg.com/glob/-/glob-8.1.0.tgz#d388f656593ef708ee3e34640fdfb99a9fd1c33e" + integrity sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^5.0.1" + once "^1.3.0" + globals@^11.1.0: version "11.12.0" resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" @@ -3487,6 +3559,11 @@ hast-util-whitespace@^2.0.0: resolved "https://registry.yarnpkg.com/hast-util-whitespace/-/hast-util-whitespace-2.0.0.tgz#4fc1086467cc1ef5ba20673cb6b03cec3a970f1c" integrity sha512-Pkw+xBHuV6xFeJprJe2BBEoDV+AvQySaz3pPDRUs5PNZEMQjpXJJueqrpcHIXxnWTcAGi/UOCgVShlkY6kLoqg== +he@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f" + integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== + hosted-git-info@^2.1.4: version "2.8.9" resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.9.tgz#dffc0bf9a21c02209090f2aa69429e1414daf3f9" @@ -3816,7 +3893,7 @@ is-number@^7.0.0: resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== -is-plain-obj@^2.0.0: +is-plain-obj@^2.0.0, is-plain-obj@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-2.1.0.tgz#45e42e37fccf1f40da8e5f76ee21515840c09287" integrity sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA== @@ -3879,6 +3956,11 @@ is-typed-array@^1.1.13: dependencies: which-typed-array "^1.1.14" +is-unicode-supported@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz#3f26c76a809593b52bfa2ecb5710ed2779b522a7" + integrity sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw== + is-url@^1.2.2: version "1.2.4" resolved "https://registry.yarnpkg.com/is-url/-/is-url-1.2.4.tgz#04a4df46d28c4cff3d73d01ff06abeb318a1aa52" @@ -4128,6 +4210,13 @@ locate-path@^2.0.0: p-locate "^2.0.0" path-exists "^3.0.0" +locate-path@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-6.0.0.tgz#55321eb309febbc59c4801d931a72452a681d286" + integrity sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw== + dependencies: + p-locate "^5.0.0" + lodash.merge@^4.6.2: version "4.6.2" resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a" @@ -4148,6 +4237,14 @@ lodash@^4.17.15, lodash@^4.17.20, lodash@^4.17.21: resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== +log-symbols@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-4.1.0.tgz#3fbdbb95b4683ac9fc785111e792e558d4abd503" + integrity sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg== + dependencies: + chalk "^4.1.0" + is-unicode-supported "^0.1.0" + log-update@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/log-update/-/log-update-4.0.0.tgz#589ecd352471f2a1c0c570287543a64dfd20e0a1" @@ -5091,6 +5188,13 @@ minimatch@^3.1.1: dependencies: brace-expansion "^1.1.7" +minimatch@^5.0.1, minimatch@^5.1.6: + version "5.1.6" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-5.1.6.tgz#1cfcb8cf5522ea69952cd2af95ae09477f122a96" + integrity sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g== + dependencies: + brace-expansion "^2.0.1" + minimist@^1.2.0: version "1.2.7" resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.7.tgz#daa1c4d91f507390437c6a8bc01078e7000c4d18" @@ -5108,6 +5212,32 @@ mkdirp@^0.5.1, mkdirp@^0.5.6: dependencies: minimist "^1.2.6" +mocha@^10.6.0: + version "10.6.0" + resolved "https://registry.yarnpkg.com/mocha/-/mocha-10.6.0.tgz#465fc66c52613088e10018989a3b98d5e11954b9" + integrity sha512-hxjt4+EEB0SA0ZDygSS015t65lJw/I2yRCS3Ae+SJ5FrbzrXgfYwJr96f0OvIXdj7h4lv/vLCrH3rkiuizFSvw== + dependencies: + ansi-colors "^4.1.3" + browser-stdout "^1.3.1" + chokidar "^3.5.3" + debug "^4.3.5" + diff "^5.2.0" + escape-string-regexp "^4.0.0" + find-up "^5.0.0" + glob "^8.1.0" + he "^1.2.0" + js-yaml "^4.1.0" + log-symbols "^4.1.0" + minimatch "^5.1.6" + ms "^2.1.3" + serialize-javascript "^6.0.2" + strip-json-comments "^3.1.1" + supports-color "^8.1.1" + workerpool "^6.5.1" + yargs "^16.2.0" + yargs-parser "^20.2.9" + yargs-unparser "^2.0.0" + mri@^1.1.0: version "1.2.0" resolved "https://registry.yarnpkg.com/mri/-/mri-1.2.0.tgz#6721480fec2a11a4889861115a48b6cbe7cc8f0b" @@ -5128,7 +5258,7 @@ ms@2.1.2: resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== -ms@2.1.3, ms@^2.1.1: +ms@2.1.3, ms@^2.1.1, ms@^2.1.3: version "2.1.3" resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== @@ -5443,6 +5573,13 @@ p-limit@^1.1.0: dependencies: p-try "^1.0.0" +p-limit@^3.0.2: + version "3.1.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b" + integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== + dependencies: + yocto-queue "^0.1.0" + p-locate@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-2.0.0.tgz#20a0103b222a70c8fd39cc2e580680f3dde5ec43" @@ -5450,6 +5587,13 @@ p-locate@^2.0.0: dependencies: p-limit "^1.1.0" +p-locate@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-5.0.0.tgz#83c8315c6785005e3bd021839411c9e110e6d834" + integrity sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw== + dependencies: + p-limit "^3.0.2" + p-map@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/p-map/-/p-map-4.0.0.tgz#bb2f95a5eda2ec168ec9274e06a747c3e2904d2b" @@ -5553,6 +5697,11 @@ path-exists@^3.0.0: resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" integrity sha1-zg6+ql94yxiSXqfYENe1mwEP1RU= +path-exists@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" + integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== + path-is-absolute@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" @@ -6108,6 +6257,13 @@ queue-microtask@^1.2.2: resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== +randombytes@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" + integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== + dependencies: + safe-buffer "^5.1.0" + range-parser@~1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031" @@ -6429,6 +6585,11 @@ repeat-string@^1.0.0, repeat-string@^1.5.4: resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" integrity sha1-jcrkcOHIirwtYA//Sndihtp15jc= +require-directory@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" + integrity sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q== + require-from-string@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-2.0.2.tgz#89a7fdd938261267318eafe14f9c32e598c36909" @@ -6575,7 +6736,7 @@ safe-array-concat@^1.1.2: has-symbols "^1.0.3" isarray "^2.0.5" -safe-buffer@5.2.1: +safe-buffer@5.2.1, safe-buffer@^5.1.0: version "5.2.1" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== @@ -6657,6 +6818,13 @@ send@0.18.0: range-parser "~1.2.1" statuses "2.0.1" +serialize-javascript@^6.0.2: + version "6.0.2" + resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-6.0.2.tgz#defa1e055c83bf6d59ea805d8da862254eb6a6c2" + integrity sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g== + dependencies: + randombytes "^2.1.0" + serve-static@1.15.0: version "1.15.0" resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.15.0.tgz#faaef08cffe0a1a62f60cad0c4e513cff0ac9540" @@ -7074,6 +7242,13 @@ supports-color@^7.1.0: dependencies: has-flag "^4.0.0" +supports-color@^8.1.1: + version "8.1.1" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-8.1.1.tgz#cd6fc17e28500cff56c1b86c0a7fd4a54a73005c" + integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q== + dependencies: + has-flag "^4.0.0" + supports-color@^9.2.1: version "9.2.1" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-9.2.1.tgz#599dc9d45acf74c6176e0d880bab1d7d718fe891" @@ -7144,6 +7319,16 @@ textlint-filter-rule-comments@^1.2.2: resolved "https://registry.yarnpkg.com/textlint-filter-rule-comments/-/textlint-filter-rule-comments-1.2.2.tgz#3a72c494994e068e0e4aaad0f24ea7cfe338503a" integrity sha512-AtyxreCPb3Hq/bd6Qd6szY1OGgnW34LOjQXAHzE8NoXbTUudQqALPdRe+hvRsf81rnmGLxBiCUXZbnbpIseFyw== +textlint-tester@^14.0.4: + version "14.0.4" + resolved "https://registry.yarnpkg.com/textlint-tester/-/textlint-tester-14.0.4.tgz#ed1b4c65bbd2fe5f8f78bb02ebc6400bef393a7a" + integrity sha512-3IDMVkyOrlQ3adMA+1fgyQi1LG816OJYDHMh+G3s9ZgLXzsWgXZwO6C3Bh+xMrrW35bIkG2na+XKvKEnXpua2A== + dependencies: + "@textlint/feature-flag" "^14.0.4" + "@textlint/kernel" "^14.0.4" + "@textlint/textlint-plugin-markdown" "^14.0.4" + "@textlint/textlint-plugin-text" "^14.0.4" + textlint@^14.0.4: version "14.0.4" resolved "https://registry.yarnpkg.com/textlint/-/textlint-14.0.4.tgz#226a79ad3c0667042e849ceb54f5c8a3f0594475" @@ -7784,6 +7969,11 @@ word-wrap@^1.2.5: resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.5.tgz#d2c45c6dd4fbce621a66f136cbe328afd0410b34" integrity sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA== +workerpool@^6.5.1: + version "6.5.1" + resolved "https://registry.yarnpkg.com/workerpool/-/workerpool-6.5.1.tgz#060f73b39d0caf97c6db64da004cd01b4c099544" + integrity sha512-Fs4dNYcsdpYSAfVxhnl1L5zTksjvOJxtC5hzMNl+1t9B8hTJTdKDyZ5ju7ztgPy+ft9tBFXoOlDNiOT9WUXZlA== + wrap-ansi@^6.2.0: version "6.2.0" resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-6.2.0.tgz#e9393ba07102e6c91a3b221478f0257cd2856e53" @@ -7829,6 +8019,11 @@ xtend@^4.0.0, xtend@^4.0.1: resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== +y18n@^5.0.5: + version "5.0.8" + resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55" + integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA== + yallist@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" @@ -7844,6 +8039,39 @@ yaml@^2.1.1: resolved "https://registry.yarnpkg.com/yaml/-/yaml-2.3.1.tgz#02fe0975d23cd441242aa7204e09fc28ac2ac33b" integrity sha512-2eHWfjaoXgTBC2jNM1LRef62VQa0umtvRiDSk6HSzW7RvS5YtkabJrwYLLEKWBc8a5U2PTSCs+dJjUTJdlHsWQ== +yargs-parser@^20.2.2, yargs-parser@^20.2.9: + version "20.2.9" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.9.tgz#2eb7dc3b0289718fc295f362753845c41a0c94ee" + integrity sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w== + +yargs-unparser@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/yargs-unparser/-/yargs-unparser-2.0.0.tgz#f131f9226911ae5d9ad38c432fe809366c2325eb" + integrity sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA== + dependencies: + camelcase "^6.0.0" + decamelize "^4.0.0" + flat "^5.0.2" + is-plain-obj "^2.1.0" + +yargs@^16.2.0: + version "16.2.0" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-16.2.0.tgz#1c82bf0f6b6a66eafce7ef30e376f49a12477f66" + integrity sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw== + dependencies: + cliui "^7.0.2" + escalade "^3.1.1" + get-caller-file "^2.0.5" + require-directory "^2.1.1" + string-width "^4.2.0" + y18n "^5.0.5" + yargs-parser "^20.2.2" + +yocto-queue@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" + integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== + zod@3.21.4: version "3.21.4" resolved "https://registry.yarnpkg.com/zod/-/zod-3.21.4.tgz#10882231d992519f0a10b5dd58a38c9dabbb64db" From b9acd0c6b63ac306115651dc45b608cd5d8a1610 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EB=A3=A8=EB=B0=80LuMir?= Date: Fri, 5 Jul 2024 13:24:43 +0900 Subject: [PATCH 04/16] test: new tests about strip.js MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ./textlint/utils/strip.js에 포함된 모든 함수에 대한 테스트 작성. --- textlint/data/tests/strip.spec.js | 101 +++++++++++++++++++++++++++++ textlint/tests/utils/strip.spec.js | 18 +++++ textlint/utils/strip.js | 24 +++++++ 3 files changed, 143 insertions(+) create mode 100644 textlint/data/tests/strip.spec.js create mode 100644 textlint/tests/utils/strip.spec.js create mode 100644 textlint/utils/strip.js diff --git a/textlint/data/tests/strip.spec.js b/textlint/data/tests/strip.spec.js new file mode 100644 index 000000000..16a39d4b1 --- /dev/null +++ b/textlint/data/tests/strip.spec.js @@ -0,0 +1,101 @@ +module.exports = { + stripDoubleQuotes: [ + // Left: Nothing, Inner: Nothing, Right: Nothing + { + actual: '""', + expected: '', + }, + // Left: Nothing, Inner: Nothing, Right: Something + { + actual: '"" not-stripped-right', + expected: ' not-stripped-right', + }, + // Left: Nothing, Inner: Something, Right: Nothing + { + actual: '"stripped"', + expected: '', + }, + // Left: Nothing, Inner: Something, Right: Something + { + actual: '"stripped" not-stripped-right', + expected: ' not-stripped-right', + }, + // Left: Something, Inner: Nothing, Right: Nothing + { + actual: 'not-stripped-left ""', + expected: 'not-stripped-left ', + }, + // Left: Something, Inner: Nothing, Right: Something + { + actual: 'not-stripped-left "" not-stripped-right', + expected: 'not-stripped-left not-stripped-right', + }, + // Left: Something, Inner: Something, Right: Nothing + { + actual: 'not-stripped-left "stripped"', + expected: 'not-stripped-left ', + }, + // Left: Something, Inner: Something, Right: Something + { + actual: 'not-stripped-left "stripped" not-stripped-right', + expected: 'not-stripped-left not-stripped-right', + }, + // With only one double quote + { + actual: 'this double quote " should not be stripped', + expected: 'this double quote " should not be stripped', + }, + ], + stripParentheses: [ + // Left: Nothing, Inner: Nothing, Right: Nothing + { + actual: '()', + expected: '', + }, + // Left: Nothing, Inner: Nothing, Right: Something + { + actual: '() not-stripped-right', + expected: ' not-stripped-right', + }, + // Left: Nothing, Inner: Something, Right: Nothing + { + actual: '(stripped)', + expected: '', + }, + // Left: Nothing, Inner: Something, Right: Something + { + actual: '(stripped) not-stripped-right', + expected: ' not-stripped-right', + }, + // Left: Something, Inner: Nothing, Right: Nothing + { + actual: 'not-stripped-left ()', + expected: 'not-stripped-left ', + }, + // Left: Something, Inner: Nothing, Right: Something + { + actual: 'not-stripped-left () not-stripped-right', + expected: 'not-stripped-left not-stripped-right', + }, + // Left: Something, Inner: Something, Right: Nothing + { + actual: 'not-stripped-left (stripped)', + expected: 'not-stripped-left ', + }, + // Left: Something, Inner: Something, Right: Something + { + actual: 'not-stripped-left (stripped) not-stripped-right', + expected: 'not-stripped-left not-stripped-right', + }, + // With only one left parentheses + { + actual: 'this left parentheses ( should not be stripped', + expected: 'this left parentheses ( should not be stripped', + }, + // With only one right parentheses + { + actual: 'this right parentheses ) should not be stripped', + expected: 'this right parentheses ) should not be stripped', + }, + ], +}; diff --git a/textlint/tests/utils/strip.spec.js b/textlint/tests/utils/strip.spec.js new file mode 100644 index 000000000..b311667f3 --- /dev/null +++ b/textlint/tests/utils/strip.spec.js @@ -0,0 +1,18 @@ +const assert = require('assert'); +const functions = require('../../utils/strip'); +const testCases = require('../../data/tests/strip.spec'); + +describe('Util strip strictEqual testing', function () { + Object.keys(testCases).forEach((funcName) => { + describe(funcName, function () { + testCases[funcName].forEach((testCase) => { + it(`${testCase.actual} => ${testCase.expected}`, function () { + assert.strictEqual( + functions[funcName](testCase.actual), + testCase.expected + ); + }); + }); + }); + }); +}); diff --git a/textlint/utils/strip.js b/textlint/utils/strip.js new file mode 100644 index 000000000..a750f6ab1 --- /dev/null +++ b/textlint/utils/strip.js @@ -0,0 +1,24 @@ +/** + * Remove text inside double quotes `""` from the input string. + * + * @param {string} text The input string. + * @returns {string} The string with text inside double quotes `""` removed. + */ +function stripDoubleQuotes(text) { + return text.replace(/"[^"]*"/g, ''); +} + +/** + * Remove text inside parentheses `()` from the input string. + * + * @param {string} text The input string. + * @returns {string} The string with text inside parentheses `()` removed. + */ +function stripParentheses(text) { + return text.replace(/\([^)]*\)/g, ''); +} + +module.exports = { + stripDoubleQuotes, + stripParentheses, +}; From 0b4d0f7fd8793e18bcdab52d14df51742006c50b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EB=A3=A8=EB=B0=80LuMir?= Date: Fri, 5 Jul 2024 14:18:13 +0900 Subject: [PATCH 05/16] test: new tests about is.js MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ./textlint/utils/is.js에 포함된 모든 함수에 대한 테스트 작성. --- textlint/data/tests/is.spec.js | 64 +++++++++++++++++++++++++++++++++ textlint/tests/utils/is.spec.js | 18 ++++++++++ textlint/utils/is.js | 15 ++++++++ 3 files changed, 97 insertions(+) create mode 100644 textlint/data/tests/is.spec.js create mode 100644 textlint/tests/utils/is.spec.js create mode 100644 textlint/utils/is.js diff --git a/textlint/data/tests/is.spec.js b/textlint/data/tests/is.spec.js new file mode 100644 index 000000000..a7fa970fa --- /dev/null +++ b/textlint/data/tests/is.spec.js @@ -0,0 +1,64 @@ +module.exports = { + isKoreanIncluded: [ + // Should return true for string containing Korean characters + { + actual: '안녕하세요', + expected: true, + }, + { + actual: 'ㄱ', + expected: true, + }, + { + actual: 'ㅏ', + expected: true, + }, + { + actual: 'Hello 안녕하세요', + expected: true, + }, + { + actual: '123 안녕하세요', + expected: true, + }, + { + actual: 'Hello 123 !@#$%^&*() 한글 こんにちは 你好 ', + expected: true, + }, + // Should return false for string not containing Korean characters + { + actual: 'Hello', // English + expected: false, + }, + { + actual: 'こんにちは', // Japanese + expected: false, + }, + { + actual: '你好', // Chinese + expected: false, + }, + { + actual: '123', // Number + expected: false, + }, + { + actual: '!@#$%^&*()', // Special + expected: false, + }, + // Should return false for empty string + { + actual: '', + expected: false, + }, + // Should return false for string containing only spaces + { + actual: ' ', + expected: false, + }, + { + actual: ' ', + expected: false, + }, + ], +}; diff --git a/textlint/tests/utils/is.spec.js b/textlint/tests/utils/is.spec.js new file mode 100644 index 000000000..637ad04f6 --- /dev/null +++ b/textlint/tests/utils/is.spec.js @@ -0,0 +1,18 @@ +const assert = require('assert'); +const functions = require('../../utils/is'); +const testCases = require('../../data/tests/is.spec'); + +describe('Util is strictEqual testing', function () { + Object.keys(testCases).forEach((funcName) => { + describe(funcName, function () { + testCases[funcName].forEach((testCase) => { + it(`${testCase.actual} => ${testCase.expected}`, function () { + assert.strictEqual( + functions[funcName](testCase.actual), + testCase.expected + ); + }); + }); + }); + }); +}); diff --git a/textlint/utils/is.js b/textlint/utils/is.js new file mode 100644 index 000000000..62d550b3e --- /dev/null +++ b/textlint/utils/is.js @@ -0,0 +1,15 @@ +/** + * Check if a string contains any Korean characters. + * + * @param {string} text The string to check. + * @returns {boolean} Returns true if the string contains Korean characters, false otherwise. + */ +function isKoreanIncluded(text) { + const regex = /[ㄱ-ㅎㅏ-ㅣ가-힣]/; + + return regex.test(text); +} + +module.exports = { + isKoreanIncluded, +}; From 8150c6d88441975ed7d994b4e0a0b79b7e46b98e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EB=A3=A8=EB=B0=80LuMir?= Date: Fri, 5 Jul 2024 14:55:08 +0900 Subject: [PATCH 06/16] test: new tests about errMsg.js MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ./textlint/utils/errMsg.js에 포함된 모든 함수에 대한 테스트 작성. --- textlint/data/tests/errMsg.spec.js | 36 +++++++++++++++++++++++++++++ textlint/tests/utils/errMsg.spec.js | 18 +++++++++++++++ textlint/utils/errMsg.js | 15 ++++++++++++ 3 files changed, 69 insertions(+) create mode 100644 textlint/data/tests/errMsg.spec.js create mode 100644 textlint/tests/utils/errMsg.spec.js create mode 100644 textlint/utils/errMsg.js diff --git a/textlint/data/tests/errMsg.spec.js b/textlint/data/tests/errMsg.spec.js new file mode 100644 index 000000000..43685304c --- /dev/null +++ b/textlint/data/tests/errMsg.spec.js @@ -0,0 +1,36 @@ +module.exports = { + errMsgTranslateGlossary: [ + // source: Nothing, target: Nothing + { + actual: { + source: '', + target: '', + }, + expected: `''은/는 ''(으)로 번역되어야 합니다.`, + }, + // source: Nothing, target: Something + { + actual: { + source: '', + target: '무언가', + }, + expected: `''은/는 '무언가'(으)로 번역되어야 합니다.`, + }, + // source: Something, target: Nothing + { + actual: { + source: 'Something', + target: '', + }, + expected: `'Something'은/는 ''(으)로 번역되어야 합니다.`, + }, + // source: Something, target: Something + { + actual: { + source: 'Something', + target: '무언가', + }, + expected: `'Something'은/는 '무언가'(으)로 번역되어야 합니다.`, + }, + ], +}; diff --git a/textlint/tests/utils/errMsg.spec.js b/textlint/tests/utils/errMsg.spec.js new file mode 100644 index 000000000..b5daf0d68 --- /dev/null +++ b/textlint/tests/utils/errMsg.spec.js @@ -0,0 +1,18 @@ +const assert = require('assert'); +const functions = require('../../utils/errMsg'); +const testCases = require('../../data/tests/errMsg.spec'); + +describe('Util errMsg strictEqual testing', function () { + Object.keys(testCases).forEach((funcName) => { + describe(funcName, function () { + testCases[funcName].forEach((testCase) => { + it(`${testCase.actual.source}, ${testCase.actual.target} => ${testCase.expected}`, function () { + assert.strictEqual( + functions[funcName](testCase.actual.source, testCase.actual.target), + testCase.expected + ); + }); + }); + }); + }); +}); diff --git a/textlint/utils/errMsg.js b/textlint/utils/errMsg.js new file mode 100644 index 000000000..21697f6b1 --- /dev/null +++ b/textlint/utils/errMsg.js @@ -0,0 +1,15 @@ +/** + * Returns error message using the given source and target texts. + * + * @param {string} source `'${source}'` part in return value. + * @param {string} target `'${target}'` part in return value. + * @returns {string} The error message. `'${source}'은/는 '${target}'(으)로 번역되어야 합니다.` + */ +function errMsgTranslateGlossary(source, target) { + return `'${source}'은/는 '${target}'(으)로 번역되어야 합니다.`; +} + +// Export the module +module.exports = { + errMsgTranslateGlossary, +}; From 72c5fecff466d9256f1c14b2d7ef1c156f0d4bdd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EB=A3=A8=EB=B0=80LuMir?= Date: Fri, 5 Jul 2024 23:19:15 +0900 Subject: [PATCH 07/16] feat: new rule translateGlossary.js MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit translateGlossary 규칙 구현 완료. --- textlint/data/rules/translateGlossary.js | 429 +++++++++++++++++++++++ textlint/data/translateGlossary.js | 246 ------------- textlint/rules/translateGlossary.js | 33 +- 3 files changed, 447 insertions(+), 261 deletions(-) create mode 100644 textlint/data/rules/translateGlossary.js delete mode 100644 textlint/data/translateGlossary.js diff --git a/textlint/data/rules/translateGlossary.js b/textlint/data/rules/translateGlossary.js new file mode 100644 index 000000000..80efe632a --- /dev/null +++ b/textlint/data/rules/translateGlossary.js @@ -0,0 +1,429 @@ +module.exports = [ + { + sources: [/Tutorial/, /[듀튜]토리얼/], + target: '자습서', + meta: { + term: 'Tutorial', + discussions: [2], + type: 'React', + }, + }, + { + sources: [/Declarative/], + target: '선언적인', + meta: { + term: 'Declarative', + discussions: [2], + type: 'React', + }, + }, + { + sources: [/Component/, /컴퍼넌트/, /컴포넌츠/], + target: '컴포넌트', + meta: { + term: 'Component', + discussions: [2], + type: 'React', + }, + }, + { + sources: [/Stateful/], + target: '유상태', + meta: { + term: 'Stateful', + discussions: [2], + type: 'React', + }, + }, + { + sources: [/Stateless/], + target: '무상태', + meta: { + term: 'Stateless', + discussions: [2], + type: 'React', + }, + }, + { + sources: [ + /Render(?!er)(?:ing)?/, + /랜더링/, + /[렌랜]더(?!링)\s?[하한할함합]/, + ], + target: '렌더링(하다)', + meta: { + term: 'Render', + discussions: [2], + type: 'React', + }, + }, + { + sources: [/Data/, /대이터/], + target: '데이터', + meta: { + term: 'Data', + discussions: [2], + type: 'React', + }, + }, + { + sources: [/Application/, /어플리케이[선션]/, /응용\s?프로그램/], + target: '애플리케이션', + meta: { + term: 'Application', + discussions: [2], + type: 'React', + }, + }, + { + sources: [/External/], + target: '외부', + meta: { + term: 'External', + discussions: [2], + type: 'React', + }, + }, + { + sources: [/Plugin/], + target: '플러그인', + meta: { + term: 'Plugin', + discussions: [2], + type: 'React', + }, + }, + { + sources: [/Third\s?Plugin/], + target: '서드파티 플러그인', + meta: { + term: 'Third Plugin', + discussions: [2], + type: 'React', + }, + }, + { + sources: [/Syntax/, /[신씬]택스/], + target: '문법', + meta: { + term: 'Syntax', + discussions: [2], + type: 'React', + }, + }, + { + sources: [/Embedding\s?Expression/], + target: '표현식 포함하기', + meta: { + term: 'Embedding Expression', + discussions: [2], + type: 'React', + }, + }, + { + sources: [/Attribute/, /애트리뷰트/], + target: '어트리뷰트', + meta: { + term: 'Attribute', + discussions: [2], + type: 'React', + }, + }, + { + sources: [/Element/, /[엘앨]리먼츠/, /앨리먼트/], + target: '엘리먼트', + meta: { + term: 'Element', + discussions: [2], + type: 'React', + }, + }, + { + sources: [/Function/, /Functional/], + target: '함수', + meta: { + term: 'Function', + discussions: [2], + type: 'React', + }, + }, + { + sources: [/Class/], + target: '클래스', + meta: { + term: 'Class', + discussions: [2], + type: 'React', + }, + }, + { + sources: [/Composition/, /[컴콤][퍼포]지[선션]/], + target: '합성', + meta: { + term: 'Composition', + discussions: [2], + type: 'React', + }, + }, + { + sources: [/Inheritance/], + target: '상속', + meta: { + term: 'Inheritance', + discussions: [2], + type: 'React', + }, + }, + { + sources: [/Life\s?Cycle/, /라이프\s?사이클/, /생명 주기/], + target: '생명주기', + meta: { + term: 'Lifecycle', + discussions: [2], + type: 'React', + }, + }, + { + sources: [/Handling/, /핸들링/], + target: '처리', + meta: { + term: 'Handling', + discussions: [2], + type: 'React', + }, + }, + { + sources: [/Conditional/, /컨디[서셔][날널]/], + target: '조건부', + meta: { + term: 'Conditional', + discussions: [2], + type: 'React', + }, + }, + { + sources: [/Operator/, /오퍼[레래]이터/], + target: '연산자', + meta: { + term: 'Operator', + discussions: [2], + type: 'React', + }, + }, + { + sources: [/Reuse/], + target: '재사용', + meta: { + term: 'Reuse', + discussions: [2], + type: 'React', + }, + }, + { + sources: [/Mock/], + target: '모의', + meta: { + term: 'Mock', + discussions: [2], + type: 'React', + }, + }, + { + sources: [/Callback/], + target: '콜백', + meta: { + term: 'Callback', + discussions: [2], + type: 'React', + }, + }, + { + sources: [/Synthetic/], + target: '합성', + meta: { + term: 'Synthetic', + discussions: [2], + type: 'React', + }, + }, + { + sources: [/Event/], + target: '이벤트', + meta: { + term: 'Event', + discussions: [2], + type: 'React', + }, + }, + { + sources: [/Higher\s?Order/], + target: '고차', + meta: { + term: 'Higher Order', + discussions: [2], + type: 'React', + }, + }, + { + sources: [/(? { - source.forEach((typo) => { - // Do not use 'g' flag with Textlint's 'pretty-error' option. It prevents Textlint from finding the exact location. - const match = text.match(new RegExp(typo, 'i')); + if (!isKoreanIncluded(textStripped)) return; // Textlint only when korean is included in `textStripped`. + + data.forEach(({sources, target}) => { + sources.forEach((source) => { + const matchIndex = text.match(new RegExp(source, 'i')); // Do not use 'g' flag with textlint's CLI 'pretty-error' option. It prevents textlint from finding the exact locations. + const match = textStripped.match(new RegExp(source, 'i')); if (match) { report( node, - new RuleError( - `'${typo}'은/는 '${target}'(으)로 번역되어야 합니다.`, - { - padding: locator.range([ - match.index, - match.index + text.length, - ]), - } - ) + new RuleError(errMsgTranslateGlossary(match[0], target), { + padding: locator.range([ + matchIndex.index, + matchIndex.index + text.length, + ]), + }) ); } }); From 5bacb6162b5167dec6197fa0185b2ac01cfa3214 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EB=A3=A8=EB=B0=80LuMir?= Date: Sat, 6 Jul 2024 00:30:00 +0900 Subject: [PATCH 08/16] fix: incorrect regex in translateGlossary.js MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 잘못된 정규표현식 표현 수정. --- textlint/data/rules/translateGlossary.js | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/textlint/data/rules/translateGlossary.js b/textlint/data/rules/translateGlossary.js index 80efe632a..b81a61b43 100644 --- a/textlint/data/rules/translateGlossary.js +++ b/textlint/data/rules/translateGlossary.js @@ -94,10 +94,10 @@ module.exports = [ }, }, { - sources: [/Third\s?Plugin/], - target: '서드파티 플러그인', + sources: [/Third/, /써드/], + target: '서드', meta: { - term: 'Third Plugin', + term: 'Third', discussions: [2], type: 'React', }, @@ -328,7 +328,7 @@ module.exports = [ }, }, { - sources: [/Propert[y(?:ies)]/], + sources: [/Propert(?:y|ies)/], target: '프로퍼티', meta: { term: 'Property', @@ -373,7 +373,7 @@ module.exports = [ }, }, { - sources: [/Interacti[(?:vity)(?:on)]/, /인터[랙렉][선션]/], + sources: [/Interacti(?:vity|on)/, /인터[랙렉][선션]/], target: '상호작용', meta: { term: 'Interactivity', From 37d3539d9bc9c485080681b17d7d2fd02cf328b9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EB=A3=A8=EB=B0=80LuMir?= Date: Sat, 6 Jul 2024 00:38:54 +0900 Subject: [PATCH 09/16] test: new tests about translateGlossary.js MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ./textlint/rules/translateGlossary.js에 대한 테스트 작성. --- .../tests/rules/translateGlossary.spec.js | 28 +++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 textlint/tests/rules/translateGlossary.spec.js diff --git a/textlint/tests/rules/translateGlossary.spec.js b/textlint/tests/rules/translateGlossary.spec.js new file mode 100644 index 000000000..6fc78f1ae --- /dev/null +++ b/textlint/tests/rules/translateGlossary.spec.js @@ -0,0 +1,28 @@ +const TextLintTester = require('textlint-tester').default; +const data = require('../../data/rules/translateGlossary'); +const rule = require('../../rules/translateGlossary'); +const {errMsgTranslateGlossary} = require('../../utils/errMsg'); + +const tester = new TextLintTester(); + +describe('translateGlossary', function () { + data.forEach(({target, meta}) => { + tester.run(`term: ${meta.term}`, rule, { + invalid: [ + { + text: `한글이 포함된 Str node. ${meta.term} 가나다 abc.`, + errors: [ + { + message: errMsgTranslateGlossary(meta.term, target), + }, + ], + }, + ], + valid: [ + `한글이 포함된 Str node. "${meta.term}" 라마바 def.`, // stripDoubleQuotes func should be applied. + `한글이 포함된 Str node. (${meta.term}) 사아자 ghi.`, // stripParentheses func should be applied. + target, + ], + }); + }); +}); From e2422f33de2ddf70c7a1d11c66ee6869d1c899b7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EB=A3=A8=EB=B0=80LuMir?= Date: Sat, 6 Jul 2024 00:44:09 +0900 Subject: [PATCH 10/16] rename: textlint/data/tests -> textlint/data/utils MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 디렉토리 이름 변경. --- textlint/data/{tests => utils}/errMsg.spec.js | 0 textlint/data/{tests => utils}/is.spec.js | 0 textlint/data/{tests => utils}/strip.spec.js | 0 3 files changed, 0 insertions(+), 0 deletions(-) rename textlint/data/{tests => utils}/errMsg.spec.js (100%) rename textlint/data/{tests => utils}/is.spec.js (100%) rename textlint/data/{tests => utils}/strip.spec.js (100%) diff --git a/textlint/data/tests/errMsg.spec.js b/textlint/data/utils/errMsg.spec.js similarity index 100% rename from textlint/data/tests/errMsg.spec.js rename to textlint/data/utils/errMsg.spec.js diff --git a/textlint/data/tests/is.spec.js b/textlint/data/utils/is.spec.js similarity index 100% rename from textlint/data/tests/is.spec.js rename to textlint/data/utils/is.spec.js diff --git a/textlint/data/tests/strip.spec.js b/textlint/data/utils/strip.spec.js similarity index 100% rename from textlint/data/tests/strip.spec.js rename to textlint/data/utils/strip.spec.js From 4054a4665e9f6a9d7e54028e91129fac23f7c3ea Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EB=A3=A8=EB=B0=80LuMir?= Date: Sat, 6 Jul 2024 18:25:27 +0900 Subject: [PATCH 11/16] fix: correct path handling for textlint/tests/utils MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 모듈 불러오기 경로가 잘못되어, 수정 진행. --- textlint/tests/utils/errMsg.spec.js | 2 +- textlint/tests/utils/is.spec.js | 2 +- textlint/tests/utils/strip.spec.js | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/textlint/tests/utils/errMsg.spec.js b/textlint/tests/utils/errMsg.spec.js index b5daf0d68..e8092e1d4 100644 --- a/textlint/tests/utils/errMsg.spec.js +++ b/textlint/tests/utils/errMsg.spec.js @@ -1,6 +1,6 @@ const assert = require('assert'); const functions = require('../../utils/errMsg'); -const testCases = require('../../data/tests/errMsg.spec'); +const testCases = require('../../data/utils/errMsg.spec'); describe('Util errMsg strictEqual testing', function () { Object.keys(testCases).forEach((funcName) => { diff --git a/textlint/tests/utils/is.spec.js b/textlint/tests/utils/is.spec.js index 637ad04f6..22a805e6a 100644 --- a/textlint/tests/utils/is.spec.js +++ b/textlint/tests/utils/is.spec.js @@ -1,6 +1,6 @@ const assert = require('assert'); const functions = require('../../utils/is'); -const testCases = require('../../data/tests/is.spec'); +const testCases = require('../../data/utils/is.spec'); describe('Util is strictEqual testing', function () { Object.keys(testCases).forEach((funcName) => { diff --git a/textlint/tests/utils/strip.spec.js b/textlint/tests/utils/strip.spec.js index b311667f3..365cf90ee 100644 --- a/textlint/tests/utils/strip.spec.js +++ b/textlint/tests/utils/strip.spec.js @@ -1,6 +1,6 @@ const assert = require('assert'); const functions = require('../../utils/strip'); -const testCases = require('../../data/tests/strip.spec'); +const testCases = require('../../data/utils/strip.spec'); describe('Util strip strictEqual testing', function () { Object.keys(testCases).forEach((funcName) => { From a77ce93897add9652ef60c464fcb7cfb04288712 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EB=A3=A8=EB=B0=80LuMir?= Date: Sat, 6 Jul 2024 18:38:09 +0900 Subject: [PATCH 12/16] refactor: change the structure of textlint/data/rules/translateGlossary.js MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 확장성을 위해 데이터 구조 변경. --- textlint/data/rules/translateGlossary.js | 813 +++++++++--------- textlint/rules/translateGlossary.js | 32 +- .../tests/rules/translateGlossary.spec.js | 36 +- 3 files changed, 420 insertions(+), 461 deletions(-) diff --git a/textlint/data/rules/translateGlossary.js b/textlint/data/rules/translateGlossary.js index b81a61b43..25ef21429 100644 --- a/textlint/data/rules/translateGlossary.js +++ b/textlint/data/rules/translateGlossary.js @@ -1,429 +1,384 @@ -module.exports = [ - { - sources: [/Tutorial/, /[듀튜]토리얼/], - target: '자습서', - meta: { - term: 'Tutorial', - discussions: [2], - type: 'React', - }, - }, - { - sources: [/Declarative/], - target: '선언적인', - meta: { - term: 'Declarative', - discussions: [2], - type: 'React', - }, - }, - { - sources: [/Component/, /컴퍼넌트/, /컴포넌츠/], - target: '컴포넌트', - meta: { - term: 'Component', - discussions: [2], - type: 'React', - }, - }, - { - sources: [/Stateful/], - target: '유상태', - meta: { - term: 'Stateful', - discussions: [2], - type: 'React', - }, - }, - { - sources: [/Stateless/], - target: '무상태', - meta: { - term: 'Stateless', - discussions: [2], - type: 'React', - }, - }, - { - sources: [ - /Render(?!er)(?:ing)?/, - /랜더링/, - /[렌랜]더(?!링)\s?[하한할함합]/, - ], - target: '렌더링(하다)', - meta: { - term: 'Render', - discussions: [2], - type: 'React', - }, - }, - { - sources: [/Data/, /대이터/], - target: '데이터', - meta: { - term: 'Data', - discussions: [2], - type: 'React', - }, - }, - { - sources: [/Application/, /어플리케이[선션]/, /응용\s?프로그램/], - target: '애플리케이션', - meta: { - term: 'Application', - discussions: [2], - type: 'React', - }, - }, - { - sources: [/External/], - target: '외부', - meta: { - term: 'External', - discussions: [2], - type: 'React', - }, - }, - { - sources: [/Plugin/], - target: '플러그인', - meta: { - term: 'Plugin', - discussions: [2], - type: 'React', - }, - }, - { - sources: [/Third/, /써드/], - target: '서드', - meta: { - term: 'Third', - discussions: [2], - type: 'React', - }, - }, - { - sources: [/Syntax/, /[신씬]택스/], - target: '문법', - meta: { - term: 'Syntax', - discussions: [2], - type: 'React', - }, - }, - { - sources: [/Embedding\s?Expression/], - target: '표현식 포함하기', - meta: { - term: 'Embedding Expression', - discussions: [2], - type: 'React', - }, - }, - { - sources: [/Attribute/, /애트리뷰트/], - target: '어트리뷰트', - meta: { - term: 'Attribute', - discussions: [2], - type: 'React', - }, - }, - { - sources: [/Element/, /[엘앨]리먼츠/, /앨리먼트/], - target: '엘리먼트', - meta: { - term: 'Element', - discussions: [2], - type: 'React', - }, - }, - { - sources: [/Function/, /Functional/], - target: '함수', - meta: { - term: 'Function', - discussions: [2], - type: 'React', - }, - }, - { - sources: [/Class/], - target: '클래스', - meta: { - term: 'Class', - discussions: [2], - type: 'React', - }, - }, - { - sources: [/Composition/, /[컴콤][퍼포]지[선션]/], - target: '합성', - meta: { - term: 'Composition', - discussions: [2], - type: 'React', - }, - }, - { - sources: [/Inheritance/], - target: '상속', - meta: { - term: 'Inheritance', - discussions: [2], - type: 'React', - }, - }, - { - sources: [/Life\s?Cycle/, /라이프\s?사이클/, /생명 주기/], - target: '생명주기', - meta: { - term: 'Lifecycle', - discussions: [2], - type: 'React', - }, - }, - { - sources: [/Handling/, /핸들링/], - target: '처리', - meta: { - term: 'Handling', - discussions: [2], - type: 'React', - }, - }, - { - sources: [/Conditional/, /컨디[서셔][날널]/], - target: '조건부', - meta: { - term: 'Conditional', - discussions: [2], - type: 'React', - }, - }, - { - sources: [/Operator/, /오퍼[레래]이터/], - target: '연산자', - meta: { - term: 'Operator', - discussions: [2], - type: 'React', - }, - }, - { - sources: [/Reuse/], - target: '재사용', - meta: { - term: 'Reuse', - discussions: [2], - type: 'React', - }, - }, - { - sources: [/Mock/], - target: '모의', - meta: { - term: 'Mock', - discussions: [2], - type: 'React', - }, - }, - { - sources: [/Callback/], - target: '콜백', - meta: { - term: 'Callback', - discussions: [2], - type: 'React', - }, - }, - { - sources: [/Synthetic/], - target: '합성', - meta: { - term: 'Synthetic', - discussions: [2], - type: 'React', - }, - }, - { - sources: [/Event/], - target: '이벤트', - meta: { - term: 'Event', - discussions: [2], - type: 'React', - }, - }, - { - sources: [/Higher\s?Order/], - target: '고차', - meta: { - term: 'Higher Order', - discussions: [2], - type: 'React', - }, - }, - { - sources: [/(? { - sources.forEach((source) => { - const matchIndex = text.match(new RegExp(source, 'i')); // Do not use 'g' flag with textlint's CLI 'pretty-error' option. It prevents textlint from finding the exact locations. - const match = textStripped.match(new RegExp(source, 'i')); + Object.values(data).forEach((type) => { + type.forEach(({sources, target}) => { + sources.forEach((source) => { + const matchIndex = text.match(new RegExp(source, 'i')); // Do not use 'g' flag with textlint's CLI 'pretty-error' option. It prevents textlint from finding the exact locations. + const match = textStripped.match(new RegExp(source, 'i')); - if (match) { - report( - node, - new RuleError(errMsgTranslateGlossary(match[0], target), { - padding: locator.range([ - matchIndex.index, - matchIndex.index + text.length, - ]), - }) - ); - } + if (match) { + report( + node, + new RuleError(errMsgTranslateGlossary(match[0], target), { + padding: locator.range([ + matchIndex.index, + matchIndex.index + text.length, + ]), + }) + ); + } + }); }); }); }, diff --git a/textlint/tests/rules/translateGlossary.spec.js b/textlint/tests/rules/translateGlossary.spec.js index 6fc78f1ae..318ab3039 100644 --- a/textlint/tests/rules/translateGlossary.spec.js +++ b/textlint/tests/rules/translateGlossary.spec.js @@ -6,23 +6,25 @@ const {errMsgTranslateGlossary} = require('../../utils/errMsg'); const tester = new TextLintTester(); describe('translateGlossary', function () { - data.forEach(({target, meta}) => { - tester.run(`term: ${meta.term}`, rule, { - invalid: [ - { - text: `한글이 포함된 Str node. ${meta.term} 가나다 abc.`, - errors: [ - { - message: errMsgTranslateGlossary(meta.term, target), - }, - ], - }, - ], - valid: [ - `한글이 포함된 Str node. "${meta.term}" 라마바 def.`, // stripDoubleQuotes func should be applied. - `한글이 포함된 Str node. (${meta.term}) 사아자 ghi.`, // stripParentheses func should be applied. - target, - ], + Object.values(data).forEach((type) => { + type.forEach(({target, meta}) => { + tester.run(`term: ${meta.term}`, rule, { + invalid: [ + { + text: `한글이 포함된 Str node. ${meta.term} 가나다 abc.`, + errors: [ + { + message: errMsgTranslateGlossary(meta.term, target), + }, + ], + }, + ], + valid: [ + `한글이 포함된 Str node. "${meta.term}" 라마바 def.`, // stripDoubleQuotes func should be applied. + `한글이 포함된 Str node. (${meta.term}) 사아자 ghi.`, // stripParentheses func should be applied. + target, + ], + }); }); }); }); From 5968a68b5054c60ab7d5367f41ccef0084e38613 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EB=A3=A8=EB=B0=80LuMir?= Date: Sun, 7 Jul 2024 22:13:11 +0900 Subject: [PATCH 13/16] refactor: change the structure of textlint/data/rules/translateGlossary.js MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 확장성을 위해 데이터 구조 변경. --- textlint/data/rules/translateGlossary.js | 771 +++++++++--------- textlint/rules/translateGlossary.js | 34 +- .../tests/rules/translateGlossary.spec.js | 38 +- 3 files changed, 427 insertions(+), 416 deletions(-) diff --git a/textlint/data/rules/translateGlossary.js b/textlint/data/rules/translateGlossary.js index 25ef21429..3f04c57b0 100644 --- a/textlint/data/rules/translateGlossary.js +++ b/textlint/data/rules/translateGlossary.js @@ -1,384 +1,391 @@ module.exports = { - React: [ - { - sources: [/Tutorial/, /[듀튜]토리얼/], - target: '자습서', - meta: { - term: 'Tutorial', - discussions: [2], - }, - }, - { - sources: [/Declarative/], - target: '선언적인', - meta: { - term: 'Declarative', - discussions: [2], - }, - }, - { - sources: [/Component/, /컴퍼넌트/, /컴포넌츠/], - target: '컴포넌트', - meta: { - term: 'Component', - discussions: [2], - }, - }, - { - sources: [/Stateful/], - target: '유상태', - meta: { - term: 'Stateful', - discussions: [2], - }, - }, - { - sources: [/Stateless/], - target: '무상태', - meta: { - term: 'Stateless', - discussions: [2], - }, - }, - { - sources: [ - /Render(?!er)(?:ing)?/, - /랜더링/, - /[렌랜]더(?!링)\s?[하한할함합]/, - ], - target: '렌더링(하다)', - meta: { - term: 'Render', - discussions: [2], - }, - }, - { - sources: [/Data/, /대이터/], - target: '데이터', - meta: { - term: 'Data', - discussions: [2], - }, - }, - { - sources: [/Application/, /어플리케이[선션]/, /응용\s?프로그램/], - target: '애플리케이션', - meta: { - term: 'Application', - discussions: [2], - }, - }, - { - sources: [/External/], - target: '외부', - meta: { - term: 'External', - discussions: [2], - }, - }, - { - sources: [/Plugin/], - target: '플러그인', - meta: { - term: 'Plugin', - discussions: [2], - }, - }, - { - sources: [/Third/, /써드/], - target: '서드', - meta: { - term: 'Third', - discussions: [2], - }, - }, - { - sources: [/Syntax/, /[신씬]택스/], - target: '문법', - meta: { - term: 'Syntax', - discussions: [2], - }, - }, - { - sources: [/Embedding\s?Expression/], - target: '표현식 포함하기', - meta: { - term: 'Embedding Expression', - discussions: [2], - }, - }, - { - sources: [/Attribute/, /애트리뷰트/], - target: '어트리뷰트', - meta: { - term: 'Attribute', - discussions: [2], - }, - }, - { - sources: [/Element/, /[엘앨]리먼츠/, /앨리먼트/], - target: '엘리먼트', - meta: { - term: 'Element', - discussions: [2], - }, - }, - { - sources: [/Function/, /Functional/], - target: '함수', - meta: { - term: 'Function', - discussions: [2], - }, - }, - { - sources: [/Class/], - target: '클래스', - meta: { - term: 'Class', - discussions: [2], - }, - }, - { - sources: [/Composition/, /[컴콤][퍼포]지[선션]/], - target: '합성', - meta: { - term: 'Composition', - discussions: [2], - }, - }, - { - sources: [/Inheritance/], - target: '상속', - meta: { - term: 'Inheritance', - discussions: [2], - }, - }, - { - sources: [/Life\s?Cycle/, /라이프\s?사이클/, /생명 주기/], - target: '생명주기', - meta: { - term: 'Lifecycle', - discussions: [2], - }, - }, - { - sources: [/Handling/, /핸들링/], - target: '처리', - meta: { - term: 'Handling', - discussions: [2], - }, - }, - { - sources: [/Conditional/, /컨디[서셔][날널]/], - target: '조건부', - meta: { - term: 'Conditional', - discussions: [2], - }, - }, - { - sources: [/Operator/, /오퍼[레래]이터/], - target: '연산자', - meta: { - term: 'Operator', - discussions: [2], - }, - }, - { - sources: [/Reuse/], - target: '재사용', - meta: { - term: 'Reuse', - discussions: [2], - }, - }, - { - sources: [/Mock/], - target: '모의', - meta: { - term: 'Mock', - discussions: [2], - }, - }, - { - sources: [/Callback/], - target: '콜백', - meta: { - term: 'Callback', - discussions: [2], - }, - }, - { - sources: [/Synthetic/], - target: '합성', - meta: { - term: 'Synthetic', - discussions: [2], - }, - }, - { - sources: [/Event/], - target: '이벤트', - meta: { - term: 'Event', - discussions: [2], - }, - }, - { - sources: [/Higher\s?Order/], - target: '고차', - meta: { - term: 'Higher Order', - discussions: [2], - }, - }, - { - sources: [/(? { - type.forEach(({sources, target}) => { - sources.forEach((source) => { - const matchIndex = text.match(new RegExp(source, 'i')); // Do not use 'g' flag with textlint's CLI 'pretty-error' option. It prevents textlint from finding the exact locations. - const match = textStripped.match(new RegExp(source, 'i')); + Object.values(data).forEach((type1) => { + Object.values(type1).forEach((type2) => { + type2.forEach(({sources, target}) => { + sources.forEach((source) => { + const matchIndex = text.match(new RegExp(source, 'i')); // Do not use 'g' flag with textlint's CLI 'pretty-error' option. It prevents textlint from finding the exact locations. + const match = textStripped.match(new RegExp(source, 'i')); - if (match) { - report( - node, - new RuleError(errMsgTranslateGlossary(match[0], target), { - padding: locator.range([ - matchIndex.index, - matchIndex.index + text.length, - ]), - }) - ); - } + if (match) { + report( + node, + new RuleError(errMsgTranslateGlossary(match[0], target), { + padding: locator.range([ + matchIndex.index, + matchIndex.index + text.length, + ]), + }) + ); + } + }); }); }); }); diff --git a/textlint/tests/rules/translateGlossary.spec.js b/textlint/tests/rules/translateGlossary.spec.js index 318ab3039..41227d234 100644 --- a/textlint/tests/rules/translateGlossary.spec.js +++ b/textlint/tests/rules/translateGlossary.spec.js @@ -6,24 +6,26 @@ const {errMsgTranslateGlossary} = require('../../utils/errMsg'); const tester = new TextLintTester(); describe('translateGlossary', function () { - Object.values(data).forEach((type) => { - type.forEach(({target, meta}) => { - tester.run(`term: ${meta.term}`, rule, { - invalid: [ - { - text: `한글이 포함된 Str node. ${meta.term} 가나다 abc.`, - errors: [ - { - message: errMsgTranslateGlossary(meta.term, target), - }, - ], - }, - ], - valid: [ - `한글이 포함된 Str node. "${meta.term}" 라마바 def.`, // stripDoubleQuotes func should be applied. - `한글이 포함된 Str node. (${meta.term}) 사아자 ghi.`, // stripParentheses func should be applied. - target, - ], + Object.values(data).forEach((type1) => { + Object.values(type1).forEach((type2) => { + type2.forEach(({target, meta}) => { + tester.run(`term: ${meta.term}`, rule, { + invalid: [ + { + text: `한글이 포함된 Str node. ${meta.term} 가나다 abc.`, + errors: [ + { + message: errMsgTranslateGlossary(meta.term, target), + }, + ], + }, + ], + valid: [ + `한글이 포함된 Str node. "${meta.term}" 라마바 def.`, // stripDoubleQuotes func should be applied. + `한글이 포함된 Str node. (${meta.term}) 사아자 ghi.`, // stripParentheses func should be applied. + target, + ], + }); }); }); }); From d2d303abb1f9dedb6bf8305f10d789fd38eb57ee Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EB=A3=A8=EB=B0=80LuMir?= Date: Sun, 7 Jul 2024 22:52:00 +0900 Subject: [PATCH 14/16] feat: add genTranslateGlossaryDocs.js MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit translate-glossary.md 문서를 자동 생성해주는 generator 도입. 생성된 문서는 repository에 올라갈 필요가 없으므로, .gitignore에 해당 부분 추가. textlint/README.md는 우선 삭제. 추후에 wiki 디렉토리에 추가 예정. --- .gitignore | 3 + textlint/README.md | 44 ------- .../generators/genTranslateGlossaryDocs.js | 109 ++++++++++++++++++ 3 files changed, 112 insertions(+), 44 deletions(-) delete mode 100644 textlint/README.md create mode 100644 textlint/generators/genTranslateGlossaryDocs.js diff --git a/.gitignore b/.gitignore index 7bf71dbc5..bc97f3f09 100644 --- a/.gitignore +++ b/.gitignore @@ -39,3 +39,6 @@ public/fonts/**/Optimistic_*.woff2 # rss public/rss.xml + +# textlint +wiki/textlint/translate-glossary.md \ No newline at end of file diff --git a/textlint/README.md b/textlint/README.md deleted file mode 100644 index cc36ea6d8..000000000 --- a/textlint/README.md +++ /dev/null @@ -1,44 +0,0 @@ -# textlint for ko.reactjs.org - -React 공식 페이지 한국어 번역 시 활용하는 [textlint](https://textlint.github.io/)에 대해 설명합니다. - -## 무엇인가요? - -![textlint lint result](https://user-images.githubusercontent.com/7760903/53157203-58da9580-3604-11e9-88dc-59b96b01fe66.png) - -textlint는 텍스트와 마크다운을 위한 linter이며 JavaScript로 구현되어 있습니다. [ESLint](https://eslint.org/)가 JavaScript에 가지는 역할과 같습니다. - -## 특정 문맥에서 비활성화할 수 있나요? - -[Filter Rule](https://textlint.github.io/docs/configuring.html#filter-rule) 중 하나인 [textlint-filter-rule-comments](https://github.com/textlint/textlint-filter-rule-comments)를 사용해서 비활성화할 수 있습니다. 미리 추가해놨으니 아래처럼 사용하시면 됩니다. - -```md - - -주석 사이에 있는 글은 모든 규칙이 비활성화됩니다. - - -``` - -## 새로운 규칙(rule)을 어떻게 만드나요? - -[textlint의 공식 문서 Creating Rules](https://textlint.github.io/docs/rule.html)를 숙지하고 다음 과정을 진행해주세요. 모든 코드는 `textlint` 폴더에서 작성됩니다. - -- **`rules` 폴더에 1개의 규칙에 1개의 파일 생성** - -커맨드 라인의 `--rulesdir` 옵션을 통해 실행되므로 `rules` 폴더 하위에는 규칙과 파일을 대응시켜서 작성해주세요. - -- **`tests` 폴더에 테스트 코드 작성** - -[`textlint-tester`](https://github.com/textlint/textlint/tree/master/packages/textlint-tester)를 활용해서 작성한 규칙에 대응되는 테스트를 작성해주세요. 올바른 사례와 올바르지 못한 사용 사례를 포함하고 올바르지 못한 사례는 번역자가 빠르게 수정할 수 있도록 `index`를 통해 오류가 발생한 위치를 알맞게 안내하고 있는지 검증해주세요. - -아래처럼 실행한다면 모든 규칙 구현에 대한 테스트를 실행할 수 있습니다. - -``` -$ yarn test:textlint -``` - -## 주의해야 할 사항이 있나요? - -- 모든 글이 번역된 상태가 아니며 번역이 완료되어도 새로운 글은 계속해서 번역이 되어야 하기 때문에 git pre-commit hook에서만 textlint를 실행하며 전체 마크다운 파일을 대상으로 CI에서 실행할 계획은 없습니다. 규칙의 구현에 대한 테스트는 CI에서 실행됩니다. -- `--fix`를 통해 자동으로 수정할 수 있는 [Fixable Rule](https://textlint.github.io/docs/rule-fixable.html)은 의도적으로 작성하지 않습니다. 사람이 코드로 작성한 규칙이기 때문에 완벽하지 않으며 번역자가 인지하지 못한 채로 수정되기보다 문맥을 확인하고 수정하는 방향이 바람직하다고 생각하기 때문입니다. diff --git a/textlint/generators/genTranslateGlossaryDocs.js b/textlint/generators/genTranslateGlossaryDocs.js new file mode 100644 index 000000000..c3a064a79 --- /dev/null +++ b/textlint/generators/genTranslateGlossaryDocs.js @@ -0,0 +1,109 @@ +const fs = require('fs'); +const path = require('path'); +const data = require('../data/rules/translateGlossary'); + +const urlIssues = 'https://github.com/reactjs/ko.react.dev/issues/'; +const pathExport = '../../wiki/textlint/translate-glossary.md'; + +class Markdown { + // Property + #content = ''; + get content() { + return this.#content; + } + + // Method-Constructor + constructor(text) { + this.h1(text); + } + // Method-Utils + #add(text) { + this.#content += text; + } + // Method-Markdown + h1(text) { + this.#add(`# ${text}\n\n`); + } + h2(text) { + this.#add(`## ${text}\n\n`); + } + h3(text) { + this.#add(`### ${text}\n\n`); + } + tableHeader(...headers) { + headers.forEach((header) => { + this.#add(header); + this.#add('|'); + }); + this.#add('\n'); + headers.forEach(() => { + this.#add('---'); + this.#add('|'); + }); + this.#add('\n'); + } + tableBody(...bodies) { + bodies.forEach((body) => { + this.#add(body); + this.#add('|'); + }); + this.#add('\n'); + } + tableEnd() { + this.#add('\n'); + } +} + +class Utils { + static keyToStr(keyText) { + switch (keyText) { + case 'translated': + return '번역해야 하는 용어'; + case 'untranslated': + return '번역하면 안되는 용어'; + case 'react': + return 'React'; + case 'others': + return 'Others'; + } + } +} + +const genTranslateGlossaryDocs = () => { + const md = new Markdown('Translate Glossary'); + + Object.keys(data).forEach((key1) => { + md.h2(Utils.keyToStr(key1)); + + Object.keys(data[key1]).forEach((key2) => { + md.h3(Utils.keyToStr(key2)); + + md.tableHeader( + '용어 `term`', + '정규표현식 `sources`', + '번역 `target`', + '논의 `discussions`' + ); + data[key1][key2].forEach(({sources, target, meta}) => { + md.tableBody( + meta.term, + sources + .map((source) => `\`${source.toString().replace(/\|/g, '\\|')}\``) // Handle `|` symbol. + .join(', '), + target, + meta.discussions + .map((discussion) => `[#${discussion}](${urlIssues}${discussion})`) + .join(', ') + ); + }); + md.tableEnd(); + }); + }); + + return md.content; +}; + +fs.writeFileSync( + path.resolve(__dirname, pathExport), + genTranslateGlossaryDocs() +); From f7bc9d3741dec3938c7b9c403a65298930ca5978 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EB=A3=A8=EB=B0=80LuMir?= Date: Sun, 7 Jul 2024 23:09:36 +0900 Subject: [PATCH 15/16] rename: textlint/README.md -> wiki/textlint/what-is-textlint.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 파일 이름 및 디렉토리 변경 진행. --- wiki/textlint/what-is-textlint.md | 44 +++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 wiki/textlint/what-is-textlint.md diff --git a/wiki/textlint/what-is-textlint.md b/wiki/textlint/what-is-textlint.md new file mode 100644 index 000000000..04aefb173 --- /dev/null +++ b/wiki/textlint/what-is-textlint.md @@ -0,0 +1,44 @@ +# textlint for ko.reactjs.org + +React 공식 페이지 한국어 번역 시 활용하는 [textlint](https://textlint.github.io/)에 대해 설명합니다. + +## 무엇인가요? + +![textlint lint result](https://user-images.githubusercontent.com/7760903/53157203-58da9580-3604-11e9-88dc-59b96b01fe66.png) + +textlint는 텍스트와 마크다운을 위한 linter이며 JavaScript로 구현되어 있습니다. [ESLint](https://eslint.org/)가 JavaScript에 가지는 역할과 같습니다. + +## 특정 문맥에서 비활성화할 수 있나요? + +[Filter Rule](https://textlint.github.io/docs/configuring.html#filter-rule) 중 하나인 [textlint-filter-rule-comments](https://github.com/textlint/textlint-filter-rule-comments)를 사용해서 비활성화할 수 있습니다. 미리 추가해놨으니 아래처럼 사용하시면 됩니다. + +```md + + +주석 사이에 있는 글은 모든 규칙이 비활성화됩니다. + + +``` + +## 새로운 규칙(rule)을 어떻게 만드나요? + +[textlint의 공식 문서 Creating Rules](https://textlint.github.io/docs/rule.html)를 숙지하고 다음 과정을 진행해주세요. 모든 코드는 `textlint` 폴더에서 작성됩니다. + +- **`rules` 폴더에 1개의 규칙에 1개의 파일 생성** + +커맨드 라인의 `--rulesdir` 옵션을 통해 실행되므로 `rules` 폴더 하위에는 규칙과 파일을 대응시켜서 작성해주세요. + +- **`tests` 폴더에 테스트 코드 작성** + +[`textlint-tester`](https://github.com/textlint/textlint/tree/master/packages/textlint-tester)를 활용해서 작성한 규칙에 대응되는 테스트를 작성해주세요. 올바른 사례와 올바르지 못한 사용 사례를 포함하고 올바르지 못한 사례는 번역자가 빠르게 수정할 수 있도록 `index`를 통해 오류가 발생한 위치를 알맞게 안내하고 있는지 검증해주세요. + +아래처럼 실행한다면 모든 규칙 구현에 대한 테스트를 실행할 수 있습니다. + +``` +yarn test:textlint +``` + +## 주의해야 할 사항이 있나요? + +- 모든 글이 번역된 상태가 아니며 번역이 완료되어도 새로운 글은 계속해서 번역이 되어야 하기 때문에 git pre-commit hook에서만 textlint를 실행하며 전체 마크다운 파일을 대상으로 CI에서 실행할 계획은 없습니다. 규칙의 구현에 대한 테스트는 CI에서 실행됩니다. +- `--fix`를 통해 자동으로 수정할 수 있는 [Fixable Rule](https://textlint.github.io/docs/rule-fixable.html)은 의도적으로 작성하지 않습니다. 사람이 코드로 작성한 규칙이기 때문에 완벽하지 않으며 번역자가 인지하지 못한 채로 수정되기보다 문맥을 확인하고 수정하는 방향이 바람직하다고 생각하기 때문입니다. From c7d0405ac4082a459af7273ed4ac3205803b0312 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EB=A3=A8=EB=B0=80LuMir?= Date: Sun, 7 Jul 2024 23:19:30 +0900 Subject: [PATCH 16/16] feat: new scripts for textlint MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit textlint와 관련된 test, docs, lint scripts 추가. --- package.json | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/package.json b/package.json index 59bd632e1..6e3edc885 100644 --- a/package.json +++ b/package.json @@ -20,7 +20,10 @@ "start": "next start", "postinstall": "patch-package && (is-ci || husky install .husky)", "check-all": "npm-run-all prettier lint:fix tsc rss", - "rss": "node scripts/generateRss.js" + "rss": "node scripts/generateRss.js", + "textlint-test": "yarn mocha ./textlint/tests/utils && yarn mocha ./textlint/tests/rules", + "textlint-docs": "node ./textlint/generators/genTranslateGlossaryDocs.js", + "textlint-lint": "yarn textlint ./src/content --rulesdir ./textlint/rules -f pretty-error" }, "dependencies": { "@codesandbox/sandpack-react": "2.13.5",